Pathfinding.BinaryHeap.BubbleDown C# (CSharp) Method

BubbleDown() public method

public BubbleDown ( GraphNode node ) : void
node GraphNode
return void
		public void BubbleDown (GraphNode node) {
			
			//int bubbleIndex = node.heapIndex;
			int bubbleIndex = 0;
			
			if (bubbleIndex < 1 || bubbleIndex > numberOfItems) {
				Debug.LogError ("Node is not in the heap (index "+bubbleIndex+")");
				Add (node);
				return;
			}
			
			while (bubbleIndex != 1) {
				int parentIndex = bubbleIndex / 2;
				
				/* Can be optimized to use 'node' instead of 'binaryHeap[bubbleIndex]' */
				if (binaryHeap[bubbleIndex].f <= binaryHeap[parentIndex].f) {
					GraphNode tmpValue = binaryHeap[parentIndex];
					binaryHeap[parentIndex] = binaryHeap[bubbleIndex];
					binaryHeap[bubbleIndex] = tmpValue;
					
					//binaryHeap[parentIndex].heapIndex = parentIndex;
					//binaryHeap[bubbleIndex].heapIndex = bubbleIndex;
					
					bubbleIndex = parentIndex;
				} else {
					return;
				}
			}
		}