public AnimationCurveTpl(KeyframeTpl <T> keyframe1, KeyframeTpl <T> keyframe2) :
     this(false)
 {
     Curve    = new KeyframeTpl <T> [2];
     Curve[0] = keyframe1;
     Curve[1] = keyframe2;
 }
 public AnimationCurveTpl(T value1, T inSlope1, T outSlope1, T value2, T inSlope2, T outSlope2, T defaultWeight) :
     this(false)
 {
     Curve    = new KeyframeTpl <T> [2];
     Curve[0] = new KeyframeTpl <T>(0.0f, value1, inSlope1, outSlope1, defaultWeight);
     Curve[1] = new KeyframeTpl <T>(1.0f, value2, inSlope2, outSlope2, defaultWeight);
 }
 public AnimationCurveTpl(T defaultValue, T defaultWeight) :
     this(false)
 {
     Curve    = new KeyframeTpl <T> [2];
     Curve[0] = new KeyframeTpl <T>(0.0f, defaultValue, defaultWeight);
     Curve[1] = new KeyframeTpl <T>(1.0f, defaultValue, defaultWeight);
 }
 public AnimationCurveTpl(IReadOnlyList <KeyframeTpl <T> > keyframes) :
     this(false)
 {
     Curve = new KeyframeTpl <T> [keyframes.Count];
     for (int i = 0; i < keyframes.Count; i++)
     {
         Curve[i] = keyframes[i];
     }
 }
 public AnimationCurveTpl(IReadOnlyList <KeyframeTpl <T> > keyframes, CurveLoopTypes preInfinity, CurveLoopTypes postInfinity)
 {
     PreInfinity   = preInfinity;
     PostInfinity  = postInfinity;
     RotationOrder = RotationOrder.OrderZXY;
     Curve         = new KeyframeTpl <T> [keyframes.Count];
     for (int i = 0; i < keyframes.Count; i++)
     {
         Curve[i] = keyframes[i];
     }
 }
 public AnimationCurveTpl(KeyframeTpl <T> keyframe) :
     this(false)
 {
     Curve    = new KeyframeTpl <T> [1];
     Curve[0] = keyframe;
 }