2
0
Эх сурвалжийг харах

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.
lawnjelly 4 жил өмнө
parent
commit
fc60eaccb8
1 өөрчлөгдсөн 10 нэмэгдсэн , 1 устгасан
  1. 10 1
      core/math/quick_hull.cpp

+ 10 - 1
core/math/quick_hull.cpp

@@ -364,6 +364,7 @@ Error QuickHull::build(const Vector<Vector3> &p_points, Geometry::MeshData &r_me
 	bool warning_f = false;
 	bool warning_o_equal_e = false;
 	bool warning_o = false;
+	bool warning_not_f2 = false;
 
 	for (List<Geometry::MeshData::Face>::Element *E = ret_faces.front(); E; E = E->next()) {
 		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);
 
 							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
 							if (F2->get().left == O) {
 								F2->get().left = E;
@@ -453,6 +459,9 @@ Error QuickHull::build(const Vector<Vector3> &p_points, Geometry::MeshData &r_me
 		if (warning_o) {
 			WARN_PRINT("QuickHull : O == nullptr");
 		}
+		if (warning_not_f2) {
+			WARN_PRINT("QuickHull : !F2");
+		}
 	}
 
 	//fill mesh