Skip to content

Commit

Permalink
mesh fix 2
Browse files Browse the repository at this point in the history
  • Loading branch information
Anuken committed Jun 27, 2023
1 parent c15b342 commit f01df70
Showing 1 changed file with 12 additions and 3 deletions.
15 changes: 12 additions & 3 deletions core/src/mindustry/mod/ContentParser.java
Original file line number Diff line number Diff line change
Expand Up @@ -854,9 +854,18 @@ private <T extends MappableContent> T locateAny(String name){
return null;
}

private GenericMesh[] parseMeshes(Planet planet, JsonValue array){
var res = new GenericMesh[array.size];
for(int i = 0; i < array.size; i++){
//yes get is O(n) but it's practically irrelevant here
res[i] = parseMesh(planet, array.get(i));
}
return res;
}

private GenericMesh parseMesh(Planet planet, JsonValue data){
if(data.isArray()){
return new MultiMesh(parser.readValue(GenericMesh[].class, data));
return new MultiMesh(parseMeshes(planet, data));
}

String tname = Strings.capitalize(data.getString("type", "NoiseMesh"));
Expand All @@ -874,8 +883,8 @@ private GenericMesh parseMesh(Planet planet, JsonValue data){
data.getInt("seed", 0), data.getFloat("speed", 0), data.getFloat("radius", 1f),
data.getInt("divisions", 3), Color.valueOf(data.getString("color", "ffffff")), data.getInt("octaves", 1),
data.getFloat("persistence", 0.5f), data.getFloat("scale", 1f), data.getFloat("thresh", 0.5f));
case "MultiMesh" -> new MultiMesh(parser.readValue(GenericMesh[].class, data.get("meshes")));
case "MatMesh" -> new MatMesh(parser.readValue(GenericMesh.class, data.get("mesh")), parser.readValue(Mat3D.class, data.get("mat")));
case "MultiMesh" -> new MultiMesh(parseMeshes(planet, data.get("meshes")));
case "MatMesh" -> new MatMesh(parseMesh(planet, data.get("mesh")), parser.readValue(Mat3D.class, data.get("mat")));
default -> throw new RuntimeException("Unknown mesh type: " + tname);
};
}
Expand Down

0 comments on commit f01df70

Please sign in to comment.