# yapf_node_rail.hpp File Reference

Node tailored for rail pathfinding. More...

Go to the source code of this file.

## Data Structures
struct | CYapfRailSegmentKey
| key for cached segment cost for rail YAPF More...
struct | CYapfRailSegment
| cached segment cost for rail YAPF More...
struct | CYapfRailNodeT< Tkey_ >
| Yapf Node for rail YAPF. More...
## Typedefs
typedef CYapfRailNodeT < CYapfNodeKeyExitDir > | CYapfRailNodeExitDir
typedef CYapfRailNodeT < CYapfNodeKeyTrackDir > | CYapfRailNodeTrackDir
typedef CNodeList_HashTableT < CYapfRailNodeExitDir, 10, 12 > | CRailNodeListExitDir
typedef CNodeList_HashTableT < CYapfRailNodeTrackDir, 12, 16 > | CRailNodeListTrackDir
## Enumerations
enum | EndSegmentReason { ESR_DEAD_END = 0, ESR_RAIL_TYPE, ESR_INFINITE_LOOP, ESR_SEGMENT_TOO_LONG, ESR_CHOICE_FOLLOWS, ESR_DEPOT, ESR_WAYPOINT, ESR_STATION, ESR_SAFE_TILE, ESR_PATH_TOO_LONG, ESR_FIRST_TWO_WAY_RED, ESR_LOOK_AHEAD_END, ESR_TARGET_REACHED, ESR_NONE = 0xFF }
enum | EndSegmentReasonBits { ESRB_NONE = 0, ESRB_DEAD_END = 1 << ESR_DEAD_END, ESRB_RAIL_TYPE = 1 << ESR_RAIL_TYPE, ESRB_INFINITE_LOOP = 1 << ESR_INFINITE_LOOP, ESRB_SEGMENT_TOO_LONG = 1 << ESR_SEGMENT_TOO_LONG, ESRB_CHOICE_FOLLOWS = 1 << ESR_CHOICE_FOLLOWS, ESRB_DEPOT = 1 << ESR_DEPOT, ESRB_WAYPOINT = 1 << ESR_WAYPOINT, ESRB_STATION = 1 << ESR_STATION, ESRB_SAFE_TILE = 1 << ESR_SAFE_TILE, ESRB_PATH_TOO_LONG = 1 << ESR_PATH_TOO_LONG, ESRB_FIRST_TWO_WAY_RED = 1 << ESR_FIRST_TWO_WAY_RED, ESRB_LOOK_AHEAD_END = 1 << ESR_LOOK_AHEAD_END, ESRB_TARGET_REACHED = 1 << ESR_TARGET_REACHED, ESRB_POSSIBLE_TARGET = ESRB_DEPOT | ESRB_WAYPOINT | ESRB_STATION | ESRB_SAFE_TILE, ESRB_CACHED_MASK = ESRB_DEAD_END | ESRB_RAIL_TYPE | ESRB_INFINITE_LOOP | ESRB_SEGMENT_TOO_LONG | ESRB_CHOICE_FOLLOWS | ESRB_DEPOT | ESRB_WAYPOINT | ESRB_STATION | ESRB_SAFE_TILE, ESRB_ABORT_PF_MASK = ESRB_DEAD_END | ESRB_PATH_TOO_LONG | ESRB_INFINITE_LOOP | ESRB_FIRST_TWO_WAY_RED }
## Functions
| DECLARE_ENUM_AS_BIT_SET (EndSegmentReasonBits)
CStrA | ValueStr (EndSegmentReasonBits bits)

## Detailed Description

Node tailored for rail pathfinding.

Definition in file yapf_node_rail.hpp.

## Enumeration Type Documentation

enum EndSegmentReason

Enumerator:

  ESR_DEAD_END | track ends here
  ESR_RAIL_TYPE | the next tile has a different rail type than our tiles
  ESR_INFINITE_LOOP | infinite loop detected
  ESR_SEGMENT_TOO_LONG | the segment is too long (possible infinite loop)
  ESR_CHOICE_FOLLOWS | the next tile contains a choice (the track splits to more than one segments)
  ESR_DEPOT | stop in the depot (could be a target next time)
  ESR_WAYPOINT | waypoint encountered (could be a target next time)
  ESR_STATION | station encountered (could be a target next time)
  ESR_SAFE_TILE | safe waiting position found (could be a target)
  ESR_PATH_TOO_LONG | the path is too long (searching for the nearest depot in the given radius)
  ESR_FIRST_TWO_WAY_RED | first signal was 2-way and it was red
  ESR_LOOK_AHEAD_END | we have just passed the last look-ahead signal
  ESR_TARGET_REACHED | we have just reached the destination
  ESR_NONE | no reason to end the segment here

Definition at line 65 of file yapf_node_rail.hpp.