コード例 #1
0
        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));
            }
        }
コード例 #2
0
        //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);
        }
コード例 #3
0
        /// <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);
        }
コード例 #4
0
        /// <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);
        }
コード例 #5
0
        public void FadeRandomRGB(uint fadeTime = 500)
        {
            uint r, g, b;

            RGBColors.GetRandomRGB(out r, out g, out b);

            Fade(r, g, b, fadeTime);
        }
コード例 #6
0
        public void FadeRandomHue1536(uint fadeTime = 500)
        {
            uint hue = RGBColors.GetRandomHue1536();

            FadeHue1536(hue, 1, 500);
        }