[0.12.1] [Martin] Looped Chain Signals Stuck on Blue
Posted: Sun Jul 26, 2015 2:56 am
While testing an issue someone was having with signaling a roundabout (no, I don't recommend them, but some people still like them) I found that even after all normal signals at the exits turn green, the chain signals remain blue because they all can see a blue chain signal, so they disregard the fact that none of them can see any red regular signals anymore.
I assume this is an optimization where each chain signal only has to check as far as the next signal ahead of it, but it prevents a roundabout (or other looped track) from resetting back to fully green.
I tried it with four chain signals on the horizontal/vertical joins, four on the diagonals, and with eight, and it made no difference.
Before train passes through
After train
In order to reset them all to green you have to break a track so that one of the chain signals along the loop can only see a green regular signal.
I don't believe this actually blocks any traffic, so it seems like a minor (but confusing) display issue. It should be possible to check for such a loop condition whenever a chain signal sees another signal switch from red to green (or blue) in order to trigger a reset to green when appropriate.
I assume this is an optimization where each chain signal only has to check as far as the next signal ahead of it, but it prevents a roundabout (or other looped track) from resetting back to fully green.
I tried it with four chain signals on the horizontal/vertical joins, four on the diagonals, and with eight, and it made no difference.
Before train passes through
After train
In order to reset them all to green you have to break a track so that one of the chain signals along the loop can only see a green regular signal.
I don't believe this actually blocks any traffic, so it seems like a minor (but confusing) display issue. It should be possible to check for such a loop condition whenever a chain signal sees another signal switch from red to green (or blue) in order to trigger a reset to green when appropriate.