Skip to content

Commit

Permalink
refactoring walking stage into separate file #12
Browse files Browse the repository at this point in the history
  • Loading branch information
behrisch committed Jan 12, 2024
1 parent 7135a35 commit 5b3966e
Show file tree
Hide file tree
Showing 10 changed files with 679 additions and 564 deletions.
5 changes: 3 additions & 2 deletions src/guisim/GUIPerson.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -27,6 +27,7 @@
#include <microsim/logging/FunctionBinding.h>
#include <microsim/transportables/MSPModel_Striping.h>
#include <microsim/transportables/MSStageWaiting.h>
#include <microsim/transportables/MSStageWalking.h>
#include <utils/common/MsgHandler.h>
#include <utils/common/ScopedLocker.h>
#include <utils/gui/div/GLHelper.h>
Expand Down Expand Up @@ -322,7 +323,7 @@ GUIPerson::drawGL(const GUIVisualizationSettings& s) const {

void
GUIPerson::drawAction_drawWalkingareaPath(const GUIVisualizationSettings& s) const {
MSPersonStage_Walking* stage = dynamic_cast<MSPersonStage_Walking*>(getCurrentStage());
MSStageWalking* stage = dynamic_cast<MSStageWalking*>(getCurrentStage());
if (stage != nullptr) {
setColor(s);
MSPModel_Striping::PState* stripingState = dynamic_cast<MSPModel_Striping::PState*>(stage->getState());
Expand Down Expand Up @@ -352,7 +353,7 @@ GUIPerson::drawGLAdditional(GUISUMOAbstractView* const parent, const GUIVisualiz
RGBColor current = GLHelper::getColor();
RGBColor darker = current.changedBrightness(-51);
GLHelper::setColor(darker);
MSPersonStage_Walking* stage = dynamic_cast<MSPersonStage_Walking*>(getCurrentStage());
MSStageWalking* stage = dynamic_cast<MSStageWalking*>(getCurrentStage());
assert(stage != 0);
const double exaggeration = getExaggeration(s);
const ConstMSEdgeVector& edges = stage->getRoute();
Expand Down
13 changes: 7 additions & 6 deletions src/libsumo/Person.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -29,6 +29,7 @@
#include <microsim/transportables/MSPerson.h>
#include <microsim/transportables/MSStageDriving.h>
#include <microsim/transportables/MSStageWaiting.h>
#include <microsim/transportables/MSStageWalking.h>
#include <microsim/devices/MSDevice_Taxi.h>
#include <microsim/devices/MSDispatch_TraCI.h>
#include <libsumo/TraCIConstants.h>
Expand Down Expand Up @@ -308,7 +309,7 @@ Person::getStage(const std::string& personID, int nextStageIndex) {
break;
}
case MSStageType::WALKING: {
auto* walkingStage = (MSPerson::MSPersonStage_Walking*) stage;
auto* walkingStage = (MSStageWalking*) stage;
result.departPos = walkingStage->getDepartPos();
break;
}
Expand Down Expand Up @@ -631,7 +632,7 @@ Person::convertTraCIStage(const TraCIStage& stage, const std::string personID) {
arrivalPos += edges.back()->getLength();
}
double speed = p->getMaxSpeed();
return new MSPerson::MSPersonStage_Walking(p->getID(), edges, bs, -1, speed, p->getArrivalPos(), arrivalPos, MSPModel::UNSPECIFIED_POS_LAT);
return new MSStageWalking(p->getID(), edges, bs, -1, speed, p->getArrivalPos(), arrivalPos, MSPModel::UNSPECIFIED_POS_LAT);
}

case STAGE_WAITING: {
Expand Down Expand Up @@ -735,7 +736,7 @@ Person::appendWalkingStage(const std::string& personID, const std::vector<std::s
throw TraCIException("Invalid stopping place id '" + stopID + "' for person: '" + personID + "'");
}
}
p->appendStage(new MSPerson::MSPersonStage_Walking(p->getID(), edges, bs, TIME2STEPS(duration), speed, p->getArrivalPos(), arrivalPos, MSPModel::UNSPECIFIED_POS_LAT));
p->appendStage(new MSStageWalking(p->getID(), edges, bs, TIME2STEPS(duration), speed, p->getArrivalPos(), arrivalPos, MSPModel::UNSPECIFIED_POS_LAT));
}


Expand Down Expand Up @@ -819,7 +820,7 @@ Person::moveTo(const std::string& personID, const std::string& laneID, double po
}
switch (p->getStageType(0)) {
case MSStageType::WALKING: {
MSPerson::MSPersonStage_Walking* s = dynamic_cast<MSPerson::MSPersonStage_Walking*>(p->getCurrentStage());
MSStageWalking* s = dynamic_cast<MSStageWalking*>(p->getCurrentStage());
assert(s != 0);
s->getState()->moveTo(p, l, pos, posLat, SIMSTEP);
break;
Expand Down Expand Up @@ -872,7 +873,7 @@ Person::moveToXY(const std::string& personID, const std::string& edgeID, const d
MSLane* currentLane = const_cast<MSLane*>(getSidewalk<MSEdge, MSLane>(p->getEdge()));
switch (p->getStageType(0)) {
case MSStageType::WALKING: {
MSPerson::MSPersonStage_Walking* s = dynamic_cast<MSPerson::MSPersonStage_Walking*>(p->getCurrentStage());
MSStageWalking* s = dynamic_cast<MSStageWalking*>(p->getCurrentStage());
assert(s != 0);
ev = s->getEdges();
routeIndex = (int)(s->getRouteStep() - s->getRoute().begin());
Expand Down Expand Up @@ -965,7 +966,7 @@ Person::moveToXY(const std::string& personID, const std::string& edgeID, const d
// insert walking stage after the current stage
ConstMSEdgeVector route({p->getEdge()});
const double departPos = p->getCurrentStage()->getArrivalPos();
p->appendStage(new MSPerson::MSPersonStage_Walking(p->getID(), route, nullptr, -1, -1, departPos, departPos, MSPModel::UNSPECIFIED_POS_LAT), 1);
p->appendStage(new MSStageWalking(p->getID(), route, nullptr, -1, -1, departPos, departPos, MSPModel::UNSPECIFIED_POS_LAT), 1);
}
// abort waiting stage and proceed to walking stage
p->removeStage(0);
Expand Down
6 changes: 4 additions & 2 deletions src/microsim/MSRouteHandler.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -27,9 +27,10 @@
#include <microsim/transportables/MSTransportableControl.h>
#include <microsim/transportables/MSPModel.h>
#include <microsim/transportables/MSStageDriving.h>
#include <microsim/transportables/MSStageWaiting.h>
#include <microsim/transportables/MSStageTranship.h>
#include <microsim/transportables/MSStageTrip.h>
#include <microsim/transportables/MSStageWaiting.h>
#include <microsim/transportables/MSStageWalking.h>
#include <microsim/MSEdge.h>
#include <microsim/MSLane.h>
#include <microsim/MSInsertionControl.h>
Expand All @@ -50,6 +51,7 @@
// ===========================================================================
SumoRNG MSRouteHandler::myParsingRNG("routehandler");


// ===========================================================================
// method definitions
// ===========================================================================
Expand Down Expand Up @@ -1537,7 +1539,7 @@ MSRouteHandler::addWalk(const SUMOSAXAttributes& attrs) {
}
const int departLane = attrs.getOpt<int>(SUMO_ATTR_DEPARTLANE, nullptr, ok, -1);
const double departPosLat = interpretDepartPosLat(attrs.getOpt<std::string>(SUMO_ATTR_DEPARTPOS_LAT, nullptr, ok, ""), departLane, "walk");
myActiveTransportablePlan->push_back(new MSPerson::MSPersonStage_Walking(myVehicleParameter->id, myActiveRoute, bs, duration, speed, departPos, arrivalPos, departPosLat, departLane, myActiveRouteID));
myActiveTransportablePlan->push_back(new MSStageWalking(myVehicleParameter->id, myActiveRoute, bs, duration, speed, departPos, arrivalPos, departPosLat, departLane, myActiveRouteID));
myParamStack.push_back(myActiveTransportablePlan->back());
if (attrs.hasAttribute(SUMO_ATTR_ARRIVALPOS)) {
myActiveTransportablePlan->back()->markSet(VEHPARS_ARRIVALPOS_SET);
Expand Down
10 changes: 6 additions & 4 deletions src/microsim/transportables/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -15,16 +15,18 @@ set(microsim_transportables_STAT_SRCS
MSPModel_NonInteracting.h
MSStage.cpp
MSStage.h
MSStageTrip.cpp
MSStageTrip.h
MSStageWaiting.cpp
MSStageWaiting.h
MSStageMoving.cpp
MSStageMoving.h
MSStageDriving.cpp
MSStageDriving.h
MSStageTranship.cpp
MSStageTranship.h
MSStageTrip.cpp
MSStageTrip.h
MSStageWaiting.cpp
MSStageWaiting.h
MSStageWalking.cpp
MSStageWalking.h
MSTransportable.cpp
MSTransportable.h
MSTransportableControl.cpp
Expand Down
5 changes: 3 additions & 2 deletions src/microsim/transportables/MSPModel_JuPedSim.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -39,8 +39,9 @@
#include <utils/geom/PositionVector.h>
#include <utils/options/OptionsCont.h>
#include <utils/shapes/ShapeContainer.h>
#include "MSPModel_JuPedSim.h"
#include "MSPerson.h"
#include "MSStageWalking.h"
#include "MSPModel_JuPedSim.h"


// #define DEBUG_GEOMETRY_GENERATION
Expand Down Expand Up @@ -276,7 +277,7 @@ MSPModel_JuPedSim::execute(SUMOTime time) {
}

MSPerson* person = state->getPerson();
MSPerson::MSPersonStage_Walking* stage = dynamic_cast<MSPerson::MSPersonStage_Walking*>(person->getCurrentStage());
MSStageWalking* stage = dynamic_cast<MSStageWalking*>(person->getCurrentStage());
assert(stage != nullptr);

// Updates the agent position.
Expand Down

0 comments on commit 5b3966e

Please sign in to comment.