Ejemplo n.º 1
0
        public Material_v58(IMaterial OtherMaterial) : base(OtherMaterial)
        {
            // TODO: I wonder if we could make v57 and v58 use the same interface?
            if (OtherMaterial.GetMTLVersion() == VersionsEnumerator.V_57)
            {
                Material_v57 CastedMaterial = (OtherMaterial as Material_v57);
                Unk0 = CastedMaterial.Unk0;
                Unk1 = CastedMaterial.Unk1;
                Unk3 = CastedMaterial.Unk3;
                Unk4 = CastedMaterial.Unk4;
                Unk5 = CastedMaterial.Unk5;

                Samplers = new List <MaterialSampler_v58>();
                foreach (var Sampler in CastedMaterial.Samplers)
                {
                    MaterialSampler_v58 NewSampler = new MaterialSampler_v58(Sampler);
                    Samplers.Add(NewSampler);
                }
            }
            else if (OtherMaterial.GetMTLVersion() == VersionsEnumerator.V_58)
            {
                Material_v58 CastedMaterial = (OtherMaterial as Material_v58);
                Unk0 = CastedMaterial.Unk0;
                Unk1 = CastedMaterial.Unk1;
                Unk3 = CastedMaterial.Unk3;
                Unk4 = CastedMaterial.Unk4;
                Unk5 = CastedMaterial.Unk5;
                Unk6 = CastedMaterial.Unk6;
                Unk7 = CastedMaterial.Unk7;

                Samplers = new List <MaterialSampler_v58>();
                foreach (var Sampler in CastedMaterial.Samplers)
                {
                    MaterialSampler_v58 NewSampler = new MaterialSampler_v58(Sampler);
                    Samplers.Add(NewSampler);
                }
            }
            else
            {
                string message = string.Format("Version {0} cannot be converted from Version {1}", GetMTLVersion(), OtherMaterial.GetMTLVersion());
                Console.WriteLine(message);
                return;
            }

            Parameters = new List <MaterialParameter>();
            foreach (var Param in OtherMaterial.Parameters)
            {
                MaterialParameter NewParam = new MaterialParameter(Param);
                Parameters.Add(NewParam);
            }
        }
Ejemplo n.º 2
0
        public override void ReadFromFile(BinaryReader reader, VersionsEnumerator version)
        {
            ulong  materialHash = reader.ReadUInt64();
            string materialName = StringHelpers.ReadString32(reader);

            MaterialName.String = materialName;
            MaterialName.Hash   = materialHash;
            Unk0       = reader.ReadUInt32();
            Unk1       = reader.ReadBytes(2);
            Flags      = (MaterialFlags)reader.ReadInt32();
            Unk2       = reader.ReadBytes(9);
            ShaderID   = reader.ReadUInt64();
            ShaderHash = reader.ReadUInt32();

            int parameterCount = reader.ReadInt32();

            Parameters = new List <MaterialParameter>();
            for (int i = 0; i != parameterCount; i++)
            {
                var param = new MaterialParameter(reader);
                Parameters.Add(param);
            }

            int textureCount = reader.ReadInt32();

            Textures = new List <MaterialTexture>();
            for (int i = 0; i != textureCount; i++)
            {
                var texture = new MaterialTexture();
                texture.ReadFromFile(reader);
                Textures.Add(texture);
            }

            int samplerCount = reader.ReadInt32();

            Samplers = new List <MaterialSampler_v63>();
            for (int i = 0; i != samplerCount; i++)
            {
                var sampler = new MaterialSampler_v63();
                sampler.ReadFromFile(reader, version);
                Samplers.Add(sampler);
            }
        }
Ejemplo n.º 3
0
        public override void ReadFromFile(BinaryReader reader, VersionsEnumerator version)
        {
            ulong  materialHash = reader.ReadUInt64();
            string materialName = StringHelpers.ReadString32(reader);

            MaterialName.String = materialName;
            MaterialName.Hash   = materialHash;

            Unk0  = reader.ReadByte();
            Unk1  = reader.ReadByte();
            Unk2  = reader.ReadByte();
            Flags = (MaterialFlags)reader.ReadInt32();
            Unk3  = reader.ReadByte();
            Unk4  = reader.ReadInt32();
            Unk5  = reader.ReadInt32();
            Unk6  = reader.ReadByte();
            Unk7  = reader.ReadSingle();

            ShaderID   = reader.ReadUInt64();
            ShaderHash = reader.ReadUInt32();

            int parameterCount = reader.ReadInt32();

            Parameters = new List <MaterialParameter>();
            for (int i = 0; i != parameterCount; i++)
            {
                var param = new MaterialParameter(reader);
                Parameters.Add(param);
            }

            int samplerCount = reader.ReadInt32();

            Samplers = new List <MaterialSampler_v58>();
            for (int i = 0; i != samplerCount; i++)
            {
                var shader = new MaterialSampler_v58();
                shader.ReadFromFile(reader, version);
                Samplers.Add(shader);
            }
        }
Ejemplo n.º 4
0
 public MaterialParameter(MaterialParameter OtherParameter)
 {
     ID         = OtherParameter.ID;
     Paramaters = OtherParameter.paramaters;
 }