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); } }
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); } }
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); } }
public MaterialParameter(MaterialParameter OtherParameter) { ID = OtherParameter.ID; Paramaters = OtherParameter.paramaters; }