예제 #1
0
    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]);
    }
예제 #2
0
    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]);
        }
    }