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); } } }