internal static W3dShaderMaterial Parse(BinaryReader reader, W3dParseContext context) { return(ParseChunk(reader, context, header => { var result = new W3dShaderMaterial(); ParseChunks(reader, context.CurrentEndPosition, chunkType => { switch (chunkType) { case W3dChunkType.W3D_CHUNK_SHADER_MATERIAL_HEADER: result.Header = W3dShaderMaterialHeader.Parse(reader, context); break; case W3dChunkType.W3D_CHUNK_SHADER_MATERIAL_PROPERTY: result.Properties.Add(W3dShaderMaterialProperty.Parse(reader, context)); break; default: throw CreateUnknownChunkException(chunkType); } }); return result; })); }
internal static W3dShaderMaterialHeader Parse(BinaryReader reader, W3dParseContext context) { return(ParseChunk(reader, context, header => { var result = new W3dShaderMaterialHeader { Number = reader.ReadByte(), TypeName = reader.ReadFixedLengthString(W3dConstants.NameLength * 2) }; reader.ReadUInt32(); // Reserved return result; })); }