addNeighborNodeInOpenXy method
添加一个邻结点到open表
Implementation
void addNeighborNodeInOpenXy(DFAStarMap mapInfo, DFAStarNode current, int x, int y, int value) {
if (canAddNodeToOpen(mapInfo, x, y)) {
DFAStarNode end = mapInfo.end;
DFTilePosition position = DFTilePosition(x, y);
int G = current.G + value; // 计算邻结点的G值
DFAStarNode? child = findNodeInOpen(position);
if (child == null) {
int H = calcH(end.position!, position); // 计算H值
if (isEndNode(end.position!, position)) {
child = end;
child.parent = current;
child.G = G;
child.H = H;
} else {
child = DFAStarNode.newNode(position, current, G, H);
}
_openList.add(child);
_openList.sort((a, b) => a.compareTo(b));
} else if (child.G > G) {
child.G = G;
child.parent = current;
_openList.add(child);
_openList.sort((a, b) => a.compareTo(b));
}
}
}