Add validation for player start input bindings in scene-document-validation.ts

This commit is contained in:
2026-04-11 12:13:59 +02:00
parent bdae77bf80
commit ec1f04e5cc

View File

@@ -9,6 +9,8 @@ import type { ModelInstance } from "../assets/model-instances";
import { isModelInstanceCollisionMode } from "../assets/model-instances";
import {
isPlayerStartColliderMode,
isPlayerStartGamepadBinding,
isPlayerStartKeyboardBindingCode,
isPlayerStartNavigationMode,
getPlayerStartColliderHeight,
type InteractableEntity,
@@ -1164,6 +1166,94 @@ function validatePlayerStartEntity(
);
}
if (!isPlayerStartKeyboardBindingCode(entity.inputBindings?.keyboard.moveForward)) {
diagnostics.push(
createDiagnostic(
"error",
"invalid-player-start-move-forward-keyboard-binding",
"Player Start move-forward keyboard binding must be a supported key code.",
`${path}.inputBindings.keyboard.moveForward`
)
);
}
if (!isPlayerStartKeyboardBindingCode(entity.inputBindings?.keyboard.moveBackward)) {
diagnostics.push(
createDiagnostic(
"error",
"invalid-player-start-move-backward-keyboard-binding",
"Player Start move-backward keyboard binding must be a supported key code.",
`${path}.inputBindings.keyboard.moveBackward`
)
);
}
if (!isPlayerStartKeyboardBindingCode(entity.inputBindings?.keyboard.moveLeft)) {
diagnostics.push(
createDiagnostic(
"error",
"invalid-player-start-move-left-keyboard-binding",
"Player Start move-left keyboard binding must be a supported key code.",
`${path}.inputBindings.keyboard.moveLeft`
)
);
}
if (!isPlayerStartKeyboardBindingCode(entity.inputBindings?.keyboard.moveRight)) {
diagnostics.push(
createDiagnostic(
"error",
"invalid-player-start-move-right-keyboard-binding",
"Player Start move-right keyboard binding must be a supported key code.",
`${path}.inputBindings.keyboard.moveRight`
)
);
}
if (!isPlayerStartGamepadBinding(entity.inputBindings?.gamepad.moveForward)) {
diagnostics.push(
createDiagnostic(
"error",
"invalid-player-start-move-forward-gamepad-binding",
"Player Start move-forward gamepad binding must be a supported standard-gamepad input.",
`${path}.inputBindings.gamepad.moveForward`
)
);
}
if (!isPlayerStartGamepadBinding(entity.inputBindings?.gamepad.moveBackward)) {
diagnostics.push(
createDiagnostic(
"error",
"invalid-player-start-move-backward-gamepad-binding",
"Player Start move-backward gamepad binding must be a supported standard-gamepad input.",
`${path}.inputBindings.gamepad.moveBackward`
)
);
}
if (!isPlayerStartGamepadBinding(entity.inputBindings?.gamepad.moveLeft)) {
diagnostics.push(
createDiagnostic(
"error",
"invalid-player-start-move-left-gamepad-binding",
"Player Start move-left gamepad binding must be a supported standard-gamepad input.",
`${path}.inputBindings.gamepad.moveLeft`
)
);
}
if (!isPlayerStartGamepadBinding(entity.inputBindings?.gamepad.moveRight)) {
diagnostics.push(
createDiagnostic(
"error",
"invalid-player-start-move-right-gamepad-binding",
"Player Start move-right gamepad binding must be a supported standard-gamepad input.",
`${path}.inputBindings.gamepad.moveRight`
)
);
}
if (!isPlayerStartColliderMode(entity.collider.mode)) {
diagnostics.push(
createDiagnostic(