gloss_renderer/plugin_manager/gui/
slider.rs1use crate::scene::Scene;
2
3use gloss_hecs::Entity;
4use gloss_utils::abi_stable_aliases::std_types::{ROption, RString};
5#[cfg(not(target_arch = "wasm32"))]
6use gloss_utils::abi_stable_aliases::StableAbi;
7
8#[repr(C)]
9#[cfg_attr(not(target_arch = "wasm32"), derive(StableAbi))]
10pub struct Slider {
11 pub name: RString,
12 pub init_val: f32,
13 pub min: f32,
14 pub max: f32,
15 pub width: ROption<f32>,
16 pub f_change: extern "C" fn(f32, &RString, &Entity, &mut Scene),
18 pub f_no_change: ROption<extern "C" fn(&RString, &Entity, &mut Scene)>,
19}
20
21impl Slider {
22 pub fn new(
23 name: &str,
24 init_val: f32,
25 min: f32,
26 max: f32,
27 width: ROption<f32>,
28 f_change: extern "C" fn(f32, &RString, &Entity, &mut Scene),
29 f_no_change: ROption<extern "C" fn(&RString, &Entity, &mut Scene)>,
30 ) -> Self {
31 Self {
32 name: RString::from(name),
33 init_val,
34 min,
35 max,
36 width,
37 f_change,
38 f_no_change,
39 }
40 }
41}