From f66358a21e82096c734609ed50401310fb24d33c Mon Sep 17 00:00:00 2001 From: Victor Giers Date: Sat, 2 May 2026 04:12:42 +0200 Subject: [PATCH] Add foliage layer support to terrain brush stamps --- src/geometry/terrain-brush.ts | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/src/geometry/terrain-brush.ts b/src/geometry/terrain-brush.ts index 4a052f9e..6cf60340 100644 --- a/src/geometry/terrain-brush.ts +++ b/src/geometry/terrain-brush.ts @@ -284,6 +284,7 @@ export function applyTerrainBrushStamp(options: { tool: TerrainBrushTool; referenceHeight?: number | null; layerIndex?: number | null; + foliageLayerId?: string | null; }): Terrain { const nextTerrain = createTerrain(options.terrain); const result = applyTerrainBrushStampInPlace({ @@ -301,6 +302,7 @@ export function applyTerrainBrushStampInPlace(options: { tool: TerrainBrushTool; referenceHeight?: number | null; layerIndex?: number | null; + foliageLayerId?: string | null; }): TerrainBrushStampMutationResult { const { terrain, @@ -308,7 +310,8 @@ export function applyTerrainBrushStampInPlace(options: { settings, tool, referenceHeight = null, - layerIndex = null + layerIndex = null, + foliageLayerId = null } = options; const { radius, strength, falloff } = settings; const minSampleX = Math.max( @@ -461,9 +464,6 @@ export function applyTerrainBrushStampInPlace(options: { } case "foliagePaint": case "foliageErase": { - const foliageLayerId = - "foliageLayerId" in settings ? settings.foliageLayerId : null; - if (foliageLayerId === null) { throw new Error( "Foliage terrain brush stamps require a foliage layer id." @@ -636,6 +636,11 @@ export function createTerrainBrushPatchFromTerrains(options: { }); } + foliageMaskValues.sort( + (left, right) => + left.layerId.localeCompare(right.layerId) || left.index - right.index + ); + return { terrainId: before.id, heightSamples,