pub struct Property {
pub label: &'static str,
pub value: PropertyValue,
}
pub enum PropertyValue {
Float {
get: fn(EntityRef) -> Option<f32>,
set: fn(&mut EntityWorldMut, f32),
},
Range {
get: fn(EntityRef) -> Option<f32>,
set: fn(&mut EntityWorldMut, f32),
bounds: fn(EntityRef) -> Option<(f32, f32)>,
precision: i32,
},
Bool {
get: fn(EntityRef) -> Option<bool>,
set: fn(&mut EntityWorldMut, bool),
},
Color {
get: fn(EntityRef) -> Option<bevy::prelude::Color>,
set: fn(&mut EntityWorldMut, bevy::prelude::Color),
},
Choice {
current: fn(&World, Entity) -> Option<String>,
options: fn(&World, Entity) -> Vec<String>,
set: fn(&mut World, Entity, usize),
},
Info {
get: fn(&World, Entity) -> Option<String>,
},
Text {
get: fn(&World, Entity) -> Option<String>,
set: fn(&mut World, Entity, String),
},
Action {
run: fn(&mut World, Entity),
},
}