public static PmxMaterial Parse(BinaryReader br, PmxDocument doc) { var rt = new PmxMaterial { Name = doc.Header.Encoding.GetString(br.ReadSizedBuffer()), EnglishName = doc.Header.Encoding.GetString(br.ReadSizedBuffer()), Diffuse = new[] { br.ReadSingle(), br.ReadSingle(), br.ReadSingle(), br.ReadSingle() }, Specular = new[] { br.ReadSingle(), br.ReadSingle(), br.ReadSingle() }, Power = br.ReadSingle(), Ambient = new[] { br.ReadSingle(), br.ReadSingle(), br.ReadSingle() }, Options = (PmxMaterialOptions)br.ReadByte(), EdgeColor = new[] { br.ReadSingle(), br.ReadSingle(), br.ReadSingle(), br.ReadSingle() }, EdgeSize = br.ReadSingle(), MainTexture = doc.ReadTexture(br), SubTexture = doc.ReadTexture(br), SubTextureMode = (PmxTextureMode)br.ReadByte(), UseSharedToonTexture = br.ReadBoolean(), }; if (rt.UseSharedToonTexture) rt.SharedToonTexture = br.ReadByte(); else rt.CustomToonTexture = doc.ReadTexture(br); rt.Comment = doc.Header.Encoding.GetString(br.ReadSizedBuffer()); rt.IndexCount = br.ReadInt32(); return rt; }