Skip to content

Commit 302e746

Browse files
committed
Uses a HashSet for variable names in ShaderNodeLoaderDelegate instead of a String
1 parent c0cdf75 commit 302e746

File tree

1 file changed

+7
-10
lines changed

1 file changed

+7
-10
lines changed

jme3-core/src/plugins/java/com/jme3/material/plugins/ShaderNodeLoaderDelegate.java

Lines changed: 7 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -43,10 +43,7 @@
4343
import com.jme3.util.blockparser.Statement;
4444

4545
import java.io.IOException;
46-
import java.util.ArrayList;
47-
import java.util.HashMap;
48-
import java.util.List;
49-
import java.util.Map;
46+
import java.util.*;
5047

5148
/**
5249
* This class is here to be able to load shaderNodeDefinition from both the
@@ -75,7 +72,7 @@ public class ShaderNodeLoaderDelegate {
7572
protected MaterialDef materialDef;
7673
protected String shaderLanguage;
7774
protected String shaderName;
78-
protected String varNames = "";
75+
protected Set<String> varNames = new HashSet<>();
7976
protected AssetManager assetManager;
8077
protected ConditionParser conditionParser = new ConditionParser();
8178
protected List<String> nulledConditions = new ArrayList<String>();
@@ -177,7 +174,7 @@ protected void readShaderNodeDefinition(List<Statement> statements, ShaderNodeDe
177174
shaderNodeDefinition.setDocumentation(doc);
178175
}
179176
} else if (line.startsWith("Input")) {
180-
varNames = "";
177+
varNames.clear();
181178
for (Statement statement1 : statement.getContents()) {
182179
try {
183180
shaderNodeDefinition.getInputs().add(readVariable(statement1));
@@ -186,7 +183,7 @@ protected void readShaderNodeDefinition(List<Statement> statements, ShaderNodeDe
186183
}
187184
}
188185
} else if (line.startsWith("Output")) {
189-
varNames = "";
186+
varNames.clear();
190187
for (Statement statement1 : statement.getContents()) {
191188
try {
192189
if (statement1.getLine().trim().equals("None")) {
@@ -235,11 +232,11 @@ protected ShaderNodeVariable readVariable(Statement statement) throws IOExceptio
235232
multiplicity = arr[1].replaceAll("\\]", "").trim();
236233
}
237234

238-
if (varNames.contains(varName + ";")) {
235+
if (varNames.contains(varName)) {
239236
throw new MatParseException("Duplicate variable name " + varName, statement);
240237
}
241238

242-
varNames += varName + ";";
239+
varNames.add(varName);
243240

244241
final ShaderNodeVariable variable = new ShaderNodeVariable(varType, "", varName, multiplicity);
245242
variable.setDefaultValue(defaultValue);
@@ -1139,7 +1136,7 @@ public void clear() {
11391136
materialDef = null;
11401137
shaderLanguage = "";
11411138
shaderName = "";
1142-
varNames = "";
1139+
varNames.clear();
11431140
assetManager = null;
11441141
nulledConditions.clear();
11451142
}

0 commit comments

Comments
 (0)