mirror of
https://github.com/DarkflameUniverse/DarkflameServer.git
synced 2025-08-05 18:24:12 +00:00
Public release of the DLU server code!
Have fun!
This commit is contained in:
72
dGame/dComponents/SimplePhysicsComponent.cpp
Normal file
72
dGame/dComponents/SimplePhysicsComponent.cpp
Normal file
@@ -0,0 +1,72 @@
|
||||
/*
|
||||
* Darkflame Universe
|
||||
* Copyright 2018
|
||||
*/
|
||||
|
||||
#include "SimplePhysicsComponent.h"
|
||||
#include "BitStream.h"
|
||||
#include "Game.h"
|
||||
#include "dLogger.h"
|
||||
#include "dpWorld.h"
|
||||
#include "CDClientManager.h"
|
||||
#include "CDPhysicsComponentTable.h"
|
||||
|
||||
#include "Entity.h"
|
||||
|
||||
SimplePhysicsComponent::SimplePhysicsComponent(uint32_t componentID, Entity* parent) : Component(parent) {
|
||||
m_Position = m_Parent->GetDefaultPosition();
|
||||
m_Rotation = m_Parent->GetDefaultRotation();
|
||||
m_IsDirty = true;
|
||||
}
|
||||
|
||||
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_DirtyVelocity || bIsInitialUpdate);
|
||||
if (m_DirtyVelocity || bIsInitialUpdate) {
|
||||
outBitStream->Write(m_Velocity);
|
||||
outBitStream->Write(m_AngularVelocity);
|
||||
|
||||
m_DirtyVelocity = false;
|
||||
}
|
||||
|
||||
// Physics motion state
|
||||
if (m_PhysicsMotionState != 0)
|
||||
{
|
||||
outBitStream->Write1();
|
||||
outBitStream->Write<uint32_t>(m_PhysicsMotionState);
|
||||
}
|
||||
else
|
||||
{
|
||||
outBitStream->Write0();
|
||||
}
|
||||
|
||||
outBitStream->Write(m_IsDirty || bIsInitialUpdate);
|
||||
if (m_IsDirty || bIsInitialUpdate) {
|
||||
outBitStream->Write(m_Position.x);
|
||||
outBitStream->Write(m_Position.y);
|
||||
outBitStream->Write(m_Position.z);
|
||||
outBitStream->Write(m_Rotation.x);
|
||||
outBitStream->Write(m_Rotation.y);
|
||||
outBitStream->Write(m_Rotation.z);
|
||||
outBitStream->Write(m_Rotation.w);
|
||||
|
||||
m_IsDirty = false;
|
||||
}
|
||||
}
|
||||
|
||||
uint32_t SimplePhysicsComponent::GetPhysicsMotionState() const
|
||||
{
|
||||
return m_PhysicsMotionState;
|
||||
}
|
||||
|
||||
void SimplePhysicsComponent::SetPhysicsMotionState(uint32_t value)
|
||||
{
|
||||
m_PhysicsMotionState = value;
|
||||
}
|
Reference in New Issue
Block a user