public async Task FadeRainbow1536(uint fadeTime = 20000, float brightness = 1) { isFaidingRainbow = true; brightness = MathUtils.Clamp(brightness, 0f, 1f); //get current hue uint currentHue; float currentBrightness; RGBColors.ConvertRGBToHue1536(r, g, b, out currentHue, out currentBrightness); uint delay = fadeTime / 1536; uint stepFadeTime = delay; for (uint i = 0; i < 1536; i++) { if (!isFaidingRainbow) { return; } uint hue = currentHue + i; if (hue >= 1536) { hue -= 1536; } FadeHue1536(hue, brightness, stepFadeTime); await Task.Delay(TimeSpan.FromMilliseconds(delay)); } }
//return fade duration (ms) public uint FadeToClosestHue768(uint maxFadeTime = 2000, float brightness = 1) { uint currentHue; float currentBrightness; RGBColors.ConvertRGBToHue768(r, g, b, out currentHue, out currentBrightness); uint transientTime = 0; if (currentBrightness != brightness) { float brightDiff = Math.Abs(currentBrightness - brightness); transientTime = (uint)(brightDiff * maxFadeTime); } uint minColor = Math.Min(r, Math.Min(g, b)); if (minColor != 0) { uint transientTime2 = (uint)((float)minColor / 255 * maxFadeTime); if (transientTime2 > transientTime) { transientTime = transientTime2; } } if (transientTime != 0) { FadeHue768(currentHue, brightness, transientTime); } return(transientTime); }
/// <summary> /// Fade to hue /// </summary> /// <param name="hue">0-1536, 0-red,512-blue, 1024-green, 1535-almost red</param> /// <param name="brightness">0-1</param> public void SetColorHue1536(uint hue, float brightness = 1) { uint r = 0, g = 0, b = 0; RGBColors.ConvertHue1536ToRGB(out r, out g, out b, hue, brightness); SetColor(r, g, b); }
/// <summary> /// Fade to hue /// </summary> /// <param name="hue">0-1536, 0-red,512-blue, 1024-green, 1535-almost red</param> /// <param name="brightness">0-1</param> /// <param name="fadeTime">0-... ms</param> public void FadeHue1536(uint hue, float brightness = 1, uint fadeTime = 1000) { uint r = 0, g = 0, b = 0; RGBColors.ConvertHue1536ToRGB(out r, out g, out b, hue, brightness); Fade(r, g, b, fadeTime); }
public void FadeRandomRGB(uint fadeTime = 500) { uint r, g, b; RGBColors.GetRandomRGB(out r, out g, out b); Fade(r, g, b, fadeTime); }
public void FadeRandomHue1536(uint fadeTime = 500) { uint hue = RGBColors.GetRandomHue1536(); FadeHue1536(hue, 1, 500); }