auto-git:
[change] src/viewport-three/viewport-host.ts
This commit is contained in:
@@ -59,7 +59,8 @@ import {
|
|||||||
import {
|
import {
|
||||||
getTerrainBrushCommandLabel,
|
getTerrainBrushCommandLabel,
|
||||||
type ArmedTerrainBrushState,
|
type ArmedTerrainBrushState,
|
||||||
type TerrainBrushStrokeCommit
|
type TerrainBrushStrokeCommit,
|
||||||
|
type TerrainBrushTool
|
||||||
} from "../core/terrain-brush";
|
} from "../core/terrain-brush";
|
||||||
import { getWhiteboxSelectionFeedbackLabel } from "../core/whitebox-selection-feedback";
|
import { getWhiteboxSelectionFeedbackLabel } from "../core/whitebox-selection-feedback";
|
||||||
import type { WhiteboxSelectionMode } from "../core/whitebox-selection-mode";
|
import type { WhiteboxSelectionMode } from "../core/whitebox-selection-mode";
|
||||||
@@ -420,6 +421,27 @@ function parseTerrainFoliageMaskValueKey(key: string): {
|
|||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function isTerrainFoliageLayerMaskTool(
|
||||||
|
tool: TerrainBrushTool | null | undefined
|
||||||
|
): tool is "foliagePaint" | "foliageErase" {
|
||||||
|
return tool === "foliagePaint" || tool === "foliageErase";
|
||||||
|
}
|
||||||
|
|
||||||
|
function isTerrainFoliageBlockerMaskTool(
|
||||||
|
tool: TerrainBrushTool | null | undefined
|
||||||
|
): tool is "foliageBlockerPaint" | "foliageBlockerErase" {
|
||||||
|
return tool === "foliageBlockerPaint" || tool === "foliageBlockerErase";
|
||||||
|
}
|
||||||
|
|
||||||
|
function isTerrainFoliageMaskTool(
|
||||||
|
tool: TerrainBrushTool | null | undefined
|
||||||
|
): boolean {
|
||||||
|
return (
|
||||||
|
isTerrainFoliageLayerMaskTool(tool) ||
|
||||||
|
isTerrainFoliageBlockerMaskTool(tool)
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
interface AffectedSelectionIds {
|
interface AffectedSelectionIds {
|
||||||
brushIds: Set<string>;
|
brushIds: Set<string>;
|
||||||
terrainIds: Set<string>;
|
terrainIds: Set<string>;
|
||||||
@@ -1626,18 +1648,14 @@ export class ViewportHost {
|
|||||||
terrainBrushState?.tool === "paint"
|
terrainBrushState?.tool === "paint"
|
||||||
? this.currentTerrainBrushState.layerIndex !==
|
? this.currentTerrainBrushState.layerIndex !==
|
||||||
terrainBrushState.layerIndex
|
terrainBrushState.layerIndex
|
||||||
: (this.currentTerrainBrushState?.tool === "foliagePaint" ||
|
: isTerrainFoliageLayerMaskTool(this.currentTerrainBrushState?.tool) &&
|
||||||
this.currentTerrainBrushState?.tool === "foliageErase") &&
|
isTerrainFoliageLayerMaskTool(terrainBrushState?.tool)
|
||||||
(terrainBrushState?.tool === "foliagePaint" ||
|
|
||||||
terrainBrushState?.tool === "foliageErase")
|
|
||||||
? this.currentTerrainBrushState.foliageLayerId !==
|
? this.currentTerrainBrushState.foliageLayerId !==
|
||||||
terrainBrushState.foliageLayerId
|
terrainBrushState.foliageLayerId
|
||||||
: this.currentTerrainBrushState?.tool === "paint" ||
|
: this.currentTerrainBrushState?.tool === "paint" ||
|
||||||
terrainBrushState?.tool === "paint" ||
|
terrainBrushState?.tool === "paint" ||
|
||||||
this.currentTerrainBrushState?.tool === "foliagePaint" ||
|
isTerrainFoliageMaskTool(this.currentTerrainBrushState?.tool) ||
|
||||||
this.currentTerrainBrushState?.tool === "foliageErase" ||
|
isTerrainFoliageMaskTool(terrainBrushState?.tool);
|
||||||
terrainBrushState?.tool === "foliagePaint" ||
|
|
||||||
terrainBrushState?.tool === "foliageErase";
|
|
||||||
|
|
||||||
this.currentTerrainBrushState = terrainBrushState;
|
this.currentTerrainBrushState = terrainBrushState;
|
||||||
|
|
||||||
@@ -6526,8 +6544,7 @@ export class ViewportHost {
|
|||||||
if (
|
if (
|
||||||
this.currentTerrainBrushState === null ||
|
this.currentTerrainBrushState === null ||
|
||||||
this.currentTerrainBrushState.terrainId !== terrainId ||
|
this.currentTerrainBrushState.terrainId !== terrainId ||
|
||||||
(this.currentTerrainBrushState.tool !== "foliagePaint" &&
|
!isTerrainFoliageLayerMaskTool(this.currentTerrainBrushState.tool)
|
||||||
this.currentTerrainBrushState.tool !== "foliageErase")
|
|
||||||
) {
|
) {
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
@@ -6535,11 +6552,38 @@ export class ViewportHost {
|
|||||||
return this.currentTerrainBrushState.foliageLayerId;
|
return this.currentTerrainBrushState.foliageLayerId;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private isTerrainFoliageBlockerMaskPreviewActive(
|
||||||
|
terrainId: string
|
||||||
|
): boolean {
|
||||||
|
return (
|
||||||
|
this.currentTerrainBrushState !== null &&
|
||||||
|
this.currentTerrainBrushState.terrainId === terrainId &&
|
||||||
|
isTerrainFoliageBlockerMaskTool(this.currentTerrainBrushState.tool)
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
private isTerrainFoliageMaskPreviewActive(terrainId: string): boolean {
|
||||||
|
return (
|
||||||
|
this.getTerrainFoliageMaskPreviewLayerId(terrainId) !== null ||
|
||||||
|
this.isTerrainFoliageBlockerMaskPreviewActive(terrainId)
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
private getTerrainFoliageMaskPreviewColor(terrainId: string): number {
|
private getTerrainFoliageMaskPreviewColor(terrainId: string): number {
|
||||||
return this.currentTerrainBrushState?.terrainId === terrainId &&
|
if (this.currentTerrainBrushState?.terrainId !== terrainId) {
|
||||||
this.currentTerrainBrushState.tool === "foliageErase"
|
return TERRAIN_BRUSH_PREVIEW_FOLIAGE_PAINT_COLOR;
|
||||||
? TERRAIN_BRUSH_PREVIEW_FOLIAGE_ERASE_COLOR
|
}
|
||||||
: TERRAIN_BRUSH_PREVIEW_FOLIAGE_PAINT_COLOR;
|
|
||||||
|
switch (this.currentTerrainBrushState.tool) {
|
||||||
|
case "foliageErase":
|
||||||
|
return TERRAIN_BRUSH_PREVIEW_FOLIAGE_ERASE_COLOR;
|
||||||
|
case "foliageBlockerPaint":
|
||||||
|
return TERRAIN_BRUSH_PREVIEW_FOLIAGE_BLOCKER_PAINT_COLOR;
|
||||||
|
case "foliageBlockerErase":
|
||||||
|
return TERRAIN_BRUSH_PREVIEW_FOLIAGE_BLOCKER_ERASE_COLOR;
|
||||||
|
default:
|
||||||
|
return TERRAIN_BRUSH_PREVIEW_FOLIAGE_PAINT_COLOR;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private createTerrainMaterial(terrain: Terrain): Material {
|
private createTerrainMaterial(terrain: Terrain): Material {
|
||||||
@@ -6573,7 +6617,7 @@ export class ViewportHost {
|
|||||||
foliageMaskPreviewColorHex:
|
foliageMaskPreviewColorHex:
|
||||||
this.getTerrainFoliageMaskPreviewColor(terrain.id),
|
this.getTerrainFoliageMaskPreviewColor(terrain.id),
|
||||||
foliageMaskPreviewOpacity:
|
foliageMaskPreviewOpacity:
|
||||||
this.getTerrainFoliageMaskPreviewLayerId(terrain.id) === null
|
!this.isTerrainFoliageMaskPreviewActive(terrain.id)
|
||||||
? 0
|
? 0
|
||||||
: 0.62,
|
: 0.62,
|
||||||
emissiveHex: active
|
emissiveHex: active
|
||||||
@@ -6600,7 +6644,7 @@ export class ViewportHost {
|
|||||||
foliageMaskPreviewColorHex:
|
foliageMaskPreviewColorHex:
|
||||||
this.getTerrainFoliageMaskPreviewColor(terrain.id),
|
this.getTerrainFoliageMaskPreviewColor(terrain.id),
|
||||||
foliageMaskPreviewOpacity:
|
foliageMaskPreviewOpacity:
|
||||||
this.getTerrainFoliageMaskPreviewLayerId(terrain.id) === null
|
!this.isTerrainFoliageMaskPreviewActive(terrain.id)
|
||||||
? 0
|
? 0
|
||||||
: 0.62,
|
: 0.62,
|
||||||
emissiveHex: active
|
emissiveHex: active
|
||||||
|
|||||||
Reference in New Issue
Block a user