From 4b8e75483d2d7b942137fe12aa4e299036c1fc6d Mon Sep 17 00:00:00 2001 From: Victor Giers Date: Tue, 14 Apr 2026 22:38:56 +0200 Subject: [PATCH] Track pressed keys in RuntimeHost and handle key up events --- src/runtime-three/runtime-host.ts | 17 ++++++++++++----- 1 file changed, 12 insertions(+), 5 deletions(-) diff --git a/src/runtime-three/runtime-host.ts b/src/runtime-three/runtime-host.ts index 0fa19bfe..d27cfd78 100644 --- a/src/runtime-three/runtime-host.ts +++ b/src/runtime-three/runtime-host.ts @@ -3319,6 +3319,8 @@ export class RuntimeHost { }; private handleRuntimeKeyDown = (event: KeyboardEvent) => { + this.pressedKeys.add(event.code); + if ( event.defaultPrevented || event.repeat || @@ -3337,6 +3339,15 @@ export class RuntimeHost { this.toggleManualPause(); }; + private handleRuntimeKeyUp = (event: KeyboardEvent) => { + this.pressedKeys.delete(event.code); + }; + + private handleRuntimeBlur = () => { + this.pressedKeys.clear(); + this.previousPauseInputActive = false; + }; + private updatePauseInputState() { if (this.runtimeScene === null || !this.sceneReady) { this.previousPauseInputActive = false; @@ -3345,11 +3356,7 @@ export class RuntimeHost { const pauseInputActive = resolvePlayerStartPauseInput( - this.activeController?.id === "firstPerson" - ? this.firstPersonController["pressedKeys"] - : this.activeController?.id === "thirdPerson" - ? this.thirdPersonController["pressedKeys"] - : new Set(), + this.pressedKeys, this.runtimeScene.playerInputBindings ) >= 0.5;