diff options
author | Loek Le Blansch <loek@pipeframe.xyz> | 2024-11-13 18:46:06 +0100 |
---|---|---|
committer | Loek Le Blansch <loek@pipeframe.xyz> | 2024-11-13 18:46:06 +0100 |
commit | 0aa97807cb9b7f1d1850449dd5a5e45b961445ce (patch) | |
tree | 8f6a808669a39f5b8d91079ecb30c3d1f11e9e02 /src/crepe/api | |
parent | bc2a31190b5afe7754b04e9c61fcda30e577d7d8 (diff) |
fix scene_manager example
Diffstat (limited to 'src/crepe/api')
-rw-r--r-- | src/crepe/api/Scene.cpp | 2 | ||||
-rw-r--r-- | src/crepe/api/Scene.h | 10 | ||||
-rw-r--r-- | src/crepe/api/SceneManager.hpp | 9 |
3 files changed, 15 insertions, 6 deletions
diff --git a/src/crepe/api/Scene.cpp b/src/crepe/api/Scene.cpp index 933edf4..008d689 100644 --- a/src/crepe/api/Scene.cpp +++ b/src/crepe/api/Scene.cpp @@ -2,4 +2,4 @@ using namespace crepe; -Scene::Scene(const std::string & name) : name(name) {} +Scene::Scene(ComponentManager & mgr, const std::string & name) : component_manager(mgr), name(name) {} diff --git a/src/crepe/api/Scene.h b/src/crepe/api/Scene.h index f8bcc3d..334f306 100644 --- a/src/crepe/api/Scene.h +++ b/src/crepe/api/Scene.h @@ -4,14 +4,20 @@ namespace crepe { +class ComponentManager; + class Scene { public: - Scene(const std::string & name); + Scene(ComponentManager & mgr, const std::string & name); virtual ~Scene() = default; + virtual void load_scene() = 0; public: - std::string name; + const std::string name; + +protected: + ComponentManager & component_manager; }; } // namespace crepe diff --git a/src/crepe/api/SceneManager.hpp b/src/crepe/api/SceneManager.hpp index 8bad7b2..714f690 100644 --- a/src/crepe/api/SceneManager.hpp +++ b/src/crepe/api/SceneManager.hpp @@ -1,13 +1,16 @@ +#pragma once + #include "SceneManager.h" namespace crepe { template <typename T> void SceneManager::add_scene(const std::string & name) { - static_assert(std::is_base_of<Scene, T>::value, - "T must be derived from Scene"); + using namespace std; + static_assert(is_base_of<Scene, T>::value, "T must be derived from Scene"); - scenes.emplace_back(make_unique<T>(name)); + Scene * scene = new T(this->component_manager, name); + this->scenes.emplace_back(unique_ptr<Scene>(scene)); // The first scene added, is the one that will be loaded at the beginning if (next_scene.empty()) { |