public TexInfo(EndianBinaryReader er) { Type = er.ReadUInt32(); DynamicAllocator = er.ReadUInt32(); TXOBOffset = (UInt32)er.BaseStream.Position + er.ReadUInt32(); SamplerOffset = (UInt32)er.BaseStream.Position + er.ReadUInt32(); Unknown4 = er.ReadUInt32(); Unknown5 = er.ReadUInt16(); Unknown6 = er.ReadUInt16(); Unknown7 = er.ReadUInt32(); Unknown8 = er.ReadUInt16(); Unknown9 = er.ReadUInt16(); Height = er.ReadUInt16(); Width = er.ReadUInt16(); Unknown12 = er.ReadUInt32(); Unknown13 = er.ReadUInt32(); Unknown14 = er.ReadUInt32(); Unknown15 = er.ReadUInt32(); Unknown16 = er.ReadUInt32(); Unknown17 = er.ReadUInt32(); Unknown18 = er.ReadUInt32(); Unknown19 = er.ReadUInt32(); Unknown20 = er.ReadUInt32(); CommandSizeToSend = er.ReadUInt32(); long curpos = er.BaseStream.Position; er.BaseStream.Position = TXOBOffset; TextureObject = TXOB.FromStream(er); er.BaseStream.Position = SamplerOffset; Sampler = TextureSamplerCtr.FromStream(er); er.BaseStream.Position = curpos; }
public DATA(EndianBinaryReader er) { Signature = er.ReadString(Encoding.ASCII, 4); if (Signature != "DATA") { throw new SignatureNotCorrectException(Signature, "DATA", er.BaseStream.Position - 4); } SectionSize = er.ReadUInt32(); DictionaryEntries = new DictionaryInfo[16]; for (int i = 0; i < 16; i++) { DictionaryEntries[i] = new DictionaryInfo(er); } Dictionaries = new DICT[16]; for (int i = 0; i < 16; i++) { if (i == 15 && DictionaryEntries[i].NrItems == 0x54434944) { DictionaryEntries[i].NrItems = 0; DictionaryEntries[i].Offset = 0; } if (DictionaryEntries[i].Offset != 0) { long curpos = er.BaseStream.Position; er.BaseStream.Position = DictionaryEntries[i].Offset; Dictionaries[i] = new DICT(er); er.BaseStream.Position = curpos; } else { Dictionaries[i] = null; } } if (Dictionaries[0] != null) { Models = new CMDL[Dictionaries[0].Count]; for (int i = 0; i < Dictionaries[0].Count; i++) { long curpos = er.BaseStream.Position; er.BaseStream.Position = Dictionaries[0][i].DataOffset; Models[i] = new CMDL(er); er.BaseStream.Position = curpos; } } if (Dictionaries[1] != null) { Textures = new TXOB[Dictionaries[1].Count]; for (int i = 0; i < Dictionaries[1].Count; i++) { long curpos = er.BaseStream.Position; er.BaseStream.Position = Dictionaries[1][i].DataOffset; Textures[i] = TXOB.FromStream(er); //new TXOB(er); er.BaseStream.Position = curpos; } } if (Dictionaries[9] != null) { SkeletonAnimations = new CANM[Dictionaries[9].Count]; for (int i = 0; i < Dictionaries[9].Count; i++) { long curpos = er.BaseStream.Position; er.BaseStream.Position = Dictionaries[9][i].DataOffset; SkeletonAnimations[i] = new CANM(er); er.BaseStream.Position = curpos; } } if (Dictionaries[10] != null) { MaterialAnimations = new CANM[Dictionaries[10].Count]; for (int i = 0; i < Dictionaries[10].Count; i++) { long curpos = er.BaseStream.Position; er.BaseStream.Position = Dictionaries[10][i].DataOffset; MaterialAnimations[i] = new CANM(er); er.BaseStream.Position = curpos; } } if (Dictionaries[11] != null) { VisibilityAnimations = new CANM[Dictionaries[11].Count]; for (int i = 0; i < Dictionaries[11].Count; i++) { long curpos = er.BaseStream.Position; er.BaseStream.Position = Dictionaries[11][i].DataOffset; VisibilityAnimations[i] = new CANM(er); er.BaseStream.Position = curpos; } } }
public UInt16 Width; //22 #endregion Fields #region Constructors public TexInfo(String RefTex) { Type = 0x80000000; DynamicAllocator = 0; Unknown4 = 0; Unknown5 = 0x8E; Unknown6 = 1; Unknown7 = 0xFF000000; Unknown8 = 0x81; Unknown9 = 0x809f; Unknown12 = 0x1002206; CommandSizeToSend = 0x38; TextureObject = new ReferenceTexture(RefTex); Sampler = new StandardTextureSamplerCtr(); }