ModelComponent.cpp 1.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849
  1. // Copyright (C) 2009-2021, 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/Scene/Components/ModelComponent.h>
  6. #include <AnKi/Scene/SceneNode.h>
  7. #include <AnKi/Scene/SceneGraph.h>
  8. #include <AnKi/Resource/ModelResource.h>
  9. #include <AnKi/Resource/ResourceManager.h>
  10. namespace anki {
  11. ANKI_SCENE_COMPONENT_STATICS(ModelComponent)
  12. ModelComponent::ModelComponent(SceneNode* node)
  13. : SceneComponent(node, getStaticClassId())
  14. , m_node(node)
  15. {
  16. }
  17. ModelComponent::~ModelComponent()
  18. {
  19. m_modelPatchMergeKeys.destroy(m_node->getAllocator());
  20. }
  21. Error ModelComponent::loadModelResource(CString filename)
  22. {
  23. m_dirty = true;
  24. ModelResourcePtr rsrc;
  25. ANKI_CHECK(m_node->getSceneGraph().getResourceManager().loadResource(filename, rsrc));
  26. m_model = rsrc;
  27. m_modelPatchMergeKeys.destroy(m_node->getAllocator());
  28. m_modelPatchMergeKeys.create(m_node->getAllocator(), m_model->getModelPatches().getSize());
  29. for(U32 i = 0; i < m_model->getModelPatches().getSize(); ++i)
  30. {
  31. Array<U64, 2> toHash;
  32. toHash[0] = i;
  33. toHash[1] = m_model->getUuid();
  34. m_modelPatchMergeKeys[i] = computeHash(&toHash[0], sizeof(toHash));
  35. }
  36. return Error::NONE;
  37. }
  38. } // end namespace anki