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.