diff --git a/src/document/paths.ts b/src/document/paths.ts index 9ddd375d..1f77144e 100644 --- a/src/document/paths.ts +++ b/src/document/paths.ts @@ -11,6 +11,21 @@ export interface ScenePathPoint { } export type ScenePathCurveMode = "linear" | "catmullRom"; +export type ScenePathRoadEdgeKind = "curb" | "softShoulder" | "bank" | "ditch"; +export type ScenePathRoadEdgeSide = "left" | "right"; + +export interface ScenePathRoadEdgeSettings { + enabled: boolean; + kind: ScenePathRoadEdgeKind; + width: number; + height: number; + materialId: string | null; +} + +export interface ScenePathRoadEdgesSettings { + left: ScenePathRoadEdgeSettings; + right: ScenePathRoadEdgeSettings; +} export interface ScenePathRoadSettings { enabled: boolean; @@ -20,6 +35,7 @@ export interface ScenePathRoadSettings { heightOffset: number; terrainConform: boolean; materialId: string | null; + edges: ScenePathRoadEdgesSettings; } export interface ScenePath { @@ -156,12 +172,28 @@ export const DEFAULT_SCENE_PATH_ROAD_FALLOFF = 0.5; export const DEFAULT_SCENE_PATH_ROAD_HEIGHT_OFFSET = 0.03; export const DEFAULT_SCENE_PATH_ROAD_TERRAIN_CONFORM = true; export const DEFAULT_SCENE_PATH_ROAD_MATERIAL_ID = null; +export const SCENE_PATH_ROAD_EDGE_KINDS = [ + "curb", + "softShoulder", + "bank", + "ditch" +] as const satisfies readonly ScenePathRoadEdgeKind[]; +export const DEFAULT_SCENE_PATH_ROAD_EDGE_ENABLED = false; +export const DEFAULT_SCENE_PATH_ROAD_EDGE_KIND: ScenePathRoadEdgeKind = + "softShoulder"; +export const DEFAULT_SCENE_PATH_ROAD_EDGE_WIDTH = 0.35; +export const DEFAULT_SCENE_PATH_ROAD_EDGE_HEIGHT = 0.12; +export const DEFAULT_SCENE_PATH_ROAD_EDGE_MATERIAL_ID = null; export const MIN_SCENE_PATH_ROAD_WIDTH = 0.1; export const MAX_SCENE_PATH_ROAD_WIDTH = 100; export const MIN_SCENE_PATH_ROAD_SHOULDER_WIDTH = 0; export const MAX_SCENE_PATH_ROAD_SHOULDER_WIDTH = 100; export const MIN_SCENE_PATH_ROAD_FALLOFF = 0; export const MAX_SCENE_PATH_ROAD_FALLOFF = 1; +export const MIN_SCENE_PATH_ROAD_EDGE_WIDTH = 0.01; +export const MAX_SCENE_PATH_ROAD_EDGE_WIDTH = 50; +export const MIN_SCENE_PATH_ROAD_EDGE_HEIGHT = 0; +export const MAX_SCENE_PATH_ROAD_EDGE_HEIGHT = 20; export const MIN_SCENE_PATH_SAMPLED_RESOLUTION = 1; export const MAX_SCENE_PATH_SAMPLED_RESOLUTION = 64; export const MIN_SCENE_PATH_POINT_COUNT = 2;