bevy_basic_ui/widgets/slider/
systems.rs1use bevy::prelude::*;
2use bevy_mod_picking::events::{Drag, Pointer};
3
4use crate::settings::resources::SettingsVals;
5
6use super::components::{Knob, Rack};
7
8pub fn update_value(
9 mut ui_q: Query<(&Knob, &mut Style)>,
10 mut rack_q: Query<&Rack>,
11 mut ev: EventReader<Pointer<Drag>>,
12 mut settings: ResMut<SettingsVals>,
13) {
14 for e in ev.read() {
15 if let Ok((knob, mut style)) = ui_q.get_mut(e.target) {
16 style.left =
17 Val::Px((e.pointer_location.position.x + e.event.delta.x).clamp(0.0, 500.0));
18 for setting in settings.0.iter_mut(){
19 for _r in rack_q.iter_mut().filter(|p|{p.index_tag == knob.index_tag}){
20 setting.value = knob.value;
21 }
22 }
23 }
24 }
25}