#pragma once #include "BitStream.h" #include "Entity.h" #include "Component.h" /** * Represents an entity that can be controlled by some other entity, generally used by cars to indicate that some * player is controlling it. */ class PossessableComponent : public Component { public: static const uint32_t ComponentType = COMPONENT_TYPE_POSSESSABLE; PossessableComponent(Entity* parentEntity); ~PossessableComponent() override; void Serialize(RakNet::BitStream* outBitStream, bool bIsInitialUpdate, unsigned int& flags); void Update(float deltaTime) override; /** * Sets the possessor of this entity * @param value the ID of the possessor to set */ void SetPossessor(LWOOBJID value); /** * Returns the possessor of this entity * @return the possessor of this entitythe */ LWOOBJID GetPossessor() const; /** * Handles an OnUsed event by some other entity, if said entity has a PossessorComponent it becomes the possessor * of this entity * @param originator the entity that caused the event to trigger */ void OnUse(Entity* originator) override; private: /** * The possessor of this entity, e.g. the entity that controls this entity */ LWOOBJID m_Possessor; };