public static Node GetNthConnection(this Database.InputTopologyEnumerable e, InputPort port, int index) { var currIndex = 0; foreach (var filtered in e[port]) { if (currIndex == index) { return(filtered); } currIndex++; } throw new IndexOutOfRangeException("Index of connection or port does not exist"); }
public void CanDisconnectAllTopologyNodes() { using (var topoDB = new TopologyTestDatabase(Allocator.Persistent)) { var a = topoDB.CreateNode(); var b = topoDB.CreateNode(); var c = topoDB.CreateNode(); for (int i = 0; i < 3; ++i) { OutputPort outPort = k_OutputPorts[i]; InputPort inPort = k_InputPorts[i]; topoDB.Connect(b, outPort, a, inPort); topoDB.Connect(c, outPort, b, inPort); Assert.AreEqual(0, topoDB.GetOutputs(a)[outPort].Count()); Assert.AreEqual(1, topoDB.GetInputs(a)[inPort].Count()); Assert.AreEqual(1, topoDB.GetOutputs(b)[outPort].Count()); Assert.AreEqual(1, topoDB.GetInputs(b)[inPort].Count()); Assert.AreEqual(1, topoDB.GetOutputs(c)[outPort].Count()); Assert.AreEqual(0, topoDB.GetInputs(c)[inPort].Count()); } topoDB.DisconnectAll(b); foreach (var node in new[] { a, b, c }) { var inputs = topoDB.GetInputs(node); var inputPortCount = inputs.GetEnumerator().Count(); for (int i = 0; i < inputPortCount; ++i) { Assert.AreEqual(0, inputs[k_InputPorts[i]].Count()); } var outputs = topoDB.GetOutputs(node); var outputPortCount = outputs.GetEnumerator().Count(); for (int i = 0; i < outputPortCount; ++i) { Assert.AreEqual(0, outputs[k_OutputPorts[i]].Count()); } } } }
public bool ConnectionExists(Node source, OutputPort sourcePort, Node dest, InputPort destinationPort) => Connections.ConnectionExists(ref Nodes, source, sourcePort, dest, destinationPort);
public Topology.Connection FindConnection(Node source, OutputPort sourcePort, Node dest, InputPort destinationPort) => Connections.FindConnection(ref Nodes, source, sourcePort, dest, destinationPort);
public void Disconnect(Node source, OutputPort sourcePort, Node dest, InputPort destinationPort) => Connections.Disconnect(ref Nodes, source, sourcePort, dest, destinationPort);
public void Connect(Node source, OutputPort sourcePort, Node dest, InputPort destinationPort) => Connect(k_DefaultTraversalFlags, source, sourcePort, dest, destinationPort);
public void Connect(uint traversalFlags, Node source, OutputPort sourcePort, Node dest, InputPort destinationPort) => Connections.Connect(ref Nodes, traversalFlags, source, sourcePort, dest, destinationPort);