Ejemplo n.º 1
0
        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;
        }