SUNENGINE 0.0.2
A simple and bright C++ game engine.
 
Loading...
Searching...
No Matches
SceneManager.h
1#ifndef SceneManager_H
2#define SceneManager_H
3
4#include "AzulCore.h"
5
6class Scene;
7class Camera;
9class Terrain;
10
19class SceneManager
20{
21private:
22 friend class SceneAttorney;
23 static SceneManager* ptrInstance;
24
25 SceneManager();
26 SceneManager(const SceneManager&) = delete;
27 SceneManager& operator=(const SceneManager&) = delete;
28 ~SceneManager() = default;
29
30 static SceneManager& Instance()
31 {
32 if (ptrInstance == nullptr)
33 ptrInstance = new SceneManager();
34 return *ptrInstance;
35 };
36
41
46
51
56
57 void privInitializeScene();
58 void privDraw();
59 void privUpdate();
60 void privEndScene();
61private:
62 friend class SceneAttorney;
63
67 static void Delete();
68
72 static void InitializeScene() { Instance().privInitializeScene(); }
73
77 static void UpdateScene() { Instance().privUpdate(); }
78
82 static void DrawScene() { Instance().privDraw(); }
83
87 static void EndScene() { Instance().privEndScene(); }
88
93 static void SetCurrentScene(Scene* scene) { Instance().CurrentScene = scene; }
94
99 static void ChangeScene(Scene* scene);
100
101public:
106 static Scene* GetCurrentScene();
107
112 static void SetNextScene(Scene* scene);
113
118 static Camera* GetCurrentCamera();
119
124 static void SetCurrentCamera(Camera* cam);
125
130 static Camera* GetCurrentCamera2D();
131
136 static void SetCurrentCamera2D(Camera* cam);
137
142 static Terrain* GetTerrain();
143};
144
145#endif
Base class for scene change strategies.
Definition SceneChangeStrategy.h:12
Represents a scene in the engine.
Definition Scene.h:32
static void EndScene()
Ends the current scene.
Definition SceneManager.h:87
static void SetNextScene(Scene *scene)
Sets the next scene to transition to.
Definition SceneManager.cpp:36
static Camera * GetCurrentCamera()
Gets the current camera.
Definition SceneManager.cpp:77
static void ChangeScene(Scene *scene)
Changes the current scene to the specified scene.
Definition SceneManager.cpp:45
static void Delete()
Deletes the SceneManager instance.
Definition SceneManager.cpp:19
static Terrain * GetTerrain()
Sets the terrain for the current scene.
Definition SceneManager.cpp:97
static void InitializeScene()
Initializes the current scene.
Definition SceneManager.h:72
static Camera * GetCurrentCamera2D()
Gets the current 2D camera.
Definition SceneManager.cpp:87
static Scene * GetCurrentScene()
Gets the current scene.
Definition SceneManager.cpp:31
static void SetCurrentScene(Scene *scene)
Sets the current scene.
Definition SceneManager.h:93
static void UpdateScene()
Updates the current scene.
Definition SceneManager.h:77
static void DrawScene()
Draws the current scene.
Definition SceneManager.h:82
static void SetCurrentCamera(Camera *cam)
Sets the current camera.
Definition SceneManager.cpp:82
Scene * DefaultScene
Pointer to the default scene.
Definition SceneManager.h:45
Scene * PrevScene
Pointer to the previous scene during scene transitions.
Definition SceneManager.h:50
SceneChangeStrategy * pSceneChangeStrategy
Pointer to the scene change strategy.
Definition SceneManager.h:55
static void SetCurrentCamera2D(Camera *cam)
Sets the current 2D camera.
Definition SceneManager.cpp:92
Scene * CurrentScene
Pointer to the current scene.
Definition SceneManager.h:40
Represents a 3D terrain generated from a heightmap.
Definition Terrain.h:18