Use reference on MxDSObject Deserialize calls (#767)

This commit is contained in:
MS
2024-04-03 12:06:53 -04:00
committed by GitHub
parent 56827fb2c4
commit ce134e79ef
17 changed files with 74 additions and 65 deletions

View File

@@ -221,7 +221,7 @@ void MxDSAction::AppendData(MxU16 p_extraLength, const char* p_extraData)
}
// FUNCTION: LEGO1 0x100adf70
void MxDSAction::Deserialize(MxU8** p_source, MxS16 p_unk0x24)
void MxDSAction::Deserialize(MxU8*& p_source, MxS16 p_unk0x24)
{
MxDSObject::Deserialize(p_source, p_unk0x24);
@@ -239,9 +239,11 @@ void MxDSAction::Deserialize(MxU8** p_source, MxS16 p_unk0x24)
GetDouble(p_source, this->m_up[1]);
GetDouble(p_source, this->m_up[2]);
MxU16 extraLength = GetScalar((MxU16**) p_source);
MxU16 extraLength = *(MxU16*) p_source;
p_source += 2;
if (extraLength) {
AppendData(extraLength, (char*) *p_source);
*p_source += extraLength;
AppendData(extraLength, (char*) p_source);
p_source += extraLength;
}
}

View File

@@ -104,11 +104,11 @@ MxU32 MxDSMediaAction::GetSizeOnDisk()
}
// FUNCTION: LEGO1 0x100c8f60
void MxDSMediaAction::Deserialize(MxU8** p_source, MxS16 p_unk0x24)
void MxDSMediaAction::Deserialize(MxU8*& p_source, MxS16 p_unk0x24)
{
MxDSAction::Deserialize(p_source, p_unk0x24);
GetString(p_source, &this->m_mediaSrcPath, this, &MxDSMediaAction::CopyMediaSrcPath);
GetString(p_source, this->m_mediaSrcPath, this, &MxDSMediaAction::CopyMediaSrcPath);
GetScalar(p_source, this->m_unk0x9c.m_unk0x00);
GetScalar(p_source, this->m_unk0x9c.m_unk0x04);
GetScalar(p_source, this->m_framesPerSecond);

View File

@@ -129,29 +129,29 @@ MxU32 MxDSMultiAction::GetSizeOnDisk()
}
// FUNCTION: LEGO1 0x100ca7b0
void MxDSMultiAction::Deserialize(MxU8** p_source, MxS16 p_unk0x24)
void MxDSMultiAction::Deserialize(MxU8*& p_source, MxS16 p_unk0x24)
{
MxDSAction::Deserialize(p_source, p_unk0x24);
MxU32 extraFlag = *(MxU32*) (*p_source + 4) & 1;
*p_source += 12;
MxU32 extraFlag = *(MxU32*) (p_source + 4) & 1;
p_source += 12;
MxU32 count = *(MxU32*) *p_source;
*p_source += sizeof(count);
MxU32 count = *(MxU32*) p_source;
p_source += sizeof(count);
if (count) {
while (count--) {
MxU32 extraFlag = *(MxU32*) (*p_source + 4) & 1;
*p_source += 8;
MxU32 extraFlag = *(MxU32*) (p_source + 4) & 1;
p_source += 8;
MxDSAction* action = (MxDSAction*) DeserializeDSObjectDispatch(p_source, p_unk0x24);
*p_source += extraFlag;
p_source += extraFlag;
this->m_actions->Append(action);
}
}
*p_source += extraFlag;
p_source += extraFlag;
}
// FUNCTION: LEGO1 0x100ca8c0

View File

@@ -131,21 +131,21 @@ MxU32 MxDSObject::GetSizeOnDisk()
}
// FUNCTION: LEGO1 0x100bfa20
void MxDSObject::Deserialize(MxU8** p_source, MxS16 p_unk0x24)
void MxDSObject::Deserialize(MxU8*& p_source, MxS16 p_unk0x24)
{
GetString(p_source, &this->m_sourceName, this, &MxDSObject::SetSourceName);
GetString(p_source, this->m_sourceName, this, &MxDSObject::SetSourceName);
GetScalar(p_source, this->m_unk0x14);
GetString(p_source, &this->m_objectName, this, &MxDSObject::SetObjectName);
GetString(p_source, this->m_objectName, this, &MxDSObject::SetObjectName);
GetScalar(p_source, this->m_objectId);
this->m_unk0x24 = p_unk0x24;
}
// FUNCTION: LEGO1 0x100bfb30
MxDSObject* DeserializeDSObjectDispatch(MxU8** p_source, MxS16 p_flags)
MxDSObject* DeserializeDSObjectDispatch(MxU8*& p_source, MxS16 p_flags)
{
MxU16 type = *(MxU16*) *p_source;
*p_source += 2;
MxU16 type = *(MxU16*) p_source;
p_source += 2;
MxDSObject* obj = NULL;

View File

@@ -81,15 +81,15 @@ MxU32 MxDSSelectAction::GetSizeOnDisk()
}
// FUNCTION: LEGO1 0x100cbf60
void MxDSSelectAction::Deserialize(MxU8** p_source, MxS16 p_unk0x24)
void MxDSSelectAction::Deserialize(MxU8*& p_source, MxS16 p_unk0x24)
{
MxString string;
MxDSAction::Deserialize(p_source, p_unk0x24);
MxU32 extraFlag = *(MxU32*) (*p_source + 4) & 1;
*p_source += 12;
MxU32 extraFlag = *(MxU32*) (p_source + 4) & 1;
p_source += 12;
this->m_unk0x9c = (char*) *p_source;
this->m_unk0x9c = (char*) p_source;
if (!strnicmp(this->m_unk0x9c.GetData(), "RANDOM_", strlen("RANDOM_"))) {
char buffer[10];
@@ -100,13 +100,13 @@ void MxDSSelectAction::Deserialize(MxU8** p_source, MxS16 p_unk0x24)
string = itoa((MxS16) random, buffer, 10);
}
else {
string = VariableTable()->GetVariable((char*) *p_source);
string = VariableTable()->GetVariable((char*) p_source);
}
*p_source += strlen((char*) *p_source) + 1;
p_source += strlen((char*) p_source) + 1;
MxU32 count = *(MxU32*) *p_source;
*p_source += sizeof(MxU32);
MxU32 count = *(MxU32*) p_source;
p_source += sizeof(MxU32);
if (count) {
MxS32 index = -1;
@@ -114,17 +114,17 @@ void MxDSSelectAction::Deserialize(MxU8** p_source, MxS16 p_unk0x24)
MxU32 i;
for (i = 0; i < count; i++) {
if (!strcmp(string.GetData(), (char*) *p_source)) {
if (!strcmp(string.GetData(), (char*) p_source)) {
index = i;
}
this->m_unk0xac->Append((char*) *p_source);
*p_source += strlen((char*) *p_source) + 1;
this->m_unk0xac->Append((char*) p_source);
p_source += strlen((char*) p_source) + 1;
}
for (i = 0; i < count; i++) {
MxU32 extraFlag = *(MxU32*) (*p_source + 4) & 1;
*p_source += 8;
MxU32 extraFlag = *(MxU32*) (p_source + 4) & 1;
p_source += 8;
MxDSAction* action = (MxDSAction*) DeserializeDSObjectDispatch(p_source, p_unk0x24);
@@ -135,9 +135,9 @@ void MxDSSelectAction::Deserialize(MxU8** p_source, MxS16 p_unk0x24)
delete action;
}
*p_source += extraFlag;
p_source += extraFlag;
}
}
*p_source += extraFlag;
p_source += extraFlag;
}

View File

@@ -48,7 +48,7 @@ MxDSAction* MxDSSound::Clone()
}
// FUNCTION: LEGO1 0x100c95a0
void MxDSSound::Deserialize(MxU8** p_source, MxS16 p_unk0x24)
void MxDSSound::Deserialize(MxU8*& p_source, MxS16 p_unk0x24)
{
MxDSMediaAction::Deserialize(p_source, p_unk0x24);