async void SetLightColor(string iD, LightSequenceData lightSequenceData) { if (settingColorInternally || dragStarted) { return; } if (iD == BluetoothLights.Left_ID) { DmxLight.Left.SetColor(lightSequenceData.Hue, lightSequenceData.Saturation, lightSequenceData.Lightness); SetColorPicker(lightSequenceData, leftLight); } else if (iD == BluetoothLights.Right_ID) { DmxLight.Right.SetColor(lightSequenceData.Hue, lightSequenceData.Saturation, lightSequenceData.Lightness); SetColorPicker(lightSequenceData, rightLight); } else if (iD == BluetoothLights.Center_ID) { DmxLight.Center.SetColor(lightSequenceData.Hue, lightSequenceData.Saturation, lightSequenceData.Lightness); SetColorPicker(lightSequenceData, centerLight); } else { System.Diagnostics.Debugger.Break(); // What Light is this? } }
private void SetColorPicker(LightSequenceData lightSequenceData, FrmColorPicker colorPicker) { settingColorInternally = true; try { colorPicker.Hue = (int)lightSequenceData.Hue; colorPicker.Saturation = (int)lightSequenceData.Saturation; colorPicker.Lightness = (int)lightSequenceData.Lightness; } finally { settingColorInternally = false; } }
public IEnumerable <LightSequenceData> Decompress() { const double singleFrameDuration = 1d / 30d; const double halfFrameDuration = singleFrameDuration / 2d; List <LightSequenceData> result = new List <LightSequenceData>(); double totalDuration = Duration; while (totalDuration >= halfFrameDuration) { LightSequenceData lightSequenceData = new LightSequenceData() { Hue = Hue, Saturation = Saturation, Lightness = Lightness, Duration = singleFrameDuration }; result.Add(lightSequenceData); totalDuration -= singleFrameDuration; } return(result); }
public Light Compress() { Light result = new Light() { ID = ID }; LightSequenceData lastSequenceData = null; foreach (LightSequenceData lightSequenceData in SequenceData) { if (lastSequenceData == null || !lastSequenceData.SameColor(lightSequenceData)) { LightSequenceData clonedSequence = lightSequenceData.Clone(); result.SequenceData.Add(clonedSequence); lastSequenceData = clonedSequence; } else { lastSequenceData.Duration += lightSequenceData.Duration; } } return(result); }
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; } }
public void SetColor(LightSequenceData lightData) { SetColor(lightData.Hue, lightData.Saturation, lightData.Lightness); }
public bool SameColor(LightSequenceData lightSequenceData) { return(Hue == lightSequenceData.Hue && Saturation == lightSequenceData.Saturation && Lightness == lightSequenceData.Lightness); }