소스 검색

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 년 전
부모
커밋
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