Esempio n. 1
0
 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);
         }
     }
 }
 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);
         }
     }
 }