private void LoadBonesInfo(AnimatedNode node, BoneInfo parent = null) { if (bonesMapping.ContainsKey(node.Name)) { var point = Vector3.Zero; var boneIndex = bonesMapping[node.Name]; var bone = Bones[boneIndex]; var transform = m_globalInverseTransform * bone.BoneOffset; transform.Transpose(); bone.Point = -Vector3.Transform(point, transform); if (parent != null) { var line = new BoneLineInfo { Point = bone.Point, Direction = bone.Point - parent.Point }; line.Length = line.Direction.Length; line.Direction /= line.Length; parent.Lines.Add(line); } foreach (var child in node.Childs) { LoadBonesInfo(child, bone); } } else { foreach (var child in node.Childs) { LoadBonesInfo(child, parent); } } }