Merge pull request #8 from taoria/working-in-process

1.yet continue working on node serialization
main
taoria 3 years ago committed by GitHub
commit 9fe1ecb7cc
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
  1. 10
      TNode/Editor/BaseViews/DataGraphView.cs
  2. 22
      TNode/Models/GraphData.cs

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

@ -1,18 +1,26 @@
using System;
using System.Collections.Generic;
using UnityEngine;
using Newtonsoft.Json;
namespace TNode.Models{
[Serializable]
public class GraphData:ScriptableObject{
[SerializeReference]
public List<NodeData> nodes;
public class GraphData:ScriptableObject,ISerializationCallbackReceiver{
[SerializeField]
public Dictionary<string,NodeData> NodeDictionary = new Dictionary<string,NodeData>();
[SerializeReference]
public List<NodeLink> nodeLinks;
[SerializeField]
[HideInInspector]
[SerializeReference]
public NodeData entryNode;
private string jsonObject;
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