void MELoop::buildSegmentsFor(const MSEdge& e, const OptionsCont& oc) { const SUMOReal length = e.getLength(); int no = numSegmentsFor(length, oc.getFloat("meso-edgelength")); const SUMOReal slength = length / (SUMOReal)no; const SUMOReal lengthGeometryFactor = e.getLanes()[0]->getLengthGeometryFactor(); MESegment* newSegment = 0; MESegment* nextSegment = 0; bool multiQueue = oc.getBool("meso-multi-queue"); bool junctionControl = oc.getBool("meso-junction-control"); for (int s = no - 1; s >= 0; s--) { std::string id = e.getID() + ":" + toString(s); newSegment = new MESegment(id, e, nextSegment, slength, e.getLanes()[0]->getSpeedLimit(), s, string2time(oc.getString("meso-tauff")), string2time(oc.getString("meso-taufj")), string2time(oc.getString("meso-taujf")), string2time(oc.getString("meso-taujj")), oc.getFloat("meso-jam-threshold"), multiQueue, junctionControl, lengthGeometryFactor); multiQueue = false; junctionControl = false; nextSegment = newSegment; } while (e.getNumericalID() >= static_cast<int>(myEdges2FirstSegments.size())) { myEdges2FirstSegments.push_back(0); } myEdges2FirstSegments[e.getNumericalID()] = newSegment; }
/* ------------------------------------------------------------------------- * MSPerson::MSPersonStage_Waiting - methods * ----------------------------------------------------------------------- */ MSPerson::MSPersonStage_Waiting::MSPersonStage_Waiting(const MSEdge& destination, SUMOTime duration, SUMOTime until, SUMOReal pos, const std::string& actType) : MSTransportable::Stage(destination, 0, SUMOVehicleParameter::interpretEdgePos( pos, destination.getLength(), SUMO_ATTR_DEPARTPOS, "person stopping at " + destination.getID()), WAITING), myWaitingDuration(duration), myWaitingUntil(until), myActType(actType) { }