From 9bf22a254f7c4a4f1a3c3c3499be166e501bae30 Mon Sep 17 00:00:00 2001 From: Christopher Kumm Date: Thu, 17 Feb 2022 23:24:25 +0300 Subject: [PATCH 1/5] Add `mouseSpeed` property to `PointerLockControls` `mouseSpeed` controls the mouse sensitivity for `PointerLockControls`. This change also adds a new optional `options` parameter to the constructor of `PointerLockControls`. --- examples/js/controls/PointerLockControls.js | 8 +++++--- examples/jsm/controls/PointerLockControls.js | 8 +++++--- 2 files changed, 10 insertions(+), 6 deletions(-) diff --git a/examples/js/controls/PointerLockControls.js b/examples/js/controls/PointerLockControls.js index c46fb38653c746..d1eb2379dad094 100644 --- a/examples/js/controls/PointerLockControls.js +++ b/examples/js/controls/PointerLockControls.js @@ -18,7 +18,7 @@ class PointerLockControls extends THREE.EventDispatcher { - constructor( camera, domElement ) { + constructor( camera, domElement, options = {} ) { super(); @@ -37,6 +37,8 @@ this.maxPolarAngle = Math.PI; // radians + this.mouseSpeed = options.mouseSpeed || 0.002; + const scope = this; function onMouseMove( event ) { @@ -47,8 +49,8 @@ _euler.setFromQuaternion( camera.quaternion ); - _euler.y -= movementX * 0.002; - _euler.x -= movementY * 0.002; + _euler.y -= movementX * scope.mouseSpeed; + _euler.x -= movementY * scope.mouseSpeed; _euler.x = Math.max( _PI_2 - scope.maxPolarAngle, Math.min( _PI_2 - scope.minPolarAngle, _euler.x ) ); camera.quaternion.setFromEuler( _euler ); scope.dispatchEvent( _changeEvent ); diff --git a/examples/jsm/controls/PointerLockControls.js b/examples/jsm/controls/PointerLockControls.js index f612610f9a8d31..4cc5c54b4d5d60 100644 --- a/examples/jsm/controls/PointerLockControls.js +++ b/examples/jsm/controls/PointerLockControls.js @@ -15,7 +15,7 @@ const _PI_2 = Math.PI / 2; class PointerLockControls extends EventDispatcher { - constructor( camera, domElement ) { + constructor( camera, domElement, options = {} ) { super(); @@ -34,6 +34,8 @@ class PointerLockControls extends EventDispatcher { this.minPolarAngle = 0; // radians this.maxPolarAngle = Math.PI; // radians + this.mouseSpeed = options.mouseSpeed || 0.002; + const scope = this; function onMouseMove( event ) { @@ -45,8 +47,8 @@ class PointerLockControls extends EventDispatcher { _euler.setFromQuaternion( camera.quaternion ); - _euler.y -= movementX * 0.002; - _euler.x -= movementY * 0.002; + _euler.y -= movementX * scope.mouseSpeed; + _euler.x -= movementY * scope.mouseSpeed; _euler.x = Math.max( _PI_2 - scope.maxPolarAngle, Math.min( _PI_2 - scope.minPolarAngle, _euler.x ) ); From 6581c97ee2db050262fef472482bf1c172537062 Mon Sep 17 00:00:00 2001 From: mrdoob Date: Fri, 18 Feb 2022 00:20:05 +0000 Subject: [PATCH 2/5] Update PointerLockControls.js --- examples/js/controls/PointerLockControls.js | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/examples/js/controls/PointerLockControls.js b/examples/js/controls/PointerLockControls.js index d1eb2379dad094..fdff3e38ff1155 100644 --- a/examples/js/controls/PointerLockControls.js +++ b/examples/js/controls/PointerLockControls.js @@ -18,7 +18,7 @@ class PointerLockControls extends THREE.EventDispatcher { - constructor( camera, domElement, options = {} ) { + constructor( camera, domElement ) { super(); @@ -37,7 +37,7 @@ this.maxPolarAngle = Math.PI; // radians - this.mouseSpeed = options.mouseSpeed || 0.002; + this.mouseSpeed = 1.0; const scope = this; @@ -49,8 +49,8 @@ _euler.setFromQuaternion( camera.quaternion ); - _euler.y -= movementX * scope.mouseSpeed; - _euler.x -= movementY * scope.mouseSpeed; + _euler.y -= movementX * 0.002 * scope.mouseSpeed; + _euler.x -= movementY * 0.002 * scope.mouseSpeed; _euler.x = Math.max( _PI_2 - scope.maxPolarAngle, Math.min( _PI_2 - scope.minPolarAngle, _euler.x ) ); camera.quaternion.setFromEuler( _euler ); scope.dispatchEvent( _changeEvent ); From 8214f5d283a10237dcb8807a7deb6f5fd03f2e6b Mon Sep 17 00:00:00 2001 From: mrdoob Date: Fri, 18 Feb 2022 00:20:42 +0000 Subject: [PATCH 3/5] Update PointerLockControls.js --- examples/jsm/controls/PointerLockControls.js | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/examples/jsm/controls/PointerLockControls.js b/examples/jsm/controls/PointerLockControls.js index 4cc5c54b4d5d60..80cf404e554aae 100644 --- a/examples/jsm/controls/PointerLockControls.js +++ b/examples/jsm/controls/PointerLockControls.js @@ -15,7 +15,7 @@ const _PI_2 = Math.PI / 2; class PointerLockControls extends EventDispatcher { - constructor( camera, domElement, options = {} ) { + constructor( camera, domElement ) { super(); @@ -34,7 +34,7 @@ class PointerLockControls extends EventDispatcher { this.minPolarAngle = 0; // radians this.maxPolarAngle = Math.PI; // radians - this.mouseSpeed = options.mouseSpeed || 0.002; + this.mouseSpeed = 1.0; const scope = this; @@ -47,8 +47,8 @@ class PointerLockControls extends EventDispatcher { _euler.setFromQuaternion( camera.quaternion ); - _euler.y -= movementX * scope.mouseSpeed; - _euler.x -= movementY * scope.mouseSpeed; + _euler.y -= movementX * 0.002 * scope.mouseSpeed; + _euler.x -= movementY * 0.002 * scope.mouseSpeed; _euler.x = Math.max( _PI_2 - scope.maxPolarAngle, Math.min( _PI_2 - scope.minPolarAngle, _euler.x ) ); From dd833d5f386a452fd895fa3f7237bcdb97c21bf6 Mon Sep 17 00:00:00 2001 From: Christopher Kumm Date: Fri, 18 Feb 2022 12:26:19 +0300 Subject: [PATCH 4/5] Rename `mouseSpeed` to `pointerSpeed` --- examples/js/controls/PointerLockControls.js | 6 +++--- examples/jsm/controls/PointerLockControls.js | 6 +++--- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/examples/js/controls/PointerLockControls.js b/examples/js/controls/PointerLockControls.js index fdff3e38ff1155..45bd8b46596d27 100644 --- a/examples/js/controls/PointerLockControls.js +++ b/examples/js/controls/PointerLockControls.js @@ -37,7 +37,7 @@ this.maxPolarAngle = Math.PI; // radians - this.mouseSpeed = 1.0; + this.pointerSpeed = 1.0; const scope = this; @@ -49,8 +49,8 @@ _euler.setFromQuaternion( camera.quaternion ); - _euler.y -= movementX * 0.002 * scope.mouseSpeed; - _euler.x -= movementY * 0.002 * scope.mouseSpeed; + _euler.y -= movementX * 0.002 * scope.pointerSpeed; + _euler.x -= movementY * 0.002 * scope.pointerSpeed; _euler.x = Math.max( _PI_2 - scope.maxPolarAngle, Math.min( _PI_2 - scope.minPolarAngle, _euler.x ) ); camera.quaternion.setFromEuler( _euler ); scope.dispatchEvent( _changeEvent ); diff --git a/examples/jsm/controls/PointerLockControls.js b/examples/jsm/controls/PointerLockControls.js index 80cf404e554aae..884a69ced30726 100644 --- a/examples/jsm/controls/PointerLockControls.js +++ b/examples/jsm/controls/PointerLockControls.js @@ -34,7 +34,7 @@ class PointerLockControls extends EventDispatcher { this.minPolarAngle = 0; // radians this.maxPolarAngle = Math.PI; // radians - this.mouseSpeed = 1.0; + this.pointerSpeed = 1.0; const scope = this; @@ -47,8 +47,8 @@ class PointerLockControls extends EventDispatcher { _euler.setFromQuaternion( camera.quaternion ); - _euler.y -= movementX * 0.002 * scope.mouseSpeed; - _euler.x -= movementY * 0.002 * scope.mouseSpeed; + _euler.y -= movementX * 0.002 * scope.pointerSpeed; + _euler.x -= movementY * 0.002 * scope.pointerSpeed; _euler.x = Math.max( _PI_2 - scope.maxPolarAngle, Math.min( _PI_2 - scope.minPolarAngle, _euler.x ) ); From 33d82dcf61b0b44b1af15552f0d8b1da814c6143 Mon Sep 17 00:00:00 2001 From: Christopher Kumm Date: Fri, 18 Feb 2022 12:30:33 +0300 Subject: [PATCH 5/5] Add `pointerSpeed` property documentation --- docs/examples/en/controls/PointerLockControls.html | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/docs/examples/en/controls/PointerLockControls.html b/docs/examples/en/controls/PointerLockControls.html index 07206e2bb127cd..5b2698292b76f9 100644 --- a/docs/examples/en/controls/PointerLockControls.html +++ b/docs/examples/en/controls/PointerLockControls.html @@ -96,6 +96,11 @@

[property:Float minPolarAngle]

Camera pitch, lower limit. Range is 0 to Math.PI radians. Default is 0.

+

[property:Float pointerSpeed]

+

+ Multiplier for how much the pointer movement influences the camera rotation. Default is 1. +

+

Methods

See the base [page:EventDispatcher] class for common methods.