Some minor fixes

This commit is contained in:
VaDiM 2024-03-05 23:42:35 +03:00
parent 045f6c0ff4
commit afdc81bca8
2 changed files with 22 additions and 34 deletions

View File

@ -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))
{

View File

@ -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<string> _ignoreProps;
static IgnorePropertiesResolver()
{
_ignoreProps = new HashSet<string> { "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;
}
}
}
}