mirror of
https://github.com/isledecomp/isle-portable.git
synced 2025-05-11 05:30:30 -04:00
Implement/match FreeModelDbWorlds (#1056)
This commit is contained in:
parent
d92fc97a58
commit
65e3c3dd05
2 changed files with 35 additions and 2 deletions
LEGO1/modeldb
|
@ -6,6 +6,14 @@ DECOMP_SIZE_ASSERT(ModelDbModel, 0x38)
|
||||||
DECOMP_SIZE_ASSERT(ModelDbPartList, 0x1c)
|
DECOMP_SIZE_ASSERT(ModelDbPartList, 0x1c)
|
||||||
DECOMP_SIZE_ASSERT(ModelDbPartListCursor, 0x10)
|
DECOMP_SIZE_ASSERT(ModelDbPartListCursor, 0x10)
|
||||||
|
|
||||||
|
// FUNCTION: LEGO1 0x10027690
|
||||||
|
// FUNCTION: BETA10 0x100e5620
|
||||||
|
void ModelDbModel::Free()
|
||||||
|
{
|
||||||
|
delete[] m_modelName;
|
||||||
|
delete[] m_presenterName;
|
||||||
|
}
|
||||||
|
|
||||||
// FUNCTION: LEGO1 0x100276b0
|
// FUNCTION: LEGO1 0x100276b0
|
||||||
MxResult ModelDbModel::Read(FILE* p_file)
|
MxResult ModelDbModel::Read(FILE* p_file)
|
||||||
{
|
{
|
||||||
|
@ -130,8 +138,32 @@ MxResult ReadModelDbWorlds(FILE* p_file, ModelDbWorld*& p_worlds, MxS32& p_numWo
|
||||||
return SUCCESS;
|
return SUCCESS;
|
||||||
}
|
}
|
||||||
|
|
||||||
// STUB: LEGO1 0x10028080
|
// FUNCTION: LEGO1 0x10028080
|
||||||
|
// FUNCTION: BETA10 0x100e6431
|
||||||
void FreeModelDbWorlds(ModelDbWorld*& p_worlds, MxS32 p_numWorlds)
|
void FreeModelDbWorlds(ModelDbWorld*& p_worlds, MxS32 p_numWorlds)
|
||||||
{
|
{
|
||||||
// TODO
|
ModelDbWorld* worlds = p_worlds;
|
||||||
|
|
||||||
|
for (MxS32 i = 0; i < p_numWorlds; i++) {
|
||||||
|
delete[] worlds[i].m_worldName;
|
||||||
|
|
||||||
|
ModelDbPartListCursor cursor(worlds[i].m_partList);
|
||||||
|
ModelDbPart* part;
|
||||||
|
|
||||||
|
while (cursor.Next(part)) {
|
||||||
|
delete part;
|
||||||
|
}
|
||||||
|
|
||||||
|
delete worlds[i].m_partList;
|
||||||
|
|
||||||
|
ModelDbModel* models = worlds[i].m_models;
|
||||||
|
for (MxS32 j = 0; j < worlds[i].m_numModels; j++) {
|
||||||
|
models[j].Free();
|
||||||
|
}
|
||||||
|
|
||||||
|
delete[] worlds[i].m_models;
|
||||||
|
}
|
||||||
|
|
||||||
|
delete[] p_worlds;
|
||||||
|
p_worlds = NULL;
|
||||||
}
|
}
|
||||||
|
|
|
@ -91,6 +91,7 @@ public:
|
||||||
|
|
||||||
// SIZE 0x38
|
// SIZE 0x38
|
||||||
struct ModelDbModel {
|
struct ModelDbModel {
|
||||||
|
void Free();
|
||||||
MxResult Read(FILE* p_file);
|
MxResult Read(FILE* p_file);
|
||||||
|
|
||||||
char* m_modelName; // 0x00
|
char* m_modelName; // 0x00
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue