LegoWorld::LegoWorld to 100% (#480)

This commit is contained in:
MS
2024-01-22 10:18:46 -05:00
committed by GitHub
parent a65eb9a4e0
commit a19165a749
9 changed files with 82 additions and 7 deletions

View File

@@ -3,6 +3,8 @@
#include "mxvideopresenter.h" #include "mxvideopresenter.h"
class AutoROI;
// VTABLE: LEGO1 0x100d4e50 // VTABLE: LEGO1 0x100d4e50
// SIZE 0x6c (discovered through inline constructor at 0x10009ae6) // SIZE 0x6c (discovered through inline constructor at 0x10009ae6)
class LegoModelPresenter : public MxVideoPresenter { class LegoModelPresenter : public MxVideoPresenter {
@@ -33,7 +35,7 @@ protected:
void Destroy(MxBool p_fromDestructor); void Destroy(MxBool p_fromDestructor);
private: private:
undefined4 m_unk0x64; // 0x64 AutoROI* m_unk0x64; // 0x64
MxBool m_addedToView; // 0x68 MxBool m_addedToView; // 0x68
}; };

View File

@@ -48,6 +48,9 @@ public:
// TEMPLATE: LEGO1 0x1001d3c0 // TEMPLATE: LEGO1 0x1001d3c0
// MxPtrList<LegoPathController>::Destroy // MxPtrList<LegoPathController>::Destroy
// TEMPLATE: LEGO1 0x1001d440
// MxPtrList<LegoPathController>::~MxPtrList<LegoPathController>
// SYNTHETIC: LEGO1 0x1001d490 // SYNTHETIC: LEGO1 0x1001d490
// MxCollection<LegoPathController *>::`scalar deleting destructor' // MxCollection<LegoPathController *>::`scalar deleting destructor'
@@ -57,4 +60,7 @@ public:
// SYNTHETIC: LEGO1 0x1001d5b0 // SYNTHETIC: LEGO1 0x1001d5b0
// MxPtrList<LegoPathController>::`scalar deleting destructor' // MxPtrList<LegoPathController>::`scalar deleting destructor'
// SYNTHETIC: LEGO1 0x1001d620
// LegoPathControllerList::~LegoPathControllerList
#endif // LEGOPATHCONTROLLERLIST_H #endif // LEGOPATHCONTROLLERLIST_H

View File

@@ -4,6 +4,7 @@
#include "decomp.h" #include "decomp.h"
#include "mxtypes.h" #include "mxtypes.h"
class AutoROI;
class LegoROI; class LegoROI;
class LegoStream; class LegoStream;
@@ -35,6 +36,7 @@ struct LegoSaveDataEntry3 {
class LegoUnkSaveDataWriter { class LegoUnkSaveDataWriter {
public: public:
MxResult WriteSaveData3(LegoStream* p_stream); MxResult WriteSaveData3(LegoStream* p_stream);
AutoROI* FUN_10083500(undefined4, undefined4);
void FUN_10083db0(LegoROI* p_roi); void FUN_10083db0(LegoROI* p_roi);
}; };

View File

@@ -12,6 +12,12 @@
class IslePathActor; class IslePathActor;
class LegoPathBoundary; class LegoPathBoundary;
struct PresenterSetCompare {
int operator()(MxPresenter* const& p_a, MxPresenter* const& p_b) const { return p_a > p_b; }
};
typedef set<MxPresenter*, PresenterSetCompare> MxPresenterSet;
// VTABLE: LEGO1 0x100d6280 // VTABLE: LEGO1 0x100d6280
// SIZE 0xf8 // SIZE 0xf8
class LegoWorld : public LegoEntity { class LegoWorld : public LegoEntity {
@@ -71,9 +77,11 @@ protected:
LegoCameraController* m_cameraController; // 0x98 LegoCameraController* m_cameraController; // 0x98
LegoEntityList* m_entityList; // 0x9c LegoEntityList* m_entityList; // 0x9c
MxCoreList* m_coreList; // 0xa0 MxCoreList* m_coreList; // 0xa0
undefined m_unk0xa4[0x14]; // 0xa4 undefined m_unk0xa4; // 0xa4
MxPresenterSet m_set0xa8; // 0xa8
MxPresenterList m_list0xb8; // 0xb8 MxPresenterList m_list0xb8; // 0xb8
undefined m_unk0xd0[0x1c]; // 0xd0 MxPresenterSet m_set0xd0; // 0xd0
list<AutoROI*> m_list0xe0; // 0xe0
undefined4 m_unk0xec; // 0xec undefined4 m_unk0xec; // 0xec
undefined4 m_unk0xf0; // 0xf0 undefined4 m_unk0xf0; // 0xf0
MxS16 m_unk0xf4; // 0xf4 MxS16 m_unk0xf4; // 0xf4
@@ -81,6 +89,38 @@ protected:
undefined m_unk0xf7; // 0xf7 undefined m_unk0xf7; // 0xf7
}; };
// clang-format off
// TEMPLATE: LEGO1 0x1001d780
// _Tree<MxPresenter *,MxPresenter *,set<MxPresenter *,PresenterSetCompare,allocator<MxPresenter *> >::_Kfn,PresenterSetCompare,allocator<MxPresenter *> >::~_Tree<MxPresenter *,MxPresenter *,set<MxPresenter *,PresenterSetCompare,allocator<MxPresenter *> >::_Kfn,PresenterSetCompare,allocator<MxPresenter *> >
// TEMPLATE: LEGO1 0x1001d850
// _Tree<MxPresenter *,MxPresenter *,set<MxPresenter *,PresenterSetCompare,allocator<MxPresenter *> >::_Kfn,PresenterSetCompare,allocator<MxPresenter *> >::iterator::_Inc
// TEMPLATE: LEGO1 0x1001d890
// _Tree<MxPresenter *,MxPresenter *,set<MxPresenter *,PresenterSetCompare,allocator<MxPresenter *> >::_Kfn,PresenterSetCompare,allocator<MxPresenter *> >::erase
// TEMPLATE: LEGO1 0x1001dcf0
// _Tree<MxPresenter *,MxPresenter *,set<MxPresenter *,PresenterSetCompare,allocator<MxPresenter *> >::_Kfn,PresenterSetCompare,allocator<MxPresenter *> >::_Erase
// TEMPLATE: LEGO1 0x1001dd30
// _Tree<MxPresenter *,MxPresenter *,set<MxPresenter *,PresenterSetCompare,allocator<MxPresenter *> >::_Kfn,PresenterSetCompare,allocator<MxPresenter *> >::_Init
// TEMPLATE: LEGO1 0x1001ddf0
// list<AutoROI *,allocator<AutoROI *> >::~list<AutoROI *,allocator<AutoROI *> >
// TEMPLATE: LEGO1 0x1001df50
// List<AutoROI *>::~List<AutoROI *>
// TEMPLATE: LEGO1 0x1001de60
// list<AutoROI *,allocator<AutoROI *> >::_Buynode
// TEMPLATE: LEGO1 0x1001de90
// set<MxPresenter *,PresenterSetCompare,allocator<MxPresenter *> >::~set<MxPresenter *,PresenterSetCompare,allocator<MxPresenter *> >
// TEMPLATE: LEGO1 0x1001df00
// Set<MxPresenter *,PresenterSetCompare>::~Set<MxPresenter *,PresenterSetCompare>
// clang-format om
// SYNTHETIC: LEGO1 0x1001eed0 // SYNTHETIC: LEGO1 0x1001eed0
// MxPresenterListCursor::`scalar deleting destructor' // MxPresenterListCursor::`scalar deleting destructor'
@@ -102,4 +142,7 @@ protected:
// TEMPLATE: LEGO1 0x10020760 // TEMPLATE: LEGO1 0x10020760
// MxListCursor<MxPresenter *>::MxListCursor<MxPresenter *> // MxListCursor<MxPresenter *>::MxListCursor<MxPresenter *>
// GLOBAL: LEGO1 0x100f11a0
// _Tree<MxPresenter *,MxPresenter *,set<MxPresenter *,PresenterSetCompare,allocator<MxPresenter *> >::_Kfn,PresenterSetCompare,allocator<MxPresenter *> >::_Nil
#endif // LEGOWORLD_H #endif // LEGOWORLD_H

View File

@@ -1,8 +1,8 @@
#include "legounksavedatawriter.h" #include "legounksavedatawriter.h"
#include "legogamestate.h" #include "legogamestate.h"
#include "legostream.h" #include "legostream.h"
#include "roi/legoroi.h"
DECOMP_SIZE_ASSERT(LegoSaveDataEntry3, 0x108); DECOMP_SIZE_ASSERT(LegoSaveDataEntry3, 0x108);
@@ -48,6 +48,14 @@ MxResult LegoUnkSaveDataWriter::WriteSaveData3(LegoStream* p_stream)
return result; return result;
} }
// STUB: LEGO1 0x10083500
AutoROI* LegoUnkSaveDataWriter::FUN_10083500(undefined4, undefined4)
{
// TODO
// involves an STL map with a _Nil node at 0x100fc508
return NULL;
}
// STUB: LEGO1 0x10083db0 // STUB: LEGO1 0x10083db0
void LegoUnkSaveDataWriter::FUN_10083db0(LegoROI* p_roi) void LegoUnkSaveDataWriter::FUN_10083db0(LegoROI* p_roi)
{ {

View File

@@ -17,12 +17,17 @@ DECOMP_SIZE_ASSERT(LegoEntityListCursor, 0x10)
DECOMP_SIZE_ASSERT(MxCoreList, 0x18) DECOMP_SIZE_ASSERT(MxCoreList, 0x18)
DECOMP_SIZE_ASSERT(MxCoreListCursor, 0x10) DECOMP_SIZE_ASSERT(MxCoreListCursor, 0x10)
// STUB: LEGO1 0x1001ca40 // FUNCTION: LEGO1 0x1001ca40
LegoWorld::LegoWorld() : m_list0x68(TRUE) LegoWorld::LegoWorld() : m_list0x68(TRUE)
{ {
// TODO
m_worldStarted = FALSE;
m_unk0xf4 = 4; m_unk0xf4 = 4;
m_cameraController = NULL;
m_entityList = NULL;
m_coreList = NULL;
m_unk0xa4 = 0; // MxBool?
m_unk0xf0 = 0;
m_worldStarted = FALSE;
NotificationManager()->Register(this); NotificationManager()->Register(this);
} }

View File

@@ -11,6 +11,9 @@ class LegoEntity;
// Note: There is an extra class between LegoROI and ViewROI, // Note: There is an extra class between LegoROI and ViewROI,
// maybe called "AutoROI". VTABLE 0x100dbe38 // maybe called "AutoROI". VTABLE 0x100dbe38
// TODO: Set as superclass of LegoROI
class AutoROI : public ViewROI {};
// VTABLE: LEGO1 0x100dbea8 // VTABLE: LEGO1 0x100dbea8
// SIZE 0x10c // SIZE 0x10c
class LegoROI : public ViewROI { class LegoROI : public ViewROI {

View File

@@ -15,6 +15,9 @@ public:
m_elements[2] = p_z; m_elements[2] = p_z;
} }
// SYNTHETIC: LEGO1 0x1001d170
// Mx3DPointFloat::Mx3DPointFloat
// FUNCTION: LEGO1 0x10003c10 // FUNCTION: LEGO1 0x10003c10
virtual void operator=(const Vector3& p_impl) { EqualsImpl(p_impl.m_data); } // vtable+0x88 virtual void operator=(const Vector3& p_impl) { EqualsImpl(p_impl.m_data); } // vtable+0x88

View File

@@ -68,4 +68,7 @@ public:
// SYNTHETIC: LEGO1 0x1001d090 // SYNTHETIC: LEGO1 0x1001d090
// MxPtrList<MxPresenter>::`scalar deleting destructor' // MxPtrList<MxPresenter>::`scalar deleting destructor'
// SYNTHETIC: LEGO1 0x1001d100
// MxPresenterList::~MxPresenterList
#endif // MXPRESENTERLIST_H #endif // MXPRESENTERLIST_H