From 55de3124fe0a7953bb1da23786024091a1efc639 Mon Sep 17 00:00:00 2001 From: goynov Date: Mon, 9 Feb 2026 08:09:30 +0200 Subject: [PATCH] catch the lockControls error when no user interaction --- src/lib/Hero.js | 9 ++++++--- src/lib/PointerControls.js | 11 +++++++++++ 2 files changed, 17 insertions(+), 3 deletions(-) diff --git a/src/lib/Hero.js b/src/lib/Hero.js index b2912cb..89e542b 100644 --- a/src/lib/Hero.js +++ b/src/lib/Hero.js @@ -15,8 +15,11 @@ class Hero{ set cameraZ(v){ this.#cameraZ = Math.min(Math.max(v, 1), 10); if (this.#cameraZ == 1){ - this.#cameraZ = 0; - this.lockControls(); + this.lockControls().then(()=>{ + this.#cameraZ = 0; + }).catch(err=>{ + console.log(err); + }) } } @@ -87,7 +90,7 @@ class Hero{ } lockControls(){ - this.pointerControls.controls.lock(true); + return this.pointerControls.lock(true); } update(delta){ diff --git a/src/lib/PointerControls.js b/src/lib/PointerControls.js index bdc8bd0..7abb871 100644 --- a/src/lib/PointerControls.js +++ b/src/lib/PointerControls.js @@ -4,6 +4,7 @@ import { PointerLockControls } from 'three/examples/jsm/Addons.js'; class PointerControls { constructor(camera, hero, domElement) { this.kb = {}; + this.dom = domElement; this.canJump = false; this.velocity = new Vector3(); @@ -115,6 +116,16 @@ class PointerControls { get running(){ return this.moving && this.kb.ShiftLeft; } + + async lock(unadjustedMovement = false){ + await this.dom.requestPointerLock( { + unadjustedMovement + } ); + } + + unlock(){ + this.dom.ownerDocument.exitPointerLock(); + } } export { PointerControls }; \ No newline at end of file