diff --git a/Source/Editor/Tools/Terrain/PaintTerrainGizmoMode.cs b/Source/Editor/Tools/Terrain/PaintTerrainGizmoMode.cs
index 05aaa48b5..4e7925dd9 100644
--- a/Source/Editor/Tools/Terrain/PaintTerrainGizmoMode.cs
+++ b/Source/Editor/Tools/Terrain/PaintTerrainGizmoMode.cs
@@ -36,35 +36,26 @@ namespace FlaxEditor.Tools.Terrain
"Layer 7",
};
- private class SplatmapData
+ private struct SplatmapData
{
- public IntPtr DataPtr { get; set; } = IntPtr.Zero;
- public int Size { get; set; } = 0;
-
- public SplatmapData(int size)
- {
- EnsureCapacity(size);
- }
+ public IntPtr DataPtr;
+ public int Size;
public void EnsureCapacity(int size)
{
if (Size < size)
{
if (DataPtr != IntPtr.Zero)
- {
Marshal.FreeHGlobal(DataPtr);
- }
DataPtr = Marshal.AllocHGlobal(size);
Size = size;
}
}
- ///
public void Free()
{
if (DataPtr == IntPtr.Zero)
return;
-
Marshal.FreeHGlobal(DataPtr);
DataPtr = IntPtr.Zero;
Size = 0;
@@ -72,7 +63,7 @@ namespace FlaxEditor.Tools.Terrain
}
private EditTerrainMapAction _activeAction;
- private List _cachedSplatmapData = new();
+ private SplatmapData[] _cachedSplatmapData = new SplatmapData[2];
///
/// The terrain painting gizmo.
@@ -268,14 +259,9 @@ namespace FlaxEditor.Tools.Terrain
/// The allocated memory using interface.
public IntPtr GetSplatmapTempBuffer(int size, int splatmapIndex)
{
- if (_cachedSplatmapData.Count <= splatmapIndex)
- {
- _cachedSplatmapData.Add(new SplatmapData(size));
- return _cachedSplatmapData[splatmapIndex].DataPtr;
- }
-
- _cachedSplatmapData[splatmapIndex].EnsureCapacity(size);
- return _cachedSplatmapData[splatmapIndex].DataPtr;
+ ref var splatmapData = ref _cachedSplatmapData[splatmapIndex];
+ splatmapData.EnsureCapacity(size);
+ return splatmapData.DataPtr;
}
///
@@ -309,9 +295,7 @@ namespace FlaxEditor.Tools.Terrain
// Free temporary memory buffer
foreach (var splatmapData in _cachedSplatmapData)
- {
splatmapData.Free();
- }
}
///