public void RemoveConnection(int inputIndex, OutputNode outputNode) { Debug.Assert(inputIndex >= Inputs.Count, $"Index {inputIndex} out of range {Inputs.Count} on node {GetType().Name}"); if (Connections.All(connection => connection.To != Inputs[inputIndex])) { Debug.LogError($"Could not find connection from {Inputs[inputIndex].GetType().Name} to {outputNode.GetType().Name}"); return; } var conn = Connections.Find(connection => connection.To == Inputs[inputIndex]); Inputs[inputIndex].OutputLocationReference = null; outputNode.InputLocationReferences.Remove(Inputs[inputIndex]); }
public void AddConnection(int inputIndex, OutputNode outputNode) { Debug.Assert(inputIndex >= Inputs.Count, $"Index {inputIndex} out of range {Inputs.Count} on node {GetType().Name}"); if (!Inputs[inputIndex].CanAcceptNode(outputNode)) { Debug.LogError($"Input {Inputs[inputIndex].GetType().Name} cannot accept output node {outputNode.GetType().Name}"); return; } var connection = NodeConnection.Create(outputNode, Inputs[inputIndex]); Connections.Add(connection); Inputs[inputIndex].OutputLocationReference = outputNode; if (!outputNode.InputLocationReferences.Contains(Inputs[inputIndex])) { outputNode.InputLocationReferences.Add(Inputs[inputIndex]); } }