clone static method
dynamic
clone(
- Object3D source
Implementation
static clone(Object3D source) {
final sourceLookup = {};
final cloneLookup = {};
final clone = source.clone();
parallelTraverse(source, clone, (sourceNode, clonedNode) {
sourceLookup[clonedNode] = sourceNode;
cloneLookup[sourceNode] = clonedNode;
});
clone.traverse((node) {
if (!node.runtimeType.toString().contains("SkinnedMesh")) return;
final clonedMesh = node;
final Object3D sourceMesh = sourceLookup[node];
final sourceBones = sourceMesh.skeleton?.bones;
clonedMesh.skeleton = sourceMesh.skeleton?.clone();
clonedMesh.bindMatrix?.setFrom(sourceMesh.bindMatrix!);
clonedMesh.skeleton?.bones = List<Bone>.from(sourceBones!.map((bone) {
return cloneLookup[bone];
}).toList());
if(clonedMesh is SkinnedMesh){
clonedMesh.bind(clonedMesh.skeleton!, clonedMesh.bindMatrix);
}
});
return clone;
}