public NodeLinkPort GetToPort() { if (!to || toField == null) { return(null); } return(new NodeLinkPort(to, NodeDataCache.GetLinkCacheInfo(to.GetType(), toField))); }
public NodeLinkPort GetFromPort() { if (!from || fromField == null) { return(null); } return(new NodeLinkPort(from, NodeDataCache.GetLinkCacheInfo(from.GetType(), fromField))); }
/// <summary> Set link fields to null where the link does not belong this node </summary> public void ClearLinksAssignments() { var linkPorts = NodeDataCache.GetLinks(GetType()).Select(x => new NodeLinkPort(this, x)); var allLinks = linkPorts.SelectMany(x => x.GetConnections().Select(y => Tuple.Create(x, y))); foreach (var link in allLinks) { link.Item1.Link.Disconnect(this, link.Item2); } }
/// <summary> Disconnect every link from this node </summary> public void ClearLinks() { var linkPorts = NodeDataCache.GetLinks(GetType()).Select(x => new NodeLinkPort(this, x)); var allLinks = linkPorts.SelectMany(x => x.GetConnections()); foreach (NodeLink link in allLinks) { if (link) { link.Destroy(); } } }
public void Destroy() { if (from) { NodeDataCache.GetLinkCacheInfo(from.GetType(), fromField)?.Disconnect(from, this); } if (to) { NodeDataCache.GetLinkCacheInfo(to.GetType(), toField)?.Disconnect(to, this); } DestroyImmediate(this, true); #if UNITY_EDITOR AssetDatabase.SaveAssets(); #endif }
/// <summary> Update static ports to reflect class fields. This happens automatically on enable. </summary> public void UpdateStaticPorts() { NodeDataCache.UpdatePorts(this, ports); }
protected void OnEnable() { NodeDataCache.UpdatePorts(this, ports); Init(); }