From 528d647b790f9bd589aa888f29348a26980720cf Mon Sep 17 00:00:00 2001 From: Christian Semmler Date: Tue, 26 Mar 2024 13:37:08 -0400 Subject: [PATCH] Add missing annotations, STUB LegoPathBoundary --- LEGO1/lego/legoomni/include/legopathboundary.h | 4 ++++ LEGO1/lego/legoomni/src/paths/legoanimactor.cpp | 17 +++++++++++++---- .../legoomni/src/paths/legopathboundary.cpp | 2 +- LEGO1/lego/sources/roi/legoroi.cpp | 2 +- LEGO1/lego/sources/roi/legoroi.h | 2 +- 5 files changed, 20 insertions(+), 7 deletions(-) diff --git a/LEGO1/lego/legoomni/include/legopathboundary.h b/LEGO1/lego/legoomni/include/legopathboundary.h index f61493e3..11a97230 100644 --- a/LEGO1/lego/legoomni/include/legopathboundary.h +++ b/LEGO1/lego/legoomni/include/legopathboundary.h @@ -9,11 +9,15 @@ struct LegoPathBoundaryComparator { MxBool operator()(const undefined*, const undefined*) const { return 0; } }; +// VTABLE: LEGO1 0x100d8618 // SIZE 0x74 class LegoPathBoundary : public LegoWEGEdge { public: LegoPathBoundary(); + // STUB: LEGO1 0x10047a80 + // LegoPathBoundary::`scalar deleting destructor' + private: map m_unk0x54; // 0x54 map m_unk0x64; // 0x64 diff --git a/LEGO1/lego/legoomni/src/paths/legoanimactor.cpp b/LEGO1/lego/legoomni/src/paths/legoanimactor.cpp index fd412253..71745847 100644 --- a/LEGO1/lego/legoomni/src/paths/legoanimactor.cpp +++ b/LEGO1/lego/legoomni/src/paths/legoanimactor.cpp @@ -136,6 +136,7 @@ MxResult LegoAnimActor::FUN_1001c360(float p_und, Matrix4& p_transform) MxResult LegoAnimActor::FUN_1001c450(LegoAnim* p_animTreePtr, float p_unk0x00, LegoROI** p_roiMap, MxU32 p_numROIs) { LegoAnimActorStruct* laas = new LegoAnimActorStruct(p_unk0x00, p_animTreePtr, p_roiMap, p_numROIs); + for (vector::iterator it = m_animMaps.begin(); it != m_animMaps.end(); it++) { if (p_unk0x00 < (*it)->m_unk0x00) { m_animMaps.insert(it, laas); @@ -143,6 +144,7 @@ MxResult LegoAnimActor::FUN_1001c450(LegoAnim* p_animTreePtr, float p_unk0x00, L return SUCCESS; } } + m_animMaps.push_back(laas); SetWorldSpeed(m_worldSpeed); return SUCCESS; @@ -154,6 +156,7 @@ void LegoAnimActor::ClearMaps() for (MxU32 i = 0; i < m_animMaps.size(); i++) { delete m_animMaps[i]; } + m_animMaps.clear(); m_curAnim = -1; } @@ -189,19 +192,25 @@ void LegoAnimActor::SetWorldSpeed(MxFloat p_worldSpeed) void LegoAnimActor::ParseAction(char* p_extra) { LegoPathActor::ParseAction(p_extra); + LegoWorld* world = CurrentWorld(); - char value[0x100]; + char value[256]; + if (world) { if (KeyValueStringParse(value, g_strANIMATION, p_extra)) { char* token = strtok(value, g_parseExtraTokens); + while (token) { - LegoAnimPresenter* p = (LegoAnimPresenter*) world->Find("LegoAnimPresenter", token); - if (p) { + LegoAnimPresenter* presenter = (LegoAnimPresenter*) world->Find("LegoAnimPresenter", token); + + if (presenter != NULL) { token = strtok(NULL, g_parseExtraTokens); + if (token) { - p->FUN_1006d680(this, atof(token)); + presenter->FUN_1006d680(this, atof(token)); } } + token = strtok(NULL, g_parseExtraTokens); } } diff --git a/LEGO1/lego/legoomni/src/paths/legopathboundary.cpp b/LEGO1/lego/legoomni/src/paths/legopathboundary.cpp index 3ac97986..641ece72 100644 --- a/LEGO1/lego/legoomni/src/paths/legopathboundary.cpp +++ b/LEGO1/lego/legoomni/src/paths/legopathboundary.cpp @@ -4,7 +4,7 @@ DECOMP_SIZE_ASSERT(LegoPathBoundary, 0x74) -// FUNCTION: LEGO1 0x10056a70 +// STUB: LEGO1 0x10056a70 LegoPathBoundary::LegoPathBoundary() { } diff --git a/LEGO1/lego/sources/roi/legoroi.cpp b/LEGO1/lego/sources/roi/legoroi.cpp index 12a5335d..36e5551e 100644 --- a/LEGO1/lego/sources/roi/legoroi.cpp +++ b/LEGO1/lego/sources/roi/legoroi.cpp @@ -408,7 +408,7 @@ LegoResult LegoROI::FUN_100a8da0(LegoTreeNode* p_node, const Matrix4& p_matrix, } // STUB: LEGO1 0x100a8e80 -void LegoROI::FUN_100a8e80(LegoTreeNode*, Matrix4&, LegoS32, LegoROI**) +void LegoROI::FUN_100a8e80(LegoTreeNode*, Matrix4&, LegoTime, LegoROI**) { // TODO } diff --git a/LEGO1/lego/sources/roi/legoroi.h b/LEGO1/lego/sources/roi/legoroi.h index 163fdc30..32ce1371 100644 --- a/LEGO1/lego/sources/roi/legoroi.h +++ b/LEGO1/lego/sources/roi/legoroi.h @@ -32,7 +32,7 @@ class LegoROI : public ViewROI { ); LegoROI* FUN_100a8ce0(const LegoChar* p_name, LegoROI* p_roi); LegoResult FUN_100a8da0(LegoTreeNode* p_node, const Matrix4& p_matrix, LegoTime p_time, LegoROI* p_roi); - static void FUN_100a8e80(LegoTreeNode*, Matrix4&, LegoS32, LegoROI**); + static void FUN_100a8e80(LegoTreeNode*, Matrix4&, LegoTime, LegoROI**); LegoResult SetFrame(LegoAnim* p_anim, LegoTime p_time); LegoResult FUN_100a9170(LegoFloat p_red, LegoFloat p_green, LegoFloat p_blue, LegoFloat p_alpha); LegoResult FUN_100a9210(LegoTextureInfo* p_textureInfo);