From 35da7d4874cf204a50a07ccda298d5414fd118c2 Mon Sep 17 00:00:00 2001 From: 4yn Date: Wed, 23 Feb 2022 00:33:56 +0800 Subject: [PATCH] rainbow reactive --- src-slider_io/src/lighting/config.rs | 5 +++++ src-slider_io/src/lighting/lighting.rs | 29 ++++++++++++++++++++++++++ src/App.svelte | 1 + 3 files changed, 35 insertions(+) diff --git a/src-slider_io/src/lighting/config.rs b/src-slider_io/src/lighting/config.rs index ffeb005..c77fc3e 100644 --- a/src-slider_io/src/lighting/config.rs +++ b/src-slider_io/src/lighting/config.rs @@ -4,6 +4,7 @@ use serde_json::Value; pub enum ReactiveLayout { Even { splits: usize }, Voltex, + Rainbow, } #[derive(Debug, Clone)] @@ -39,6 +40,10 @@ impl LightsMode { layout: ReactiveLayout::Even { splits: 16 }, sensitivity: u8::try_from(v["ledSensitivity"].as_i64()?).ok()?, }, + "reactive-rainbow" => LightsMode::Reactive { + layout: ReactiveLayout::Rainbow, + sensitivity: u8::try_from(v["ledSensitivity"].as_i64()?).ok()?, + }, "reactive-voltex" => LightsMode::Reactive { layout: ReactiveLayout::Voltex, sensitivity: u8::try_from(v["ledSensitivity"].as_i64()?).ok()?, diff --git a/src-slider_io/src/lighting/lighting.rs b/src-slider_io/src/lighting/lighting.rs index 0cb1de3..27023e0 100644 --- a/src-slider_io/src/lighting/lighting.rs +++ b/src-slider_io/src/lighting/lighting.rs @@ -114,6 +114,35 @@ impl LightsJob { } } } + ReactiveLayout::Rainbow => { + let banks: Vec = flat_input + .chunks(2) + .take(16) + .map(|x| x.contains(&true)) + .collect(); + let theta = self + .started + .elapsed() + .div_duration_f64(Duration::from_secs(4)) + % 1.0; + for idx in 0..31 { + let slice_theta = (&theta + (idx as f64) / 32.0) % 1.0; + let color = Srgb::from_color(Hsv::new( + slice_theta * 360.0, + match idx % 2 { + 0 => match banks[idx / 2] { + true => 0.2, + false => 1.0, + }, + 1 => 1.0, + _ => unreachable!(), + }, + 1.0, + )) + .into_format::(); + lights.paint(idx, &[color.red, color.green, color.blue]); + } + } } } LightsMode::Attract => { diff --git a/src/App.svelte b/src/App.svelte index 7cc1ced..1b41161 100644 --- a/src/App.svelte +++ b/src/App.svelte @@ -328,6 +328,7 @@ +