1.yet continue working on node serialization

main
taoria 3 years ago
parent bca8c3af6b
commit 7f780299b1
  1. 10
      TNode/Editor/BaseViews/DataGraphView.cs
  2. 24
      TNode/Models/GraphData.cs

@ -129,7 +129,7 @@ namespace TNode.Editor.BaseViews{
foreach (var edge in edges){ foreach (var edge in edges){
RemoveElement(edge); RemoveElement(edge);
} }
foreach (var dataNode in _data.nodes){ foreach (var dataNode in _data.NodeDictionary.Values){
if(dataNode==null) if(dataNode==null)
continue; continue;
@ -225,6 +225,7 @@ namespace TNode.Editor.BaseViews{
nodeEditorData.nodeGuid = nodeView.GetNodeData().id; nodeEditorData.nodeGuid = nodeView.GetNodeData().id;
} }
graphEditorData.nodesData.Add(nodeEditorData); graphEditorData.nodesData.Add(nodeEditorData);
EditorUtility.SetDirty(graphEditorData);
} }
} }
public void LoadEditorData(GraphEditorData graphEditorData){ public void LoadEditorData(GraphEditorData graphEditorData){
@ -240,7 +241,14 @@ namespace TNode.Editor.BaseViews{
} }
public void SaveWithEditorData(GraphEditorData graphEditorData){ public void SaveWithEditorData(GraphEditorData graphEditorData){
SaveEditorData(graphEditorData); SaveEditorData(graphEditorData);
SaveGraphData();
} }
private void SaveGraphData(){
EditorUtility.SetDirty(_data);
AssetDatabase.SaveAssets();
}
public override List<Port> GetCompatiblePorts(Port startPort, NodeAdapter nodeAdapter){ public override List<Port> GetCompatiblePorts(Port startPort, NodeAdapter nodeAdapter){
return ports.Where(x => x.portType == startPort.portType).ToList(); return ports.Where(x => x.portType == startPort.portType).ToList();
} }

@ -1,18 +1,26 @@
using System; using System;
using System.Collections.Generic; using System.Collections.Generic;
using UnityEngine; using UnityEngine;
using Newtonsoft.Json;
namespace TNode.Models{ namespace TNode.Models{
[Serializable] [Serializable]
public class GraphData:ScriptableObject{ public class GraphData:ScriptableObject,ISerializationCallbackReceiver{
[SerializeReference] [SerializeField]
public List<NodeData> nodes; public Dictionary<string,NodeData> NodeDictionary = new Dictionary<string,NodeData>();
[SerializeReference] [SerializeField]
public List<NodeLink> nodeLinks;
[HideInInspector] [HideInInspector]
[SerializeReference] private string jsonObject;
public NodeData entryNode;
public void OnBeforeSerialize(){
var serializedData = JsonConvert.SerializeObject(NodeDictionary);
jsonObject = serializedData;
}
public void OnAfterDeserialize(){
var deserializedData = JsonConvert.DeserializeObject<Dictionary<string,NodeData>>(jsonObject);
NodeDictionary = deserializedData;
}
} }
} }
Loading…
Cancel
Save