Refine foliage mask logic and add support for foliage blocker masks

This commit is contained in:
2026-05-02 11:31:00 +02:00
parent bf127ab8f8
commit e977999cc5
2 changed files with 15 additions and 7 deletions

View File

@@ -6541,15 +6541,20 @@ export class ViewportHost {
} }
private getTerrainFoliageMaskPreviewLayerId(terrainId: string): string | null { private getTerrainFoliageMaskPreviewLayerId(terrainId: string): string | null {
const brushState = this.currentTerrainBrushState;
if (brushState === null || brushState.terrainId !== terrainId) {
return null;
}
if ( if (
this.currentTerrainBrushState === null || brushState.tool !== "foliagePaint" &&
this.currentTerrainBrushState.terrainId !== terrainId || brushState.tool !== "foliageErase"
!isTerrainFoliageLayerMaskTool(this.currentTerrainBrushState.tool)
) { ) {
return null; return null;
} }
return this.currentTerrainBrushState.foliageLayerId; return brushState.foliageLayerId;
} }
private isTerrainFoliageBlockerMaskPreviewActive( private isTerrainFoliageBlockerMaskPreviewActive(
@@ -9699,7 +9704,8 @@ export class ViewportHost {
tool: toolState.tool, tool: toolState.tool,
referenceHeight, referenceHeight,
layerIndex: toolState.tool === "paint" ? toolState.layerIndex : null, layerIndex: toolState.tool === "paint" ? toolState.layerIndex : null,
foliageLayerId: isTerrainFoliageLayerMaskTool(toolState.tool) foliageLayerId:
toolState.tool === "foliagePaint" || toolState.tool === "foliageErase"
? toolState.foliageLayerId ? toolState.foliageLayerId
: null : null
}); });

View File

@@ -177,7 +177,8 @@ describe("terrain commands", () => {
terrainId: terrain.id, terrainId: terrain.id,
heightSamples: [{ index: 4, before: 0, after: 2 }], heightSamples: [{ index: 4, before: 0, after: 2 }],
paintWeights: [{ index: 1, before: 0, after: 0.5 }], paintWeights: [{ index: 1, before: 0, after: 0.5 }],
foliageMaskValues: [] foliageMaskValues: [],
foliageBlockerMaskValues: []
} }
}) })
); );
@@ -263,7 +264,8 @@ describe("terrain commands", () => {
before: 0, before: 0,
after: 0.75 after: 0.75
} }
] ],
foliageBlockerMaskValues: []
} }
}) })
); );