浏览代码

Uses a HashSet for variable names in ShaderNodeLoaderDelegate instead of a String

Nehon 7 年之前
父节点
当前提交
302e746a94
共有 1 个文件被更改,包括 7 次插入10 次删除
  1. 7 10
      jme3-core/src/plugins/java/com/jme3/material/plugins/ShaderNodeLoaderDelegate.java

+ 7 - 10
jme3-core/src/plugins/java/com/jme3/material/plugins/ShaderNodeLoaderDelegate.java

@@ -43,10 +43,7 @@ import com.jme3.shader.*;
 import com.jme3.util.blockparser.Statement;
 import com.jme3.util.blockparser.Statement;
 
 
 import java.io.IOException;
 import java.io.IOException;
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
+import java.util.*;
 
 
 /**
 /**
  * This class is here to be able to load shaderNodeDefinition from both the
  * This class is here to be able to load shaderNodeDefinition from both the
@@ -75,7 +72,7 @@ public class ShaderNodeLoaderDelegate {
     protected MaterialDef materialDef;
     protected MaterialDef materialDef;
     protected String shaderLanguage;
     protected String shaderLanguage;
     protected String shaderName;
     protected String shaderName;
-    protected String varNames = "";
+    protected Set<String> varNames = new HashSet<>();
     protected AssetManager assetManager;
     protected AssetManager assetManager;
     protected ConditionParser conditionParser = new ConditionParser();
     protected ConditionParser conditionParser = new ConditionParser();
     protected List<String> nulledConditions = new ArrayList<String>();
     protected List<String> nulledConditions = new ArrayList<String>();
@@ -177,7 +174,7 @@ public class ShaderNodeLoaderDelegate {
                         shaderNodeDefinition.setDocumentation(doc);
                         shaderNodeDefinition.setDocumentation(doc);
                     }
                     }
                 } else if (line.startsWith("Input")) {
                 } else if (line.startsWith("Input")) {
-                    varNames = "";
+                    varNames.clear();
                     for (Statement statement1 : statement.getContents()) {
                     for (Statement statement1 : statement.getContents()) {
                         try {
                         try {
                             shaderNodeDefinition.getInputs().add(readVariable(statement1));
                             shaderNodeDefinition.getInputs().add(readVariable(statement1));
@@ -186,7 +183,7 @@ public class ShaderNodeLoaderDelegate {
                         }
                         }
                     }
                     }
                 } else if (line.startsWith("Output")) {
                 } else if (line.startsWith("Output")) {
-                    varNames = "";
+                    varNames.clear();
                     for (Statement statement1 : statement.getContents()) {
                     for (Statement statement1 : statement.getContents()) {
                         try {
                         try {
                             if (statement1.getLine().trim().equals("None")) {
                             if (statement1.getLine().trim().equals("None")) {
@@ -235,11 +232,11 @@ public class ShaderNodeLoaderDelegate {
             multiplicity = arr[1].replaceAll("\\]", "").trim();
             multiplicity = arr[1].replaceAll("\\]", "").trim();
         }
         }
 
 
-        if (varNames.contains(varName + ";")) {
+        if (varNames.contains(varName)) {
             throw new MatParseException("Duplicate variable name " + varName, statement);
             throw new MatParseException("Duplicate variable name " + varName, statement);
         }
         }
 
 
-        varNames += varName + ";";
+        varNames.add(varName);
 
 
         final ShaderNodeVariable variable = new ShaderNodeVariable(varType, "", varName, multiplicity);
         final ShaderNodeVariable variable = new ShaderNodeVariable(varType, "", varName, multiplicity);
         variable.setDefaultValue(defaultValue);
         variable.setDefaultValue(defaultValue);
@@ -1139,7 +1136,7 @@ public class ShaderNodeLoaderDelegate {
         materialDef = null;
         materialDef = null;
         shaderLanguage = "";
         shaderLanguage = "";
         shaderName = "";
         shaderName = "";
-        varNames = "";
+        varNames.clear();
         assetManager = null;
         assetManager = null;
         nulledConditions.clear();
         nulledConditions.clear();
     }
     }