/** * Returns all the people sitting in this vehicle. * * @param vehicle * @return All the people in this vehicle. If there is more than one, the first entry is the driver. */ final static List<Identifiable<?>> getPeopleInVehicle(QVehicle vehicle) { ArrayList<Identifiable<?>> people = new ArrayList<>(); people.add(vehicle.getDriver()); for ( PassengerAgent passenger : vehicle.getPassengers() ) { people.add(passenger) ; } return people; }
private void moveVehicleFromInlinkToAbort(final QVehicle veh, final QLaneI fromLane, final double now, Id<Link> currentLinkId) { fromLane.popFirstVehicle(); // --> this.context.getEventsManager().processEvent(new LinkLeaveEvent(now, veh.getId(), currentLinkId)); // <-- // first treat the passengers: for ( PassengerAgent pp : veh.getPassengers() ) { if ( pp instanceof MobsimAgent ) { ((MobsimAgent)pp).setStateToAbort(now); netsimEngine.arrangeNextAgentState((MobsimAgent)pp) ; } else if ( wrnCnt < 1 ) { wrnCnt++ ; log.warn("encountering PassengerAgent that cannot be cast into a MobsimAgent; cannot say if this is a problem" ) ; log.warn(Gbl.ONLYONCE) ; } } // now treat the driver: veh.getDriver().setStateToAbort(now) ; netsimEngine.arrangeNextAgentState(veh.getDriver()) ; }
public final void positionAgentGivenDistanceFromFNode(final Collection<AgentSnapshotInfo> positions, Coord startCoord, Coord endCoord, double lengthOfCurve, QVehicle veh, double distanceFromFromNode, Integer lane, double speedValueBetweenZeroAndOne){ // I think that the main reason why this exists as public method is that AssignmentEmulatingQLane wants to use it directly. // The reason for this, in return, is that positionVehiclesAlongLine(...) is a service method for queue models only. kai, apr'16 MobsimDriverAgent driverAgent = veh.getDriver(); AgentSnapshotInfo pos = snapshotInfoFactory.createAgentSnapshotInfo(driverAgent.getId(), startCoord, endCoord, distanceFromFromNode, lane, lengthOfCurve); pos.setColorValueBetweenZeroAndOne(speedValueBetweenZeroAndOne); if (driverAgent instanceof TransitDriverAgent){ pos.setAgentState(AgentState.TRANSIT_DRIVER); } else if ( driverAgent.getMode().equals(TransportMode.car)) { pos.setAgentState(AgentState.PERSON_DRIVING_CAR); } else { pos.setAgentState(AgentState.PERSON_OTHER_MODE ); } if ( scenario.getPopulation().getPersonAttributes().getAttribute( driverAgent.getId().toString(), "marker" ) != null ) { pos.setAgentState( AgentState.PERSON_OTHER_MODE ) ; } this.positionPassengers(positions, veh.getPassengers(), distanceFromFromNode, startCoord, endCoord, lengthOfCurve, lane+5, speedValueBetweenZeroAndOne); // (this is deliberately first memorizing "pos" but then filling in the passengers first) positions.add(pos); }
for (PassengerAgent passenger : veh.getPassengers()) { if (stuckAgents.contains(passenger.getId())) continue; else stuckAgents.add(passenger.getId());