Skip to content

Commit

Permalink
perf again
Browse files Browse the repository at this point in the history
  • Loading branch information
mockersf committed Aug 24, 2023
1 parent 4bbbfd3 commit 057d441
Showing 1 changed file with 10 additions and 9 deletions.
19 changes: 10 additions & 9 deletions src/merger.rs
Original file line number Diff line number Diff line change
@@ -1,5 +1,4 @@
use geo::IsConvex;
use hashbrown::HashMap;
#[cfg(feature = "tracing")]
use tracing::instrument;

Expand Down Expand Up @@ -53,7 +52,7 @@ impl Mesh {
continue;
}

let other_vertices = self.polygons[other_side as usize].vertices.clone();
let other_vertices = &self.polygons[other_side as usize].vertices;
let mut joined_vertices_index =
Vec::with_capacity(poly.vertices.len() + other_vertices.len() - 2);
let mut joined_vertices =
Expand Down Expand Up @@ -100,34 +99,36 @@ impl Mesh {
}
}

let mut new_indexes: HashMap<i32, i32> = HashMap::new();
let mut new_indexes = vec![-1; self.polygons.len()];
let mut kept = 0;
for i in 0..union_polygons.parent.len() {
union_polygons.find(i as i32);
}
for (i, p) in union_polygons.parent.iter().enumerate() {
if !new_indexes.contains_key(p) {
new_indexes.insert(*p, kept);
if new_indexes[*p as usize] == -1 {
new_indexes[*p as usize] = kept;
kept += 1;
}

if i as i32 == *p {
let j = *new_indexes.get(p).unwrap() as usize;
let j = new_indexes[*p as usize] as usize;
if i != j {
self.polygons.swap(i, j);
}
} else {
new_indexes.insert(i as i32, *new_indexes.get(p).unwrap());
new_indexes[i] = new_indexes[*p as usize];
}
}
self.polygons.resize_with(kept as usize, || unreachable!());

for vertex in self.vertices.iter_mut() {
for p in vertex.polygons.iter_mut() {
*p = *new_indexes.get(&(*p as i32)).unwrap_or(&-1) as isize;
if *p != -1 {
*p = new_indexes[*p as usize];
}
}
}
new_indexes.len() as i32 != kept
new_indexes.len() != kept as usize
}
}

Expand Down

0 comments on commit 057d441

Please sign in to comment.