From 0c2b1ab5a067ba06a73e3d661534253909b0c76a Mon Sep 17 00:00:00 2001 From: Victor Giers Date: Wed, 13 May 2026 03:02:05 +0200 Subject: [PATCH] Refactor road edge validation to handle missing or invalid settings dynamically --- src/document/scene-document-validation.ts | 51 +++++++++++++++++------ 1 file changed, 39 insertions(+), 12 deletions(-) diff --git a/src/document/scene-document-validation.ts b/src/document/scene-document-validation.ts index 244c8234..709ed7fc 100644 --- a/src/document/scene-document-validation.ts +++ b/src/document/scene-document-validation.ts @@ -2926,18 +2926,45 @@ function validateScenePath( ); } - validateScenePathRoadEdge( - pathValue.road.edges.left, - `${path}.road.edges.left`, - document, - diagnostics - ); - validateScenePathRoadEdge( - pathValue.road.edges.right, - `${path}.road.edges.right`, - document, - diagnostics - ); + const roadEdges = ( + pathValue.road as { + edges?: Partial>; + } + ).edges; + + if (roadEdges === undefined || roadEdges === null) { + diagnostics.push( + createDiagnostic( + "error", + "invalid-path-road-edges", + "Path road edges must define left and right edge settings.", + `${path}.road.edges` + ) + ); + } else { + for (const side of ["left", "right"] as const) { + const edge = roadEdges[side]; + + if (edge === undefined || edge === null || typeof edge !== "object") { + diagnostics.push( + createDiagnostic( + "error", + "invalid-path-road-edge", + "Path road edge settings must be objects.", + `${path}.road.edges.${side}` + ) + ); + continue; + } + + validateScenePathRoadEdge( + edge, + `${path}.road.edges.${side}`, + document, + diagnostics + ); + } + } if (pathValue.points.length < MIN_SCENE_PATH_POINT_COUNT) { diagnostics.push(