Fix vtable

This commit is contained in:
Christian Semmler 2024-01-28 11:25:11 -05:00
parent f0a31294fd
commit 23d33a63b0
3 changed files with 17 additions and 14 deletions

View File

@ -76,9 +76,6 @@ class LegoAnimPresenter : public MxVideoPresenter {
// SYNTHETIC: LEGO1 0x10068650 // SYNTHETIC: LEGO1 0x10068650
// LegoAnimPresenter::`scalar deleting destructor' // LegoAnimPresenter::`scalar deleting destructor'
// SYNTHETIC: LEGO1 0x10099de0
// LegoAnimClassBase::`scalar deleting destructor'
// VTABLE: LEGO1 0x100db8d8 // VTABLE: LEGO1 0x100db8d8
// SIZE 0x18 // SIZE 0x18
class LegoAnimClass : public LegoTree { class LegoAnimClass : public LegoTree {
@ -86,9 +83,9 @@ class LegoAnimClass : public LegoTree {
LegoAnimClass(); LegoAnimClass();
virtual ~LegoAnimClass() override; virtual ~LegoAnimClass() override;
virtual void Read() override; // vtable+0x08 virtual LegoResult Write(LegoStorage* p_storage) override; // vtable+0x08
virtual void Write() override; // vtable+0x0c virtual LegoTreeNodeData* CreateData() override; // vtable+0x0c
virtual MxResult CreateData(LegoMemory* p_stream, MxS32); // vtable+0x10 virtual MxResult VTable0x10(LegoMemory* p_stream, MxS32); // vtable+0x10
inline MxLong GetUnknown0x8() { return m_unk0x8; } inline MxLong GetUnknown0x8() { return m_unk0x8; }

View File

@ -73,7 +73,7 @@ MxResult LegoAnimPresenter::VTable0x88(MxStreamChunk* p_chunk)
if (stream.Read(&val3, sizeof(MxS32)) == SUCCESS) { if (stream.Read(&val3, sizeof(MxS32)) == SUCCESS) {
m_unk0x64 = new LegoAnimClass(); m_unk0x64 = new LegoAnimClass();
if (m_unk0x64) { if (m_unk0x64) {
if (m_unk0x64->CreateData(&stream, val2) == SUCCESS) { if (m_unk0x64->VTable0x10(&stream, val2) == SUCCESS) {
result = SUCCESS; result = SUCCESS;
} }
} }
@ -215,19 +215,21 @@ LegoAnimClass::~LegoAnimClass()
} }
// STUB: LEGO1 0x100a0c70 // STUB: LEGO1 0x100a0c70
MxResult LegoAnimClass::CreateData(LegoMemory* p_stream, MxS32) MxResult LegoAnimClass::VTable0x10(LegoMemory* p_stream, MxS32)
{ {
return SUCCESS; return SUCCESS;
} }
// STUB: LEGO1 0x100a0e30 // STUB: LEGO1 0x100a0e30
void LegoAnimClass::Read() LegoResult LegoAnimClass::Write(LegoStorage* p_storage)
{ {
// TODO // TODO
return SUCCESS;
} }
// STUB: LEGO1 0x100a1040 // STUB: LEGO1 0x100a1040
void LegoAnimClass::Write() LegoTreeNodeData* LegoAnimClass::CreateData()
{ {
// TODO // TODO
return NULL;
} }

View File

@ -13,9 +13,11 @@ class LegoStorage;
class LegoTreeNodeData { class LegoTreeNodeData {
public: public:
LegoTreeNodeData() {} LegoTreeNodeData() {}
virtual ~LegoTreeNodeData() {} // vtable+0x0 virtual ~LegoTreeNodeData() {}
// FUNCTION: LEGO1 0x10099fe0 // FUNCTION: LEGO1 0x10099fe0
virtual LegoResult Read(LegoStorage* p_storage) { return SUCCESS; } // vtable+0x4 virtual LegoResult Read(LegoStorage* p_storage) { return SUCCESS; } // vtable+0x4
// FUNCTION: LEGO1 0x10099ff0 // FUNCTION: LEGO1 0x10099ff0
virtual LegoResult Write(LegoStorage* p_storage) { return SUCCESS; } // vtable+0x8 virtual LegoResult Write(LegoStorage* p_storage) { return SUCCESS; } // vtable+0x8
@ -28,7 +30,7 @@ class LegoTreeNodeData {
class LegoTreeNode { class LegoTreeNode {
public: public:
LegoTreeNode(); LegoTreeNode();
virtual ~LegoTreeNode(); // vtable+0x0 virtual ~LegoTreeNode();
LegoTreeNodeData* GetData() { return m_data; } LegoTreeNodeData* GetData() { return m_data; }
void SetData(LegoTreeNodeData* p_data) { m_data = p_data; } void SetData(LegoTreeNodeData* p_data) { m_data = p_data; }
LegoU32 GetNumChildren() { return m_numChildren; } LegoU32 GetNumChildren() { return m_numChildren; }
@ -52,7 +54,7 @@ class LegoTreeNode {
class LegoTree { class LegoTree {
public: public:
LegoTree(); LegoTree();
virtual ~LegoTree(); // vtable+0x0 virtual ~LegoTree();
LegoTreeNode* GetRoot() { return m_root; } LegoTreeNode* GetRoot() { return m_root; }
void SetRoot(LegoTreeNode* p_root) { m_root = p_root; } void SetRoot(LegoTreeNode* p_root) { m_root = p_root; }
virtual LegoResult Read(LegoStorage* p_storage); // vtable+0x4 virtual LegoResult Read(LegoStorage* p_storage); // vtable+0x4
@ -65,8 +67,10 @@ class LegoTree {
LegoResult Read(LegoStorage* p_storage, LegoTreeNode*& p_node); LegoResult Read(LegoStorage* p_storage, LegoTreeNode*& p_node);
LegoResult Write(LegoStorage* p_storage, LegoTreeNode* p_node); LegoResult Write(LegoStorage* p_storage, LegoTreeNode* p_node);
void Delete(LegoTreeNode* p_node); void Delete(LegoTreeNode* p_node);
// FUNCTION: LEGO1 0x10099f70 // FUNCTION: LEGO1 0x10099f70
virtual LegoTreeNodeData* CreateData() { return new LegoTreeNodeData(); } // vtable+0xc virtual LegoTreeNodeData* CreateData() { return new LegoTreeNodeData(); } // vtable+0xc
LegoTreeNode* m_root; // 0x4 LegoTreeNode* m_root; // 0x4
}; };