1.working on black board

main
taoria 3 years ago
parent 7767e1cb32
commit 5291ee074a
  1. 7
      TNode/Editor/BaseViews/DataGraphView.cs
  2. 2
      TNode/Editor/BaseViews/NodeView.cs
  3. 20
      TNode/JsonSerialize/JsonSerializeTool.cs
  4. 1
      TNode/JsonSerialize/Vector3Converter.cs
  5. 13
      TNode/Models/BlackboardData.cs
  6. 3
      TNode/Models/BlackboardData.cs.meta
  7. 24
      TNode/Models/GraphData.cs
  8. 1
      TNode/Runtime/RuntimeGraph.cs

@ -201,9 +201,12 @@ namespace TNode.Editor.BaseViews{
var inputNodeView = _nodeDict[inputNode.id]; var inputNodeView = _nodeDict[inputNode.id];
var outputNodeView = _nodeDict[outputNode.id]; var outputNodeView = _nodeDict[outputNode.id];
Edge newEdge = new Edge(){ Edge newEdge = new Edge(){
input = inputNodeView.inputContainer.Q<Port>(edge.inPort.portName), input = inputNodeView.inputContainer.Q<Port>(edge.inPort.portName),
output = outputNodeView.outputContainer.Q<Port>(edge.outPort.portName) output = outputNodeView.outputContainer.Q<Port>(edge.outPort.portName)
}; };
Debug.Log(edge.inPort.portName);
Debug.Log(edge.outPort.portName);
newEdge.input?.Connect(newEdge); newEdge.input?.Connect(newEdge);
newEdge.output?.Connect(newEdge); newEdge.output?.Connect(newEdge);
AddElement(newEdge); AddElement(newEdge);
@ -296,11 +299,11 @@ namespace TNode.Editor.BaseViews{
var outputNodeData = outputNode.GetNodeData(); var outputNodeData = outputNode.GetNodeData();
var newNodeLink = new NodeLink(new PortInfo(){ var newNodeLink = new NodeLink(new PortInfo(){
nodeDataId = inputNodeData.id, nodeDataId = inputNodeData.id,
portName = edge.input.name portName = edge.input.portName,
}, new PortInfo(){ }, new PortInfo(){
nodeDataId = outputNodeData.id, nodeDataId = outputNodeData.id,
portName = edge.output.name portName = edge.output.portName
}); });
links.Add(newNodeLink); links.Add(newNodeLink);
} }

@ -69,6 +69,7 @@ namespace TNode.Editor.BaseViews{
Port port = InstantiatePort(Orientation.Horizontal, Direction.Output,Port.Capacity.Multi,propertyInfo.PropertyType); Port port = InstantiatePort(Orientation.Horizontal, Direction.Output,Port.Capacity.Multi,propertyInfo.PropertyType);
this.outputContainer.Add(port); this.outputContainer.Add(port);
port.portName = propertyInfo.Name; port.portName = propertyInfo.Name;
port.name = propertyInfo.Name;
} }
} }
foreach (var propertyInfo in propertyInfos){ 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); Port port = InstantiatePort(Orientation.Horizontal, Direction.Input,Port.Capacity.Multi,propertyInfo.PropertyType);
this.inputContainer.Add(port); this.inputContainer.Add(port);
port.portName = propertyInfo.Name; port.portName = propertyInfo.Name;
port.name = propertyInfo.Name;
} }
} }
} }

@ -1,15 +1,27 @@
using System.Collections.Generic; using System;
using System.Collections.Generic;
using System.Linq;
using Newtonsoft.Json; using Newtonsoft.Json;
using Newtonsoft.Json.Linq; using Newtonsoft.Json.Serialization;
namespace TNode.JsonSerialize{ namespace TNode.JsonSerialize{
public class JsonSerializeTool{ public static class JsonSerializeTool{
class WritablePropertiesOnlyResolver : DefaultContractResolver
{
protected override IList<JsonProperty> CreateProperties(Type type, MemberSerialization memberSerialization)
{
IList<JsonProperty> props = base.CreateProperties(type, memberSerialization);
return props.Where(p => p.Writable).ToList();
}
}
public static JsonSerializerSettings JsonSerializerSettings = new JsonSerializerSettings(){ public static JsonSerializerSettings JsonSerializerSettings = new JsonSerializerSettings(){
ReferenceLoopHandling = ReferenceLoopHandling.Ignore, ReferenceLoopHandling = ReferenceLoopHandling.Ignore,
NullValueHandling = NullValueHandling.Ignore, NullValueHandling = NullValueHandling.Ignore,
DateFormatString = "yyyy-MM-dd HH:mm:ss", DateFormatString = "yyyy-MM-dd HH:mm:ss",
Converters = new List<JsonConverter> { new Vector3Converter() }, Converters = new List<JsonConverter> { new Vector3Converter() },
TypeNameHandling = TypeNameHandling.Auto TypeNameHandling = TypeNameHandling.Auto,
ContractResolver = new WritablePropertiesOnlyResolver()
}; };

@ -21,7 +21,6 @@ namespace TNode.JsonSerialize{
if (array != null) return new Vector3(array[0], array[1], array[2]); if (array != null) return new Vector3(array[0], array[1], array[2]);
} }
return default(Vector3); return default(Vector3);
} }

@ -0,0 +1,13 @@
using System;
using System.Collections.Generic;
using UnityEngine;
namespace TNode{
[Serializable]
public class BlackboardData{
public SortedList<string, MonoBehaviour> Behaviours;
public SortedList<string, float> Floats;
public SortedList<string, int> Ints;
public SortedList<string, string> Strings;
}
}

@ -0,0 +1,3 @@
fileFormatVersion: 2
guid: 395a389740e542ea9930248876904aee
timeCreated: 1656940618

@ -2,7 +2,9 @@
using System.Collections.Generic; using System.Collections.Generic;
using UnityEngine; using UnityEngine;
using Newtonsoft.Json; using Newtonsoft.Json;
using TNode.Editor;
using TNode.JsonSerialize; using TNode.JsonSerialize;
using UnityEditor.Experimental.GraphView;
using UnityEngine.Serialization; using UnityEngine.Serialization;
namespace TNode.Models{ namespace TNode.Models{
@ -10,23 +12,27 @@ namespace TNode.Models{
public class GraphData:ScriptableObject,ISerializationCallbackReceiver{ public class GraphData:ScriptableObject,ISerializationCallbackReceiver{
[SerializeField] [SerializeField]
public Dictionary<string,NodeData> NodeDictionary = new Dictionary<string,NodeData>(); public Dictionary<string,NodeData> NodeDictionary = new Dictionary<string,NodeData>();
public List<NodeLink> nodeLinks = new List<NodeLink>(); public List<NodeLink> nodeLinks = new();
public BlackboardData blackboardData = new();
[HideInInspector] [TextArea(1,10)]
[SerializeField] [SerializeField]
//[HideInInspector] //[HideInInspector]
private string jsonObject; private string jsonObject;
[TextArea(1,10)]
[SerializeField]
private string jsonBlackboard;
public void OnBeforeSerialize(){ public void OnBeforeSerialize(){
var serializedData = JsonConvert.SerializeObject(NodeDictionary,JsonSerializeTool.JsonSerializerSettings); jsonObject = JsonConvert.SerializeObject(NodeDictionary,JsonSerializeTool.JsonSerializerSettings);
jsonBlackboard = JsonConvert.SerializeObject(blackboardData,JsonSerializeTool.JsonSerializerSettings);
jsonObject = serializedData;
} }
public void OnAfterDeserialize(){ public void OnAfterDeserialize(){
//Deserialize node dictionary
var deserializedData = JsonConvert.DeserializeObject<Dictionary<string,NodeData>>(jsonObject,JsonSerializeTool.JsonSerializerSettings); var deserializedData = JsonConvert.DeserializeObject<Dictionary<string,NodeData>>(jsonObject,JsonSerializeTool.JsonSerializerSettings);
var deserializedData2 = JsonUtility.FromJson<Dictionary<string,NodeData>>(jsonObject);
NodeDictionary = deserializedData; NodeDictionary = deserializedData;
//Deserialize blackboard data
var deserializedBlackboard = JsonConvert.DeserializeObject<BlackboardData>(jsonBlackboard,JsonSerializeTool.JsonSerializerSettings);
blackboardData = deserializedBlackboard;
Debug.Log("hi"); Debug.Log("hi");
} }
} }

@ -17,7 +17,6 @@ namespace TNode.Runtime{
public void StartProcessNode(ProcessingStrategy strategy, RuntimeNode entry){ public void StartProcessNode(ProcessingStrategy strategy, RuntimeNode entry){
} }
} }

Loading…
Cancel
Save