Преглед изворни кода

Fix code generation for nme

David Catuhe пре 5 година
родитељ
комит
a5400c4957

+ 10 - 1
src/Materials/Node/nodeMaterial.ts

@@ -1055,7 +1055,7 @@ export class NodeMaterial extends PushMaterial {
         }
 
         // Generate vertex shader
-        let codeString = "var nodeMaterial = new BABYLON.NodeMaterial(`node material`);\r\n";
+        let codeString = `var nodeMaterial = new BABYLON.NodeMaterial("${this.name || "node material"}");\r\n`;
         for (var node of vertexBlocks) {
             if (node.isInput && alreadyDumped.indexOf(node) === -1) {
                 codeString += node._dumpCode(uniqueNames, alreadyDumped);
@@ -1069,6 +1069,14 @@ export class NodeMaterial extends PushMaterial {
             }
         }
 
+        // Connections
+        codeString += "\r\n// Connections\r\n";
+        for (var node of alreadyDumped) {
+            codeString += node._dumpCodeForOutputConnections();
+        }
+
+        // Output nodes        
+        codeString += "\r\n// Output nodes\r\n";
         for (var node of this._vertexOutputNodes) {
             codeString += `nodeMaterial.addOutputNode(${node._codeVariableName});\r\n`;
         }
@@ -1076,6 +1084,7 @@ export class NodeMaterial extends PushMaterial {
         for (var node of this._fragmentOutputNodes) {
             codeString += `nodeMaterial.addOutputNode(${node._codeVariableName});\r\n`;
         }
+        
 
         codeString += `nodeMaterial.build();\r\n`;
 

+ 21 - 3
src/Materials/Node/nodeMaterialBlock.ts

@@ -542,7 +542,8 @@ export class NodeMaterialBlock {
         uniqueNames.push(this._codeVariableName);
 
         // Declaration
-        codeString = `\r\nvar ${this._codeVariableName} = new BABYLON.${this.getClassName()}("${this.name}");\r\n`;
+        codeString = `\r\n// ${this.getClassName()}\r\n`;
+        codeString += `var ${this._codeVariableName} = new BABYLON.${this.getClassName()}("${this.name}");\r\n`;
 
         // Properties
         codeString += this._dumpPropertiesCode();
@@ -559,8 +560,6 @@ export class NodeMaterialBlock {
             if (alreadyDumped.indexOf(connectedBlock) === -1) {
                 codeString += connectedBlock._dumpCode(uniqueNames, alreadyDumped);
             }
-
-            codeString += `${connectedBlock._codeVariableName}.${connectedBlock._outputRename(connectedOutput.name)}.connectTo(${this._codeVariableName}.${this._inputRename(input.name)});\r\n`;
         }
 
         // Outputs
@@ -579,6 +578,25 @@ export class NodeMaterialBlock {
 
         return codeString;
     }
+    
+    /** @hidden */
+    public _dumpCodeForOutputConnections() {
+        let codeString = "";
+
+        for (var input of this.inputs) {
+            if (!input.isConnected) {
+                continue;
+            }
+
+            var connectedOutput = input.connectedPoint!;
+            var connectedBlock = connectedOutput.ownerBlock;
+
+            codeString += `${connectedBlock._codeVariableName}.${connectedBlock._outputRename(connectedOutput.name)}.connectTo(${this._codeVariableName}.${this._inputRename(input.name)});\r\n`;
+        }
+
+        return codeString;        
+    }
+
 
     /**
      * Clone the current block to a new identical block

BIN
tests/validation/ReferenceImages/node-material6.png


+ 6 - 1
tests/validation/config.json

@@ -25,7 +25,12 @@
             "title": "Node material #5",
             "playgroundId": "#V8VH7B#0",
             "referenceImage": "node-material5.png"
-        },       
+        },                     
+        {
+            "title": "Node material #6",
+            "playgroundId": "#2XY3Z4#0",
+            "referenceImage": "node-material6.png"
+        },    
         {
             "title": "Basis loader",
             "playgroundId": "#4RN0VF#0",