MeshCreator.TriangulateMesh C# (CSharp) Method

TriangulateMesh() private method

private TriangulateMesh ( ) : Mesh
return Mesh
    private Mesh TriangulateMesh()
    {
        if (verts.Count > 2) {
            var tnMesh = new TriangleNet.Mesh();
            var input = new TriangleNet.Geometry.InputGeometry();

            var localVertices = verts.Select(v => spriteRenderer.transform.InverseTransformPoint(v.position)).ToArray();

            for(int i = 0; i < verts.Count; i++) {
                verts[i].index = i;
                input.AddPoint(verts[i].position.x, verts[i].position.y);
            }

            foreach(var seg in segments) {
                if(!seg.IsDeleted())
                    input.AddSegment(seg.first.index, seg.second.index);
            }

            foreach(var hole in holes) {
                input.AddHole(hole.x, hole.y);
            }

            tnMesh.Triangulate(input);

            try {
                Mesh mesh = new Mesh();
                mesh.vertices = localVertices;
                mesh.triangles = tnMesh.Triangles.ToUnityMeshTriangleIndices();
                mesh.uv = genUV(mesh.vertices);
                mesh.RecalculateBounds();
                mesh.RecalculateNormals();
                return mesh;
            }
            catch {
                Debug.LogError("Mesh topology was wrong. Make sure you dont have intersecting edges.");
                throw;
            }
        } else {
            return null;
        }
    }