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