Example #1
0
        public override void Update(float deltaTime)
        {
            CorsairLedId[] activeLeds = _observedDevice.GetActiveInputs();

            foreach (KeyValuePair <BrushRenderTarget, CorsairColor> renderTarget in Brush.RenderedTargets)
            {
                CorsairLedId ledId = renderTarget.Key.LedId;

                if (activeLeds.Contains(ledId))
                {
                    _alphaValues[ledId] = renderTarget.Value.GetFloatA();
                }
                else
                {
                    float alpha;
                    if (_alphaValues.TryGetValue(ledId, out alpha))
                    {
                        if (DecayTime <= 0)
                        {
                            alpha = 0;
                        }
                        else
                        {
                            alpha -= ((1f / DecayTime) * deltaTime);
                        }

                        if (alpha <= 0)
                        {
                            _alphaValues.Remove(ledId);
                        }
                        else
                        {
                            _alphaValues[ledId] = alpha;
                        }
                    }
                    else
                    {
                        alpha = 0;
                    }

                    renderTarget.Value.A = ColorHelper.GetIntColorFromFloat(alpha);
                }
            }
        }