Bladeren bron

script title honors material name when editing shaders (#28444)

ycw 1 jaar geleden
bovenliggende
commit
2e7e9d4e79
1 gewijzigde bestanden met toevoegingen van 58 en 12 verwijderingen
  1. 58 12
      editor/js/Script.js

+ 58 - 12
editor/js/Script.js

@@ -359,16 +359,49 @@ function Script( editor ) {
 
 	} );
 
+	function setTitle( object, script ) {
+
+		if ( typeof script === 'object' ) {
+
+			title.setValue( object.name + ' / ' + script.name );
+
+		} else {
+
+			switch ( script ) {
+
+				case 'vertexShader':
+
+					title.setValue( object.material.name + ' / Vertex Shader' ); // TODO: l10n
+					break;
+
+				case 'fragmentShader':
+
+					title.setValue( object.material.name + ' / Fragment Shader' ); // TODO: l10n
+					break;
+
+				case 'programInfo':
+
+					title.setValue( object.material.name + ' / Program Properties ' ); // TODO: l10n
+					break;
+
+				default:
+
+					throw new Error( 'setTitle: Unknown script' );
+
+			}
+
+		}
+
+	}
+
 	signals.editScript.add( function ( object, script ) {
 
-		let mode, name, source;
+		let mode, source;
 
 		if ( typeof ( script ) === 'object' ) {
 
 			mode = 'javascript';
-			name = script.name;
 			source = script.source;
-			title.setValue( object.name + ' / ' + name );
 
 		} else {
 
@@ -377,7 +410,6 @@ function Script( editor ) {
 				case 'vertexShader':
 
 					mode = 'glsl';
-					name = 'Vertex Shader';
 					source = object.material.vertexShader || '';
 
 					break;
@@ -385,7 +417,6 @@ function Script( editor ) {
 				case 'fragmentShader':
 
 					mode = 'glsl';
-					name = 'Fragment Shader';
 					source = object.material.fragmentShader || '';
 
 					break;
@@ -393,7 +424,6 @@ function Script( editor ) {
 				case 'programInfo':
 
 					mode = 'json';
-					name = 'Program Properties';
 					const json = {
 						defines: object.material.defines,
 						uniforms: object.material.uniforms,
@@ -401,12 +431,18 @@ function Script( editor ) {
 					};
 					source = JSON.stringify( json, null, '\t' );
 
-			}
+					break;
 
-			title.setValue( object.material.name + ' / ' + name );
+				default:
+
+					throw new Error( 'editScript: Unknown script' );
+
+			}
 
 		}
 
+		setTitle( object, script );
+
 		currentMode = mode;
 		currentScript = script;
 		currentObject = object;
@@ -431,11 +467,11 @@ function Script( editor ) {
 
 	signals.objectChanged.add( function ( object ) {
 
-		if ( object === currentObject ) {
+		if ( object !== currentObject ) return;
 
-			title.setValue( currentObject.name + ' / ' + currentScript.name );
+		if ( [ 'programInfo', 'vertexShader', 'fragmentShader' ].includes( currentScript ) ) return;
 
-		}
+		setTitle( currentObject, currentScript );
 
 	} );
 
@@ -443,12 +479,22 @@ function Script( editor ) {
 
 		if ( script === currentScript ) {
 
-			title.setValue( currentObject.name + ' / ' + currentScript.name );
+			setTitle( currentObject, currentScript );
 
 		}
 
 	} );
 
+	signals.materialChanged.add( function ( object, slot ) {
+
+		if ( object !== currentObject ) return;
+
+		// TODO: Adds multi-material support
+
+		setTitle( currentObject, currentScript );
+
+	} );
+
 	return container;
 
 }