Add ability to clean patch caches

This commit is contained in:
Wiktor Kocielski
2023-08-15 12:35:32 +03:00
parent 73076dc5cb
commit a3063258e5
2 changed files with 51 additions and 6 deletions

View File

@@ -1125,42 +1125,67 @@ bool TerrainPatch::InitializeHeightMap()
float* TerrainPatch::GetHeightmapData()
{
PROFILE_CPU_NAMED("Terrain.GetHeightmapData");
if (_cachedHeightMap.HasItems())
return _cachedHeightMap.Get();
PROFILE_CPU_NAMED("Terrain.GetHeightmapData");
CacheHeightData();
return _cachedHeightMap.Get();
}
void TerrainPatch::ClearHeightmapCache()
{
PROFILE_CPU_NAMED("Terrain.ClearHeightmapCache");
_cachedHeightMap.Clear();
}
byte* TerrainPatch::GetHolesMaskData()
{
PROFILE_CPU_NAMED("Terrain.GetHolesMaskData");
if (_cachedHolesMask.HasItems())
return _cachedHolesMask.Get();
PROFILE_CPU_NAMED("Terrain.GetHolesMaskData");
CacheHeightData();
return _cachedHolesMask.Get();
}
void TerrainPatch::ClearHolesMaskCache()
{
PROFILE_CPU_NAMED("Terrain.ClearHolesMaskCache");
_cachedHolesMask.Clear();
}
Color32* TerrainPatch::GetSplatMapData(int32 index)
{
ASSERT(index >= 0 && index < TERRAIN_MAX_SPLATMAPS_COUNT);
PROFILE_CPU_NAMED("Terrain.GetSplatMapData");
if (_cachedSplatMap[index].HasItems())
return _cachedSplatMap[index].Get();
PROFILE_CPU_NAMED("Terrain.GetSplatMapData");
CacheSplatData();
return _cachedSplatMap[index].Get();
}
void TerrainPatch::ClearSplatMapCache()
{
PROFILE_CPU_NAMED("Terrain.ClearSplatMapCache");
_cachedSplatMap->Clear();
}
void TerrainPatch::ClearCache()
{
ClearHeightmapCache();
ClearHolesMaskCache();
ClearSplatMapCache();
}
void TerrainPatch::CacheHeightData()
{
PROFILE_CPU_NAMED("Terrain.CacheHeightData");

View File

@@ -229,12 +229,22 @@ public:
/// <returns>The heightmap data.</returns>
float* GetHeightmapData();
/// <summary>
/// Clears cache of the heightmap data.
/// </summary>
void ClearHeightmapCache();
/// <summary>
/// Gets the raw pointer to the holes mask data.
/// </summary>
/// <returns>The holes mask data.</returns>
byte* GetHolesMaskData();
/// <summary>
/// Clears cache of the holes mask data.
/// </summary>
void ClearHolesMaskCache();
/// <summary>
/// Gets the raw pointer to the splat map data.
/// </summary>
@@ -242,6 +252,16 @@ public:
/// <returns>The splat map data.</returns>
Color32* GetSplatMapData(int32 index);
/// <summary>
/// Clears cache of the splat map data.
/// </summary>
void ClearSplatMapCache();
/// <summary>
/// Clears all caches.
/// </summary>
void ClearCache();
/// <summary>
/// Modifies the terrain patch heightmap with the given samples.
/// </summary>