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); }