public void SetActiveItem(LinkItem item, bool detach) { this.pickedUpItem = item; ///如果目标已经被使用,阻止和其他元素断开 if (item.Used) { List <LinkPort> disconnected = new List <LinkPort>(); LinkPort[] connectedPort = item.GetLinkedPorts(); if (detach) { for (int i = 0; i < connectedPort.Length; i++) { LinkPort port = connectedPort[i]; LinkPort otherPort = port.ConnectedNode; LinkUtil.DetachNodes(port, otherPort); disconnected.Add(port); disconnected.Add(otherPort); } if (onDisconnected != null) { onDisconnected.Invoke(disconnected.ToArray()); } } } }
public override void UnDoChanges(UnityEngine.Object target) { base.UnDoChanges(target); mousePosCatch = transform.position = startPos; transform.rotation = startRot; foreach (var item in ChildNodes) { LinkUtil.DetachNodes(item, item.ConnectedNode); } }