From 97ff0be137acdfbca1e4d38d749d8904077e29bb Mon Sep 17 00:00:00 2001 From: Christian Semmler Date: Wed, 13 Mar 2024 19:28:05 -0400 Subject: [PATCH] Implement/match LegoEntity::GetPosition/Direction/Up --- LEGO1/lego/legoomni/include/legoentity.h | 2 +- LEGO1/lego/legoomni/src/entity/legoentity.cpp | 28 ++++++++++++++----- .../legoomni/src/entity/legopovcontroller.cpp | 6 ++-- 3 files changed, 25 insertions(+), 11 deletions(-) diff --git a/LEGO1/lego/legoomni/include/legoentity.h b/LEGO1/lego/legoomni/include/legoentity.h index 4580405c..e7d5eafd 100644 --- a/LEGO1/lego/legoomni/include/legoentity.h +++ b/LEGO1/lego/legoomni/include/legoentity.h @@ -68,7 +68,7 @@ class LegoEntity : public MxEntity { void SetLocation(const Vector3& p_location, const Vector3& p_direction, const Vector3& p_up, MxBool p_und); Mx3DPointFloat GetEntitydDirection(); Mx3DPointFloat GetEntityUp(); - Mx3DPointFloat GetEntityLocation(); + Mx3DPointFloat GetEntityPosition(); inline LegoROI* GetROI() { return m_roi; } inline MxU8 GetFlags() { return m_flags; } diff --git a/LEGO1/lego/legoomni/src/entity/legoentity.cpp b/LEGO1/lego/legoomni/src/entity/legoentity.cpp index 4bc066ee..c2897423 100644 --- a/LEGO1/lego/legoomni/src/entity/legoentity.cpp +++ b/LEGO1/lego/legoomni/src/entity/legoentity.cpp @@ -184,22 +184,36 @@ void LegoEntity::FUN_10010c30() } } -// STUB: LEGO1 0x10010c60 +// FUNCTION: LEGO1 0x10010c60 Mx3DPointFloat LegoEntity::GetEntitydDirection() { - return Mx3DPointFloat(0, 0, 0); + if (m_roi != NULL) { + m_worldDirection = + Mx3DPointFloat(m_roi->GetWorldDirection()[0], m_roi->GetWorldDirection()[1], m_roi->GetWorldDirection()[2]); + } + + return m_worldDirection; } -// STUB: LEGO1 0x10010cf0 +// FUNCTION: LEGO1 0x10010cf0 Mx3DPointFloat LegoEntity::GetEntityUp() { - return Mx3DPointFloat(0, 0, 0); + if (m_roi != NULL) { + m_worldUp = Mx3DPointFloat(m_roi->GetWorldUp()[0], m_roi->GetWorldUp()[1], m_roi->GetWorldUp()[2]); + } + + return m_worldUp; } -// STUB: LEGO1 0x10010d80 -Mx3DPointFloat LegoEntity::GetEntityLocation() +// FUNCTION: LEGO1 0x10010d80 +Mx3DPointFloat LegoEntity::GetEntityPosition() { - return Mx3DPointFloat(0, 0, 0); + if (m_roi != NULL) { + m_worldLocation = + Mx3DPointFloat(m_roi->GetWorldPosition()[0], m_roi->GetWorldPosition()[1], m_roi->GetWorldPosition()[2]); + } + + return m_worldLocation; } // FUNCTION: LEGO1 0x10010e10 diff --git a/LEGO1/lego/legoomni/src/entity/legopovcontroller.cpp b/LEGO1/lego/legoomni/src/entity/legopovcontroller.cpp index ea13fe00..a528b10f 100644 --- a/LEGO1/lego/legoomni/src/entity/legopovcontroller.cpp +++ b/LEGO1/lego/legoomni/src/entity/legopovcontroller.cpp @@ -199,9 +199,9 @@ void LegoPointOfViewController::SetEntity(LegoEntity* p_entity) CalcLocalTransform( Mx3DPointFloat( - m_entity->GetEntityLocation()[0], - m_entity->GetEntityLocation()[1] + m_entityOffsetUp, - m_entity->GetEntityLocation()[2] + m_entity->GetEntityPosition()[0], + m_entity->GetEntityPosition()[1] + m_entityOffsetUp, + m_entity->GetEntityPosition()[2] ), m_entity->GetEntitydDirection(), m_entity->GetEntityUp(),