diff --git a/src/object/client/CGUnit.cpp b/src/object/client/CGUnit.cpp index 81845cc..4e58b8c 100644 --- a/src/object/client/CGUnit.cpp +++ b/src/object/client/CGUnit.cpp @@ -30,6 +30,10 @@ int32_t CGUnit::GetDisplayID() const { return this->Unit()->displayID; } +float CGUnit::GetFacing() const { + return this->m_move->GetFacing(); +} + int32_t CGUnit::GetNativeDisplayID() const { return this->Unit()->nativeDisplayID; } diff --git a/src/object/client/CGUnit.hpp b/src/object/client/CGUnit.hpp index 7bd0c38..7673bee 100644 --- a/src/object/client/CGUnit.hpp +++ b/src/object/client/CGUnit.hpp @@ -89,6 +89,7 @@ class CGUnit { CGUnit(CMovement_C& move) : m_move(&move) {}; int32_t GetDisplayID() const; + float GetFacing() const; int32_t GetNativeDisplayID() const; C3Vector GetPosition() const; diff --git a/src/object/client/CGUnit_C.cpp b/src/object/client/CGUnit_C.cpp index 2d019ad..0c97490 100644 --- a/src/object/client/CGUnit_C.cpp +++ b/src/object/client/CGUnit_C.cpp @@ -136,6 +136,10 @@ int32_t CGUnit_C::GetDisplayID() const { return this->CGUnit::GetDisplayID(); } +float CGUnit_C::GetFacing() const { + return this->CGUnit::GetFacing(); +} + int32_t CGUnit_C::GetLocalDisplayID() const { return this->m_localDisplayID; } diff --git a/src/object/client/CGUnit_C.hpp b/src/object/client/CGUnit_C.hpp index 0920a27..1af6a82 100644 --- a/src/object/client/CGUnit_C.hpp +++ b/src/object/client/CGUnit_C.hpp @@ -30,6 +30,8 @@ class CGUnit_C : public CGObject_C, public CGUnit { // TODO virtual C3Vector GetPosition() const; // TODO + virtual float GetFacing() const; + // TODO virtual int32_t GetModelFileName(const char*& name) const; // TODO virtual int32_t CanHighlight(); diff --git a/src/object/movement/CPassenger.cpp b/src/object/movement/CPassenger.cpp index 8a56829..bb87896 100644 --- a/src/object/movement/CPassenger.cpp +++ b/src/object/movement/CPassenger.cpp @@ -1,15 +1,31 @@ #include "object/movement/CPassenger.hpp" #include +float CPassenger::GetFacing() const { + return this->GetFacing(this->m_facing); +} + +float CPassenger::GetFacing(float facing) const { + // If on transport, transform facing by transport facing + if (this->m_transportGUID) { + float transportFacing = 0.0f; + // TODO MovementGetTransportFacing(this->m_transportGUID); + + return facing + transportFacing; + } + + return facing; +} + C3Vector CPassenger::GetPosition() const { - return GetPosition(this->m_position); + return this->GetPosition(this->m_position); } C3Vector CPassenger::GetPosition(const C3Vector& position) const { // If on transport, transform position by transport matrix if (this->m_transportGUID) { C44Matrix transportMatrix; - // MovementGetTransportMtxX(this->m_transportGUID, &transportMatrix); + // TODO MovementGetTransportMtxX(this->m_transportGUID, &transportMatrix); return position * transportMatrix; } diff --git a/src/object/movement/CPassenger.hpp b/src/object/movement/CPassenger.hpp index ca5560d..d9a9e03 100644 --- a/src/object/movement/CPassenger.hpp +++ b/src/object/movement/CPassenger.hpp @@ -12,6 +12,8 @@ class CPassenger { , m_position(position) , m_facing(0.0f) , m_guid(guid) {}; + float GetFacing() const; + float GetFacing(float facing) const; C3Vector GetPosition() const; C3Vector GetPosition(const C3Vector& position) const;