keeps track of iterations glaobally, fix endless loop at min border

This commit is contained in:
zomseffen 2025-03-13 16:53:24 +01:00
parent e3829a73e4
commit 839907c8a7
5 changed files with 70 additions and 56 deletions

View file

@ -553,16 +553,18 @@ impl EmptyVolume {
let mut bottom_neighbors = vec![];
let mut bottom_elements_num = 0;
let mut all_same = true;
for x in 0..reference.borrow().size_x {
for y in 0..reference.borrow().size_y {
if let Some(c) = neighbors.get_element(reference.borrow().grid_position.x + x, reference.borrow().grid_position.y + y, z_min_pos) {
bottom_elements_num += 1;
bottom_neighbors.push(Some(c.clone()));
all_same = all_same && (bottom_neighbors[0] == Some(c));
}
else {
bottom_neighbors.push(None);
all_same = all_same && (bottom_neighbors[0] == None);
if reference.borrow().grid_position.z != 0 {
for x in 0..reference.borrow().size_x {
for y in 0..reference.borrow().size_y {
if let Some(c) = neighbors.get_element(reference.borrow().grid_position.x + x, reference.borrow().grid_position.y + y, z_min_pos) {
bottom_elements_num += 1;
bottom_neighbors.push(Some(c.clone()));
all_same = all_same && (bottom_neighbors[0] == Some(c));
}
else {
bottom_neighbors.push(None);
all_same = all_same && (bottom_neighbors[0] == None);
}
}
}
}
@ -639,16 +641,18 @@ impl EmptyVolume {
let mut front_neighbors = vec![];
let mut front_elements_num = 0;
let mut all_same = true;
for x in 0..reference.borrow().size_x {
for z in 0..reference.borrow().size_z {
if let Some(c) = neighbors.get_element(reference.borrow().grid_position.x + x, y_min_pos, reference.borrow().grid_position.z + z) {
front_elements_num += 1;
front_neighbors.push(Some(c.clone()));
all_same = all_same && (front_neighbors[0] == Some(c));
}
else {
front_neighbors.push(None);
all_same = all_same && (front_neighbors[0] == None);
if reference.borrow().grid_position.y != 0 {
for x in 0..reference.borrow().size_x {
for z in 0..reference.borrow().size_z {
if let Some(c) = neighbors.get_element(reference.borrow().grid_position.x + x, y_min_pos, reference.borrow().grid_position.z + z) {
front_elements_num += 1;
front_neighbors.push(Some(c.clone()));
all_same = all_same && (front_neighbors[0] == Some(c));
}
else {
front_neighbors.push(None);
all_same = all_same && (front_neighbors[0] == None);
}
}
}
}
@ -668,16 +672,18 @@ impl EmptyVolume {
let mut left_neighbors = vec![];
let mut left_elements_num = 0;
let mut all_same = true;
for y in 0..reference.borrow().size_y {
for z in 0..reference.borrow().size_z {
if let Some(c) = neighbors.get_element(x_min_pos, reference.borrow().grid_position.y + y, reference.borrow().grid_position.z + z) {
left_elements_num += 1;
left_neighbors.push(Some(c.clone()));
all_same = all_same && (left_neighbors[0] == Some(c));
}
else {
left_neighbors.push(None);
all_same = all_same && (left_neighbors[0] == None);
if reference.borrow().grid_position.x != 0 {
for y in 0..reference.borrow().size_y {
for z in 0..reference.borrow().size_z {
if let Some(c) = neighbors.get_element(x_min_pos, reference.borrow().grid_position.y + y, reference.borrow().grid_position.z + z) {
left_elements_num += 1;
left_neighbors.push(Some(c.clone()));
all_same = all_same && (left_neighbors[0] == Some(c));
}
else {
left_neighbors.push(None);
all_same = all_same && (left_neighbors[0] == None);
}
}
}
}