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());
        }
Beispiel #2
0
 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;
            }
        }