SDEngine
Game Engine
Loading...
Searching...
No Matches
Scene.hpp
Go to the documentation of this file.
1// TODO(docs): Add file-level Doxygen header
2// - @file Scene.hpp
3// - @brief Scene container - holds EntityManager and scene-level state
4// - Relationship to View and Application
5// - Scene lifecycle (OnStart, OnUpdate, OnStop)
6#pragma once
7
10
11namespace sd {
12// TODO(docs): Document Scene class
13// - Purpose: Container for entities and scene-level systems
14// - Ownership of EntityManager
15// - Active/inactive state management
16// - Future: scene-level systems registration
17// - Example: Creating and populating a scene
18class Scene {
19public:
20 explicit Scene(std::string name = "Untitled Scene") : m_name(std::move(name)) {}
21
22 void on_start() { m_is_active = true; }
23 void on_stop() { m_is_active = false; }
24 void on_update(float dt) { (void)dt; /* future: scene-level systems */ }
25
26 [[nodiscard]] bool is_active() const { return m_is_active; }
27 [[nodiscard]] const std::string& get_name() const { return m_name; }
28
29 template<typename T, typename... Args>
30 void add_command(Args&&... args) {
31 m_commands.add<T>(std::forward<Args>(args)...);
32 }
33
38 [[nodiscard]] usize command_count() const;
39
41
42private:
44 std::string m_name;
45 bool m_is_active = false;
46};
48 return m_commands.get_count();
49}
50} // namespace sd
Definition CommandQueue.hpp:7
void add(Args &&... args)
Definition CommandQueue.hpp:10
void clear()
Definition CommandQueue.cpp:66
void apply(EntityManager &em)
Definition CommandQueue.cpp:50
usize get_count() const
Definition CommandQueue.cpp:70
Definition EntityManager.hpp:83
Definition Scene.hpp:18
void on_start()
Definition Scene.hpp:22
void add_command(Args &&... args)
Definition Scene.hpp:30
void on_update(float dt)
Definition Scene.hpp:24
CommandQueue m_commands
Definition Scene.hpp:43
Scene(std::string name="Untitled Scene")
Definition Scene.hpp:20
EntityManager em
Definition Scene.hpp:40
void apply_commands()
Definition Scene.hpp:34
bool m_is_active
Definition Scene.hpp:45
std::string m_name
Definition Scene.hpp:44
const std::string & get_name() const
Definition Scene.hpp:27
void on_stop()
Definition Scene.hpp:23
bool is_active() const
Definition Scene.hpp:26
usize command_count() const
Definition Scene.hpp:47
Definition Application.hpp:28
constexpr T g_type_max
Definition types.hpp:21
std::size_t usize
Definition types.hpp:18