CmMeshData.h 1.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667
  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 CM_EXPORT VertexData : public IReflectable
  19. {
  20. VertexData(UINT32 vertexCount, UINT32 streamIdx = 0);
  21. ~VertexData();
  22. Vector3* vertex;
  23. Color* color;
  24. Vector3* normal;
  25. Vector3* tangent;
  26. Vector3* bitangent;
  27. Vector2* uv0;
  28. Vector2* uv1;
  29. UINT32 vertexCount;
  30. UINT32 streamIdx;
  31. /************************************************************************/
  32. /* SERIALIZATION */
  33. /************************************************************************/
  34. public:
  35. friend class VertexDataRTTI;
  36. static RTTITypeBase* getRTTIStatic();
  37. virtual RTTITypeBase* getRTTI() const;
  38. };
  39. MeshData();
  40. ~MeshData();
  41. int* index;
  42. int indexCount;
  43. int vertexCount;
  44. VertexDeclarationPtr declaration;
  45. map<int, std::shared_ptr<VertexData>>::type vertexBuffers;
  46. vector<SubMeshData>::type subMeshes;
  47. /************************************************************************/
  48. /* SERIALIZATION */
  49. /************************************************************************/
  50. public:
  51. friend class MeshDataRTTI;
  52. static RTTITypeBase* getRTTIStatic();
  53. virtual RTTITypeBase* getRTTI() const;
  54. };
  55. }