public Color Evaluate(float time) => Color.Lerp(g1.Evaluate(time), g2.Evaluate(time), Mathf.Clamp01((time - 0.5f) * (0.5f / (0.5f - lerpOff)) + 0.5f));
public static void GradientHelpers() { IGradient g = EvenlySpaced(Color.red, Color.blue); ColorEq(g.Evaluate(0f), Color.red); ColorEq(g.Evaluate(1f), Color.blue); var gr = g.Reverse(); ColorEq(gr.Evaluate(0f), Color.blue); ColorEq(gr.Evaluate(1f), Color.red); var gsr = gr.RemapTime(0.2f, 0.7f); ColorEq(gsr.Evaluate(0), Color.Lerp(Color.blue, Color.red, 0.2f)); ColorEq(gsr.Evaluate(1), Color.Lerp(Color.blue, Color.red, 0.7f)); ColorEq(gsr.Evaluate(0.5f), Color.Lerp(Color.blue, Color.red, 0.45f)); Assert.IsTrue(gsr is DGradient); var red0 = new Color(1f, 0, 0, 0); g = EvenlySpaced(red0, Color.blue); //Alpha in color DOES matter as fallback ColorEq(g.Evaluate(0f), Color.red.WithA(0f)); ColorEq(g.Evaluate(1f), Color.blue); g = FromKeys(new[] { new GradientColorKey(Color.red, 0f), new GradientColorKey(Color.blue, 1f) }, new[] { new GradientAlphaKey(0f, 0f), new GradientAlphaKey(1f, 1f) }); ColorEq(g.Evaluate(0f), red0); ColorEq(g.Evaluate(1f), Color.blue); g = g.RemapTime(0.2f, 0.7f); ColorEq(g.Evaluate(0), Color.Lerp(red0, Color.blue, 0.2f)); ColorEq(g.Evaluate(1), Color.Lerp(red0, Color.blue, 0.7f)); ColorEq(g.Evaluate(0.5f), Color.Lerp(red0, Color.blue, 0.45f)); g = g.RemapTime(0f, 2f); ColorEq(g.Evaluate(0), Color.Lerp(red0, Color.blue, 0.2f)); ColorEq(g.Evaluate(1), Color.Lerp(red0, Color.blue, 0.7f)); ColorEq(g.Evaluate(0.5f), Color.Lerp(red0, Color.blue, 0.7f)); Assert.IsTrue(g is DGradient); }
public Color Evaluate(float time) => inner.Evaluate(Mathf.Clamp01(start + eminuss * time));