StaticGeometryNode.cpp 1.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869
  1. // Copyright (C) 2009-2020, 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/StaticGeometryNode.h>
  6. #include <anki/scene/SceneGraph.h>
  7. #include <anki/resource/ResourceManager.h>
  8. #include <anki/resource/ModelResource.h>
  9. namespace anki
  10. {
  11. StaticGeometryPatchNode::StaticGeometryPatchNode(SceneGraph* scene, CString name)
  12. : SceneNode(scene, name)
  13. {
  14. }
  15. StaticGeometryPatchNode::~StaticGeometryPatchNode()
  16. {
  17. }
  18. Error StaticGeometryPatchNode::init(const ModelPatch* modelPatch)
  19. {
  20. ANKI_ASSERT(modelPatch);
  21. m_modelPatch = modelPatch;
  22. // Create spatial components
  23. for(U32 i = 1; i < m_modelPatch->getSubMeshCount(); i++)
  24. {
  25. SpatialComponent* spatial = newComponent<SpatialComponent>(this, &m_modelPatch->getBoundingShapeSub(i));
  26. spatial->setSpatialOrigin(m_modelPatch->getBoundingShapeSub(i).getCenter());
  27. }
  28. // Create render component
  29. MaterialRenderComponent* rcomp = newComponent<MaterialRenderComponent>(this, m_modelPatch->getMaterial());
  30. rcomp->setup([](RenderQueueDrawContext& ctx, ConstWeakArray<void*> userData) { ANKI_ASSERT(!"TODO"); }, this, 0);
  31. return Error::NONE;
  32. }
  33. StaticGeometryNode::StaticGeometryNode(SceneGraph* scene, CString name)
  34. : SceneNode(scene, name)
  35. {
  36. }
  37. StaticGeometryNode::~StaticGeometryNode()
  38. {
  39. }
  40. Error StaticGeometryNode::init(const CString& filename)
  41. {
  42. ANKI_CHECK(getResourceManager().loadResource(filename, m_model));
  43. U i = 0;
  44. for(const ModelPatch& patch : m_model->getModelPatches())
  45. {
  46. StaticGeometryPatchNode* node;
  47. ANKI_CHECK(getSceneGraph().newSceneNode<StaticGeometryPatchNode>(CString(), node, &patch));
  48. ++i;
  49. }
  50. return Error::NONE;
  51. }
  52. } // end namespace anki