.. _program_listing_file_PrismEngine_src_systemManager.h: Program Listing for File systemManager.h ======================================== |exhale_lsh| :ref:`Return to documentation for file ` (``PrismEngine/src/systemManager.h``) .. |exhale_lsh| unicode:: U+021B0 .. UPWARDS ARROW WITH TIP LEFTWARDS .. code-block:: cpp #pragma once #include #include #include "system.h" namespace prism { namespace scene { class SystemManager { public: SystemManager() = default; template SystemId registerSystem(Args&&... args) { static_assert(std::is_base_of_v, "T must derive from ISystem"); systems.push_back(std::make_unique(std::forward(args)...)); auto* sys = systems.back().get(); if (sys->isEnabled()) activeSystems.push_back(sys); return systems.size() - 1; }; void enableSystem(SystemId systemId); void disableSystem(SystemId systemId); void update(); private: std::vector> systems; std::vector activeSystems; }; } }