mirror of
https://github.com/aelurum/AssetStudio.git
synced 2025-05-25 05:40:21 -04:00
Fix PPtrConverter (#69)
This commit is contained in:
parent
9f918d0332
commit
db4eb30a27
@ -526,7 +526,7 @@ namespace AssetStudio
|
|||||||
Progress.Reset();
|
Progress.Reset();
|
||||||
foreach (var assetsFile in assetsFileList)
|
foreach (var assetsFile in assetsFileList)
|
||||||
{
|
{
|
||||||
JsonConverterHelper.PPtrConverter.AssetsFile = assetsFile;
|
JsonConverterHelper.AssetsFile = assetsFile;
|
||||||
foreach (var objectInfo in assetsFile.m_Objects)
|
foreach (var objectInfo in assetsFile.m_Objects)
|
||||||
{
|
{
|
||||||
var objectReader = new ObjectReader(assetsFile.reader, assetsFile, objectInfo);
|
var objectReader = new ObjectReader(assetsFile.reader, assetsFile, objectInfo);
|
||||||
|
@ -6,10 +6,10 @@ namespace AssetStudio
|
|||||||
{
|
{
|
||||||
public static partial class JsonConverterHelper
|
public static partial class JsonConverterHelper
|
||||||
{
|
{
|
||||||
|
public static SerializedFile AssetsFile { get; set; }
|
||||||
|
|
||||||
public class PPtrConverter : JsonConverterFactory
|
public class PPtrConverter : JsonConverterFactory
|
||||||
{
|
{
|
||||||
public static SerializedFile AssetsFile;
|
|
||||||
|
|
||||||
public override bool CanConvert(Type typeToConvert)
|
public override bool CanConvert(Type typeToConvert)
|
||||||
{
|
{
|
||||||
if (!typeToConvert.IsGenericType)
|
if (!typeToConvert.IsGenericType)
|
||||||
@ -22,24 +22,17 @@ namespace AssetStudio
|
|||||||
public override JsonConverter CreateConverter(Type type, JsonSerializerOptions options)
|
public override JsonConverter CreateConverter(Type type, JsonSerializerOptions options)
|
||||||
{
|
{
|
||||||
var elementType = type.GetGenericArguments()[0];
|
var elementType = type.GetGenericArguments()[0];
|
||||||
var converter = (JsonConverter)Activator.CreateInstance(typeof(PPtrConverter<>).MakeGenericType(elementType), AssetsFile);
|
var converter = (JsonConverter)Activator.CreateInstance(typeof(PPtrConverter<>).MakeGenericType(elementType));
|
||||||
return converter;
|
return converter;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private class PPtrConverter<T> : JsonConverter<PPtr<T>> where T : Object
|
private class PPtrConverter<T> : JsonConverter<PPtr<T>> where T : Object
|
||||||
{
|
{
|
||||||
private readonly SerializedFile _assetsFile;
|
|
||||||
|
|
||||||
public PPtrConverter(SerializedFile assetsFile)
|
|
||||||
{
|
|
||||||
_assetsFile = assetsFile;
|
|
||||||
}
|
|
||||||
|
|
||||||
public override PPtr<T> Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options)
|
public override PPtr<T> Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options)
|
||||||
{
|
{
|
||||||
var pptrObj = JsonSerializer.Deserialize<PPtr<T>>(ref reader, new JsonSerializerOptions { IncludeFields = true });
|
var pptrObj = JsonSerializer.Deserialize<PPtr<T>>(ref reader, new JsonSerializerOptions { IncludeFields = true });
|
||||||
pptrObj.AssetsFile = _assetsFile;
|
pptrObj.AssetsFile = AssetsFile;
|
||||||
return pptrObj;
|
return pptrObj;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user