From a5cfd8faf894f307fad477801f153218a3cd554d Mon Sep 17 00:00:00 2001 From: Victor Giers Date: Sat, 2 May 2026 04:15:01 +0200 Subject: [PATCH] Update terrain brush state to support foliage layers and masks --- src/app/App.tsx | 35 ++++++++++++++++++++++++++++------- 1 file changed, 28 insertions(+), 7 deletions(-) diff --git a/src/app/App.tsx b/src/app/App.tsx index 2e5424ca..35592c04 100644 --- a/src/app/App.tsx +++ b/src/app/App.tsx @@ -3310,13 +3310,25 @@ export function App({ store, draftStorage = null, initialStatusMessage }: AppPro strength: terrainBrushSettings.strength, falloff: terrainBrushSettings.falloff } - : { - terrainId: selectedTerrain.id, - tool: armedTerrainBrushTool, - radius: terrainBrushSettings.radius, - strength: terrainBrushSettings.strength, - falloff: terrainBrushSettings.falloff - }; + : armedTerrainBrushTool === "foliagePaint" || + armedTerrainBrushTool === "foliageErase" + ? activeFoliageLayer === null + ? null + : { + terrainId: selectedTerrain.id, + tool: armedTerrainBrushTool, + foliageLayerId: activeFoliageLayer.id, + radius: terrainBrushSettings.radius, + strength: terrainBrushSettings.strength, + falloff: terrainBrushSettings.falloff + } + : { + terrainId: selectedTerrain.id, + tool: armedTerrainBrushTool, + radius: terrainBrushSettings.radius, + strength: terrainBrushSettings.strength, + falloff: terrainBrushSettings.falloff + }; const resolvedTerrainPaintLayerIndex = clampTerrainPaintLayerIndex( activeTerrainPaintLayerIndex ); @@ -3329,6 +3341,15 @@ export function App({ store, draftStorage = null, initialStatusMessage }: AppPro : (editorState.document.materials[ selectedTerrainActivePaintLayer.materialId ] ?? null); + const selectedTerrainActiveFoliageMask = + selectedTerrain === null || activeFoliageLayer === null + ? null + : (selectedTerrain.foliageMasks[activeFoliageLayer.id] ?? null); + const selectedTerrainActiveFoliageMaskPaintedSampleCount = + selectedTerrainActiveFoliageMask === null + ? 0 + : selectedTerrainActiveFoliageMask.values.filter((value) => value > 0) + .length; const [ambientLightIntensityDraft, setAmbientLightIntensityDraft] = useState( String(editorState.document.world.ambientLight.intensity) );