mirror of
https://github.com/isledecomp/isle.git
synced 2025-10-23 16:34:06 +00:00
Implement/match IslePathActor::Exit
This commit is contained in:
@@ -89,7 +89,7 @@ public:
|
|||||||
MxU32 HandleClick() override; // vtable+0xcc
|
MxU32 HandleClick() override; // vtable+0xcc
|
||||||
MxU32 HandleControl(LegoControlManagerEvent& p_param) override; // vtable+0xd4
|
MxU32 HandleControl(LegoControlManagerEvent& p_param) override; // vtable+0xd4
|
||||||
MxU32 VTable0xdc(MxType19NotificationParam&) override; // vtable+0xdc
|
MxU32 VTable0xdc(MxType19NotificationParam&) override; // vtable+0xdc
|
||||||
void VTable0xe4() override; // vtable+0xe4
|
void Exit() override; // vtable+0xe4
|
||||||
|
|
||||||
void CreateState();
|
void CreateState();
|
||||||
void FUN_10036e60();
|
void FUN_10036e60();
|
||||||
|
@@ -26,7 +26,7 @@ public:
|
|||||||
MxResult Create(MxDSAction& p_dsAction) override; // vtable+0x18
|
MxResult Create(MxDSAction& p_dsAction) override; // vtable+0x18
|
||||||
MxU32 HandleClick() override; // vtable+0xcc
|
MxU32 HandleClick() override; // vtable+0xcc
|
||||||
MxU32 HandleControl(LegoControlManagerEvent& p_param) override; // vtable+0xd4
|
MxU32 HandleControl(LegoControlManagerEvent& p_param) override; // vtable+0xd4
|
||||||
void VTable0xe4() override; // vtable+0xe4
|
void Exit() override; // vtable+0xe4
|
||||||
|
|
||||||
void FUN_10076b60();
|
void FUN_10076b60();
|
||||||
|
|
||||||
|
@@ -28,7 +28,7 @@ public:
|
|||||||
MxU32 HandleClick() override; // vtable+0xcc
|
MxU32 HandleClick() override; // vtable+0xcc
|
||||||
MxU32 HandleControl(LegoControlManagerEvent& p_param) override; // vtable+0xd4
|
MxU32 HandleControl(LegoControlManagerEvent& p_param) override; // vtable+0xd4
|
||||||
MxU32 VTable0xdc(MxType19NotificationParam& p_param) override; // vtable+0xdc
|
MxU32 VTable0xdc(MxType19NotificationParam& p_param) override; // vtable+0xdc
|
||||||
void VTable0xe4() override; // vtable+0xe4
|
void Exit() override; // vtable+0xe4
|
||||||
|
|
||||||
void FUN_10068350();
|
void FUN_10068350();
|
||||||
|
|
||||||
|
@@ -69,7 +69,7 @@ public:
|
|||||||
MxU32 HandleClick() override; // vtable+0xcc
|
MxU32 HandleClick() override; // vtable+0xcc
|
||||||
MxU32 HandleControl(LegoControlManagerEvent& p_param) override; // vtable+0xd4
|
MxU32 HandleControl(LegoControlManagerEvent& p_param) override; // vtable+0xd4
|
||||||
MxU32 VTable0xd8(LegoEndAnimNotificationParam& p_param) override; // vtable+0xd8
|
MxU32 VTable0xd8(LegoEndAnimNotificationParam& p_param) override; // vtable+0xd8
|
||||||
void VTable0xe4() override; // vtable+0xe4
|
void Exit() override; // vtable+0xe4
|
||||||
|
|
||||||
// SYNTHETIC: LEGO1 0x10003210
|
// SYNTHETIC: LEGO1 0x10003210
|
||||||
// Helicopter::`scalar deleting destructor'
|
// Helicopter::`scalar deleting destructor'
|
||||||
|
@@ -4,6 +4,7 @@
|
|||||||
#include "legogamestate.h"
|
#include "legogamestate.h"
|
||||||
#include "legopathactor.h"
|
#include "legopathactor.h"
|
||||||
#include "mxtypes.h"
|
#include "mxtypes.h"
|
||||||
|
#include "roi/legoroi.h"
|
||||||
|
|
||||||
class LegoControlManagerEvent;
|
class LegoControlManagerEvent;
|
||||||
class LegoEndAnimNotificationParam;
|
class LegoEndAnimNotificationParam;
|
||||||
@@ -120,8 +121,8 @@ public:
|
|||||||
// FUNCTION: LEGO1 0x10002e00
|
// FUNCTION: LEGO1 0x10002e00
|
||||||
virtual MxU32 VTable0xdc(MxType19NotificationParam&) { return 0; } // vtable+0xdc
|
virtual MxU32 VTable0xdc(MxType19NotificationParam&) { return 0; } // vtable+0xdc
|
||||||
|
|
||||||
virtual void VTable0xe0(); // vtable+0xe0
|
virtual void Enter(); // vtable+0xe0
|
||||||
virtual void VTable0xe4(); // vtable+0xe4
|
virtual void Exit(); // vtable+0xe4
|
||||||
virtual void SpawnPlayer(LegoGameState::Area p_area, MxBool p_und, MxU8 p_flags); // vtable+0xe8
|
virtual void SpawnPlayer(LegoGameState::Area p_area, MxBool p_und, MxU8 p_flags); // vtable+0xe8
|
||||||
virtual void VTable0xec(MxMatrix p_transform, LegoPathBoundary* p_boundary, MxBool p_reset); // vtable+0xec
|
virtual void VTable0xec(MxMatrix p_transform, LegoPathBoundary* p_boundary, MxBool p_reset); // vtable+0xec
|
||||||
|
|
||||||
@@ -130,12 +131,18 @@ public:
|
|||||||
|
|
||||||
void FUN_1001b660();
|
void FUN_1001b660();
|
||||||
|
|
||||||
|
void Reset()
|
||||||
|
{
|
||||||
|
m_roi->SetVisibility(TRUE);
|
||||||
|
SetState(0);
|
||||||
|
}
|
||||||
|
|
||||||
static void RegisterSpawnLocations();
|
static void RegisterSpawnLocations();
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
LegoWorld* m_world; // 0x154
|
LegoWorld* m_world; // 0x154
|
||||||
LegoPathActor* m_unk0x158; // 0x158
|
LegoPathActor* m_previousActor; // 0x158
|
||||||
MxFloat m_unk0x15c; // 0x15c
|
MxFloat m_previousVel; // 0x15c
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif // ISLEPATHACTOR_H
|
#endif // ISLEPATHACTOR_H
|
||||||
|
@@ -29,7 +29,7 @@ public:
|
|||||||
void VTable0x70(float p_float) override; // vtable+0x70
|
void VTable0x70(float p_float) override; // vtable+0x70
|
||||||
MxU32 HandleClick() override; // vtable+0xcc
|
MxU32 HandleClick() override; // vtable+0xcc
|
||||||
MxU32 HandleControl(LegoControlManagerEvent&) override; // vtable+0xd4
|
MxU32 HandleControl(LegoControlManagerEvent&) override; // vtable+0xd4
|
||||||
void VTable0xe4() override; // vtable+0xe4
|
void Exit() override; // vtable+0xe4
|
||||||
|
|
||||||
void FUN_1007e990();
|
void FUN_1007e990();
|
||||||
|
|
||||||
|
@@ -28,7 +28,7 @@ public:
|
|||||||
MxU32 HandleClick() override; // vtable+0xcc
|
MxU32 HandleClick() override; // vtable+0xcc
|
||||||
MxU32 HandleControl(LegoControlManagerEvent& p_param) override; // vtable+0xd4
|
MxU32 HandleControl(LegoControlManagerEvent& p_param) override; // vtable+0xd4
|
||||||
MxU32 VTable0xdc(MxType19NotificationParam&) override; // vtable+0xdc
|
MxU32 VTable0xdc(MxType19NotificationParam&) override; // vtable+0xdc
|
||||||
void VTable0xe4() override; // vtable+0xe4
|
void Exit() override; // vtable+0xe4
|
||||||
|
|
||||||
void FUN_10035e10();
|
void FUN_10035e10();
|
||||||
|
|
||||||
|
@@ -30,7 +30,7 @@ public:
|
|||||||
MxU32 HandleClick() override; // vtable+0xcc
|
MxU32 HandleClick() override; // vtable+0xcc
|
||||||
MxU32 VTable0xd0() override; // vtable+0xd0
|
MxU32 VTable0xd0() override; // vtable+0xd0
|
||||||
MxU32 HandleControl(LegoControlManagerEvent& p_param) override; // vtable+0xd4
|
MxU32 HandleControl(LegoControlManagerEvent& p_param) override; // vtable+0xd4
|
||||||
void VTable0xe4() override; // vtable+0xe4
|
void Exit() override; // vtable+0xe4
|
||||||
|
|
||||||
inline void SetUnknown0x160(MxBool p_unk0x160) { m_unk0x160 = p_unk0x160; }
|
inline void SetUnknown0x160(MxBool p_unk0x160) { m_unk0x160 = p_unk0x160; }
|
||||||
|
|
||||||
|
@@ -88,7 +88,7 @@ public:
|
|||||||
MxU32 HandleControl(LegoControlManagerEvent& p_param) override; // vtable+0xd4
|
MxU32 HandleControl(LegoControlManagerEvent& p_param) override; // vtable+0xd4
|
||||||
MxU32 VTable0xd8(LegoEndAnimNotificationParam& p_param) override; // vtable+0xd8
|
MxU32 VTable0xd8(LegoEndAnimNotificationParam& p_param) override; // vtable+0xd8
|
||||||
MxU32 VTable0xdc(MxType19NotificationParam& p_param) override; // vtable+0xdc
|
MxU32 VTable0xdc(MxType19NotificationParam& p_param) override; // vtable+0xdc
|
||||||
void VTable0xe4() override; // vtable+0xe4
|
void Exit() override; // vtable+0xe4
|
||||||
|
|
||||||
void CreateState();
|
void CreateState();
|
||||||
void FUN_1004dab0();
|
void FUN_1004dab0();
|
||||||
|
@@ -116,7 +116,7 @@ void Ambulance::FUN_10036e60()
|
|||||||
}
|
}
|
||||||
|
|
||||||
// STUB: LEGO1 0x10036e90
|
// STUB: LEGO1 0x10036e90
|
||||||
void Ambulance::VTable0xe4()
|
void Ambulance::Exit()
|
||||||
{
|
{
|
||||||
// TODO
|
// TODO
|
||||||
}
|
}
|
||||||
|
@@ -32,9 +32,9 @@ MxResult Bike::Create(MxDSAction& p_dsAction)
|
|||||||
}
|
}
|
||||||
|
|
||||||
// FUNCTION: LEGO1 0x10076920
|
// FUNCTION: LEGO1 0x10076920
|
||||||
void Bike::VTable0xe4()
|
void Bike::Exit()
|
||||||
{
|
{
|
||||||
IslePathActor::VTable0xe4();
|
IslePathActor::Exit();
|
||||||
GameState()->SetCurrentArea(LegoGameState::Area::e_bike);
|
GameState()->SetCurrentArea(LegoGameState::Area::e_bike);
|
||||||
RemoveFromCurrentWorld(*g_isleScript, IsleScript::c_BikeDashboard_Bitmap);
|
RemoveFromCurrentWorld(*g_isleScript, IsleScript::c_BikeDashboard_Bitmap);
|
||||||
RemoveFromCurrentWorld(*g_isleScript, IsleScript::c_BikeArms_Ctl);
|
RemoveFromCurrentWorld(*g_isleScript, IsleScript::c_BikeArms_Ctl);
|
||||||
|
@@ -29,7 +29,7 @@ MxLong InfoCenterEntity::VTable0x50(MxParam& p_param)
|
|||||||
switch (GameState()->GetCurrentAct()) {
|
switch (GameState()->GetCurrentAct()) {
|
||||||
case LegoGameState::Act::e_act1: {
|
case LegoGameState::Act::e_act1: {
|
||||||
if (CurrentActor()->GetActorId() != GameState()->GetActorId()) {
|
if (CurrentActor()->GetActorId() != GameState()->GetActorId()) {
|
||||||
((IslePathActor*) CurrentActor())->VTable0xe4();
|
((IslePathActor*) CurrentActor())->Exit();
|
||||||
}
|
}
|
||||||
|
|
||||||
Isle* isle = (Isle*) FindWorld(*g_isleScript, IsleScript::c__Isle);
|
Isle* isle = (Isle*) FindWorld(*g_isleScript, IsleScript::c__Isle);
|
||||||
@@ -71,7 +71,7 @@ MxLong GasStationEntity::VTable0x50(MxParam& p_param)
|
|||||||
state->SetUnknown18(0);
|
state->SetUnknown18(0);
|
||||||
|
|
||||||
if (CurrentActor()->GetActorId() != GameState()->GetActorId()) {
|
if (CurrentActor()->GetActorId() != GameState()->GetActorId()) {
|
||||||
((IslePathActor*) CurrentActor())->VTable0xe4();
|
((IslePathActor*) CurrentActor())->Exit();
|
||||||
}
|
}
|
||||||
|
|
||||||
Isle* isle = (Isle*) FindWorld(*g_isleScript, IsleScript::c__Isle);
|
Isle* isle = (Isle*) FindWorld(*g_isleScript, IsleScript::c__Isle);
|
||||||
@@ -95,7 +95,7 @@ MxLong HospitalEntity::VTable0x50(MxParam& p_param)
|
|||||||
act1State->SetUnknown18(0);
|
act1State->SetUnknown18(0);
|
||||||
|
|
||||||
if (CurrentActor()->GetActorId() != GameState()->GetActorId()) {
|
if (CurrentActor()->GetActorId() != GameState()->GetActorId()) {
|
||||||
((IslePathActor*) CurrentActor())->VTable0xe4();
|
((IslePathActor*) CurrentActor())->Exit();
|
||||||
}
|
}
|
||||||
|
|
||||||
Isle* isle = (Isle*) FindWorld(*g_isleScript, IsleScript::c__Isle);
|
Isle* isle = (Isle*) FindWorld(*g_isleScript, IsleScript::c__Isle);
|
||||||
@@ -119,7 +119,7 @@ MxLong PoliceEntity::VTable0x50(MxParam& p_param)
|
|||||||
state->SetUnknown18(0);
|
state->SetUnknown18(0);
|
||||||
|
|
||||||
if (CurrentActor()->GetActorId() != GameState()->GetActorId()) {
|
if (CurrentActor()->GetActorId() != GameState()->GetActorId()) {
|
||||||
((IslePathActor*) CurrentActor())->VTable0xe4();
|
((IslePathActor*) CurrentActor())->Exit();
|
||||||
}
|
}
|
||||||
|
|
||||||
Isle* isle = (Isle*) FindWorld(*g_isleScript, IsleScript::c__Isle);
|
Isle* isle = (Isle*) FindWorld(*g_isleScript, IsleScript::c__Isle);
|
||||||
@@ -141,7 +141,7 @@ MxLong BeachHouseEntity::VTable0x50(MxParam& p_param)
|
|||||||
state->SetUnknown18(0);
|
state->SetUnknown18(0);
|
||||||
|
|
||||||
if (CurrentActor()->GetActorId() != GameState()->GetActorId()) {
|
if (CurrentActor()->GetActorId() != GameState()->GetActorId()) {
|
||||||
((IslePathActor*) CurrentActor())->VTable0xe4();
|
((IslePathActor*) CurrentActor())->Exit();
|
||||||
}
|
}
|
||||||
|
|
||||||
Isle* isle = (Isle*) FindWorld(*g_isleScript, IsleScript::c__Isle);
|
Isle* isle = (Isle*) FindWorld(*g_isleScript, IsleScript::c__Isle);
|
||||||
@@ -162,7 +162,7 @@ MxLong RaceStandsEntity::VTable0x50(MxParam& p_param)
|
|||||||
state->SetUnknown18(0);
|
state->SetUnknown18(0);
|
||||||
|
|
||||||
if (CurrentActor()->GetActorId() != GameState()->GetActorId()) {
|
if (CurrentActor()->GetActorId() != GameState()->GetActorId()) {
|
||||||
((IslePathActor*) CurrentActor())->VTable0xe4();
|
((IslePathActor*) CurrentActor())->Exit();
|
||||||
}
|
}
|
||||||
|
|
||||||
Isle* isle = (Isle*) FindWorld(*g_isleScript, IsleScript::c__Isle);
|
Isle* isle = (Isle*) FindWorld(*g_isleScript, IsleScript::c__Isle);
|
||||||
|
@@ -25,7 +25,7 @@ void DuneBuggy::VTable0x70(float p_float)
|
|||||||
}
|
}
|
||||||
|
|
||||||
// STUB: LEGO1 0x10067fa0
|
// STUB: LEGO1 0x10067fa0
|
||||||
void DuneBuggy::VTable0xe4()
|
void DuneBuggy::Exit()
|
||||||
{
|
{
|
||||||
// TODO
|
// TODO
|
||||||
}
|
}
|
||||||
|
@@ -63,7 +63,7 @@ void Helicopter::CreateState()
|
|||||||
}
|
}
|
||||||
|
|
||||||
// FUNCTION: LEGO1 0x10003360
|
// FUNCTION: LEGO1 0x10003360
|
||||||
void Helicopter::VTable0xe4()
|
void Helicopter::Exit()
|
||||||
{
|
{
|
||||||
if (GameState()->GetCurrentAct() == LegoGameState::e_act1) {
|
if (GameState()->GetCurrentAct() == LegoGameState::e_act1) {
|
||||||
SpawnPlayer(
|
SpawnPlayer(
|
||||||
@@ -73,7 +73,7 @@ void Helicopter::VTable0xe4()
|
|||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
IslePathActor::VTable0xe4();
|
IslePathActor::Exit();
|
||||||
|
|
||||||
if (GameState()->GetCurrentAct() == LegoGameState::e_act1) {
|
if (GameState()->GetCurrentAct() == LegoGameState::e_act1) {
|
||||||
GameState()->SetCurrentArea(LegoGameState::e_copter);
|
GameState()->SetCurrentArea(LegoGameState::e_copter);
|
||||||
@@ -117,7 +117,7 @@ MxU32 Helicopter::HandleClick()
|
|||||||
|
|
||||||
if (CurrentActor()) {
|
if (CurrentActor()) {
|
||||||
if (CurrentActor()->GetActorId() != GameState()->GetActorId()) {
|
if (CurrentActor()->GetActorId() != GameState()->GetActorId()) {
|
||||||
((IslePathActor*) CurrentActor())->VTable0xe4();
|
((IslePathActor*) CurrentActor())->Exit();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -144,7 +144,7 @@ MxU32 Helicopter::HandleClick()
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
VTable0xe0();
|
Enter();
|
||||||
InvokeAction(Extra::ActionType::e_start, m_script, IsleScript::c_HelicopterDashboard, NULL);
|
InvokeAction(Extra::ActionType::e_start, m_script, IsleScript::c_HelicopterDashboard, NULL);
|
||||||
GetCurrentAction().SetObjectId(-1);
|
GetCurrentAction().SetObjectId(-1);
|
||||||
ControlManager()->Register(this);
|
ControlManager()->Register(this);
|
||||||
@@ -179,7 +179,7 @@ MxU32 Helicopter::HandleControl(LegoControlManagerEvent& p_param)
|
|||||||
else if (m_state->GetUnkown8() != 0) {
|
else if (m_state->GetUnkown8() != 0) {
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
VTable0xe4();
|
Exit();
|
||||||
GameState()->SetCurrentArea(LegoGameState::e_unk66);
|
GameState()->SetCurrentArea(LegoGameState::e_unk66);
|
||||||
ret = 1;
|
ret = 1;
|
||||||
break;
|
break;
|
||||||
@@ -248,7 +248,7 @@ MxU32 Helicopter::HandleControl(LegoControlManagerEvent& p_param)
|
|||||||
if (GameState()->GetCurrentAct() == LegoGameState::e_act1) {
|
if (GameState()->GetCurrentAct() == LegoGameState::e_act1) {
|
||||||
((Isle*) CurrentWorld())->SetDestLocation(LegoGameState::e_infomain);
|
((Isle*) CurrentWorld())->SetDestLocation(LegoGameState::e_infomain);
|
||||||
TransitionManager()->StartTransition(MxTransitionManager::e_mosaic, 50, FALSE, FALSE);
|
TransitionManager()->StartTransition(MxTransitionManager::e_mosaic, 50, FALSE, FALSE);
|
||||||
VTable0xe4();
|
Exit();
|
||||||
}
|
}
|
||||||
ret = 1;
|
ret = 1;
|
||||||
break;
|
break;
|
||||||
|
@@ -14,6 +14,7 @@
|
|||||||
#include "mxbackgroundaudiomanager.h"
|
#include "mxbackgroundaudiomanager.h"
|
||||||
#include "mxnotificationparam.h"
|
#include "mxnotificationparam.h"
|
||||||
#include "scripts.h"
|
#include "scripts.h"
|
||||||
|
#include "viewmanager/viewmanager.h"
|
||||||
|
|
||||||
DECOMP_SIZE_ASSERT(IslePathActor, 0x160)
|
DECOMP_SIZE_ASSERT(IslePathActor, 0x160)
|
||||||
DECOMP_SIZE_ASSERT(IslePathActor::SpawnLocation, 0x38)
|
DECOMP_SIZE_ASSERT(IslePathActor::SpawnLocation, 0x38)
|
||||||
@@ -26,8 +27,8 @@ IslePathActor::IslePathActor()
|
|||||||
{
|
{
|
||||||
m_world = NULL;
|
m_world = NULL;
|
||||||
m_unk0x13c = 6.0;
|
m_unk0x13c = 6.0;
|
||||||
m_unk0x15c = 1.0;
|
m_previousVel = 1.0;
|
||||||
m_unk0x158 = NULL;
|
m_previousActor = NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
// FUNCTION: LEGO1 0x1001a280
|
// FUNCTION: LEGO1 0x1001a280
|
||||||
@@ -71,15 +72,15 @@ MxLong IslePathActor::Notify(MxParam& p_param)
|
|||||||
}
|
}
|
||||||
|
|
||||||
// FUNCTION: LEGO1 0x1001a350
|
// FUNCTION: LEGO1 0x1001a350
|
||||||
void IslePathActor::VTable0xe0()
|
void IslePathActor::Enter()
|
||||||
{
|
{
|
||||||
m_roi->SetVisibility(FALSE);
|
m_roi->SetVisibility(FALSE);
|
||||||
if (CurrentActor() != this) {
|
if (CurrentActor() != this) {
|
||||||
m_unk0x15c = NavController()->GetMaxLinearVel();
|
m_previousVel = NavController()->GetMaxLinearVel();
|
||||||
m_unk0x158 = CurrentActor();
|
m_previousActor = CurrentActor();
|
||||||
if (m_unk0x158) {
|
if (m_previousActor) {
|
||||||
m_unk0x158->ResetWorldTransform(FALSE);
|
m_previousActor->ResetWorldTransform(FALSE);
|
||||||
m_unk0x158->SetUserNavFlag(FALSE);
|
m_previousActor->SetUserNavFlag(FALSE);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -96,10 +97,62 @@ void IslePathActor::VTable0xe0()
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// STUB: LEGO1 0x1001a3f0
|
// FUNCTION: LEGO1 0x1001a3f0
|
||||||
void IslePathActor::VTable0xe4()
|
// FUNCTION: BETA10 0x1003669f
|
||||||
|
void IslePathActor::Exit()
|
||||||
{
|
{
|
||||||
// TODO
|
Reset();
|
||||||
|
|
||||||
|
GetViewManager()->Remove(m_roi);
|
||||||
|
GetViewManager()->Add(m_roi);
|
||||||
|
|
||||||
|
ResetWorldTransform(FALSE);
|
||||||
|
SetUserNavFlag(FALSE);
|
||||||
|
|
||||||
|
if (m_previousActor != NULL) {
|
||||||
|
SetCurrentActor(m_previousActor);
|
||||||
|
NavController()->ResetLinearVel(m_previousVel);
|
||||||
|
m_previousActor->ResetWorldTransform(TRUE);
|
||||||
|
m_previousActor->SetUserNavFlag(TRUE);
|
||||||
|
m_previousActor->SetBoundary(m_boundary);
|
||||||
|
|
||||||
|
MxS32 i;
|
||||||
|
for (i = 0; i < m_boundary->GetNumEdges(); i++) {
|
||||||
|
LegoUnknown100db7f4* e = (LegoUnknown100db7f4*) m_boundary->GetEdges()[i];
|
||||||
|
assert(e);
|
||||||
|
|
||||||
|
Mx3DPointFloat local20;
|
||||||
|
e->FUN_1002ddc0(*m_boundary, local20);
|
||||||
|
|
||||||
|
((Vector3&) local20).Mul(m_roi->GetWorldBoundingSphere().Radius());
|
||||||
|
((Vector3&) local20).Add(&GetWorldPosition());
|
||||||
|
|
||||||
|
MxS32 j;
|
||||||
|
for (j = 0; j < m_boundary->GetNumEdges(); j++) {
|
||||||
|
Mx4DPointFloat& normal = *m_boundary->GetEdgeNormal(j);
|
||||||
|
|
||||||
|
if (local20.Dot(&normal, &local20) + normal[3] < -0.001) {
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (m_boundary->GetNumEdges() == j) {
|
||||||
|
m_previousActor->SetLocation(local20, GetWorldDirection(), GetWorldUp(), TRUE);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (m_boundary->GetNumEdges() == i) {
|
||||||
|
m_previousActor->SetLocation(GetWorldPosition(), GetWorldDirection(), GetWorldUp(), TRUE);
|
||||||
|
}
|
||||||
|
|
||||||
|
m_previousActor->SetState(0);
|
||||||
|
GameState()->m_currentArea = LegoGameState::Area::e_unk66;
|
||||||
|
}
|
||||||
|
|
||||||
|
FUN_1001b660();
|
||||||
|
FUN_10010c30();
|
||||||
|
FUN_1003eda0();
|
||||||
}
|
}
|
||||||
|
|
||||||
// FUNCTION: LEGO1 0x1001a700
|
// FUNCTION: LEGO1 0x1001a700
|
||||||
@@ -479,7 +532,7 @@ void IslePathActor::SpawnPlayer(LegoGameState::Area p_area, MxBool p_und, MxU8 p
|
|||||||
m_world = world;
|
m_world = world;
|
||||||
|
|
||||||
if (p_und) {
|
if (p_und) {
|
||||||
VTable0xe0();
|
Enter();
|
||||||
}
|
}
|
||||||
|
|
||||||
m_world->PlaceActor(
|
m_world->PlaceActor(
|
||||||
@@ -563,7 +616,7 @@ void IslePathActor::VTable0xec(MxMatrix p_transform, LegoPathBoundary* p_boundar
|
|||||||
|
|
||||||
m_world = CurrentWorld();
|
m_world = CurrentWorld();
|
||||||
if (p_reset) {
|
if (p_reset) {
|
||||||
VTable0xe0();
|
Enter();
|
||||||
}
|
}
|
||||||
|
|
||||||
m_world->PlaceActor(this);
|
m_world->PlaceActor(this);
|
||||||
|
@@ -24,7 +24,7 @@ void Jetski::VTable0x70(float p_float)
|
|||||||
}
|
}
|
||||||
|
|
||||||
// STUB: LEGO1 0x1007e6f0
|
// STUB: LEGO1 0x1007e6f0
|
||||||
void Jetski::VTable0xe4()
|
void Jetski::Exit()
|
||||||
{
|
{
|
||||||
// TODO
|
// TODO
|
||||||
}
|
}
|
||||||
|
@@ -38,7 +38,7 @@ MxLong JukeBoxEntity::Notify(MxParam& p_param)
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (CurrentActor()->GetActorId() != GameState()->GetActorId()) {
|
if (CurrentActor()->GetActorId() != GameState()->GetActorId()) {
|
||||||
((IslePathActor*) CurrentActor())->VTable0xe4();
|
((IslePathActor*) CurrentActor())->Exit();
|
||||||
}
|
}
|
||||||
|
|
||||||
((Isle*) FindWorld(*g_isleScript, 0))->SetDestLocation(LegoGameState::e_jukeboxw);
|
((Isle*) FindWorld(*g_isleScript, 0))->SetDestLocation(LegoGameState::e_jukeboxw);
|
||||||
|
@@ -25,7 +25,7 @@ void Motocycle::VTable0x70(float p_float)
|
|||||||
}
|
}
|
||||||
|
|
||||||
// STUB: LEGO1 0x10035bc0
|
// STUB: LEGO1 0x10035bc0
|
||||||
void Motocycle::VTable0xe4()
|
void Motocycle::Exit()
|
||||||
{
|
{
|
||||||
// TODO
|
// TODO
|
||||||
}
|
}
|
||||||
|
@@ -51,7 +51,7 @@ undefined4 Pizzeria::HandleClick()
|
|||||||
if (FUN_1003ef60() && m_pizzaMissionState->m_unk0x0c == 0) {
|
if (FUN_1003ef60() && m_pizzaMissionState->m_unk0x0c == 0) {
|
||||||
if (CurrentActor()->GetActorId() != GameState()->GetActorId()) {
|
if (CurrentActor()->GetActorId() != GameState()->GetActorId()) {
|
||||||
if (!CurrentActor()->IsA("SkateBoard")) {
|
if (!CurrentActor()->IsA("SkateBoard")) {
|
||||||
((IslePathActor*) CurrentActor())->VTable0xe4();
|
((IslePathActor*) CurrentActor())->Exit();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -15,7 +15,7 @@ RaceCar::RaceCar()
|
|||||||
RaceCar::~RaceCar()
|
RaceCar::~RaceCar()
|
||||||
{
|
{
|
||||||
ControlManager()->Unregister(this);
|
ControlManager()->Unregister(this);
|
||||||
VTable0xe4();
|
Exit();
|
||||||
}
|
}
|
||||||
|
|
||||||
// STUB: LEGO1 0x10028490
|
// STUB: LEGO1 0x10028490
|
||||||
|
@@ -54,7 +54,7 @@ MxResult SkateBoard::Create(MxDSAction& p_dsAction)
|
|||||||
}
|
}
|
||||||
|
|
||||||
// FUNCTION: LEGO1 0x10010050
|
// FUNCTION: LEGO1 0x10010050
|
||||||
void SkateBoard::VTable0xe4()
|
void SkateBoard::Exit()
|
||||||
{
|
{
|
||||||
if (m_act1state->m_unk0x018 == 3) {
|
if (m_act1state->m_unk0x018 == 3) {
|
||||||
Pizza* pizza = (Pizza*) CurrentWorld()->Find(*g_isleScript, IsleScript::c_Pizza_Actor);
|
Pizza* pizza = (Pizza*) CurrentWorld()->Find(*g_isleScript, IsleScript::c_Pizza_Actor);
|
||||||
@@ -63,7 +63,7 @@ void SkateBoard::VTable0xe4()
|
|||||||
m_unk0x160 = FALSE;
|
m_unk0x160 = FALSE;
|
||||||
}
|
}
|
||||||
|
|
||||||
IslePathActor::VTable0xe4();
|
IslePathActor::Exit();
|
||||||
GameState()->m_currentArea = LegoGameState::Area::e_skateboard;
|
GameState()->m_currentArea = LegoGameState::Area::e_skateboard;
|
||||||
RemoveFromCurrentWorld(*g_isleScript, IsleScript::c_SkateArms_Ctl);
|
RemoveFromCurrentWorld(*g_isleScript, IsleScript::c_SkateArms_Ctl);
|
||||||
RemoveFromCurrentWorld(*g_isleScript, IsleScript::c_SkatePizza_Bitmap);
|
RemoveFromCurrentWorld(*g_isleScript, IsleScript::c_SkatePizza_Bitmap);
|
||||||
@@ -86,12 +86,12 @@ MxU32 SkateBoard::HandleClick()
|
|||||||
|
|
||||||
if (GameState()->GetActorId() != CurrentActor()->GetActorId()) {
|
if (GameState()->GetActorId() != CurrentActor()->GetActorId()) {
|
||||||
if (!CurrentActor()->IsA("SkateBoard")) {
|
if (!CurrentActor()->IsA("SkateBoard")) {
|
||||||
((IslePathActor*) CurrentActor())->VTable0xe4();
|
((IslePathActor*) CurrentActor())->Exit();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!CurrentActor()->IsA("SkateBoard")) {
|
if (!CurrentActor()->IsA("SkateBoard")) {
|
||||||
VTable0xe0();
|
Enter();
|
||||||
InvokeAction(Extra::ActionType::e_start, *g_isleScript, IsleScript::c_SkateDashboard, NULL);
|
InvokeAction(Extra::ActionType::e_start, *g_isleScript, IsleScript::c_SkateDashboard, NULL);
|
||||||
GetCurrentAction().SetObjectId(-1);
|
GetCurrentAction().SetObjectId(-1);
|
||||||
ControlManager()->Register(this);
|
ControlManager()->Register(this);
|
||||||
@@ -111,7 +111,7 @@ MxU32 SkateBoard::HandleControl(LegoControlManagerEvent& p_param)
|
|||||||
MxU32 result = 0;
|
MxU32 result = 0;
|
||||||
|
|
||||||
if (p_param.GetUnknown0x28() == 1 && p_param.GetClickedObjectId() == IsleScript::c_SkateArms_Ctl) {
|
if (p_param.GetUnknown0x28() == 1 && p_param.GetClickedObjectId() == IsleScript::c_SkateArms_Ctl) {
|
||||||
VTable0xe4();
|
Exit();
|
||||||
GameState()->m_currentArea = LegoGameState::Area::e_unk66;
|
GameState()->m_currentArea = LegoGameState::Area::e_unk66;
|
||||||
result = 1;
|
result = 1;
|
||||||
}
|
}
|
||||||
|
@@ -96,7 +96,7 @@ MxU32 TowTrack::HandleClick()
|
|||||||
}
|
}
|
||||||
|
|
||||||
// STUB: LEGO1 0x1004d8f0
|
// STUB: LEGO1 0x1004d8f0
|
||||||
void TowTrack::VTable0xe4()
|
void TowTrack::Exit()
|
||||||
{
|
{
|
||||||
// TODO
|
// TODO
|
||||||
}
|
}
|
||||||
|
@@ -467,7 +467,6 @@ MxBool FUN_1003ef60()
|
|||||||
GameState()->m_currentArea != LegoGameState::e_elevdown &&
|
GameState()->m_currentArea != LegoGameState::e_elevdown &&
|
||||||
GameState()->m_currentArea != LegoGameState::e_garadoor &&
|
GameState()->m_currentArea != LegoGameState::e_garadoor &&
|
||||||
GameState()->m_currentArea != LegoGameState::e_polidoor) {
|
GameState()->m_currentArea != LegoGameState::e_polidoor) {
|
||||||
|
|
||||||
if (CurrentActor() == NULL || !CurrentActor()->IsA("TowTrack")) {
|
if (CurrentActor() == NULL || !CurrentActor()->IsA("TowTrack")) {
|
||||||
if (CurrentActor() == NULL || !CurrentActor()->IsA("Ambulance")) {
|
if (CurrentActor() == NULL || !CurrentActor()->IsA("Ambulance")) {
|
||||||
MxU32 unk0x18 = act1State->GetUnknown18();
|
MxU32 unk0x18 = act1State->GetUnknown18();
|
||||||
|
@@ -1219,7 +1219,7 @@ MxBool Isle::Escape()
|
|||||||
|
|
||||||
if (CurrentActor()) {
|
if (CurrentActor()) {
|
||||||
if (CurrentActor()->GetActorId() != GameState()->GetActorId()) {
|
if (CurrentActor()->GetActorId() != GameState()->GetActorId()) {
|
||||||
((IslePathActor*) CurrentActor())->VTable0xe4();
|
((IslePathActor*) CurrentActor())->Exit();
|
||||||
m_skateboard->SetUnknown0x160(FALSE);
|
m_skateboard->SetUnknown0x160(FALSE);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -1265,7 +1265,7 @@ void Isle::FUN_10033350()
|
|||||||
|
|
||||||
if (CurrentActor()) {
|
if (CurrentActor()) {
|
||||||
if (CurrentActor()->GetActorId() != GameState()->GetActorId()) {
|
if (CurrentActor()->GetActorId() != GameState()->GetActorId()) {
|
||||||
((IslePathActor*) CurrentActor())->VTable0xe4();
|
((IslePathActor*) CurrentActor())->Exit();
|
||||||
m_skateboard->SetUnknown0x160(FALSE);
|
m_skateboard->SetUnknown0x160(FALSE);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user