Add Material loading via typetree

This commit is contained in:
VaDiM 2024-10-20 22:29:06 +03:00
parent c37e2e65b7
commit bc92dfb77c
2 changed files with 17 additions and 1 deletions

View File

@ -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);

View File

@ -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<Texture>(reader);
@ -23,6 +26,8 @@ namespace AssetStudio
public KeyValuePair<string, float>[] m_Floats;
public KeyValuePair<string, Color>[] m_Colors;
public UnityPropertySheet() { }
public UnityPropertySheet(ObjectReader reader)
{
var version = reader.version;
@ -65,6 +70,15 @@ namespace AssetStudio
public PPtr<Shader> m_Shader;
public UnityPropertySheet m_SavedProperties;
public Material() { }
public Material(ObjectReader reader, byte[] type, JsonSerializerOptions jsonOptions) : base(reader)
{
var parsedMaterial = JsonSerializer.Deserialize<Material>(type, jsonOptions);
m_Shader = parsedMaterial.m_Shader;
m_SavedProperties = parsedMaterial.m_SavedProperties;
}
public Material(ObjectReader reader) : base(reader)
{
m_Shader = new PPtr<Shader>(reader);