public Skeleton Clone()
{
var result = new Skeleton();
result.Name = this.Name;
result.Bones = new Bone[Bones.Length];
for (int i = 0; i < Bones.Length; i++){
result.Bones[i] = Bones[i].Clone();
}
/** Construct tree **/
foreach (var bone in result.Bones)
{
bone.Children = result.Bones.Where(x => x.ParentName == bone.Name).ToArray();
}
result.RootBone = result.Bones.FirstOrDefault(x => x.ParentName == "NULL");
result.ComputeBonePositions(result.RootBone, Matrix.Identity);
return result;
}