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 "utilities/Stream.hpp"
5#include "visuals/Camera.hpp"
6
7#include <unordered_map>
8#include <string>
9
10namespace StevEngine {
11 class Engine;
12 class SceneManager;
13 namespace Visuals { class Camera; };
14
21 class Scene {
22 friend class Engine;
23 friend class SceneManager;
24 public:
26 const std::string name;
27
28 public:
29 ~Scene();
30
36
46
52 Utilities::ID CreateObject(Resources::Resource file, Utilities::StreamType type);
53
60
66 bool Exists(Utilities::ID id);
67
74
75 #ifdef StevEngine_SHOW_WINDOW
80 Visuals::Camera* GetCamera() { return activeCamera; }
81
86 GameObject& GetCameraObject() { return activeCamera->GetParent(); }
87 #endif
88
93 std::vector<Utilities::ID> GetAllObjects();
94
99 std::vector<Utilities::ID> GetAllParentObjects();
100
106
112 Utilities::Stream Export(Utilities::StreamType type);
113
120 Scene(std::string name);
121
129 Scene(std::string name, Utilities::Stream& stream);
130
131 private:
132 bool active = false;
133
137 void Activate();
138
142 void Deactivate();
143
144 #ifdef StevEngine_SHOW_WINDOW
145 Visuals::Camera* activeCamera;
146 #endif
147
149 std::map<Utilities::ID, GameObject, Utilities::ID> gameObjects;
150 };
151}
Main engine class managing core systems.
Definition Engine.hpp:27
Core game object class.
Definition GameObject.hpp:35
GameObject & GetParent() const
Get parent object.
Definition GameObject.cpp:106
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:55
void DestroyObject(Utilities::ID id)
Destroy object and all children.
Definition Scene.cpp:63
Scene(std::string name)
Should never be called directly, use SceneManager::CreateScene.
Definition Scene.cpp:66
Visuals::Camera * GetCamera()
Get main camera component.
Definition Scene.hpp:80
bool Exists(Utilities::ID id)
Checks if an object with the specified id exists.
Definition Scene.cpp:40
std::vector< Utilities::ID > GetAllObjects()
Get IDs of all objects in scene.
Definition Scene.cpp:47
Utilities::ID CreateObject()
Create empty GameObject.
Definition Scene.cpp:10
GameObject & GetObject(Utilities::ID id)
Get object by ID.
Definition Scene.cpp:43
const std::string name
Scene name/identifier.
Definition Scene.hpp:26
GameObject & GetCameraObject()
Get camera object.
Definition Scene.hpp:86
Utilities::Stream Export(Utilities::StreamType type)
Export entire scene.
Definition Scene.cpp:83
UUID-based unique identifier.
Definition ID.hpp:13
Quaternion for 3D rotations.
Definition Quaternion.hpp:19
Stream for serialization of data.
Definition Stream.hpp:20
3D vector class
Definition Vector3.hpp:19
Camera component for view and projection control.
Definition Camera.hpp:16