Update terrain brush state to support foliage layers and masks

This commit is contained in:
2026-05-02 04:15:01 +02:00
parent 7e0081f96f
commit a5cfd8faf8

View File

@@ -3310,13 +3310,25 @@ export function App({ store, draftStorage = null, initialStatusMessage }: AppPro
strength: terrainBrushSettings.strength, strength: terrainBrushSettings.strength,
falloff: terrainBrushSettings.falloff falloff: terrainBrushSettings.falloff
} }
: { : armedTerrainBrushTool === "foliagePaint" ||
terrainId: selectedTerrain.id, armedTerrainBrushTool === "foliageErase"
tool: armedTerrainBrushTool, ? activeFoliageLayer === null
radius: terrainBrushSettings.radius, ? null
strength: terrainBrushSettings.strength, : {
falloff: terrainBrushSettings.falloff 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( const resolvedTerrainPaintLayerIndex = clampTerrainPaintLayerIndex(
activeTerrainPaintLayerIndex activeTerrainPaintLayerIndex
); );
@@ -3329,6 +3341,15 @@ export function App({ store, draftStorage = null, initialStatusMessage }: AppPro
: (editorState.document.materials[ : (editorState.document.materials[
selectedTerrainActivePaintLayer.materialId selectedTerrainActivePaintLayer.materialId
] ?? null); ] ?? 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( const [ambientLightIntensityDraft, setAmbientLightIntensityDraft] = useState(
String(editorState.document.world.ambientLight.intensity) String(editorState.document.world.ambientLight.intensity)
); );