public ClipInstance(Clip clip)
        {
            Clip = clip;
            JointStates = new JointState[clip.Joints.Length];
            AbsoluteTransforms = new Transform2D[clip.Joints.Length];

            // There are potentially 3 types of animation per joint
            JointAnimStates = new JointAnimState<JointAnim>[clip.Joints.Length * 3];

            for (int i = 0; i < JointStates.Length; ++i)
            {
                JointStates[i].Color = Color.White;
                JointStates[i].Transform = clip.Joints[i].Transform;
                JointStates[i].Texture = clip.Joints[i].Texture;
                JointStates[i].TextureRect = clip.Joints[i].TextureRect;
                JointStates[i].FlipState = clip.Joints[i].FlipState;
                JointStates[i].Origin = clip.Joints[i].Origin;
                JointStates[i].Visible = true;
            }
            ComputeAbsoluteTransforms();
        }
 public ClipAnimInstance(ClipInstance clipInstance)
 {
     parentClipInstance = clipInstance;
     // There are potentially 3 types of animation per joint
     JointAnimStates = new JointAnimState<JointAnim>[parentClipInstance.Clip.Joints.Length * 3];
 }