2024-01-01 19:17:38 -05:00
|
|
|
#include "viewlodlist.h"
|
|
|
|
|
|
|
|
#include "decomp.h"
|
|
|
|
|
2024-03-01 16:32:10 -05:00
|
|
|
#include <stdio.h>
|
|
|
|
|
|
|
|
DECOMP_SIZE_ASSERT(ViewLODListManager, 0x14)
|
|
|
|
DECOMP_SIZE_ASSERT(LODListBase, 0x10)
|
|
|
|
DECOMP_SIZE_ASSERT(LODList<ViewLOD>, 0x10)
|
|
|
|
DECOMP_SIZE_ASSERT(ViewLODList, 0x18)
|
|
|
|
|
|
|
|
// GLOBAL: LEGO1 0x10101064
|
|
|
|
int g_unk0x10101064 = 0;
|
2024-01-01 19:17:38 -05:00
|
|
|
|
|
|
|
// FUNCTION: LEGO1 0x100a6fd0
|
|
|
|
ViewLODListManager::ViewLODListManager()
|
|
|
|
{
|
|
|
|
}
|
|
|
|
|
|
|
|
// STUB: LEGO1 0x100a7130
|
|
|
|
ViewLODListManager::~ViewLODListManager()
|
|
|
|
{
|
|
|
|
// TODO
|
|
|
|
}
|
|
|
|
|
2024-03-01 16:32:10 -05:00
|
|
|
// FUNCTION: LEGO1 0x100a72c0
|
2024-01-04 16:46:16 -05:00
|
|
|
ViewLODList* ViewLODListManager::Create(const ROIName& rROIName, int lodCount)
|
2024-01-01 19:17:38 -05:00
|
|
|
{
|
2024-01-04 16:46:16 -05:00
|
|
|
// returned ViewLODList has a refCount of 1, i.e. caller must call Release()
|
|
|
|
// when it no longer holds on to the list
|
|
|
|
|
|
|
|
ViewLODList* pLODList;
|
|
|
|
int refCount;
|
|
|
|
char* pROIName;
|
|
|
|
|
|
|
|
assert(!Lookup(rROIName));
|
|
|
|
|
2024-03-01 16:32:10 -05:00
|
|
|
pLODList = new ViewLODList(lodCount, this);
|
2024-01-04 16:46:16 -05:00
|
|
|
refCount = pLODList->AddRef();
|
|
|
|
assert(refCount == 1);
|
|
|
|
|
2024-03-01 16:32:10 -05:00
|
|
|
ViewLODList* list = Lookup(rROIName);
|
|
|
|
if (list != NULL) {
|
|
|
|
list->Release();
|
|
|
|
|
|
|
|
char num[12];
|
|
|
|
sprintf(num, "%d", g_unk0x10101064);
|
|
|
|
pROIName = new char[strlen(rROIName) + strlen(num) + 1];
|
|
|
|
strcpy(pROIName, rROIName);
|
|
|
|
strcat(pROIName, num);
|
|
|
|
g_unk0x10101064++;
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
pROIName = new char[strlen(rROIName) + 1];
|
|
|
|
strcpy(pROIName, rROIName);
|
|
|
|
}
|
2024-01-04 16:46:16 -05:00
|
|
|
|
|
|
|
m_map[pROIName] = pLODList;
|
|
|
|
|
|
|
|
// NOTE: Lookup() adds a refCount
|
|
|
|
assert((Lookup(rROIName) == pLODList) && (pLODList->Release() == 1));
|
|
|
|
|
|
|
|
return pLODList;
|
2024-01-01 19:17:38 -05:00
|
|
|
}
|
|
|
|
|
2024-01-06 12:56:15 -05:00
|
|
|
// STUB: LEGO1 0x100a75b0
|
|
|
|
ViewLODList* ViewLODListManager::Lookup(const ROIName&) const
|
|
|
|
{
|
|
|
|
return NULL;
|
|
|
|
}
|
|
|
|
|
2024-01-01 19:17:38 -05:00
|
|
|
// STUB: LEGO1 0x100a7680
|
|
|
|
void ViewLODListManager::Destroy(ViewLODList* lodList)
|
|
|
|
{
|
|
|
|
}
|