ModelComponent.cpp 1.2 KB

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