2
0
mirror of https://github.com/Laupetin/OpenAssetTools.git synced 2026-06-06 08:42:35 +00:00

Updated BSP linker to load assets on the FinalizeZone step.

This commit is contained in:
LJW-Dev
2025-11-01 17:06:08 +08:00
committed by Jan Laupetin
parent a64597c0fc
commit 9b661c41be
17 changed files with 87 additions and 66 deletions
@@ -1,5 +1,6 @@
#include "../BSPUtil.h"
#include "GfxWorldLinker.h"
#include "../BSPUtil.h"
#include "Utils/Pack.h"
namespace BSP
@@ -725,7 +726,7 @@ namespace BSP
return true;
}
AssetCreationResult GfxWorldLinker::linkGfxWorld(BSPData* bsp)
GfxWorld* GfxWorldLinker::linkGfxWorld(BSPData* bsp)
{
GfxWorld* gfxWorld = m_memory.Alloc<GfxWorld>();
gfxWorld->baseName = m_memory.Dup(bsp->name.c_str());
@@ -738,23 +739,23 @@ namespace BSP
cleanGfxWorld(gfxWorld);
if (!loadMapSurfaces(bsp, gfxWorld))
return AssetCreationResult::Failure();
return nullptr;
loadXModels(bsp, gfxWorld);
if (!loadLightmapData(gfxWorld))
return AssetCreationResult::Failure();
return nullptr;
loadSkyBox(bsp, gfxWorld);
if (!loadReflectionProbeData(gfxWorld))
return AssetCreationResult::Failure();
return nullptr;
// world bounds are based on loaded surface mins/maxs
loadWorldBounds(gfxWorld);
if (!loadOutdoors(gfxWorld))
return AssetCreationResult::Failure();
return nullptr;
// gfx cells depend on surface/smodel count
loadGfxCells(gfxWorld);
@@ -769,7 +770,6 @@ namespace BSP
loadDynEntData(gfxWorld);
auto gfxWorldAsset = m_context.AddAsset<AssetGfxWorld>(gfxWorld->name, gfxWorld);
return AssetCreationResult::Success(gfxWorldAsset);
return gfxWorld;
}
} // namespace BSP