瀏覽代碼

Editor: Improved mouse control.

Mr.doob 12 年之前
父節點
當前提交
aaaf500f7c
共有 2 個文件被更改,包括 45 次插入35 次删除
  1. 44 34
      editor/js/ui/Viewport.js
  2. 1 1
      examples/js/controls/TrackballControls.js

+ 44 - 34
editor/js/ui/Viewport.js

@@ -88,39 +88,43 @@ var Viewport = function ( signals ) {
 
 		event.preventDefault();
 
-		var vector = new THREE.Vector3(
-			( ( event.clientX - container.dom.offsetLeft ) / container.dom.offsetWidth ) * 2 - 1,
-			- ( ( event.clientY - container.dom.offsetTop ) / container.dom.offsetHeight ) * 2 + 1,
-			0.5
-		);
+		if ( event.button === 0 ) {
 
-		projector.unprojectVector( vector, camera );
+			var vector = new THREE.Vector3(
+				( ( event.clientX - container.dom.offsetLeft ) / container.dom.offsetWidth ) * 2 - 1,
+				- ( ( event.clientY - container.dom.offsetTop ) / container.dom.offsetHeight ) * 2 + 1,
+				0.5
+			);
 
-		ray.set( camera.position, vector.subSelf( camera.position ).normalize() );
+			projector.unprojectVector( vector, camera );
 
-		var intersects = ray.intersectObjects( objects, true );
+			ray.set( camera.position, vector.subSelf( camera.position ).normalize() );
 
-		if ( intersects.length > 0 ) {
+			var intersects = ray.intersectObjects( objects, true );
 
-			controls.enabled = false;
+			if ( intersects.length > 0 ) {
 
-			intersectionPlane.position.copy( intersects[ 0 ].object.position );
-			intersectionPlane.lookAt( camera.position );
+				controls.enabled = false;
 
-			picked = intersects[ 0 ].object;
-			selected = picked;
+				intersectionPlane.position.copy( intersects[ 0 ].object.position );
+				intersectionPlane.lookAt( camera.position );
 
-			signals.objectSelected.dispatch( selected );
+				picked = intersects[ 0 ].object;
+				selected = picked;
+
+				signals.objectSelected.dispatch( selected );
 
-			var intersects = ray.intersectObject( intersectionPlane );
-			offset.copy( intersects[ 0 ].point ).subSelf( intersectionPlane.position );
+				var intersects = ray.intersectObject( intersectionPlane );
+				offset.copy( intersects[ 0 ].point ).subSelf( intersectionPlane.position );
 
-			document.addEventListener( 'mousemove', onMouseMove, false );
-			document.addEventListener( 'mouseup', onMouseUp, false );
+				document.addEventListener( 'mousemove', onMouseMove, false );
+				document.addEventListener( 'mouseup', onMouseUp, false );
 
-		} else {
+			} else {
 
-			controls.enabled = true;
+				controls.enabled = true;
+
+			}
 
 		}
 
@@ -161,28 +165,34 @@ var Viewport = function ( signals ) {
 
 	var onClick = function ( event ) {
 
-		var vector = new THREE.Vector3(
-			( ( event.clientX - container.dom.offsetLeft ) / container.dom.offsetWidth ) * 2 - 1,
-			- ( ( event.clientY - container.dom.offsetTop ) / container.dom.offsetHeight ) * 2 + 1,
-			0.5
-		);
+		if ( event.button === 0 ) {
 
-		projector.unprojectVector( vector, camera );
+			var vector = new THREE.Vector3(
+				( ( event.clientX - container.dom.offsetLeft ) / container.dom.offsetWidth ) * 2 - 1,
+				- ( ( event.clientY - container.dom.offsetTop ) / container.dom.offsetHeight ) * 2 + 1,
+				0.5
+			);
 
-		ray.set( camera.position, vector.subSelf( camera.position ).normalize() );
-		var intersects = ray.intersectObjects( objects, true );
+			projector.unprojectVector( vector, camera );
 
-		if ( intersects.length > 0 ) {
+			ray.set( camera.position, vector.subSelf( camera.position ).normalize() );
+			var intersects = ray.intersectObjects( objects, true );
+
+			if ( intersects.length > 0 ) {
+
+				selected = intersects[ 0 ].object;
 
-			selected = intersects[ 0 ].object;
+			} else {
 
-		} else {
+				selected = null;
 
-			selected = null;
+			}
+
+			signals.objectSelected.dispatch( selected );
 
 		}
 
-		signals.objectSelected.dispatch( selected );
+		controls.enabled = true;
 
 	};
 

+ 1 - 1
examples/js/controls/TrackballControls.js

@@ -329,7 +329,7 @@ THREE.TrackballControls = function ( object, domElement ) {
 			_panStart = _panEnd = _this.getMouseOnScreen( event.clientX, event.clientY );
 
 		}
-		
+
 		document.addEventListener( 'mousemove', mousemove, false );
 		document.addEventListener( 'mouseup', mouseup, false );