|
@@ -48,10 +48,7 @@ import com.jme3.shader.VarType;
|
|
import com.jme3.shader.VariableMapping;
|
|
import com.jme3.shader.VariableMapping;
|
|
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
|
|
@@ -77,7 +74,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>();
|
|
@@ -179,7 +176,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));
|
|
@@ -188,7 +185,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")) {
|
|
@@ -237,11 +234,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);
|
|
@@ -1065,7 +1062,7 @@ public class ShaderNodeLoaderDelegate {
|
|
materialDef = null;
|
|
materialDef = null;
|
|
shaderLanguage = "";
|
|
shaderLanguage = "";
|
|
shaderName = "";
|
|
shaderName = "";
|
|
- varNames = "";
|
|
|
|
|
|
+ varNames.clear();
|
|
assetManager = null;
|
|
assetManager = null;
|
|
nulledConditions.clear();
|
|
nulledConditions.clear();
|
|
}
|
|
}
|