mirror of
https://github.com/isledecomp/isle.git
synced 2026-01-21 07:11:16 +00:00
Clear unknowns in IslePathActor
This commit is contained in:
parent
e05cb05983
commit
9c89b648c1
@ -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; }
|
||||||
|
|
||||||
|
|||||||
@ -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();
|
||||||
}
|
}
|
||||||
|
|||||||
@ -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:
|
||||||
|
|||||||
@ -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);
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user