Implement foliage mask preview logic for terrain materials
This commit is contained in:
@@ -6493,6 +6493,26 @@ export class ViewportHost {
|
|||||||
return this.currentDocument.materials[materialId] ?? null;
|
return this.currentDocument.materials[materialId] ?? null;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private getTerrainFoliageMaskPreviewLayerId(terrainId: string): string | null {
|
||||||
|
if (
|
||||||
|
this.currentTerrainBrushState === null ||
|
||||||
|
this.currentTerrainBrushState.terrainId !== terrainId ||
|
||||||
|
(this.currentTerrainBrushState.tool !== "foliagePaint" &&
|
||||||
|
this.currentTerrainBrushState.tool !== "foliageErase")
|
||||||
|
) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
return this.currentTerrainBrushState.foliageLayerId;
|
||||||
|
}
|
||||||
|
|
||||||
|
private getTerrainFoliageMaskPreviewColor(terrainId: string): number {
|
||||||
|
return this.currentTerrainBrushState?.terrainId === terrainId &&
|
||||||
|
this.currentTerrainBrushState.tool === "foliageErase"
|
||||||
|
? TERRAIN_BRUSH_PREVIEW_FOLIAGE_ERASE_COLOR
|
||||||
|
: TERRAIN_BRUSH_PREVIEW_FOLIAGE_PAINT_COLOR;
|
||||||
|
}
|
||||||
|
|
||||||
private createTerrainMaterial(terrain: Terrain): Material {
|
private createTerrainMaterial(terrain: Terrain): Material {
|
||||||
const selected = isTerrainSelected(this.currentSelection, terrain.id);
|
const selected = isTerrainSelected(this.currentSelection, terrain.id);
|
||||||
const hovered = isTerrainSelected(this.hoveredSelection, terrain.id);
|
const hovered = isTerrainSelected(this.hoveredSelection, terrain.id);
|
||||||
@@ -6521,6 +6541,12 @@ export class ViewportHost {
|
|||||||
|
|
||||||
return createTerrainLayerBlendMaterial({
|
return createTerrainLayerBlendMaterial({
|
||||||
layerTextures,
|
layerTextures,
|
||||||
|
foliageMaskPreviewColorHex:
|
||||||
|
this.getTerrainFoliageMaskPreviewColor(terrain.id),
|
||||||
|
foliageMaskPreviewOpacity:
|
||||||
|
this.getTerrainFoliageMaskPreviewLayerId(terrain.id) === null
|
||||||
|
? 0
|
||||||
|
: 0.62,
|
||||||
emissiveHex: active
|
emissiveHex: active
|
||||||
? TERRAIN_ACTIVE_EMISSIVE
|
? TERRAIN_ACTIVE_EMISSIVE
|
||||||
: selected
|
: selected
|
||||||
@@ -6542,6 +6568,12 @@ export class ViewportHost {
|
|||||||
|
|
||||||
return createTerrainLayerColorBlendMaterial({
|
return createTerrainLayerColorBlendMaterial({
|
||||||
layerColors,
|
layerColors,
|
||||||
|
foliageMaskPreviewColorHex:
|
||||||
|
this.getTerrainFoliageMaskPreviewColor(terrain.id),
|
||||||
|
foliageMaskPreviewOpacity:
|
||||||
|
this.getTerrainFoliageMaskPreviewLayerId(terrain.id) === null
|
||||||
|
? 0
|
||||||
|
: 0.62,
|
||||||
emissiveHex: active
|
emissiveHex: active
|
||||||
? TERRAIN_ACTIVE_EMISSIVE
|
? TERRAIN_ACTIVE_EMISSIVE
|
||||||
: selected
|
: selected
|
||||||
|
|||||||
Reference in New Issue
Block a user