use crate::_bevy::*;
use bevy_color::palettes::css::*;
#[derive(Reflect, GizmoConfigGroup)]
pub struct FdmGizmos {
pub lift_color: Option<Color>,
pub drag_color: Option<Color>,
pub side_force_color: Option<Color>,
pub thrust_color: Option<Color>,
pub total_force_color: Option<Color>,
pub weight_color: Option<Color>,
pub resultant_color: Option<Color>,
pub pitch_moment_color: Option<Color>,
pub roll_moment_color: Option<Color>,
pub yaw_moment_color: Option<Color>,
pub zone_color: Option<Color>,
pub wind_color: Option<Color>,
pub cg_color: Option<Color>,
pub ac_color: Option<Color>,
pub marker_radius: f32,
pub force_scale: f32,
}
impl Default for FdmGizmos {
fn default() -> Self {
Self {
lift_color: Some(LIME.into()),
drag_color: Some(RED.into()),
side_force_color: Some(YELLOW.into()),
thrust_color: Some(AQUA.into()),
total_force_color: Some(YELLOW.into()),
weight_color: Some(RED.into()),
resultant_color: Some(WHITE.into()),
pitch_moment_color: Some(ORANGE.into()),
roll_moment_color: Some(PINK.into()),
yaw_moment_color: Some(VIOLET.into()),
zone_color: Some(ORANGE.into()),
wind_color: Some(LIGHT_CYAN.into()),
cg_color: Some(SILVER.into()),
ac_color: Some(AQUA.into()),
marker_radius: 0.075,
force_scale: 0.001,
}
}
}
impl FdmGizmos {
pub fn all() -> Self {
Self::default()
}
pub fn none() -> Self {
Self {
lift_color: None,
drag_color: None,
side_force_color: None,
thrust_color: None,
total_force_color: None,
weight_color: None,
resultant_color: None,
pitch_moment_color: None,
roll_moment_color: None,
yaw_moment_color: None,
zone_color: None,
wind_color: None,
cg_color: None,
ac_color: None,
marker_radius: 0.075,
force_scale: 0.001,
}
}
pub fn forces() -> Self {
Self {
lift_color: Some(LIME.into()),
drag_color: Some(RED.into()),
side_force_color: Some(YELLOW.into()),
thrust_color: Some(AQUA.into()),
total_force_color: Some(YELLOW.into()),
weight_color: Some(RED.into()),
resultant_color: Some(WHITE.into()),
..Self::none()
}
}
pub fn moments() -> Self {
Self {
pitch_moment_color: Some(ORANGE.into()),
roll_moment_color: Some(PINK.into()),
yaw_moment_color: Some(VIOLET.into()),
..Self::none()
}
}
pub fn zones() -> Self {
Self {
zone_color: Some(ORANGE.into()),
..Self::none()
}
}
}
#[derive(Component, Reflect, Clone, Copy, PartialEq)]
#[reflect(Component, PartialEq)]
#[derive(Default)]
pub struct FdmDebugRender {
pub zone_color: Option<Color>,
}
impl FdmDebugRender {
pub fn with_zone_color(mut self, color: Color) -> Self {
self.zone_color = Some(color);
self
}
pub fn without_zone(mut self) -> Self {
self.zone_color = None;
self
}
}