From 29bb55b03ac51633e91e0f461f3828cd12c6a74d Mon Sep 17 00:00:00 2001 From: Victor Giers Date: Thu, 23 Apr 2026 08:51:25 +0200 Subject: [PATCH] auto-git: [change] src/document/scene-document-validation.ts --- src/document/scene-document-validation.ts | 56 +++++++++++++++++++++++ 1 file changed, 56 insertions(+) diff --git a/src/document/scene-document-validation.ts b/src/document/scene-document-validation.ts index 03cee169..24e16fad 100644 --- a/src/document/scene-document-validation.ts +++ b/src/document/scene-document-validation.ts @@ -23,6 +23,7 @@ import { } from "../controls/control-surface"; import { WHITEBOX_SELECTION_MODES } from "../core/whitebox-selection-mode"; import { + isCameraRigRailPlacementMode, isCameraRigTransitionMode, isNpcPresenceMode, isPlayerStartColliderMode, @@ -1560,6 +1561,61 @@ function validateCameraRigEntity( ); } } + + if (!isCameraRigRailPlacementMode(entity.railPlacementMode)) { + diagnostics.push( + createDiagnostic( + "error", + "invalid-camera-rig-rail-placement-mode", + "Rail Camera Rig placement mode must be nearestToTarget or mapTargetBetweenPoints.", + `${path}.railPlacementMode` + ) + ); + } else if (entity.railPlacementMode === "mapTargetBetweenPoints") { + if (!isFiniteVec3(entity.trackStartPoint)) { + diagnostics.push( + createDiagnostic( + "error", + "invalid-camera-rig-track-start-point", + "Mapped Rail Camera Rig track start points must remain finite on every axis.", + `${path}.trackStartPoint` + ) + ); + } + + if (!isFiniteVec3(entity.trackEndPoint)) { + diagnostics.push( + createDiagnostic( + "error", + "invalid-camera-rig-track-end-point", + "Mapped Rail Camera Rig track end points must remain finite on every axis.", + `${path}.trackEndPoint` + ) + ); + } + + if (!isFiniteNumberInRange(entity.railStartProgress, 0, 1)) { + diagnostics.push( + createDiagnostic( + "error", + "invalid-camera-rig-rail-start-progress", + "Mapped Rail Camera Rig start progress must remain between 0 and 1.", + `${path}.railStartProgress` + ) + ); + } + + if (!isFiniteNumberInRange(entity.railEndProgress, 0, 1)) { + diagnostics.push( + createDiagnostic( + "error", + "invalid-camera-rig-rail-end-progress", + "Mapped Rail Camera Rig end progress must remain between 0 and 1.", + `${path}.railEndProgress` + ) + ); + } + } } if (!isNonNegativeFiniteNumber(entity.priority)) {