keeps track of iterations glaobally, fix endless loop at min border
This commit is contained in:
parent
e3829a73e4
commit
839907c8a7
5 changed files with 70 additions and 56 deletions
src/scene
|
@ -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);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue