From 5291ee074a70a8109de842dc54f07d78922cb2a8 Mon Sep 17 00:00:00 2001 From: taoria <445625470@qq.com> Date: Mon, 4 Jul 2022 21:30:23 +0800 Subject: [PATCH] 1.working on black board --- TNode/Editor/BaseViews/DataGraphView.cs | 7 +++++-- TNode/Editor/BaseViews/NodeView.cs | 2 ++ TNode/JsonSerialize/JsonSerializeTool.cs | 22 +++++++++++++++++----- TNode/JsonSerialize/Vector3Converter.cs | 1 - TNode/Models/BlackboardData.cs | 13 +++++++++++++ TNode/Models/BlackboardData.cs.meta | 3 +++ TNode/Models/GraphData.cs | 24 +++++++++++++++--------- TNode/Runtime/RuntimeGraph.cs | 1 - 8 files changed, 55 insertions(+), 18 deletions(-) create mode 100644 TNode/Models/BlackboardData.cs create mode 100644 TNode/Models/BlackboardData.cs.meta diff --git a/TNode/Editor/BaseViews/DataGraphView.cs b/TNode/Editor/BaseViews/DataGraphView.cs index 3a3845b..31c596b 100644 --- a/TNode/Editor/BaseViews/DataGraphView.cs +++ b/TNode/Editor/BaseViews/DataGraphView.cs @@ -201,9 +201,12 @@ namespace TNode.Editor.BaseViews{ var inputNodeView = _nodeDict[inputNode.id]; var outputNodeView = _nodeDict[outputNode.id]; Edge newEdge = new Edge(){ + input = inputNodeView.inputContainer.Q(edge.inPort.portName), output = outputNodeView.outputContainer.Q(edge.outPort.portName) }; + Debug.Log(edge.inPort.portName); + Debug.Log(edge.outPort.portName); newEdge.input?.Connect(newEdge); newEdge.output?.Connect(newEdge); AddElement(newEdge); @@ -296,11 +299,11 @@ namespace TNode.Editor.BaseViews{ var outputNodeData = outputNode.GetNodeData(); var newNodeLink = new NodeLink(new PortInfo(){ nodeDataId = inputNodeData.id, - portName = edge.input.name + portName = edge.input.portName, }, new PortInfo(){ nodeDataId = outputNodeData.id, - portName = edge.output.name + portName = edge.output.portName }); links.Add(newNodeLink); } diff --git a/TNode/Editor/BaseViews/NodeView.cs b/TNode/Editor/BaseViews/NodeView.cs index c2384a4..b5aca22 100644 --- a/TNode/Editor/BaseViews/NodeView.cs +++ b/TNode/Editor/BaseViews/NodeView.cs @@ -69,6 +69,7 @@ namespace TNode.Editor.BaseViews{ Port port = InstantiatePort(Orientation.Horizontal, Direction.Output,Port.Capacity.Multi,propertyInfo.PropertyType); this.outputContainer.Add(port); port.portName = propertyInfo.Name; + port.name = propertyInfo.Name; } } foreach (var propertyInfo in propertyInfos){ @@ -78,6 +79,7 @@ namespace TNode.Editor.BaseViews{ Port port = InstantiatePort(Orientation.Horizontal, Direction.Input,Port.Capacity.Multi,propertyInfo.PropertyType); this.inputContainer.Add(port); port.portName = propertyInfo.Name; + port.name = propertyInfo.Name; } } } diff --git a/TNode/JsonSerialize/JsonSerializeTool.cs b/TNode/JsonSerialize/JsonSerializeTool.cs index 47c6553..e886ccf 100644 --- a/TNode/JsonSerialize/JsonSerializeTool.cs +++ b/TNode/JsonSerialize/JsonSerializeTool.cs @@ -1,16 +1,28 @@ -using System.Collections.Generic; +using System; +using System.Collections.Generic; +using System.Linq; using Newtonsoft.Json; -using Newtonsoft.Json.Linq; +using Newtonsoft.Json.Serialization; + namespace TNode.JsonSerialize{ - public class JsonSerializeTool{ + public static class JsonSerializeTool{ + class WritablePropertiesOnlyResolver : DefaultContractResolver + { + protected override IList CreateProperties(Type type, MemberSerialization memberSerialization) + { + IList props = base.CreateProperties(type, memberSerialization); + return props.Where(p => p.Writable).ToList(); + } + } public static JsonSerializerSettings JsonSerializerSettings = new JsonSerializerSettings(){ ReferenceLoopHandling = ReferenceLoopHandling.Ignore, NullValueHandling = NullValueHandling.Ignore, DateFormatString = "yyyy-MM-dd HH:mm:ss", Converters = new List { new Vector3Converter() }, - TypeNameHandling = TypeNameHandling.Auto - + TypeNameHandling = TypeNameHandling.Auto, + ContractResolver = new WritablePropertiesOnlyResolver() + }; public static JsonSerializerSettings InternalJsonSerializerSettings = new JsonSerializerSettings(){ diff --git a/TNode/JsonSerialize/Vector3Converter.cs b/TNode/JsonSerialize/Vector3Converter.cs index 7484816..00d4f93 100644 --- a/TNode/JsonSerialize/Vector3Converter.cs +++ b/TNode/JsonSerialize/Vector3Converter.cs @@ -21,7 +21,6 @@ namespace TNode.JsonSerialize{ if (array != null) return new Vector3(array[0], array[1], array[2]); } - return default(Vector3); } diff --git a/TNode/Models/BlackboardData.cs b/TNode/Models/BlackboardData.cs new file mode 100644 index 0000000..f1ca512 --- /dev/null +++ b/TNode/Models/BlackboardData.cs @@ -0,0 +1,13 @@ +using System; +using System.Collections.Generic; +using UnityEngine; + +namespace TNode{ + [Serializable] + public class BlackboardData{ + public SortedList Behaviours; + public SortedList Floats; + public SortedList Ints; + public SortedList Strings; + } +} \ No newline at end of file diff --git a/TNode/Models/BlackboardData.cs.meta b/TNode/Models/BlackboardData.cs.meta new file mode 100644 index 0000000..6e52149 --- /dev/null +++ b/TNode/Models/BlackboardData.cs.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: 395a389740e542ea9930248876904aee +timeCreated: 1656940618 \ No newline at end of file diff --git a/TNode/Models/GraphData.cs b/TNode/Models/GraphData.cs index a6c5b5b..2d4d323 100644 --- a/TNode/Models/GraphData.cs +++ b/TNode/Models/GraphData.cs @@ -2,7 +2,9 @@ using System.Collections.Generic; using UnityEngine; using Newtonsoft.Json; +using TNode.Editor; using TNode.JsonSerialize; +using UnityEditor.Experimental.GraphView; using UnityEngine.Serialization; namespace TNode.Models{ @@ -10,23 +12,27 @@ namespace TNode.Models{ public class GraphData:ScriptableObject,ISerializationCallbackReceiver{ [SerializeField] public Dictionary NodeDictionary = new Dictionary(); - public List nodeLinks = new List(); - - [HideInInspector] + public List nodeLinks = new(); + public BlackboardData blackboardData = new(); + [TextArea(1,10)] [SerializeField] //[HideInInspector] private string jsonObject; - + [TextArea(1,10)] + [SerializeField] + private string jsonBlackboard; public void OnBeforeSerialize(){ - var serializedData = JsonConvert.SerializeObject(NodeDictionary,JsonSerializeTool.JsonSerializerSettings); - - jsonObject = serializedData; + jsonObject = JsonConvert.SerializeObject(NodeDictionary,JsonSerializeTool.JsonSerializerSettings); + jsonBlackboard = JsonConvert.SerializeObject(blackboardData,JsonSerializeTool.JsonSerializerSettings); } - public void OnAfterDeserialize(){ + //Deserialize node dictionary var deserializedData = JsonConvert.DeserializeObject>(jsonObject,JsonSerializeTool.JsonSerializerSettings); - var deserializedData2 = JsonUtility.FromJson>(jsonObject); NodeDictionary = deserializedData; + //Deserialize blackboard data + var deserializedBlackboard = JsonConvert.DeserializeObject(jsonBlackboard,JsonSerializeTool.JsonSerializerSettings); + blackboardData = deserializedBlackboard; + Debug.Log("hi"); } } diff --git a/TNode/Runtime/RuntimeGraph.cs b/TNode/Runtime/RuntimeGraph.cs index 9388f77..1a140b7 100644 --- a/TNode/Runtime/RuntimeGraph.cs +++ b/TNode/Runtime/RuntimeGraph.cs @@ -17,7 +17,6 @@ namespace TNode.Runtime{ public void StartProcessNode(ProcessingStrategy strategy, RuntimeNode entry){ - } }