Skeleton constructor
Skeleton(
- ModelData model
The skeleton of model.
Implementation
Skeleton(this.model)
: nodeCount = model.nodes.length,
_parents = Int32List(model.nodes.length)
..fillRange(0, model.nodes.length, -1) {
final seen = List<bool>.filled(nodeCount, false);
void walk(int node, int parent) {
if (node >= nodeCount || seen[node]) return;
seen[node] = true;
_parents[node] = parent;
_order.add(node);
for (final child in model.nodes[node].children) {
walk(child, node);
}
}
for (final root in model.roots) {
walk(root, -1);
}
// Nodes outside the shown scene still get matrices (a joint may be
// left out of it by a careless exporter).
for (var n = 0; n < nodeCount; n++) {
if (!seen[n]) walk(n, -1);
}
for (var s = 0; s < model.skins.length; s++) {
_reach.add(_reachOf(model.skins[s]));
}
}