public ActionGraphPresenter(ActionGraphView view) { View = view; OnConnectNodesQueue.Reassign((data => { // if (!data.Connection.From.Owner.connectedTo.Any(c => c.Target.Equals(data.Connection.Target))) { var asParent = data.Connection.From.Owner as ActionGraphEditorNode; var asChild = data.Connection.Target.Owner as ActionGraphEditorNode; if (asParent != null && asChild != null && asChild.ActionNode is ActionGraphNode asActionNode) { Undo.RecordObject(asParent.ActionNode, $"Connect nodes {asActionNode.name} to {asParent.ActionNode.name}"); GraphNode.FinishConnection(data.Connection); return(true); } } return(false); })); }
public ActionGraphPresenter(ActionGraphView view) { View = view; OnConnectNodesQueue.Reassign((data => { if (!data.Child || (!data.Parent && data.InputIndex == -1)) { return(false); } if (data.InputIndex == -1) { if (!data.Parent.Connections.Contains(data.Child)) { Undo.RecordObject(data.Parent, $"Connect nodes {data.Child.name} to {data.Parent.name}"); data.Parent.Connections.Add(data.Child); } } else { if (!Asset.Inputs[data.InputIndex].Nodes.Contains(data.Child)) { Undo.RecordObject(Asset, $"Connect node {data.Child.name} to input {data.InputIndex}"); Asset.Inputs[data.InputIndex].Nodes.Add(data.Child); } } return(true); })); }