From 54df827219f26f82903e05210e906e4a3b8374a9 Mon Sep 17 00:00:00 2001 From: Christian Semmler Date: Fri, 3 May 2024 07:52:27 -0400 Subject: [PATCH] A bit more refactor --- LEGO1/omni/include/mxdsobject.h | 25 ++-- LEGO1/omni/src/action/mxdsaction.cpp | 175 ++++++++++++--------------- LEGO1/omni/src/action/mxdsobject.cpp | 88 +++++++------- LEGO1/realtime/vector.h | 20 ++- 4 files changed, 145 insertions(+), 163 deletions(-) diff --git a/LEGO1/omni/include/mxdsobject.h b/LEGO1/omni/include/mxdsobject.h index a2bb5ea7..01fad5b3 100644 --- a/LEGO1/omni/include/mxdsobject.h +++ b/LEGO1/omni/include/mxdsobject.h @@ -55,24 +55,25 @@ class MxDSObject : public MxCore { // FUNCTION: ISLE 0x401c40 // FUNCTION: LEGO1 0x10005530 // FUNCTION: BETA10 0x100152e0 - inline virtual void SetAtomId(MxAtomId p_atomId) { this->m_atomId = p_atomId; } // vtable+20; + inline virtual void SetAtomId(MxAtomId p_atomId) { m_atomId = p_atomId; } // vtable+20; - inline Type GetType() const { return (Type) this->m_type; } - inline const char* GetSourceName() const { return this->m_sourceName; } - inline const char* GetObjectName() const { return this->m_objectName; } - inline MxU32 GetObjectId() { return this->m_objectId; } - inline const MxAtomId& GetAtomId() { return this->m_atomId; } - inline MxS16 GetUnknown24() { return this->m_unk0x24; } - inline MxPresenter* GetUnknown28() { return this->m_unk0x28; } + inline Type GetType() const { return (Type) m_type; } + inline const char* GetSourceName() const { return m_sourceName; } + inline const char* GetObjectName() const { return m_objectName; } + inline MxU32 GetObjectId() { return m_objectId; } + inline const MxAtomId& GetAtomId() { return m_atomId; } + inline MxS16 GetUnknown24() { return m_unk0x24; } + inline MxPresenter* GetUnknown28() { return m_unk0x28; } - inline void SetType(Type p_type) { this->m_type = p_type; } + inline void SetType(Type p_type) { m_type = p_type; } // FUNCTION: BETA10 0x100152b0 - inline void SetObjectId(MxU32 p_objectId) { this->m_objectId = p_objectId; } + inline void SetObjectId(MxU32 p_objectId) { m_objectId = p_objectId; } // FUNCTION: BETA10 0x10039570 - inline void SetUnknown24(MxS16 p_unk0x24) { this->m_unk0x24 = p_unk0x24; } - inline void SetUnknown28(MxPresenter* p_unk0x28) { this->m_unk0x28 = p_unk0x28; } + inline void SetUnknown24(MxS16 p_unk0x24) { m_unk0x24 = p_unk0x24; } + + inline void SetUnknown28(MxPresenter* p_unk0x28) { m_unk0x28 = p_unk0x28; } inline void ClearAtom() { m_atomId.Clear(); } diff --git a/LEGO1/omni/src/action/mxdsaction.cpp b/LEGO1/omni/src/action/mxdsaction.cpp index c5affed1..8dc22fcf 100644 --- a/LEGO1/omni/src/action/mxdsaction.cpp +++ b/LEGO1/omni/src/action/mxdsaction.cpp @@ -18,104 +18,87 @@ MxU16 g_sep = TWOCC(',', ' '); // FUNCTION: BETA10 0x1012afd0 MxDSAction::MxDSAction() { - this->m_type = e_action; - this->m_flags = MxDSAction::c_enabled; - this->m_extraLength = 0; - this->m_extraData = NULL; - this->m_startTime = INT_MIN; - this->m_duration = INT_MIN; - this->m_loopCount = -1; - - // TODO: No convenience function used in the beta, but maybe a macro? - { - float max = FLT_MAX; - float* v = &max; - this->m_location.EqualsScalar(v); - } - - { - float max = FLT_MAX; - float* v = &max; - this->m_direction.EqualsScalar(v); - } - - { - float max = FLT_MAX; - float* v = &max; - this->m_up.EqualsScalar(v); - } - - this->m_unk0x84 = NULL; - this->m_unk0x88 = 0; - this->m_origin = NULL; - this->m_unk0x90 = INT_MIN; + m_type = e_action; + m_flags = MxDSAction::c_enabled; + m_extraLength = 0; + m_extraData = NULL; + m_startTime = INT_MIN; + m_duration = INT_MIN; + m_loopCount = -1; + m_location.Fill(FLT_MAX); + m_direction.Fill(FLT_MAX); + m_up.Fill(FLT_MAX); + m_unk0x84 = NULL; + m_unk0x88 = 0; + m_origin = NULL; + m_unk0x90 = INT_MIN; } // FUNCTION: LEGO1 0x100ad940 // FUNCTION: BETA10 0x1012bc50 MxLong MxDSAction::GetDuration() { - return this->m_duration; + return m_duration; } // FUNCTION: LEGO1 0x100ad950 // FUNCTION: BETA10 0x1012bc90 void MxDSAction::SetDuration(MxLong p_duration) { - this->m_duration = p_duration; + m_duration = p_duration; } // FUNCTION: LEGO1 0x100ad960 // FUNCTION: BETA10 0x1012bcc0 MxBool MxDSAction::HasId(MxU32 p_objectId) { - return this->m_objectId == p_objectId; + return m_objectId == p_objectId; } // FUNCTION: LEGO1 0x100ada40 // FUNCTION: BETA10 0x1012bdf0 void MxDSAction::SetUnknown90(MxLong p_unk0x90) { - this->m_unk0x90 = p_unk0x90; + m_unk0x90 = p_unk0x90; } // FUNCTION: LEGO1 0x100ada50 // FUNCTION: BETA10 0x1012be20 MxLong MxDSAction::GetUnknown90() { - return this->m_unk0x90; + return m_unk0x90; } // FUNCTION: LEGO1 0x100ada80 // FUNCTION: BETA10 0x1012b144 MxDSAction::~MxDSAction() { - delete[] this->m_extraData; + delete[] m_extraData; } // FUNCTION: LEGO1 0x100adaf0 // FUNCTION: BETA10 0x1012b1c7 void MxDSAction::CopyFrom(MxDSAction& p_dsAction) { - this->m_objectId = p_dsAction.m_objectId; - this->m_flags = p_dsAction.m_flags; - this->m_startTime = p_dsAction.m_startTime; - this->m_duration = p_dsAction.m_duration; - this->m_loopCount = p_dsAction.m_loopCount; - this->m_location = p_dsAction.m_location; - this->m_direction = p_dsAction.m_direction; - this->m_up = p_dsAction.m_up; + m_objectId = p_dsAction.m_objectId; + m_flags = p_dsAction.m_flags; + m_startTime = p_dsAction.m_startTime; + m_duration = p_dsAction.m_duration; + m_loopCount = p_dsAction.m_loopCount; + m_location = p_dsAction.m_location; + m_direction = p_dsAction.m_direction; + m_up = p_dsAction.m_up; AppendExtra(p_dsAction.m_extraLength, p_dsAction.m_extraData); - this->m_unk0x84 = p_dsAction.m_unk0x84; - this->m_unk0x88 = p_dsAction.m_unk0x88; - this->m_origin = p_dsAction.m_origin; - this->m_unk0x90 = p_dsAction.m_unk0x90; + m_unk0x84 = p_dsAction.m_unk0x84; + m_unk0x88 = p_dsAction.m_unk0x88; + m_origin = p_dsAction.m_origin; + m_unk0x90 = p_dsAction.m_unk0x90; } // FUNCTION: BETA10 0x1012b2b3 MxDSAction::MxDSAction(MxDSAction& p_dsAction) : MxDSObject(p_dsAction) { - this->CopyFrom(p_dsAction); + CopyFrom(p_dsAction); } // FUNCTION: LEGO1 0x100adbd0 @@ -138,9 +121,9 @@ MxU32 MxDSAction::GetSizeOnDisk() size += sizeof(double) * 3; // m_direction size += sizeof(double) * 3; // m_up size += sizeof(m_extraLength); - size += this->m_extraLength; + size += m_extraLength; - this->m_sizeOnDisk = size - MxDSObject::GetSizeOnDisk(); + m_sizeOnDisk = size - MxDSObject::GetSizeOnDisk(); return size; } @@ -154,7 +137,7 @@ MxDSAction& MxDSAction::operator=(MxDSAction& p_dsAction) } MxDSObject::operator=(p_dsAction); - this->CopyFrom(p_dsAction); + CopyFrom(p_dsAction); return *this; } @@ -175,7 +158,7 @@ MxDSAction* MxDSAction::Clone() // FUNCTION: BETA10 0x1012b4ca MxLong MxDSAction::GetElapsedTime() { - return Timer()->GetTime() - this->m_unk0x90; + return Timer()->GetTime() - m_unk0x90; } // FUNCTION: LEGO1 0x100add00 @@ -183,45 +166,45 @@ MxLong MxDSAction::GetElapsedTime() void MxDSAction::MergeFrom(MxDSAction& p_dsAction) { if (p_dsAction.GetStartTime() != INT_MIN) { - this->m_startTime = p_dsAction.GetStartTime(); + m_startTime = p_dsAction.GetStartTime(); } if (p_dsAction.GetDuration() != INT_MIN) { - this->m_duration = p_dsAction.GetDuration(); + m_duration = p_dsAction.GetDuration(); } if (p_dsAction.GetLoopCount() != -1) { - this->m_loopCount = p_dsAction.GetLoopCount(); + m_loopCount = p_dsAction.GetLoopCount(); } if (p_dsAction.GetLocation()[0] != FLT_MAX) { - this->m_location[0] = p_dsAction.GetLocation()[0]; + m_location[0] = p_dsAction.GetLocation()[0]; } if (p_dsAction.GetLocation()[1] != FLT_MAX) { - this->m_location[1] = p_dsAction.GetLocation()[1]; + m_location[1] = p_dsAction.GetLocation()[1]; } if (p_dsAction.GetLocation()[2] != FLT_MAX) { - this->m_location[2] = p_dsAction.GetLocation()[2]; + m_location[2] = p_dsAction.GetLocation()[2]; } if (p_dsAction.GetDirection()[0] != FLT_MAX) { - this->m_direction[0] = p_dsAction.GetDirection()[0]; + m_direction[0] = p_dsAction.GetDirection()[0]; } if (p_dsAction.GetDirection()[1] != FLT_MAX) { - this->m_direction[1] = p_dsAction.GetDirection()[1]; + m_direction[1] = p_dsAction.GetDirection()[1]; } if (p_dsAction.GetDirection()[2] != FLT_MAX) { - this->m_direction[2] = p_dsAction.GetUp()[2]; // This is correct + m_direction[2] = p_dsAction.GetUp()[2]; // This is correct } if (p_dsAction.GetUp()[0] != FLT_MAX) { - this->m_up[0] = p_dsAction.GetUp()[0]; + m_up[0] = p_dsAction.GetUp()[0]; } if (p_dsAction.GetUp()[1] != FLT_MAX) { - this->m_up[1] = p_dsAction.GetUp()[1]; + m_up[1] = p_dsAction.GetUp()[1]; } if (p_dsAction.GetUp()[2] != FLT_MAX) { - this->m_up[2] = p_dsAction.GetUp()[2]; + m_up[2] = p_dsAction.GetUp()[2]; } MxU16 extraLength; @@ -229,9 +212,9 @@ void MxDSAction::MergeFrom(MxDSAction& p_dsAction) p_dsAction.GetExtra(extraLength, extraData); if (extraLength && extraData) { - if (!this->m_extraData || !strncmp("XXX", this->m_extraData, 3)) { - delete[] this->m_extraData; - this->m_extraLength = 0; + if (!m_extraData || !strncmp("XXX", m_extraData, 3)) { + delete[] m_extraData; + m_extraLength = 0; AppendExtra(extraLength, extraData); } } @@ -241,28 +224,28 @@ void MxDSAction::MergeFrom(MxDSAction& p_dsAction) // FUNCTION: BETA10 0x1012b8a9 void MxDSAction::AppendExtra(MxU16 p_extraLength, const char* p_extraData) { - if (this->m_extraData == p_extraData) { + if (m_extraData == p_extraData) { return; } if (p_extraData) { - if (this->m_extraLength) { - char* newExtra = new char[p_extraLength + this->m_extraLength + sizeof(g_sep)]; + if (m_extraLength) { + char* newExtra = new char[p_extraLength + m_extraLength + sizeof(g_sep)]; assert(newExtra); - memcpy(newExtra, this->m_extraData, this->m_extraLength); - memcpy(&newExtra[this->m_extraLength], &g_sep, sizeof(g_sep)); - memcpy(&newExtra[this->m_extraLength + sizeof(g_sep)], p_extraData, p_extraLength); + memcpy(newExtra, m_extraData, m_extraLength); + memcpy(&newExtra[m_extraLength], &g_sep, sizeof(g_sep)); + memcpy(&newExtra[m_extraLength + sizeof(g_sep)], p_extraData, p_extraLength); - this->m_extraLength += p_extraLength + sizeof(g_sep); - delete[] this->m_extraData; - this->m_extraData = newExtra; + m_extraLength += p_extraLength + sizeof(g_sep); + delete[] m_extraData; + m_extraData = newExtra; } else { - this->m_extraData = new char[p_extraLength]; + m_extraData = new char[p_extraLength]; - if (this->m_extraData) { - this->m_extraLength = p_extraLength; - memcpy(this->m_extraData, p_extraData, p_extraLength); + if (m_extraData) { + m_extraLength = p_extraLength; + memcpy(m_extraData, p_extraData, p_extraLength); } else { assert(0); @@ -278,21 +261,21 @@ void MxDSAction::Deserialize(MxU8*& p_source, MxS16 p_unk0x24) MxDSObject::Deserialize(p_source, p_unk0x24); // clang-format off - this->m_flags = *( MxU32*) p_source; p_source += 4; - this->m_startTime = *(MxLong*) p_source; p_source += 4; - this->m_duration = *(MxLong*) p_source; p_source += 4; - this->m_loopCount = *( MxS32*) p_source; p_source += 4; - this->m_location[0] = *(double*) p_source; p_source += 8; - this->m_location[1] = *(double*) p_source; p_source += 8; - this->m_location[2] = *(double*) p_source; p_source += 8; - this->m_direction[0] = *(double*) p_source; p_source += 8; - this->m_direction[1] = *(double*) p_source; p_source += 8; - this->m_direction[2] = *(double*) p_source; p_source += 8; - this->m_up[0] = *(double*) p_source; p_source += 8; - this->m_up[1] = *(double*) p_source; p_source += 8; - this->m_up[2] = *(double*) p_source; p_source += 8; + m_flags = *( MxU32*) p_source; p_source += sizeof(m_flags); + m_startTime = *(MxLong*) p_source; p_source += sizeof(m_startTime); + m_duration = *(MxLong*) p_source; p_source += sizeof(m_duration); + m_loopCount = *( MxS32*) p_source; p_source += sizeof(m_loopCount); + m_location[0] = *(double*) p_source; p_source += sizeof(double); + m_location[1] = *(double*) p_source; p_source += sizeof(double); + m_location[2] = *(double*) p_source; p_source += sizeof(double); + m_direction[0] = *(double*) p_source; p_source += sizeof(double); + m_direction[1] = *(double*) p_source; p_source += sizeof(double); + m_direction[2] = *(double*) p_source; p_source += sizeof(double); + m_up[0] = *(double*) p_source; p_source += sizeof(double); + m_up[1] = *(double*) p_source; p_source += sizeof(double); + m_up[2] = *(double*) p_source; p_source += sizeof(double); - MxU16 extraLength = *( MxU16*) p_source; p_source += 2; + MxU16 extraLength = *( MxU16*) p_source; p_source += sizeof(extraLength); // clang-format on if (extraLength) { diff --git a/LEGO1/omni/src/action/mxdsobject.cpp b/LEGO1/omni/src/action/mxdsobject.cpp index 7dcd0350..ae266fe0 100644 --- a/LEGO1/omni/src/action/mxdsobject.cpp +++ b/LEGO1/omni/src/action/mxdsobject.cpp @@ -22,13 +22,13 @@ DECOMP_SIZE_ASSERT(MxDSObject, 0x2c); // FUNCTION: BETA10 0x101478c0 MxDSObject::MxDSObject() { - this->m_type = e_object; - this->m_sourceName = NULL; - this->m_unk0x14 = 0; - this->m_objectName = NULL; - this->m_objectId = -1; - this->m_unk0x24 = -1; - this->m_unk0x28 = 0; + m_type = e_object; + m_sourceName = NULL; + m_unk0x14 = 0; + m_objectName = NULL; + m_objectId = -1; + m_unk0x24 = -1; + m_unk0x28 = NULL; } // FUNCTION: LEGO1 0x100bf7e0 @@ -43,19 +43,19 @@ MxDSObject::~MxDSObject() // FUNCTION: BETA10 0x10147a45 void MxDSObject::CopyFrom(MxDSObject& p_dsObject) { - this->SetSourceName(p_dsObject.m_sourceName); - this->m_unk0x14 = p_dsObject.m_unk0x14; - this->SetObjectName(p_dsObject.m_objectName); - this->m_objectId = p_dsObject.m_objectId; - this->m_unk0x24 = p_dsObject.m_unk0x24; - this->m_atomId = p_dsObject.m_atomId; - this->m_unk0x28 = p_dsObject.m_unk0x28; + SetSourceName(p_dsObject.m_sourceName); + m_unk0x14 = p_dsObject.m_unk0x14; + SetObjectName(p_dsObject.m_objectName); + m_objectId = p_dsObject.m_objectId; + m_unk0x24 = p_dsObject.m_unk0x24; + m_atomId = p_dsObject.m_atomId; + m_unk0x28 = p_dsObject.m_unk0x28; } // FUNCTION: BETA10 0x10147abf MxDSObject::MxDSObject(MxDSObject& p_dsObject) { - this->CopyFrom(p_dsObject); + CopyFrom(p_dsObject); } // FUNCTION: LEGO1 0x100bf8c0 @@ -66,7 +66,7 @@ MxDSObject& MxDSObject::operator=(MxDSObject& p_dsObject) return *this; } - this->CopyFrom(p_dsObject); + CopyFrom(p_dsObject); return *this; } @@ -74,21 +74,21 @@ MxDSObject& MxDSObject::operator=(MxDSObject& p_dsObject) // FUNCTION: BETA10 0x10147b92 void MxDSObject::SetObjectName(const char* p_objectName) { - if (p_objectName == this->m_objectName) { + if (p_objectName == m_objectName) { return; } - delete[] this->m_objectName; + delete[] m_objectName; if (p_objectName) { - this->m_objectName = new char[strlen(p_objectName) + 1]; + m_objectName = new char[strlen(p_objectName) + 1]; - if (this->m_objectName) { - strcpy(this->m_objectName, p_objectName); + if (m_objectName) { + strcpy(m_objectName, p_objectName); } } else { - this->m_objectName = NULL; + m_objectName = NULL; } } @@ -96,21 +96,21 @@ void MxDSObject::SetObjectName(const char* p_objectName) // FUNCTION: BETA10 0x10147c2e void MxDSObject::SetSourceName(const char* p_sourceName) { - if (p_sourceName == this->m_sourceName) { + if (p_sourceName == m_sourceName) { return; } - delete[] this->m_sourceName; + delete[] m_sourceName; if (p_sourceName) { - this->m_sourceName = new char[strlen(p_sourceName) + 1]; + m_sourceName = new char[strlen(p_sourceName) + 1]; - if (this->m_sourceName) { - strcpy(this->m_sourceName, p_sourceName); + if (m_sourceName) { + strcpy(m_sourceName, p_sourceName); } } else { - this->m_sourceName = NULL; + m_sourceName = NULL; } } @@ -130,25 +130,25 @@ MxU32 MxDSObject::GetSizeOnDisk() sizeOnDisk += 2; - if (this->m_sourceName) { - sizeOnDisk += strlen(this->m_sourceName) + 1; + if (m_sourceName) { + sizeOnDisk += strlen(m_sourceName) + 1; } else { sizeOnDisk++; } - sizeOnDisk += sizeof(this->m_unk0x14); + sizeOnDisk += sizeof(m_unk0x14); - if (this->m_objectName) { - sizeOnDisk += strlen(this->m_objectName) + 1; + if (m_objectName) { + sizeOnDisk += strlen(m_objectName) + 1; } else { sizeOnDisk++; } - sizeOnDisk += sizeof(this->m_objectId); + sizeOnDisk += sizeof(m_objectId); - this->m_sizeOnDisk = sizeOnDisk; + m_sizeOnDisk = sizeOnDisk; return sizeOnDisk; } @@ -156,19 +156,19 @@ MxU32 MxDSObject::GetSizeOnDisk() // FUNCTION: BETA10 0x10147d73 void MxDSObject::Deserialize(MxU8*& p_source, MxS16 p_unk0x24) { - this->SetSourceName((char*) p_source); - p_source += strlen(this->m_sourceName) + 1; + SetSourceName((char*) p_source); + p_source += strlen(m_sourceName) + 1; - this->m_unk0x14 = *(MxU32*) p_source; - p_source += sizeof(this->m_unk0x14); + m_unk0x14 = *(undefined4*) p_source; + p_source += sizeof(m_unk0x14); - this->SetObjectName((char*) p_source); - p_source += strlen(this->m_objectName) + 1; + SetObjectName((char*) p_source); + p_source += strlen(m_objectName) + 1; - this->m_objectId = *(MxU32*) p_source; - p_source += sizeof(this->m_objectId); + m_objectId = *(MxU32*) p_source; + p_source += sizeof(m_objectId); - this->m_unk0x24 = p_unk0x24; + m_unk0x24 = p_unk0x24; } // FUNCTION: LEGO1 0x100bfb30 diff --git a/LEGO1/realtime/vector.h b/LEGO1/realtime/vector.h index acdd6cb3..06d3acc5 100644 --- a/LEGO1/realtime/vector.h +++ b/LEGO1/realtime/vector.h @@ -195,11 +195,11 @@ class Vector3 : public Vector2 { virtual void EqualsCross(float* p_a, Vector3* p_b) { EqualsCrossImpl(p_a, p_b->m_data); } // vtable+0x78 // FUNCTION: LEGO1 0x10003bf0 - virtual void EqualsScalar(float* p_value) + virtual void Fill(const float& p_value) { - m_data[0] = *p_value; - m_data[1] = *p_value; - m_data[2] = *p_value; + m_data[0] = p_value; + m_data[1] = p_value; + m_data[2] = p_value; } // vtable+0x84 // Vector2 overrides @@ -270,8 +270,6 @@ class Vector3 : public Vector2 { return m_data[0] * m_data[0] + m_data[1] * m_data[1] + m_data[2] * m_data[2]; } // vtable+0x40 - inline void Fill(float p_value) { EqualsScalar(&p_value); } - friend class Mx3DPointFloat; }; @@ -374,12 +372,12 @@ class Vector4 : public Vector3 { } // vtable+0x40 // FUNCTION: LEGO1 0x10002b40 - void EqualsScalar(float* p_value) override + void Fill(const float& p_value) override { - m_data[0] = *p_value; - m_data[1] = *p_value; - m_data[2] = *p_value; - m_data[3] = *p_value; + m_data[0] = p_value; + m_data[1] = p_value; + m_data[2] = p_value; + m_data[3] = p_value; } // vtable+0x84 friend class Mx4DPointFloat;