protected virtual void ReadGeometry( BinaryReader reader, VertexData data )
{
data.vertexStart = 0;
data.vertexCount = ReadInt( reader );
// find optional geometry chunks
if ( !IsEOF( reader ) )
{
MeshChunkID chunkID = ReadChunk( reader );
while ( !IsEOF( reader ) &&
( chunkID == MeshChunkID.GeometryVertexDeclaration ||
chunkID == MeshChunkID.GeometryVertexBuffer ) )
{
switch ( chunkID )
{
case MeshChunkID.GeometryVertexDeclaration:
ReadGeometryVertexDeclaration( reader, data );
break;
case MeshChunkID.GeometryVertexBuffer:
ReadGeometryVertexBuffer( reader, data );
break;
}
// get the next chunk
if ( !IsEOF( reader ) )
{
chunkID = ReadChunk( reader );
}
}
if ( !IsEOF( reader ) )
{
// backpedal to start of non-submesh chunk
Seek( reader, -ChunkOverheadSize );
}
// TODO : Implement color conversions
// Perform any necessary color conversion for an active rendersystem
//if ( Root.Instance != null && Root.Instance.RenderSystem != null )
//{
// // We don't know the source type if it's VET_COLOUR, but assume ARGB
// // since that's the most common. Won't get used unless the mesh is
// // ambiguous anyway, which will have been warned about in the log
// data.ConvertPackedColor( VertexElementType.Color, VertexElement.BestColorVertexElementType );
//}
}
}