#ifndef SYSTEM_HPP #define SYSTEM_HPP #include #include #include #include "component.hpp" #include "entity.hpp" class System { public: std::set mEntities; }; class SystemManager { // Map from system type string pointer to a signature std::unordered_map mSignatures{}; // Map from system type string pointer to a system pointer std::unordered_map> mSystems{}; public: template std::shared_ptr RegisterSystem(); template void SetSignature(Signature signature); void EntityDestroyed(Entity entity); void EntitySignatureChanged(Entity entity, Signature entitySignature); }; #endif // !SYSTEM_HPP