CmMeshData.h 1.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364
  1. #pragma once
  2. #include "CmPrerequisites.h"
  3. #include "CmIReflectable.h"
  4. namespace CamelotEngine
  5. {
  6. class CM_EXPORT MeshData : public IReflectable
  7. {
  8. public:
  9. struct SubMeshData
  10. {
  11. SubMeshData():
  12. indexOffset(0), indexCount(0)
  13. { }
  14. int indexOffset;
  15. int indexCount;
  16. };
  17. struct VertexData : public IReflectable
  18. {
  19. VertexData(UINT32 vertexCount);
  20. ~VertexData();
  21. Vector3* vertex;
  22. Vector3* normal;
  23. Vector3* tangent;
  24. Vector3* bitangent;
  25. Vector2* uv0;
  26. Vector2* uv1;
  27. UINT32 vertexCount;
  28. /************************************************************************/
  29. /* SERIALIZATION */
  30. /************************************************************************/
  31. public:
  32. friend class VertexDataST;
  33. static RTTITypeBase* getRTTIStatic();
  34. virtual RTTITypeBase* getRTTI() const;
  35. };
  36. MeshData();
  37. ~MeshData();
  38. int* index;
  39. int indexCount;
  40. int vertexCount;
  41. VertexDeclaration* declaration;
  42. map<int, std::shared_ptr<VertexData>>::type vertexBuffers;
  43. vector<SubMeshData>::type subMeshes;
  44. /************************************************************************/
  45. /* SERIALIZATION */
  46. /************************************************************************/
  47. public:
  48. friend class MeshDataST;
  49. static RTTITypeBase* getRTTIStatic();
  50. virtual RTTITypeBase* getRTTI() const;
  51. };
  52. }