mod conversion;
mod ops;
use crate::vertex::Vertex;
use bevy::math::Affine3A;
#[derive(Clone)]
pub struct GIMesh {
pub indices: Vec<u32>,
pub vertices: Vec<Vertex>,
pub inverse_model: Affine3A,
}
impl GIMesh {
pub fn tri_count(&self) -> usize {
self.indices.len() / 3
}
pub fn tri(&self, t: usize) -> [(u32, usize); 3] {
let i = t * 3;
[
(self.indices[i], i),
(self.indices[i + 1], i + 1),
(self.indices[i + 2], i + 2),
]
}
}
impl GIMesh {
pub fn add_vertex(&mut self, v: Vertex) -> u32 {
let index = self.vertices.len();
self.vertices.push(v);
index as u32
}
pub fn set_vertex(&mut self, index: u32, v: Vertex) {
self.vertices[index as usize] = v;
}
pub fn vertex(&self, index: u32) -> &Vertex {
&self.vertices[index as usize]
}
pub fn vertex_count(&self) -> usize {
self.vertices.len()
}
pub fn add_index(&mut self, index: u32) {
self.indices.push(index);
}
pub fn set_index(&mut self, i: usize, index: u32) {
self.indices[i] = index;
}
pub fn index(&self, i: usize) -> u32 {
self.indices[i]
}
pub fn index_count(&self) -> usize {
self.indices.len()
}
}