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