From f28a247b46abc76341bc24f6733213c80aa8eb99 Mon Sep 17 00:00:00 2001 From: Victor Giers Date: Mon, 27 Apr 2026 15:52:49 +0200 Subject: [PATCH] Feat: Migrate scene document to support new player start targeting and interaction settings --- src/document/migrate-scene-document.ts | 34 ++++++++++++++++++++++++++ 1 file changed, 34 insertions(+) diff --git a/src/document/migrate-scene-document.ts b/src/document/migrate-scene-document.ts index 478d3637..b98a4169 100644 --- a/src/document/migrate-scene-document.ts +++ b/src/document/migrate-scene-document.ts @@ -28,10 +28,12 @@ import { createCameraRigLookAroundSettings, createCameraRigPlayerTargetRef, createCameraRigWorldPointTargetRef, + DEFAULT_PLAYER_START_ALLOW_LOOK_INPUT_TARGET_SWITCH, DEFAULT_PLAYER_START_INTERACTION_ANGLE_DEGREES, DEFAULT_PLAYER_START_GAMEPAD_BINDINGS, DEFAULT_PLAYER_START_INTERACTION_REACH_METERS, DEFAULT_PLAYER_START_KEYBOARD_BINDINGS, + DEFAULT_PLAYER_START_TARGET_BUTTON_CYCLES_ACTIVE_TARGET, createNpcAlwaysPresence, createNpcEntity, createNpcColliderSettings, @@ -195,6 +197,7 @@ import { PLAYER_START_GAMEPAD_CAMERA_LOOK_SCENE_DOCUMENT_VERSION, PLAYER_START_INTERACT_BINDINGS_SCENE_DOCUMENT_VERSION, PLAYER_START_INPUT_BINDINGS_SCENE_DOCUMENT_VERSION, + PLAYER_START_TARGETING_SETTINGS_SCENE_DOCUMENT_VERSION, PLAYER_START_NAVIGATION_MODE_SCENE_DOCUMENT_VERSION, PLAYER_START_PAUSE_BINDINGS_SCENE_DOCUMENT_VERSION, PLAYER_START_COLLIDER_SETTINGS_SCENE_DOCUMENT_VERSION, @@ -1681,6 +1684,16 @@ function readPlayerStartInputBindings(value: unknown, label: string) { `${label}.keyboard.crouch`, DEFAULT_PLAYER_START_KEYBOARD_BINDINGS.crouch ), + interact: readPlayerStartKeyboardBindingCode( + keyboard?.interact, + `${label}.keyboard.interact`, + DEFAULT_PLAYER_START_KEYBOARD_BINDINGS.interact + ), + clearTarget: readPlayerStartKeyboardBindingCode( + keyboard?.clearTarget, + `${label}.keyboard.clearTarget`, + DEFAULT_PLAYER_START_KEYBOARD_BINDINGS.clearTarget + ), pauseTime: readPlayerStartKeyboardBindingCode( keyboard?.pauseTime, `${label}.keyboard.pauseTime`, @@ -1723,6 +1736,16 @@ function readPlayerStartInputBindings(value: unknown, label: string) { `${label}.gamepad.crouch`, DEFAULT_PLAYER_START_GAMEPAD_BINDINGS.crouch ), + interact: readPlayerStartGamepadActionBinding( + gamepad?.interact, + `${label}.gamepad.interact`, + DEFAULT_PLAYER_START_GAMEPAD_BINDINGS.interact + ), + clearTarget: readPlayerStartGamepadActionBinding( + gamepad?.clearTarget, + `${label}.gamepad.clearTarget`, + DEFAULT_PLAYER_START_GAMEPAD_BINDINGS.clearTarget + ), pauseTime: readPlayerStartGamepadActionBinding( gamepad?.pauseTime, `${label}.gamepad.pauseTime`, @@ -3315,6 +3338,16 @@ function readPlayerStartEntity(value: unknown, label: string): EntityInstance { `${label}.interactionAngleDegrees`, DEFAULT_PLAYER_START_INTERACTION_ANGLE_DEGREES ), + allowLookInputTargetSwitch: readOptionalBoolean( + value.allowLookInputTargetSwitch, + `${label}.allowLookInputTargetSwitch`, + DEFAULT_PLAYER_START_ALLOW_LOOK_INPUT_TARGET_SWITCH + ), + targetButtonCyclesActiveTarget: readOptionalBoolean( + value.targetButtonCyclesActiveTarget, + `${label}.targetButtonCyclesActiveTarget`, + DEFAULT_PLAYER_START_TARGET_BUTTON_CYCLES_ACTIVE_TARGET + ), movementTemplate: readPlayerStartMovementTemplate( value.movementTemplate, `${label}.movementTemplate` @@ -5466,6 +5499,7 @@ export function migrateSceneDocument(source: unknown): SceneDocument { source.version !== PLAYER_START_AIR_CONTROL_SCENE_DOCUMENT_VERSION && source.version !== PLAYER_START_INTERACTION_REACH_SCENE_DOCUMENT_VERSION && source.version !== PLAYER_START_INTERACTION_ANGLE_SCENE_DOCUMENT_VERSION && + source.version !== PLAYER_START_TARGETING_SETTINGS_SCENE_DOCUMENT_VERSION && source.version !== PLAYER_START_INTERACT_BINDINGS_SCENE_DOCUMENT_VERSION && source.version !== PLAYER_START_MOVEMENT_TEMPLATE_SCENE_DOCUMENT_VERSION && source.version !== PROJECT_NAME_SCENE_DOCUMENT_VERSION &&