Open Elesbaan70 opened 2 years ago
@kianzarrin When this reaches a working state, I'd like to collaborate on getting these arrows included as flags in AN, to facilitate road decals, etc.
Sure. we can save space doing things like:
DisplacedInner = Displaced | Inner
Sure. we can save space doing things like:
DisplacedInner = Displaced | Inner
In AN that may be a good optimization. It won't work here though, because the flags get aggregated, so they all have to be distinct.
But having said that, I don't think those flags would be very useful in asset creation anyway. I think CrossLeft, CrossRight, and the express forward/left/right, will be the most useful.
This issue depends on #1589.
Existing Arrows
The default lane arrow behavior in
LaneArrowManager
will change in certain lane grouping scenarios:If the combination of incoming and outgoing lane counts makes these rules impossible to follow, the code will just try to behave as sensibly as possible.
Express and Service Lanes
Outer Displaced Lanes
Inner Displaced Lanes
New Arrows
A new enumeration,
ExtLaneArrows
, will provide extended arrows. Each extended arrow will be a special case of a basic directional arrow.LaneArrows
will not be deprecated; both enumerations will coexist to ensure that we play as nicely as possible with anything that doesn't understand the extended arrows.Explicit extended arrows are seen and selected by the user. It might not be immediately obvious to the user that these are just special cases of directional arrows, and that's okay.
Implicit extended arrows are not directly selected by the user, though timed traffic lights will reveal their existence because they can be controlled separately. When configuring lane arrows, the user will simply see a basic directional arrow.
CrossLeft
Forward
, explicitlyCrossRight
Forward
, explicitlyExpressForward
Forward
, implicitlyExpressLeft
Left
, implicitlyExpressRight
Right
, implicitlyLane Direction Calculation
Every possible lane transition will have a
LaneArrow
direction. This does not change.In addition, every possible lane transition will have an
ExtLaneArrow
. This will be the same as itsLaneArrow
direction except in the following cases:Forward Rules
The following rules apply when
LaneArrow
isForward
.ExtLaneArrow
(RHT)ExtLaneArrow
(LHT)Outer
,Inner
DisplacedInner
DisplacedInner
and the incoming and outgoing segments are inverted in relation to each other, such that the "start node" flag is the same on both segment endsForward
Forward
Outer
,Inner
DisplacedInner
CrossLeft
CrossRight
DisplacedInner
Outer
,Inner
CrossRight
CrossLeft
DisplacedInner
DisplacedInner
ExpressForward
ExpressForward
DisplacedOuter
DisplacedOuter
ExpressForward
ExpressForward
Inner
Inner
ExpressForward
ExpressForward
Outer
Inner
CrossLeft
CrossRight
Inner
Outer
CrossRight
CrossLeft
DisplacedOuter
DisplacedOuter
CrossRight
CrossLeft
DisplacedOuter
DisplacedOuter
CrossLeft
CrossRight
Express Turn Rule
The express turn rule applies when the following conditions are true:
DisplacedOuter
.LaneArrow
is a Far Turn.When this rule is applied,
ExtLaneArrow
is the Express turn that corresponds to the turn'sLaneArrow
. i.e.,ExpressLeft
for RHT, orExpressRight
for LHT.Note that it is impossible for
ExpressRight
to occur in right-hand traffic, or forExpressLeft
to occur in left-hand traffic.