| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687 | 
							- using System.Collections;
 
- using System.Collections.Generic;
 
- using UnityEngine;
 
- namespace GraphProcessor
 
- {
 
- 	[System.Serializable]
 
- 	public class SerializableEdge : ISerializationCallbackReceiver
 
- 	{
 
- 		public string	GUID;
 
- 		[SerializeField]
 
- 		BaseGraph		owner;
 
- 		[SerializeField]
 
- 		string			inputNodeGUID;
 
- 		[SerializeField]
 
- 		string			outputNodeGUID;
 
- 		[System.NonSerialized]
 
- 		public BaseNode	inputNode;
 
- 		[System.NonSerialized]
 
- 		public NodePort	inputPort;
 
- 		[System.NonSerialized]
 
- 		public NodePort outputPort;
 
- 		//temporary object used to send port to port data when a custom input/output function is used.
 
- 		[System.NonSerialized]
 
- 		public object	passThroughBuffer;
 
- 		[System.NonSerialized]
 
- 		public BaseNode	outputNode;
 
- 		public string	inputFieldName;
 
- 		public string	outputFieldName;
 
- 		// Use to store the id of the field that generate multiple ports
 
- 		public string	inputPortIdentifier;
 
- 		public string	outputPortIdentifier;
 
- 		public SerializableEdge() {}
 
- 		public static SerializableEdge CreateNewEdge(BaseGraph graph, NodePort inputPort, NodePort outputPort)
 
- 		{
 
- 			SerializableEdge	edge = new SerializableEdge();
 
- 			edge.owner = graph;
 
- 			edge.GUID = System.Guid.NewGuid().ToString();
 
- 			edge.inputNode = inputPort.owner;
 
- 			edge.inputFieldName = inputPort.fieldName;
 
- 			edge.outputNode = outputPort.owner;
 
- 			edge.outputFieldName = outputPort.fieldName;
 
- 			edge.inputPort = inputPort;
 
- 			edge.outputPort = outputPort;
 
- 			edge.inputPortIdentifier = inputPort.portData.identifier;
 
- 			edge.outputPortIdentifier = outputPort.portData.identifier;
 
- 			return edge;
 
- 		}
 
- 		public void OnBeforeSerialize()
 
- 		{
 
- 			if (outputNode == null || inputNode == null)
 
- 				return;
 
- 			outputNodeGUID = outputNode.GUID;
 
- 			inputNodeGUID = inputNode.GUID;
 
- 		}
 
- 		public void OnAfterDeserialize() {}
 
- 		//here our owner have been deserialized
 
- 		public void Deserialize()
 
- 		{
 
- 			if (!owner.nodesPerGUID.ContainsKey(outputNodeGUID) || !owner.nodesPerGUID.ContainsKey(inputNodeGUID))
 
- 				return ;
 
- 			outputNode = owner.nodesPerGUID[outputNodeGUID];
 
- 			inputNode = owner.nodesPerGUID[inputNodeGUID];
 
- 			inputPort = inputNode.GetPort(inputFieldName, inputPortIdentifier);
 
- 			outputPort = outputNode.GetPort(outputFieldName, outputPortIdentifier);
 
- 		}
 
- 		public override string ToString() => $"{outputNode.name}:{outputPort.fieldName} -> {inputNode.name}:{inputPort.fieldName}";
 
- 	}
 
- }
 
 
  |