Implement LegoWorld::Find (#489)

* Implement LegoWorld::FUN_100213a0

* Rename lists

* Rename cursors

* Rename cursor

* Rename functions

* Remove a comment

* Rename more functions

* Fix return type
This commit is contained in:
Christian Semmler
2024-01-26 16:00:02 -05:00
committed by GitHub
parent 0a672d2146
commit b6aac26269
20 changed files with 154 additions and 91 deletions

View File

@@ -20,7 +20,6 @@ class Act1State;
// VTABLE: LEGO1 0x100d6fb8
// SIZE 0x140
// Radio at 0x12c
class Isle : public LegoWorld {
public:
Isle();
@@ -42,7 +41,7 @@ public:
virtual MxResult Create(MxDSAction& p_dsAction) override; // vtable+0x18
virtual void VTable0x50() override; // vtable+50
virtual void VTable0x58(MxCore* p_object) override; // vtable+58
virtual void Add(MxCore* p_object) override; // vtable+58
// FUNCTION: LEGO1 0x10030900
virtual MxBool VTable0x5c() override { return TRUE; } // vtable+5c
// FUNCTION: LEGO1 0x10033170

View File

@@ -40,7 +40,7 @@ public:
virtual void PutFrame() override; // vtable+0x6c
virtual MxResult VTable0x88(MxStreamChunk* p_chunk); // vtable+0x88
// 6 more virtual functions here
const char* GetActionObjectName();
protected:
void Init();

View File

@@ -92,18 +92,18 @@ public:
return !strcmp(p_name, LegoOmni::ClassName()) || MxOmni::IsA(p_name);
}
virtual void Init() override; // vtable+14
virtual MxResult Create(MxOmniCreateParam& p_param) override; // vtable+18
virtual void Destroy() override; // vtable+1c
virtual MxResult Start(MxDSAction* p_dsAction) override; // vtable+20
virtual void DeleteObject(MxDSAction& p_dsAction) override; // vtable+24
virtual MxBool DoesEntityExist(MxDSAction& p_dsAction) override; // vtable+28
virtual MxEntity* FindWorld(const char* p_id, MxS32 p_entityId, MxPresenter* p_presenter) override; // vtable+30
virtual void NotifyCurrentEntity(MxNotificationParam* p_param) override; // vtable+34
virtual void StartTimer() override; // vtable+38
virtual void StopTimer() override; // vtable+3c
virtual void Init() override; // vtable+14
virtual MxResult Create(MxOmniCreateParam& p_param) override; // vtable+18
virtual void Destroy() override; // vtable+1c
virtual MxResult Start(MxDSAction* p_dsAction) override; // vtable+20
virtual void DeleteObject(MxDSAction& p_dsAction) override; // vtable+24
virtual MxBool DoesEntityExist(MxDSAction& p_dsAction) override; // vtable+28
virtual MxEntity* AddToWorld(const char* p_id, MxS32 p_entityId, MxPresenter* p_presenter) override; // vtable+30
virtual void NotifyCurrentEntity(MxNotificationParam* p_param) override; // vtable+34
virtual void StartTimer() override; // vtable+38
virtual void StopTimer() override; // vtable+3c
LegoEntity* FindByEntityIdOrAtomId(const MxAtomId& p_atom, MxS32 p_entityid);
LegoWorld* FindWorld(const MxAtomId& p_atom, MxS32 p_entityid);
void AddWorld(LegoWorld* p_world);
void FUN_1005b4f0(MxBool p_disable, MxU16 p_flags);
@@ -111,7 +111,7 @@ public:
LegoSoundManager* GetSoundManager() { return (LegoSoundManager*) m_soundManager; }
LegoInputManager* GetInputManager() { return m_inputMgr; }
GifManager* GetGifManager() { return m_gifManager; }
LegoWorld* GetCurrentOmniWorld() { return m_currentWorld; }
LegoWorld* GetCurrentWorld() { return m_currentWorld; }
LegoNavController* GetNavController() { return m_navController; }
IslePathActor* GetCurrentVehicle() { return m_currentVehicle; }
LegoPlantManager* GetLegoPlantManager() { return m_plantManager; }
@@ -174,7 +174,7 @@ LegoUnkSaveDataWriter* GetUnkSaveDataWriter();
GifManager* GetGifManager();
void FUN_10015820(MxBool p_disable, MxU16 p_flags);
void FUN_10015860(const char*, MxU8);
LegoEntity* FindEntityByAtomIdOrEntityId(const MxAtomId& p_atom, MxS32 p_entityid);
LegoWorld* FindWorld(const MxAtomId& p_atom, MxS32 p_entityid);
MxDSAction& GetCurrentAction();
void PlayMusic(MxU32 p_index);

View File

@@ -45,7 +45,7 @@ public:
virtual void Destroy(MxBool p_fromDestructor) override; // vtable+0x1c
virtual void VTable0x50(); // vtable+0x50
virtual LegoCameraController* VTable0x54(); // vtable+0x54
virtual void VTable0x58(MxCore* p_object); // vtable+0x58
virtual void Add(MxCore* p_object); // vtable+0x58
virtual MxBool VTable0x5c(); // vtable+0x5c
// FUNCTION: LEGO1 0x100010a0
@@ -58,28 +58,28 @@ public:
inline undefined4 GetUnknown0xec() { return m_unk0xec; }
undefined FUN_100220e0();
void EndAction(MxCore* p_object);
void Remove(MxCore* p_object);
void FUN_1001fc80(IslePathActor* p_actor);
MxBool FUN_100727e0(MxU32, Mx3DPointFloat& p_loc, Mx3DPointFloat& p_dir, Mx3DPointFloat& p_up);
MxBool FUN_10072980(MxU32, Mx3DPointFloat& p_loc, Mx3DPointFloat& p_dir, Mx3DPointFloat& p_up);
void FUN_10073400();
void FUN_10073430();
MxS32 GetCurrPathInfo(LegoPathBoundary** p_path, MxS32& p_value);
MxPresenter* FindPresenter(const char* p_presenter, const char* p_name);
MxCore* FUN_10021790(const MxAtomId& p_atom, MxS32 p_entityId);
MxCore* Find(const char* p_class, const char* p_name);
MxCore* Find(const MxAtomId& p_atom, MxS32 p_entityId);
// SYNTHETIC: LEGO1 0x1001dee0
// LegoWorld::`scalar deleting destructor'
protected:
LegoPathControllerList m_list0x68; // 0x68
MxPresenterList m_list0x80; // 0x80
MxPresenterList m_animPresenters; // 0x80
LegoCameraController* m_cameraController; // 0x98
LegoEntityList* m_entityList; // 0x9c
MxCoreList* m_coreList; // 0xa0
undefined m_unk0xa4; // 0xa4
MxPresenterSet m_set0xa8; // 0xa8
MxPresenterList m_list0xb8; // 0xb8
MxPresenterList m_controlPresenters; // 0xb8
MxPresenterSet m_set0xd0; // 0xd0
list<AutoROI*> m_list0xe0; // 0xe0
undefined4 m_unk0xec; // 0xec