void PathGenerator::addToOpenNode(int x, int y, adjType adjtype, TileNode* parent) { if (x < 0 || y < 0) { return; } if (!canPass(x, y)) { return; } TileNode* node = _nodes[x][y]; if (inPassedNodes(node)) { return; } else if (!inOpenNodes(node)) { _opened_nodes.push_back(node); int incf; if (adjtype == Straight) incf = 10; else incf = 14; node->setG(parent->getG() + incf); node->setH(descarteDistance(Point(node->getX(), node->getY()), _end) * 10); node->setF(node->getG() + node->getH()); node->setParent(parent); } }
void PathGenerator::resetTileNodes() { for (int i = 0; i < _map_width; i++) { for (int j = 0; j < _map_height; j++) { TileNode* node = _nodes[i][j]; node->setF(0); node->setG(0); node->setH(0); node->setX(i); node->setY(j); node->setParent(NULL); } } _opened_nodes.clear(); _passed_nodes.clear(); }