protected void WriteMeshLodGenerated( BinaryWriter writer, SubMesh subMesh, int usageIndex )
{
long start_offset = writer.Seek( 0, SeekOrigin.Current );
WriteChunk( writer, MeshChunkID.MeshLODGenerated, 0 );
IndexData indexData = subMesh.lodFaceList[ usageIndex - 1 ];
bool indexes32bit = ( indexData.indexBuffer.Type == IndexType.Size32 );
WriteInt( writer, indexData.indexCount );
WriteBool( writer, indexes32bit );
// lock the buffer
IntPtr data = indexData.indexBuffer.Lock( BufferLocking.ReadOnly );
if ( indexes32bit )
WriteInts( writer, indexData.indexCount, data );
else
WriteShorts( writer, indexData.indexCount, data );
indexData.indexBuffer.Unlock();
long end_offset = writer.Seek( 0, SeekOrigin.Current );
writer.Seek( (int)start_offset, SeekOrigin.Begin );
WriteChunk( writer, MeshChunkID.MeshLODGenerated, (int)( end_offset - start_offset ) );
writer.Seek( (int)end_offset, SeekOrigin.Begin );
}