Architecture Arcade
Architecture Commune Arcade
ISystemManager.hpp
Go to the documentation of this file.
1 /*
2 ** EPITECH PROJECT, 2023
3 ** Archi Arcade Promo 2026 Toulouse
4 ** File description:
5 ** System manager interface
6 */
7 
8 #pragma once
9 
10 #include <memory>
11 #include <string>
12 #include <vector>
13 #include "IEntityManager.hpp"
14 #include "IEventManager.hpp"
15 #include "ISystem.hpp"
16 
17 namespace Arcade {
18  namespace ECS {
20  public:
21  virtual ~ISystemManager() = default;
28  virtual void addSystem(const std::string &name,
29  std::unique_ptr<Arcade::ECS::ISystem> system) = 0;
35  virtual void removeSystem(const std::string &name) = 0;
43  virtual void update(double deltaTime,
44  Arcade::ECS::IEventManager &eventManager,
45  Arcade::ECS::IEntityManager &currentEntityManager) = 0;
46  };
47  } // namespace ECS
48 } // namespace Arcade
Definition: ArcadeStruct.hpp:10
Manage the creation of entities and their access.
Definition: IEntityManager.hpp:19
The IEventManager interface.
Definition: IEventManager.hpp:105
Definition: ISystemManager.hpp:19
virtual void removeSystem(const std::string &name)=0
Remove a system from the system manager.
virtual void update(double deltaTime, Arcade::ECS::IEventManager &eventManager, Arcade::ECS::IEntityManager &currentEntityManager)=0
Update all systems of the system manager.
virtual ~ISystemManager()=default
virtual void addSystem(const std::string &name, std::unique_ptr< Arcade::ECS::ISystem > system)=0
Add a system to the system manager.