protected void OnRenderFrame(out double duration, out bool shouldStop) { RenderFrameEventArgs ea = new RenderFrameEventArgs(); RenderFrame?.Invoke(this, ea); duration = ea.Duration; shouldStop = ea.ShouldStop; }
private static void FrameAnimator_RenderLights(object sender, RenderFrameEventArgs ea) { if (sender is FrameAnimator frameAnimator && frameAnimator.Data is Light light) { if (frameAnimator.FrameIndex >= light.SequenceData.Count) { ea.ShouldStop = true; return; } LightSequenceData lightData = light.SequenceData[frameAnimator.FrameIndex]; DmxLight dmxLight = null; if (light.ID == BluetoothLights.Left_ID) { dmxLight = DmxLight.Left; } else if (light.ID == BluetoothLights.Center_ID) { dmxLight = DmxLight.Center; } else if (light.ID == BluetoothLights.Right_ID) { dmxLight = DmxLight.Right; } if (dmxLight == null) { return; } dmxLight.SetColor(lightData); //Task.Run(async () => await bluetoothLight.SetAsync(lightData.Hue, lightData.Saturation, lightData.Lightness)); ea.Duration = lightData.Duration; } }
private void FrameAnimator_RenderFrame(object sender, RenderFrameEventArgs ea) { RenderFrame(out double duration, out bool shouldStop); ea.Duration = duration; ea.ShouldStop = shouldStop; }