Quickhull - reduce warning spam and make hideable

Added one more warning to the hideable warnings. These seem to be benign warnings and are hidden during use in rooms and portals. When used from other areas, only one warning is displayed per run, instead of for every occurrence.
This commit is contained in:
lawnjelly 2021-08-10 09:14:32 +01:00
parent a9b585dd1a
commit fc60eaccb8

View file

@ -364,6 +364,7 @@ Error QuickHull::build(const Vector<Vector3> &p_points, Geometry::MeshData &r_me
bool warning_f = false; bool warning_f = false;
bool warning_o_equal_e = false; bool warning_o_equal_e = false;
bool warning_o = false; bool warning_o = false;
bool warning_not_f2 = false;
for (List<Geometry::MeshData::Face>::Element *E = ret_faces.front(); E; E = E->next()) { for (List<Geometry::MeshData::Face>::Element *E = ret_faces.front(); E; E = E->next()) {
Geometry::MeshData::Face &f = E->get(); Geometry::MeshData::Face &f = E->get();
@ -413,7 +414,12 @@ Error QuickHull::build(const Vector<Vector3> &p_points, Geometry::MeshData &r_me
Edge e2(idx, idxn); Edge e2(idx, idxn);
Map<Edge, RetFaceConnect>::Element *F2 = ret_edges.find(e2); Map<Edge, RetFaceConnect>::Element *F2 = ret_edges.find(e2);
ERR_CONTINUE(!F2);
if (unlikely(!F2)) {
warning_not_f2 = true;
continue;
}
//change faceconnect, point to this face instead //change faceconnect, point to this face instead
if (F2->get().left == O) { if (F2->get().left == O) {
F2->get().left = E; F2->get().left = E;
@ -453,6 +459,9 @@ Error QuickHull::build(const Vector<Vector3> &p_points, Geometry::MeshData &r_me
if (warning_o) { if (warning_o) {
WARN_PRINT("QuickHull : O == nullptr"); WARN_PRINT("QuickHull : O == nullptr");
} }
if (warning_not_f2) {
WARN_PRINT("QuickHull : !F2");
}
} }
//fill mesh //fill mesh