diff --git a/LEGO1/lego/legoomni/include/legoanimationmanager.h b/LEGO1/lego/legoomni/include/legoanimationmanager.h index 1f93f907..d0a0eb40 100644 --- a/LEGO1/lego/legoomni/include/legoanimationmanager.h +++ b/LEGO1/lego/legoomni/include/legoanimationmanager.h @@ -70,7 +70,7 @@ public: MxBool FindVehicle(const char* p_name, MxU32& p_index); MxResult ReadAnimInfo(LegoFile* p_file, AnimInfo* p_info); MxResult ReadModelInfo(LegoFile* p_file, ModelInfo* p_info); - void FUN_100603c0(); + void DeleteAnimations(); MxResult StartEntityAction(MxDSAction& p_dsAction, LegoEntity* p_entity); void FUN_10060570(MxBool); undefined4 FUN_10060dc0( diff --git a/LEGO1/lego/legoomni/src/common/legoanimationmanager.cpp b/LEGO1/lego/legoomni/src/common/legoanimationmanager.cpp index 41616e41..c2a5d7a4 100644 --- a/LEGO1/lego/legoomni/src/common/legoanimationmanager.cpp +++ b/LEGO1/lego/legoomni/src/common/legoanimationmanager.cpp @@ -173,7 +173,7 @@ MxResult LegoAnimationManager::LoadScriptInfo(MxS32 p_scriptIndex) m_animState->FUN_10065240(m_animCount, m_anims, m_unk0x3fc); } - FUN_100603c0(); + DeleteAnimations(); LegoFile file; @@ -288,7 +288,7 @@ MxResult LegoAnimationManager::LoadScriptInfo(MxS32 p_scriptIndex) done: if (result == FAILURE) { - FUN_100603c0(); + DeleteAnimations(); } return result; @@ -408,10 +408,29 @@ done: return result; } -// STUB: LEGO1 0x100603c0 -void LegoAnimationManager::FUN_100603c0() +// FUNCTION: LEGO1 0x100603c0 +void LegoAnimationManager::DeleteAnimations() { - // TODO + undefined unk0x42b = m_unk0x42b; + + if (m_anims != NULL) { + for (MxS32 i = 0; i < m_animCount; i++) { + delete m_anims[i].m_animName; + + if (m_anims[i].m_models != NULL) { + for (MxS32 j = 0; j < m_anims[i].m_modelCount; j++) { + delete m_anims[i].m_models[j].m_modelName; + } + + delete m_anims[i].m_models; + } + } + + delete m_anims; + } + + Init(); + m_unk0x42b = unk0x42b; } // STUB: LEGO1 0x10060570