use super::*;
#[derive(Clone, Copy, Data, Debug, Default, Eq, Hash, New, Ord, PartialEq, PartialOrd)]
pub struct Numeric;
#[derive(Clone, Copy, Data, Debug, Default, New, PartialEq, PartialOrd)]
pub struct Vector2D {
#[get(type(copy))]
#[get_mut(pub(crate))]
pub x: f64,
#[get(type(copy))]
#[get_mut(pub(crate))]
pub y: f64,
}
#[derive(Clone, Copy, Data, Debug, Default, New, PartialEq, PartialOrd)]
pub struct Rect {
#[get(type(copy))]
#[get_mut(pub(crate))]
pub x: f64,
#[get(type(copy))]
#[get_mut(pub(crate))]
pub y: f64,
#[get(type(copy))]
#[get_mut(pub(crate))]
pub width: f64,
#[get(type(copy))]
#[get_mut(pub(crate))]
pub height: f64,
}
#[derive(Clone, Copy, Data, Debug, Default, New, PartialEq, PartialOrd)]
pub struct Circle {
#[get(type(copy))]
#[get_mut(pub(crate))]
#[set(pub(crate))]
pub center: Vector2D,
#[get(type(copy))]
#[get_mut(pub(crate))]
#[set(pub(crate))]
pub radius: f64,
}
#[derive(Clone, Copy, Data, Debug, New, PartialEq, PartialOrd)]
pub struct Transform2D {
#[get(type(copy))]
#[get_mut(pub(crate))]
pub position: Vector2D,
#[get(pub(crate), type(copy))]
#[get_mut(pub(crate))]
#[set(pub(crate))]
pub(crate) rotation: f64,
#[get(pub(crate), type(copy))]
#[get_mut(pub(crate))]
#[set(pub(crate))]
pub(crate) scale: Vector2D,
}
#[derive(Clone, Copy, Data, Debug, New, PartialEq, PartialOrd)]
pub struct Color {
#[get(type(copy))]
#[get_mut(pub(crate))]
#[set(pub(crate))]
pub red: f64,
#[get(type(copy))]
#[get_mut(pub(crate))]
#[set(pub(crate))]
pub green: f64,
#[get(type(copy))]
#[get_mut(pub(crate))]
#[set(pub(crate))]
pub blue: f64,
#[get(type(copy))]
pub alpha: f64,
}
#[derive(Clone, Copy, Data, Debug, Default, New, PartialEq, PartialOrd)]
pub struct Vector3D {
#[get(type(copy))]
#[get_mut(pub(crate))]
pub x: f64,
#[get(type(copy))]
#[get_mut(pub(crate))]
pub y: f64,
#[get(type(copy))]
#[get_mut(pub(crate))]
pub z: f64,
}
#[derive(Clone, Copy, Data, Debug, New, PartialEq, PartialOrd)]
pub struct Quaternion {
#[get(type(copy))]
#[get_mut(pub(crate))]
pub x: f64,
#[get(type(copy))]
#[get_mut(pub(crate))]
pub y: f64,
#[get(type(copy))]
#[get_mut(pub(crate))]
pub z: f64,
#[get(type(copy))]
#[get_mut(pub(crate))]
#[set(pub(crate))]
pub w: f64,
}
#[derive(Clone, Copy, Data, Debug, New, PartialEq, PartialOrd)]
pub struct Matrix4x4 {
#[get_mut(pub(crate))]
#[get(type(copy))]
#[set(pub(crate))]
pub elements: [f64; 16],
}
#[derive(Clone, Copy, Data, Debug, New, PartialEq, PartialOrd)]
pub struct Transform3D {
#[get(type(copy))]
#[get_mut(pub(crate))]
pub position: Vector3D,
#[get(pub(crate), type(copy))]
#[get_mut(pub(crate))]
#[set(pub(crate))]
pub(crate) rotation: Quaternion,
#[get(pub(crate), type(copy))]
#[get_mut(pub(crate))]
#[set(pub(crate))]
pub(crate) scale: Vector3D,
}
#[derive(Clone, Copy, Data, Debug, Default, New, PartialEq, PartialOrd)]
pub struct AABB3D {
#[get(type(copy))]
#[get_mut(pub(crate))]
#[set(pub(crate))]
pub min: Vector3D,
#[get(type(copy))]
#[get_mut(pub(crate))]
#[set(pub(crate))]
pub max: Vector3D,
}
#[derive(Clone, Copy, Data, Debug, Default, New, PartialEq, PartialOrd)]
pub struct Sphere {
#[get(type(copy))]
#[get_mut(pub(crate))]
#[set(pub(crate))]
pub center: Vector3D,
#[get(type(copy))]
#[get_mut(pub(crate))]
#[set(pub(crate))]
pub radius: f64,
}
#[derive(Clone, Copy, Data, Debug, Default, New, PartialEq, PartialOrd)]
pub struct Plane {
#[get(type(copy), pub(crate))]
#[get_mut(pub(crate))]
#[set(pub(crate))]
pub(crate) normal: Vector3D,
#[get(type(copy), pub(crate))]
#[get_mut(pub(crate))]
#[set(pub(crate))]
pub(crate) distance: f64,
}
#[derive(Clone, Copy, Data, Debug, Default, New, PartialEq, PartialOrd)]
pub struct Ray3D {
#[get(type(copy))]
#[get_mut(pub(crate))]
#[set(pub(crate))]
pub origin: Vector3D,
#[get(type(copy))]
#[get_mut(pub(crate))]
pub direction: Vector3D,
}
#[derive(Clone, Copy, Data, Debug, Default, New, PartialEq, PartialOrd)]
pub struct Ray2D {
#[get(type(copy))]
#[get_mut(pub(crate))]
#[set(pub(crate))]
pub origin: Vector2D,
#[get(type(copy))]
#[get_mut(pub(crate))]
pub direction: Vector2D,
}