StevEngine
StevEngine is a customizable C++ game engine.
Loading...
Searching...
No Matches
Scene.hpp
1#pragma once
2#include "main/ResourceManager.hpp"
3#include "main/GameObject.hpp"
4#include "physics/Layers.hpp"
5#include "utilities/Stream.hpp"
6#include "visuals/Camera.hpp"
7
8#include <map>
9#include <string>
10#include <unordered_set>
11
12namespace StevEngine {
13 class Engine;
14 class SceneManager;
15 namespace Visuals { class Camera; };
16
23 class Scene {
24 friend class Engine;
25 friend class SceneManager;
26 public:
28 const std::string name;
29
30 public:
31 ~Scene();
32
38
48
54 Utilities::ID CreateObject(Resources::Resource file, Utilities::StreamType type);
55
62
68 bool Exists(Utilities::ID id);
69
76
77 #ifdef StevEngine_SHOW_WINDOW
82 Visuals::Camera* GetCamera() { return activeCamera; }
83
88 GameObject& GetCameraObject() { return activeCamera->GetParent(); }
89 #endif
90
95 std::vector<Utilities::ID> GetAllObjects();
96
101 std::vector<Utilities::ID> GetAllParentObjects();
102
108
114 Utilities::Stream Export(Utilities::StreamType type);
115
122 Scene(std::string name);
123
131 Scene(std::string name, Utilities::Stream& stream);
132
133 private:
134 bool active = false;
135
139 void Activate();
140
144 void Deactivate();
145
146 #ifdef StevEngine_SHOW_WINDOW
147 Visuals::Camera* activeCamera;
148 #endif
149
151 std::map<Utilities::ID, GameObject, Utilities::ID> gameObjects;
152 std::unordered_set<Utilities::ID> destroyedObjects;
153
154 //Physics layers
155 #ifdef StevEngine_PHYSICS
156 Physics::LayerManager physicLayers;
157 public:
158 Physics::LayerManager& GetLayers() { return physicLayers; };
159 #endif
160 };
161}
Main engine class managing core systems.
Definition Engine.hpp:26
Core game object class.
Definition GameObject.hpp:35
GameObject & GetParent() const
Get parent object.
Definition GameObject.cpp:106
Physics collision layer manager.
Definition Layers.hpp:54
Container for loaded resource data.
Definition ResourceManager.hpp:11
Manages multiple scenes and scene transitions.
Definition SceneManager.hpp:15
std::vector< Utilities::ID > GetAllParentObjects()
Get IDs of all root objects (no parent)
Definition Scene.cpp:60
void DestroyObject(Utilities::ID id)
Destroy object and all children.
Definition Scene.cpp:68
Scene(std::string name)
Should never be called directly, use SceneManager::CreateScene.
Definition Scene.cpp:71
Visuals::Camera * GetCamera()
Get main camera component.
Definition Scene.hpp:82
bool Exists(Utilities::ID id)
Checks if an object with the specified id exists.
Definition Scene.cpp:45
std::vector< Utilities::ID > GetAllObjects()
Get IDs of all objects in scene.
Definition Scene.cpp:52
Utilities::ID CreateObject()
Create empty GameObject.
Definition Scene.cpp:11
GameObject & GetObject(Utilities::ID id)
Get object by ID.
Definition Scene.cpp:48
const std::string name
Scene name/identifier.
Definition Scene.hpp:28
GameObject & GetCameraObject()
Get camera object.
Definition Scene.hpp:88
Utilities::Stream Export(Utilities::StreamType type)
Export entire scene.
Definition Scene.cpp:88
UUID-based unique identifier.
Definition ID.hpp:13
Quaternion for 3D rotations.
Definition Quaternion.hpp:17
Stream for serialization of data.
Definition Stream.hpp:22
3D vector class
Definition Vector3.hpp:17
Camera component for view and projection control.
Definition Camera.hpp:16