35 lines
986 B
Rust
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();
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|