CmMeshData.h 1.5 KB

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