// Enumerate all links from the outlets and cache them. void CacheLinks(Patch patch) { _cachedLinks = new List <NodeLink>(); foreach (var outlet in _outlets) { // Scan all the events from the outlet. var boundEvent = outlet.boundEvent; var targetCount = boundEvent.GetPersistentEventCount(); for (var i = 0; i < targetCount; i++) { var target = boundEvent.GetPersistentTarget(i); // Ignore it if it's a null event or the target is not a node. if (target == null || !(target is Wiring.NodeBase)) { continue; } // Try to retrieve the linked inlet. var targetNode = patch.GetNodeOfInstance((Wiring.NodeBase)target); var methodName = boundEvent.GetPersistentMethodName(i); var inlet = targetNode.GetInletWithName(methodName); // Cache it if it's a valid link. if (targetNode != null && inlet != null) { _cachedLinks.Add(new NodeLink(this, outlet, targetNode, inlet)); } } } }
// Enumerate all links from the outlets and cache them. void CacheLinks(Patch patch) { _cachedLinks = new List<NodeLink>(); foreach (var outlet in _outlets) { // Scan all the events from the outlet. var boundEvent = outlet.boundEvent; var targetCount = boundEvent.GetPersistentEventCount(); for (var i = 0; i < targetCount; i++) { var target = boundEvent.GetPersistentTarget(i); // Ignore it if it's a null event or the target is not a node. if (target == null || !(target is Wiring.NodeBase)) continue; // Try to retrieve the linked inlet. var targetNode = patch.GetNodeOfInstance((Wiring.NodeBase)target); var methodName = boundEvent.GetPersistentMethodName(i); var inlet = targetNode.GetInletWithName(methodName); // Cache it if it's a valid link. if (targetNode != null && inlet != null) _cachedLinks.Add(new NodeLink(this, outlet, targetNode, inlet)); } } }