Browse Source

Editor: Added Center Action to Geometry panel.

Mr.doob 10 years ago
parent
commit
6a1ed12243
1 changed files with 19 additions and 9 deletions
  1. 19 9
      editor/js/Sidebar.Geometry.js

+ 19 - 9
editor/js/Sidebar.Geometry.js

@@ -17,13 +17,14 @@ Sidebar.Geometry = function ( editor ) {
 
 	var geometryType = new UI.Text().setTextTransform( 'uppercase' );
 	container.addStatic( geometryType );
-	
+
 	// Actions
-	
+
 	var objectActions = new UI.Select().setPosition('absolute').setRight( '8px' ).setFontSize( '11px' );
 	objectActions.setOptions( {
 
 		'Actions': 'Actions',
+		'Center': 'Center',
 		'Flatten': 'Flatten'
 
 	} );
@@ -34,26 +35,35 @@ Sidebar.Geometry = function ( editor ) {
 	} );
 	objectActions.onChange( function ( event ) {
 
+		var action = this.getValue();
+
 		var object = editor.selected;
+		var geometry = object.geometry;
 
-		switch ( this.getValue() ) {
+		if ( confirm( action + ' ' + object.name + '?' ) === false ) return;
 
-			case 'Flatten':
+		switch ( action ) {
+
+			case 'Center':
 
-				var object = editor.selected;
+				var offset = geometry.center();
 
-				if ( confirm( 'Flatten ' + object.name + '?' ) === false ) return;
+				object.position.sub( offset );
 
-				var geometry = object.geometry;
+				editor.signals.geometryChanged.dispatch( geometry );
+				editor.signals.objectChanged.dispatch( object );
+
+				break;
+
+			case 'Flatten':
 
 				geometry.applyMatrix( object.matrix );
-				geometry.verticesNeedUpdate = true;
-				geometry.normalsNeedUpdate = true;
 
 				object.position.set( 0, 0, 0 );
 				object.rotation.set( 0, 0, 0 );
 				object.scale.set( 1, 1, 1 );
 
+				editor.signals.geometryChanged.dispatch( geometry );
 				editor.signals.objectChanged.dispatch( object );
 
 				break;