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); } }
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); } }
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); } }