This commit is contained in:
Christian Semmler 2024-01-26 17:29:24 -05:00
parent 65ae2c49c0
commit 3e9705c185

View File

@ -158,6 +158,7 @@ void LegoWorld::Add(MxCore* p_object)
if (p_object && !p_object->IsA("LegoWorld") && !p_object->IsA("LegoWorldPresenter")) { if (p_object && !p_object->IsA("LegoWorld") && !p_object->IsA("LegoWorldPresenter")) {
if (p_object->IsA("LegoAnimPresenter")) { if (p_object->IsA("LegoAnimPresenter")) {
LegoAnimPresenter* animPresenter = (LegoAnimPresenter*) p_object; LegoAnimPresenter* animPresenter = (LegoAnimPresenter*) p_object;
if (!strcmpi(animPresenter->GetAction()->GetObjectName(), "ConfigAnimation")) { if (!strcmpi(animPresenter->GetAction()->GetObjectName(), "ConfigAnimation")) {
FUN_1003e050(animPresenter); FUN_1003e050(animPresenter);
animPresenter->GetAction()->SetDuration(animPresenter->GetUnknown0x64()->GetUnknown0x8()); animPresenter->GetAction()->SetDuration(animPresenter->GetUnknown0x64()->GetUnknown0x8());
@ -166,43 +167,39 @@ void LegoWorld::Add(MxCore* p_object)
if (p_object->IsA("MxControlPresenter")) { if (p_object->IsA("MxControlPresenter")) {
MxPresenterListCursor cursor(&m_controlPresenters); MxPresenterListCursor cursor(&m_controlPresenters);
MxPresenter* presenter = (MxPresenter*) p_object;
if (cursor.Find(presenter)) if (cursor.Find((MxPresenter*) p_object))
return; return;
m_controlPresenters.Append(presenter); m_controlPresenters.Append((MxPresenter*) p_object);
} }
else if (p_object->IsA("MxEntity")) { else if (p_object->IsA("MxEntity")) {
LegoEntityListCursor cursor(m_entityList); LegoEntityListCursor cursor(m_entityList);
LegoEntity* entity = (LegoEntity*) p_object;
if (cursor.Find(entity)) if (cursor.Find((LegoEntity*) p_object))
return; return;
m_entityList->Append(entity); m_entityList->Append((LegoEntity*) p_object);
} }
else if (p_object->IsA("LegoLocomotionAnimPresenter") || p_object->IsA("LegoHideAnimPresenter") || p_object->IsA("LegoLoopingAnimPresenter")) { else if (p_object->IsA("LegoLocomotionAnimPresenter") || p_object->IsA("LegoHideAnimPresenter") || p_object->IsA("LegoLoopingAnimPresenter")) {
MxPresenterListCursor cursor(&m_animPresenters); MxPresenterListCursor cursor(&m_animPresenters);
MxPresenter* presenter = (MxPresenter*) p_object;
if (cursor.Find(presenter)) if (cursor.Find((MxPresenter*) p_object))
return; return;
presenter->SendToCompositePresenter(Lego()); ((MxPresenter*) p_object)->SendToCompositePresenter(Lego());
m_animPresenters.Append(presenter); m_animPresenters.Append(((MxPresenter*) p_object));
if (p_object->IsA("LegoHideAnimPresenter")) if (p_object->IsA("LegoHideAnimPresenter"))
m_hideAnimPresenter = (LegoHideAnimPresenter*) presenter; m_hideAnimPresenter = (LegoHideAnimPresenter*) p_object;
} }
else if (p_object->IsA("LegoCacheSound")) { else if (p_object->IsA("LegoCacheSound")) {
LegoCacheSoundListCursor cursor(m_cacheSoundList); LegoCacheSoundListCursor cursor(m_cacheSoundList);
LegoCacheSound* sound = (LegoCacheSound*) p_object;
if (cursor.Find(sound)) if (cursor.Find((LegoCacheSound*) p_object))
return; return;
m_cacheSoundList->Append(sound); m_cacheSoundList->Append((LegoCacheSound*) p_object);
} }
else { else {
if (m_set0xa8.find(p_object) == m_set0xa8.end()) if (m_set0xa8.find(p_object) == m_set0xa8.end())