private BodyPart ExtractData(IJoint joint) { var rotation = joint.Orientation; var worldCoordinate = joint.Point; var part = new BodyPart { Id = joint.JointType.ToInt(), Position = worldCoordinate, Rotation = rotation, Length = Creator.GetDefaultBoneLength(joint.JointType), Velocity = new Vector3(), Acceleration = new Vector3(), AngularVelocity = new Vector3(), AngularAcceleration = new Vector3() }; return part; }
/// <summary> /// Lefts the hand. /// </summary> /// <returns>The hand.</returns> /// <param name="hand">Frame.</param> /// <param name="jt"></param> private static IEnumerable<BodyPart> CreateHand(Hand hand, JointType jt) { var palmNormal = hand.PalmNormal; var handPosition = hand.PalmPosition; var handPart = new BodyPart { Id = jt.ToInt(), Rotation = new Vector4(palmNormal.x, palmNormal.y, palmNormal.z, 0), Position = new Vector3(handPosition.x, handPosition.y, handPosition.z), Velocity = new Vector3(hand.PalmVelocity.x, hand.PalmVelocity.y, hand.PalmVelocity.z) }; // TODO: should we add the hand palm to the list? var parts = new List<BodyPart> { }; parts.AddRange( hand.Fingers.Select( finger => CreateFinger(finger, FingerType2JointType(finger.Type, JointType.HAND_LEFT == jt ? 1 : -1)) ).SelectMany(x => x) ); return parts; }
public void AddCollider(BodyPart part) { BodyParts.Add(part); }