diff --git a/LEGO1/lego/legoomni/include/legoanimpresenter.h b/LEGO1/lego/legoomni/include/legoanimpresenter.h index d7cc4cb2..44ed14aa 100644 --- a/LEGO1/lego/legoomni/include/legoanimpresenter.h +++ b/LEGO1/lego/legoomni/include/legoanimpresenter.h @@ -81,6 +81,7 @@ public: MxResult FUN_1006afc0(MxMatrix*& p_matrix, float p_und); MxResult FUN_1006b140(LegoROI* p_roi); + void FUN_1006c7a0(); const char* GetActionObjectName(); inline void SetCurrentWorld(LegoWorld* p_currentWorld) { m_currentWorld = p_currentWorld; } diff --git a/LEGO1/lego/legoomni/src/common/legoanimmmpresenter.cpp b/LEGO1/lego/legoomni/src/common/legoanimmmpresenter.cpp index d2e37eba..6b778ad7 100644 --- a/LEGO1/lego/legoomni/src/common/legoanimmmpresenter.cpp +++ b/LEGO1/lego/legoomni/src/common/legoanimmmpresenter.cpp @@ -16,6 +16,7 @@ #include "mxmisc.h" #include "mxnotificationmanager.h" #include "mxobjectfactory.h" +#include "mxstreamer.h" #include "mxtimer.h" #include "mxutilities.h" @@ -465,10 +466,28 @@ MxBool LegoAnimMMPresenter::FUN_1004b6d0(MxLong p_time) return TRUE; } -// STUB: LEGO1 0x1004b840 +// FUNCTION: LEGO1 0x1004b840 +// FUNCTION: BETA10 0x1004d033 void LegoAnimMMPresenter::FUN_1004b840() { - // TODO + MxDSAction* action = m_action; + + if (m_presenter != NULL) { + m_presenter->FUN_1006c7a0(); + } + + for (MxCompositePresenterList::iterator it = m_list.begin(); it != m_list.end(); it++) { + if (*it != m_presenter) { + (*it)->EndAction(); + } + } + + FUN_1004b6d0(0); + EndAction(); + + if (action != NULL) { + Streamer()->FUN_100b98f0(action); + } } // FUNCTION: LEGO1 0x1004b8b0 @@ -478,8 +497,9 @@ MxBool LegoAnimMMPresenter::FUN_1004b8b0() return m_tranInfo != NULL ? m_tranInfo->m_unk0x28 : TRUE; } -// STUB: LEGO1 0x1004b8c0 +// FUNCTION: LEGO1 0x1004b8c0 +// FUNCTION: BETA10 0x1004d13d void LegoAnimMMPresenter::FUN_1004b8c0() { - // TODO + FUN_1004b6d0(0); } diff --git a/LEGO1/lego/legoomni/src/video/legoanimpresenter.cpp b/LEGO1/lego/legoomni/src/video/legoanimpresenter.cpp index 11aa7f40..9d126327 100644 --- a/LEGO1/lego/legoomni/src/video/legoanimpresenter.cpp +++ b/LEGO1/lego/legoomni/src/video/legoanimpresenter.cpp @@ -1100,6 +1100,17 @@ void LegoAnimPresenter::EndAction() MxVideoPresenter::EndAction(); } +// FUNCTION: LEGO1 0x1006c7a0 +// FUNCTION: BETA10 0x10051da6 +void LegoAnimPresenter::FUN_1006c7a0() +{ + if (m_anim != NULL) { + FUN_1006b9a0(m_anim, m_anim->GetDuration(), m_unk0x78); + } + + m_unk0x95 = TRUE; +} + // FUNCTION: LEGO1 0x1006c7d0 // FUNCTION: BETA10 0x10051e07 void LegoAnimPresenter::VTable0x8c()