void RemoveFromOpenList(CAStarNode pNodeToRemove) { CAStarNode pParentNode = m_OpenNodes; CAStarNode pNodeToCheck = m_OpenNodes.GetpNext(); while (pNodeToCheck != null) { if (pNodeToRemove == pNodeToCheck) { pParentNode.SetpNext(pNodeToCheck.GetpNext()); pNodeToCheck.SetpNext(null); return; } pParentNode = pNodeToCheck; pNodeToCheck = pNodeToCheck.GetpNext(); } //assert(0); // why are trying to remove an item that is not in the list }
CAStarNode FindInClosedList(uint WayPointIndex) { CAStarNode pNodeToCheck = m_ClosedNodes.GetpNext(); while (pNodeToCheck != null) { if (pNodeToCheck.GetCurWayPointIndex() == WayPointIndex) { return(pNodeToCheck); } pNodeToCheck = pNodeToCheck.GetpNext(); } return(null); }
CAStarNode FindInOpenList(uint WayPointIndex) { CAStarNode pNodeToCheck = m_OpenNodes.GetpNext(); while (pNodeToCheck != nul) { l { if (pNodeToCheck.GetCurWayPointIndex() == WayPointIndex) { return(pNodeToCheck); } pNodeToCheck = pNodeToCheck.GetpNext(); } } return(null); }
void AddToOpenList(CAStarNode pNewNode) { CAStarNode pParentNode = m_OpenNodes; CAStarNode pNodeToCheck = m_OpenNodes.GetpNext(); while (pNodeToCheck != null) { if (pNewNode.GetTotalCostF() < pNodeToCheck.GetTotalCostF()) { pParentNode.SetpNext(pNewNode); pNewNode.SetpNext(pNodeToCheck); return; } pParentNode = pNodeToCheck; pNodeToCheck = pNodeToCheck.GetpNext(); } // it is the worst one in the list put it at the end //assert(pParentNode.GetpNext() == null); pParentNode.SetpNext(pNewNode); //assert(pNewNode.GetpNext() == null); }
void ReturnAllNodesToUnusedList(CAStarNode pParentOfUnusedNode) { //AssertNoLostNodes(); CAStarNode pFirstNodeToReturn = pParentOfUnusedNode.GetpNext(); if (pFirstNodeToReturn != null) { CAStarNode pLastNodeToReturn = pFirstNodeToReturn; // if the unused list has stuff in it already if (m_UnusedNodes.GetpNext()) { // find the last node we want to return while (pLastNodeToReturn.GetpNext()) { pLastNodeToReturn = pLastNodeToReturn.GetpNext(); } // set the last node to return next to the first node of the unused list pLastNodeToReturn.SetpNext(m_UnusedNodes.GetpNext()); // set the first node of the unused list to the first node to return m_UnusedNodes.SetpNext(pFirstNodeToReturn); // make sure the list we took them from doesn't still have them pParentOfUnusedNode.SetpNext(null); //AssertNoLostNodes; } else { // just put it on the unused list m_UnusedNodes.SetpNext(pFirstNodeToReturn); pParentOfUnusedNode.SetpNext(null); //AssertNoLostNodes; } } //AssertNoLostNodes; }