public override void WriteToFile(BinaryWriter writer, VersionsEnumerator version) { // Material Name doesn't use standard hex serialization. writer.Write(MaterialName.Hash); writer.WriteString32(MaterialName.String); // Unknown Values. writer.Write(Unk0); writer.Write(Unk1); writer.Write(Unk2); writer.Write((int)Flags); writer.Write(Unk3); writer.Write(Unk4); writer.Write(Unk5); writer.Write(Unk6); writer.Write(Unk7); // Shader ID and Hash writer.Write(ShaderID); writer.Write(ShaderHash); // Shader Parameters writer.Write(Parameters.Count); foreach (var param in Parameters) { param.WriteToFile(writer); } // Shader Samplers writer.Write(Samplers.Count); foreach (var shader in Samplers) { shader.WriteToFile(writer, version); } }
public override void WriteToFile(BinaryWriter writer, VersionsEnumerator version) { writer.Write(ID.ToCharArray()); writer.Write(Unk0); writer.Write(SamplerStates); writer.Write(Unk1); }
public override void ReadFromFile(BinaryReader reader, VersionsEnumerator version) { ID = new string(reader.ReadChars(4)); Unk0 = reader.ReadInt32(); SamplerStates = reader.ReadBytes(6); Unk1 = reader.ReadInt16(); }
public static IMaterial ReadMaterialFromFile(BinaryReader reader, VersionsEnumerator version) { IMaterial Material = null; switch (version) { case VersionsEnumerator.V_57: Material = new Material_v57(); Material.ReadFromFile(reader, version); break; case VersionsEnumerator.V_58: Material = new Material_v58(); Material.ReadFromFile(reader, version); break; case VersionsEnumerator.V_63: Material = new Material_v63(); Material.ReadFromFile(reader, version); break; default: break; } Debug.Assert(Material != null, string.Format("Failed to read Material Type: {0}", version)); return(Material); }
public static IMaterial ConstructMaterial(VersionsEnumerator Version) { IMaterial Material = null; switch (Version) { case VersionsEnumerator.V_57: Material = new Material_v57(); break; case VersionsEnumerator.V_58: Material = new Material_v58(); break; case VersionsEnumerator.V_63: Material = new Material_v63(); break; default: break; } Debug.Assert(Material != null, string.Format("Failed to read Construct Material Type: {0}", Version)); return(Material); }
public MaterialLibrary(VersionsEnumerator InVersion) { name = ""; materials = new Dictionary <ulong, IMaterial>(); unk2 = 0; version = InVersion; }
public MaterialLibrary() { name = ""; materials = new Dictionary <ulong, IMaterial>(); unk2 = 0; version = GameStorage.Instance.GetSelectedGame().GameType == GamesEnumerator.MafiaII_DE ? VersionsEnumerator.V_58 : VersionsEnumerator.V_57; }
public void BuildMaterialLibrary(List <IMaterial> Materials, VersionsEnumerator InVersion) { version = InVersion; materials = new Dictionary <ulong, IMaterial>(); foreach (var Material in Materials) { ulong Hash = Material.MaterialName.Hash; materials.Add(Hash, Material); } }
public override void WriteToFile(BinaryWriter writer, VersionsEnumerator version) { writer.Write(ID.ToCharArray()); for (int i = 0; i < 4; i++) { writer.Write(UnkSet0[i]); } writer.Write(TextureName.Hash); writer.Write(TexType); writer.Write(UnkZero); writer.Write(SamplerStates); for (int i = 0; i < 2; i++) { writer.Write(UnkSet1[i]); } writer.WriteString32(TextureName.String); }
public void ReadMatFile(string name) { materials = new Dictionary <ulong, IMaterial>(); this.name = name; using (BinaryReader reader = new BinaryReader(File.Open(name, FileMode.Open))) { string header = new string(reader.ReadChars(4)); version = (VersionsEnumerator)reader.ReadInt32(); int numMats = reader.ReadInt32(); unk2 = reader.ReadInt32(); for (int i = 0; i != numMats; i++) { IMaterial mat = MaterialFactory.ReadMaterialFromFile(reader, version); materials.Add(mat.MaterialName.Hash, mat); } } }
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) { ID = new string(reader.ReadChars(4)); UnkSet0 = new int[4]; for (int i = 0; i < UnkSet0.Length; i++) { UnkSet0[i] = reader.ReadInt32(); } ulong TextureHash = reader.ReadUInt64(); TexType = reader.ReadByte(); UnkZero = reader.ReadByte(); SamplerStates = reader.ReadBytes(6); UnkSet1 = new int[2]; // these can have erratic values for (int i = 0; i < 2; i++) { UnkSet1[i] = reader.ReadInt32(); } TextureName.String = StringHelpers.ReadString32(reader); TextureName.Hash = TextureHash; }
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 virtual void WriteToFile(BinaryWriter writer, VersionsEnumerator version) { }
public virtual void ReadFromFile(BinaryReader reader, VersionsEnumerator version) { }