public static EdgeBridge CreateExtrustion(ref int baseID, EdgeLoop loopA, EdgeLoop loopB)
        {
            EdgeBridge bridge = new EdgeBridge()
            {
                LoopA          = loopA,
                LoopB          = loopB,
                TriangleBaseID = baseID
            };

            baseID += bridge.GetTriangleIndexCount();

            return(bridge);
        }
        void GenerateMesh()
        {
            int baseID = 0;

            backLoop = ModelUtils.CreateEdgeLoop(ref baseID, closeLoop,
                                                 edgeLoopVertCount);

            frontLoop = ModelUtils.CreateEdgeLoop(ref baseID, closeLoop,
                                                  edgeLoopVertCount);

            vertices = new Vector3[backLoop.VertCount + frontLoop.VertCount];

            SetVertices();

            int triangleBaseID = 0;

            backFrontBridge = ModelUtils.CreateExtrustion(ref triangleBaseID,
                                                          frontLoop, backLoop);

            triangles = new int[backFrontBridge.GetTriangleIndexCount()];
            backFrontBridge.TriangulateBridge(ref triangles, false);
        }