private void UpdateDimmer() { if (TargetBrightness < 0) { return; } if (LampToy != null) { if (LampToy.Brightness == TargetBrightness) { return; } TimeSpan SinceStart = (DateTime.Now - TargetSetTime); double Fract = SinceStart.TotalMilliseconds / DimmerDurationMs; if (Fract >= 1) { LampToy.SetBrightness(TargetBrightness); TargetBrightness = -1; } else { LampToy.SetBrightness((StartBrightness + (int)((TargetBrightness - StartBrightness) * Fract)).Limit(0, 255)); } } }
/// <summary> /// Finishes the <see cref="ILampToy"/>. /// </summary> public override void Finish() { if (LampToy != null) { LampToy.Reset(); if (Timer != null) { Timer.UnregisterIntervalAlarm(UpdateDimmer); } } _LampToy = null; Timer = null; }