CmMeshManager.h 1.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940
  1. #pragma once
  2. #include "CmPrerequisites.h"
  3. #include "CmModule.h"
  4. #include "CmMesh.h"
  5. namespace CamelotFramework
  6. {
  7. class CM_EXPORT MeshManager : public Module<MeshManager>
  8. {
  9. public:
  10. MeshManager();
  11. ~MeshManager();
  12. MeshPtr create(UINT32 numVertices, UINT32 numIndices,
  13. const VertexDataDescPtr& vertexDesc, MeshBufferType bufferType = MeshBufferType::Static,
  14. DrawOperationType drawOp = DOT_TRIANGLE_LIST, IndexBuffer::IndexType indexType = IndexBuffer::IT_32BIT);
  15. MeshPtr create(UINT32 numVertices, UINT32 numIndices, const VertexDataDescPtr& vertexDesc, const MeshDataPtr& initialData,
  16. MeshBufferType bufferType = MeshBufferType::Static, DrawOperationType drawOp = DOT_TRIANGLE_LIST,
  17. IndexBuffer::IndexType indexType = IndexBuffer::IT_32BIT);
  18. MeshPtr create(const MeshDataPtr& initialData, MeshBufferType bufferType = MeshBufferType::Static,
  19. DrawOperationType drawOp = DOT_TRIANGLE_LIST);
  20. MeshPtr createEmpty();
  21. /**
  22. * @brief Returns empty mesh data. (Technically it is not empty,
  23. * as 0 sized buffers will cause problems, so it contains 3 indices
  24. * and 1 vertex).
  25. */
  26. MeshDataPtr getDummyMeshData() const { return mDummyMeshData; }
  27. HMesh getDummyMesh() const { return mDummyMesh; }
  28. private:
  29. MeshDataPtr mDummyMeshData;
  30. HMesh mDummyMesh;
  31. protected:
  32. virtual void onStartUp();
  33. };
  34. }