本文整理汇总了C++中AStarNode::GetParent方法的典型用法代码示例。如果您正苦于以下问题:C++ AStarNode::GetParent方法的具体用法?C++ AStarNode::GetParent怎么用?C++ AStarNode::GetParent使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类AStarNode
的用法示例。
在下文中一共展示了AStarNode::GetParent方法的2个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: ProcessPath
void AStar::ProcessPath()
{
// If the list is empty, there is no path so don't do anything
if(m_openList.empty() || m_goalFound)
{
return;
}
// Get the node with lowest F from the openList
AStarNode *currentNode = GetNextNode();
// Are we finished? Was the goal found?
if(currentNode->GetPosition() == m_goal)
{
// We're home! Fill the pathqueue
AStarNode *getPath;
for(getPath = currentNode; getPath != NULL; getPath = getPath->GetParent())
{
m_path.push_back(sf::Vector2f(getPath->GetPosition()));
}
// We don't want to target the starting node so delete it
m_path.pop_back();
m_goalFound = true;
return;
}
else
{
// Not finished yet, continue the search
// Get adjacent nodes to the currentNode
std::vector<AStarNode> nodeAdjacent = currentNode->GetAdjacentNodes();
// Process every adjacent node
for(unsigned int i = 0; i < nodeAdjacent.size(); i++)
{
ExamineNode(nodeAdjacent[i]);
}
}
}
示例2: ExamineNode
void AStar::ExamineNode(AStarNode &node)
{
// Check if node should be ignored, updated or pushed into openList
// Is the node walkable?
if(!(m_nodeMap.isWalkable(node.GetPosition().x, node.GetPosition().y)))
{
return;
}
// Check the closedList
for(unsigned int i = 0; i < m_closedList.size(); i++)
{
if(m_closedList[i]->GetPosition() == node.GetPosition())
{
// Found in the closed list so abort operation
return;
}
}
// Check the openList
for(unsigned int i = 0; i< m_openList.size(); i++){
if(m_openList[i]->GetPosition() == node.GetPosition()){
// Found in the openList, check values if it is to be updated
if(m_openList[i]->GetG() > node.GetG()){
// The G value will be shorter via the current node so update
m_openList[i]->SetG(node.GetG());
// Change the node to point to our current node
m_openList[i]->SetParent(node.GetParent());
}
// It was found and the operation was complete
return;
}
}
// If it has come to this point the node was not found in the list so push it into the openList
m_openList.push_back(new AStarNode(node));
}