User Tools

Site Tools


dev:core:path

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Next revision Both sides next revision
dev:core:path [2020-04-14 12:48]
orwell created
dev:core:path [2020-04-28 20:27]
orwell
Line 26: Line 26:
  
 A train is moved by advancing its index. It is important to note that the train's 'index' is always incremented, never decremented. See also "reversion" in [[dev:core:train]]. A train is moved by advancing its index. It is important to note that the train's 'index' is always incremented, never decremented. See also "reversion" in [[dev:core:train]].
 +
 +===== Distances =====
 +
 +It is important to keep in mind that the index has little to no relation to actual distances in the cartesian space. Depending on the track orientation, the distance between path items can vary from 1 to >2 nodes. The real distance of every item from path item 0 is encoded in ''train.path_dist''
 +
 +To calculate an index for a given starting index and a given distance, you can use ''advtrains.path_get_index_by_offset()''
 +
 +===== In train table =====
 +The following tables in the train table are handled by the path system:
 +<code>
 +-- path      - path positions. 'indices' are relative to this. At the moment, at.round_vector_floor_y(path[i])
 +--              is the node this item corresponds to, however, this will change in the future.
 +-- path_node - (reserved)
 +-- path_cn   - Connid of the current node that points towards path[i+1]
 +-- path_cp   - Connid of the current node that points towards path[i-1]
 +--     When the day comes on that path!=node, these will only be set if this index represents a transition between rail nodes
 +-- path_dist - The total distance of this path element from path element 0
 +-- path_dir  - The direction of this path item's transition to the next path item, which is the angle of conns[path_cn[i]].c
 +--Variables:
 +-- path_speed   - Filled by the LZB subsystem. For every path item, if set, defines the maximum velocity the train is allowed to have in the moment it passes this path item.
 +--              - If 0, the train will stop 0.1 indices before this path item (definable by LZB_ZERO_APPROACH_DIST in trainlogic.lua)
 +-- path_ext_f/b - how far path[i] is set
 +-- path_trk_f/b - how far the path extends along a track. beyond those values, paths are generated in a straight line.
 +-- path_req_f/b - how far path items were requested in the last step
 +</code>
 +
  
 ===== Path generation ===== ===== Path generation =====
  
 +The path is generated on the fly, as path items are requested.
  
 +Every call to ''advtrains.path_get()'' (or one of the related functions) automatically generates the path as far as needed.
  
dev/core/path.txt · Last modified: 2023-01-11 15:13 by 56independent