use crate::{mat2::Mat2, mat3::Mat3, mat4::Mat4, quat::Quat, vec2::Vec2, vec3::Vec3, vec4::Vec4};
use mint::{
ColumnMatrix2, ColumnMatrix3, ColumnMatrix4, IntoMint, Quaternion, Vector2, Vector3, Vector4,
};
impl<Unit: Copy, Space: Copy> From<Vector2<f32>> for Vec2<Unit, Space> {
#[inline]
fn from(v: Vector2<f32>) -> Self {
Self::new(v.x, v.y)
}
}
impl<Unit: Copy, Space: Copy> From<Vec2<Unit, Space>> for Vector2<f32> {
#[inline]
fn from(v: Vec2<Unit, Space>) -> Self {
Self { x: v.x, y: v.y }
}
}
impl<Unit: Copy, Space: Copy> IntoMint for Vec2<Unit, Space> {
type MintType = Vector2<f32>;
}
impl<Unit: Copy, Space: Copy> From<Vector3<f32>> for Vec3<Unit, Space> {
#[inline]
fn from(v: Vector3<f32>) -> Self {
Self::new(v.x, v.y, v.z)
}
}
impl<Unit: Copy, Space: Copy> From<Vec3<Unit, Space>> for Vector3<f32> {
#[inline]
fn from(v: Vec3<Unit, Space>) -> Self {
Self { x: v.x, y: v.y, z: v.z }
}
}
impl<Unit: Copy, Space: Copy> IntoMint for Vec3<Unit, Space> {
type MintType = Vector3<f32>;
}
impl<Unit: Copy, Space: Copy> From<Vector4<f32>> for Vec4<Unit, Space> {
#[inline]
fn from(v: Vector4<f32>) -> Self {
Self::new(v.x, v.y, v.z, v.w)
}
}
impl<Unit: Copy, Space: Copy> From<Vec4<Unit, Space>> for Vector4<f32> {
#[inline]
fn from(v: Vec4<Unit, Space>) -> Self {
Self {
x: v.x,
y: v.y,
z: v.z,
w: v.w,
}
}
}
impl<Unit: Copy, Space: Copy> IntoMint for Vec4<Unit, Space> {
type MintType = Vector4<f32>;
}
impl<Unit: Copy, Space: Copy> From<ColumnMatrix2<f32>> for Mat2<Unit, Space> {
#[inline]
fn from(m: ColumnMatrix2<f32>) -> Self {
Self::new(m.x.into(), m.y.into())
}
}
impl<Unit: Copy, Space: Copy> From<Mat2<Unit, Space>> for ColumnMatrix2<f32> {
#[inline]
fn from(m: Mat2<Unit, Space>) -> Self {
Self {
x: m.x_col.into(),
y: m.y_col.into(),
}
}
}
impl<Unit: Copy, Space: Copy> IntoMint for Mat2<Unit, Space> {
type MintType = ColumnMatrix2<f32>;
}
impl<Unit: Copy, Space: Copy> From<ColumnMatrix3<f32>> for Mat3<Unit, Space> {
#[inline]
fn from(m: ColumnMatrix3<f32>) -> Self {
Self::new(m.x.into(), m.y.into(), m.z.into())
}
}
impl<Unit: Copy, Space: Copy> From<Mat3<Unit, Space>> for ColumnMatrix3<f32> {
#[inline]
fn from(m: Mat3<Unit, Space>) -> Self {
Self {
x: m.x_col.into(),
y: m.y_col.into(),
z: m.z_col.into(),
}
}
}
impl<Unit: Copy, Space: Copy> IntoMint for Mat3<Unit, Space> {
type MintType = ColumnMatrix3<f32>;
}
impl<Unit: Copy, Space: Copy> From<ColumnMatrix4<f32>> for Mat4<Unit, Space> {
#[inline]
fn from(m: ColumnMatrix4<f32>) -> Self {
Self::new(m.x.into(), m.y.into(), m.z.into(), m.w.into())
}
}
impl<Unit: Copy, Space: Copy> From<Mat4<Unit, Space>> for ColumnMatrix4<f32> {
#[inline]
fn from(m: Mat4<Unit, Space>) -> Self {
Self {
x: m.x_col.into(),
y: m.y_col.into(),
z: m.z_col.into(),
w: m.w_col.into(),
}
}
}
impl<Unit: Copy, Space: Copy> IntoMint for Mat4<Unit, Space> {
type MintType = ColumnMatrix4<f32>;
}
impl<Unit: Copy, Space: Copy> From<Quaternion<f32>> for Quat<Unit, Space> {
#[inline]
fn from(q: Quaternion<f32>) -> Self {
Self::new(q.v.x, q.v.y, q.v.z, q.s)
}
}
impl<Unit: Copy, Space: Copy> From<Quat<Unit, Space>> for Quaternion<f32> {
#[inline]
fn from(q: Quat<Unit, Space>) -> Self {
Self {
s: q.w,
v: Vector3 {
x: q.x,
y: q.y,
z: q.z,
},
}
}
}
impl<Unit: Copy, Space: Copy> IntoMint for Quat<Unit, Space> {
type MintType = Quaternion<f32>;
}