1
0
Fork 0
mirror of https://github.com/OpenMW/openmw.git synced 2025-01-30 08:15:37 +00:00

Cleanup(CSVRender::Cell:updateLand): Early exit when landscape should

not be loaded
This commit is contained in:
Dave Corley 2023-12-09 11:53:18 -06:00
parent 78fd135764
commit dd7a2f22d1

View file

@ -133,32 +133,33 @@ void CSVRender::Cell::updateLand()
// Setup land if available
const CSMWorld::IdCollection<CSMWorld::Land>& land = mData.getLand();
int landIndex = land.searchId(mId);
if (landIndex != -1 && !land.getRecord(mId).isDeleted())
if (landIndex == -1 || land.getRecord(mId).isDeleted())
return;
const ESM::Land& esmLand = land.getRecord(mId).get();
if (!esmLand.getLandData(ESM::Land::DATA_VHGT))
mTerrainStorage->resetHeights();
if (mTerrain)
{
const ESM::Land& esmLand = land.getRecord(mId).get();
if (!esmLand.getLandData(ESM::Land::DATA_VHGT))
mTerrainStorage->resetHeights();
if (mTerrain)
{
mTerrain->unloadCell(mCoordinates.getX(), mCoordinates.getY());
mTerrain->clearAssociatedCaches();
}
else
{
constexpr double expiryDelay = 0;
mTerrain = std::make_unique<Terrain::TerrainGrid>(mCellNode, mCellNode, mData.getResourceSystem().get(),
mTerrainStorage, Mask_Terrain, ESM::Cell::sDefaultWorldspaceId, expiryDelay);
}
mTerrain->loadCell(esmLand.mX, esmLand.mY);
if (!mCellBorder)
mCellBorder = std::make_unique<CellBorder>(mCellNode, mCoordinates);
mCellBorder->buildShape(esmLand);
mTerrain->unloadCell(mCoordinates.getX(), mCoordinates.getY());
mTerrain->clearAssociatedCaches();
}
else
{
constexpr double expiryDelay = 0;
mTerrain = std::make_unique<Terrain::TerrainGrid>(mCellNode, mCellNode, mData.getResourceSystem().get(),
mTerrainStorage, Mask_Terrain, ESM::Cell::sDefaultWorldspaceId, expiryDelay);
}
mTerrain->loadCell(esmLand.mX, esmLand.mY);
if (!mCellBorder)
mCellBorder = std::make_unique<CellBorder>(mCellNode, mCoordinates);
mCellBorder->buildShape(esmLand);
}
void CSVRender::Cell::unloadLand()