Exemplo n.º 1
0
        public void Push(NewPathFinder.CostNode item)
        {
            int num = innerList.Count;

            innerList.Add(item);
            gridIndexToQueueIndex[item.gridIndex] = num;
            CascadeUp(num);
        }
Exemplo n.º 2
0
        public void PushOrUpdate(NewPathFinder.CostNode item)
        {
            var queueIndex = gridIndexToQueueIndex[item.gridIndex];

            if (queueIndex < innerList.Count && innerList[queueIndex].gridIndex == item.gridIndex)
            {
                var oldCost = innerList[queueIndex].totalCostEstimate;
                innerList[queueIndex] = item;
                if (oldCost < item.totalCostEstimate)
                {
                    CascadeDown(queueIndex);
                }
                else
                {
                    CascadeUp(queueIndex);
                }
            }
            else
            {
                Push(item);
            }
        }