@Override public AcceptTurn isAcceptingTurn(Link currentLink, QLaneI currentLane, Id<Link> nextLinkId, QVehicle veh, QNetwork qNetwork, double now) { AcceptTurn defaultTurn = delegate.isAcceptingTurn(currentLink, currentLane, nextLinkId, veh, qNetwork, now); if ( !defaultTurn.equals(AcceptTurn.GO) ) {
@Override public AcceptTurn isAcceptingTurn(Link currentLink, QLaneI currentLane, Id<Link> nextLinkId, QVehicle veh, QNetwork qNetwork, double now) { AcceptTurn defaultTurn = delegate.isAcceptingTurn(currentLink, currentLane, nextLinkId, veh, qNetwork, now); if ( defaultTurn.equals(AcceptTurn.ABORT) ) { return defaultTurn; } // else: check whether there are signals at the lane/link and whether they show green/red if ( (currentLane instanceof SignalizeableItem) && (! ((SignalizeableItem)currentLane).hasGreenForToLink(nextLinkId)) ) { /* because turn acceptance is checked before stuck time, an infinite red time * does not lead to stuck event of waiting vehicles. dg, mar'14 */ return AcceptTurn.WAIT; } return AcceptTurn.GO; }