Пример #1
0
        public MaterialSampler_v58(IMaterialSampler OtherSampler) : base(OtherSampler)
        {
            ID            = OtherSampler.ID;
            SamplerStates = OtherSampler.SamplerStates;

            // TODO: Setup is essentially the same, maybe we can somehow make v57 and v58 share the same interface?
            if (OtherSampler.GetVersion() == VersionsEnumerator.V_57)
            {
                MaterialSampler_v57 CastedSampler = (OtherSampler as MaterialSampler_v57);
                TextureName = new HashName(CastedSampler.TextureName);
                TexType     = CastedSampler.TexType;
                UnkZero     = CastedSampler.UnkZero;
                UnkSet1     = CastedSampler.UnkSet1;

                UnkSet0 = new int[4];
                Array.Copy(CastedSampler.UnkSet0, 0, UnkSet0, 0, 2);
            }
            else if (OtherSampler.GetVersion() == VersionsEnumerator.V_58)
            {
                MaterialSampler_v58 CastedSampler = (OtherSampler as MaterialSampler_v58);
                TextureName = new HashName(CastedSampler.TextureName);
                TexType     = CastedSampler.TexType;
                UnkZero     = CastedSampler.UnkZero;
                UnkSet1     = CastedSampler.UnkSet1;

                UnkSet0 = new int[4];
                Array.Copy(CastedSampler.UnkSet0, 0, UnkSet0, 0, 2);
            }
            else
            {
                string message = string.Format("Version {0} cannot be converted from Version {1}", GetVersion(), OtherSampler.GetVersion());
                Console.WriteLine(message);
            }
        }
Пример #2
0
        public Material_v57(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;
            }
            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;
            }
            else
            {
                string message = string.Format("Version {0} cannot be converted from Version {1}", GetMTLVersion(), OtherMaterial.GetMTLVersion());
                Console.WriteLine(message);
                return;
            }

            Samplers = new List <MaterialSampler_v57>();
            foreach (var Sampler in Samplers)
            {
                MaterialSampler_v57 NewSampler = new MaterialSampler_v57(Sampler);
                Samplers.Add(Sampler);
            }
        }
Пример #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();

            Flags = (MaterialFlags)reader.ReadInt32();
            Unk3  = reader.ReadByte();
            Unk4  = reader.ReadInt32();
            Unk5  = reader.ReadInt32();

            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_v57>();
            for (int i = 0; i != samplerCount; i++)
            {
                var shader = new MaterialSampler_v57();
                shader.ReadFromFile(reader, version);
                Samplers.Add(shader);
            }
        }