CmMeshData.cpp 1.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081
  1. #include "CmMeshData.h"
  2. #include "CmVector2.h"
  3. #include "CmVector3.h"
  4. #include "CmHardwareBufferManager.h"
  5. #include "CmMeshDataRTTI.h"
  6. namespace CamelotEngine
  7. {
  8. MeshData::VertexData::VertexData(UINT32 vertexCount, UINT32 streamIdx)
  9. :vertex(nullptr), color(nullptr), normal(nullptr), tangent(nullptr),
  10. bitangent(nullptr), uv0(nullptr), uv1(nullptr),
  11. streamIdx(streamIdx), vertexCount(vertexCount)
  12. {
  13. }
  14. MeshData::VertexData::~VertexData()
  15. {
  16. if(vertex != nullptr)
  17. delete [] vertex;
  18. if(color != nullptr)
  19. delete [] color;
  20. if(normal != nullptr)
  21. delete [] normal;
  22. if(tangent != nullptr)
  23. delete [] tangent;
  24. if(bitangent != nullptr)
  25. delete [] bitangent;
  26. if(uv0 != nullptr)
  27. delete [] uv0;
  28. if(uv1 != nullptr)
  29. delete [] uv1;
  30. }
  31. RTTITypeBase* MeshData::VertexData::getRTTIStatic()
  32. {
  33. return VertexDataRTTI::instance();
  34. }
  35. RTTITypeBase* MeshData::VertexData::getRTTI() const
  36. {
  37. return getRTTIStatic();
  38. }
  39. MeshData::MeshData()
  40. :index(nullptr),
  41. indexCount(0),
  42. vertexCount(0)
  43. {
  44. declaration = HardwareBufferManager::instance().createVertexDeclaration();
  45. }
  46. MeshData::~MeshData()
  47. {
  48. if(index != nullptr)
  49. delete [] index;
  50. vertexBuffers.clear();
  51. declaration->destroy();
  52. }
  53. /************************************************************************/
  54. /* SERIALIZATION */
  55. /************************************************************************/
  56. RTTITypeBase* MeshData::getRTTIStatic()
  57. {
  58. return MeshDataRTTI::instance();
  59. }
  60. RTTITypeBase* MeshData::getRTTI() const
  61. {
  62. return MeshData::getRTTIStatic();
  63. }
  64. }