[ZoneBuilder] Rough concept for external data
This commit is contained in:
parent
6a51d280ae
commit
b0f13911ca
@ -112,12 +112,19 @@ namespace Assets
|
||||
buffer->align(Utils::Stream::ALIGN_4);
|
||||
|
||||
Game::GfxImageLoadDef* destTexture = buffer->dest<Game::GfxImageLoadDef>();
|
||||
buffer->save(asset->texture, 16);
|
||||
buffer->save(asset->loadDef, 16);
|
||||
|
||||
builder->incrementExternalSize(asset->loadDef->dataSize);
|
||||
|
||||
// Zero the size!
|
||||
destTexture->dataSize = 0;
|
||||
|
||||
Utils::Stream::ClearPointer(&dest->texture);
|
||||
if (destTexture->dataSize > 0)
|
||||
{
|
||||
buffer->save(asset->loadDef->data, asset->loadDef->dataSize);
|
||||
}
|
||||
|
||||
Utils::Stream::ClearPointer(&dest->loadDef);
|
||||
}
|
||||
|
||||
buffer->popBlock();
|
||||
|
@ -5,7 +5,7 @@ namespace Components
|
||||
std::string ZoneBuilder::TraceZone;
|
||||
std::vector<std::pair<Game::XAssetType, std::string>> ZoneBuilder::TraceAssets;
|
||||
|
||||
ZoneBuilder::Zone::Zone(std::string name) : dataMap("zone_source/" + name + ".csv"), zoneName(name), indexStart(0), branding { 0 },
|
||||
ZoneBuilder::Zone::Zone(std::string name) : dataMap("zone_source/" + name + ".csv"), zoneName(name), indexStart(0), externalSize(0), branding { 0 },
|
||||
|
||||
// Reserve 100MB by default.
|
||||
// That's totally fine, as the dedi doesn't load images and therefore doesn't need much memory.
|
||||
@ -316,7 +316,7 @@ namespace Components
|
||||
this->buffer.enterCriticalSection();
|
||||
Game::XFile* header = reinterpret_cast<Game::XFile*>(this->buffer.data());
|
||||
header->size = this->buffer.length() - sizeof(Game::XFile); // Write correct data size
|
||||
header->externalSize = 0; // ?
|
||||
header->externalSize = this->externalSize; // This actually stores how much external data has to be loaded. It's used to calculate the loadscreen progress
|
||||
|
||||
// Write stream sizes
|
||||
for (int i = 0; i < Game::MAX_XFILE_COUNT; ++i)
|
||||
@ -459,6 +459,11 @@ namespace Components
|
||||
}
|
||||
}
|
||||
|
||||
void ZoneBuilder::Zone::incrementExternalSize(unsigned int size)
|
||||
{
|
||||
this->externalSize += size;
|
||||
}
|
||||
|
||||
bool ZoneBuilder::IsEnabled()
|
||||
{
|
||||
return (Flags::HasFlag("zonebuilder") && !Dedicated::IsEnabled());
|
||||
|
@ -41,6 +41,8 @@ namespace Components
|
||||
|
||||
void store(Game::XAssetHeader header);
|
||||
|
||||
void incrementExternalSize(unsigned int size);
|
||||
|
||||
private:
|
||||
void loadFastFiles();
|
||||
|
||||
@ -55,6 +57,7 @@ namespace Components
|
||||
uint32_t safeGetPointer(const void* pointer);
|
||||
|
||||
int indexStart;
|
||||
unsigned int externalSize;
|
||||
Utils::Stream buffer;
|
||||
|
||||
std::string zoneName;
|
||||
|
Loading…
Reference in New Issue
Block a user