Example #1
0
        private AnimationCurve CreateNewEasingCurve(Ease ease, int timesteps)
        {
            if (timesteps <= 0)
            {
                return(null);
            }

            EaseFunction easeFunction = EaseManager.ToEaseFunction(ease);
            var          curve        = new AnimationCurve();

            // Adds all the required keys
            for (int i = 0; i < timesteps; i++)
            {
                float time   = MathfExtensions.Remap(i, 0, timesteps, 0, Duration);
                var   result = EaseManager.Evaluate(ease, easeFunction, time, Duration, EaseOvershoot, EasePeriod);
                curve.AddKey(time, result);
            }

#if UNITY_EDITOR
            // Set the tangent mode to Clamped Auto for all keys
            for (int i = 0; i < curve.length; i++)
            {
                var tangentMode = AnimationUtility.TangentMode.Linear;
                AnimationUtility.SetKeyLeftTangentMode(curve, i, tangentMode);
                AnimationUtility.SetKeyRightTangentMode(curve, i, tangentMode);
            }
#endif

            return(curve);
        }