parseMaterials method
Implementation
Map<String,dynamic> parseMaterials(List<Map<String,dynamic>>? json, Map<String,Texture>textures) {
final Map<String,dynamic> cache = {}; // MultiMaterial
final Map<String,dynamic> materials = {};
if (json != null) {
final loader = MaterialLoader();
loader.setTextures(textures);
for (int i = 0, l = json.length; i < l; i++) {
Map<String, dynamic> data = json[i];
if (data["type"] == 'MultiMaterial') {
// Deprecated
final array = [];
for (int j = 0; j < data["materials"].length; j++) {
final material = data["materials"][j];
if (cache[material.uuid] == null) {
cache[material.uuid] = loader.parseJson(material);
}
array.add(cache[material.uuid]);
}
materials[data["uuid"]] = array;
} else {
if (cache[data["uuid"]] == null) {
cache[data["uuid"]] = loader.parseJson(data);
}
materials[data["uuid"]] = cache[data["uuid"]];
}
}
}
return materials;
}