public BitmapData(CacheBase Cache, int Address) { EndianReader Reader = Cache.Reader; Reader.SeekTo(Address); Class = Reader.ReadString(4); Width = Reader.ReadInt16(); Height = Reader.ReadInt16(); Depth = Reader.ReadByte(); Flags = new Bitmask(Reader.ReadByte()); Type = (BitmapType)Reader.ReadByte(); Reader.ReadByte(); //dunno what this is Format = (BitmapFormat)Reader.ReadInt16(); if ((int)Format > 31) //change to match defined format list Format -= 5; MoreFlags = new Bitmask(Reader.ReadInt16()); RegX = Reader.ReadInt16(); RegY = Reader.ReadInt16(); MipmapCount = Reader.ReadByte(); Reader.ReadByte(); InterleavedIndex = Reader.ReadByte(); Index2 = Reader.ReadByte(); PixelsOffset = Reader.ReadInt32(); PixelsSize = Reader.ReadInt32(); }
public gbxmodel(CacheBase Cache, int Address) { cache = Cache; EndianReader Reader = Cache.Reader; Reader.SeekTo(Address); Name = "gbxmodel"; Flags = new Bitmask(Reader.ReadInt16()); Reader.SeekTo(Address + 0x30); uScale = Reader.ReadSingle(); vScale = Reader.ReadSingle(); #region MarkerGroups Block Reader.SeekTo(Address + 0xAC); int iCount = Reader.ReadInt32(); int iOffset = Reader.ReadInt32() - Cache.Magic; for (int i = 0; i < iCount; i++) MarkerGroups.Add(new MarkerGroup(Cache, iOffset + 64 * i)); #endregion #region Nodes Block Reader.SeekTo(Address + 0xB8); iCount = Reader.ReadInt32(); iOffset = Reader.ReadInt32() - Cache.Magic; for (int i = 0; i < iCount; i++) Nodes.Add(new Node(Cache, iOffset + 156 * i)); #endregion #region Regions Block Reader.SeekTo(Address + 0xC4); iCount = Reader.ReadInt32(); iOffset = Reader.ReadInt32() - Cache.Magic; for (int i = 0; i < iCount; i++) Regions.Add(new Region(Cache, iOffset + 76 * i)); #endregion #region ModelParts Block Reader.SeekTo(Address + 0xD0); iCount = Reader.ReadInt32(); iOffset = Reader.ReadInt32() - Cache.Magic; for (int i = 0; i < iCount; i++) ModelSections.Add(new ModelSection(Cache, iOffset + 48 * i) { FacesIndex = i, VertsIndex = i, NodeIndex = 255 }); #endregion #region Shaders Block Reader.SeekTo(Address + 0xDC); iCount = Reader.ReadInt32(); iOffset = Reader.ReadInt32() - Cache.Magic; for (int i = 0; i < iCount; i++) Shaders.Add(new Shader(Cache, iOffset + 32 * i)); #endregion #region BoundingBox Block BoundingBoxes.Add(new BoundingBox()); #endregion }
public Codec(CacheBase Cache, int Address) { EndianReader Reader = Cache.Reader; Reader.SeekTo(Address); Unknown = Reader.ReadByte(); Type = (SoundType)Reader.ReadByte(); Flags = new Bitmask(Reader.ReadByte()); }
public sound(CacheBase Cache, int Address) { EndianReader Reader = Cache.Reader; Reader.SeekTo(Address); Flags = new Bitmask(Reader.ReadInt16()); SoundClass = Reader.ReadByte(); SampleRate = (SampleRate)Reader.ReadByte(); Encoding = Reader.ReadByte(); CodecIndex = Reader.ReadByte(); PlaybackIndex = Reader.ReadInt16(); DialogueUnknown = Reader.ReadInt16(); Reader.SeekTo(Address + 28); RawID = Reader.ReadInt32(); }
public BitmapData(CacheBase Cache, int Address) { EndianReader Reader = Cache.Reader; Reader.SeekTo(Address); Class = Reader.ReadString(4); Width = Reader.ReadUInt16(); Height = Reader.ReadUInt16(); Depth = Reader.ReadUInt16(); //Flags = new Bitmask(Reader.ReadByte()); Type = (BitmapType)Reader.ReadUInt16(); Format = (BitmapFormat)Reader.ReadUInt16(); Flags = new Bitmask(Reader.ReadUInt16()); RegX = Reader.ReadUInt16(); RegY = Reader.ReadUInt16(); MipmapCount = Reader.ReadInt32(); PixelsOffset = Reader.ReadInt32() | int.MinValue; //add 'extenal' flag: all PC bitmaps are external PixelsSize = Reader.ReadInt32(); Reader.SeekTo(Address + 48); }
public render_model(CacheBase Cache, int Address) { cache = Cache; EndianReader Reader = Cache.Reader; Reader.SeekTo(Address); Name = Cache.Strings.GetItemByID(Reader.ReadInt32()); Flags = new Bitmask(Reader.ReadInt32()); #region Regions Block Reader.SeekTo(Address + 12); int iCount = Reader.ReadInt32(); int iOffset = Reader.ReadInt32() - Cache.Magic; for (int i = 0; i < iCount; i++) Regions.Add(new Region(Cache, iOffset + 16 * i)); #endregion Reader.SeekTo(Address + 28); InstancedGeometryIndex = Reader.ReadInt32(); #region Instanced Geometry Block Reader.SeekTo(Address + 32); iCount = Reader.ReadInt32(); iOffset = Reader.ReadInt32() - Cache.Magic; for (int i = 0; i < iCount; i++) GeomInstances.Add(new InstancedGeometry(Cache, iOffset + 60 * i)); #endregion #region Nodes Block Reader.SeekTo(Address + 48); iCount = Reader.ReadInt32(); iOffset = Reader.ReadInt32() - Cache.Magic; for (int i = 0; i < iCount; i++) Nodes.Add(new Node(Cache, iOffset + 96 * i)); #endregion #region MarkerGroups Block Reader.SeekTo(Address + 60); iCount = Reader.ReadInt32(); iOffset = Reader.ReadInt32() - Cache.Magic; for (int i = 0; i < iCount; i++) MarkerGroups.Add(new MarkerGroup(Cache, iOffset + 16 * i)); #endregion #region Shaders Block Reader.SeekTo(Address + 72); iCount = Reader.ReadInt32(); iOffset = Reader.ReadInt32() - Cache.Magic; for (int i = 0; i < iCount; i++) Shaders.Add(new Shader(Cache, iOffset + 36 * i)); #endregion #region ModelSections Block Reader.SeekTo(Address + 104); iCount = Reader.ReadInt32(); iOffset = Reader.ReadInt32() - Cache.Magic; for (int i = 0; i < iCount; i++) ModelSections.Add(new ModelSection(Cache, iOffset + 76 * i)); #endregion #region BoundingBox Block Reader.SeekTo(Address + 116); iCount = Reader.ReadInt32(); iOffset = Reader.ReadInt32() - Cache.Magic; for (int i = 0; i < iCount; i++) BoundingBoxes.Add(new BoundingBox(Cache, iOffset + 56 * i)); #endregion #region NodeMapGroup Block Reader.SeekTo(Address + 176); iCount = Reader.ReadInt32(); iOffset = Reader.ReadInt32() - Cache.Magic; for (int i = 0; i < iCount; i++) NodeIndexGroups.Add(new NodeIndexGroup(Cache, iOffset + 12 * i)); #endregion Reader.SeekTo(Address + 224); RawID = Reader.ReadInt32(); }
public RawChunk(CacheBase Cache, int Address) { EndianReader Reader = Cache.Reader; Reader.SeekTo(Address); FileOffset = Reader.ReadInt32(); Flags = new Bitmask(Reader.ReadInt16()); Size = Reader.ReadUInt16(); RuntimeIndex = Reader.ReadInt32(); Unknown0 = Reader.ReadInt32(); Unknown1 = Reader.ReadInt32(); }