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

View File

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

View File

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

View File

@ -534,7 +534,7 @@ void LegoAct2::Enable(MxBool p_enable)
GameState()->SetActor(LegoActor::c_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) {
GameState()->StopArea(LegoGameState::e_infomain);