CmMeshData.cpp 1.5 KB

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