Add function to read player start collider settings
This commit is contained in:
@@ -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 {
|
function readModelInstance(value: unknown, label: string, assets: SceneDocument["assets"]): ModelInstance {
|
||||||
if (!isRecord(value)) {
|
if (!isRecord(value)) {
|
||||||
throw new Error(`${label} must be an object.`);
|
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`),
|
id: expectString(value.id, `${label}.id`),
|
||||||
name: readOptionalEntityName(value.name, `${label}.name`),
|
name: readOptionalEntityName(value.name, `${label}.name`),
|
||||||
position: readVec3(value.position, `${label}.position`),
|
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) {
|
if (entity.kind !== kind) {
|
||||||
|
|||||||
Reference in New Issue
Block a user