This commit is contained in:
Christian Semmler 2025-08-12 10:47:18 -07:00
parent 06092dfea4
commit e6d374c843
3 changed files with 20 additions and 20 deletions

View File

@ -474,11 +474,7 @@ LegoWorld* LegoOmni::FindWorld(const MxAtomId& p_atom, MxS32 p_entityid)
// STUB: BETA10 0x1008e93e // STUB: BETA10 0x1008e93e
void LegoOmni::DeleteObject(MxDSAction& p_dsAction) void LegoOmni::DeleteObject(MxDSAction& p_dsAction)
{ {
auto result = Extension<SiLoader>::Call( auto result = Extension<SiLoader>::Call(HandleDelete, p_dsAction).value_or(std::nullopt);
HandleDelete,
SiLoader::StreamObject{p_dsAction.GetAtomId(), p_dsAction.GetObjectId()}
)
.value_or(std::nullopt);
if (result && result.value()) { if (result && result.value()) {
return; return;
} }
@ -673,11 +669,7 @@ void LegoOmni::CreateBackgroundAudio()
MxResult LegoOmni::Start(MxDSAction* p_dsAction) MxResult LegoOmni::Start(MxDSAction* p_dsAction)
{ {
{ {
auto result = Extension<SiLoader>::Call( auto result = Extension<SiLoader>::Call(HandleStart, *p_dsAction).value_or(std::nullopt);
HandleStart,
SiLoader::StreamObject{p_dsAction->GetAtomId(), p_dsAction->GetObjectId()}
)
.value_or(std::nullopt);
if (result) { if (result) {
return result.value(); return result.value();
} }

View File

@ -17,9 +17,9 @@ class SiLoader {
static void Initialize(); static void Initialize();
static bool Load(); static bool Load();
static std::optional<MxCore*> HandleFind(StreamObject p_object, LegoWorld* world); static std::optional<MxCore*> HandleFind(StreamObject p_object, LegoWorld* world);
static std::optional<MxResult> HandleStart(StreamObject p_object); static std::optional<MxResult> HandleStart(MxDSAction& p_action);
static std::optional<MxBool> HandleRemove(StreamObject p_object, LegoWorld* world); static std::optional<MxBool> HandleRemove(StreamObject p_object, LegoWorld* world);
static std::optional<MxBool> HandleDelete(StreamObject p_object); static std::optional<MxBool> HandleDelete(MxDSAction& p_action);
static std::map<std::string, std::string> options; static std::map<std::string, std::string> options;
static std::vector<std::string> files; static std::vector<std::string> files;

View File

@ -47,22 +47,26 @@ std::optional<MxCore*> SiLoader::HandleFind(StreamObject p_object, LegoWorld* wo
return std::nullopt; return std::nullopt;
} }
std::optional<MxResult> SiLoader::HandleStart(StreamObject p_object) std::optional<MxResult> SiLoader::HandleStart(MxDSAction& p_action)
{ {
StreamObject object{p_action.GetAtomId(), p_action.GetObjectId()};
for (const auto& key : startWith) { for (const auto& key : startWith) {
if (key.first == p_object) { if (key.first == object) {
MxDSAction action; MxDSAction action;
action.SetAtomId(key.second.first); action.SetAtomId(key.second.first);
action.SetObjectId(key.second.second); action.SetObjectId(key.second.second);
action.SetUnknown24(p_action.GetUnknown24());
Start(&action); Start(&action);
} }
} }
for (const auto& key : replace) { for (const auto& key : replace) {
if (key.first == p_object) { if (key.first == object) {
MxDSAction action; MxDSAction action;
action.SetAtomId(key.second.first); action.SetAtomId(key.second.first);
action.SetObjectId(key.second.second); action.SetObjectId(key.second.second);
action.SetUnknown24(p_action.GetUnknown24());
return Start(&action); return Start(&action);
} }
} }
@ -87,23 +91,27 @@ std::optional<MxBool> SiLoader::HandleRemove(StreamObject p_object, LegoWorld* w
return std::nullopt; return std::nullopt;
} }
std::optional<MxBool> SiLoader::HandleDelete(StreamObject p_object) std::optional<MxBool> SiLoader::HandleDelete(MxDSAction& p_action)
{ {
StreamObject object{p_action.GetAtomId(), p_action.GetObjectId()};
for (const auto& key : removeWith) { for (const auto& key : removeWith) {
if (key.first == p_object) { if (key.first == object) {
MxDSAction action; MxDSAction action;
action.SetAtomId(key.second.first); action.SetAtomId(key.second.first);
action.SetObjectId(key.second.second); action.SetObjectId(key.second.second);
DeleteObject(&action); action.SetUnknown24(p_action.GetUnknown24());
DeleteObject(action);
} }
} }
for (const auto& key : replace) { for (const auto& key : replace) {
if (key.first == p_object) { if (key.first == object) {
MxDSAction action; MxDSAction action;
action.SetAtomId(key.second.first); action.SetAtomId(key.second.first);
action.SetObjectId(key.second.second); action.SetObjectId(key.second.second);
DeleteObject(&action); action.SetUnknown24(p_action.GetUnknown24());
DeleteObject(action);
return TRUE; return TRUE;
} }
} }