Clear unknowns in LegoEntity (#1672)

This commit is contained in:
Fabian Neundorf
2025-08-09 17:38:59 +02:00
committed by GitHub
parent 4eba95c309
commit 1a317a3ef8
6 changed files with 23 additions and 18 deletions

View File

@@ -76,9 +76,9 @@ public:
virtual void SwitchColor(LegoROI* p_roi); // vtable+0x48 virtual void SwitchColor(LegoROI* p_roi); // vtable+0x48
virtual void SwitchMood(); // vtable+0x4c virtual void SwitchMood(); // vtable+0x4c
void FUN_10010c30(); void TransformPointOfView();
void SetType(MxU8 p_type); void SetType(MxU8 p_type);
void SetLocation(const Vector3& p_location, const Vector3& p_direction, const Vector3& p_up, MxBool p_und); void SetLocation(const Vector3& p_location, const Vector3& p_direction, const Vector3& p_up, MxBool p_updateCamera);
Mx3DPointFloat GetWorldDirection(); Mx3DPointFloat GetWorldDirection();
Mx3DPointFloat GetWorldUp(); Mx3DPointFloat GetWorldUp();
Mx3DPointFloat GetWorldPosition(); Mx3DPointFloat GetWorldPosition();

View File

@@ -342,7 +342,7 @@ MxLong Helicopter::HandleEndAnim(LegoEndAnimNotificationParam& p_param)
assert(m_world && m_world->GetCameraController()); assert(m_world && m_world->GetCameraController());
m_world->GetCameraController()->SetWorldTransform(at, dir, up); m_world->GetCameraController()->SetWorldTransform(at, dir, up);
FUN_10010c30(); TransformPointOfView();
result = 1; result = 1;
break; break;
} }
@@ -388,13 +388,13 @@ void Helicopter::VTable0x74(Matrix4& p_transform)
{ {
if (m_userNavFlag) { if (m_userNavFlag) {
m_roi->UpdateTransformationRelativeToParent(p_transform); m_roi->UpdateTransformationRelativeToParent(p_transform);
FUN_10010c30(); TransformPointOfView();
} }
else { else {
m_roi->SetLocal2World(p_transform); m_roi->SetLocal2World(p_transform);
m_roi->WrappedUpdateWorldData(); m_roi->WrappedUpdateWorldData();
if (m_cameraFlag) { if (m_cameraFlag) {
FUN_10010c30(); TransformPointOfView();
} }
} }
} }

View File

@@ -93,7 +93,7 @@ void IslePathActor::Enter()
SetUserActor(this); SetUserActor(this);
FUN_1001b660(); FUN_1001b660();
FUN_10010c30(); TransformPointOfView();
} }
} }
@@ -152,7 +152,7 @@ void IslePathActor::Exit()
} }
FUN_1001b660(); FUN_1001b660();
FUN_10010c30(); TransformPointOfView();
ResetViewVelocity(); ResetViewVelocity();
} }
@@ -633,7 +633,7 @@ void IslePathActor::VTable0xec(MxMatrix p_transform, LegoPathBoundary* p_boundar
m_roi->SetLocal2World(p_transform); m_roi->SetLocal2World(p_transform);
if (m_cameraFlag) { if (m_cameraFlag) {
ResetViewVelocity(); ResetViewVelocity();
FUN_10010c30(); TransformPointOfView();
} }
} }

View File

@@ -155,7 +155,12 @@ void LegoEntity::SetROI(LegoROI* p_roi, MxBool p_bool1, MxBool p_bool2)
// FUNCTION: LEGO1 0x100109b0 // FUNCTION: LEGO1 0x100109b0
// FUNCTION: BETA10 0x1007e8b8 // FUNCTION: BETA10 0x1007e8b8
void LegoEntity::SetLocation(const Vector3& p_location, const Vector3& p_direction, const Vector3& p_up, MxBool p_und) void LegoEntity::SetLocation(
const Vector3& p_location,
const Vector3& p_direction,
const Vector3& p_up,
MxBool p_updateCamera
)
{ {
Mx3DPointFloat direction; Mx3DPointFloat direction;
Mx3DPointFloat up; Mx3DPointFloat up;
@@ -182,14 +187,14 @@ void LegoEntity::SetLocation(const Vector3& p_location, const Vector3& p_directi
m_roi->UpdateTransformationRelativeToParent(mat); m_roi->UpdateTransformationRelativeToParent(mat);
VideoManager()->Get3DManager()->Moved(*m_roi); VideoManager()->Get3DManager()->Moved(*m_roi);
if (p_und) { if (p_updateCamera) {
FUN_10010c30(); TransformPointOfView();
} }
} }
} }
// FUNCTION: LEGO1 0x10010c30 // FUNCTION: LEGO1 0x10010c30
void LegoEntity::FUN_10010c30() void LegoEntity::TransformPointOfView()
{ {
LegoWorld* world = CurrentWorld(); LegoWorld* world = CurrentWorld();

View File

@@ -137,7 +137,7 @@ MxResult LegoAnimActor::FUN_1001c360(float p_und, Matrix4& p_transform)
} }
if (m_cameraFlag) { if (m_cameraFlag) {
FUN_10010c30(); TransformPointOfView();
} }
} }

View File

@@ -162,7 +162,7 @@ MxResult LegoPathActor::VTable0x88(
} }
else { else {
m_boundary->AddActor(this); m_boundary->AddActor(this);
FUN_10010c30(); TransformPointOfView();
} }
m_unk0xec = m_roi->GetLocal2World(); m_unk0xec = m_roi->GetLocal2World();
@@ -222,7 +222,7 @@ MxResult LegoPathActor::VTable0x84(
if (m_cameraFlag && m_userNavFlag) { if (m_cameraFlag && m_userNavFlag) {
m_boundary->AddActor(this); m_boundary->AddActor(this);
FUN_10010c30(); TransformPointOfView();
} }
else { else {
p5.EqualsCross(*p_boundary->GetUp(), p3); p5.EqualsCross(*p_boundary->GetUp(), p3);
@@ -392,14 +392,14 @@ void LegoPathActor::VTable0x74(Matrix4& p_transform)
{ {
if (m_userNavFlag) { if (m_userNavFlag) {
m_roi->WrappedSetLocal2WorldWithWorldDataUpdate(p_transform); m_roi->WrappedSetLocal2WorldWithWorldDataUpdate(p_transform);
FUN_10010c30(); TransformPointOfView();
} }
else { else {
m_roi->WrappedSetLocal2WorldWithWorldDataUpdate(p_transform); m_roi->WrappedSetLocal2WorldWithWorldDataUpdate(p_transform);
m_roi->WrappedUpdateWorldData(); m_roi->WrappedUpdateWorldData();
if (m_cameraFlag) { if (m_cameraFlag) {
FUN_10010c30(); TransformPointOfView();
} }
} }
} }
@@ -745,7 +745,7 @@ void LegoPathActor::VTable0xa8()
if (m_userNavFlag) { if (m_userNavFlag) {
m_roi->WrappedSetLocal2WorldWithWorldDataUpdate(m_unk0xec); m_roi->WrappedSetLocal2WorldWithWorldDataUpdate(m_unk0xec);
FUN_10010c30(); TransformPointOfView();
} }
} }