public void Push(NewPathFinder.CostNode item) { int num = innerList.Count; innerList.Add(item); gridIndexToQueueIndex[item.gridIndex] = num; CascadeUp(num); }
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); } }