use glam::{Vec2, Vec3A};
use crate::BoundingBox;
type Mesh = (Vec<Vec3A>, BoundingBox);
type Mesh2D = (Vec<Vec2>, BoundingBox);
type IndexedMesh = (Vec<u32>, Vec<Vec3A>, BoundingBox);
type IndexedMesh2D = (Vec<u32>, Vec<Vec2>, BoundingBox);
pub(crate) fn mesh_to_flat_2d(mesh_3d: Mesh) -> Mesh2D {
let positions = mesh_3d.0;
let mut positions_2d = Vec::new();
for pos in positions.iter() {
positions_2d.push(Vec2::new(pos.x, pos.y))
}
let bounding_rect = make_flat_bbox(&mesh_3d.1);
(positions_2d, bounding_rect)
}
pub(crate) fn mesh_to_indexed_flat_2d(mesh_3d: IndexedMesh) -> IndexedMesh2D {
let positions = mesh_3d.1;
let mut positions_2d = Vec::new();
for pos in positions.iter() {
positions_2d.push(Vec2::new(pos.x, pos.y))
}
let bounding_rect = make_flat_bbox(&mesh_3d.2);
(mesh_3d.0, positions_2d, bounding_rect)
}
fn make_flat_bbox(bbox: &BoundingBox) -> BoundingBox {
BoundingBox::new(
Vec3A::new(bbox.min.x, bbox.min.y, 0f32),
Vec3A::new(bbox.max.x, bbox.max.y, 0f32),
)
}