#pragma once #include #include "../Engine_Messaging_System/MessageSystemEvent.h" #include "../Engine_Physics/SpriteRectangle.h" #include "../Engine_Resource_Management/ResourceManagement.h" #include "../Engine_Text/Text.h" #include // Create Entites class EnginePhysicsSystem; class EntityManagement; class Entity { public: ~Entity(); uint32_t getEntityID() const; void addMessageSystemEvent(MessageSystemEvent& c); void removeMessageSystemEvent(MessageSystemEvent& c); SpriteRectangle* getEntitySprite() const; template T* getMessageSystemEvent(); static Entity* messageBuildFromJson(EntityManagement& ResourceManagement, EnginePhysicsSystem& enginePhysicsSystem, Json::Value engineSystemSource); bool operator==(const Entity& other) const; private: friend class EntityManagement; Entity(uint32_t id, EntityManagement& ResourceManagement, SpriteRectangle& sprite); uint32_t entityID; EntityManagement* entityManagement; SpriteRectangle* spriteRecatngle; friend class EntityManagement; bool isDeleted = false; }; template T* Entity::getMessageSystemEvent() { return entityManagement->getMessageSystemEvent(this); }