From 592ede1c7bfea6b73ab87f5728b58a58b0f4dec7 Mon Sep 17 00:00:00 2001 From: MS Date: Sun, 1 Oct 2023 09:06:29 -0400 Subject: [PATCH] LegoEntity::Reset (#152) --- LEGO1/legoentity.cpp | 31 ++++++++++++++++++++++++++++--- LEGO1/legoentity.h | 15 ++++++++++++++- LEGO1/mxentity.cpp | 4 +--- LEGO1/mxentity.h | 3 +-- 4 files changed, 44 insertions(+), 9 deletions(-) diff --git a/LEGO1/legoentity.cpp b/LEGO1/legoentity.cpp index d2062946..105b4b5f 100644 --- a/LEGO1/legoentity.cpp +++ b/LEGO1/legoentity.cpp @@ -9,7 +9,7 @@ DECOMP_SIZE_ASSERT(LegoEntity, 0x68) // OFFSET: LEGO1 0x1000c290 LegoEntity::~LegoEntity() { - Destroy(); + Destroy(TRUE); } // OFFSET: LEGO1 0x100114f0 STUB @@ -20,6 +20,26 @@ MxLong LegoEntity::Notify(MxParam &p) return 0; } +// OFFSET: LEGO1 0x100105f0 +void LegoEntity::Reset() +{ + float value = 0.0f; + m_vec1.EqualsScalar(&value); + + value = 0.0f; + m_vec2.EqualsScalar(&value); + + m_unk50 = 0; + m_unk54 = 0; + m_unk58 = 0; + m_actionArgString = NULL; + m_unk10 = 0; + m_unk11 = 0; + m_actionType = ExtraActionType_unknown; + m_actionArgNumber = -1; + m_unk59 = 4; +} + // OFFSET: LEGO1 0x100107e0 STUB void LegoEntity::vtable18() { @@ -27,9 +47,14 @@ void LegoEntity::vtable18() } // OFFSET: LEGO1 0x10010810 STUB -void LegoEntity::Destroy() +void LegoEntity::Destroy(MxBool) { - // TODO + if (m_unk54) { + // TODO + } + + delete[] m_actionArgString; + Reset(); } // OFFSET: LEGO1 0x10010e10 diff --git a/LEGO1/legoentity.h b/LEGO1/legoentity.h index 9fbbb5bb..79acca27 100644 --- a/LEGO1/legoentity.h +++ b/LEGO1/legoentity.h @@ -2,7 +2,9 @@ #define LEGOENTITY_H #include "mxentity.h" +#include "mxvector.h" #include "extra.h" +#include "decomp.h" // VTABLE 0x100d4858 // SIZE 0x68 (probably) @@ -33,10 +35,21 @@ class LegoEntity : public MxEntity } virtual void vtable18(); // vtable+0x18 - virtual void Destroy(); // vtable+0x1c + virtual void Destroy(MxBool); // vtable+0x1c virtual void ParseAction(char *); // vtable+0x20 protected: + void Reset(); + + undefined m_unk10; + undefined m_unk11; + MxVector3Data m_vec1; // 0x14 + MxVector3Data m_vec2; // 0x28 + MxVector3Data m_vec3; // 0x3c + undefined4 m_unk50; + undefined4 m_unk54; + undefined m_unk58; + undefined m_unk59; // For tokens from the extra string that look like this: // "Action:openram;\lego\scripts\Race\CarRaceR;0" ExtraActionType m_actionType; // 0x5c diff --git a/LEGO1/mxentity.cpp b/LEGO1/mxentity.cpp index 54e854ab..585150f1 100644 --- a/LEGO1/mxentity.cpp +++ b/LEGO1/mxentity.cpp @@ -1,8 +1,6 @@ #include "mxentity.h" -// Size subject to change. It's not clear yet which members belong to -// MxEntity and which belong only the subclasses. -DECOMP_SIZE_ASSERT(MxEntity, 0x5c) +DECOMP_SIZE_ASSERT(MxEntity, 0x10) // OFFSET: LEGO1 0x1001d190 MxEntity::MxEntity() diff --git a/LEGO1/mxentity.h b/LEGO1/mxentity.h index 3d73292e..44afd9c4 100644 --- a/LEGO1/mxentity.h +++ b/LEGO1/mxentity.h @@ -7,7 +7,7 @@ #include "mxtypes.h" // VTABLE 0x100d5390 -// SIZE 0x68 or less +// SIZE 0x10 class MxEntity : public MxCore { public: @@ -31,7 +31,6 @@ class MxEntity : public MxCore private: MxS32 m_mxEntityId; // 0x8 MxAtomId m_atom; // 0xc - undefined m_unk10[76]; }; #endif // MXENTITY_H