void GUIPerson::drawGLAdditional(GUISUMOAbstractView* const parent, const GUIVisualizationSettings& s) const { glPushName(getGlID()); glPushMatrix(); glTranslated(0, 0, getType() - .1); // don't draw on top of other cars if (hasActiveAddVisualisation(parent, VO_SHOW_WALKINGAREA_PATH)) { drawAction_drawWalkingareaPath(s); } if (hasActiveAddVisualisation(parent, VO_SHOW_ROUTE)) { if (getCurrentStageType() == MOVING_WITHOUT_VEHICLE) { setColor(s); RGBColor current = GLHelper::getColor(); RGBColor darker = current.changedBrightness(-51); GLHelper::setColor(darker); MSPersonStage_Walking* stage = dynamic_cast<MSPersonStage_Walking*>(getCurrentStage()); assert(stage != 0); const SUMOReal exaggeration = s.personSize.getExaggeration(s); const ConstMSEdgeVector& edges = stage->getRoute(); for (ConstMSEdgeVector::const_iterator it = edges.begin(); it != edges.end(); ++it) { GUILane* lane = static_cast<GUILane*>((*it)->getLanes()[0]); GLHelper::drawBoxLines(lane->getShape(), lane->getShapeRotations(), lane->getShapeLengths(), exaggeration); } } } glPopMatrix(); glPopName(); }
const MSEdge* MSPerson::getNextEdgePtr() const { if (getCurrentStageType() == MOVING_WITHOUT_VEHICLE) { MSPersonStage_Walking* walkingStage = dynamic_cast<MSPersonStage_Walking*>(*myStep); assert(walkingStage != 0); return walkingStage->getPedestrianState()->getNextEdge(*walkingStage); } return 0; }
void GUIPerson::drawAction_drawWalkingareaPath(const GUIVisualizationSettings& s) const { MSPersonStage_Walking* stage = dynamic_cast<MSPersonStage_Walking*>(getCurrentStage()); if (stage != 0) { setColor(s); MSPModel_Striping::PState* stripingState = dynamic_cast<MSPModel_Striping::PState*>(stage->getPedestrianState()); if (stripingState != 0) { MSPModel_Striping::WalkingAreaPath* waPath = stripingState->myWalkingAreaPath; if (waPath != 0) { glPushMatrix(); glTranslated(0, 0, getType()); GLHelper::drawBoxLines(waPath->shape, 0.05); glPopMatrix(); } } } }