use serde::{Deserialize, Serialize};
use ts_rs::TS;
use super::base_types::Linear3D;
#[derive(Clone, Debug, PartialEq, Deserialize, Serialize, TS)]
#[serde(tag = "primitive", content = "parameters", rename_all = "snake_case")]
pub enum SdfPrimitive {
Sphere { r: f32 },
Box { b: Linear3D },
RoundedBox { b: Linear3D, r: f32 },
Capsule { a: Linear3D, b: Linear3D, r: f32 },
CapsuleVertical { h: f32, r: f32 },
CappedCylinder { a: Linear3D, b: Linear3D, r: f32 },
CappedCylinderVertical { h: f32, r: f32 },
Plane {
#[serde(default)]
n: Option<Linear3D>,
h: f32,
},
Ellipsoid { a: Linear3D },
}
#[derive(Copy, Clone, Debug, PartialEq, Default, Deserialize, Serialize, TS)]
#[serde(rename_all = "snake_case")]
pub enum EasingType {
#[default]
Linear,
QuadraticIn,
QuadraticOut,
QuadraticInOut,
CubicIn,
CubicOut,
CubicInOut,
QuinticIn,
QuinticOut,
QuinticInOut,
SineOut,
}
#[derive(Copy, Clone, Debug, PartialEq, Default, Deserialize, Serialize, TS)]
#[serde(rename_all = "snake_case")]
pub enum SymmetryMode {
#[default]
Single,
Mirror,
Align,
}
#[derive(Copy, Clone, Debug, PartialEq, Default, Deserialize, Serialize, TS)]
#[serde(rename_all = "snake_case")]
pub enum CenterMode {
#[default]
AutoFollow,
Fixed,
TrackCursor,
}