internal static W3dVertexMaterial Parse(BinaryReader reader, W3dParseContext context) { return(ParseChunk(reader, context, header => { var result = new W3dVertexMaterial(); ParseChunks(reader, context.CurrentEndPosition, chunkType => { switch (chunkType) { case W3dChunkType.W3D_CHUNK_VERTEX_MATERIAL_NAME: result.Name = W3dVertexMaterialName.Parse(reader, context); break; case W3dChunkType.W3D_CHUNK_VERTEX_MAPPER_ARGS0: result.MapperArgs0 = W3dVertexMapperArgs.Parse(reader, context, chunkType); break; case W3dChunkType.W3D_CHUNK_VERTEX_MAPPER_ARGS1: result.MapperArgs1 = W3dVertexMapperArgs.Parse(reader, context, chunkType); break; case W3dChunkType.W3D_CHUNK_VERTEX_MATERIAL_INFO: result.Info = W3dVertexMaterialInfo.Parse(reader, context); break; default: throw CreateUnknownChunkException(chunkType); } }); return result; })); }
public static W3dMaterial Parse(BinaryReader reader, uint chunkSize) { return(ParseChunk <W3dMaterial>(reader, chunkSize, (result, header) => { switch (header.ChunkType) { case W3dChunkType.W3D_CHUNK_VERTEX_MATERIAL_NAME: result.Name = reader.ReadFixedLengthString((int)header.ChunkSize); break; case W3dChunkType.W3D_CHUNK_VERTEX_MAPPER_ARGS0: result.MapperArgs0 = W3dVertexMapperArgs.Parse(reader.ReadFixedLengthString((int)header.ChunkSize)); break; case W3dChunkType.W3D_CHUNK_VERTEX_MAPPER_ARGS1: result.MapperArgs1 = W3dVertexMapperArgs.Parse(reader.ReadFixedLengthString((int)header.ChunkSize)); break; case W3dChunkType.W3D_CHUNK_VERTEX_MATERIAL_INFO: result.VertexMaterialInfo = W3dVertexMaterial.Parse(reader); break; default: throw CreateUnknownChunkException(header); } })); }