game-engine/libs/ecs/coordinator.hpp
2024-10-09 13:34:54 -04:00

30 lines
923 B
C++

#ifndef COORDINATOR_HPP
#define COORDINATOR_HPP
#include <memory>
#include "componentmanager.hpp"
#include "entity.hpp"
#include "system.hpp"
class Coordinator {
std::unique_ptr<ComponentManager> mComponentManager;
std::unique_ptr<EntityManager> mEntityManager;
std::unique_ptr<SystemManager> mSystemManager;
public:
void Init();
// Entity methods
Entity CreateEntity();
void DestroyEntity(Entity entity);
// Component methods
template <typename T> void RegisterComponent();
template <typename T> void AddComponent(Entity entity, T component);
template <typename T> void RemoveComponent(Entity entity);
template <typename T> T &GetComponent(Entity entity);
template <typename T> ComponentType GetComponentType();
// System methods
template <typename T> std::shared_ptr<T> RegisterSystem();
template <typename T> void SetSystemSignature(Signature signature);
};
#endif // COORDINATOR_HPP