using System; using System.Collections.Generic; using UnityEngine; namespace TNodeCore.Models{ [Serializable] public class GraphData:ScriptableObject,ISerializationCallbackReceiver{ public Dictionary NodeDictionary = new Dictionary(); [SerializeReference] public List nodeList = new List(); [SerializeField] protected List nodeLinks; [SerializeReference] public BlackboardData blackboardData; [HideInInspector] public string sceneReference; public List NodeLinks{ get{ return nodeLinks ??= new List(); } set => nodeLinks = value; } public void OnBeforeSerialize(){ nodeList.Clear(); foreach(var node in NodeDictionary.Values){ nodeList.Add(node); } } public void OnAfterDeserialize(){ NodeDictionary.Clear(); foreach(var node in nodeList){ NodeDictionary.Add(node.id,node); } } } }