markDefs method
void
markDefs()
Marks the special nodes/meshes in json for efficient parse.
Implementation
void markDefs() {
final nodeDefs = json["nodes"] ?? [];
final skinDefs = json["skins"] ?? [];
final meshDefs = json["meshes"] ?? [];
// Nothing in the node definition indicates whether it is a Bone or an
// Object3D. Use the skins' joint references to mark bones.
for (int skinIndex = 0, skinLength = skinDefs.length;
skinIndex < skinLength;
skinIndex++) {
final joints = skinDefs[skinIndex]["joints"];
for (int i = 0, il = joints.length; i < il; i++) {
nodeDefs[joints[i]]["isBone"] = true;
}
}
// Iterate over all nodes, marking references to shared resources,
// as well as skeleton joints.
for (int nodeIndex = 0, nodeLength = nodeDefs.length;
nodeIndex < nodeLength;
nodeIndex++) {
Map<String, dynamic> nodeDef = nodeDefs[nodeIndex];
if (nodeDef["mesh"] != null) {
addNodeRef(meshCache, nodeDef["mesh"]);
// Nothing in the mesh definition indicates whether it is
// a SkinnedMesh or Mesh. Use the node's mesh reference
// to mark SkinnedMesh if node has skin.
if (nodeDef["skin"] != null) {
meshDefs[nodeDef["mesh"]]["isSkinnedMesh"] = true;
}
}
if (nodeDef["camera"] != null) {
addNodeRef(cameraCache, nodeDef["camera"]);
}
}
}