Skip to content

Commit 4ae0035

Browse files
committed
Mesh.AppendTriangle can return multiple failure codes, InvalidID check is not sufficient.
1 parent 929fb18 commit 4ae0035

File tree

2 files changed

+13
-11
lines changed

2 files changed

+13
-11
lines changed

mesh/MeshEditor.cs

Lines changed: 9 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -72,7 +72,7 @@ public virtual int[] AddTriangleFan_OrderedVertexLoop(int center, int[] vertex_l
7272

7373
Index3i newT = new Index3i(center, b, a);
7474
int new_tid = Mesh.AppendTriangle(newT, group_id);
75-
if (new_tid == DMesh3.InvalidID)
75+
if (new_tid < 0)
7676
goto operation_failed;
7777

7878
new_tris[i] = new_tid;
@@ -109,7 +109,7 @@ public virtual int[] AddTriangleFan_OrderedEdgeLoop(int center, int[] edge_loop,
109109

110110
Index3i newT = new Index3i(center, b, a);
111111
int new_tid = Mesh.AppendTriangle(newT, group_id);
112-
if (new_tid == DMesh3.InvalidID)
112+
if (new_tid < 0)
113113
goto operation_failed;
114114

115115
new_tris[i] = new_tid;
@@ -156,7 +156,7 @@ public virtual int[] StitchLoop(int[] vloop1, int[] vloop2, int group_id = -1)
156156
int tid1 = Mesh.AppendTriangle(t1, group_id);
157157
int tid2 = Mesh.AppendTriangle(t2, group_id);
158158

159-
if (tid1 == DMesh3.InvalidID || tid2 == DMesh3.InvalidID)
159+
if (tid1 < 0 || tid2 < 0)
160160
goto operation_failed;
161161

162162
new_tris[2 * i] = tid1;
@@ -218,7 +218,7 @@ public virtual int[] StitchUnorderedEdges(List<Index2i> EdgePairs, int group_id
218218
int tid1 = Mesh.AppendTriangle(t1, group_id);
219219
int tid2 = Mesh.AppendTriangle(t2, group_id);
220220

221-
if (tid1 == DMesh3.InvalidID || tid2 == DMesh3.InvalidID)
221+
if (tid1 < 0 || tid2 < 0)
222222
goto operation_failed;
223223

224224
new_tris[2 * i] = tid1;
@@ -268,7 +268,7 @@ public virtual int[] StitchSpan(IList<int> vspan1, IList<int> vspan2, int group_
268268
int tid1 = Mesh.AppendTriangle(t1, group_id);
269269
int tid2 = Mesh.AppendTriangle(t2, group_id);
270270

271-
if (tid1 == DMesh3.InvalidID || tid2 == DMesh3.InvalidID)
271+
if (tid1 < 0 || tid2 < 0)
272272
goto operation_failed;
273273

274274
new_tris[2 * i] = tid1;
@@ -539,9 +539,10 @@ static int bowtie_sorter(List<int> l1, List<int> l2) {
539539

540540
/// <summary>
541541
/// Disconnect all bowtie vertices in mesh. Iterates because sometimes
542-
/// disconnecting a bowtie creates new bowties (how??)
542+
/// disconnecting a bowtie creates new bowties (how??).
543+
/// Returns number of remaining bowties after iterations.
543544
/// </summary>
544-
public void DisconnectAllBowties(int nMaxIters = 10)
545+
public int DisconnectAllBowties(int nMaxIters = 10)
545546
{
546547
List<int> bowties = new List<int>(MeshIterators.BowtieVertices(Mesh));
547548
int iter = 0;
@@ -550,6 +551,7 @@ public void DisconnectAllBowties(int nMaxIters = 10)
550551
DisconnectBowtie(vid);
551552
bowties = new List<int>(MeshIterators.BowtieVertices(Mesh));
552553
}
554+
return bowties.Count;
553555
}
554556

555557

mesh_ops/SimpleHoleFiller.cs

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,7 @@ public virtual bool Fill(int group_id = -1)
4141
if ( Loop.Vertices.Length == 3 ) {
4242
Index3i tri = new Index3i(Loop.Vertices[0], Loop.Vertices[2], Loop.Vertices[1]);
4343
int new_tid = Mesh.AppendTriangle(tri, group_id);
44-
if (new_tid == DMesh3.InvalidID)
44+
if (new_tid < 0)
4545
return false;
4646
NewTriangles = new int[1] { new_tid };
4747
NewVertex = DMesh3.InvalidID;
@@ -72,9 +72,9 @@ public virtual bool Fill(int group_id = -1)
7272
if ( NewTriangles == null ) {
7373
Mesh.RemoveVertex(NewVertex, true, false);
7474
NewVertex = DMesh3.InvalidID;
75-
}
76-
77-
return true;
75+
return false;
76+
} else
77+
return true;
7878

7979
}
8080

0 commit comments

Comments
 (0)