Fix missing terrain bounds update after modifying terrain

Fixes #5
This commit is contained in:
Wojtek Figat
2021-02-07 21:11:04 +01:00
parent 96f1d9e820
commit 2325de3ddc
3 changed files with 6 additions and 5 deletions

View File

@@ -36,6 +36,7 @@ Terrain::~Terrain()
void Terrain::UpdateBounds()
{
PROFILE_CPU();
_box = BoundingBox(_transform.Translation, _transform.Translation);
for (int32 i = 0; i < _patches.Count(); i++)
{
@@ -48,6 +49,7 @@ void Terrain::UpdateBounds()
void Terrain::CacheNeighbors()
{
PROFILE_CPU();
for (int32 pathIndex = 0; pathIndex < _patches.Count(); pathIndex++)
{
const auto patch = _patches[pathIndex];

View File

@@ -192,7 +192,7 @@ bool TerrainChunk::Intersects(const Ray& ray, float& distance)
void TerrainChunk::UpdateBounds()
{
const Vector3 boundsExtent = _patch->_terrain->_boundsExtent;
const float size = _patch->_terrain->_chunkSize * TERRAIN_UNITS_PER_VERTEX;
const float size = (float)_patch->_terrain->_chunkSize * TERRAIN_UNITS_PER_VERTEX;
Transform terrainTransform = _patch->_terrain->_transform;
Transform localTransform;

View File

@@ -951,7 +951,7 @@ bool TerrainPatch::SetupHeightMap(int32 heightMapLength, const float* heightMap,
chunk._yHeight = chunkHeights[chunkIndex];
chunk.UpdateTransform();
}
UpdateBounds();
_terrain->UpdateBounds();
UpdateCollision();
#if TERRAIN_UPDATING
@@ -1431,7 +1431,7 @@ bool TerrainPatch::ModifyHeightMap(const float* samples, const Int2& modifiedOff
chunk._yHeight = chunkHeights[chunkIndex];
chunk.UpdateTransform();
}
UpdateBounds();
_terrain->UpdateBounds();
return UpdateHeightData(info, modifiedOffset, modifiedSize, wasHeightRangeChanged);
}
@@ -2108,9 +2108,8 @@ void TerrainPatch::UpdatePostManualDeserialization()
{
auto& chunk = Chunks[chunkIndex];
chunk.UpdateTransform();
chunk.UpdateBounds();
}
UpdateBounds();
_terrain->UpdateBounds();
ScopeLock lock(_collisionLocker);