gloss_renderer/plugin_manager/gui/
slider.rs

1use 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    //TODO change to f_dragged f_released
17    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}