Skip to content

Commit 3c268fc

Browse files
committed
IReader fix
1 parent 1351ca4 commit 3c268fc

20 files changed

Lines changed: 65 additions & 85 deletions

UnityAsset.NET.Variant.SourceGenerator/UnityAsset.NET.Variant.SourceGenerator.csproj

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
<Project Sdk="Microsoft.NET.Sdk">
22

33
<PropertyGroup>
4-
<TargetFramework>net9.0</TargetFramework>
4+
<TargetFrameworks>net9.0;net10.0</TargetFrameworks>
55
<LangVersion>14</LangVersion>
66
<IsRoslynAnalyzer>true</IsRoslynAnalyzer>
77
<EnforceExtendedAnalyzerRules>true</EnforceExtendedAnalyzerRules>

UnityAsset.NET/Asset.cs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,8 @@ public IUnityAsset Value
3636
{
3737
if (_value == null)
3838
{
39-
_value = UnityObjectFactory.Create(Info.Type, DataReader);
39+
using var reader = DataReader;
40+
_value = UnityObjectFactory.Create(Info.Type, reader);
4041
if (IsNamedAsset)
4142
{
4243
_name = ((INamedObject)_value).m_Name;

UnityAsset.NET/AssetManager.cs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -230,12 +230,12 @@ public async Task LoadDirectoryAsync(string directoryPath, bool ignoreDuplicated
230230

231231
public void Clear()
232232
{
233-
LoadedFiles = new();
233+
LoadedAssets = new();
234+
_loadedTypes = new();
234235
VirtualFileToFileMap = new();
236+
LoadedFiles = new();
235237
Version = null;
236238
BuildTarget = null;
237-
_loadedTypes = new();
238-
LoadedAssets = new();
239239

240240
_fileSystem.Clear();
241241

UnityAsset.NET/Extensions/BundleFileExtensions.cs

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,5 @@
1-
using System.Runtime.InteropServices;
2-
using UnityAsset.NET.Files;
3-
using UnityAsset.NET.Files.BundleFiles;
1+
using UnityAsset.NET.Files;
42
using UnityAsset.NET.Files.SerializedFiles;
5-
using UnityAsset.NET.IO;
63

74
namespace UnityAsset.NET.Extensions;
85

UnityAsset.NET/FileSystem/DirectFileSystem/DirectFileSystem.cs

Lines changed: 2 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ public class DirectFileSystem : IFileSystem
77
public IFileSystem.ErrorHandler? OnError { get; set; }
88
public List<IVirtualFile> LoadedFiles { get; private set; } = new();
99

10-
public DirectFileSystem(IFileSystem.ErrorHandler? onError)
10+
public DirectFileSystem(IFileSystem.ErrorHandler? onError = null)
1111
{
1212
OnError = onError;
1313
}
@@ -41,11 +41,6 @@ public Task<List<IVirtualFile>> LoadAsync(List<string> paths, IProgress<LoadProg
4141

4242
public void Clear()
4343
{
44-
LoadedFiles.Clear();
45-
}
46-
47-
public void Dispose()
48-
{
49-
Clear();
44+
LoadedFiles = new();
5045
}
5146
}

UnityAsset.NET/FileSystem/IFileSystem.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
namespace UnityAsset.NET.FileSystem;
22

3-
public interface IFileSystem : IDisposable
3+
public interface IFileSystem
44
{
55
public delegate void ErrorHandler(string filePath, Exception ex, string errorMessage);
66
public ErrorHandler? OnError { get; set; }

UnityAsset.NET/FileSystem/IVirtualFile.cs

Lines changed: 4 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -8,8 +8,7 @@ public static class FileTypeHelper
88
{
99
public static FileType GetFileType(IStreamProvider streamProvider)
1010
{
11-
IReader reader = new CustomStreamReader(streamProvider);
12-
reader.Seek(0);
11+
using var reader = new CustomStreamReader(streamProvider);
1312
if (reader.Length > 7)
1413
{
1514
var signature = reader.ReadBytes(7);
@@ -23,8 +22,8 @@ public static FileType GetFileType(IStreamProvider streamProvider)
2322
{
2423
return FileType.Unknown;
2524
}
26-
27-
reader.Seek(0);
25+
26+
reader.Position = 0;
2827

2928
var metadataSize = reader.ReadUInt32();
3029
UInt64 fileSize = reader.ReadUInt32();
@@ -38,7 +37,7 @@ public static FileType GetFileType(IStreamProvider streamProvider)
3837
{
3938
if (reader.Length < 48)
4039
{
41-
reader.Seek(0);
40+
((IReader)reader).Seek(0);
4241
return FileType.Unknown;
4342
}
4443
metadataSize = reader.ReadUInt32();
@@ -47,7 +46,6 @@ public static FileType GetFileType(IStreamProvider streamProvider)
4746
unknown = reader.ReadInt64(); // unknown
4847
}
4948

50-
reader.Seek(0);
5149
if ((long)fileSize != reader.Length || (long)dataOffset > reader.Length)
5250
{
5351
return FileType.Unknown;

UnityAsset.NET/Files/BundleFiles/BundleFile.cs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -130,7 +130,7 @@ public BundleFile(string path, string? key = null, bool lazyLoad = true)
130130
public BundleFile(IStreamProvider streamProvider, string? key = null, bool lazyLoad = true)
131131
{
132132
var csProvider = new CustomStreamReaderProvider(streamProvider);
133-
var reader = csProvider.CreateReader();
133+
using var reader = csProvider.CreateReader();
134134
UnityCnKey = key;
135135
Header = Header.Parse(reader);
136136
if (Header.UnityRevision == "0.0.0")
@@ -159,9 +159,9 @@ public void ParseFilesWithTypeConversion()
159159
for (int i = 0; i < Files.Count; i++)
160160
{
161161
var subFile = Files[i];
162-
if (subFile is { Parsed: false})
162+
if (subFile is { CanBeSerializedFile: true, File: IReaderProvider provider})
163163
{
164-
Files[i] = new FileWrapper(SerializedFile.Parse(this, subFile.FileProvider!), subFile.Info);
164+
Files[i] = new FileWrapper(SerializedFile.Parse(this, provider), subFile.Info);
165165
}
166166
}
167167
}

UnityAsset.NET/Files/FileWrapper.cs

Lines changed: 2 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -5,24 +5,14 @@ namespace UnityAsset.NET.Files;
55

66
public class FileWrapper
77
{
8-
public readonly IReaderProvider? FileProvider;
9-
private readonly IFile? _file;
10-
public IFile File => _file ?? FileProvider!.CreateReader();
8+
public IFile File { get; }
119
public FileEntry Info { get; }
12-
public bool Parsed { get; private set; }
1310

14-
public FileWrapper(IReaderProvider fileProvider, FileEntry info)
15-
{
16-
FileProvider = fileProvider;
17-
Info = info;
18-
Parsed = !CanBeSerializedFile;
19-
}
2011

2112
public FileWrapper(IFile file, FileEntry info)
2213
{
23-
_file = file;
14+
File = file;
2415
Info = info;
25-
Parsed = !CanBeSerializedFile;
2616
}
2717

2818
public bool CanBeSerializedFile => (Info.Flags & 0x04) != 0;

UnityAsset.NET/Files/SerializedFiles/SerializedFile.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,7 @@ public SerializedFile(SerializedFileHeader header, SerializedFileMetadata metada
3636
public SerializedFile(IVirtualFile file)
3737
{
3838
ReaderProvider = new CustomStreamReaderProvider(file);
39-
var reader = ReaderProvider.CreateReader();
39+
using var reader = ReaderProvider.CreateReader();
4040
Header = SerializedFileHeader.Parse(reader);
4141
reader.Endian = Header.Endianness;
4242
Metadata = SerializedFileMetadata.Parse(reader, Header.Version);
@@ -53,7 +53,7 @@ public SerializedFile(IVirtualFile file)
5353

5454
public static SerializedFile Parse(BundleFile bf, IReaderProvider readerProvider)
5555
{
56-
var reader = readerProvider.CreateReader();
56+
using var reader = readerProvider.CreateReader();
5757
var header = SerializedFileHeader.Parse(reader);
5858
reader.Endian = header.Endianness;
5959
var metadata = SerializedFileMetadata.Parse(reader, header.Version);

0 commit comments

Comments
 (0)