From f654a12a86957cab2a78aa965cbde4f67c4a3f20 Mon Sep 17 00:00:00 2001 From: Victor Giers Date: Wed, 22 Apr 2026 18:06:48 +0200 Subject: [PATCH] auto-git: [change] src/runtime-three/runtime-scene-build.ts --- src/runtime-three/runtime-scene-build.ts | 55 +++++++++++++++++------- 1 file changed, 40 insertions(+), 15 deletions(-) diff --git a/src/runtime-three/runtime-scene-build.ts b/src/runtime-three/runtime-scene-build.ts index 4f8447da..320a3c71 100644 --- a/src/runtime-three/runtime-scene-build.ts +++ b/src/runtime-three/runtime-scene-build.ts @@ -297,12 +297,10 @@ export interface RuntimeSceneEntry { yawDegrees: number; } -export interface RuntimeCameraRig { +interface RuntimeCameraRigBase { entityId: string; - rigType: "fixed"; priority: number; defaultActive: boolean; - position: Vec3; target: CameraRigTargetRef; targetOffset: Vec3; transitionMode: CameraRigTransitionMode; @@ -310,6 +308,18 @@ export interface RuntimeCameraRig { lookAround: CameraRigLookAroundSettings; } +export interface RuntimeFixedCameraRig extends RuntimeCameraRigBase { + rigType: "fixed"; + position: Vec3; +} + +export interface RuntimeRailCameraRig extends RuntimeCameraRigBase { + rigType: "rail"; + pathId: string; +} + +export type RuntimeCameraRig = RuntimeFixedCameraRig | RuntimeRailCameraRig; + export interface RuntimeNpc { entityId: string; actorId: string; @@ -1560,18 +1570,33 @@ function buildRuntimeSceneCollections( }); break; case "cameraRig": - runtimeEntities.cameraRigs.push({ - entityId: entity.id, - rigType: entity.rigType, - priority: entity.priority, - defaultActive: entity.defaultActive, - position: cloneVec3(entity.position), - target: cloneCameraRigTargetRef(entity.target), - targetOffset: cloneVec3(entity.targetOffset), - transitionMode: entity.transitionMode, - transitionDurationSeconds: entity.transitionDurationSeconds, - lookAround: cloneCameraRigLookAroundSettings(entity.lookAround) - }); + runtimeEntities.cameraRigs.push( + entity.rigType === "fixed" + ? { + entityId: entity.id, + rigType: "fixed", + priority: entity.priority, + defaultActive: entity.defaultActive, + position: cloneVec3(entity.position), + target: cloneCameraRigTargetRef(entity.target), + targetOffset: cloneVec3(entity.targetOffset), + transitionMode: entity.transitionMode, + transitionDurationSeconds: entity.transitionDurationSeconds, + lookAround: cloneCameraRigLookAroundSettings(entity.lookAround) + } + : { + entityId: entity.id, + rigType: "rail", + priority: entity.priority, + defaultActive: entity.defaultActive, + pathId: entity.pathId, + target: cloneCameraRigTargetRef(entity.target), + targetOffset: cloneVec3(entity.targetOffset), + transitionMode: entity.transitionMode, + transitionDurationSeconds: entity.transitionDurationSeconds, + lookAround: cloneCameraRigLookAroundSettings(entity.lookAround) + } + ); break; case "npc": { const npc: RuntimeNpcDefinition = {