Feat: Add interaction angle to player start settings and update document migration

This commit is contained in:
2026-04-27 15:15:29 +02:00
parent e1edb41713
commit 427d9620f9
3 changed files with 13 additions and 1 deletions

View File

@@ -28,6 +28,7 @@ import {
createCameraRigLookAroundSettings,
createCameraRigPlayerTargetRef,
createCameraRigWorldPointTargetRef,
DEFAULT_PLAYER_START_INTERACTION_ANGLE_DEGREES,
DEFAULT_PLAYER_START_GAMEPAD_BINDINGS,
DEFAULT_PLAYER_START_INTERACTION_REACH_METERS,
DEFAULT_PLAYER_START_KEYBOARD_BINDINGS,
@@ -189,6 +190,7 @@ import {
PROJECT_TIME_DAY_NIGHT_PROFILE_SCENE_DOCUMENT_VERSION,
PROJECT_TIME_NIGHT_BACKGROUND_SCENE_DOCUMENT_VERSION,
PLAYER_START_AIR_CONTROL_SCENE_DOCUMENT_VERSION,
PLAYER_START_INTERACTION_ANGLE_SCENE_DOCUMENT_VERSION,
PLAYER_START_GAMEPAD_CAMERA_LOOK_SCENE_DOCUMENT_VERSION,
PLAYER_START_INPUT_BINDINGS_SCENE_DOCUMENT_VERSION,
PLAYER_START_NAVIGATION_MODE_SCENE_DOCUMENT_VERSION,
@@ -3306,6 +3308,11 @@ function readPlayerStartEntity(value: unknown, label: string): EntityInstance {
`${label}.interactionReachMeters`,
DEFAULT_PLAYER_START_INTERACTION_REACH_METERS
),
interactionAngleDegrees: readOptionalFiniteNumber(
value.interactionAngleDegrees,
`${label}.interactionAngleDegrees`,
DEFAULT_PLAYER_START_INTERACTION_ANGLE_DEGREES
),
movementTemplate: readPlayerStartMovementTemplate(
value.movementTemplate,
`${label}.movementTemplate`
@@ -5455,6 +5462,7 @@ export function migrateSceneDocument(source: unknown): SceneDocument {
source.version !==
PLAYER_START_AIR_DIRECTION_CONTROL_SCENE_DOCUMENT_VERSION &&
source.version !== PLAYER_START_AIR_CONTROL_SCENE_DOCUMENT_VERSION &&
source.version !== PLAYER_START_INTERACTION_ANGLE_SCENE_DOCUMENT_VERSION &&
source.version !== PLAYER_START_MOVEMENT_TEMPLATE_SCENE_DOCUMENT_VERSION &&
source.version !== PROJECT_NAME_SCENE_DOCUMENT_VERSION &&
source.version !== STATIC_SIMPLE_MODEL_COLLIDERS_SCENE_DOCUMENT_VERSION &&

View File

@@ -29,7 +29,8 @@ import {
} from "../sequencer/project-sequences";
import type { Terrain } from "./terrains";
export const SCENE_DOCUMENT_VERSION = 80 as const;
export const SCENE_DOCUMENT_VERSION = 81 as const;
export const PLAYER_START_INTERACTION_ANGLE_SCENE_DOCUMENT_VERSION = 81 as const;
export const PLAYER_START_INTERACTION_REACH_SCENE_DOCUMENT_VERSION = 80 as const;
export const SHADER_SKY_AURORA_SCENE_DOCUMENT_VERSION = 79 as const;
export const CAMERA_RIG_MAPPED_RAIL_SCENE_DOCUMENT_VERSION = 78 as const;

View File

@@ -279,6 +279,7 @@ export interface RuntimePlayerStart {
yawDegrees: number;
navigationMode: RuntimeNavigationMode;
interactionReachMeters: number;
interactionAngleDegrees: number;
movement: RuntimePlayerMovement;
inputBindings: PlayerStartInputBindings;
collider: FirstPersonPlayerShape;
@@ -1593,6 +1594,7 @@ function buildRuntimeSceneCollections(
yawDegrees: entity.yawDegrees,
navigationMode: entity.navigationMode,
interactionReachMeters: entity.interactionReachMeters,
interactionAngleDegrees: entity.interactionAngleDegrees,
movement: buildRuntimePlayerMovement(entity.movementTemplate),
inputBindings: clonePlayerStartInputBindings(entity.inputBindings),
collider: buildRuntimePlayerShape(entity)
@@ -1990,6 +1992,7 @@ export function buildRuntimeSceneFromDocument(
yawDegrees: playerStartEntity.yawDegrees,
navigationMode,
interactionReachMeters: playerStartEntity.interactionReachMeters,
interactionAngleDegrees: playerStartEntity.interactionAngleDegrees,
movement: cloneRuntimePlayerMovement(playerMovement),
inputBindings: clonePlayerStartInputBindings(playerInputBindings),
collider: playerCollider