diff --git a/LEGO1/lego/legoomni/include/legoomni.h b/LEGO1/lego/legoomni/include/legoomni.h index bcfd38c0..36cacb70 100644 --- a/LEGO1/lego/legoomni/include/legoomni.h +++ b/LEGO1/lego/legoomni/include/legoomni.h @@ -125,6 +125,7 @@ public: MxTransitionManager* GetTransitionManager() { return m_transitionManager; } MxDSAction& GetCurrentAction() { return m_action; } LegoUnkSaveDataWriter* GetUnkSaveDataWriter() { return m_saveDataWriter; } + LegoWorldList* GetWorldList() { return m_worldList; } inline void SetNavController(LegoNavController* p_navController) { m_navController = p_navController; } inline void SetCurrentWorld(LegoWorld* p_currentWorld) { m_currentWorld = p_currentWorld; } diff --git a/LEGO1/lego/legoomni/src/common/legoutil.cpp b/LEGO1/lego/legoomni/src/common/legoutil.cpp index c6d0c22e..3951f94f 100644 --- a/LEGO1/lego/legoomni/src/common/legoutil.cpp +++ b/LEGO1/lego/legoomni/src/common/legoutil.cpp @@ -2,7 +2,9 @@ #include "legoomni.h" #include "legoworld.h" +#include "legoworldlist.h" #include "mxdsaction.h" +#include "mxnotificationmanager.h" #include "mxomni.h" #include "mxstreamer.h" #include "mxtypes.h" @@ -128,9 +130,35 @@ MxBool CheckIfEntityExists(MxBool p_enable, const char* p_filename, MxS32 p_enti } } -// STUB: LEGO1 0x1003e700 +// FUNCTION: LEGO1 0x1003e700 void NotifyEntity(const char* p_filename, MxS32 p_entityId, LegoEntity* p_sender) { + MxAtomId atom(p_filename, e_lowerCase2); + LegoEntity* entity = FindWorld(atom, p_entityId); + + if (entity == NULL) { + LegoWorldListCursor cursor(Lego()->GetWorldList()); + LegoWorld* world; + + while (cursor.Next(world)) { + entity = (LegoEntity*) world->Find(atom, p_entityId); + + if (entity != NULL) { + break; + } + } + } + + if (entity != NULL) { +#ifdef COMPAT_MODE + { + MxNotificationParam param(c_notificationType0, p_sender); + NotificationManager()->Send(entity, ¶m); + } +#else + NotificationManager()->Send(entity, &MxNotificationParam(c_notificationType0, p_sender)); +#endif + } } // FUNCTION: LEGO1 0x1003eae0