diff --git a/src/netbuild/NBLoadedSUMOTLDef.cpp b/src/netbuild/NBLoadedSUMOTLDef.cpp index e18514ad04..6fd8c722e8 100644 --- a/src/netbuild/NBLoadedSUMOTLDef.cpp +++ b/src/netbuild/NBLoadedSUMOTLDef.cpp @@ -379,6 +379,7 @@ NBLoadedSUMOTLDef::initNeedsContRelation() const { if (!amInvalid() && !myNeedsContRelationReady) { myNeedsContRelation.clear(); myRightOnRedConflicts.clear(); + NBTrafficLightDefinition::initNeedsContRelation(); // built default internal junctions (layout opposites) const bool controlledWithin = !OptionsCont::getOptions().getBool("tls.uncontrolled-within"); const std::vector phases = myTLLogic->getPhases(); for (std::vector::const_iterator it = phases.begin(); it != phases.end(); it++) { diff --git a/src/netbuild/NBOwnTLDef.cpp b/src/netbuild/NBOwnTLDef.cpp index d1b2938b87..4142a1fb09 100644 --- a/src/netbuild/NBOwnTLDef.cpp +++ b/src/netbuild/NBOwnTLDef.cpp @@ -314,7 +314,7 @@ NBOwnTLDef::computeLogicAndConts(int brakingTimeSeconds, bool onlyConts) { const SUMOTime allRedTime = TIME2STEPS(OptionsCont::getOptions().getInt("tls.allred.time")); const double minorLeftSpeedThreshold = OptionsCont::getOptions().getFloat("tls.minor-left.max-speed"); // left-turn phases do not work well for joined tls, so we build incoming instead - const double groupOpposites = (OptionsCont::getOptions().getString("tls.layout") == "opposites" + const double groupOpposites = ((OptionsCont::getOptions().getString("tls.layout") == "opposites" || onlyConts) && (myControlledNodes.size() <= 2 || corridorLike())); // build all phases @@ -614,7 +614,7 @@ NBOwnTLDef::computeLogicAndConts(int brakingTimeSeconds, bool onlyConts) { myRightOnRedConflictsReady = true; // this computation only makes sense for single nodes - myNeedsContRelationReady = (myControlledNodes.size() == 1); + myNeedsContRelationReady = (myControlledNodes.size() == 1 && (groupOpposites || onlyConts)); if (totalDuration > 0) { if (totalDuration > 3 * (greenTime + 2 * brakingTime + leftTurnTime)) { WRITE_WARNINGF("The traffic light '%' has a high cycle time of %.", getID(), time2string(totalDuration));