testss
This commit is contained in:
@@ -0,0 +1,117 @@
|
||||
using System;
|
||||
using UnityEditor.ShaderGraph;
|
||||
using UnityEditor.ShaderGraph.Serialization;
|
||||
using UnityEngine;
|
||||
|
||||
namespace UnityEditor.Graphing
|
||||
{
|
||||
class GraphObject : ScriptableObject, ISerializationCallbackReceiver
|
||||
{
|
||||
[SerializeField]
|
||||
SerializationHelper.JSONSerializedElement m_SerializedGraph;
|
||||
|
||||
[SerializeField]
|
||||
int m_SerializedVersion;
|
||||
|
||||
[SerializeField]
|
||||
bool m_IsDirty;
|
||||
|
||||
[SerializeField]
|
||||
bool m_IsSubGraph;
|
||||
|
||||
[SerializeField]
|
||||
string m_AssetGuid;
|
||||
|
||||
[NonSerialized]
|
||||
GraphData m_Graph;
|
||||
|
||||
[NonSerialized]
|
||||
int m_DeserializedVersion;
|
||||
|
||||
public GraphData graph
|
||||
{
|
||||
get { return m_Graph; }
|
||||
set
|
||||
{
|
||||
if (m_Graph != null)
|
||||
m_Graph.owner = null;
|
||||
m_Graph = value;
|
||||
if (m_Graph != null)
|
||||
m_Graph.owner = this;
|
||||
}
|
||||
}
|
||||
|
||||
// this value stores whether an undo operation has been registered (which indicates a change has been made to the graph)
|
||||
// and is used to trigger the MaterialGraphEditWindow to update it's title
|
||||
public bool isDirty
|
||||
{
|
||||
get { return m_IsDirty; }
|
||||
set { m_IsDirty = value; }
|
||||
}
|
||||
|
||||
public virtual void RegisterCompleteObjectUndo(string actionName)
|
||||
{
|
||||
Undo.RegisterCompleteObjectUndo(this, actionName);
|
||||
m_SerializedVersion++;
|
||||
m_DeserializedVersion++;
|
||||
m_IsDirty = true;
|
||||
}
|
||||
|
||||
public void OnBeforeSerialize()
|
||||
{
|
||||
if (graph != null)
|
||||
{
|
||||
var json = MultiJson.Serialize(graph);
|
||||
m_SerializedGraph = new SerializationHelper.JSONSerializedElement { JSONnodeData = json };
|
||||
m_IsSubGraph = graph.isSubGraph;
|
||||
m_AssetGuid = graph.assetGuid;
|
||||
}
|
||||
}
|
||||
|
||||
public void OnAfterDeserialize()
|
||||
{
|
||||
}
|
||||
|
||||
public bool wasUndoRedoPerformed => m_DeserializedVersion != m_SerializedVersion;
|
||||
|
||||
public void HandleUndoRedo()
|
||||
{
|
||||
Debug.Assert(wasUndoRedoPerformed);
|
||||
var deserializedGraph = DeserializeGraph();
|
||||
m_Graph.ReplaceWith(deserializedGraph);
|
||||
}
|
||||
|
||||
GraphData DeserializeGraph()
|
||||
{
|
||||
var json = m_SerializedGraph.JSONnodeData;
|
||||
var deserializedGraph = new GraphData {isSubGraph = m_IsSubGraph, assetGuid = m_AssetGuid};
|
||||
MultiJson.Deserialize(deserializedGraph, json);
|
||||
m_DeserializedVersion = m_SerializedVersion;
|
||||
m_SerializedGraph = default;
|
||||
return deserializedGraph;
|
||||
}
|
||||
|
||||
public void Validate()
|
||||
{
|
||||
if (graph != null)
|
||||
{
|
||||
graph.OnEnable();
|
||||
graph.ValidateGraph();
|
||||
}
|
||||
}
|
||||
|
||||
void OnEnable()
|
||||
{
|
||||
if (graph == null && m_SerializedGraph.JSONnodeData != null)
|
||||
{
|
||||
graph = DeserializeGraph();
|
||||
}
|
||||
Validate();
|
||||
}
|
||||
|
||||
void OnDestroy()
|
||||
{
|
||||
graph?.OnDisable();
|
||||
}
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user