Browse Source

Editor: Update outliner when Object3D/Geometry/Material name changes.

Mr.doob 12 years ago
parent
commit
2743820f8d

+ 21 - 0
editor/js/Editor.js

@@ -86,6 +86,13 @@ Editor.prototype = {
 
 
 	},
 	},
 
 
+	setObjectName: function ( object, name ) {
+
+		object.name = name;
+		this.signals.sceneGraphChanged.dispatch();
+
+	},
+
 	removeObject: function ( object ) {
 	removeObject: function ( object ) {
 
 
 		if ( object.parent === undefined ) return; // avoid deleting the camera or scene
 		if ( object.parent === undefined ) return; // avoid deleting the camera or scene
@@ -113,12 +120,26 @@ Editor.prototype = {
 
 
 	},
 	},
 
 
+	setGeometryName: function ( geometry, name ) {
+
+		geometry.name = name;
+		this.signals.sceneGraphChanged.dispatch();
+
+	},
+
 	addMaterial: function ( material ) {
 	addMaterial: function ( material ) {
 
 
 		this.materials[ material.uuid ] = material;
 		this.materials[ material.uuid ] = material;
 
 
 	},
 	},
 
 
+	setMaterialName: function ( material, name ) {
+
+		material.name = name;
+		this.signals.sceneGraphChanged.dispatch();
+
+	},
+
 	addTexture: function ( texture ) {
 	addTexture: function ( texture ) {
 
 
 		this.textures[ texture.uuid ] = texture;
 		this.textures[ texture.uuid ] = texture;

+ 1 - 0
editor/js/Loader.js

@@ -35,6 +35,7 @@ var Loader = function ( editor ) {
 	signals.objectAdded.add( this.saveLocalStorage );
 	signals.objectAdded.add( this.saveLocalStorage );
 	signals.objectChanged.add( this.saveLocalStorage );
 	signals.objectChanged.add( this.saveLocalStorage );
 	signals.objectRemoved.add( this.saveLocalStorage );
 	signals.objectRemoved.add( this.saveLocalStorage );
+	signals.sceneGraphChanged.add( this.saveLocalStorage );
 
 
 	this.loadFile = function ( file ) {
 	this.loadFile = function ( file ) {
 
 

+ 7 - 11
editor/js/Sidebar.Geometry.js

@@ -17,7 +17,8 @@ Sidebar.Geometry = function ( editor ) {
 	var geometryUUIDRenew = new UI.Button( '⟳' ).setMarginLeft( '7px' ).onClick( function () {
 	var geometryUUIDRenew = new UI.Button( '⟳' ).setMarginLeft( '7px' ).onClick( function () {
 
 
 		geometryUUID.setValue( THREE.Math.generateUUID() );
 		geometryUUID.setValue( THREE.Math.generateUUID() );
-		update();
+
+		editor.selected.geometry.uuid = geometryUUID.getValue();
 
 
 	} );
 	} );
 
 
@@ -30,7 +31,11 @@ Sidebar.Geometry = function ( editor ) {
 	// name
 	// name
 
 
 	var geometryNameRow = new UI.Panel();
 	var geometryNameRow = new UI.Panel();
-	var geometryName = new UI.Input().setWidth( '150px' ).setColor( '#444' ).setFontSize( '12px' ).onChange( update );
+	var geometryName = new UI.Input().setWidth( '150px' ).setColor( '#444' ).setFontSize( '12px' ).onChange( function () {
+
+		editor.setGeometryName( editor.selected.geometry, geometryName.getValue() );
+
+	} );
 
 
 	geometryNameRow.add( new UI.Text( 'Name' ).setWidth( '90px' ).setColor( '#666' ) );
 	geometryNameRow.add( new UI.Text( 'Name' ).setWidth( '90px' ).setColor( '#666' ) );
 	geometryNameRow.add( geometryName );
 	geometryNameRow.add( geometryName );
@@ -74,15 +79,6 @@ Sidebar.Geometry = function ( editor ) {
 
 
 	//
 	//
 
 
-	function update() {
-
-		var geometry = editor.selected.geometry;
-
-		geometry.uuid = geometryUUID.getValue();
-		geometry.name = geometryName.getValue();
-
-	}
-
 	function build() {
 	function build() {
 
 
 		var object = editor.selected;
 		var object = editor.selected;

+ 5 - 7
editor/js/Sidebar.Material.js

@@ -47,7 +47,11 @@ Sidebar.Material = function ( editor ) {
 	// name
 	// name
 
 
 	var materialNameRow = new UI.Panel();
 	var materialNameRow = new UI.Panel();
-	var materialName = new UI.Input().setWidth( '150px' ).setColor( '#444' ).setFontSize( '12px' ).onChange( update );
+	var materialName = new UI.Input().setWidth( '150px' ).setColor( '#444' ).setFontSize( '12px' ).onChange( function () {
+
+		editor.setMaterialName( editor.selected.material, materialName.getValue() );
+
+	} );
 
 
 	materialNameRow.add( new UI.Text( 'Name' ).setWidth( '90px' ).setColor( '#666' ) );
 	materialNameRow.add( new UI.Text( 'Name' ).setWidth( '90px' ).setColor( '#666' ) );
 	materialNameRow.add( materialName );
 	materialNameRow.add( materialName );
@@ -317,12 +321,6 @@ Sidebar.Material = function ( editor ) {
 
 
 			}
 			}
 
 
-			if ( material.name !== undefined ) {
-
-				material.name = materialName.getValue();
-
-			}
-
 			if ( material instanceof materialClasses[ materialClass.getValue() ] === false ) {
 			if ( material instanceof materialClasses[ materialClass.getValue() ] === false ) {
 
 
 				material = new materialClasses[ materialClass.getValue() ]();
 				material = new materialClasses[ materialClass.getValue() ]();

+ 7 - 5
editor/js/Sidebar.Object3D.js

@@ -18,7 +18,8 @@ Sidebar.Object3D = function ( editor ) {
 	var objectUUIDRenew = new UI.Button( '⟳' ).setMarginLeft( '7px' ).onClick( function () {
 	var objectUUIDRenew = new UI.Button( '⟳' ).setMarginLeft( '7px' ).onClick( function () {
 
 
 		objectUUID.setValue( THREE.Math.generateUUID() );
 		objectUUID.setValue( THREE.Math.generateUUID() );
-		update();
+
+		editor.selected.uuid = objectUUID.getValue();
 
 
 	} );
 	} );
 
 
@@ -31,7 +32,11 @@ Sidebar.Object3D = function ( editor ) {
 	// name
 	// name
 
 
 	var objectNameRow = new UI.Panel();
 	var objectNameRow = new UI.Panel();
-	var objectName = new UI.Input().setWidth( '150px' ).setColor( '#444' ).setFontSize( '12px' ).onChange( update );
+	var objectName = new UI.Input().setWidth( '150px' ).setColor( '#444' ).setFontSize( '12px' ).onChange( function () {
+
+			editor.setObjectName( editor.selected, objectName.getValue() );
+
+	} );
 
 
 	objectNameRow.add( new UI.Text( 'Name' ).setWidth( '90px' ).setColor( '#666' ) );
 	objectNameRow.add( new UI.Text( 'Name' ).setWidth( '90px' ).setColor( '#666' ) );
 	objectNameRow.add( objectName );
 	objectNameRow.add( objectName );
@@ -272,9 +277,6 @@ Sidebar.Object3D = function ( editor ) {
 
 
 		if ( object !== null ) {
 		if ( object !== null ) {
 
 
-			object.uuid = objectUUID.getValue();
-			object.name = objectName.getValue();
-
 			if ( object.parent !== undefined ) {
 			if ( object.parent !== undefined ) {
 
 
 				var newParentId = parseInt( objectParent.getValue() );
 				var newParentId = parseInt( objectParent.getValue() );