| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364 | using UnityEditor.Experimental.GraphView;using UnityEngine.UIElements;using UnityEngine;namespace GraphProcessor{	public class EdgeView : Edge	{		public bool					isConnected = false;		public SerializableEdge		serializedEdge { get { return userData as SerializableEdge; } }		readonly string				edgeStyle = "GraphProcessorStyles/EdgeView";		protected BaseGraphView		owner => ((input ?? output) as PortView).owner.owner;		public EdgeView() : base()		{			styleSheets.Add(Resources.Load<StyleSheet>(edgeStyle));			RegisterCallback<MouseDownEvent>(OnMouseDown);		}        public override void OnPortChanged(bool isInput)		{			base.OnPortChanged(isInput);			UpdateEdgeSize();		}		public void UpdateEdgeSize()		{			if (input == null && output == null)				return;			PortData inputPortData = (input as PortView)?.portData;			PortData outputPortData = (output as PortView)?.portData;			for (int i = 1; i < 20; i++)				RemoveFromClassList($"edge_{i}");			int maxPortSize = Mathf.Max(inputPortData?.sizeInPixel ?? 0, outputPortData?.sizeInPixel ?? 0);			if (maxPortSize > 0)				AddToClassList($"edge_{Mathf.Max(1, maxPortSize - 6)}");		}		protected override void OnCustomStyleResolved(ICustomStyle styles)		{			base.OnCustomStyleResolved(styles);			UpdateEdgeControl();		}		void OnMouseDown(MouseDownEvent e)		{			if (e.clickCount == 2)			{				// Empirical offset:				var position = e.mousePosition;                position += new Vector2(-10f, -28);                Vector2 mousePos = owner.ChangeCoordinatesTo(owner.contentViewContainer, position);				owner.AddRelayNode(input as PortView, output as PortView, mousePos);			}		}	}}
 |