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 outputNodeView = _nodeDict[outputNode.id];
Edge newEdge = new Edge(){
input = inputNodeView.inputContainer.Q<Port>(edge.inPort.portName),
output = outputNodeView.outputContainer.Q<Port>(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);
}

@ -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;
}
}
}

@ -1,15 +1,27 @@
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<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(){
ReferenceLoopHandling = ReferenceLoopHandling.Ignore,
NullValueHandling = NullValueHandling.Ignore,
DateFormatString = "yyyy-MM-dd HH:mm:ss",
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]);
}
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 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<string,NodeData> NodeDictionary = new Dictionary<string,NodeData>();
public List<NodeLink> nodeLinks = new List<NodeLink>();
[HideInInspector]
public List<NodeLink> 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<Dictionary<string,NodeData>>(jsonObject,JsonSerializeTool.JsonSerializerSettings);
var deserializedData2 = JsonUtility.FromJson<Dictionary<string,NodeData>>(jsonObject);
NodeDictionary = deserializedData;
//Deserialize blackboard data
var deserializedBlackboard = JsonConvert.DeserializeObject<BlackboardData>(jsonBlackboard,JsonSerializeTool.JsonSerializerSettings);
blackboardData = deserializedBlackboard;
Debug.Log("hi");
}
}

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

Loading…
Cancel
Save