Feat: Migrate scene document to support new player start targeting and interaction settings

This commit is contained in:
2026-04-27 15:52:49 +02:00
parent c668123ddc
commit f28a247b46

View File

@@ -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 &&