| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647 | 
							- using UnityEngine;
 
- using UnityEngine.Assertions;
 
- namespace UnityUIPlayables
 
- {
 
-     internal sealed class CurveEvaluateService
 
-     {
 
-         internal float EvaluateRepeat(Curve curve, float time, float loopDuration)
 
-         {
 
-             Assert.IsNotNull(curve);
 
-             Assert.IsTrue(time >= 0);
 
-             Assert.IsTrue(loopDuration > 0);
 
-             var progress = time / loopDuration;
 
-             var repeatedProgress = Math.RepeatWithLargerBoundaryValue(progress, 1.0f);
 
-             var evaluatedProgress = curve.Evaluate(repeatedProgress);
 
-             return evaluatedProgress;
 
-         }
 
-         internal float EvaluateReverse(Curve curve, float time, float loopDuration)
 
-         {
 
-             Assert.IsNotNull(curve);
 
-             Assert.IsTrue(time >= 0);
 
-             Assert.IsTrue(loopDuration > 0);
 
-             var progress = time / loopDuration;
 
-             var reverse = Mathf.Floor(progress) % 2 != 0;
 
-             var repeatedProgress = Math.RepeatWithLargerBoundaryValue(progress, 1.0f);
 
-             var evaluatedProgress = curve.Evaluate(repeatedProgress);
 
-             if (reverse)
 
-                 evaluatedProgress = 1 - evaluatedProgress;
 
-             return evaluatedProgress;
 
-         }
 
-         internal float EvaluatePingPong(Curve curve, float time, float loopDuration)
 
-         {
 
-             Assert.IsNotNull(curve);
 
-             Assert.IsTrue(time >= 0);
 
-             Assert.IsTrue(loopDuration > 0);
 
-             var progress = time / loopDuration;
 
-             var repeatedProgress = Mathf.PingPong(progress, 1.0f);
 
-             var evaluatedProgress = curve.Evaluate(repeatedProgress);
 
-             return evaluatedProgress;
 
-         }
 
-     }
 
- }
 
 
  |