public static void Flatten(PositionColoredTextured[][] subPathVerts, out PositionColoredTextured[] verts) { int numVertices = subPathVerts.Where(t => t != null).Sum(t => t.Length); if (numVertices == 0) { verts = null; return; } verts = new PositionColoredTextured[numVertices]; long offset = 0; foreach (PositionColoredTextured[] spv in subPathVerts) { if (spv == null) continue; long length = spv.Length; Array.Copy(spv, 0, verts, offset, length); offset += length; } }