Ver código fonte

OrbitControls: handle duplicated pointerId (#27748)

Guilherme Avila 1 ano atrás
pai
commit
8efe8f81ba
1 arquivos alterados com 16 adições e 0 exclusões
  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 );
 
 			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 ) {
 
 			let position = pointerPositions[ event.pointerId ];