using System; using System.Collections.Generic; using UnityEditor.Experimental.AssetImporters; using UnityEditor.Graphing; using UnityEngine; namespace UnityEditor.ShaderGraph { [Serializable] struct FunctionPair { public string key; public string value; public FunctionPair(string key, string value) { this.key = key; this.value = value; } } class SubGraphAsset : ScriptableObject, ISerializationCallbackReceiver { public bool isValid; public bool isRecursive; public long processedAt; public string functionName; public string inputStructName; public string hlslName; public string assetGuid; public ShaderGraphRequirements requirements; public string path; public List functions = new List(); [NonSerialized] public List inputs = new List(); [SerializeField] List m_SerializedInputs = new List(); [NonSerialized] public List keywords = new List(); [SerializeField] List m_SerializedKeywords = new List(); [NonSerialized] public List nodeProperties = new List(); [SerializeField] List m_SerializedProperties = new List(); [NonSerialized] public List outputs = new List(); [SerializeField] List m_SerializedOutputs = new List(); public List children = new List(); public List descendents = new List(); public ShaderStageCapability effectiveShaderStage; public ConcretePrecision graphPrecision; public ConcretePrecision outputPrecision; public void OnBeforeSerialize() { m_SerializedInputs = SerializationHelper.Serialize(inputs); m_SerializedKeywords = SerializationHelper.Serialize(keywords); m_SerializedProperties = SerializationHelper.Serialize(nodeProperties); m_SerializedOutputs = SerializationHelper.Serialize(outputs); } public void OnAfterDeserialize() { var typeSerializationInfos = GraphUtil.GetLegacyTypeRemapping(); inputs = SerializationHelper.Deserialize(m_SerializedInputs, typeSerializationInfos); keywords = SerializationHelper.Deserialize(m_SerializedKeywords, typeSerializationInfos); nodeProperties = SerializationHelper.Deserialize(m_SerializedProperties, typeSerializationInfos); outputs = SerializationHelper.Deserialize(m_SerializedOutputs, typeSerializationInfos); } } }