private Mesh <TVertex> toMesh <TVertex>(Mesh <TVertex> .Builder builder, IVertexAdder vertexAdder) where TVertex : struct { foreach (var face in this.faces) { addFaceToMeshBuilder(face, vertexAdder, builder); } return(builder.Build()); }
public override void MouseClick(object obj, MouseEventArgs e) { for (int i = _shapes.Count - 1; i >= 0; --i) { if (_shapes[i] is Polygon) { IVertexAdder polygonAdder = (_shapes[i] as Polygon).GetVertexAdder(); if (polygonAdder.AddVertexClickedBy(e.Location)) { this.UpdateCanvas(); break; } } } }
private static void addFaceToMeshBuilder <TVertex>(Face face, IVertexAdder mergedVertices, Mesh <TVertex> .Builder builder) where TVertex : struct { var vId0 = mergedVertices[face.Ids[0]]; var vId1 = mergedVertices[face.Ids[1]]; for (int i = 2; i < face.Ids.Length; i++) { var vId2 = mergedVertices[face.Ids[i]]; builder.AddTriangle( new IndexTriangle(vId0, vId1, vId2) ); vId1 = vId2; } }