void MSInductLoop::enterDetectorByMove(MSVehicle& veh, SUMOReal entryTimestep) throw() { unsigned int mainStripNum = 0; int flag = 0; for( MSLane::StripContIter it = myLane->myStrips.begin(); it!=myLane->myStrips.end(); it ++){ if(veh.isMainStrip(**it)){ myVehiclesOnDet[mainStripNum].insert(std::make_pair(&veh, entryTimestep)); flag = 1; break; } mainStripNum++; } if(mainStripNum < myStripCount) veh.quitRemindedEntered(this); /*if (myCurrentVehicle[mainStripNum]!=0 && myCurrentVehicle[mainStripNum]!=&veh) { // in fact, this is an error - a second vehicle is on the detector // before the first one leaves... (collision) // Still, this seems to happen, but should not be handled herein. // we will inform the user, etc., but continue as nothing had happened MsgHandler::getWarningInstance()->inform("Collision on e1-detector '" + getID() + "'.\n Vehicle '" + myCurrentVehicle[mainStripNum]->getID() + "' was aready at detector as '" + veh.getID() + "' entered."); leaveDetectorByMove(*(myCurrentVehicle[mainStripNum]), entryTimestep); }*/ //disabled by pulakesh_segmentation fault myCurrentVehicle[mainStripNum] = &veh; }
void MSMsgInductLoop::enterDetectorByMove(MSVehicle& veh, SUMOReal entryTimestep) throw() { myVehiclesOnDet.insert(std::make_pair(&veh, entryTimestep)); veh.quitRemindedEntered(this); myCurrentVehicle = &veh; }