Beispiel #1
0
 internal OutputVertexCacheWalker(TraversalCache cache, int slotIndex, TOutputPort port, TraversalCache.Hierarchy hierarchy)
     : this(cache, slotIndex, port, hierarchy, false)
 {
 }
Beispiel #2
0
            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;
            }
Beispiel #3
0
 internal OutputVertexCacheWalker(TraversalCache cache, int slotIndex, TraversalCache.Hierarchy hierarchy)
     : this(cache, slotIndex, default, hierarchy, true)
 {
 }