diff --git a/LEGO1/lego/legoomni/include/legoanimationmanager.h b/LEGO1/lego/legoomni/include/legoanimationmanager.h index e2783630..2a948d7f 100644 --- a/LEGO1/lego/legoomni/include/legoanimationmanager.h +++ b/LEGO1/lego/legoomni/include/legoanimationmanager.h @@ -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 diff --git a/LEGO1/lego/legoomni/include/legoanimmmpresenter.h b/LEGO1/lego/legoomni/include/legoanimmmpresenter.h index a319ab79..3c4869d8 100644 --- a/LEGO1/lego/legoomni/include/legoanimmmpresenter.h +++ b/LEGO1/lego/legoomni/include/legoanimmmpresenter.h @@ -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 diff --git a/LEGO1/lego/legoomni/include/legoanimpresenter.h b/LEGO1/lego/legoomni/include/legoanimpresenter.h index abc4a09d..b503a995 100644 --- a/LEGO1/lego/legoomni/include/legoanimpresenter.h +++ b/LEGO1/lego/legoomni/include/legoanimpresenter.h @@ -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); diff --git a/LEGO1/lego/legoomni/include/legotraninfo.h b/LEGO1/lego/legoomni/include/legotraninfo.h index aa7ba70c..e3c80868 100644 --- a/LEGO1/lego/legoomni/include/legotraninfo.h +++ b/LEGO1/lego/legoomni/include/legotraninfo.h @@ -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 diff --git a/LEGO1/lego/legoomni/src/common/legoanimationmanager.cpp b/LEGO1/lego/legoomni/src/common/legoanimationmanager.cpp index afb0d984..172ac406 100644 --- a/LEGO1/lego/legoomni/src/common/legoanimationmanager.cpp +++ b/LEGO1/lego/legoomni/src/common/legoanimationmanager.cpp @@ -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; diff --git a/LEGO1/lego/legoomni/src/common/legoanimmmpresenter.cpp b/LEGO1/lego/legoomni/src/common/legoanimmmpresenter.cpp index 05c78e09..7b4d5c39 100644 --- a/LEGO1/lego/legoomni/src/common/legoanimmmpresenter.cpp +++ b/LEGO1/lego/legoomni/src/common/legoanimmmpresenter.cpp @@ -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 diff --git a/LEGO1/lego/legoomni/src/video/legoanimpresenter.cpp b/LEGO1/lego/legoomni/src/video/legoanimpresenter.cpp index b66d96a4..a79a77f2 100644 --- a/LEGO1/lego/legoomni/src/video/legoanimpresenter.cpp +++ b/LEGO1/lego/legoomni/src/video/legoanimpresenter.cpp @@ -730,7 +730,7 @@ void LegoAnimPresenter::ParseExtra() } // STUB: LEGO1 0x1006c570 -void LegoAnimPresenter::VTable0xa0() +void LegoAnimPresenter::VTable0xa0(Matrix4*) { // TODO }