From c89eb9db94ce1109892a03ad14be94f16f4e97ad Mon Sep 17 00:00:00 2001 From: Victor Giers Date: Sat, 4 Apr 2026 15:52:02 +0200 Subject: [PATCH] Add function to read player start collider settings --- src/document/migrate-scene-document.ts | 25 ++++++++++++++++++++++++- 1 file changed, 24 insertions(+), 1 deletion(-) diff --git a/src/document/migrate-scene-document.ts b/src/document/migrate-scene-document.ts index 5c27b937..0a5b279c 100644 --- a/src/document/migrate-scene-document.ts +++ b/src/document/migrate-scene-document.ts @@ -527,6 +527,28 @@ function readModelInstanceCollisionSettings(value: unknown, label: string): Mode }); } +function readPlayerStartColliderSettings(value: unknown, label: string) { + if (value === undefined) { + return createPlayerStartColliderSettings(); + } + + if (!isRecord(value)) { + throw new Error(`${label} must be an object.`); + } + + const mode = readOptionalAllowedValue(value.mode, `${label}.mode`, "capsule", isPlayerStartColliderMode); + + return createPlayerStartColliderSettings({ + mode, + eyeHeight: value.eyeHeight === undefined ? undefined : expectPositiveFiniteNumber(value.eyeHeight, `${label}.eyeHeight`), + capsuleRadius: + value.capsuleRadius === undefined ? undefined : expectPositiveFiniteNumber(value.capsuleRadius, `${label}.capsuleRadius`), + capsuleHeight: + value.capsuleHeight === undefined ? undefined : expectPositiveFiniteNumber(value.capsuleHeight, `${label}.capsuleHeight`), + boxSize: value.boxSize === undefined ? undefined : readVec3(value.boxSize, `${label}.boxSize`) + }); +} + function readModelInstance(value: unknown, label: string, assets: SceneDocument["assets"]): ModelInstance { if (!isRecord(value)) { throw new Error(`${label} must be an object.`); @@ -897,7 +919,8 @@ function readPlayerStartEntity(value: unknown, label: string): EntityInstance { id: expectString(value.id, `${label}.id`), name: readOptionalEntityName(value.name, `${label}.name`), position: readVec3(value.position, `${label}.position`), - yawDegrees: expectFiniteNumber(value.yawDegrees, `${label}.yawDegrees`) + yawDegrees: expectFiniteNumber(value.yawDegrees, `${label}.yawDegrees`), + collider: readPlayerStartColliderSettings(value.collider, `${label}.collider`) }); if (entity.kind !== kind) {