public override async Task ReadDomainObject(ByteArrayReader reader, DomainHeader header, DomainExportTableEntry export, bool skipProperties, bool skipParse) { await base.ReadDomainObject(reader, header, export, skipProperties, skipParse); if (skipParse) return; Unknown1 = await reader.ReadBytes(sizeof(uint) * 3); CompressedChunkOffset = reader.ReadInt32(); }
public async Task ReadString(ByteArrayReader reader) { Size = reader.ReadInt32(); if (Size == 0) { String = String.Empty; return; } if (Size < 0) { int size = -Size * 2; byte[] str = await reader.ReadBytes(size); String = Encoding.Unicode.GetString(str); } else { byte[] str = await reader.ReadBytes(Size - 1); reader.Skip(1); // NULL Terminator String = Encoding.ASCII.GetString(str); } }
public override async Task ReadDomainObject(ByteArrayReader reader, DomainHeader header, DomainExportTableEntry export, bool skipProperties, bool skipParse) { await base.ReadDomainObject(reader, header, export, skipProperties, skipParse); if (skipParse) return; MipMapsCount = reader.ReadInt32(); for(int i = 0; i < MipMapsCount; ++i) { await ProcessCompressedBulkData(reader, async bulkChunk => { DomainMipMap mip = new DomainMipMap { Width = reader.ReadInt32(), Height = reader.ReadInt32() }; if (mip.Width >= 4 || mip.Height >= 4) mip.ImageData = (await bulkChunk.DecompressChunk(0))?.GetBytes(); MipMaps.Add(mip); }); } Guid = await reader.ReadBytes(16); }
internal async Task ReadExportTableEntry(ByteArrayReader reader, DomainHeader header) { TypeReference = reader.ReadInt32(); ParentReference = reader.ReadInt32(); OwnerReference = reader.ReadInt32(); NameTableIndex.ReadNameTableIndex(reader, header); ArchetypeReference = reader.ReadInt32(); FlagsHigh = reader.ReadUInt32(); FlagsLow = reader.ReadUInt32(); SerialDataSize = reader.ReadInt32(); SerialDataOffset = reader.ReadInt32(); ExportFlags = reader.ReadUInt32(); NetObjectCount = reader.ReadInt32(); Guid = await reader.ReadBytes(16); Unknown1 = reader.ReadUInt32(); Unknown2 = await reader.ReadBytes(sizeof(uint) * NetObjectCount); }