Pyrogenesis
trunk
|
Pathfinder algorithms. More...
#include <ICmpPathfinder.h>
Public Member Functions | |
virtual void | GetPassabilityClasses (std::map< std::string, pass_class_t > &passClasses) const =0 |
Get the list of all known passability classes. More... | |
virtual void | GetPassabilityClasses (std::map< std::string, pass_class_t > &nonPathfindingPassClasses, std::map< std::string, pass_class_t > &pathfindingPassClasses) const =0 |
Get the list of passability classes, separating pathfinding classes and others. More... | |
virtual pass_class_t | GetPassabilityClass (const std::string &name) const =0 |
Get the tag for a given passability class name. More... | |
virtual entity_pos_t | GetClearance (pass_class_t passClass) const =0 |
virtual entity_pos_t | GetMaximumClearance () const =0 |
Get the larger clearance in all passability classes. More... | |
virtual const Grid< NavcellData > & | GetPassabilityGrid ()=0 |
virtual const GridUpdateInformation & | GetDirtinessData () const =0 |
Passes the lazily-stored dirtiness data collected from the obstruction manager during the previous grid update. More... | |
virtual Grid< u16 > | ComputeShoreGrid (bool expandOnWater=false)=0 |
Get a grid representing the distance to the shore of the terrain tile. More... | |
virtual void | ComputePath (entity_pos_t x0, entity_pos_t z0, const PathGoal &goal, pass_class_t passClass, WaypointPath &ret)=0 |
Compute a tile-based path from the given point to the goal, and return the set of waypoints. More... | |
virtual u32 | ComputePathAsync (entity_pos_t x0, entity_pos_t z0, const PathGoal &goal, pass_class_t passClass, entity_id_t notify)=0 |
Asynchronous version of ComputePath. More... | |
virtual void | SetDebugPath (entity_pos_t x0, entity_pos_t z0, const PathGoal &goal, pass_class_t passClass)=0 |
If the debug overlay is enabled, render the path that will computed by ComputePath. More... | |
virtual void | ComputeShortPath (const IObstructionTestFilter &filter, entity_pos_t x0, entity_pos_t z0, entity_pos_t clearance, entity_pos_t range, const PathGoal &goal, pass_class_t passClass, WaypointPath &ret)=0 |
Compute a precise path from the given point to the goal, and return the set of waypoints. More... | |
virtual u32 | ComputeShortPathAsync (entity_pos_t x0, entity_pos_t z0, entity_pos_t clearance, entity_pos_t range, const PathGoal &goal, pass_class_t passClass, bool avoidMovingUnits, entity_id_t group, entity_id_t notify)=0 |
Asynchronous version of ComputeShortPath (using ControlGroupObstructionFilter). More... | |
virtual bool | CheckMovement (const IObstructionTestFilter &filter, entity_pos_t x0, entity_pos_t z0, entity_pos_t x1, entity_pos_t z1, entity_pos_t r, pass_class_t passClass) const =0 |
Check whether the given movement line is valid and doesn't hit any obstructions or impassable terrain. More... | |
virtual ICmpObstruction::EFoundationCheck | CheckUnitPlacement (const IObstructionTestFilter &filter, entity_pos_t x, entity_pos_t z, entity_pos_t r, pass_class_t passClass, bool onlyCenterPoint=false) const =0 |
Check whether a unit placed here is valid and doesn't hit any obstructions or impassable terrain. More... | |
virtual ICmpObstruction::EFoundationCheck | CheckBuildingPlacement (const IObstructionTestFilter &filter, entity_pos_t x, entity_pos_t z, entity_pos_t a, entity_pos_t w, entity_pos_t h, entity_id_t id, pass_class_t passClass) const =0 |
Check whether a building placed here is valid and doesn't hit any obstructions or impassable terrain. More... | |
virtual ICmpObstruction::EFoundationCheck | CheckBuildingPlacement (const IObstructionTestFilter &filter, entity_pos_t x, entity_pos_t z, entity_pos_t a, entity_pos_t w, entity_pos_t h, entity_id_t id, pass_class_t passClass, bool onlyCenterPoint) const =0 |
Check whether a building placed here is valid and doesn't hit any obstructions or impassable terrain. More... | |
virtual void | SetDebugOverlay (bool enabled)=0 |
Toggle the storage and rendering of debug info. More... | |
virtual void | SetHierDebugOverlay (bool enabled)=0 |
Toggle the storage and rendering of debug info for the hierarchical pathfinder. More... | |
virtual void | FinishAsyncRequests ()=0 |
Finish computing asynchronous path requests and send the CMessagePathResult messages. More... | |
virtual void | ProcessSameTurnMoves ()=0 |
Process moves during the same turn they were created in to improve responsiveness. More... | |
virtual void | UpdateGrid ()=0 |
Regenerates the grid based on the current obstruction list, if necessary. More... | |
virtual void | GetDebugData (u32 &steps, double &time, Grid< u8 > &grid) const =0 |
Returns some stats about the last ComputePath. More... | |
virtual void | SetAtlasOverlay (bool enable, pass_class_t passClass=0)=0 |
Sets up the pathfinder passability overlay in Atlas. More... | |
Public Member Functions inherited from IComponent | |
virtual | ~IComponent () |
virtual void | Init (const CParamNode ¶mNode)=0 |
virtual void | Deinit ()=0 |
virtual void | HandleMessage (const CMessage &msg, bool global) |
CEntityHandle | GetEntityHandle () const |
void | SetEntityHandle (CEntityHandle ent) |
entity_id_t | GetEntityId () const |
CEntityHandle | GetSystemEntity () const |
const CSimContext & | GetSimContext () const |
void | SetSimContext (const CSimContext &context) |
virtual void | Serialize (ISerializer &serialize)=0 |
virtual void | Deserialize (const CParamNode ¶mNode, IDeserializer &deserialize)=0 |
virtual bool | NewJSObject (ScriptInterface &scriptInterface, JS::MutableHandleObject out) const |
Returns false by default, indicating that a scripted wrapper of this IComponent is not supported. More... | |
virtual JS::Value | GetJSInstance () const |
virtual int | GetComponentTypeId () const =0 |
Additional Inherited Members | |
Static Public Member Functions inherited from IComponent | |
static std::string | GetSchema () |
static u8 | GetSerializationVersion () |
Pathfinder algorithms.
There are two different modes: a tile-based pathfinder that works over long distances and accounts for terrain costs but ignore units, and a 'short' vertex-based pathfinder that provides precise paths and avoids other units.
Both use the same concept of a PathGoal: either a point, circle or square. (If the starting point is inside the goal shape then the path will move outwards to reach the shape's outline.)
The output is a list of waypoints.
|
pure virtual |
Check whether a building placed here is valid and doesn't hit any obstructions or impassable terrain.
Implemented in CCmpPathfinder.
|
pure virtual |
Check whether a building placed here is valid and doesn't hit any obstructions or impassable terrain.
when onlyCenterPoint = true, only check the center tile of the building
Implemented in CCmpPathfinder.
|
pure virtual |
Check whether the given movement line is valid and doesn't hit any obstructions or impassable terrain.
Returns true if the movement is okay.
Implemented in CCmpPathfinder.
|
pure virtual |
Check whether a unit placed here is valid and doesn't hit any obstructions or impassable terrain.
When onlyCenterPoint = true, only check the center tile of the unit
Implemented in CCmpPathfinder.
|
pure virtual |
Compute a tile-based path from the given point to the goal, and return the set of waypoints.
The waypoints correspond to the centers of horizontally/vertically adjacent tiles along the path.
Implemented in CCmpPathfinder.
|
pure virtual |
Asynchronous version of ComputePath.
The result will be sent as CMessagePathResult to 'notify'. Returns a unique non-zero number, which will match the 'ticket' in the result, so callers can recognise each individual request they make.
Implemented in CCmpPathfinder.
Get a grid representing the distance to the shore of the terrain tile.
Implemented in CCmpPathfinder.
|
pure virtual |
Compute a precise path from the given point to the goal, and return the set of waypoints.
The path is based on the full set of obstructions that pass the filter, such that a unit of clearance 'clearance' will be able to follow the path with no collisions. The path is restricted to a box of radius 'range' from the starting point.
Implemented in CCmpPathfinder.
|
pure virtual |
Asynchronous version of ComputeShortPath (using ControlGroupObstructionFilter).
The result will be sent as CMessagePathResult to 'notify'. Returns a unique non-zero number, which will match the 'ticket' in the result, so callers can recognise each individual request they make.
Implemented in CCmpPathfinder.
|
pure virtual |
Finish computing asynchronous path requests and send the CMessagePathResult messages.
Implemented in CCmpPathfinder.
|
pure virtual |
Implemented in CCmpPathfinder.
|
pure virtual |
Returns some stats about the last ComputePath.
Implemented in CCmpPathfinder.
|
pure virtual |
Passes the lazily-stored dirtiness data collected from the obstruction manager during the previous grid update.
Implemented in CCmpPathfinder.
|
pure virtual |
Get the larger clearance in all passability classes.
Implemented in CCmpPathfinder.
|
pure virtual |
Get the tag for a given passability class name.
Logs an error and returns something acceptable if the name is unrecognised.
Implemented in CCmpPathfinder.
|
pure virtual |
Get the list of all known passability classes.
Implemented in CCmpPathfinder.
|
pure virtual |
Get the list of passability classes, separating pathfinding classes and others.
Implemented in CCmpPathfinder.
|
pure virtual |
Implemented in CCmpPathfinder.
|
pure virtual |
Process moves during the same turn they were created in to improve responsiveness.
Implemented in CCmpPathfinder.
|
pure virtual |
Sets up the pathfinder passability overlay in Atlas.
Implemented in CCmpPathfinder.
|
pure virtual |
Toggle the storage and rendering of debug info.
Implemented in CCmpPathfinder.
|
pure virtual |
If the debug overlay is enabled, render the path that will computed by ComputePath.
Implemented in CCmpPathfinder.
|
pure virtual |
Toggle the storage and rendering of debug info for the hierarchical pathfinder.
Implemented in CCmpPathfinder.
|
pure virtual |
Regenerates the grid based on the current obstruction list, if necessary.
Implemented in CCmpPathfinder.