diff --git a/AssetStudio/AssetsManager.cs b/AssetStudio/AssetsManager.cs index dc5e3c2..f5fd025 100644 --- a/AssetStudio/AssetsManager.cs +++ b/AssetStudio/AssetsManager.cs @@ -712,7 +712,9 @@ namespace AssetStudio obj = new MeshFilter(objectReader); break; case ClassIDType.MeshRenderer: - obj = new MeshRenderer(objectReader); + obj = parseByTypeTree + ? new MeshRenderer(objectReader, TypeTreeHelper.ReadTypeByteArray(objectReader.serializedType.m_Type, objectReader), jsonOptions) + : new MeshRenderer(objectReader); break; case ClassIDType.MonoBehaviour: obj = new MonoBehaviour(objectReader); diff --git a/AssetStudio/Classes/MeshRenderer.cs b/AssetStudio/Classes/MeshRenderer.cs index e2a72ad..0dcc1d7 100644 --- a/AssetStudio/Classes/MeshRenderer.cs +++ b/AssetStudio/Classes/MeshRenderer.cs @@ -1,7 +1,21 @@ -namespace AssetStudio +using System.Text.Json; + +namespace AssetStudio { public sealed class MeshRenderer : Renderer { + public MeshRenderer() { } + + public MeshRenderer(ObjectReader reader, byte[] type, JsonSerializerOptions jsonOptions) + { + this.CopyObjectDataFromReader(reader); + var parsedAsset = JsonSerializer.Deserialize(type, jsonOptions); + m_GameObject = parsedAsset.m_GameObject; + m_Materials = parsedAsset.m_Materials; + m_StaticBatchInfo = parsedAsset.m_StaticBatchInfo; + m_SubsetIndices = parsedAsset.m_SubsetIndices; + } + public MeshRenderer(ObjectReader reader) : base(reader) {