Beispiel #1
0
    private IEnumerator GradientRoutine(MapEvent gradientEvent, LightsManager group)
    {
        MapEvent.ChromaGradient gradient   = gradientEvent._lightGradient;
        Func <float, float>     easingFunc = Easing.byName[gradient.EasingType];
        float progress = 0;

        while ((progress = (atsc.CurrentBeat - gradientEvent._time) / gradient.Duration) < 1)
        {
            Color lerped = Color.LerpUnclamped(gradient.StartColor, gradient.EndColor, easingFunc(progress));
            if (!SoloAnEventType || gradientEvent._type == SoloEventType)
            {
                ChromaCustomColors[group] = lerped;
                group.ChangeColor(lerped.WithAlpha(1), 0, group.ControllingLights);
                group.ChangeMultiplierAlpha(lerped.a, group.ControllingLights);
            }
            yield return(new WaitForEndOfFrame());
        }
        ChromaCustomColors[group] = gradient.EndColor;
        group.ChangeColor(ChromaCustomColors[group].WithAlpha(1), 0, group.ControllingLights);
        group.ChangeMultiplierAlpha(ChromaCustomColors[group].a, group.ControllingLights);
    }