public int CopyMarkedSegments(Level src)
        {
            int count = 0;

            editor.SetEditModeSilent(EditMode.SEGMENT);

            // Tag all vertices in the source level
            src.TagMarkedElementVertices();

            // Copy all the tagged vertices (keep the same index for now)
            for (int i = 0; i < MAX_VERTICES; i++)
            {
                vertex[i].alive = false;

                if (src.vertex[i].m_tag)
                {
                    vertex[i].Copy(src.vertex[i], false);
                }
            }

            // Copy all the marked segments (and their sides)
            for (int i = 0; i < MAX_SEGMENTS; i++)
            {
                segment[i].Alive = false;

                if (src.segment[i].marked)
                {
                    count += 1;
                    segment[i].Copy(src.segment[i], false);
                }
            }

            // Clean up any neighbors that aren't alive
            for (int i = 0; i < MAX_SEGMENTS; i++)
            {
                if (segment[i].Alive)
                {
                    segment[i].RemoveDeadNeighbors();
                }
            }

            //Copy entities
            for (int i = 0; i < MAX_ENTITIES; i++)
            {
                entity[i].alive = false;

                if (src.entity[i].alive && src.entity[i].m_segnum > -1 && src.segment[src.entity[i].m_segnum].marked)
                {
                    entity[i].Copy(src.entity[i], false, CopyGuidControl.CloneGuid);
                }
            }

            return(count);
        }