CmMeshManager.cpp 1.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859
  1. #include "CmMeshManager.h"
  2. #include "CmCoreThreadAccessor.h"
  3. #include "CmApplication.h"
  4. #include "CmVector3.h"
  5. #include "CmMesh.h"
  6. namespace CamelotFramework
  7. {
  8. MeshManager::MeshManager()
  9. {
  10. }
  11. MeshManager::~MeshManager()
  12. {
  13. }
  14. MeshPtr MeshManager::create()
  15. {
  16. MeshPtr mesh = cm_core_ptr<Mesh, PoolAlloc>(new (cm_alloc<Mesh, PoolAlloc>()) Mesh());
  17. mesh->setThisPtr(mesh);
  18. mesh->initialize();
  19. return mesh;
  20. }
  21. MeshPtr MeshManager::createEmpty()
  22. {
  23. MeshPtr mesh = cm_core_ptr<Mesh, PoolAlloc>(new (cm_alloc<Mesh, PoolAlloc>()) Mesh());
  24. mesh->setThisPtr(mesh);
  25. return mesh;
  26. }
  27. void MeshManager::onStartUp()
  28. {
  29. mDummyMeshData = cm_shared_ptr<MeshData>(1);
  30. mDummyMeshData->beginDesc();
  31. mDummyMeshData->addVertElem(VET_FLOAT3, VES_POSITION);
  32. mDummyMeshData->addSubMesh(3);
  33. mDummyMeshData->endDesc();
  34. auto vecIter = mDummyMeshData->getVec3DataIter(VES_POSITION);
  35. vecIter.setValue(Vector3(0, 0, 0));
  36. auto indices = mDummyMeshData->getIndices32(0);
  37. indices[0] = 0;
  38. indices[1] = 0;
  39. indices[2] = 0;
  40. SyncedCoreAccessor& coreAccessor = gMainSyncedCA();
  41. mDummyMesh = Mesh::create();
  42. coreAccessor.writeSubresource(mDummyMesh.getInternalPtr(), 0, *mDummyMeshData);
  43. coreAccessor.submitToCoreThread(true); // TODO - Only temporary until I fix write/read subresource
  44. }
  45. }