private void _CreateItems(Animations.CurveBuilder <T> curve)
        {
            Animations._CurveNode <T>?prev = null;

            foreach (var kvp in curve._DebugKeys)
            {
                if (prev.HasValue)
                {
                    var d = prev.Value.Degree;

                    switch (d)
                    {
                    case 0:

                        break;

                    case 1:
                        _Items.Add(new _OutTangent {
                            Tangent = GetTangent(prev.Value.Point, kvp.Value.Point)
                        });
                        break;

                    case 3:
                        _Items.Add(new _OutTangent {
                            Tangent = prev.Value.OutgoingTangent
                        });
                        _Items.Add(new _InTangent {
                            Tangent = kvp.Value.IncomingTangent
                        });
                        break;

                    default:
                        _Items.Add("ERROR: {d}");
                        break;
                    }
                }

                _Items.Add(new _Point {
                    Key = kvp.Key, Point = kvp.Value.Point
                });

                prev = kvp.Value;
            }
        }
 public _CurveBuilderDebugProxyVector3(Animations.CurveBuilder <Vector3> curve)
     : base(curve)
 {
 }
 public _CurveBuilderDebugProxySparse(Animations.CurveBuilder <Transforms.SparseWeight8> curve)
     : base(curve)
 {
 }
 public _CurveBuilderDebugProxy(Animations.CurveBuilder <T> curve)
 {
     _Curve = curve;
     _CreateItems(curve);
 }
 public _CurveBuilderDebugProxyQuaternion(Animations.CurveBuilder <Quaternion> curve)
     : base(curve)
 {
 }