[ZoneBuilder] Some clipmap fixes (which don't work 😦)

This commit is contained in:
momo5502 2016-12-22 23:21:20 +01:00
parent 66c35f7f47
commit 9fab21c269
3 changed files with 17 additions and 11 deletions

View File

@ -49,33 +49,32 @@ namespace Assets
Utils::Stream::ClearPointer(&dest->entityString); Utils::Stream::ClearPointer(&dest->entityString);
} }
AssertSize(Game::MapTriggers, 24);
if (asset->trigger.models) if (asset->trigger.models)
{ {
AssertSize(Game::TriggerModel, 8); AssertSize(Game::TriggerModel, 8);
buffer->align(Utils::Stream::ALIGN_4); buffer->align(Utils::Stream::ALIGN_4);
buffer->saveArray(asset->trigger.models, asset->trigger.modelCount); buffer->saveArray(asset->trigger.models, asset->trigger.modelCount);
Utils::Stream::ClearPointer(&dest->trigger.models); Utils::Stream::ClearPointer(&dest->trigger.models);
} }
if (asset->trigger.hulls) if (asset->trigger.hulls)
{ {
AssertSize(Game::TriggerHull, 32); AssertSize(Game::TriggerHull, 32);
buffer->align(Utils::Stream::ALIGN_4); buffer->align(Utils::Stream::ALIGN_4);
buffer->saveArray(asset->trigger.hulls, asset->trigger.hullCount); buffer->saveArray(asset->trigger.hulls, asset->trigger.hullCount);
Utils::Stream::ClearPointer(&dest->trigger.hulls); Utils::Stream::ClearPointer(&dest->trigger.hulls);
} }
if (asset->trigger.slabs) if (asset->trigger.slabs)
{ {
AssertSize(Game::TriggerSlab, 20); AssertSize(Game::TriggerSlab, 20);
buffer->align(Utils::Stream::ALIGN_4); buffer->align(Utils::Stream::ALIGN_4);
buffer->saveArray(asset->trigger.slabs, asset->trigger.slabCount); buffer->saveArray(asset->trigger.slabs, asset->trigger.slabCount);
Utils::Stream::ClearPointer(&dest->trigger.slabs); Utils::Stream::ClearPointer(&dest->trigger.slabs);
} }
@ -88,13 +87,16 @@ namespace Assets
Game::Stage* destStages = buffer->dest<Game::Stage>(); Game::Stage* destStages = buffer->dest<Game::Stage>();
buffer->saveArray(asset->stages, asset->stageCount); buffer->saveArray(asset->stages, asset->stageCount);
for (int i = 0; i < asset->stageCount; ++i) for (char i = 0; i < asset->stageCount; ++i)
{ {
Game::Stage* destStage = &destStages[i]; Game::Stage* destStage = &destStages[i];
Game::Stage* stage = &asset->stages[i]; Game::Stage* stage = &asset->stages[i];
buffer->saveString(stage->stageName); if (stage->stageName)
Utils::Stream::ClearPointer(&destStage->stageName); {
buffer->saveString(stage->stageName);
Utils::Stream::ClearPointer(&destStage->stageName);
}
} }
Utils::Stream::ClearPointer(&dest->stages); Utils::Stream::ClearPointer(&dest->stages);

View File

@ -12,8 +12,6 @@ namespace Assets
Game::clipMap_t* dest = buffer->dest<Game::clipMap_t>(); Game::clipMap_t* dest = buffer->dest<Game::clipMap_t>();
buffer->save(asset); buffer->save(asset);
dest->isInUse = 0;
buffer->pushBlock(Game::XFILE_BLOCK_VIRTUAL); buffer->pushBlock(Game::XFILE_BLOCK_VIRTUAL);
if (asset->name) if (asset->name)

View File

@ -552,6 +552,12 @@ namespace Components
// Don't create default assets // Don't create default assets
Utils::Hook::Set<BYTE>(0x407BAA, 0xEB); Utils::Hook::Set<BYTE>(0x407BAA, 0xEB);
// Don't mark clip maps as 'in use'
Utils::Hook::Nop(0x405E07, 7);
// Don't mark assets
//Utils::Hook::Nop(0x5BB632, 5);
// Don't load sounds // Don't load sounds
//Utils::Hook::Set<BYTE>(0x413430, 0xC3); //Utils::Hook::Set<BYTE>(0x413430, 0xC3);