Clear unknowns in IslePathActor

This commit is contained in:
Fabian Neundorf 2025-07-28 08:33:27 +02:00
parent e05cb05983
commit 9c89b648c1
4 changed files with 16 additions and 16 deletions

View File

@ -102,10 +102,10 @@ class IslePathActor : public LegoPathActor {
// FUNCTION: LEGO1 0x10002e00 // FUNCTION: LEGO1 0x10002e00
virtual MxLong HandlePathStruct(LegoPathStructNotificationParam&) { return 0; } // vtable+0xdc virtual MxLong HandlePathStruct(LegoPathStructNotificationParam&) { return 0; } // vtable+0xdc
virtual void Enter(); // vtable+0xe0 virtual void Enter(); // vtable+0xe0
virtual void Exit(); // vtable+0xe4 virtual void Exit(); // vtable+0xe4
virtual void SpawnPlayer(LegoGameState::Area p_area, MxBool p_enter, MxU8 p_flags); // vtable+0xe8 virtual void SpawnPlayer(LegoGameState::Area p_area, MxBool p_enter, MxU8 p_flags); // vtable+0xe8
virtual void VTable0xec(MxMatrix p_transform, LegoPathBoundary* p_boundary, MxBool p_reset); // vtable+0xec virtual void UpdateWorld(MxMatrix p_transform, LegoPathBoundary* p_boundary, MxBool p_reset); // vtable+0xec
// FUNCTION: LEGO1 0x10002e10 // FUNCTION: LEGO1 0x10002e10
~IslePathActor() override { IslePathActor::Destroy(TRUE); } ~IslePathActor() override { IslePathActor::Destroy(TRUE); }
@ -129,7 +129,7 @@ class IslePathActor : public LegoPathActor {
MxResult Create(MxDSAction& p_dsAction) override; // vtable+0x18 MxResult Create(MxDSAction& p_dsAction) override; // vtable+0x18
void Destroy(MxBool p_fromDestructor) override; // vtable+0x1c void Destroy(MxBool p_fromDestructor) override; // vtable+0x1c
void FUN_1001b660(); void TurnAround();
void SetWorld(LegoWorld* p_world) { m_world = p_world; } void SetWorld(LegoWorld* p_world) { m_world = p_world; }

View File

@ -92,7 +92,7 @@ void IslePathActor::Enter()
NavController()->ResetMaxLinearVel(m_maxLinearVel); NavController()->ResetMaxLinearVel(m_maxLinearVel);
SetUserActor(this); SetUserActor(this);
FUN_1001b660(); TurnAround();
TransformPointOfView(); TransformPointOfView();
} }
} }
@ -151,7 +151,7 @@ void IslePathActor::Exit()
GameState()->m_currentArea = LegoGameState::Area::e_vehicleExited; GameState()->m_currentArea = LegoGameState::Area::e_vehicleExited;
} }
FUN_1001b660(); TurnAround();
TransformPointOfView(); TransformPointOfView();
ResetViewVelocity(); ResetViewVelocity();
} }
@ -611,7 +611,7 @@ void IslePathActor::SpawnPlayer(LegoGameState::Area p_area, MxBool p_enter, MxU8
} }
// FUNCTION: LEGO1 0x1001b5b0 // FUNCTION: LEGO1 0x1001b5b0
void IslePathActor::VTable0xec(MxMatrix p_transform, LegoPathBoundary* p_boundary, MxBool p_reset) void IslePathActor::UpdateWorld(MxMatrix p_transform, LegoPathBoundary* p_boundary, MxBool p_reset)
{ {
if (m_world) { if (m_world) {
m_world->RemoveActor(this); m_world->RemoveActor(this);
@ -639,15 +639,15 @@ void IslePathActor::VTable0xec(MxMatrix p_transform, LegoPathBoundary* p_boundar
// FUNCTION: LEGO1 0x1001b660 // FUNCTION: LEGO1 0x1001b660
// FUNCTION: BETA10 0x10036ea2 // FUNCTION: BETA10 0x10036ea2
void IslePathActor::FUN_1001b660() void IslePathActor::TurnAround()
{ {
MxMatrix transform(m_roi->GetLocal2World()); MxMatrix transform(m_roi->GetLocal2World());
Vector3 position(transform[0]); Vector3 right(transform[0]);
Vector3 direction(transform[1]); Vector3 up(transform[1]);
Vector3 up(transform[2]); Vector3 direction(transform[2]);
up *= -1.0f; direction *= -1.0f;
position.EqualsCross(direction, up); right.EqualsCross(up, direction);
m_roi->SetLocal2World(transform); m_roi->SetLocal2World(transform);
m_roi->WrappedUpdateWorldData(); m_roi->WrappedUpdateWorldData();
} }

View File

@ -867,7 +867,7 @@ void Isle::CheckAreaExiting()
case LegoGameState::e_vehicleExited: { case LegoGameState::e_vehicleExited: {
MxMatrix mat(UserActor()->GetROI()->GetLocal2World()); MxMatrix mat(UserActor()->GetROI()->GetLocal2World());
LegoPathBoundary* boundary = UserActor()->GetBoundary(); LegoPathBoundary* boundary = UserActor()->GetBoundary();
((IslePathActor*) UserActor())->VTable0xec(mat, boundary, TRUE); ((IslePathActor*) UserActor())->UpdateWorld(mat, boundary, TRUE);
break; break;
} }
case LegoGameState::e_infocenterExited: case LegoGameState::e_infocenterExited:

View File

@ -534,7 +534,7 @@ void LegoAct2::Enable(MxBool p_enable)
GameState()->SetActor(LegoActor::c_pepper); GameState()->SetActor(LegoActor::c_pepper);
m_pepper = FindROI("pepper"); m_pepper = FindROI("pepper");
((IslePathActor*) m_pepper->GetEntity())->VTable0xec(m_transformOnDisable, m_boundaryOnDisable, TRUE); ((IslePathActor*) m_pepper->GetEntity())->UpdateWorld(m_transformOnDisable, m_boundaryOnDisable, TRUE);
if (GameState()->m_previousArea == LegoGameState::e_infomain) { if (GameState()->m_previousArea == LegoGameState::e_infomain) {
GameState()->StopArea(LegoGameState::e_infomain); GameState()->StopArea(LegoGameState::e_infomain);