use bevy::math::UVec3; use crate::grid::{Grid, GridElement}; pub struct GridManipulationTools<'a> { grid: &'a mut Grid } impl<'a> GridManipulationTools<'a> { pub fn new(grid: &'a mut Grid) -> Self { Self { grid } } pub fn set_xyz(&mut self,x: u32, y: u32, z: u32, element: GridElement) { let Some(index) = self.grid.indexify(UVec3::new(x,y,z)) else { return; }; self.grid.data[index] = element; } pub fn fill_xyz(&mut self,x1: u32, y1: u32, z1: u32, x2: u32, y2: u32, z2: u32, element: GridElement) { if x1 > x2 || y1 > y2 || z1 > z2 { return; } for x in x1..=x2 { for y in y1..=y2 { for z in z1..=z2 { let Some(index) = self.grid.indexify(UVec3::new(x,y,z)) else { continue; }; self.grid.data[index] = element.clone(); } } } } }