8#ifndef GALAXY_SCENE_WORLD_HPP_
9#define GALAXY_SCENE_WORLD_HPP_
11#include <ankerl/unordered_dense.h>
23 using SceneMap = ankerl::unordered_dense::map<std::uint64_t, std::shared_ptr<Scene>>;
72 bool has(const
std::
string& name) noexcept;
79 void push(const
std::
string& name) noexcept;
156 void load_app(const std::string& appdata_file);
163 void save_app(const std::string& file);
171 nlohmann::json serialize() override;
178 void deserialize(const nlohmann::json& json) override;
Wrapper around entt::registry to expand functionality.
Represents a scene in a game.
Scene saving/loading, pushing, popping, creating, Entity management.
void remove(const std::string &name)
Remove a specific scene.
void clear()
Removes all data.
std::shared_ptr< Scene > add(const std::string &name)
Add a new scene.
SceneMap & get_scenes() noexcept
Get Scene storage.
SceneMap m_scenes
Scene storage.
SceneStack & get_scene_stack() noexcept
Get Scene stack.
bool has(const std::string &name) noexcept
Does a scene exist.
void pop_all() noexcept
Remove all scenes in stack.
World() noexcept
Constructor.
void update()
Process events and updates.
void render()
Render scenes.
std::shared_ptr< Scene > top() const noexcept
Get top scene in stack.
void pop() noexcept
Remove scene on top of stack.
std::vector< std::shared_ptr< Scene > > SceneStack
void push(const std::string &name) noexcept
Push a scene onto the top of stack.
std::shared_ptr< Scene > get(const std::string &name) noexcept
Get a specific scene.
Registry m_registry
Entity data.
ankerl::unordered_dense::map< std::uint64_t, std::shared_ptr< Scene > > SceneMap
SceneStack m_scene_stack
Active scenes.