Browse Source

OrbitControls: handle duplicated pointerId (#27748)

Guilherme Avila 1 year ago
parent
commit
8efe8f81ba
1 changed files with 16 additions and 0 deletions
  1. 16 0
      examples/jsm/controls/OrbitControls.js

+ 16 - 0
examples/jsm/controls/OrbitControls.js

@@ -1013,6 +1013,10 @@ class OrbitControls extends EventDispatcher {
 
 
 			//
 			//
 
 
+			if ( isTrackingPointer( event ) ) return;
+
+			//
+
 			addPointer( event );
 			addPointer( event );
 
 
 			if ( event.pointerType === 'touch' ) {
 			if ( event.pointerType === 'touch' ) {
@@ -1460,6 +1464,18 @@ class OrbitControls extends EventDispatcher {
 
 
 		}
 		}
 
 
+		function isTrackingPointer( event ) {
+
+			for ( let i = 0; i < pointers.length; i ++ ) {
+
+				if ( pointers[ i ] == event.pointerId ) return true;
+
+			}
+
+			return false;
+
+		}
+
 		function trackPointer( event ) {
 		function trackPointer( event ) {
 
 
 			let position = pointerPositions[ event.pointerId ];
 			let position = pointerPositions[ event.pointerId ];