UnityGame/Library/PackageCache/com.unity.shadergraph/Editor/Data/Graphs/SerializableMesh.cs

64 lines
1.5 KiB
C#
Raw Normal View History

2024-10-27 10:53:47 +03:00
using System;
using UnityEngine;
namespace UnityEditor.ShaderGraph
{
[Serializable]
class SerializableMesh : ISerializationCallbackReceiver
{
[SerializeField]
string m_SerializedMesh;
[SerializeField]
string m_Guid;
[NonSerialized]
Mesh m_Mesh;
[Serializable]
class MeshHelper
{
#pragma warning disable 649
public Mesh mesh;
#pragma warning restore 649
}
public Mesh mesh
{
get
{
if (!string.IsNullOrEmpty(m_SerializedMesh))
{
var textureHelper = new MeshHelper();
EditorJsonUtility.FromJsonOverwrite(m_SerializedMesh, textureHelper);
m_SerializedMesh = null;
m_Guid = null;
m_Mesh = textureHelper.mesh;
}
else if (!string.IsNullOrEmpty(m_Guid) && m_Mesh == null)
{
m_Mesh = AssetDatabase.LoadAssetAtPath<Mesh>(AssetDatabase.GUIDToAssetPath(m_Guid));
m_Guid = null;
}
return m_Mesh;
}
set
{
m_Mesh = value;
m_Guid = null;
m_SerializedMesh = null;
}
}
public void OnBeforeSerialize()
{
m_SerializedMesh = EditorJsonUtility.ToJson(new MeshHelper { mesh = mesh }, false);
}
public void OnAfterDeserialize()
{
}
}
}