/// <summary>
        /// adds a new key frame to the animation
        /// </summary>
        /// <param name="frame"></param>
        /// <param name="value"></param>
        /// <param name="type"></param>
        /// <param name="interpolationType"></param>
        public void AddKey(float frame, float value, AnimationTrackFormat type, InterpolationType interpolationType = InterpolationType.Linear)
        {
            var track = Tracks.Find(e => e.Type == type);

            if (track == null)
            {
                track = new GenericTransformTrack(type);
                Tracks.Add(track);
            }
            track.AddKey(frame, value, interpolationType);
        }
        /// <summary>
        /// gets the interpolated values for track type at frame
        /// </summary>
        /// <param name="frame"></param>
        /// <param name="type"></param>
        /// <returns></returns>
        public float GetTrackValueAt(float frame, AnimationTrackFormat type)
        {
            var track = Tracks.Find(e => e.Type == type);

            if (track == null)
            {
                return(0);
            }

            return(track.Keys.GetValue(frame));
        }
 public GenericTransformTrack(AnimationTrackFormat type)
 {
     Type = type;
 }