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
LegoTranInfoList* m_tranInfoList; // 0x20
LegoTranInfoList* m_tranInfoList2; // 0x24
undefined4 m_unk0x28[2]; // 0x28
undefined4 m_unk0x30[2]; // 0x30
MxPresenter* m_unk0x28[2]; // 0x28
MxPresenter* m_unk0x30[2]; // 0x30
undefined m_unk0x38; // 0x38
MxBool m_unk0x39; // 0x39
undefined m_unk0x3a; // 0x3a

View file

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

View file

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

View file

@ -39,8 +39,8 @@ struct LegoTranInfo {
MxBool m_unk0x14; // 0x14
MxBool m_unk0x15; // 0x15
MxU32 m_objectId; // 0x18
undefined4* m_unk0x1c; // 0x1c
undefined4* m_unk0x20; // 0x20
MxPresenter** m_unk0x1c; // 0x1c
MxPresenter** m_unk0x20; // 0x20
LegoAnimMMPresenter* m_presenter; // 0x24
MxBool m_unk0x28; // 0x28
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++) {
m_unk0x28[i] = 0;
m_unk0x30[i] = 0;
m_unk0x28[i] = NULL;
m_unk0x30[i] = NULL;
}
m_unk0x38 = 0;

View file

@ -68,7 +68,7 @@ MxResult LegoAnimMMPresenter::StartAction(MxStreamController* p_controller, MxDS
presenter->SetTickleState(MxPresenter::e_idle);
if (presenter->IsA("LegoAnimPresenter") || presenter->IsA("LegoLoopingAnimPresenter")) {
m_unk0x4c = presenter;
m_unk0x4c = (LegoAnimPresenter*) presenter;
}
success = TRUE;
}
@ -101,10 +101,27 @@ void LegoAnimMMPresenter::EndAction()
// TODO
}
// STUB: LEGO1 0x1004b140
// FUNCTION: LEGO1 0x1004b140
// FUNCTION: BETA10 0x1004c197
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

View file

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