#pragma once #include #include #include #include "Scene.h" namespace crepe { class ComponentManager; class SceneManager { public: SceneManager(ComponentManager & mgr); public: /** * \brief Add a new concrete scene to the scene manager * * \tparam T Type of concrete scene * \param name Name of new scene */ template void add_scene(const std::string & name); /** * \brief Set the next scene * * This scene will be loaded at the end of the frame * * \param name Name of the next scene */ void set_next_scene(const std::string & name); //! Load a new scene (if there is one) void load_next_scene(); private: std::vector> scenes; std::string next_scene; ComponentManager & component_manager; }; } // namespace crepe #include "SceneManager.hpp"