/// <summary> /// Merges two subsets. /// </summary> /// <param name="subSet">Subset to merge with.</param> public void Merge(SubSet subSet) { if (!CanMerge(subSet)) { throw new GraphicsException("Subsets can't be merged!"); } // Merge vertex unit VertexUnit unit = new VertexUnit(VertexUnit.Format, VertexUnit.Size + subSet.VertexUnit.Size); VertexUnit.Copy(VertexUnit, 0, unit, 0, VertexUnit.Size); VertexUnit.Copy(subSet.VertexUnit, 0, unit, VertexUnit.Size, subSet.VertexUnit.Size); VertexUnit.Dispose(); VertexUnit = unit; // Merge index streams IndexStream index = IndexStream.Create(IndexStream.Size + subSet.IndexStream.Size, IndexStream.GetType()); VertexStreams.IndexStream.Copy(IndexStream, 0, index, 0, IndexStream.Size, 0); VertexStreams.IndexStream.Copy(subSet.IndexStream, 0, index, IndexStream.Size, subSet.IndexStream.Size, VertexUnit.Size); IndexStream.Dispose(); IndexStream = index; }