private void ReadAssets(EndianReader reader) { HashSet <long> preloaded = new HashSet <long>(); using (AssetReader assetReader = new AssetReader(reader, Version, Platform, Flags)) { if (SerializedFileMetadata.IsReadPreload(Header.Generation)) { foreach (ObjectPtr ptr in Metadata.Preloads) { if (ptr.FileID == 0) { AssetEntry info = Metadata.Entries[ptr.PathID]; ReadAsset(assetReader, info); preloaded.Add(ptr.PathID); } } } foreach (KeyValuePair <long, AssetEntry> infoPair in Metadata.Entries) { if (infoPair.Value.ClassID == ClassIDType.MonoScript) { if (!preloaded.Contains(infoPair.Key)) { ReadAsset(assetReader, infoPair.Value); preloaded.Add(infoPair.Key); } } } foreach (AssetEntry info in Metadata.Entries.Values) { if (!preloaded.Contains(info.PathID)) { ReadAsset(assetReader, info); } } } }
private void ReadAssets(EndianReader reader, long startPosition) { HashSet <long> preloaded = new HashSet <long>(); if (SerializedFileMetadata.IsReadPreload(Header.Generation)) { foreach (ObjectPtr ptr in Metadata.Preloads) { if (ptr.FileID == 0) { AssetEntry info = Metadata.Objects[ptr.PathID]; ReadAsset(reader, info, startPosition); preloaded.Add(ptr.PathID); } } } foreach (KeyValuePair <long, AssetEntry> infoPair in Metadata.Objects) { ClassIDType classID = AssetEntryToClassIDType(infoPair.Value); if (classID == ClassIDType.MonoScript) { if (!preloaded.Contains(infoPair.Key)) { ReadAsset(reader, infoPair.Value, startPosition); preloaded.Add(infoPair.Key); } } } foreach (AssetEntry info in Metadata.Objects.Values) { if (!preloaded.Contains(info.PathID)) { ReadAsset(reader, info, startPosition); } } }