CpuMeshResource.cpp 1.1 KB

12345678910111213141516171819202122232425262728293031323334353637
  1. // Copyright (C) 2009-present, Panagiotis Christopoulos Charitos and contributors.
  2. // All rights reserved.
  3. // Code licensed under the BSD License.
  4. // http://www.anki3d.org/LICENSE
  5. #include <AnKi/Resource/CpuMeshResource.h>
  6. #include <AnKi/Resource/MeshBinaryLoader.h>
  7. #include <AnKi/Resource/ResourceManager.h>
  8. #include <AnKi/Physics/PhysicsWorld.h>
  9. namespace anki {
  10. Error CpuMeshResource::load(const ResourceFilename& filename, [[maybe_unused]] Bool async)
  11. {
  12. MeshBinaryLoader loader(&ResourceMemoryPool::getSingleton());
  13. ANKI_CHECK(loader.load(filename));
  14. ANKI_CHECK(loader.storeIndicesAndPosition(0, m_indices, m_positions));
  15. m_isConvex = !!(loader.getHeader().m_flags & MeshBinaryFlag::kConvex);
  16. return Error::kNone;
  17. }
  18. const PhysicsCollisionShapePtr& CpuMeshResource::getOrCreateCollisionShape([[maybe_unused]] Bool isStatic) const
  19. {
  20. LockGuard lock(m_shapeMtx);
  21. if(!m_collisionShape)
  22. {
  23. m_collisionShape = PhysicsWorld::getSingleton().newInstance<PhysicsTriangleSoup>(m_positions, m_indices, m_isConvex);
  24. }
  25. return m_collisionShape;
  26. }
  27. } // end namespace anki