From e6d374c8437ddb88448064417dbbe71a738bc9f8 Mon Sep 17 00:00:00 2001 From: Christian Semmler Date: Tue, 12 Aug 2025 10:47:18 -0700 Subject: [PATCH] Updates --- LEGO1/lego/legoomni/src/main/legomain.cpp | 12 ++---------- extensions/include/extensions/siloader.h | 4 ++-- extensions/src/siloader.cpp | 24 +++++++++++++++-------- 3 files changed, 20 insertions(+), 20 deletions(-) diff --git a/LEGO1/lego/legoomni/src/main/legomain.cpp b/LEGO1/lego/legoomni/src/main/legomain.cpp index 25e0fc62..604701eb 100644 --- a/LEGO1/lego/legoomni/src/main/legomain.cpp +++ b/LEGO1/lego/legoomni/src/main/legomain.cpp @@ -474,11 +474,7 @@ LegoWorld* LegoOmni::FindWorld(const MxAtomId& p_atom, MxS32 p_entityid) // STUB: BETA10 0x1008e93e void LegoOmni::DeleteObject(MxDSAction& p_dsAction) { - auto result = Extension::Call( - HandleDelete, - SiLoader::StreamObject{p_dsAction.GetAtomId(), p_dsAction.GetObjectId()} - ) - .value_or(std::nullopt); + auto result = Extension::Call(HandleDelete, p_dsAction).value_or(std::nullopt); if (result && result.value()) { return; } @@ -673,11 +669,7 @@ void LegoOmni::CreateBackgroundAudio() MxResult LegoOmni::Start(MxDSAction* p_dsAction) { { - auto result = Extension::Call( - HandleStart, - SiLoader::StreamObject{p_dsAction->GetAtomId(), p_dsAction->GetObjectId()} - ) - .value_or(std::nullopt); + auto result = Extension::Call(HandleStart, *p_dsAction).value_or(std::nullopt); if (result) { return result.value(); } diff --git a/extensions/include/extensions/siloader.h b/extensions/include/extensions/siloader.h index 2a8b50ca..652c25ee 100644 --- a/extensions/include/extensions/siloader.h +++ b/extensions/include/extensions/siloader.h @@ -17,9 +17,9 @@ class SiLoader { static void Initialize(); static bool Load(); static std::optional HandleFind(StreamObject p_object, LegoWorld* world); - static std::optional HandleStart(StreamObject p_object); + static std::optional HandleStart(MxDSAction& p_action); static std::optional HandleRemove(StreamObject p_object, LegoWorld* world); - static std::optional HandleDelete(StreamObject p_object); + static std::optional HandleDelete(MxDSAction& p_action); static std::map options; static std::vector files; diff --git a/extensions/src/siloader.cpp b/extensions/src/siloader.cpp index 48a010af..d175c6ae 100644 --- a/extensions/src/siloader.cpp +++ b/extensions/src/siloader.cpp @@ -47,22 +47,26 @@ std::optional SiLoader::HandleFind(StreamObject p_object, LegoWorld* wo return std::nullopt; } -std::optional SiLoader::HandleStart(StreamObject p_object) +std::optional SiLoader::HandleStart(MxDSAction& p_action) { + StreamObject object{p_action.GetAtomId(), p_action.GetObjectId()}; + for (const auto& key : startWith) { - if (key.first == p_object) { + if (key.first == object) { MxDSAction action; action.SetAtomId(key.second.first); action.SetObjectId(key.second.second); + action.SetUnknown24(p_action.GetUnknown24()); Start(&action); } } for (const auto& key : replace) { - if (key.first == p_object) { + if (key.first == object) { MxDSAction action; action.SetAtomId(key.second.first); action.SetObjectId(key.second.second); + action.SetUnknown24(p_action.GetUnknown24()); return Start(&action); } } @@ -87,23 +91,27 @@ std::optional SiLoader::HandleRemove(StreamObject p_object, LegoWorld* w return std::nullopt; } -std::optional SiLoader::HandleDelete(StreamObject p_object) +std::optional SiLoader::HandleDelete(MxDSAction& p_action) { + StreamObject object{p_action.GetAtomId(), p_action.GetObjectId()}; + for (const auto& key : removeWith) { - if (key.first == p_object) { + if (key.first == object) { MxDSAction action; action.SetAtomId(key.second.first); action.SetObjectId(key.second.second); - DeleteObject(&action); + action.SetUnknown24(p_action.GetUnknown24()); + DeleteObject(action); } } for (const auto& key : replace) { - if (key.first == p_object) { + if (key.first == object) { MxDSAction action; action.SetAtomId(key.second.first); action.SetObjectId(key.second.second); - DeleteObject(&action); + action.SetUnknown24(p_action.GetUnknown24()); + DeleteObject(action); return TRUE; } }