internal OutputVertexCacheWalker(TraversalCache cache, int slotIndex, TOutputPort port, TraversalCache.Hierarchy hierarchy) : this(cache, slotIndex, port, hierarchy, false) { }
OutputVertexCacheWalker(TraversalCache cache, int slotIndex, TOutputPort port, TraversalCache.Hierarchy hierarchy, bool traverseAllPorts) { m_Cache = cache; m_SlotIndex = slotIndex; m_Port = port; m_CurrentIndex = -1; var slot = m_Cache.OrderedTraversal[slotIndex]; m_TraverseAllPorts = traverseAllPorts; m_Mask = cache.GetMask(hierarchy); var count = 0; var childTableIndex = slot.ChildTableIndex; for (var i = 0; i < slot.ChildCount; i++) { var cacheConn = m_Cache.ChildTable[childTableIndex + i]; if ((m_TraverseAllPorts || cacheConn.OutputPort.Equals(m_Port)) && (cacheConn.TraversalFlags & m_Mask) != 0) { count++; } } Count = count; }
internal OutputVertexCacheWalker(TraversalCache cache, int slotIndex, TraversalCache.Hierarchy hierarchy) : this(cache, slotIndex, default, hierarchy, true) { }