auto-git:
[add] src/rendering/terrain-layer-material.ts [add] tests/domain/terrains.test.ts [change] src/app/App.tsx [change] src/core/terrain-brush.ts [change] src/document/migrate-scene-document.ts [change] src/document/scene-document-validation.ts [change] src/document/scene-document.ts [change] src/document/terrains.ts [change] src/geometry/terrain-brush.ts [change] src/geometry/terrain-mesh.ts [change] src/runtime-three/rapier-collision-world.ts [change] src/runtime-three/runtime-host.ts [change] src/runtime-three/runtime-scene-build.ts [change] src/viewport-three/ViewportCanvas.tsx [change] src/viewport-three/ViewportPanel.tsx [change] src/viewport-three/viewport-host.ts [change] tests/domain/build-runtime-scene.test.ts [change] tests/domain/rapier-collision-world.test.ts [change] tests/domain/terrain.command.test.ts [change] tests/domain/water-material.test.ts [change] tests/geometry/terrain-brush.test.ts [change] tests/geometry/terrain-mesh.test.ts [change] tests/serialization/scene-document-json.test.ts [change] tests/unit/terrain-foundation.integration.test.tsx [change] tests/unit/viewport-canvas.test.tsx
This commit is contained in:
@@ -1,6 +1,12 @@
|
||||
import type { Terrain } from "../document/terrains";
|
||||
import { TERRAIN_LAYER_COUNT } from "../document/terrains";
|
||||
|
||||
export type TerrainBrushTool = "raise" | "lower" | "smooth" | "flatten";
|
||||
export type TerrainBrushTool =
|
||||
| "raise"
|
||||
| "lower"
|
||||
| "smooth"
|
||||
| "flatten"
|
||||
| "paint";
|
||||
|
||||
export interface TerrainBrushSettings {
|
||||
radius: number;
|
||||
@@ -8,11 +14,21 @@ export interface TerrainBrushSettings {
|
||||
falloff: number;
|
||||
}
|
||||
|
||||
export interface ArmedTerrainBrushState extends TerrainBrushSettings {
|
||||
export interface ArmedTerrainSculptBrushState extends TerrainBrushSettings {
|
||||
terrainId: string;
|
||||
tool: TerrainBrushTool;
|
||||
tool: Exclude<TerrainBrushTool, "paint">;
|
||||
}
|
||||
|
||||
export interface ArmedTerrainPaintBrushState extends TerrainBrushSettings {
|
||||
terrainId: string;
|
||||
tool: "paint";
|
||||
layerIndex: number;
|
||||
}
|
||||
|
||||
export type ArmedTerrainBrushState =
|
||||
| ArmedTerrainSculptBrushState
|
||||
| ArmedTerrainPaintBrushState;
|
||||
|
||||
export interface TerrainBrushStrokeCommit {
|
||||
terrain: Terrain;
|
||||
commandLabel: string;
|
||||
@@ -73,6 +89,17 @@ export function createDefaultTerrainBrushSettings(): TerrainBrushSettings {
|
||||
};
|
||||
}
|
||||
|
||||
export function clampTerrainPaintLayerIndex(layerIndex: number): number {
|
||||
if (!Number.isFinite(layerIndex)) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
return Math.min(
|
||||
TERRAIN_LAYER_COUNT - 1,
|
||||
Math.max(0, Math.round(layerIndex))
|
||||
);
|
||||
}
|
||||
|
||||
export function getTerrainBrushToolLabel(tool: TerrainBrushTool): string {
|
||||
switch (tool) {
|
||||
case "raise":
|
||||
@@ -83,6 +110,8 @@ export function getTerrainBrushToolLabel(tool: TerrainBrushTool): string {
|
||||
return "Smooth";
|
||||
case "flatten":
|
||||
return "Flatten";
|
||||
case "paint":
|
||||
return "Paint";
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user