Sfoglia il codice sorgente

Editor: Edit/Flatten to Geometry/Actions/Flatten

Mr.doob 10 anni fa
parent
commit
58cb06f4e5
3 ha cambiato i file con 52 aggiunte e 39 eliminazioni
  1. 0 39
      editor/js/Menubar.Edit.js
  2. 50 0
      editor/js/Sidebar.Geometry.js
  3. 2 0
      editor/js/Sidebar.Object3D.js

+ 0 - 39
editor/js/Menubar.Edit.js

@@ -53,45 +53,6 @@ Menubar.Edit = function ( editor ) {
 	} );
 	options.add( option );
 
-	//
-
-	options.add( new UI.HorizontalRule() );
-
-	// Flatten
-
-	var option = new UI.Panel();
-	option.setClass( 'option' );
-	option.setTextContent( 'Flatten' );
-	option.onClick( function () {
-
-		var object = editor.selected;
-
-		if ( object.parent === undefined ) return; // avoid flattening the camera or scene
-
-		if ( object.geometry === undefined ) {
-
-			alert( object.name + ' doesn\'t have geometry' );
-			return;
-
-		}
-
-		if ( confirm( 'Flatten ' + object.name + '?' ) === false ) return;
-
-		var geometry = object.geometry;
-
-		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.objectChanged.dispatch( object );
-
-	} );
-	options.add( option );
-
 	return container;
 
 };

+ 50 - 0
editor/js/Sidebar.Geometry.js

@@ -17,6 +17,56 @@ 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',
+		'Flatten': 'Flatten'
+
+	} );
+	objectActions.onClick( function ( event ) {
+
+		event.stopPropagation(); // Avoid panel collapsing
+
+	} );
+	objectActions.onChange( function ( event ) {
+
+		var object = editor.selected;
+
+		switch ( this.getValue() ) {
+
+			case 'Flatten':
+
+				var object = editor.selected;
+
+				if ( confirm( 'Flatten ' + object.name + '?' ) === false ) return;
+
+				var geometry = object.geometry;
+
+				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.objectChanged.dispatch( object );
+
+				break;
+
+		}
+
+		this.setValue( 'Actions' );
+
+		signals.objectChanged.dispatch( object );
+
+	} );
+	container.addStatic( objectActions );
+
 	container.add( new UI.Break() );
 
 	// uuid

+ 2 - 0
editor/js/Sidebar.Object3D.js

@@ -18,6 +18,8 @@ Sidebar.Object3D = function ( editor ) {
 	var objectType = new UI.Text().setTextTransform( 'uppercase' );
 	container.addStatic( objectType );
 
+	// Actions
+
 	var objectActions = new UI.Select().setPosition('absolute').setRight( '8px' ).setFontSize( '11px' );
 	objectActions.setOptions( {