.. _program_listing_file_PrismEngine_src_scene.h: Program Listing for File scene.h ================================ |exhale_lsh| :ref:`Return to documentation for file ` (``PrismEngine/src/scene.h``) .. |exhale_lsh| unicode:: U+021B0 .. UPWARDS ARROW WITH TIP LEFTWARDS .. code-block:: cpp #pragma once #pragma once #include #include #include #include #include #include #include #include "entityManager.h" #include "componentManager.h" #include "systemManager.h" #include "resourceManager.h" namespace prism { namespace scene { class Scene { public: Scene() = default; Entity createEntity(); bool destroyEntity(Entity entityId); void enableSystem(SystemId systemId); void disableSystem(SystemId systemId); void update() { systemManager.update(); } // шаблонные методы определены здесь в .h (по-другому не компилится) template bool addComponent(Entity entityId, T&& component) { return componentManager.addComponent(entityId, std::forward(component)); }; template bool removeComponent(Entity entityId) { return componentManager.removeComponent(entityId); }; template T* getComponent(Entity entityId) { return componentManager.getComponent(entityId); }; template const std::vector& getEntitiesWith() const { return componentManager.getEntitiesWith(); }; template std::vector getEntitiesWithAll() const { return componentManager.getEntitiesWithAll(); }; template SystemId registerSystem(Args&&... args) { return systemManager.registerSystem(std::forward(args)...); }; template void setResource(T resource) { resourceManager.set(resource); } template T* getResource() { return resourceManager.get(); } template const T* getResource() const { return resourceManager.get(); } template bool hasResource() const { return resourceManager.has(); } template bool removeResource() { return resourceManager.remove(); } private: EntityManager entityManager; ComponentManager componentManager; SystemManager systemManager; ResourceManager resourceManager; }; } }