From ec1f04e5cc8aa00706ce44ae6bf8f469b2151130 Mon Sep 17 00:00:00 2001 From: Victor Giers Date: Sat, 11 Apr 2026 12:13:59 +0200 Subject: [PATCH] Add validation for player start input bindings in scene-document-validation.ts --- src/document/scene-document-validation.ts | 90 +++++++++++++++++++++++ 1 file changed, 90 insertions(+) diff --git a/src/document/scene-document-validation.ts b/src/document/scene-document-validation.ts index 73cb2e7c..8dae149e 100644 --- a/src/document/scene-document-validation.ts +++ b/src/document/scene-document-validation.ts @@ -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(