private ReadExportTableEntry ( ByteArrayReader reader, DomainHeader header ) : Task | ||
reader | ByteArrayReader | |
header | DomainHeader | |
return | Task |
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);
}
private async Task readExportTable(Action<DomainLoadProgress> progress) { DomainLoadProgress message = new DomainLoadProgress { Text = "Reading Export Table...", Current = 0, Total = ExportTableCount }; reader.Seek(ExportTableOffset); for(int i = 0; i < ExportTableCount; ++i) { DomainExportTableEntry export = new DomainExportTableEntry { TableIndex = i + 1 }; await export.ReadExportTableEntry(reader, this); ExportTable.Add(export); message.IncrementCurrent(); if (ExportTableCount > 100) progress?.Invoke(message); } message.Text = "Expanding References..."; message.Current = 0; message.Total = 0; progress?.Invoke(message); await ExportTable.ForEachAsync(export => Task.Run(() => export.ExpandReferences(this))); }