Add function to read player start collider settings

This commit is contained in:
2026-04-04 15:52:02 +02:00
parent 450ffc5299
commit c89eb9db94

View File

@@ -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) {