#include "PossessableComponent.h" #include "PossessorComponent.h" #include "EntityManager.h" PossessableComponent::PossessableComponent(Entity* parent) : Component(parent) { m_Possessor = LWOOBJID_EMPTY; } PossessableComponent::~PossessableComponent() { } void PossessableComponent::SetPossessor(LWOOBJID value) { m_Possessor = value; } LWOOBJID PossessableComponent::GetPossessor() const { return m_Possessor; } void PossessableComponent::Serialize(RakNet::BitStream* outBitStream, bool bIsInitialUpdate, unsigned int& flags) { outBitStream->Write(m_Possessor != LWOOBJID_EMPTY); if (m_Possessor != LWOOBJID_EMPTY) { outBitStream->Write1(); outBitStream->Write(m_Possessor); outBitStream->Write0(); outBitStream->Write0(); } } void PossessableComponent::Update(float deltaTime) { } void PossessableComponent::OnUse(Entity* originator) { PossessorComponent* possessorComponent; if (originator->TryGetComponent(COMPONENT_TYPE_POSSESSOR, possessorComponent)) { SetPossessor(originator->GetObjectID()); possessorComponent->SetPossessable(m_Parent->GetObjectID()); EntityManager::Instance()->SerializeEntity(m_Parent); EntityManager::Instance()->SerializeEntity(originator); } }