galaxy 1.0.0
Real-Time C++23 Game Programming Framework. Built on data-driven design principles and agile software engineering.
Loading...
Searching...
No Matches
World.hpp
Go to the documentation of this file.
1
7
8#ifndef GALAXY_SCENE_WORLD_HPP_
9#define GALAXY_SCENE_WORLD_HPP_
10
11#include <ankerl/unordered_dense.h>
12
14
15namespace galaxy
16{
21 class World final
22 {
23 using SceneMap = ankerl::unordered_dense::map<std::uint64_t, std::shared_ptr<Scene>>;
24 using SceneStack = std::vector<std::shared_ptr<Scene>>;
25
26 public:
30 World() noexcept;
31
35 ~World() noexcept;
36
44 [[maybe_unused]]
45 std::shared_ptr<Scene> add(const std::string& name);
46
54 [[nodiscard]]
55 std::shared_ptr<Scene> get(const std::string& name) noexcept;
56
62 void remove(const std::string& name);
63
71 [[nodiscard]]
72 bool has(const std::string& name) noexcept;
73
79 void push(const std::string& name) noexcept;
80
84 void pop() noexcept;
85
89 void pop_all() noexcept;
90
96 [[nodiscard]]
97 std::shared_ptr<Scene> top() const noexcept;
98
102 void update();
103
107 void render();
108
112 void clear();
113
119 [[nodiscard]]
120 SceneMap& get_scenes() noexcept;
121
127 [[nodiscard]]
128 SceneStack& get_scene_stack() noexcept;
129
130 private:
135
140
145 };
146} // namespace galaxy
147
148/*
156 void load_app(const std::string& appdata_file);
157
163 void save_app(const std::string& file);
164
170 [[nodiscard]]
171 nlohmann::json serialize() override;
172
178 void deserialize(const nlohmann::json& json) override;
179*/
180
181#endif
Wrapper around entt::registry to expand functionality.
Definition Registry.hpp:19
Represents a scene in a game.
Definition Scene.hpp:22
Scene saving/loading, pushing, popping, creating, Entity management.
Definition World.hpp:22
void remove(const std::string &name)
Remove a specific scene.
Definition World.cpp:56
void clear()
Removes all data.
Definition World.cpp:124
std::shared_ptr< Scene > add(const std::string &name)
Add a new scene.
Definition World.cpp:25
SceneMap & get_scenes() noexcept
Get Scene storage.
Definition World.cpp:130
SceneMap m_scenes
Scene storage.
Definition World.hpp:139
SceneStack & get_scene_stack() noexcept
Get Scene stack.
Definition World.cpp:135
bool has(const std::string &name) noexcept
Does a scene exist.
Definition World.cpp:62
void pop_all() noexcept
Remove all scenes in stack.
Definition World.cpp:90
World() noexcept
Constructor.
Definition World.cpp:16
void update()
Process events and updates.
Definition World.cpp:108
void render()
Render scenes.
Definition World.cpp:116
std::shared_ptr< Scene > top() const noexcept
Get top scene in stack.
Definition World.cpp:98
void pop() noexcept
Remove scene on top of stack.
Definition World.cpp:81
std::vector< std::shared_ptr< Scene > > SceneStack
Definition World.hpp:24
void push(const std::string &name) noexcept
Push a scene onto the top of stack.
Definition World.cpp:68
std::shared_ptr< Scene > get(const std::string &name) noexcept
Get a specific scene.
Definition World.cpp:41
Registry m_registry
Entity data.
Definition World.hpp:134
ankerl::unordered_dense::map< std::uint64_t, std::shared_ptr< Scene > > SceneMap
Definition World.hpp:23
SceneStack m_scene_stack
Active scenes.
Definition World.hpp:144
Animated.cpp galaxy.
Definition Animated.cpp:16
STL namespace.