Add foliage layer support to terrain brush stamps

This commit is contained in:
2026-05-02 04:12:42 +02:00
parent da753fc560
commit f66358a21e

View File

@@ -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,