Browse Source

OrbitControls: improve mouse customizable options

Guilherme Avila 5 years ago
parent
commit
71ee4ea9c3
2 changed files with 78 additions and 138 deletions
  1. 39 69
      examples/js/controls/OrbitControls.js
  2. 39 69
      examples/jsm/controls/OrbitControls.js

+ 39 - 69
examples/js/controls/OrbitControls.js

@@ -753,7 +753,6 @@ THREE.OrbitControls = function ( object, domElement ) {
 		if ( scope.enabled === false ) return;
 
 		// Prevent the browser from scrolling.
-
 		event.preventDefault();
 
 		// Manually set the focus since calling preventDefault above
@@ -761,119 +760,90 @@ THREE.OrbitControls = function ( object, domElement ) {
 
 		scope.domElement.focus ? scope.domElement.focus() : window.focus();
 
+		var mouseAction;
+
 		switch ( event.button ) {
 
 			case 0:
 
-				switch ( scope.mouseButtons.LEFT ) {
-
-					case THREE.MOUSE.ROTATE:
-
-						if ( event.ctrlKey || event.metaKey || event.shiftKey ) {
+				mouseAction = scope.mouseButtons.LEFT;
+				break;
 
-							if ( scope.enablePan === false ) return;
+			case 1:
 
-							handleMouseDownPan( event );
+				mouseAction = scope.mouseButtons.MIDDLE;
+				break;
 
-							state = STATE.PAN;
+			case 2:
 
-						} else {
+				mouseAction = scope.mouseButtons.RIGHT;
+				break;
 
-							if ( scope.enableRotate === false ) return;
+			default:
 
-							handleMouseDownRotate( event );
+				mouseAction = - 1;
 
-							state = STATE.ROTATE;
+		}
 
-						}
+		switch ( mouseAction ) {
 
-						break;
+			case THREE.MOUSE.DOLLY:
 
-					case THREE.MOUSE.PAN:
+				if ( scope.enableZoom === false ) return;
 
-						if ( event.ctrlKey || event.metaKey || event.shiftKey ) {
+				handleMouseDownDolly( event );
 
-							if ( scope.enableRotate === false ) return;
+				state = STATE.DOLLY;
 
-							handleMouseDownRotate( event );
+				break;
 
-							state = STATE.ROTATE;
+			case THREE.MOUSE.ROTATE:
 
-						} else {
+				if ( event.ctrlKey || event.metaKey || event.shiftKey ) {
 
-							if ( scope.enablePan === false ) return;
+					if ( scope.enablePan === false ) return;
 
-							handleMouseDownPan( event );
+					handleMouseDownPan( event );
 
-							state = STATE.PAN;
+					state = STATE.PAN;
 
-						}
+				} else {
 
-						break;
+					if ( scope.enableRotate === false ) return;
 
-					default:
+					handleMouseDownRotate( event );
 
-						state = STATE.NONE;
+					state = STATE.ROTATE;
 
 				}
 
 				break;
 
+			case THREE.MOUSE.PAN:
 
-			case 1:
-
-				switch ( scope.mouseButtons.MIDDLE ) {
-
-					case THREE.MOUSE.DOLLY:
+				if ( event.ctrlKey || event.metaKey || event.shiftKey ) {
 
-						if ( scope.enableZoom === false ) return;
+					if ( scope.enableRotate === false ) return;
 
-						handleMouseDownDolly( event );
+					handleMouseDownRotate( event );
 
-						state = STATE.DOLLY;
+					state = STATE.ROTATE;
 
-						break;
+				} else {
 
+					if ( scope.enablePan === false ) return;
 
-					default:
+					handleMouseDownPan( event );
 
-						state = STATE.NONE;
+					state = STATE.PAN;
 
 				}
 
 				break;
 
-			case 2:
-
-				switch ( scope.mouseButtons.RIGHT ) {
-
-					case THREE.MOUSE.ROTATE:
-
-						if ( scope.enableRotate === false ) return;
-
-						handleMouseDownRotate( event );
-
-						state = STATE.ROTATE;
-
-						break;
-
-					case THREE.MOUSE.PAN:
-
-						if ( scope.enablePan === false ) return;
-
-						handleMouseDownPan( event );
-
-						state = STATE.PAN;
-
-						break;
-
-					default:
-
-						state = STATE.NONE;
-
-				}
+			default:
 
-				break;
+				state = STATE.NONE;
 
 		}
 

+ 39 - 69
examples/jsm/controls/OrbitControls.js

@@ -763,7 +763,6 @@ var OrbitControls = function ( object, domElement ) {
 		if ( scope.enabled === false ) return;
 
 		// Prevent the browser from scrolling.
-
 		event.preventDefault();
 
 		// Manually set the focus since calling preventDefault above
@@ -771,119 +770,90 @@ var OrbitControls = function ( object, domElement ) {
 
 		scope.domElement.focus ? scope.domElement.focus() : window.focus();
 
+		var mouseAction;
+
 		switch ( event.button ) {
 
 			case 0:
 
-				switch ( scope.mouseButtons.LEFT ) {
-
-					case MOUSE.ROTATE:
-
-						if ( event.ctrlKey || event.metaKey || event.shiftKey ) {
+				mouseAction = scope.mouseButtons.LEFT;
+				break;
 
-							if ( scope.enablePan === false ) return;
+			case 1:
 
-							handleMouseDownPan( event );
+				mouseAction = scope.mouseButtons.MIDDLE;
+				break;
 
-							state = STATE.PAN;
+			case 2:
 
-						} else {
+				mouseAction = scope.mouseButtons.RIGHT;
+				break;
 
-							if ( scope.enableRotate === false ) return;
+			default:
 
-							handleMouseDownRotate( event );
+				mouseAction = - 1;
 
-							state = STATE.ROTATE;
+		}
 
-						}
+		switch ( mouseAction ) {
 
-						break;
+			case MOUSE.DOLLY:
 
-					case MOUSE.PAN:
+				if ( scope.enableZoom === false ) return;
 
-						if ( event.ctrlKey || event.metaKey || event.shiftKey ) {
+				handleMouseDownDolly( event );
 
-							if ( scope.enableRotate === false ) return;
+				state = STATE.DOLLY;
 
-							handleMouseDownRotate( event );
+				break;
 
-							state = STATE.ROTATE;
+			case MOUSE.ROTATE:
 
-						} else {
+				if ( event.ctrlKey || event.metaKey || event.shiftKey ) {
 
-							if ( scope.enablePan === false ) return;
+					if ( scope.enablePan === false ) return;
 
-							handleMouseDownPan( event );
+					handleMouseDownPan( event );
 
-							state = STATE.PAN;
+					state = STATE.PAN;
 
-						}
+				} else {
 
-						break;
+					if ( scope.enableRotate === false ) return;
 
-					default:
+					handleMouseDownRotate( event );
 
-						state = STATE.NONE;
+					state = STATE.ROTATE;
 
 				}
 
 				break;
 
+			case MOUSE.PAN:
 
-			case 1:
-
-				switch ( scope.mouseButtons.MIDDLE ) {
-
-					case MOUSE.DOLLY:
+				if ( event.ctrlKey || event.metaKey || event.shiftKey ) {
 
-						if ( scope.enableZoom === false ) return;
+					if ( scope.enableRotate === false ) return;
 
-						handleMouseDownDolly( event );
+					handleMouseDownRotate( event );
 
-						state = STATE.DOLLY;
+					state = STATE.ROTATE;
 
-						break;
+				} else {
 
+					if ( scope.enablePan === false ) return;
 
-					default:
+					handleMouseDownPan( event );
 
-						state = STATE.NONE;
+					state = STATE.PAN;
 
 				}
 
 				break;
 
-			case 2:
-
-				switch ( scope.mouseButtons.RIGHT ) {
-
-					case MOUSE.ROTATE:
-
-						if ( scope.enableRotate === false ) return;
-
-						handleMouseDownRotate( event );
-
-						state = STATE.ROTATE;
-
-						break;
-
-					case MOUSE.PAN:
-
-						if ( scope.enablePan === false ) return;
-
-						handleMouseDownPan( event );
-
-						state = STATE.PAN;
-
-						break;
-
-					default:
-
-						state = STATE.NONE;
-
-				}
+			default:
 
-				break;
+				state = STATE.NONE;
 
 		}