mirror of
https://github.com/DarkflameUniverse/DarkflameServer
synced 2024-08-30 18:43:58 +00:00
Merge pull request #559 Properly implement climbable setting for climbables
This shouldn't change anything that was available in live but anything that can be spawned in as climbable is able to be done so now.
This commit is contained in:
commit
44e17eabca
@ -17,6 +17,17 @@ SimplePhysicsComponent::SimplePhysicsComponent(uint32_t componentID, Entity* par
|
||||
m_Position = m_Parent->GetDefaultPosition();
|
||||
m_Rotation = m_Parent->GetDefaultRotation();
|
||||
m_IsDirty = true;
|
||||
|
||||
const auto& climbable_type = m_Parent->GetVar<std::u16string>(u"climbable");
|
||||
if (climbable_type == u"wall") {
|
||||
SetClimbableType(eClimbableType::CLIMBABLE_TYPE_WALL);
|
||||
} else if (climbable_type == u"ladder") {
|
||||
SetClimbableType(eClimbableType::CLIMBABLE_TYPE_LADDER);
|
||||
} else if (climbable_type == u"wallstick") {
|
||||
SetClimbableType(eClimbableType::CLIMBABLE_TYPE_WALL_STICK);
|
||||
} else {
|
||||
SetClimbableType(eClimbableType::CLIMBABLE_TYPE_NOT);
|
||||
}
|
||||
}
|
||||
|
||||
SimplePhysicsComponent::~SimplePhysicsComponent() {
|
||||
@ -24,8 +35,8 @@ SimplePhysicsComponent::~SimplePhysicsComponent() {
|
||||
|
||||
void SimplePhysicsComponent::Serialize(RakNet::BitStream* outBitStream, bool bIsInitialUpdate, unsigned int& flags) {
|
||||
if (bIsInitialUpdate) {
|
||||
outBitStream->Write0(); // climbable
|
||||
outBitStream->Write<int32_t>(0); // climbableType
|
||||
outBitStream->Write(m_ClimbableType != eClimbableType::CLIMBABLE_TYPE_NOT);
|
||||
outBitStream->Write(m_ClimbableType);
|
||||
}
|
||||
|
||||
outBitStream->Write(m_DirtyVelocity || bIsInitialUpdate);
|
||||
|
@ -14,6 +14,14 @@
|
||||
|
||||
class Entity;
|
||||
|
||||
enum class eClimbableType : int32_t {
|
||||
CLIMBABLE_TYPE_NOT = 0,
|
||||
CLIMBABLE_TYPE_LADDER,
|
||||
CLIMBABLE_TYPE_WALL,
|
||||
CLIMBABLE_TYPE_WALL_STICK
|
||||
};
|
||||
|
||||
|
||||
/**
|
||||
* Component that serializes locations of entities to the client
|
||||
*/
|
||||
@ -86,6 +94,18 @@ public:
|
||||
*/
|
||||
void SetPhysicsMotionState(uint32_t value);
|
||||
|
||||
/**
|
||||
* Returns the ClimbableType of this entity
|
||||
* @return the ClimbableType of this entity
|
||||
*/
|
||||
const eClimbableType& GetClimabbleType() { return m_ClimbableType; }
|
||||
|
||||
/**
|
||||
* Sets the ClimbableType of this entity
|
||||
* @param value the ClimbableType to set
|
||||
*/
|
||||
void SetClimbableType(const eClimbableType& value) { m_ClimbableType = value; }
|
||||
|
||||
private:
|
||||
|
||||
/**
|
||||
@ -122,6 +142,11 @@ private:
|
||||
* The current physics motion state
|
||||
*/
|
||||
uint32_t m_PhysicsMotionState = 0;
|
||||
|
||||
/**
|
||||
* Whether or not the entity is climbable
|
||||
*/
|
||||
eClimbableType m_ClimbableType = eClimbableType::CLIMBABLE_TYPE_NOT;
|
||||
};
|
||||
|
||||
#endif // SIMPLEPHYSICSCOMPONENT_H
|
||||
|
Loading…
Reference in New Issue
Block a user