public AnimationBuilder Reversed()
        {
            var newAnimator = new AnimationBuilder()
            {
                animatePhysics   = animatePhysics,
                isRelative       = isRelative,
                loops            = loops,
                resetsOnComplete = resetsOnComplete,
                reverses         = reverses
            };

            for (var i = times.Count - 1; i >= 0; --i)
            {
                newAnimator.times.Add(times[0] + times[times.Count - 1] - times[i]);
            }

            for (var i = frames.Count - 1; i >= 0; --i)
            {
                newAnimator.frames.Add(frames[i].Clone());
            }

            return(newAnimator);
        }
        public AnimationBuilder Clone()
        {
            var newAnimator = new AnimationBuilder()
            {
                animatePhysics   = animatePhysics,
                isRelative       = isRelative,
                loops            = loops,
                resetsOnComplete = resetsOnComplete,
                reverses         = reverses
            };

            for (var i = 0; i < frames.Count; ++i)
            {
                newAnimator.times.Add(times[i]);
            }

            for (var i = 0; i < frames.Count; ++i)
            {
                newAnimator.frames.Add(frames[i].Clone());
            }

            return(newAnimator);
        }