public void Save(ETextureParams item, string file) { using (var w = new BinaryWriter(File.OpenWrite(file))) { open_chunk(w, THM_CHUNK_TYPE); w.Write(0); // skip close_chunk(w); open_chunk(w, THM_CHUNK_TEXTUREPARAM); w.Write((int)item.fmt); w.Write((int)item.flags); w.Write(0); w.Write(0); w.Write(0); w.Write(0); w.Write(0); w.Write(0); close_chunk(w); open_chunk(w, THM_CHUNK_TEXTURE_TYPE); w.Write((int)item.type); close_chunk(w); open_chunk(w, THM_CHUNK_DETAIL_EXT); write_stringZ(w, item.detail_name); w.Write(item.detail_scale); close_chunk(w); open_chunk(w, THM_CHUNK_MATERIAL); w.Write((int)item.material); w.Write(item.material_weight); close_chunk(w); open_chunk(w, THM_CHUNK_BUMP); w.Write(0.0f); w.Write((int)item.bump_mode); write_stringZ(w, item.bump_name); close_chunk(w); open_chunk(w, THM_CHUNK_EXT_NORMALMAP); write_stringZ(w, ""); close_chunk(w); open_chunk(w, THM_CHUNK_FADE_DELAY); w.Write((byte)0); close_chunk(w); } }
public ETextureParams Load(string file) { using (var r = new BinaryReader(File.OpenRead(file))) { if (!find_chunk(r, THM_CHUNK_TYPE)) { return(null); } r.ReadUInt32(); // skip if (!find_chunk(r, THM_CHUNK_TEXTUREPARAM)) { return(null); } ETextureParams result = new ETextureParams(); result.fmt = (ETFormat)r.ReadInt32(); result.flags = (Flags)r.ReadUInt32(); // not used at all uint border_color = r.ReadUInt32(); uint fade_color = r.ReadUInt32(); uint fade_amount = r.ReadUInt32(); uint mip_filter = r.ReadUInt32(); uint width = r.ReadUInt32(); uint height = r.ReadUInt32(); // not used at all if (find_chunk(r, THM_CHUNK_TEXTURE_TYPE)) { result.type = (ETType)r.ReadUInt32(); } if (find_chunk(r, THM_CHUNK_DETAIL_EXT)) { result.detail_name = read_stringZ(r); result.detail_scale = r.ReadSingle(); } if (find_chunk(r, THM_CHUNK_MATERIAL)) { result.material = (ETMaterial)r.ReadUInt32(); result.material_weight = r.ReadSingle(); } if (find_chunk(r, THM_CHUNK_BUMP)) { float bump_virtual_height = r.ReadSingle(); ETBumpMode bump_mode = (ETBumpMode)r.ReadUInt32(); if (bump_mode < ETBumpMode.tbmNone) { bump_mode = ETBumpMode.tbmNone; //.. временно (до полного убирания Autogen) } result.bump_mode = bump_mode; result.bump_name = read_stringZ(r); } // not used at all if (find_chunk(r, THM_CHUNK_EXT_NORMALMAP)) { string ext_normal_map_name = read_stringZ(r); } if (find_chunk(r, THM_CHUNK_FADE_DELAY)) { byte fade_delay = r.ReadByte(); } // not used at all return(result); } }