From afdc81bca8c994f914fb42d6038fc215af7d3b67 Mon Sep 17 00:00:00 2001 From: VaDiM Date: Tue, 5 Mar 2024 23:42:35 +0300 Subject: [PATCH] Some minor fixes --- AssetStudio/AssetsManager.cs | 25 ++++++++++++++++--------- AssetStudio/Classes/Object.cs | 31 ++++++------------------------- 2 files changed, 22 insertions(+), 34 deletions(-) diff --git a/AssetStudio/AssetsManager.cs b/AssetStudio/AssetsManager.cs index bc6964f..cbb4b28 100644 --- a/AssetStudio/AssetsManager.cs +++ b/AssetStudio/AssetsManager.cs @@ -145,8 +145,7 @@ namespace AssetStudio switch (reader?.FileType) { case FileType.AssetsFile: - LoadAssetsFile(reader); - break; + return LoadAssetsFile(reader); case FileType.BundleFile: return LoadBundleFile(reader); case FileType.WebFile: @@ -165,7 +164,7 @@ namespace AssetStudio return true; } - private void LoadAssetsFile(FileReader reader) + private bool LoadAssetsFile(FileReader reader) { if (!assetsFileListHash.Contains(reader.FileName)) { @@ -173,6 +172,7 @@ namespace AssetStudio try { var assetsFile = new SerializedFile(reader, this); + var dirName = Path.GetDirectoryName(reader.FullPath); CheckStrippedVersion(assetsFile); assetsFileList.Add(assetsFile); assetsFileListHash.Add(assetsFile.fileName); @@ -183,12 +183,12 @@ namespace AssetStudio if (!importFilesHash.Contains(sharedFileName)) { - var sharedFilePath = Path.Combine(Path.GetDirectoryName(reader.FullPath), sharedFileName); + var sharedFilePath = Path.Combine(dirName, sharedFileName); if (!noexistFiles.Contains(sharedFilePath)) { if (!File.Exists(sharedFilePath)) { - var findFiles = Directory.GetFiles(Path.GetDirectoryName(reader.FullPath), sharedFileName, SearchOption.AllDirectories); + var findFiles = Directory.GetFiles(dirName, sharedFileName, SearchOption.AllDirectories); if (findFiles.Length > 0) { sharedFilePath = findFiles[0]; @@ -211,10 +211,11 @@ namespace AssetStudio { Logger.Error(e.Message); reader.Dispose(); + return false; } catch (Exception e) { - Logger.Warning($"Error while reading assets file {reader.FullPath}\r\n{e}"); + Logger.Warning($"Failed to read assets file {reader.FullPath}\r\n{e}"); reader.Dispose(); } } @@ -223,9 +224,10 @@ namespace AssetStudio Logger.Info($"Skipping {reader.FullPath}"); reader.Dispose(); } + return true; } - private void LoadAssetsFromMemory(FileReader reader, string originalPath, string unityVersion = null) + private bool LoadAssetsFromMemory(FileReader reader, string originalPath, string unityVersion = null) { if (!assetsFileListHash.Contains(reader.FileName)) { @@ -245,15 +247,19 @@ namespace AssetStudio { Logger.Error(e.Message); resourceFileReaders.Add(reader.FileName, reader); + return false; } catch (Exception e) { - Logger.Warning($"Error while reading assets file {reader.FullPath} from {Path.GetFileName(originalPath)}\r\n{e}"); + Logger.Warning($"Failed to read assets file {reader.FullPath} from {Path.GetFileName(originalPath)}\r\n{e}"); resourceFileReaders.Add(reader.FileName, reader); } } else + { Logger.Info($"Skipping {originalPath} ({reader.FileName})"); + } + return true; } private bool LoadBundleFile(FileReader reader, string originalPath = null) @@ -268,7 +274,8 @@ namespace AssetStudio var subReader = new FileReader(dummyPath, file.stream); if (subReader.FileType == FileType.AssetsFile) { - LoadAssetsFromMemory(subReader, originalPath ?? reader.FullPath, bundleFile.m_Header.unityRevision); + if (!LoadAssetsFromMemory(subReader, originalPath ?? reader.FullPath, bundleFile.m_Header.unityRevision)) + return false; } else if (!resourceFileReaders.ContainsKey(file.fileName)) { diff --git a/AssetStudio/Classes/Object.cs b/AssetStudio/Classes/Object.cs index 1b15db6..44ea063 100644 --- a/AssetStudio/Classes/Object.cs +++ b/AssetStudio/Classes/Object.cs @@ -1,20 +1,22 @@ -using Newtonsoft.Json.Serialization; -using Newtonsoft.Json; -using System.Collections.Generic; +using Newtonsoft.Json; using System.Collections.Specialized; -using System.Reflection; namespace AssetStudio { public class Object { + [JsonIgnore] public SerializedFile assetsFile; + [JsonIgnore] public ObjectReader reader; public long m_PathID; + [JsonIgnore] public int[] version; protected BuildType buildType; + [JsonIgnore] public BuildTarget platform; public ClassIDType type; + [JsonIgnore] public SerializedType serializedType; public uint byteSize; @@ -66,7 +68,6 @@ namespace AssetStudio { Formatting = Formatting.Indented, ReferenceLoopHandling = ReferenceLoopHandling.Ignore, - ContractResolver = new IgnorePropertiesResolver() }).Replace(" ", " "); } catch @@ -99,25 +100,5 @@ namespace AssetStudio reader.Reset(); return reader.ReadBytes((int)byteSize); } - - private class IgnorePropertiesResolver : DefaultContractResolver - { - private static readonly HashSet _ignoreProps; - - static IgnorePropertiesResolver() - { - _ignoreProps = new HashSet { "assetsFile", "reader", "version", "platform", "serializedType" }; - } - - protected override JsonProperty CreateProperty(MemberInfo member, MemberSerialization memberSerialization) - { - JsonProperty property = base.CreateProperty(member, memberSerialization); - if (_ignoreProps.Contains(property.PropertyName)) - { - property.ShouldSerialize = _ => false; - } - return property; - } - } } }