CmMeshData.cpp 1.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879
  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. }
  52. /************************************************************************/
  53. /* SERIALIZATION */
  54. /************************************************************************/
  55. RTTITypeBase* MeshData::getRTTIStatic()
  56. {
  57. return MeshDataRTTI::instance();
  58. }
  59. RTTITypeBase* MeshData::getRTTI() const
  60. {
  61. return MeshData::getRTTIStatic();
  62. }
  63. }