private static Vector3 Ease(XInterpolate.Function ease, Vector3 start, Vector3 distance, float elapsedTime, float duration) { start.x = ease(start.x, distance.x, elapsedTime, duration); start.y = ease(start.y, distance.y, elapsedTime, duration); start.z = ease(start.z, distance.z, elapsedTime, duration); return(start); }
private static IEnumerator NewEase(XInterpolate.Function ease, Vector3 start, Vector3 end, float total, IEnumerable <float> driver) { Vector3 distance = end - start; foreach (float elapsedTime in driver) { yield return(XInterpolate.Ease(ease, start, distance, elapsedTime, total)); } yield break; }
private static Vector3 Bezier(XInterpolate.Function ease, Vector3[] points, float elapsedTime, float duration) { for (int i = points.Length - 1; i > 0; i--) { for (int j = 0; j < i; j++) { points[j].x = ease(points[j].x, points[j + 1].x - points[j].x, elapsedTime, duration); points[j].y = ease(points[j].y, points[j + 1].y - points[j].y, elapsedTime, duration); points[j].z = ease(points[j].z, points[j + 1].z - points[j].z, elapsedTime, duration); } } return(points[0]); }
private static IEnumerable <Vector3> NewBezier <T>(XInterpolate.Function ease, IList nodes, XInterpolate.ToVector3 <T> toVector3, float maxStep, IEnumerable <float> steps) { if (nodes.Count >= 2) { Vector3[] array = new Vector3[nodes.Count]; foreach (float elapsedTime in steps) { for (int i = 0; i < nodes.Count; i++) { array[i] = toVector3((T)((object)nodes[i])); } yield return(XInterpolate.Bezier(ease, array, elapsedTime, maxStep)); } } yield break; }
public static IEnumerator NewEase(XInterpolate.Function ease, Vector3 start, Vector3 end, int slices) { IEnumerable <float> driver = XInterpolate.NewCounter(0, slices + 1, 1); return(XInterpolate.NewEase(ease, start, end, (float)(slices + 1), driver)); }
public static IEnumerator NewEase(XInterpolate.Function ease, Vector3 start, Vector3 end, float duration) { IEnumerable <float> driver = XInterpolate.NewTimer(duration); return(XInterpolate.NewEase(ease, start, end, duration, driver)); }
public static IEnumerable <Vector3> NewBezier(XInterpolate.Function ease, Vector3[] points, int slices) { IEnumerable <float> steps = XInterpolate.NewCounter(0, slices + 1, 1); return(XInterpolate.NewBezier <Vector3>(ease, points, new XInterpolate.ToVector3 <Vector3>(XInterpolate.Identity), (float)(slices + 1), steps)); }
public static IEnumerable <Vector3> NewBezier(XInterpolate.Function ease, Vector3[] points, float duration) { IEnumerable <float> steps = XInterpolate.NewTimer(duration); return(XInterpolate.NewBezier <Vector3>(ease, points, new XInterpolate.ToVector3 <Vector3>(XInterpolate.Identity), duration, steps)); }
public static IEnumerable <Vector3> NewBezier(XInterpolate.Function ease, Transform[] nodes, int slices) { IEnumerable <float> steps = XInterpolate.NewCounter(0, slices + 1, 1); return(XInterpolate.NewBezier <Transform>(ease, nodes, new XInterpolate.ToVector3 <Transform>(XInterpolate.TransformDotPosition), (float)(slices + 1), steps)); }
public static IEnumerable <Vector3> NewBezier(XInterpolate.Function ease, Transform[] nodes, float duration) { IEnumerable <float> steps = XInterpolate.NewTimer(duration); return(XInterpolate.NewBezier <Transform>(ease, nodes, new XInterpolate.ToVector3 <Transform>(XInterpolate.TransformDotPosition), duration, steps)); }
public static XInterpolate.Function Ease(XInterpolate.EaseType type) { XInterpolate.Function result = null; switch (type) { case XInterpolate.EaseType.Linear: result = new XInterpolate.Function(XInterpolate.Linear); break; case XInterpolate.EaseType.EaseInQuad: result = new XInterpolate.Function(XInterpolate.EaseInQuad); break; case XInterpolate.EaseType.EaseOutQuad: result = new XInterpolate.Function(XInterpolate.EaseOutQuad); break; case XInterpolate.EaseType.EaseInOutQuad: result = new XInterpolate.Function(XInterpolate.EaseInOutQuad); break; case XInterpolate.EaseType.EaseInCubic: result = new XInterpolate.Function(XInterpolate.EaseInCubic); break; case XInterpolate.EaseType.EaseOutCubic: result = new XInterpolate.Function(XInterpolate.EaseOutCubic); break; case XInterpolate.EaseType.EaseInOutCubic: result = new XInterpolate.Function(XInterpolate.EaseInOutCubic); break; case XInterpolate.EaseType.EaseInQuart: result = new XInterpolate.Function(XInterpolate.EaseInQuart); break; case XInterpolate.EaseType.EaseOutQuart: result = new XInterpolate.Function(XInterpolate.EaseOutQuart); break; case XInterpolate.EaseType.EaseInOutQuart: result = new XInterpolate.Function(XInterpolate.EaseInOutQuart); break; case XInterpolate.EaseType.EaseInQuint: result = new XInterpolate.Function(XInterpolate.EaseInQuint); break; case XInterpolate.EaseType.EaseOutQuint: result = new XInterpolate.Function(XInterpolate.EaseOutQuint); break; case XInterpolate.EaseType.EaseInOutQuint: result = new XInterpolate.Function(XInterpolate.EaseInOutQuint); break; case XInterpolate.EaseType.EaseInSine: result = new XInterpolate.Function(XInterpolate.EaseInSine); break; case XInterpolate.EaseType.EaseOutSine: result = new XInterpolate.Function(XInterpolate.EaseOutSine); break; case XInterpolate.EaseType.EaseInOutSine: result = new XInterpolate.Function(XInterpolate.EaseInOutSine); break; case XInterpolate.EaseType.EaseInExpo: result = new XInterpolate.Function(XInterpolate.EaseInExpo); break; case XInterpolate.EaseType.EaseOutExpo: result = new XInterpolate.Function(XInterpolate.EaseOutExpo); break; case XInterpolate.EaseType.EaseInOutExpo: result = new XInterpolate.Function(XInterpolate.EaseInOutExpo); break; case XInterpolate.EaseType.EaseInCirc: result = new XInterpolate.Function(XInterpolate.EaseInCirc); break; case XInterpolate.EaseType.EaseOutCirc: result = new XInterpolate.Function(XInterpolate.EaseOutCirc); break; case XInterpolate.EaseType.EaseInOutCirc: result = new XInterpolate.Function(XInterpolate.EaseInOutCirc); break; } return(result); }