瀏覽代碼

OrbitControls: handle duplicated pointerId (#27748)

Guilherme Avila 1 年之前
父節點
當前提交
8efe8f81ba
共有 1 個文件被更改,包括 16 次插入0 次删除
  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 ];