diff options
author | RĂ©mi Verschelde <rverschelde@gmail.com> | 2018-08-20 09:21:00 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2018-08-20 09:21:00 +0200 |
commit | acf67a1a193b1a696d93282acb55b1a675c37478 (patch) | |
tree | a3d1de575b6be66cfa933d1c3de8a936bd3ee851 | |
parent | 15433cffe783066c473266faf89bce37c6e6c37d (diff) | |
parent | 33669a8bcacf108e8fbf1bb64cf94b38381634e6 (diff) |
Merge pull request #21202 from hpvb/fix-16560
Remove faces in in QuickHull::build() that we don't need anymore
-rw-r--r-- | core/math/quick_hull.cpp | 11 |
1 files changed, 9 insertions, 2 deletions
diff --git a/core/math/quick_hull.cpp b/core/math/quick_hull.cpp index cb923d264e..45c106102e 100644 --- a/core/math/quick_hull.cpp +++ b/core/math/quick_hull.cpp @@ -397,7 +397,6 @@ Error QuickHull::build(const Vector<Vector3> &p_points, Geometry::MeshData &r_me Map<Edge, RetFaceConnect>::Element *F = ret_edges.find(e); ERR_CONTINUE(!F); - List<Geometry::MeshData::Face>::Element *O = F->get().left == E ? F->get().right : F->get().left; ERR_CONTINUE(O == E); ERR_CONTINUE(O == NULL); @@ -426,7 +425,6 @@ Error QuickHull::build(const Vector<Vector3> &p_points, Geometry::MeshData &r_me Edge e2(idx, idxn); Map<Edge, RetFaceConnect>::Element *F2 = ret_edges.find(e2); - ERR_CONTINUE(!F2); //change faceconnect, point to this face instead if (F2->get().left == O) @@ -439,6 +437,15 @@ Error QuickHull::build(const Vector<Vector3> &p_points, Geometry::MeshData &r_me } } + // remove all edge connections to this face + for (Map<Edge, RetFaceConnect>::Element *E = ret_edges.front(); E; E = E->next()) { + if (E->get().left == O) + E->get().left = NULL; + + if (E->get().right == O) + E->get().right = NULL; + } + ret_edges.erase(F); //remove the edge ret_faces.erase(O); //remove the face } |