r-type  0.0.0
R-Type main
Loading...
Searching...
No Matches
SceneManager.hpp
Go to the documentation of this file.
1///
2/// @file SceneManager.hpp
3/// @brief This file contains the SceneManager class declaration
4/// @namespace srv
5///
6
7#pragma once
8
9#include <memory>
10#include <unordered_map>
11
13
14namespace srv
15{
16
17 ///
18 /// @class SceneManager
19 /// @brief Class for managing scenes
20 /// @namespace srv
21 ///
23 {
24
25 public:
26 SceneManager() = default;
27 ~SceneManager() = default;
28
29 SceneManager(const SceneManager &) = delete;
33
34 std::unique_ptr<IScene> &getScene(const id sceneId) { return m_scenes.at(sceneId); }
35 std::unique_ptr<IScene> &getCurrentScene() { return m_scenes.at(m_currentSceneId); }
36 void switchToScene(const id sceneId) { m_currentSceneId = sceneId; }
37 void addScene(std::unique_ptr<IScene> scene) { m_scenes[scene->getId()] = std::move(scene); }
38
39 // template <typename... EntityDefs>
40 // IScene &createScene(const std::string &name, const std::function<void(const Event&)> eventHandler, const
41 // std::function<void(float)> updateHandler,
42 // EntityDefs&&... defs) {
43 // auto scene = std::make_unique<IScene>();
44 // scene->setName(name);
45 // scene->setEventHandler(eventHandler);
46 // scene->setUpdateHandler(updateHandler);
47 //
48 // Scene &ref = *scene;
49 // (defs(ref.getRegistry()), ...);
50 //
51 // m_scenes[ref.getId()] = std::move(scene);
52 // return ref;
53 // }
54
55 private:
56 std::unordered_map<id, std::unique_ptr<IScene>> m_scenes;
58 }; // class SceneManager
59} // namespace srv
Class for managing scenes.
std::unique_ptr< IScene > & getScene(const id sceneId)
~SceneManager()=default
std::unordered_map< id, std::unique_ptr< IScene > > m_scenes
void switchToScene(const id sceneId)
SceneManager & operator=(SceneManager &&)=delete
void addScene(std::unique_ptr< IScene > scene)
SceneManager(const SceneManager &)=delete
SceneManager(SceneManager &&)=delete
std::unique_ptr< IScene > & getCurrentScene()
SceneManager & operator=(const SceneManager &)=delete
SceneManager()=default
This file contains the IScene class.