updateMorphTargets top-level property

Function updateMorphTargets
getter/setter pair

@param {Mesh} mesh @param {GLTF.Mesh} meshDef

Implementation

Function updateMorphTargets = (Mesh mesh, Map<String, dynamic> meshDef) {
  mesh.updateMorphTargets();
  if (meshDef["weights"] != null) {
    for (int i = 0, il = meshDef["weights"].length; i < il; i++) {
      mesh.morphTargetInfluences[i] = meshDef["weights"][i].toDouble();
    }
  }

  // .extras has user-defined data, so check that .extras.targetNames is an array.
  if (meshDef["extras"] != null && meshDef["extras"]["targetNames"] is List) {
    final targetNames = meshDef["extras"]["targetNames"];

    if (mesh.morphTargetInfluences.length == targetNames.length) {
      mesh.morphTargetDictionary = {};

      for (int i = 0, il = targetNames.length; i < il; i++) {
        mesh.morphTargetDictionary?[targetNames[i]] = i;
      }
    }
    else {
      console.warning('GLTFLoader: Invalid extras.targetNames length. Ignoring names.');
    }
  }
};