public static Sequence DOGradientColor(this Material target, Gradient gradient, string property, float duration) { Sequence t = DOTween.Sequence(); GradientColorKey[] colorKeys = gradient.colorKeys; int length = colorKeys.Length; for (int i = 0; i < length; i++) { GradientColorKey key = colorKeys[i]; if ((i == 0) && (key.time <= 0f)) { target.color = key.color; } else { float num3 = (i == (length - 1)) ? (duration - t.Duration(false)) : (duration * ((i == 0) ? key.time : (key.time - colorKeys[i - 1].time))); t.Append(target.DOColor(key.color, property, num3).SetEase <Tweener>(Ease.Linear)); } } return(t); }
/// <summary>Tweens a SpriteRenderer's color using the given gradient /// (NOTE 1: only uses the colors of the gradient, not the alphas - NOTE 2: creates a Sequence, not a Tweener). /// Also stores the image as the tween's target so it can be used for filtered operations</summary> /// <par name="gradient">The gradient to use</par><par name="duration">The duration of the tween</par> public static Sequence DOGradientColor(this SpriteRenderer target, Gradient gradient, float duration) { Sequence s = DOTween.Sequence(); GradientColorKey[] colors = gradient.colorKeys; int len = colors.Length; for (int i = 0; i < len; ++i) { GradientColorKey c = colors[i]; if (i == 0 && c.time <= 0) { target.color = c.color; continue; } float colorDuration = i == len - 1 ? duration - s.Duration(false) // Verifies that total duration is correct : duration * (i == 0 ? c.time : c.time - colors[i - 1].time); s.Append(target.DOColor(c.color, colorDuration).SetEase(Ease.Linear)); } return(s); }
/// <summary> /// Tweens a Material's named color property using the given gradient /// (NOTE 1: only uses the colors of the gradient, not the alphas - NOTE 2: creates a Sequence, not a Tweener). /// Also stores the image as the tween's target so it can be used for filtered operations /// </summary> /// <param name="gradient">The gradient to use</param> /// <param name="property">The name of the material property to tween (like _Tint or _SpecColor)</param> /// <param name="duration">The duration of the tween</param> public static Sequence DOGradientColor(this Material target, Gradient gradient, string property, float duration) { Sequence s = DOTween.Sequence(); var colors = gradient.colorKeys; int len = colors.Length; for (int i = 0; i < len; ++i) { GradientColorKey c = colors[i]; if (i == 0 && c.time <= 0) { target.SetColor(property, c.color); continue; } float colorDuration = i == len - 1 ? duration - s.Duration(false) // Verifies that total duration is correct : duration * (i == 0 ? c.time : c.time - colors[i - 1].time); s.Append(target.DOColor(c.color, property, colorDuration).SetEase(Ease.Linear)); } s.SetTarget(target); return(s); }
public static Sequence DOGradientColor(this Image target, Gradient gradient, float duration) { Sequence sequence = DOTween.Sequence(); GradientColorKey[] colorKeys = gradient.colorKeys; int num = colorKeys.Length; for (int i = 0; i < num; i++) { GradientColorKey gradientColorKey = colorKeys[i]; if (i == 0 && gradientColorKey.time <= 0f) { target.color = gradientColorKey.color; continue; } float duration2 = (i != num - 1) ? (duration * ((i != 0) ? (gradientColorKey.time - colorKeys[i - 1].time) : gradientColorKey.time)) : (duration - sequence.Duration(includeLoops: false)); sequence.Append(target.DOColor(gradientColorKey.color, duration2).SetEase(Ease.Linear)); } return(sequence); }