use bevy::math::{Vec3, IVec3, Vec2, IVec2};
use crate::usage_types::coordinates::Coordinate;
impl From<Coordinate> for Vec3 {
fn from(value: Coordinate) -> Self {
let mut vec = [0.0; 3];
for (i, float) in vec.iter_mut().enumerate() {
*float = value.index(i) as f32;
}
Vec3::from(vec)
}
}
impl From<Coordinate> for IVec3 {
fn from(value: Coordinate) -> Self {
let mut vec = [0; 3];
for (i, float) in vec.iter_mut().enumerate() {
*float = value.index(i) as i32;
}
IVec3::from(vec)
}
}
impl From<Coordinate> for Vec2 {
fn from(value: Coordinate) -> Self {
let mut vec = [0.0; 2];
for (i, float) in vec.iter_mut().enumerate() {
*float = value.index(i) as f32;
}
Vec2::from(vec)
}
}
impl From<Coordinate> for IVec2 {
fn from(value: Coordinate) -> Self {
let mut vec = [0; 2];
for (i, float) in vec.iter_mut().enumerate() {
*float = value.index(i) as i32;
}
IVec2::from(vec)
}
}
impl From<IVec2> for Coordinate {
fn from(value: IVec2) -> Self {
Self::new(vec![value.x as isize, value.y as isize])
}
}
impl From<IVec3> for Coordinate {
fn from(value: IVec3) -> Self {
Self::new(vec![value.x as isize, value.y as isize, value.z as isize])
}
}