Просмотр исходного кода

NodeBuilder: Make `registerDeclaration()` more robust. (#33869)

Michael Herzog 2 недель назад
Родитель
Сommit
52cbc8f9c3
1 измененных файлов с 10 добавлено и 9 удалено
  1. 10 9
      src/nodes/core/NodeBuilder.js

+ 10 - 9
src/nodes/core/NodeBuilder.js

@@ -2268,28 +2268,29 @@ class NodeBuilder {
 		const shaderStage = this.shaderStage;
 		const declarations = this.declarations[ shaderStage ] || ( this.declarations[ shaderStage ] = {} );
 
-		const property = this.getPropertyName( node );
+		const baseName = node.name;
 
+		let name = baseName;
+		let property = this.getPropertyName( node );
 		let index = 1;
-		let name = property;
 
 		// Automatically renames the property if the name is already in use.
 
-		while ( declarations[ name ] !== undefined ) {
+		while ( declarations[ property ] !== undefined ) {
 
-			name = property + '_' + index ++;
+			name = baseName + '_' + index ++;
+			node.name = name;
+			property = this.getPropertyName( node );
 
 		}
 
-		if ( index > 1 ) {
-
-			node.name = name;
+		if ( name !== baseName ) {
 
-			warn( `TSL: Declaration name '${ property }' of '${ node.type }' already in use. Renamed to '${ name }'.` );
+			warn( `TSL: Declaration name '${ baseName }' of '${ node.type }' already in use. Renamed to '${ name }'.` );
 
 		}
 
-		declarations[ name ] = node;
+		declarations[ property ] = node;
 
 	}
 

粤ICP备19079148号