void BuildMesh(Line[] lines)
    {
        int ringVertexCount = this.currentRingPoints.Length;
        List <SegmentVertexGroup> vertexGroups = new List <SegmentVertexGroup>();
        List <SegmentQuadGroup>   quadGroups   = new List <SegmentQuadGroup>();

        foreach (Line l in lines)
        {
            Vector3 origin = l.start;
            Vector3 right  = l.right;
            Vector3 up     = l.up;

            List <Vector3> vertices = new List <Vector3>();
            // Calculate All Vertices
            foreach (Vector3 v in this.currentRingPoints)
            {
                vertices.Add(origin + right * v.x * this.scale + up * v.y * this.scale);
            }

            vertexGroups.Add(new SegmentVertexGroup(vertices.ToArray()));
        }

        if (this.lines.circle)
        {
            vertexGroups[0] = new SegmentVertexGroup(vertexGroups[vertexGroups.Count - 1]);
        }

        SegmentVertexGroup[] vertexGroupArray = vertexGroups.ToArray();

        for (int i = 1; i <= lines.Length - 1; i++)
        {
            SegmentVertexGroup s1    = vertexGroupArray[i - 1];
            SegmentVertexGroup s2    = vertexGroupArray[i];
            List <Quad>        quads = new List <Quad>();

            for (int v = 1; v <= ringVertexCount - 1; v++)
            {
                Quad q = new Quad(s1.segmentVertices[v - 1], s2.segmentVertices[v - 1], s1.segmentVertices[v], s2.segmentVertices[v]);
                quads.Add(q);
            }

            if (this.seamGeometry)
            {
                Quad qSeam = new Quad(s1.segmentVertices[ringVertexCount - 1], s2.segmentVertices[ringVertexCount - 1], s1.segmentVertices[0], s2.segmentVertices[0]);
                quads.Add(qSeam);
            }

            quadGroups.Add(new SegmentQuadGroup(quads.ToArray()));
        }

        quadGroups.ToArray();

        foreach (SegmentQuadGroup sQuad in quadGroups)
        {
            foreach (Quad quad in sQuad.segmentQuads)
            {
                base.AddQuad(quad);
            }
        }
    }
 public SegmentVertexGroup(SegmentVertexGroup segmentVertices)
 {
     this.segmentVertices = segmentVertices.segmentVertices;
 }