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 & | GetAIPathfinderDirtinessInformation () const =0 |
Get the accumulated dirtiness information since the last time the AI accessed and flushed it. More... | |
virtual void | FlushAIPathfinderDirtinessInformation ()=0 |
virtual Grid< u16 > | ComputeShoreGrid (bool expandOnWater=false)=0 |
Get a grid representing the distance to the shore of the terrain tile. 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 | ComputePathImmediate (entity_pos_t x0, entity_pos_t z0, const PathGoal &goal, pass_class_t passClass, WaypointPath &ret) const =0 |
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 controller, entity_id_t notify)=0 |
Request a short path computation, asynchronously. More... | |
virtual WaypointPath | ComputeShortPathImmediate (const ShortPathRequest &request) const =0 |
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 bool | IsGoalReachable (entity_pos_t x0, entity_pos_t z0, const PathGoal &goal, pass_class_t passClass)=0 |
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 | SendRequestedPaths ()=0 |
Finish computing asynchronous path requests and send the CMessagePathResult messages. More... | |
virtual void | StartProcessingMoves (bool useMax)=0 |
Tell asynchronous pathfinder threads that they can begin computing paths. 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 (const 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 | |
Public Types inherited from IComponent | |
using | AllocFunc = IComponent *(*)(const ScriptInterface &scriptInterface, JS::HandleValue ctor) |
using | DeallocFunc = void(*)(IComponent *) |
Static Public Member Functions inherited from IComponent | |
static std::string | GetSchema () |
static void | RegisterComponentType (CComponentManager &mgr, EInterfaceId iid, EComponentTypeId cid, AllocFunc alloc, DeallocFunc dealloc, const char *name, const std::string &schema) |
static void | RegisterComponentTypeScriptWrapper (CComponentManager &mgr, EInterfaceId iid, EComponentTypeId cid, AllocFunc alloc, DeallocFunc dealloc, const char *name, const std::string &schema) |
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 |
Asynchronous version of ComputePath.
Request a long path computation, asynchronously. 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 |
Implemented in CCmpPathfinder.
Get a grid representing the distance to the shore of the terrain tile.
Implemented in CCmpPathfinder.
|
pure virtual |
Request a short path computation, asynchronously.
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 |
Implemented in CCmpPathfinder.
|
pure virtual |
Implemented in CCmpPathfinder.
|
pure virtual |
Get the accumulated dirtiness information since the last time the AI accessed and flushed it.
Implemented in CCmpPathfinder.
|
pure virtual |
Implemented in CCmpPathfinder.
|
pure virtual |
Returns some stats about the last ComputePath.
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 passability classes, separating pathfinding classes and others.
Implemented in CCmpPathfinder.
|
pure virtual |
Get the list of all known passability classes.
Implemented in CCmpPathfinder.
|
pure virtual |
Implemented in CCmpPathfinder.
|
pure virtual |
Implemented in CCmpPathfinder.
|
pure virtual |
Finish computing asynchronous path requests and send the CMessagePathResult messages.
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 |
Tell asynchronous pathfinder threads that they can begin computing paths.
Implemented in CCmpPathfinder.
|
pure virtual |
Regenerates the grid based on the current obstruction list, if necessary.
Implemented in CCmpPathfinder.