Skip to content

Commit

Permalink
Improve accuracy of MxOmni::CreatePresenter (#407)
Browse files Browse the repository at this point in the history
* Improve accuracy of MxOmni::CreatePresenter

* Update mxactionnotificationparam.cpp

* Match to 100%

---------

Co-authored-by: Christian Semmler <mail@csemmler.com>
  • Loading branch information
MishaProductions and foxtacles authored Jan 5, 2024
1 parent 9a5e1cb commit 9651ece
Show file tree
Hide file tree
Showing 2 changed files with 18 additions and 10 deletions.
7 changes: 6 additions & 1 deletion LEGO1/mxactionnotificationparam.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,12 @@ MxNotificationParam* MxEndActionNotificationParam::Clone()
// FUNCTION: LEGO1 0x100b0300
MxNotificationParam* MxStartActionNotificationParam::Clone()
{
return new MxEndActionNotificationParam(c_notificationStartAction, this->m_sender, this->m_action, this->m_realloc);
return new MxStartActionNotificationParam(
c_notificationStartAction,
this->m_sender,
this->m_action,
this->m_realloc
);
}

// FUNCTION: LEGO1 0x100b04f0
Expand Down
21 changes: 12 additions & 9 deletions LEGO1/mxomni.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -324,22 +324,24 @@ void MxOmni::DeleteObject(MxDSAction& p_dsAction)
MxResult MxOmni::CreatePresenter(MxStreamController* p_controller, MxDSAction& p_action)
{
MxResult result = FAILURE;
MxPresenter* object = (MxPresenter*) m_objectFactory->Create(PresenterNameDispatch(p_action));
const char* name = PresenterNameDispatch(p_action);
MxPresenter* object = (MxPresenter*) m_objectFactory->Create(name);

if (object) {
if (object->AddToManager() == SUCCESS) {
MxPresenter* sender = p_action.GetUnknown28();
if (sender == NULL && (sender = p_controller->FUN_100c1e70(p_action)) == NULL) {
if (p_action.GetOrigin() == NULL) {
p_action.SetOrigin(this);
}
if (!sender)
sender = p_controller->FUN_100c1e70(p_action);

object->SetCompositePresenter(NULL);
}
else {
if (sender) {
p_action.SetOrigin(sender);
object->SetCompositePresenter((MxCompositePresenter*) sender);
}
else {
if (!p_action.GetOrigin())
p_action.SetOrigin(this);
object->SetCompositePresenter(NULL);
}

if (object->StartAction(p_controller, &p_action) == SUCCESS) {
if (sender) {
Expand All @@ -349,13 +351,14 @@ MxResult MxOmni::CreatePresenter(MxStreamController* p_controller, MxDSAction& p
if (p_action.GetUnknown84()) {
NotificationManager()->Send(
p_action.GetUnknown84(),
&MxStartActionNotificationParam(c_notificationStartAction, this, &p_action, FALSE)
&MxStartActionNotificationParam(c_notificationStartAction, object, &p_action, FALSE)
);
}
result = SUCCESS;
}
}
}

return result;
}

Expand Down

0 comments on commit 9651ece

Please sign in to comment.