2021-12-05 17:54:36 +00:00
|
|
|
#pragma once
|
|
|
|
|
|
|
|
#include "BitStream.h"
|
|
|
|
#include "Entity.h"
|
|
|
|
#include "Component.h"
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Represents an entity that can posess other entities. Generally used by players to drive a car.
|
|
|
|
*/
|
|
|
|
class PossessorComponent : public Component {
|
2022-06-29 23:50:24 +00:00
|
|
|
public:
|
|
|
|
static const uint32_t ComponentType = COMPONENT_TYPE_POSSESSOR;
|
|
|
|
|
|
|
|
PossessorComponent(Entity* parent);
|
|
|
|
~PossessorComponent() override;
|
|
|
|
|
|
|
|
void Serialize(RakNet::BitStream* outBitStream, bool bIsInitialUpdate, unsigned int& flags);
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Sets the entity that this entity is possessing
|
|
|
|
* @param value the ID of the entity this ID should posess
|
|
|
|
*/
|
|
|
|
void SetPossessable(LWOOBJID value) { m_Possessable = value; m_DirtyPossesor = true; }
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Sets the possesible type that's currently used, merely used by the shooting gallery if it's 0
|
|
|
|
* @param value the possesible type to set
|
|
|
|
*/
|
|
|
|
void SetPossessableType(uint8_t value) { m_PossessableType = value; m_DirtyPossesor = true; }
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Returns the entity that this entity is currently posessing
|
|
|
|
* @return the entity that this entity is currently posessing
|
|
|
|
*/
|
|
|
|
LWOOBJID GetPossessable() const { return m_Possessable; }
|
|
|
|
|
|
|
|
private:
|
|
|
|
|
|
|
|
/**
|
|
|
|
* The ID of the entity this entity is possessing (e.g. the ID of a car)
|
|
|
|
*/
|
|
|
|
LWOOBJID m_Possessable;
|
|
|
|
|
|
|
|
/**
|
|
|
|
* @brief possessable type
|
|
|
|
*
|
|
|
|
*/
|
|
|
|
uint8_t m_PossessableType;
|
|
|
|
|
|
|
|
/**
|
|
|
|
* @brief if the possessor is dirty
|
|
|
|
*
|
|
|
|
*/
|
|
|
|
bool m_DirtyPossesor;
|
2021-12-05 17:54:36 +00:00
|
|
|
};
|