RORouteDef* RORouteDef::copy(const std::string& id) const { RORouteDef* result = new RORouteDef(id, 0, myTryRepair); for (std::vector<RORoute*>::const_iterator i = myAlternatives.begin(); i != myAlternatives.end(); i++) { RORoute* route = *i; RGBColor* col = route->getColor() != 0 ? new RGBColor(*route->getColor()) : 0; result->addLoadedAlternative(new RORoute(id, 0, 1, route->getEdgeVector(), col)); } return result; }
RORouteDef* RORouteDef::copyOrigDest(const std::string& id) const { RORouteDef* result = new RORouteDef(id, 0, true); RORoute* route = myAlternatives[0]; RGBColor* col = route->getColor() != 0 ? new RGBColor(*route->getColor()) : 0; std::vector<const ROEdge*> edges; edges.push_back(route->getFirst()); edges.push_back(route->getLast()); result->addLoadedAlternative(new RORoute(id, 0, 1, edges, col)); return result; }
RORouteDef* RORouteDef::copy(const std::string& id, const SUMOTime stopOffset) const { RORouteDef* result = new RORouteDef(id, 0, myTryRepair, myMayBeDisconnected); for (std::vector<RORoute*>::const_iterator i = myAlternatives.begin(); i != myAlternatives.end(); i++) { RORoute* route = *i; RGBColor* col = route->getColor() != 0 ? new RGBColor(*route->getColor()) : 0; RORoute* newRoute = new RORoute(id, 0, 1, route->getEdgeVector(), col, route->getStops()); newRoute->addStopOffset(stopOffset); result->addLoadedAlternative(newRoute); } return result; }
void RORouteHandler::closeVehicle() { // get the vehicle id if (myVehicleParameter->departProcedure == DEPART_GIVEN && myVehicleParameter->depart < myBegin) { return; } // get vehicle type SUMOVTypeParameter* type = myNet.getVehicleTypeSecure(myVehicleParameter->vtypeid); if (type == 0) { myErrorOutput->inform("The vehicle type '" + myVehicleParameter->vtypeid + "' for vehicle '" + myVehicleParameter->id + "' is not known."); type = myNet.getVehicleTypeSecure(DEFAULT_VTYPE_ID); } else { if (!myKeepVTypeDist) { // fix the type id in case we used a distribution myVehicleParameter->vtypeid = type->id; } } if (type->vehicleClass == SVC_PEDESTRIAN) { WRITE_WARNING("Vehicle type '" + type->id + "' with vClass=pedestrian should only be used for persons and not for vehicle '" + myVehicleParameter->id + "'."); } // get the route RORouteDef* route = myNet.getRouteDef(myVehicleParameter->routeid); if (route == 0) { myErrorOutput->inform("The route of the vehicle '" + myVehicleParameter->id + "' is not known."); return; } if (route->getID()[0] != '!') { route = route->copy("!" + myVehicleParameter->id, myVehicleParameter->depart); } // build the vehicle if (!MsgHandler::getErrorInstance()->wasInformed()) { ROVehicle* veh = new ROVehicle(*myVehicleParameter, route, type, &myNet, myErrorOutput); if (myNet.addVehicle(myVehicleParameter->id, veh)) { registerLastDepart(); } } }
void RORouteHandler::closeVehicle() { // get the vehicle id if (myVehicleParameter->departProcedure == DEPART_GIVEN && myVehicleParameter->depart < string2time(OptionsCont::getOptions().getString("begin"))) { return; } // get vehicle type SUMOVTypeParameter* type = myNet.getVehicleTypeSecure(myVehicleParameter->vtypeid); // get the route RORouteDef* route = myNet.getRouteDef(myVehicleParameter->routeid); if (route == 0) { myErrorOutput->inform("The route of the vehicle '" + myVehicleParameter->id + "' is not known."); return; } if (route->getID()[0] != '!') { route = route->copy("!" + myVehicleParameter->id); } // build the vehicle if (!MsgHandler::getErrorInstance()->wasInformed()) { ROVehicle* veh = new ROVehicle(*myVehicleParameter, route, type); myNet.addVehicle(myVehicleParameter->id, veh); registerLastDepart(); } }