3 #include <Engine/RaEngine.hpp>
11 #include <Core/Utils/Index.hpp>
12 #include <Core/Utils/IndexMap.hpp>
15 #include <Engine/Rendering/RenderObjectTypes.hpp>
23 class RA_ENGINE_API RenderObjectManager final
26 RenderObjectManager();
27 ~RenderObjectManager();
29 Core::Utils::Index addRenderObject( Rendering::RenderObject* renderObject );
30 void removeRenderObject(
const Core::Utils::Index& index );
32 size_t getRenderObjectsCount();
36 std::shared_ptr<Rendering::RenderObject> getRenderObject(
const Core::Utils::Index& index );
41 const Core::Utils::IndexMap<std::shared_ptr<Rendering::RenderObject>>& getRenderObjects()
const;
48 void getRenderObjectsByType( std::vector<std::shared_ptr<Rendering::RenderObject>>& objectsOut,
49 const Rendering::RenderObjectType& type )
const;
56 bool exists(
const Core::Utils::Index& index )
const;
62 void renderObjectExpired(
const Ra::Core::Utils::Index& idx );
68 size_t getNumFaces()
const;
74 size_t getNumVertices()
const;
77 Core::Utils::IndexMap<std::shared_ptr<Rendering::RenderObject>> m_renderObjects;
79 std::array<std::set<Core::Utils::Index>, (int)Rendering::RenderObjectType::Count>
82 mutable std::mutex m_doubleBufferMutex;