#pragma once #include //#include using EntityIndex = uint16_t; enum EntityTag : uint8_t { none, tagCount }; class EntityManager; class Entity { private: friend class EntityManager; Entity(); public: template bool hasComponent() const; template T& getComponent() const; template T& getComponent(); template void addComponent(const T&&); EntityTag tag() const; bool isAlive() const; private: EntityIndex m_id; };