gres/src/grid/manipulation.rs

35 lines
986 B
Rust

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();
}
}
}
}
}