diff options
author | Loek Le Blansch <loek@pipeframe.xyz> | 2024-11-29 12:21:26 +0100 |
---|---|---|
committer | Loek Le Blansch <loek@pipeframe.xyz> | 2024-11-29 12:21:26 +0100 |
commit | c2ef6a36532c8c078fd7836325d6be277b946cbf (patch) | |
tree | bcac24106220ad626aca5dfcd3576e7d60ac3af2 /src/crepe/manager/SceneManager.hpp | |
parent | 74bffd3e466c342ca80811146a536716fb6437cb (diff) | |
parent | 7a07c56d572a6f30d0aa611bd566197bc04c3b33 (diff) |
merge `loek/scripts`
Diffstat (limited to 'src/crepe/manager/SceneManager.hpp')
-rw-r--r-- | src/crepe/manager/SceneManager.hpp | 25 |
1 files changed, 25 insertions, 0 deletions
diff --git a/src/crepe/manager/SceneManager.hpp b/src/crepe/manager/SceneManager.hpp new file mode 100644 index 0000000..dff4e51 --- /dev/null +++ b/src/crepe/manager/SceneManager.hpp @@ -0,0 +1,25 @@ +#pragma once + +#include "SceneManager.h" + +namespace crepe { + +template <typename T, typename... Args> +void SceneManager::add_scene(Args &&... args) { + using namespace std; + static_assert(is_base_of<Scene, T>::value, "T must be derived from Scene"); + + Scene * scene = new T(std::forward<Args>(args)...); + unique_ptr<Scene> unique_scene(scene); + + unique_scene->mediator = this->mediator; + + this->scenes.emplace_back(std::move(unique_scene)); + + // The first scene added, is the one that will be loaded at the beginning + if (next_scene.empty()) { + next_scene = scene->get_name(); + } +} + +} // namespace crepe |