InputVertexCacheWalker(TraversalCache cache, int slotIndex, TInputPort port, TraversalCache.Hierarchy hierarchy, bool traverseAllPorts) { m_Cache = cache; m_SlotIndex = slotIndex; m_Port = port; m_CurrentIndex = -1; m_TraverseAllPorts = traverseAllPorts; m_Mask = cache.GetMask(hierarchy); var slot = m_Cache.OrderedTraversal[slotIndex]; var count = 0; var parentTableIndex = slot.ParentTableIndex; for (var i = 0; i < slot.ParentCount; i++) { var cacheConn = m_Cache.ParentTable[parentTableIndex + i]; if ((m_TraverseAllPorts || cacheConn.InputPort.Equals(m_Port)) && (cacheConn.TraversalFlags & m_Mask) != 0) { count++; } } Count = count; }
public InputConnectionCacheWalker GetParentConnectionsByPort(TInputPort port, TraversalCache.Hierarchy hierarchy = TraversalCache.Hierarchy.Traversal) => new InputConnectionCacheWalker(m_Cache, m_SlotIndex, port, hierarchy);
internal InputVertexCacheWalker(TraversalCache cache, int slotIndex, TInputPort port, TraversalCache.Hierarchy hierarchy) : this(cache, slotIndex, port, hierarchy, false) { }
internal NodeEnumeratorByPort(ConnectionEnumerator parent, TInputPort filter) { m_Walker = parent; m_Filter = filter; }