瀏覽代碼

Check if point's index exists before adding it to the list of points
that need to split faces when avoiding creating degenerate faces
while merging CSG faces.

Marcel Admiraal 5 年之前
父節點
當前提交
f5b99b578e
共有 1 個文件被更改,包括 6 次插入2 次删除
  1. 6 2
      modules/csg/csg.cpp

+ 6 - 2
modules/csg/csg.cpp

@@ -904,8 +904,12 @@ void CSGBrushOperation::Build2DFaces::_merge_faces(const Vector<int> &p_segment_
 				vertices[p_segment_indices[closest_idx]].point
 				vertices[p_segment_indices[closest_idx]].point
 			};
 			};
 			if (are_segements_parallel(edge1, edge2, vertex_snap2)) {
 			if (are_segements_parallel(edge1, edge2, vertex_snap2)) {
-				degenerate_points.push_back(outer_edge_idx[0]);
-				degenerate_points.push_back(outer_edge_idx[1]);
+				if (!degenerate_points.find(outer_edge_idx[0])) {
+					degenerate_points.push_back(outer_edge_idx[0]);
+				}
+				if (!degenerate_points.find(outer_edge_idx[1])) {
+					degenerate_points.push_back(outer_edge_idx[1]);
+				}
 				continue;
 				continue;
 			}
 			}