From 9a6ceeb14426497485a4eeba4966e1730a0deaf2 Mon Sep 17 00:00:00 2001 From: VaDiM Date: Sat, 27 Jun 2026 04:29:06 +0300 Subject: [PATCH] Add support for parsing MeshRenderer via typetree --- AssetStudio/AssetsManager.cs | 4 +++- AssetStudio/Classes/MeshRenderer.cs | 16 +++++++++++++++- 2 files changed, 18 insertions(+), 2 deletions(-) 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) {