parseMaterials method

Map<String, dynamic> parseMaterials(
  1. List<Map<String, dynamic>>? json,
  2. Map<String, Texture> textures
)

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;
}