diff --git a/index.js b/index.js index 0339782..860920d 100644 --- a/index.js +++ b/index.js @@ -310,9 +310,25 @@ async function connect (options) { lastTouch = undefined }, { passive: false }) - renderer.domElement.requestPointerLock = renderer.domElement.requestPointerLock || + const requestPointerLock = renderer.domElement.requestPointerLock || renderer.domElement.mozRequestPointerLock || renderer.domElement.webkitRequestPointerLock + renderer.domElement.requestPointerLock = async () => { + // request full keyboard access + // await renderer.domElement.requestFullscreen() + // // navigator.keyboard.lock(['KeyW']) + // const promise = requestPointerLock.apply(renderer.domElement, { + // unadjustedMovement: window.localStorage.getItem('mouseRawInput') === 'true' + // }); + // promise?.catch((error) => { + // if (error.name === "NotSupportedError") { + // // Some platforms may not support unadjusted movement, request again a regular pointer lock. + // requestPointerLock.apply(renderer.domElement) + // } else { + // console.error(error) + // } + // }) + // } document.addEventListener('mousedown', (e) => { if (!chat.inChat && !gameMenu.inMenu) { renderer.domElement.requestPointerLock() diff --git a/lib/menus/options_screen.js b/lib/menus/options_screen.js index a6664d2..117cd14 100644 --- a/lib/menus/options_screen.js +++ b/lib/menus/options_screen.js @@ -63,6 +63,7 @@ class OptionsScreen extends LitElement { this.fov = getValue('fov', 75, (v) => Number(v)) this.guiScale = getValue('guiScale', 3, (v) => Number(v)) this.forceMobileControls = getValue('forceMobileControls', false, (v) => v === 'true') + this.mouseRawInput = getValue('mouseRawInput', false, (v) => v === 'true') document.documentElement.style.setProperty('--chatScale', `${this.chatScale / 100}`) document.documentElement.style.setProperty('--chatWidth', `${this.chatWidth}px`) @@ -134,7 +135,7 @@ class OptionsScreen extends LitElement { }}> `} - +
{ this.forceMobileControls = !this.forceMobileControls @@ -149,6 +150,15 @@ class OptionsScreen extends LitElement { }>
+
+ { + this.mouseRawInput = !this.mouseRawInput + window.localStorage.setItem('mouseRawInput', `${this.mouseRawInput}`) + this.requestUpdate() + } + }> +
+ displayScreen(this, document.getElementById(this.isInsideWorld ? 'pause-screen' : 'title-screen'))}> ` diff --git a/styles.css b/styles.css index 2bf62eb..bd8bf68 100644 --- a/styles.css +++ b/styles.css @@ -15,6 +15,7 @@ html { height: 100vh; overflow: hidden; + touch-action: none; } .dirt-bg { @@ -117,4 +118,4 @@ canvas { width: calc(100% / 1); height: calc(100% / 1); } -} \ No newline at end of file +}