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
SystemManager.hpp
Go to the documentation of this file.
1
7
8#ifndef GALAXY_SYSTEMS_SYSTEMMANAGER_HPP_
9#define GALAXY_SYSTEMS_SYSTEMMANAGER_HPP_
10
12
13namespace galaxy
14{
15 class Scene;
16
22 class SystemManager final
23 {
24 public:
28 SystemManager() noexcept;
29
33 SystemManager(SystemManager&&) noexcept;
34
39
43 ~SystemManager() noexcept;
44
52 void add_system(const std::string& system);
53
60 void update(EntityManager& em, Scene* scene);
61
65 void suspend() noexcept;
66
70 void resume() noexcept;
71
75 void clear();
76
82 [[nodiscard]]
83 SystemStack& stack() noexcept;
84
85 private:
93 SystemManager(const SystemManager&) = delete;
94
95 private:
100
105 };
106} // namespace galaxy
107
108#endif
Class for making creating and managing entities easier.
Represents a scene in a game.
Definition Scene.hpp:27
Manages the systems assigned to it.
void add_system(const std::string &system)
Add a system to operate on entities in this scene.
SystemManager & operator=(const SystemManager &)=delete
Copy assignment operator.
~SystemManager() noexcept
Destructor.
void clear()
Remove all systems.
bool m_suspended
Are systems allowed to run.
SystemManager & operator=(SystemManager &&) noexcept
Move assignment operator.
void resume() noexcept
Resume all systems.
SystemManager() noexcept
Constructor.
SystemManager(const SystemManager &)=delete
Copy constructor.
void suspend() noexcept
Suspend all running systems.
void update(EntityManager &em, Scene *scene)
Process all systems.
SystemStack & stack() noexcept
Get list of systems.
SystemStack m_systems
List of systems to process.
Application.hpp galaxy.
std::vector< std::shared_ptr< System > > SystemStack
System stack typedef.