NcEngine
NcScene.h
Go to the documentation of this file.
1
5#pragma once
6
10#include "ncengine/type/EngineId.h"
11#include "ncmath/Vector.h"
12
13#include <functional>
14
15namespace nc
16{
30class NcScene : public Module
31{
32 public:
33 explicit NcScene() noexcept
34 : Module{NcSceneId} {}
35
36 virtual ~NcScene() = default;
37
42 virtual auto Queue(std::unique_ptr<Scene> scene) noexcept -> size_t = 0;
43
45 virtual void DequeueScene(size_t queuePosition) = 0;
46
48 virtual auto GetNumberOfScenesInQueue() const noexcept -> size_t = 0;
49
51 virtual void ScheduleTransition() noexcept = 0;
52
54 virtual auto IsTransitionScheduled() const noexcept -> bool = 0;
55
61 virtual auto UnloadActiveScene() -> bool = 0;
62
69 virtual auto LoadQueuedScene(ecs::Ecs world, ModuleRegistry& modules) -> bool = 0;
70};
71
73auto BuildSceneModule() -> std::unique_ptr<NcScene>;
74} // namespace nc
Modules are extensions that provide functionality to the engine.
Definition: Module.h:19
Definition: ModuleRegistry.h:19
Module managing the scene queue and transitions.
Definition: NcScene.h:31
virtual auto UnloadActiveScene() -> bool=0
Unload the active scene and destroy it.
virtual void ScheduleTransition() noexcept=0
Schedule a transition to the next queued scene upon completion of the current frame.
virtual void DequeueScene(size_t queuePosition)=0
Remove a scene from the scene queue.
virtual auto Queue(std::unique_ptr< Scene > scene) noexcept -> size_t=0
Add a scene to the scene queue.
virtual auto LoadQueuedScene(ecs::Ecs world, ModuleRegistry &modules) -> bool=0
Load the next scene from the scene queue.
virtual auto GetNumberOfScenesInQueue() const noexcept -> size_t=0
Get the number of scenes in the scene queue.
virtual auto IsTransitionScheduled() const noexcept -> bool=0
Check if a scene transition is currently scheduled.