18 #ifndef INCLUDED_HIERPATHFINDER 19 #define INCLUDED_HIERPATHFINDER 73 return ((ci == b.
ci) && (cj == b.
cj) && (r == b.
r));
84 const std::map<std::string, pass_class_t>& nonPathfindingPassClassMasks,
85 const std::map<std::string, pass_class_t>& pathfindingPassClassMasks);
122 LOGERROR(
"Invalid passability class name '%s'", name.c_str());
136 cassert(CHUNK_SIZE*CHUNK_SIZE/2 < 65536);
142 void RegionCenter(
u16 r,
int& i,
int& j)
const;
144 void RegionNavcellNearest(
u16 r,
int iGoal,
int jGoal,
int& iBest,
int& jBest,
u32& dist2Best)
const;
149 typedef std::map<RegionID, std::set<RegionID> >
EdgesMap;
173 std::map<pass_class_t, std::vector<Chunk> >
m_Chunks;
202 for (
size_t j = 0; j < h; ++j)
204 for (
size_t i = 0; i < w; ++i)
211 else if (rid.
r == 0xFFFF)
214 color = GetColor(rid.
r + rid.
ci*5 + rid.
cj*7, 127);
226 #endif // INCLUDED_HIERPATHFINDER Definition: HierarchicalPathfinder.h:130
u8 G
Definition: SColor.h:33
HierarchicalOverlay * m_DebugOverlay
Definition: HierarchicalPathfinder.h:181
#define LOGERROR(...)
Definition: CLogger.h:36
u16 pass_class_t
Definition: Pathfinding.h:29
u16 m_ChunksH
Definition: HierarchicalPathfinder.h:172
Definition: Pathfinding.h:105
RegionID(u8 ci, u8 cj, u16 r)
Definition: HierarchicalPathfinder.h:55
void Update(Grid< NavcellData > *grid, const Grid< u8 > &dirtinessGrid)
Definition: HierarchicalPathfinder.cpp:404
HierarchicalOverlay(HierarchicalPathfinder &pathfinderHier)
Definition: HierarchicalPathfinder.h:193
uint16_t u16
Definition: types.h:38
Grid< u16 > GetConnectivityGrid(pass_class_t passClass)
Generates the connectivity grid associated with the given pass_class.
Definition: HierarchicalPathfinder.cpp:755
u16 m_W
Definition: HierarchicalPathfinder.h:171
Chunk & GetChunk(u8 ci, u8 cj, pass_class_t passClass)
Definition: HierarchicalPathfinder.h:164
Pathfinder goal.
Definition: PathGoal.h:32
void Recompute(Grid< NavcellData > *passabilityGrid, const std::map< std::string, pass_class_t > &nonPathfindingPassClassMasks, const std::map< std::string, pass_class_t > &pathfindingPassClassMasks)
Definition: HierarchicalPathfinder.cpp:346
Contains pointers to various 'global' objects that are needed by the simulation code, to allow easy access without using real (evil) global variables.
Definition: SimContext.h:32
u8 B
Definition: SColor.h:34
uint8_t u8
Definition: types.h:37
bool operator<(RegionID b) const
Definition: HierarchicalPathfinder.h:57
u16 m_NumRegions
Definition: HierarchicalPathfinder.h:133
u8 m_ChunkJ
Definition: HierarchicalPathfinder.h:132
u8 A
Definition: SColor.h:35
void FindPassableRegions(std::set< RegionID > ®ions, pass_class_t passClass)
Definition: HierarchicalPathfinder.cpp:729
Definition: HierarchicalPathfinder.h:188
u8 cj
Definition: HierarchicalPathfinder.h:52
RegionID Get(u16 i, u16 j, pass_class_t passClass)
Definition: HierarchicalPathfinder.cpp:566
HierarchicalPathfinder()
Definition: HierarchicalPathfinder.cpp:320
uint32_t u32
Definition: types.h:39
const int NAVCELLS_PER_TILE
The long-range pathfinder operates primarily over a navigation grid (a uniform-cost 2D passability gr...
Definition: Pathfinding.h:117
void FindNearestPassableNavcell(u16 &i, u16 &j, pass_class_t passClass)
Updates i, j (which is assumed to be an impassable navcell) to the nearest passable navcell...
Definition: HierarchicalPathfinder.cpp:643
Definition: HierarchicalPathfinder.h:47
Definition: HierarchicalPathfinder.h:50
~HierarchicalPathfinder()
Definition: HierarchicalPathfinder.cpp:324
HierarchicalPathfinder & m_PathfinderHier
Definition: HierarchicalPathfinder.h:191
void SetDebugOverlay(bool enabled, const CSimContext *simContext)
Definition: HierarchicalPathfinder.cpp:329
pass_class_t GetPassabilityClass(const std::string &name) const
Definition: HierarchicalPathfinder.h:116
u8 R
Definition: SColor.h:32
u8 ci
Definition: HierarchicalPathfinder.h:52
void FindReachableRegions(RegionID from, std::set< RegionID > &reachable, pass_class_t passClass)
Definition: HierarchicalPathfinder.cpp:707
Helper functions related to rendering.
void AddDebugEdges(pass_class_t passClass)
Debug visualisation of graph edges between regions.
Definition: HierarchicalPathfinder.cpp:528
void FindEdges(u8 ci, u8 cj, pass_class_t passClass, EdgesMap &edges)
Find edges between regions in this chunk and the adjacent below/left chunks.
Definition: HierarchicalPathfinder.cpp:467
void FindNearestNavcellInRegions(const std::set< RegionID > ®ions, u16 &iGoal, u16 &jGoal, pass_class_t passClass)
Updates iGoal and jGoal to the navcell that is the nearest to the initial goal coordinates, in one of the given regions.
Definition: HierarchicalPathfinder.cpp:650
u16 m_ChunksW
Definition: HierarchicalPathfinder.h:172
bool IsChunkDirty(int ci, int cj, const Grid< u8 > &dirtinessGrid) const
Definition: HierarchicalPathfinder.cpp:447
void MakeGoalReachable(u16 i0, u16 j0, PathGoal &goal, pass_class_t passClass)
Updates goal so that it's guaranteed to be reachable from the navcell i0, j0 (which is assumed to be ...
Definition: HierarchicalPathfinder.cpp:574
std::map< std::string, pass_class_t > m_PassClassMasks
Definition: HierarchicalPathfinder.h:178
Base class for texture-based terrain overlays, with an arbitrary number of texels per terrain tile...
Definition: TerrainOverlay.h:174
void FillRegionOnGrid(const RegionID ®ion, pass_class_t passClass, u16 value, Grid< u16 > &grid)
Definition: HierarchicalPathfinder.cpp:740
virtual void BuildTextureRGBA(u8 *data, size_t w, size_t h)
Called each frame to generate the texture to render on the terrain.
Definition: HierarchicalPathfinder.h:198
u16 m_H
Definition: HierarchicalPathfinder.h:171
std::map< pass_class_t, std::vector< Chunk > > m_Chunks
Definition: HierarchicalPathfinder.h:173
#define cassert(expr)
Compile-time assertion.
Definition: code_annotation.h:197
const CSimContext * m_SimContext
Definition: HierarchicalPathfinder.h:182
std::map< RegionID, std::set< RegionID > > EdgesMap
Definition: HierarchicalPathfinder.h:149
static const u8 CHUNK_SIZE
Definition: HierarchicalPathfinder.h:127
bool operator==(RegionID b) const
Definition: HierarchicalPathfinder.h:71
u16 r
Definition: HierarchicalPathfinder.h:53
std::vector< SOverlayLine > m_DebugOverlayLines
Definition: HierarchicalPathfinder.h:185
std::map< pass_class_t, EdgesMap > m_Edges
Definition: HierarchicalPathfinder.h:175