Pyrogenesis
13997
|
Vertex-based algorithm for CCmpPathfinder. More...
#include "precompiled.h"
#include "CCmpPathfinder_Common.h"
#include "lib/timer.h"
#include "ps/Profile.h"
#include "simulation2/components/ICmpObstructionManager.h"
#include "simulation2/helpers/PriorityQueue.h"
#include "simulation2/helpers/Render.h"
Go to the source code of this file.
Classes | |
struct | Vertex |
struct | Edge |
struct | EdgeAA |
struct | TileEdge |
struct | EdgeSort |
Functor for sorting edges by approximate proximity to a fixed point. More... | |
Typedefs | |
typedef PriorityQueueHeap< u16, fixed > | PriorityQueue |
Functions | |
static bool | CheckVisibility (CFixedVector2D a, CFixedVector2D b, const std::vector< Edge > &edges) |
Check whether a ray from 'a' to 'b' crosses any of the edges. More... | |
static bool | CheckVisibilityLeft (CFixedVector2D a, CFixedVector2D b, const std::vector< EdgeAA > &edges) |
static bool | CheckVisibilityRight (CFixedVector2D a, CFixedVector2D b, const std::vector< EdgeAA > &edges) |
static bool | CheckVisibilityBottom (CFixedVector2D a, CFixedVector2D b, const std::vector< EdgeAA > &edges) |
static bool | CheckVisibilityTop (CFixedVector2D a, CFixedVector2D b, const std::vector< EdgeAA > &edges) |
static CFixedVector2D | NearestPointOnGoal (CFixedVector2D pos, const CCmpPathfinder::Goal &goal) |
static void | AddTerrainEdges (std::vector< Edge > &edgesAA, std::vector< Vertex > &vertexes, u16 i0, u16 j0, u16 i1, u16 j1, fixed r, ICmpPathfinder::pass_class_t passClass, const Grid< TerrainTile > &terrain) |
static void | SplitAAEdges (CFixedVector2D a, const std::vector< Edge > &edgesAA, std::vector< EdgeAA > &edgesLeft, std::vector< EdgeAA > &edgesRight, std::vector< EdgeAA > &edgesBottom, std::vector< EdgeAA > &edgesTop) |
Variables | |
static const u8 | QUADRANT_NONE = 0 |
static const u8 | QUADRANT_BL = 1 |
static const u8 | QUADRANT_TR = 2 |
static const u8 | QUADRANT_TL = 4 |
static const u8 | QUADRANT_BR = 8 |
static const u8 | QUADRANT_BLTR = QUADRANT_BL|QUADRANT_TR |
static const u8 | QUADRANT_TLBR = QUADRANT_TL|QUADRANT_BR |
static const u8 | QUADRANT_ALL = QUADRANT_BLTR|QUADRANT_TLBR |
static const entity_pos_t | EDGE_EXPAND_DELTA = entity_pos_t::FromInt(1)/4 |
Vertex-based algorithm for CCmpPathfinder.
Computes paths around the corners of rectangular obstructions.
Useful search term for this algorithm: "points of visibility".
Since we sometimes want to use this for avoiding moving units, there is no pre-computation - the whole visibility graph is effectively regenerated for each path, and it does A* over that graph.
This scales very poorly in the number of obstructions, so it should be used with a limited range and not exceedingly frequently.
Definition in file CCmpPathfinder_Vertex.cpp.
typedef PriorityQueueHeap<u16, fixed> PriorityQueue |
Definition at line 328 of file CCmpPathfinder_Vertex.cpp.
|
static |
Definition at line 336 of file CCmpPathfinder_Vertex.cpp.
|
inlinestatic |
Check whether a ray from 'a' to 'b' crosses any of the edges.
(Edges are one-sided so it's only considered a cross if going from front to back.)
Definition at line 130 of file CCmpPathfinder_Vertex.cpp.
|
inlinestatic |
Definition at line 230 of file CCmpPathfinder_Vertex.cpp.
|
inlinestatic |
Definition at line 174 of file CCmpPathfinder_Vertex.cpp.
|
inlinestatic |
Definition at line 202 of file CCmpPathfinder_Vertex.cpp.
|
inlinestatic |
Definition at line 258 of file CCmpPathfinder_Vertex.cpp.
|
static |
Definition at line 287 of file CCmpPathfinder_Vertex.cpp.
|
static |
Definition at line 446 of file CCmpPathfinder_Vertex.cpp.
|
static |
Definition at line 124 of file CCmpPathfinder_Vertex.cpp.
|
static |
Definition at line 82 of file CCmpPathfinder_Vertex.cpp.
|
static |
Definition at line 76 of file CCmpPathfinder_Vertex.cpp.
|
static |
Definition at line 80 of file CCmpPathfinder_Vertex.cpp.
|
static |
Definition at line 79 of file CCmpPathfinder_Vertex.cpp.
|
static |
Definition at line 75 of file CCmpPathfinder_Vertex.cpp.
|
static |
Definition at line 78 of file CCmpPathfinder_Vertex.cpp.
|
static |
Definition at line 81 of file CCmpPathfinder_Vertex.cpp.
|
static |
Definition at line 77 of file CCmpPathfinder_Vertex.cpp.