private void RebuildSegments() { VertexCount = 0; var newSegments = new Dictionary <uint, TriangleSegment>(); foreach (var segment in Segments) { TriangleSegment newSegment = new TriangleSegment { ID = segment.Key, StartIndex = VertexCount }; for (int i = segment.Value.StartIndex; i < segment.Value.EndIndex; i++) { VertexScratch[VertexCount] = Verticies[i]; VertexCount++; } newSegment.EndIndex = VertexCount; newSegments[newSegment.ID] = newSegment; } Datastructures.Swap(ref Segments, ref newSegments); Datastructures.Swap(ref Verticies, ref VertexScratch); Buffer.SetData(Verticies); }