From 93257a7c8c72c4b143bb05e16217eae7dd90de24 Mon Sep 17 00:00:00 2001 From: Christian Semmler Date: Sat, 13 Apr 2024 10:11:24 -0400 Subject: [PATCH] Implement/match LegoAnimPresenter::FUN_1006c8a0 (#794) --- .../lego/legoomni/include/legoanimpresenter.h | 2 +- LEGO1/lego/legoomni/include/legoentity.h | 2 ++ .../legoomni/src/video/legoanimpresenter.cpp | 19 ++++++++++++++++--- 3 files changed, 19 insertions(+), 4 deletions(-) diff --git a/LEGO1/lego/legoomni/include/legoanimpresenter.h b/LEGO1/lego/legoomni/include/legoanimpresenter.h index 8c6f5290..bc9292c7 100644 --- a/LEGO1/lego/legoomni/include/legoanimpresenter.h +++ b/LEGO1/lego/legoomni/include/legoanimpresenter.h @@ -92,7 +92,7 @@ class LegoAnimPresenter : public MxVideoPresenter { LegoBool FUN_1006aba0(); LegoBool FUN_1006abb0(LegoTreeNode*, undefined4); void FUN_1006ac90(); - void FUN_1006c8a0(LegoBool); + void FUN_1006c8a0(MxBool p_bool); LegoAnim* m_anim; // 0x64 LegoROI** m_unk0x68; // 0x68 diff --git a/LEGO1/lego/legoomni/include/legoentity.h b/LEGO1/lego/legoomni/include/legoentity.h index 92571dc9..53c6ab3d 100644 --- a/LEGO1/lego/legoomni/include/legoentity.h +++ b/LEGO1/lego/legoomni/include/legoentity.h @@ -80,6 +80,8 @@ class LegoEntity : public MxEntity { inline void SetFlags(MxU8 p_flags) { m_flags = p_flags; } inline void SetFlag(MxU8 p_flag) { m_flags |= p_flag; } inline void ClearFlag(MxU8 p_flag) { m_flags &= ~p_flag; } + inline void SetUnknown0x10Flag(MxU8 p_flag) { m_unk0x10 |= p_flag; } + inline void ClearUnknown0x10Flag(MxU8 p_flag) { m_unk0x10 &= ~p_flag; } protected: void Init(); diff --git a/LEGO1/lego/legoomni/src/video/legoanimpresenter.cpp b/LEGO1/lego/legoomni/src/video/legoanimpresenter.cpp index 64f550b2..2d33163b 100644 --- a/LEGO1/lego/legoomni/src/video/legoanimpresenter.cpp +++ b/LEGO1/lego/legoomni/src/video/legoanimpresenter.cpp @@ -638,10 +638,23 @@ void LegoAnimPresenter::VTable0x90() // TODO } -// STUB: LEGO1 0x1006c8a0 -void LegoAnimPresenter::FUN_1006c8a0(LegoBool) +// FUNCTION: LEGO1 0x1006c8a0 +void LegoAnimPresenter::FUN_1006c8a0(MxBool p_bool) { - // TODO + if (m_unk0x6c != 0 && m_unk0x68 != NULL) { + for (MxU32 i = 1; i <= m_unk0x6c; i++) { + LegoEntity* entity = m_unk0x68[i]->GetEntity(); + + if (entity != NULL) { + if (p_bool) { + entity->SetUnknown0x10Flag(LegoEntity::c_altBit1); + } + else { + entity->ClearUnknown0x10Flag(LegoEntity::c_altBit1); + } + } + } + } } // STUB: LEGO1 0x1006c8f0