RTS2D
|
Contem rotinas relacionadas a busca de caminho. Mais...
#include <Pathfinding.h>
Métodos Públicos | |
Pathfinding (Graph *graph) | |
Construtor. | |
virtual | ~Pathfinding () |
Destrutor. | |
std::vector< std::pair< float, float > > | bfsPathfinding (float sx, float sy, float tx, float ty) |
Busca caminho do ponto (sx,sy) ao ponto (tx,ty) usando o algoritmo BFS. | |
std::vector< std::pair< float, float > > | astarPathfinding (float sx, float sy, float tx, float ty) |
Busca caminho do ponto (sx,sy) ao ponto (tx,ty) usando o algoritmo A*. | |
std::vector< std::pair< float, float > > | dijkstraPathfinding (float sx, float sy, float tx, float ty) |
Busca caminho do ponto (sx,sy) ao ponto (tx,ty) usando o algoritmo Dijkstra. | |
std::vector< std::pair< int, int > > | getPath (Node *s, Node *t) |
Usa o grafo do grid para obter o caminho do no' s ao no' t. | |
std::vector< std::pair< float, float > > | transformPath (std::vector< std::pair< int, int >> path, float tx, float ty) |
Transforma o caminho dos tiles em pixel. | |
std::vector< std::pair< float, float > > | getWalkingPath (std::vector< std::pair< float, float >> pixelPath) |
Remove os caminhos onde walking == false. | |
std::set< int > | getZE (Unit *unit) |
Essa funcao devolve o conjunto apenas para nao precisar fazer um tratamento diferente em relacao aos edificios. | |
std::set< int > | getZE (Building *building) |
std::set< int > | getZE (float px, float py) |
bool | isInSameZE (std::set< int > ze1, std::set< int > ze2) |
Compara os elementos de dois conjuntos de zonas de equivalencia. | |
std::pair< float, float > | findNearestTile (float tx, float ty, std::set< int > zones) |
Calcula o ponto (px,py) mais proximo de (tx,ty) que possui mesma ZE de alguma zona do conjunto zones. |
Contem rotinas relacionadas a busca de caminho.
Pathfinding::Pathfinding | ( | Graph * | graph | ) |
Construtor.
graph | Grafo do grid |
std::vector< std::pair< float, float > > Pathfinding::astarPathfinding | ( | float | sx, |
float | sy, | ||
float | tx, | ||
float | ty | ||
) |
Busca caminho do ponto (sx,sy) ao ponto (tx,ty) usando o algoritmo A*.
sx | Coordenada x em pixel do ponto origem |
sy | Coordenada y em pixel do ponto origem |
tx | Coordenada x em pixel do ponto destino |
ty | Coordenada y em pixel do ponto destino |
std::vector< std::pair< float, float > > Pathfinding::bfsPathfinding | ( | float | sx, |
float | sy, | ||
float | tx, | ||
float | ty | ||
) |
Busca caminho do ponto (sx,sy) ao ponto (tx,ty) usando o algoritmo BFS.
sx | Coordenada x em pixel do ponto origem |
sy | Coordenada y em pixel do ponto origem |
tx | Coordenada x em pixel do ponto destino |
ty | Coordenada y em pixel do ponto destino |
std::vector< std::pair< float, float > > Pathfinding::dijkstraPathfinding | ( | float | sx, |
float | sy, | ||
float | tx, | ||
float | ty | ||
) |
Busca caminho do ponto (sx,sy) ao ponto (tx,ty) usando o algoritmo Dijkstra.
sx | Coordenada x em pixel do ponto origem |
sy | Coordenada y em pixel do ponto origem |
tx | Coordenada x em pixel do ponto destino |
ty | Coordenada y em pixel do ponto destino |
std::pair< float, float > Pathfinding::findNearestTile | ( | float | tx, |
float | ty, | ||
std::set< int > | zones | ||
) |
Calcula o ponto (px,py) mais proximo de (tx,ty) que possui mesma ZE de alguma zona do conjunto zones.
Serve para quando o jogador faz uma requisicao de um pathfinding para um local inalcancavel
tx | Coordenada x em pixel |
ty | Coordenada y em pixel |
zones | Conjunto de zonas de equivalencia |
std::vector< std::pair< int, int > > Pathfinding::getPath | ( | Node * | s, |
Node * | t | ||
) |
Usa o grafo do grid para obter o caminho do no' s ao no' t.
s | |
t |
std::vector< std::pair< float, float > > Pathfinding::getWalkingPath | ( | std::vector< std::pair< float, float >> | pixelPath | ) |
Remove os caminhos onde walking == false.
Usado no buildingPath(Quando a construção foi requisitada para mover a qualquer lugar ou em cima de uma outra construção). Usado no unitMove(Quando a unidade foi requisitada para mover em um ponto em cima de uma construção)
pixelPath | Caminho em pixel |
std::set< int > Pathfinding::getZE | ( | Unit * | unit | ) |
Essa funcao devolve o conjunto apenas para nao precisar fazer um tratamento diferente em relacao aos edificios.
unit | Ponteiro da unidade |
std::set< int > Pathfinding::getZE | ( | Building * | building | ) |
building | Ponteiro da unidade |
std::set< int > Pathfinding::getZE | ( | float | px, |
float | py | ||
) |
px | Coordenada x em pixel |
py | Coordenada y em pixel |
bool Pathfinding::isInSameZE | ( | std::set< int > | ze1, |
std::set< int > | ze2 | ||
) |
Compara os elementos de dois conjuntos de zonas de equivalencia.
ze1 | Conjunto 1 de zonas de equivalencia |
ze2 | Conjunto 2 de zonas de equivalencia |
std::vector< std::pair< float, float > > Pathfinding::transformPath | ( | std::vector< std::pair< int, int >> | path, |
float | tx, | ||
float | ty | ||
) |
Transforma o caminho dos tiles em pixel.
path | Caminho |
tx | Coordenada x do ponto destino |
ty | Coordenada y do ponto destino |