Unity graph tool solution based on different implementation now focused on Unity.Experimental.Graphview
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

65 lines
2.2 KiB

3 years ago
using System;
using System.Collections.Generic;
using UnityEngine;
using Newtonsoft.Json;
using TNode.JsonSerialize;
using UnityEngine.Serialization;
3 years ago
3 years ago
namespace TNode.Models{
3 years ago
[Serializable]
public class GraphData:ScriptableObject,ISerializationCallbackReceiver{
public Dictionary<string,NodeData> NodeDictionary = new Dictionary<string,NodeData>();
[SerializeField]
protected List<NodeLink> nodeLinks;
[TextArea(1,10)]
[SerializeField]
//[HideInInspector]
private string jsonNodeData;
[TextArea(1,10)]
[SerializeField]
private string jsonBlackboard;
public BlackboardData blackboardData;
public List<NodeLink> NodeLinks{
get{
return nodeLinks ??= new List<NodeLink>();
}
set => nodeLinks = value;
}
public void OnBeforeSerialize(){
if (nodeLinks != null){
jsonNodeData = JsonConvert.SerializeObject(NodeDictionary,JsonSerializeTool.JsonSerializerSettings);
}
if (jsonBlackboard != null){
jsonBlackboard = JsonConvert.SerializeObject(blackboardData,typeof(object),JsonSerializeTool.JsonSerializerSettings);
}
}
public void OnAfterDeserialize(){
//Deserialize node dictionary
var deserializedData = JsonConvert.DeserializeObject<Dictionary<string,NodeData>>(jsonNodeData,JsonSerializeTool.JsonSerializerSettings);
NodeDictionary = deserializedData;
//Deserialize blackboard data
// var deserializedBlackboard =
// JsonConvert.DeserializeObject(jsonBlackboard,JsonSerializeTool.JsonSerializerSettings);
// blackboardData = deserializedBlackboard as BlackboardData;
// Debug.Log(deserializedBlackboard);
}
public void OnEnable(){
var deserializedBlackboard =
JsonConvert.DeserializeObject(jsonBlackboard,JsonSerializeTool.JsonSerializerSettings);
blackboardData = deserializedBlackboard as BlackboardData;
Debug.Log(deserializedBlackboard);
}
3 years ago
}
}