Implement/match LegoPathController::AddActor and RemoveActor (#915)

* Implement/match LegoPathController::AddActor and RemoveActor

* Fix types
This commit is contained in:
Christian Semmler
2024-05-13 06:46:59 -04:00
committed by GitHub
parent 91fe09af3c
commit 5f34d2e877
14 changed files with 145 additions and 69 deletions

View File

@@ -151,7 +151,7 @@ LegoAnimationManager::~LegoAnimationManager()
LegoPathActor* actor = CharacterManager()->GetActor(roi->GetName());
if (actor != NULL && actor->GetController() != NULL && CurrentWorld() != NULL) {
CurrentWorld()->FUN_1001fc80((IslePathActor*) actor);
CurrentWorld()->RemovePathActor(actor);
actor->SetController(NULL);
}
@@ -237,7 +237,7 @@ void LegoAnimationManager::Suspend()
LegoPathActor* actor = CharacterManager()->GetActor(roi->GetName());
if (actor != NULL && actor->GetController() != NULL) {
actor->GetController()->FUN_10046770(actor);
actor->GetController()->RemoveActor(actor);
actor->SetController(NULL);
}
@@ -862,7 +862,7 @@ MxResult LegoAnimationManager::StartEntityAction(MxDSAction& p_dsAction, LegoEnt
LegoPathController* controller = actor->GetController();
if (controller) {
controller->FUN_10046770(actor);
controller->RemoveActor(actor);
actor->SetController(NULL);
for (MxS32 i = 0; i < (MxS32) _countof(m_extras); i++) {
@@ -1191,7 +1191,7 @@ MxResult LegoAnimationManager::Tickle()
LegoPathActor* actor = CharacterManager()->GetActor(roi->GetName());
if (actor != NULL && actor->GetController() != NULL) {
actor->GetController()->FUN_10046770(actor);
actor->GetController()->RemoveActor(actor);
actor->SetController(NULL);
}
@@ -1451,7 +1451,7 @@ void LegoAnimationManager::FUN_10062580(AnimInfo& p_info)
LegoPathController* controller = actor->GetController();
if (controller) {
controller->FUN_10046770(actor);
controller->RemoveActor(actor);
actor->SetController(NULL);
for (MxS32 i = 0; i < (MxS32) _countof(m_extras); i++) {
@@ -1560,7 +1560,7 @@ void LegoAnimationManager::PurgeExtra(MxBool p_und)
LegoPathActor* actor = CharacterManager()->GetActor(roi->GetName());
if (actor != NULL && actor->GetController() != NULL) {
actor->GetController()->FUN_10046770(actor);
actor->GetController()->RemoveActor(actor);
actor->SetController(NULL);
}

View File

@@ -432,7 +432,7 @@ MxBool LegoAnimMMPresenter::FUN_1004b6d0(MxLong p_time)
undefined4 und = 1;
if (m_presenter != NULL) {
m_unk0x64->FUN_1001fc80(actor);
m_unk0x64->RemovePathActor(actor);
if (m_tranInfo->m_unk0x29) {
Mx3DPointFloat position, direction;
@@ -451,7 +451,7 @@ MxBool LegoAnimMMPresenter::FUN_1004b6d0(MxLong p_time)
if (und != 0) {
viewROI->WrappedSetLocalTransform(m_tranInfo->m_unk0x2c);
VideoManager()->Get3DManager()->Moved(*viewROI);
m_unk0x64->FUN_1001fa70(actor);
m_unk0x64->AddPathActor(actor);
}
if (m_tranInfo->m_unk0x29) {

View File

@@ -1100,28 +1100,28 @@ void LegoGameState::Init()
Helicopter* copter = (Helicopter*) isle->Find(*g_copterScript, CopterScript::c_Helicopter_Actor);
if (copter) {
isle->FUN_1001fc80(copter);
isle->RemovePathActor(copter);
isle->VTable0x6c(copter);
delete copter;
}
DuneBuggy* dunebuggy = (DuneBuggy*) isle->Find(*g_dunecarScript, DunecarScript::c_DuneBugy_Actor);
if (dunebuggy) {
isle->FUN_1001fc80(dunebuggy);
isle->RemovePathActor(dunebuggy);
isle->VTable0x6c(dunebuggy);
delete dunebuggy;
}
Jetski* jetski = (Jetski*) isle->Find(*g_jetskiScript, JetskiScript::c_Jetski_Actor);
if (jetski) {
isle->FUN_1001fc80(jetski);
isle->RemovePathActor(jetski);
isle->VTable0x6c(jetski);
delete jetski;
}
RaceCar* racecar = (RaceCar*) isle->Find(*g_racecarScript, RacecarScript::c_RaceCar_Actor);
if (racecar) {
isle->FUN_1001fc80(racecar);
isle->RemovePathActor(racecar);
isle->VTable0x6c(racecar);
delete racecar;
}