Implement/match LegoAnimMMPresenter::ReadyTickle (#823)

This commit is contained in:
Christian Semmler 2024-04-20 09:52:10 -04:00 committed by GitHub
parent 5021f66de2
commit 0b08b0ae69
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
7 changed files with 40 additions and 22 deletions

View file

@ -112,8 +112,8 @@ class LegoAnimationManager : public MxCore {
MxU32 m_unk0x1c; // 0x1c MxU32 m_unk0x1c; // 0x1c
LegoTranInfoList* m_tranInfoList; // 0x20 LegoTranInfoList* m_tranInfoList; // 0x20
LegoTranInfoList* m_tranInfoList2; // 0x24 LegoTranInfoList* m_tranInfoList2; // 0x24
undefined4 m_unk0x28[2]; // 0x28 MxPresenter* m_unk0x28[2]; // 0x28
undefined4 m_unk0x30[2]; // 0x30 MxPresenter* m_unk0x30[2]; // 0x30
undefined m_unk0x38; // 0x38 undefined m_unk0x38; // 0x38
MxBool m_unk0x39; // 0x39 MxBool m_unk0x39; // 0x39
undefined m_unk0x3a; // 0x3a undefined m_unk0x3a; // 0x3a

View file

@ -3,6 +3,7 @@
#include "mxcompositepresenter.h" #include "mxcompositepresenter.h"
class LegoAnimPresenter;
class LegoWorld; class LegoWorld;
struct LegoTranInfo; struct LegoTranInfo;
@ -43,17 +44,17 @@ class LegoAnimMMPresenter : public MxCompositePresenter {
MxBool FUN_1004b8b0(); MxBool FUN_1004b8b0();
private: private:
MxPresenter* m_unk0x4c; // 0x4c LegoAnimPresenter* m_unk0x4c; // 0x4c
undefined4 m_unk0x50; // 0x50 undefined4 m_unk0x50; // 0x50
undefined4 m_unk0x54; // 0x54 undefined4 m_unk0x54; // 0x54
undefined m_unk0x58; // 0x58 undefined m_unk0x58; // 0x58
MxBool m_unk0x59; // 0x59 MxBool m_unk0x59; // 0x59
MxU32 m_animmanId; // 0x5c MxU32 m_animmanId; // 0x5c
LegoTranInfo* m_tranInfo; // 0x60 LegoTranInfo* m_tranInfo; // 0x60
LegoWorld* m_unk0x64; // 0x64 LegoWorld* m_unk0x64; // 0x64
undefined4 m_unk0x68; // 0x68 undefined4 m_unk0x68; // 0x68
undefined4 m_unk0x6c; // 0x6c undefined4 m_unk0x6c; // 0x6c
undefined4 m_unk0x70; // 0x70 undefined4 m_unk0x70; // 0x70
}; };
#endif // LEGOANIMMMPRESENTER_H #endif // LEGOANIMMMPRESENTER_H

View file

@ -69,7 +69,7 @@ class LegoAnimPresenter : public MxVideoPresenter {
return m_unk0x68; return m_unk0x68;
} // vtable+0x9c } // vtable+0x9c
virtual void VTable0xa0(); // vtable+0xa0 virtual void VTable0xa0(Matrix4*); // vtable+0xa0
void FUN_1006d680(LegoAnimActor* p_actor, MxFloat p_value); void FUN_1006d680(LegoAnimActor* p_actor, MxFloat p_value);

View file

@ -39,8 +39,8 @@ struct LegoTranInfo {
MxBool m_unk0x14; // 0x14 MxBool m_unk0x14; // 0x14
MxBool m_unk0x15; // 0x15 MxBool m_unk0x15; // 0x15
MxU32 m_objectId; // 0x18 MxU32 m_objectId; // 0x18
undefined4* m_unk0x1c; // 0x1c MxPresenter** m_unk0x1c; // 0x1c
undefined4* m_unk0x20; // 0x20 MxPresenter** m_unk0x20; // 0x20
LegoAnimMMPresenter* m_presenter; // 0x24 LegoAnimMMPresenter* m_presenter; // 0x24
MxBool m_unk0x28; // 0x28 MxBool m_unk0x28; // 0x28
MxBool m_unk0x29; // 0x29 MxBool m_unk0x29; // 0x29

View file

@ -156,8 +156,8 @@ MxResult LegoAnimationManager::LoadScriptInfo(MxS32 p_scriptIndex)
} }
for (i = 0; i < (MxS32) _countof(m_unk0x28); i++) { for (i = 0; i < (MxS32) _countof(m_unk0x28); i++) {
m_unk0x28[i] = 0; m_unk0x28[i] = NULL;
m_unk0x30[i] = 0; m_unk0x30[i] = NULL;
} }
m_unk0x38 = 0; m_unk0x38 = 0;

View file

@ -68,7 +68,7 @@ MxResult LegoAnimMMPresenter::StartAction(MxStreamController* p_controller, MxDS
presenter->SetTickleState(MxPresenter::e_idle); presenter->SetTickleState(MxPresenter::e_idle);
if (presenter->IsA("LegoAnimPresenter") || presenter->IsA("LegoLoopingAnimPresenter")) { if (presenter->IsA("LegoAnimPresenter") || presenter->IsA("LegoLoopingAnimPresenter")) {
m_unk0x4c = presenter; m_unk0x4c = (LegoAnimPresenter*) presenter;
} }
success = TRUE; success = TRUE;
} }
@ -101,10 +101,27 @@ void LegoAnimMMPresenter::EndAction()
// TODO // TODO
} }
// STUB: LEGO1 0x1004b140 // FUNCTION: LEGO1 0x1004b140
// FUNCTION: BETA10 0x1004c197
void LegoAnimMMPresenter::ReadyTickle() void LegoAnimMMPresenter::ReadyTickle()
{ {
// TODO ParseExtra();
if (m_tranInfo != NULL && m_tranInfo->m_unk0x15 && m_tranInfo->m_unk0x1c != NULL &&
m_tranInfo->m_unk0x1c[0] != NULL) {
m_tranInfo->m_unk0x1c[0]->Enable(FALSE);
m_tranInfo->m_unk0x1c[0]->Enable(TRUE);
}
if (m_tranInfo != NULL && m_tranInfo->m_unk0x0c != NULL) {
m_unk0x4c->VTable0xa0(m_tranInfo->m_unk0x0c);
}
if (m_unk0x4c != NULL) {
m_unk0x4c->SetTickleState(e_ready);
}
ProgressTickleState(e_starting);
} }
// STUB: LEGO1 0x1004b1c0 // STUB: LEGO1 0x1004b1c0

View file

@ -730,7 +730,7 @@ void LegoAnimPresenter::ParseExtra()
} }
// STUB: LEGO1 0x1006c570 // STUB: LEGO1 0x1006c570
void LegoAnimPresenter::VTable0xa0() void LegoAnimPresenter::VTable0xa0(Matrix4*)
{ {
// TODO // TODO
} }