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 SwitchMood(); // vtable+0x4c
void FUN_10010c30();
void TransformPointOfView();
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 GetWorldUp();
Mx3DPointFloat GetWorldPosition();

View File

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

View File

@@ -93,7 +93,7 @@ void IslePathActor::Enter()
SetUserActor(this);
FUN_1001b660();
FUN_10010c30();
TransformPointOfView();
}
}
@@ -152,7 +152,7 @@ void IslePathActor::Exit()
}
FUN_1001b660();
FUN_10010c30();
TransformPointOfView();
ResetViewVelocity();
}
@@ -633,7 +633,7 @@ void IslePathActor::VTable0xec(MxMatrix p_transform, LegoPathBoundary* p_boundar
m_roi->SetLocal2World(p_transform);
if (m_cameraFlag) {
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: 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 up;
@@ -182,14 +187,14 @@ void LegoEntity::SetLocation(const Vector3& p_location, const Vector3& p_directi
m_roi->UpdateTransformationRelativeToParent(mat);
VideoManager()->Get3DManager()->Moved(*m_roi);
if (p_und) {
FUN_10010c30();
if (p_updateCamera) {
TransformPointOfView();
}
}
}
// FUNCTION: LEGO1 0x10010c30
void LegoEntity::FUN_10010c30()
void LegoEntity::TransformPointOfView()
{
LegoWorld* world = CurrentWorld();

View File

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

View File

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