void GUIEdge::addRerouter() { MSEdgeVector edges; edges.push_back(this); GUITriggeredRerouter* rr = new GUITriggeredRerouter(getID() + "_dynamic_rerouter", edges, 1, "", false, GUINet::getGUIInstance()->getVisualisationSpeedUp()); MSTriggeredRerouter::RerouteInterval ri; ri.begin = MSNet::getInstance()->getCurrentTimeStep(); ri.end = SUMOTime_MAX; ri.edgeProbs.add(1, &MSTriggeredRerouter::mySpecialDest_keepDestination); rr->myIntervals.push_back(ri); // trigger rerouting for vehicles already on this edge const std::vector<MSLane*>& lanes = getLanes(); for (std::vector<MSLane*>::const_iterator i = lanes.begin(); i != lanes.end(); ++i) { const MSLane::VehCont& vehicles = (*i)->getVehiclesSecure(); for (MSLane::VehCont::const_iterator v = vehicles.begin(); v != vehicles.end(); ++v) { if ((*v)->getLane() == (*i)) { rr->notifyEnter(**v, MSMoveReminder::NOTIFICATION_JUNCTION); } // else: this is the shadow during a continuous lane change } (*i)->releaseVehicles(); } }
void GUIEdge::closeTraffic(const GUILane* lane) { const std::vector<MSLane*>& lanes = getLanes(); const bool isClosed = lane->isClosed(); for (std::vector<MSLane*>::const_iterator i = lanes.begin(); i != lanes.end(); ++i) { GUILane* l = dynamic_cast<GUILane*>(*i); if (l->isClosed() == isClosed) { l->closeTraffic(false); } } rebuildAllowedLanes(); }
bool GUIEdge::setFunctionalColor(int activeScheme) const { switch (activeScheme) { case 9: { const PositionVector& shape = getLanes()[0]->getShape(); SUMOReal hue = GeomHelper::naviDegree(shape.beginEndAngle()); // [0-360] myMesoColor = RGBColor::fromHSV(hue, 1., 1.); return true; } default: return false; } }
GUIGLObjectPopupMenu* GUIEdge::getPopUpMenu(GUIMainWindow& app, GUISUMOAbstractView& parent) { GUIGLObjectPopupMenu* ret = new GUIGLObjectPopupMenu(app, parent, *this); buildPopupHeader(ret, app); buildCenterPopupEntry(ret); buildNameCopyPopupEntry(ret); buildSelectionPopupEntry(ret); if (MSGlobals::gUseMesoSim) { buildShowParamsPopupEntry(ret); } const SUMOReal pos = getLanes()[0]->getShape().nearest_offset_to_point2D(parent.getPositionInformation()); new FXMenuCommand(ret, ("pos: " + toString(pos)).c_str(), 0, 0, 0); buildPositionCopyEntry(ret, false); return ret; }
SUMOReal GUIEdge::getScaleValue(int activeScheme) const { switch (activeScheme) { case 1: return gSelected.isSelected(getType(), getGlID()); case 2: return getAllowedSpeed(); case 3: return getBruttoOccupancy(); case 4: return getMeanSpeed(); case 5: return getFlow(); case 6: return getRelativeSpeed(); case 7: return MSNet::getInstance()->getInsertionControl().getPendingEmits(getLanes()[0]); } return 0; }
MESegment* GUIEdge::getSegmentAtPosition(const Position& pos) { const PositionVector& shape = getLanes()[0]->getShape(); const SUMOReal lanePos = shape.nearest_offset_to_point2D(pos); return MSGlobals::gMesoNet->getSegmentForEdge(*this, lanePos); }
uint32 OldNode::getNbrLanes(const OldGenericMap& theMap) const { return getLanes(theMap).size(); }