Implement ModelDb (WDB reader/parser) (#619)

* WIP Read WDB

* Fixes

* WIP

* WIP

* WIP

* WIP

* Match

* Match

* Fix Compare

* Rename member
This commit is contained in:
Christian Semmler
2024-03-03 15:35:56 -05:00
committed by GitHub
parent a6cf0b5856
commit 01f07a323c
10 changed files with 427 additions and 6 deletions

View File

@@ -7,6 +7,9 @@
// SIZE 0x54 (from inlined construction at 0x10009fac)
class LegoPartPresenter : public MxMediaPresenter {
public:
LegoPartPresenter() { Reset(); }
// FUNCTION: LEGO1 0x10067300
~LegoPartPresenter() override { Destroy(TRUE); }
// FUNCTION: LEGO1 0x1000cf70
@@ -31,8 +34,15 @@ public:
// SYNTHETIC: LEGO1 0x1000d060
// LegoPartPresenter::`scalar deleting destructor'
inline void Reset() { m_partData = NULL; }
MxResult ParsePart(MxDSChunk& p_chunk);
void FUN_1007df20();
private:
void Destroy(MxBool p_fromDestructor);
MxDSChunk* m_partData; // 0x54
};
#endif // LEGOPARTPRESENTER_H

View File

@@ -7,6 +7,7 @@
// SIZE 0x54 (from inlined construction at 0x10009bb5)
class LegoTexturePresenter : public MxMediaPresenter {
public:
LegoTexturePresenter() : m_textureData(NULL) {}
~LegoTexturePresenter() override;
// FUNCTION: LEGO1 0x1000ce50
@@ -28,6 +29,12 @@ public:
// SYNTHETIC: LEGO1 0x1000cf40
// LegoTexturePresenter::`scalar deleting destructor'
MxResult ParseTexture(MxDSChunk& p_chunk);
void FUN_1004f290();
private:
MxDSChunk* m_textureData; // 0x54
};
#endif // LEGOTEXTUREPRESENTER_H

View File

@@ -3,7 +3,11 @@
#include "legoentitypresenter.h"
#include <stdio.h>
class LegoWorld;
struct ModelDbPart;
struct ModelDbModel;
// VTABLE: LEGO1 0x100d8ee0
// SIZE 0x54
@@ -33,7 +37,9 @@ public:
MxResult StartAction(MxStreamController* p_controller, MxDSAction* p_action) override; // vtable+0x3c
void VTable0x60(MxPresenter* p_presenter) override; // vtable+0x60
void LoadWorld(char* p_worldName, LegoWorld* p_world);
MxResult FUN_10067360(ModelDbPart& p_part, FILE* p_wdbFile);
MxResult FUN_100674b0(ModelDbModel& p_model, FILE* p_wdbFile, LegoWorld* p_world);
MxResult LoadWorld(char* p_worldName, LegoWorld* p_world);
// SYNTHETIC: LEGO1 0x10066750
// LegoWorldPresenter::`scalar deleting destructor'