From bc92dfb77c58cfc477e77cf48464ca8f14297150 Mon Sep 17 00:00:00 2001 From: VaDiM Date: Sun, 20 Oct 2024 22:29:06 +0300 Subject: [PATCH] Add Material loading via typetree --- AssetStudio/AssetsManager.cs | 4 +++- AssetStudio/Classes/Material.cs | 14 ++++++++++++++ 2 files changed, 17 insertions(+), 1 deletion(-) diff --git a/AssetStudio/AssetsManager.cs b/AssetStudio/AssetsManager.cs index 8b6f336..1e3ef1a 100644 --- a/AssetStudio/AssetsManager.cs +++ b/AssetStudio/AssetsManager.cs @@ -574,7 +574,9 @@ namespace AssetStudio obj = new GameObject(objectReader); break; case ClassIDType.Material: - obj = new Material(objectReader); + obj = objectReader.serializedType?.m_Type != null && LoadingViaTypeTreeEnabled + ? new Material(objectReader, TypeTreeHelper.ReadTypeByteArray(objectReader.serializedType.m_Type, objectReader), jsonOptions) + : new Material(objectReader); break; case ClassIDType.Mesh: obj = new Mesh(objectReader); diff --git a/AssetStudio/Classes/Material.cs b/AssetStudio/Classes/Material.cs index be2a55f..ef90846 100644 --- a/AssetStudio/Classes/Material.cs +++ b/AssetStudio/Classes/Material.cs @@ -1,4 +1,5 @@ using System.Collections.Generic; +using System.Text.Json; namespace AssetStudio { @@ -8,6 +9,8 @@ namespace AssetStudio public Vector2 m_Scale; public Vector2 m_Offset; + public UnityTexEnv() { } + public UnityTexEnv(ObjectReader reader) { m_Texture = new PPtr(reader); @@ -23,6 +26,8 @@ namespace AssetStudio public KeyValuePair[] m_Floats; public KeyValuePair[] m_Colors; + public UnityPropertySheet() { } + public UnityPropertySheet(ObjectReader reader) { var version = reader.version; @@ -65,6 +70,15 @@ namespace AssetStudio public PPtr m_Shader; public UnityPropertySheet m_SavedProperties; + public Material() { } + + public Material(ObjectReader reader, byte[] type, JsonSerializerOptions jsonOptions) : base(reader) + { + var parsedMaterial = JsonSerializer.Deserialize(type, jsonOptions); + m_Shader = parsedMaterial.m_Shader; + m_SavedProperties = parsedMaterial.m_SavedProperties; + } + public Material(ObjectReader reader) : base(reader) { m_Shader = new PPtr(reader);