diff --git a/src/document/migrate-scene-document.ts b/src/document/migrate-scene-document.ts index 02d14b13..f3ebe7d5 100644 --- a/src/document/migrate-scene-document.ts +++ b/src/document/migrate-scene-document.ts @@ -6592,6 +6592,7 @@ export function migrateSceneDocument(source: unknown): SceneDocument { source.version !== DYNAMIC_TERRAIN_LAYERS_SCENE_DOCUMENT_VERSION && source.version !== SPLINE_ROAD_EDGES_SCENE_DOCUMENT_VERSION && source.version !== SPLINE_REPEATERS_SCENE_DOCUMENT_VERSION && + source.version !== SPLINE_CORRIDOR_COLLISION_SCENE_DOCUMENT_VERSION && source.version !== NPC_TARGETING_SCENE_DOCUMENT_VERSION ) { throw new Error( diff --git a/src/document/scene-document-validation.ts b/src/document/scene-document-validation.ts index 2d1fddbd..2c078cd3 100644 --- a/src/document/scene-document-validation.ts +++ b/src/document/scene-document-validation.ts @@ -2682,6 +2682,17 @@ function validateScenePathRoadEdge( ); } + if (!isBoolean(edge.collisionEnabled)) { + diagnostics.push( + createDiagnostic( + "error", + "invalid-path-road-edge-collision-enabled", + "Path road edge collision enabled must remain a boolean.", + `${path}.collisionEnabled` + ) + ); + } + if (!isScenePathRoadEdgeKind(edge.kind)) { diagnostics.push( createDiagnostic( @@ -2780,6 +2791,17 @@ function validateScenePathRepeater( ); } + if (!isBoolean(repeater.collisionEnabled)) { + diagnostics.push( + createDiagnostic( + "error", + "invalid-path-repeater-collision-enabled", + "Path repeater collision enabled must remain a boolean.", + `${path}.collisionEnabled` + ) + ); + } + if ( typeof repeater.assetId !== "string" || !isBundledSplineCorridorAssetId(repeater.assetId)