Browse Source

fixed snaping

Aleksandar Rodic 12 years ago
parent
commit
5b72598865
2 changed files with 18 additions and 6 deletions
  1. 16 4
      examples/js/controls/EditorControls.js
  2. 2 2
      examples/js/controls/TransformControls.js

+ 16 - 4
examples/js/controls/EditorControls.js

@@ -30,9 +30,21 @@ THREE.EditorControls = function ( object, domElement ) {
 
 	var changeEvent = { type: 'change' };
 
-	this.focus = function ( target ) {
+	this.focus = function ( target, frame ) {
+
+		var scale = new THREE.Vector3();
+		target.matrixWorld.decompose( center, new THREE.Quaternion(), scale );
+
+		if ( frame && target.geometry ) {
+
+			scale = ( scale.x + scale.y + scale.z ) / 3;
+			center.add(target.geometry.boundingSphere.center.clone().multiplyScalar( scale ));
+			var radius = target.geometry.boundingSphere.radius * ( scale );
+			var pos = object.position.clone().sub( center ).normalize().multiplyScalar( radius * 2 );
+			object.position.copy( center ).add( pos );
+
+		}
 
-		center.getPositionFromMatrix( target.matrixWorld );
 		object.lookAt( center );
 
 		scope.dispatchEvent( changeEvent );
@@ -121,6 +133,7 @@ THREE.EditorControls = function ( object, domElement ) {
 		domElement.addEventListener( 'mousemove', onMouseMove, false );
 		domElement.addEventListener( 'mouseup', onMouseUp, false );
 		domElement.addEventListener( 'mouseout', onMouseUp, false );
+		domElement.addEventListener( 'dblclick', onMouseUp, false );
 
 	}
 
@@ -155,11 +168,10 @@ THREE.EditorControls = function ( object, domElement ) {
 
 	function onMouseUp( event ) {
 
-		if ( scope.enabled === false ) return;
-
 		domElement.removeEventListener( 'mousemove', onMouseMove, false );
 		domElement.removeEventListener( 'mouseup', onMouseUp, false );
 		domElement.removeEventListener( 'mouseout', onMouseUp, false );
+		domElement.removeEventListener( 'dblclick', onMouseUp, false );
 
 		state = STATE.NONE;
 

+ 2 - 2
examples/js/controls/TransformControls.js

@@ -682,7 +682,7 @@ THREE.TransformControls = function ( camera, domElement ) {
 	this.gizmo["scale"].hide();
 
 	this.object = undefined;
-	this.snap = false;
+	this.snap = undefined;
 	this.space = "world";
 	this.size = 1;
 	this.axis = undefined;
@@ -954,7 +954,7 @@ THREE.TransformControls = function ( camera, domElement ) {
 				scope.object.position.copy( oldPosition );
 				scope.object.position.add( point );
 
-				if ( scope.snap == true ) {
+				if ( scope.snap != undefined ) {
 
 					if ( scope.axis.search("X") != -1 ) scope.object.position.x = Math.round( scope.object.position.x / scope.snap ) * scope.snap;
 					if ( scope.axis.search("Y") != -1 ) scope.object.position.y = Math.round( scope.object.position.y / scope.snap ) * scope.snap;