52FXIMPLEMENT(
GNELane, FXDelegator, 0, 0)
113 return myExaggeration;
119 return myDrawingWidth;
125 return myInternalDrawingWidth;
143 return myDrawAsRailway;
149 return myDrawSuperposed;
158#pragma warning(disable: 4355)
169 setParent<GNEEdge*>(edge);
181 myDrawingConstants(nullptr),
182 mySpecialColor(nullptr),
183 mySpecialColorValue(-1),
184 myLane2laneConnections(this) {
243const std::vector<double>&
249const std::vector<double>&
268 if (laneShape.length2D() < 1) {
269 laneShape.extrapolate2D(1 - laneShape.length2D());
277 additional->updateGeometry();
281 additional->updateGeometry();
285 demandElement->updateGeometry();
289 demandElement->updateGeometry();
293 additionalParent->updateGeometry();
297 childAdditionals->updateGeometry();
302 childAdditional->computePathElement();
305 childDemandElement->computePathElement();
308 childGenericData->computePathElement();
315 for (
const auto& connection : incomingConnections) {
316 connection->updateGeometry();
320 for (
const auto& connection : outGoingConnections) {
321 connection->markConnectionGeometryDeprecated();
322 connection->updateGeometry();
349 if (inspectedElements.isInspectingSingleElement() && (inspectedElements.getFirstAC()->getTagProperty()->getTag() ==
SUMO_TAG_CONNECTION) &&
362 if (inspectedElements.isInspectingSingleElement() && (inspectedElements.getFirstAC()->getTagProperty()->getTag() ==
SUMO_TAG_CONNECTION) &&
393 if (viewParent->getAdditionalFrame()->getViewObjetsSelector()->isNetworkElementSelected(
this)) {
395 }
else if (viewParent->getAdditionalFrame()->getViewObjetsSelector()->getTag() ==
myTagProperty->
getTag()) {
452 if (editedNetworkElement) {
453 return editedNetworkElement ==
this;
534 new FXMenuSeparator(ret);
544 new FXMenuSeparator(ret);
550 new FXMenuSeparator(ret);
560 resetEndPoints->enable();
562 resetEndPoints->disable();
569 new FXMenuSeparator(ret);
579 new FXMenuSeparator(ret);
586 for (
auto it : names) {
588 FXMenuRadio* mc =
new FXMenuRadio(ret, it.c_str(),
this, FXDataTarget::ID_OPTION + state);
595 mc->handle(&parent, FXSEL(SEL_COMMAND, FXWindow::ID_DISABLE),
nullptr);
599 new FXMenuSeparator(ret);
604 const Position firstAnglePos = laneShape.positionAtOffset2D(pos - 0.001);
605 const Position secondAnglePos = laneShape.positionAtOffset2D(pos);
606 const double angle = firstAnglePos.
angleTo2D(secondAnglePos);
661 double laneParametricLength =
getParentEdges().front()->getNBEdge()->getLoadedLength();
662 if (laneParametricLength > 0) {
663 return laneParametricLength;
665 throw ProcessError(
TL(
"Lane Parametric Length cannot be never 0"));
800 if (canParse<double>(value) && (parse<double>(value) == 0)) {
822 return canParse<double>(value);
829 if (value.empty() || (value ==
"default")) {
836 return canParse<double>(value) && (parse<double>(value) >= 0);
838 return canParse<bool>(value);
844 }
else if (canParse<PositionVector>(value)) {
845 return parse<PositionVector>(value).size() > 1;
858 WRITE_WARNINGF(
TL(
"Opposite lane '%' does not connect the same nodes as edge '%'!"), value, edge->
getID());
867 return canParse<double>(value) && (parse<double>(value) >= 0);
940 if (value.empty() || (value ==
"default")) {
970 const std::string oldValue =
getParentEdges().front()->getNBEdge()->getLaneStruct(
myIndex).oppositeID;
972 if (oppEdge !=
nullptr) {
997 if (updateTemplate) {
1014 if (laneColor.
alpha() != 0) {
1069 glTranslated(0, 0, 0.1);
1095 glTranslated(0, 0, 1);
1111 if (!additional->getTagProperty()->isListedElement()) {
1112 additional->drawGL(s);
1117 if (!demandElement->getTagProperty()->isPlacedInRTree()) {
1118 demandElement->drawGL(s);
1133 const bool firstlane = (
myIndex == 0);
1150 glTranslated(0, 0, 0.1);
1157 }
else if (firstlane) {
1162 if (changeLeftCurrent) {
1165 3, 6, topSeparatorOffset,
true,
true, s.
lefthand, 1);
1170 }
else if (lastLane) {
1178 if (changeRightCurrent) {
1181 3, 6, botSeparatorOffset,
true,
true, s.
lefthand, 1);
1188 if (changeLeftCurrent) {
1191 3, 6, topSeparatorOffset,
true,
true, s.
lefthand, 1);
1197 if (changeRightCurrent) {
1200 3, 6, botSeparatorOffset,
true,
true, s.
lefthand, 1);
1216 const int noLinks = (int)connections.size();
1224 const double width =
getParentEdges().front()->getNBEdge()->getLaneWidth(
myIndex) / (double) noLinks;
1228 for (
int i = noLinks - 1; i >= 0; i--) {
1230 const double x2 = x1 - (double)(width / 2.);
1233 connections[s.
lefthand ? noLinks - 1 - i : i]);
1250 (
getParentEdges().front()->getToJunction()->getNBNode()->getControllingTLS().size() > 0)) {
1254 const int noLinks = (int)connections.size();
1266 for (
int i = noLinks - 1; i >= 0; --i) {
1268 const double x2 = x1 - (double)(w / 2.);
1270 const int linkNo = connections[s.
lefthand ? noLinks - 1 - i : i].tlLinkIndex;
1293 glTranslated(0, 0, 3);
1301 glTranslated(end.
x(), end.
y(), 0);
1303 glRotated(rot, 0, 0, 1);
1313 for (
const auto& connection :
getParentEdges().front()->getNBEdge()->myConnections) {
1314 if (connection.fromLane ==
myIndex) {
1358 glTranslated(0, 5, 0);
1360 glTranslated(0, -5, 0);
1376 glTranslated(0, 0, 0.1);
1377 std::vector<NBEdge::Connection> connections =
getParentEdges().front()->getNBEdge()->getConnectionsFromLane(
myIndex);
1380 for (
auto it : connections) {
1393 glColor3d(.4, .4, .4);
1396 glColor3d(.7, .4, .4);
1399 glColor3d(.7, .7, .7);
1402 glColor3d(.7, .7, 1);
1405 glColor3d(.75, .5, 0.25);
1410 const Position& endPos = it.toEdge->getLaneShape(it.toLane)[0];
1412 glVertex2d(startPos.
x(), startPos.
y());
1413 glVertex2d(endPos.
x(), endPos.
y());
1445 if (inspectedElements.getFirstAC() &&
1446 !inspectedElements.getFirstAC()->isAttributeCarrierSelected() &&
1447 inspectedElements.getFirstAC()->getTagProperty()->vehicleEdges()) {
1449 std::vector<std::string> viaEdges = parse<std::vector<std::string> >(inspectedElements.getFirstAC()->getAttribute(
SUMO_ATTR_VIA));
1451 for (
const auto& edge : viaEdges) {
1537 switch (activeScheme) {
1553 switch (activeScheme) {
1579 switch (activeScheme) {
1581 switch (myPermissions) {
1588 return getParentEdges().front()->getNBEdge()->getPermissions() == 0 ? 10 : 3;
1599 if (
getParentEdges().front()->getNBEdge()->isMacroscopicConnector()) {
1619 return (
double)myPermissions;
1678 return fabs(
getParentEdges().front()->getNBEdge()->getDistance());
1704 const auto& laneStopOffset =
getParentEdges().front()->getNBEdge()->getLaneStruct(
myIndex).laneStopOffset;
1706 if (laneStopOffset.isDefined() && (laneStopOffset.getPermissions() &
SVC_PASSENGER) != 0) {
1709 const double rot =
RAD2DEG(atan2((end.
x() - f.
x()), (f.
y() - end.
y())));
1712 glTranslated(end.
x(), end.
y(), 1);
1713 glRotated(rot, 0, 0, 1);
1714 glTranslated(0, laneStopOffset.getOffset(), 0);
1738 glColor3d(0.3, 0.3, 0.3);
1745 glTranslated(0, 0, 0.1);
1759 glBegin(GL_TRIANGLES);
1785 glTranslated(0, 0, 0.1);
1793 glTranslated(0, 0, 0.01);
1795 glColor3d(0.8, 0.8, 0.8);
1801 glTranslated(0, 0, 0.01);
1836 glRotated(90, 0, 0, 1);
1869 glTranslated(customShape.front().x(), customShape.front().y(), 0.1);
1875 glTranslated(0, 0, 0.1);
1884 glTranslated(0, 0, 0.1);
1894 glTranslated(customShape.back().x(), customShape.back().y(), 0.1);
1900 glTranslated(0, 0, 0.1);
1909 glTranslated(0, 0, 0.1);
1939std::vector<GNEConnection*>
1942 std::vector<GNEConnection*> incomingConnections;
1945 if (junctionSource) {
1949 for (
const auto& connection : incomingEdge->getGNEConnections()) {
1950 if (connection->getLaneTo()->getIndex() ==
getIndex()) {
1951 incomingConnections.push_back(connection);
1956 return incomingConnections;
1960std::vector<GNEConnection*>
1964 std::vector<GNEConnection*> outcomingConnections;
1966 for (
const auto& connection : edgeConnections) {
1967 if (connection->getLaneFrom()->getIndex() ==
getIndex()) {
1968 outcomingConnections.push_back(connection);
1971 return outcomingConnections;
1979 for (
const auto& incomingConnection : incomingConnections) {
1980 incomingConnection->updateConnectionID();
1984 for (
const auto& outcomingConnection : outcomingConnections) {
1985 outcomingConnection->updateConnectionID();
1993 if (
getParentEdges().front()->getNBEdge()->getFinalLength() > 0) {
1996 return POSITION_EPS;
2010 FXMenuPane* edgeOperations =
new FXMenuPane(ret);
2012 if (edgeSelSize > 0) {
2013 new FXMenuCascade(ret,
TLF(
"Edge operations (% selected)",
toString(edgeSelSize)).c_str(),
nullptr, edgeOperations);
2015 new FXMenuCascade(ret,
TL(
"Edge operations"),
nullptr, edgeOperations);
2021 splitBothDirections->disable();
2022 const auto oppositeEdges =
getParentEdges().front()->getOppositeEdges();
2023 if (oppositeEdges.size() == 0) {
2024 splitBothDirections->setText(
TL(
"Split edge in both directions here (no opposite edge)"));
2026 for (
const auto& oppositeEdge : oppositeEdges) {
2028 const auto reverseGeometry = oppositeEdge->getNBEdge()->getInnerGeometry().reverse();
2029 if (reverseGeometry ==
getParentEdges().front()->getNBEdge()->getInnerGeometry()) {
2030 splitBothDirections->enable();
2031 splitBothDirections->setText(
TL(
"Split edge in both directions here"));
2038 if (edgeSelSize == 1) {
2068 int numSelectedLanes = 0;
2070 bool edgeHasSidewalk =
false;
2071 bool edgeHasBikelane =
false;
2072 bool edgeHasBuslane =
false;
2073 bool differentLaneShapes =
false;
2077 numSelectedLanes = (int)selectedLanes.size();
2079 for (
const auto& selectedLane : selectedLanes) {
2080 if (selectedLane->getParentEdges().front()->hasRestrictedLane(
SVC_PEDESTRIAN)) {
2081 edgeHasSidewalk =
true;
2083 if (selectedLane->getParentEdges().front()->hasRestrictedLane(
SVC_BICYCLE)) {
2084 edgeHasBikelane =
true;
2086 if (selectedLane->getParentEdges().front()->hasRestrictedLane(
SVC_BUS)) {
2087 edgeHasBuslane =
true;
2089 if (selectedLane->getParentEdges().front()->getNBEdge()->getLaneStruct(selectedLane->getIndex()).customShape.size() != 0) {
2090 differentLaneShapes =
true;
2097 differentLaneShapes =
getParentEdges().front()->getNBEdge()->getLaneStruct(
myIndex).customShape.size() != 0;
2100 FXMenuPane* laneOperations =
new FXMenuPane(ret);
2102 if (numSelectedLanes > 0) {
2103 new FXMenuCascade(ret,
TLF(
"Lane operations (% selected)",
toString(numSelectedLanes)).c_str(),
nullptr, laneOperations);
2105 new FXMenuCascade(ret,
TL(
"Lane operations"),
nullptr, laneOperations);
2110 if (!differentLaneShapes) {
2111 resetCustomShape->disable();
2115 resetOppositeLane->disable();
2118 FXMenuPane* addSpecialLanes =
new FXMenuPane(laneOperations);
2120 FXMenuPane* removeSpecialLanes =
new FXMenuPane(laneOperations);
2122 FXMenuPane* transformSlanes =
new FXMenuPane(laneOperations);
2137 removeSidewalk->disable();
2139 removeBikelane->disable();
2141 removeBuslane->disable();
2143 removeGreenVerge->disable();
2150 new FXMenuCascade(laneOperations,
TLF(
"Add restricted %",
toString(
SUMO_TAG_LANE)).c_str(),
nullptr, addSpecialLanes);
2151 FXMenuCascade* cascadeRemoveSpecialLane =
new FXMenuCascade(laneOperations,
TLF(
"Remove restricted %",
toString(
SUMO_TAG_LANE)).c_str(),
nullptr, removeSpecialLanes);
2152 new FXMenuCascade(laneOperations,
TLF(
"Transform to restricted %",
toString(
SUMO_TAG_LANE)).c_str(),
nullptr, transformSlanes);
2154 if (edgeHasSidewalk) {
2155 transformLaneToSidewalk->disable();
2156 addSidewalk->disable();
2157 removeSidewalk->enable();
2159 if (edgeHasBikelane) {
2160 transformLaneToBikelane->disable();
2161 addBikelane->disable();
2162 removeBikelane->enable();
2164 if (edgeHasBuslane) {
2165 transformLaneToBuslane->disable();
2166 addBuslane->disable();
2167 removeBuslane->enable();
2170 transformLaneToGreenVerge->disable();
2171 removeGreenVerge->enable();
2175 cascadeRemoveSpecialLane->disable();
2190 FXMenuPane* edgeOperations =
new FXMenuPane(ret);
2192 if (numSelectedEdges > 0) {
2193 new FXMenuCascade(ret,
TLF(
"Template operations (% selected)",
toString(numSelectedEdges)).c_str(),
nullptr, edgeOperations);
2195 new FXMenuCascade(ret,
TL(
"Template operations"),
nullptr, edgeOperations);
2202 applyTemplate->disable();
2210 FXMenuPane* reachableByClass =
new FXMenuPane(ret);
2219 menuCommand->handle(&parent, FXSEL(SEL_COMMAND, FXWindow::ID_DISABLE),
nullptr);
NetworkEditMode
@brie enum for network edit modes
@ NETWORK_DELETE
mode for deleting network elements
@ NETWORK_MOVE
mode for moving network elements
@ NETWORK_ADDITIONAL
Mode for editing additionals.
@ NETWORK_TLS
mode for editing tls
@ NETWORK_SELECT
mode for selecting network elements
@ NETWORK_CONNECT
mode for connecting lanes
@ MID_GNE_ADDSELECT_EDGE
Add edge to selected items - menu entry.
@ MID_GNE_LANE_EDIT_SHAPE
edit lane shape
@ MID_GNE_LANE_TRANSFORM_BIKE
transform lane to bikelane
@ MID_GNE_EDGE_REVERSE
reverse an edge
@ MID_ADDSELECT
Add to selected items - menu entry.
@ MID_GNE_LANE_ADD_BUS
add busLane
@ MID_GNE_REMOVESELECT_EDGE
Remove edge from selected items - Menu Entry.
@ MID_GNE_EDGE_STRAIGHTEN_ELEVATION
interpolate z values linear between junctions
@ MID_GNE_EDGE_SMOOTH
smooth geometry
@ MID_GNE_LANE_RESET_CUSTOMSHAPE
reset custom shape
@ MID_GNE_EDGE_STRAIGHTEN
remove inner geometry
@ MID_GNE_LANE_TRANSFORM_BUS
transform lane to busLane
@ MID_SHOWPARS_PARENT
Show object parent parameter - popup entry.
@ MID_COPY_EDGE_NAME
Copy edge name (for lanes only)
@ MID_GNE_LANE_DUPLICATE
duplicate a lane
@ MID_GNE_LANE_ADD_GREENVERGE_FRONT
add greenVerge front of current lane
@ MID_GNE_LANE_REMOVE_GREENVERGE
remove greenVerge
@ MID_GNE_EDGE_ADD_REVERSE_DISCONNECTED
add reverse edge disconnected (used for for spreadtype center)
@ MID_GNE_EDGE_SPLIT_BIDI
split an edge
@ MID_GNE_LANE_REMOVE_BIKE
remove bikelane
@ MID_GNE_LANE_RESET_OPPOSITELANE
reset opposite lane
@ MID_REACHABILITY
show reachability from a given lane
@ MID_GNE_EDGE_RESET_LENGTH
reset custom lengths
@ MID_GNE_LANE_REMOVE_BUS
remove busLane
@ MID_GNE_LANE_REMOVE_SIDEWALK
remove sidewalk
@ MID_GNE_EDGE_RESET_ENDPOINT
reset default geometry endpoints
@ MID_SHOWPARS
Show object parameter - popup entry.
@ MID_GNE_LANE_ADD_GREENVERGE_BACK
add greenVerge back of current lane
@ MID_GNE_EDGE_SMOOTH_ELEVATION
smooth elevation with regard to adjoining edges
@ MID_GNE_EDGE_ADD_REVERSE
add reverse edge
@ MID_GNE_EDGE_APPLYTEMPLATE
apply template
@ MID_GNE_EDGE_USEASTEMPLATE
use edge as tempalte
@ MID_GNE_LANE_ADD_SIDEWALK
add sidewalk
@ MID_GNE_RESET_GEOMETRYPOINT
reset geometry point
@ MID_GNE_LANE_TRANSFORM_SIDEWALK
transform lane to sidewalk
@ MID_GNE_LANE_ADD_BIKE
add bikelane
@ MID_GNE_EDGE_SPLIT
split an edge
@ MID_DELETE
delete item - menu entry
@ MID_GNE_LANE_TRANSFORM_GREENVERGE
transform lane to greenVerge
@ MID_GNE_CUSTOM_GEOMETRYPOINT
set custom geometry point
@ MID_GNE_EDGE_EDIT_ENDPOINT
change default geometry endpoints
@ MID_REMOVESELECT
Remove from selected items - Menu Entry.
@ GLO_FRONTELEMENT
front element (used in netedit)
@ GLO_TEXTNAME
text element (used in netedit)
GUIViewObjectsHandler gViewObjectsHandler
#define WRITE_WARNINGF(...)
const SVCPermissions SVCAll
all VClasses are allowed
SVCPermissions invertPermissions(SVCPermissions permissions)
negate the given permissions and ensure that only relevant bits are set
bool isRailway(SVCPermissions permissions)
Returns whether an edge with the given permissions is a (exclusive) railway edge.
bool isWaterway(SVCPermissions permissions)
Returns whether an edge with the given permissions is a waterway edge.
const std::string & getVehicleClassNames(SVCPermissions permissions, bool expand)
Returns the ids of the given classes, divided using a ' '.
SVCPermissions parseVehicleClasses(const std::string &allowedS)
Parses the given definition of allowed vehicle classes into the given containers Deprecated classes g...
bool canParseVehicleClasses(const std::string &classes)
Checks whether the given string contains only known vehicle classes.
StringBijection< SUMOVehicleClass > SumoVehicleClassStrings(sumoVehicleClassStringInitializer, SVC_CUSTOM2, false)
long long int SVCPermissions
bitset where each bit declares whether a certain SVC may use this edge/lane
SUMOVehicleClass
Definition of vehicle classes to differ between different lane usage and authority types.
@ SVC_SHIP
is an arbitrary ship
@ SVC_IGNORING
vehicles ignoring classes
@ SVC_RAIL_CLASSES
classes which drive on tracks
@ SVC_PASSENGER
vehicle is a passenger car (a "normal" car)
@ SVC_BICYCLE
vehicle is a bicycle
@ SVC_RAIL_FAST
vehicle that is allowed to drive on high-speed rail tracks
@ SVC_AUTHORITY
authorities vehicles
@ SVC_BUS
vehicle is a bus
@ SVC_PEDESTRIAN
pedestrian
@ SUMO_TAG_ACCESS
An access point for a train stop.
@ SUMO_TAG_CONNECTION
connectioon between two lanes
@ SUMO_TAG_LANE
begin/end of the description of a single lane
@ SUMO_TAG_EDGE
begin/end of the description of an edge
LinkDirection
The different directions a link between two lanes may take (or a stream between two edges)....
@ PARTLEFT
The link is a partial left direction.
@ RIGHT
The link is a (hard) right direction.
@ TURN
The link is a 180 degree turn.
@ LEFT
The link is a (hard) left direction.
@ STRAIGHT
The link is a straight direction.
@ TURN_LEFTHAND
The link is a 180 degree turn (left-hand network)
@ PARTRIGHT
The link is a partial right direction.
@ NODIR
The link has no direction (is a dead end link)
LinkState
The right-of-way state of a link between two lanes used when constructing a NBTrafficLightLogic,...
@ LINKSTATE_ALLWAY_STOP
This is an uncontrolled, all-way stop link.
@ LINKSTATE_MAJOR
This is an uncontrolled, major link, may pass.
@ LINKSTATE_STOP
This is an uncontrolled, minor link, has to stop.
@ LINKSTATE_EQUAL
This is an uncontrolled, right-before-left link.
@ LINKSTATE_ZIPPER
This is an uncontrolled, zipper-merge link.
@ LINKSTATE_TL_OFF_BLINKING
The link is controlled by a tls which is off and blinks, has to brake.
@ LINKSTATE_MINOR
This is an uncontrolled, minor link, has to brake.
@ LINKSTATE_TL_OFF_NOSIGNAL
The link is controlled by a tls which is off, not blinking, may pass.
SumoXMLAttr
Numbers representing SUMO-XML - attributes.
@ SUMO_ATTR_FROM_JUNCTION
@ GNE_ATTR_STOPOFFSET
stop offset (virtual, used by edge and lanes)
@ GNE_ATTR_OPPOSITE
to busStop (used by personPlans)
@ GNE_ATTR_PARENT
parent of an additional element
@ SUMO_ATTR_CUSTOMSHAPE
whether a given shape is user-defined
@ GNE_ATTR_FROM_LANEID
from lane ID (used in GNEConnection)
@ GNE_ATTR_STOPOEXCEPTION
stop exceptions (virtual, used by edge and lanes)
@ SUMO_ATTR_SHAPE
edge: the shape in xml-definition
@ GNE_ATTR_TO_LANEID
to lane ID (used in GNEConnection)
const double SUMO_const_laneWidth
const double SUMO_const_laneMarkWidth
std::string toString(const T &t, std::streamsize accuracy=gPrecision)
A class that stores a 2D geometrical boundary.
static void drawLine(const Position &beg, double rot, double visLength)
Draws a thin line.
static void setColor(const RGBColor &c)
Sets the gl-color to this value.
static void drawOutlineCircle(double radius, double iRadius, int steps=8)
Draws an unfilled circle around (0,0)
static void drawTriangleAtEnd(const Position &p1, const Position &p2, double tLength, double tWidth, const double extraOffset=0)
Draws a triangle at the end of the given line.
static void drawTextAtEnd(const std::string &text, const PositionVector &shape, double x, const GUIVisualizationTextSettings &settings, const double scale)
draw text and the end of shape
static void popMatrix()
pop matrix
static RGBColor getColor()
gets the gl-color
static void drawFilledCircleDetailed(const GUIVisualizationSettings::Detail d, const double radius)
Draws a filled circle around (0,0) depending of level of detail.
static void drawBoxLine(const Position &beg, double rot, double visLength, double width, double offset=0)
Draws a thick line.
static void pushMatrix()
push matrix
static void drawInverseMarkings(const PositionVector &geom, const std::vector< double > &rots, const std::vector< double > &lengths, double maxLength, double spacing, double halfWidth, bool cl, bool cr, bool lefthand, double scale)
@bried draw the space between markings (in road color)
static void drawText(const std::string &text, const Position &pos, const double layer, const double size, const RGBColor &col=RGBColor::BLACK, const double angle=0, const int align=0, double width=-1)
static void drawCrossTies(const PositionVector &geom, const std::vector< double > &rots, const std::vector< double > &lengths, double length, double spacing, double halfWidth, double offset, bool lessDetail)
draw crossties for railroads or pedestrian crossings
GNETagSelector * getAdditionalTagSelector() const
get additional tag selector
bool isAttributeCarrierSelected() const
check if attribute carrier is selected
double getCommonAttributeDouble(SumoXMLAttr key) const
bool isMarkedForDrawingFront() const
check if this AC is marked for drawing front
bool mySelected
boolean to check if this AC is selected (more quickly as checking GUIGlObjectStorage)
const std::string getID() const override
get ID (all Attribute Carriers have one)
PositionVector getCommonAttributePositionVector(SumoXMLAttr key) const
void setCommonAttribute(SumoXMLAttr key, const std::string &value, GNEUndoList *undoList)
const std::string & getTagStr() const
get tag assigned to this object in string format
bool drawUsingSelectColor() const
check if attribute carrier must be drawn using selecting color.
void drawInLayer(const double typeOrLayer, const double extraOffset=0) const
draw element in the given layer, or in front if corresponding flag is enabled
Position getCommonAttributePosition(SumoXMLAttr key) const
GNENet * myNet
pointer to net
GNENet * getNet() const
get pointer to net
bool isCommonAttributeValid(SumoXMLAttr key, const std::string &value) const
std::string getCommonAttribute(SumoXMLAttr key) const
const GNETagProperties * myTagProperty
reference to tagProperty associated with this attribute carrier
bool myPossibleCandidate
flag to mark this element as possible candidate
bool mySpecialCandidate
flag to mark this element as special candidate
bool myInvalidCandidate
flag to mark this element as invalid candidate
bool myTargetCandidate
flag to mark this element as target candidate
bool myConflictedCandidate
flag to mark this element as conflicted candidate
bool mySourceCandidate
flag to mark this element as source candidate
static void changeAttribute(GNEAttributeCarrier *AC, SumoXMLAttr key, const std::string &value, GNEUndoList *undoList, const bool force=false)
change attribute
void calculateContourExtrudedShape(const GUIVisualizationSettings &s, const GUIVisualizationSettings::Detail d, const GUIGlObject *glObject, const PositionVector &shape, const double layer, const double extrusionWidth, const double scale, const bool closeFirstExtrem, const bool closeLastExtrem, const double offset, const GNESegment *segment, const GUIGlObject *boundaryParent, const bool addToSelectedObjects=true) const
calculate contour extruded (used in elements formed by a central shape)
Boundary getContourBoundary() const
get contour boundary
bool drawDottedContours(const GUIVisualizationSettings &s, const GUIVisualizationSettings::Detail d, const GNEAttributeCarrier *AC, const double lineWidth, const bool addOffset) const
draw dotted contours (basics, select, delete, inspect...)
void calculateContourAllGeometryPoints(const GUIVisualizationSettings &s, const GUIVisualizationSettings::Detail d, const GUIGlObject *glObject, const PositionVector &shape, const double layer, const double radius, const double scale, const bool calculatePosOverShape) const
calculate contour for all geometry points
struct for saving subordinated elements (Junction->Edge->Lane->(Additional | DemandElement)
ProtectElements * getProtectElements() const
get protect elements modul
NBEdge * getNBEdge() const
returns the internal NBEdge
static const double SNAP_RADIUS
const GNEHierarchicalContainerParents< GNEAdditional * > & getParentAdditionals() const
get parent additionals
const GNEHierarchicalContainerParents< GNEDemandElement * > & getParentDemandElements() const
get parent demand elements
const GNEHierarchicalContainerParents< GNEEdge * > & getParentEdges() const
get parent edges
const GNEHierarchicalContainerChildren< GNEGenericData * > & getChildGenericDatas() const
return child generic data elements
const GNEHierarchicalContainerParents< GNEGenericData * > & getParentGenericDatas() const
get parent demand elements
const GNEHierarchicalContainerChildren< GNEAdditional * > & getChildAdditionals() const
return child additionals
const GNEHierarchicalContainerChildren< GNEDemandElement * > & getChildDemandElements() const
return child demand elements
void setEdgeTemplate(const GNEEdge *edge)
set edge template
GNEEdgeTemplate * getEdgeTemplate() const
get edge template (to copy attributes from)
TemplateEditor * getTemplateEditor() const
get template editor
static RGBColor colorForLinksState(FXuint state)
return the color for each linkstate
static const StringBijection< FXuint > LinkStateNames
long names for link states
const std::vector< GNEEdge * > & getGNEIncomingEdges() const
Returns incoming GNEEdges.
std::vector< GNEConnection * > getGNEConnections() const
Returns all GNEConnections vinculated with this junction.
class lane2lane connection geometry
void updateLane2laneConnection()
update
const GNELane * myLane
lane
double myInternalDrawingWidth
internal lane drawing width (used for drawing selected lanes)
void update(const GUIVisualizationSettings &s)
update lane drawing constants
GUIVisualizationSettings::Detail myDetail
detail level
bool drawAsRailway() const
draw as railway
bool drawSuperposed() const
draw superposed
double getExaggeration() const
get exaggeration
double myExaggeration
exaggeration
double getDrawingWidth() const
get lane drawing width
double getInternalDrawingWidth() const
get internal lane drawing width
double myDrawingWidth
lane drawing width
bool myDrawAsRailway
draw as railway
double myOffset
lane offset
double getOffset() const
get lane offset
bool myDrawSuperposed
draw supersposed (reduced width so that the lane markings below are visible)
GUIVisualizationSettings::Detail getDetail() const
get detail
GNELane2laneConnection myLane2laneConnections
lane2lane connections
const PositionVector & getLaneShape() const
get elements shape
bool isAttributeComputed(SumoXMLAttr key) const override
const GNELane2laneConnection & getLane2laneConnections() const
get Lane2laneConnection struct
double getColorValue(const GUIVisualizationSettings &s, int activeScheme) const override
return value for lane coloring according to the given scheme
void drawLaneStopOffset(const GUIVisualizationSettings &s) const
draw laneStopOffset
void drawSelectedLane(const GUIVisualizationSettings &s) const
draw selected lane
std::vector< double > myLaneRestrictedTextureRotations
Rotations of textures of restricted lanes.
bool allowPedestrians() const
check if current lane allow pedestrians
void drawMarkingsAndBoundings(const GUIVisualizationSettings &s) const
draw lane markings
bool checkDrawSelectContour() const override
check if draw select contour (blue)
const RGBColor * mySpecialColor
optional special color
Position getPositionInView() const
Returns position of hierarchical element in view.
bool drawAsWaterway(const GUIVisualizationSettings &s) const
whether to draw this lane as a waterways
Boundary getCenteringBoundary() const override
Returns the boundary to which the view shall be centered in order to show the object.
double getLengthGeometryFactor() const
get length geometry factor
PositionVector getAttributePositionVector(SumoXMLAttr key) const override
void drawDirectionIndicators(const GUIVisualizationSettings &s) const
direction indicators for lanes
bool checkDrawOverContour() const override
check if draw over contour (orange)
int getIndex() const
returns the index of the lane
GNEMoveElementLane * myMoveElementLane
move element lane
GUIGeometry myLaneGeometry
lane geometry
void drawShapeEdited(const GUIVisualizationSettings &s) const
draw shape edited
void drawOverlappedRoutes(const int numRoutes) const
draw overlapped routes
bool checkDrawRelatedContour() const override
check if draw related contour (cyan)
GUIGLObjectPopupMenu * getPopUpMenu(GUIMainWindow &app, GUISUMOAbstractView &parent) override
Returns an own popup-menu.
bool checkDrawToContour() const override
check if draw from contour (magenta)
std::string getParentName() const override
Returns the name of the parent object (if any)
void buildLaneOperations(GUISUMOAbstractView &parent, GUIGLObjectPopupMenu *ret)
build lane operations contextual menu
GNEMoveElement * getMoveElement() const override
methods to retrieve the elements linked to this lane
std::vector< GNEConnection * > getGNEOutcomingConnections()
returns a vector with the outgoing GNEConnections of this lane
DrawingConstants * myDrawingConstants
LaneDrawingConstants.
const std::vector< double > & getShapeRotations() const
get rotations of the single shape parts
std::string getAttributeForSelection(SumoXMLAttr key) const override
method for getting the attribute in the context of object selection
void buildTemplateOperations(GUISUMOAbstractView &parent, GUIGLObjectPopupMenu *ret)
build template oerations contextual menu
double getExaggeration(const GUIVisualizationSettings &s) const override
return exaggeration associated with this GLObject
bool setMultiColor(const GUIVisualizationSettings &s, const GUIColorer &c, RGBColor &col) const
sets multiple colors according to the current scheme index and some lane function
void calculateLaneContour(const GUIVisualizationSettings &s, const double layer) const
calculate contour
void drawTLSLinkNo(const GUIVisualizationSettings &s) const
draw TLS link Number
double getLaneParametricLength() const
returns the parameteric length of the lane
RGBColor setLaneColor(const GUIVisualizationSettings &s) const
set color according to edit mode and visualisation settings
std::vector< GNEConnection * > getGNEIncomingConnections()
returns a vector with the incoming GNEConnections of this lane
void updateGeometry() override
update pre-computed geometry information
bool isRestricted(SUMOVehicleClass vclass) const
check if this lane is restricted
bool checkDrawFromContour() const override
check if draw from contour (green)
const DrawingConstants * getDrawingConstants() const
get lane drawing constants (previously calculated in drawGL())
int myIndex
The index of this lane.
void drawLaneAsRailway() const
draw lane as railway
std::string getAttribute(SumoXMLAttr key) const override
void setSpecialColor(const RGBColor *Color2, double colorValue=std::numeric_limits< double >::max())
void drawGL(const GUIVisualizationSettings &s) const override
Draws the object.
const GUIGeometry & getLaneGeometry() const
get lane geometry
bool checkDrawMoveContour() const override
check if draw move contour (red)
Position getAttributePosition(SumoXMLAttr key) const override
double getAttributeDouble(SumoXMLAttr key) const override
void setAttribute(SumoXMLAttr key, const std::string &value, GNEUndoList *undoList) override
void drawArrows(const GUIVisualizationSettings &s) const
draw lane arrows
void updateCenteringBoundary(const bool updateGrid)
update centering boundary (implies change in RTREE)
void drawLane(const GUIVisualizationSettings &s, const double layer) const
draw lane
double mySpecialColorValue
optional value that corresponds to which the special color corresponds
void drawChildren(const GUIVisualizationSettings &s) const
draw children
Parameterised * getParameters() override
get parameters associated with this lane
std::vector< Position > myLaneRestrictedTexturePositions
Position of textures of restricted lanes.
long onDefault(FXObject *, FXSelector, void *) override
multiplexes message to two targets
bool checkDrawDeleteContour() const override
check if draw delete contour (pink/white)
double getLaneShapeLength() const
returns the length of the lane's shape
void updateGLObject() override
update GLObject (geometry, ID, etc.)
void drawStartEndGeometryPoints(const GUIVisualizationSettings &s) const
draw start and end geometry points
std::vector< RGBColor > myShapeColors
The color of the shape parts (cached)
bool checkDrawDeleteContourSmall() const override
check if draw delete contour small (pink/white)
bool setFunctionalColor(int activeScheme, RGBColor &col) const
sets the color according to the current scheme index and some lane function
bool isVisible(const GUIVisualizationSettings &s) const override
check if object is visible (Currently used only in netedit)
void updateConnectionIDs()
update IDs of incoming connections of this lane
void buildRechableOperations(GUISUMOAbstractView &parent, GUIGLObjectPopupMenu *ret)
build rechable operations contextual menu
bool isValid(SumoXMLAttr key, const std::string &value) override
bool isAttributeEnabled(SumoXMLAttr key) const override
void drawLane2LaneConnections() const
draw lane to lane connections
void buildEdgeOperations(GUISUMOAbstractView &parent, GUIGLObjectPopupMenu *ret)
build edge operations contextual menu
const std::vector< double > & getShapeLengths() const
get lengths of the single shape parts
void drawLinkNo(const GUIVisualizationSettings &s) const
draw link Number
double getSpeed() const
returns the current speed of lane
void drawTextures(const GUIVisualizationSettings &s) const
draw lane textures
void deleteGLObject() override
delete element
GNEEdge * getParentEdge() const
get parent edge
std::vector< GNELane * > getSelectedLanes() const
get selected lanes
int getNumberOfSelectedEdges() const
get number of selected edges
void deleteLane(GNELane *lane, GNEUndoList *undoList, bool recomputeConnections)
removes lane
GNEPathManager * getDataPathManager()
get data path manager
GNEPathManager * getDemandPathManager()
get demand path manager
GNENetHelper::AttributeCarriers * getAttributeCarriers() const
get all attribute carriers used in this net
bool isNetRecomputed() const
check if net require recomputing
GNEPathManager * getNetworkPathManager()
get network path manager
GNEViewParent * getViewParent() const
get view parent (used for simplify code)
NBEdgeCont & getEdgeCont()
returns the NBEdgeCont of the underlying netbuilder
GNEUndoList * getUndoList() const
get undo list(used for simplify code)
GNEViewNet * getViewNet() const
get view net (used for simplify code)
GNEContour myNetworkElementContour
network element contour
bool myShapeEdited
flag to check if element shape is being edited
void setNetworkElementID(const std::string &newID)
set network element id
bool drawCandidateEdgesWithSpecialColor() const
draw candidate edges with special color (Only for candidates, special and conflicted)
void invalidatePathCalculator()
invalidate pathCalculator
PathCalculator * getPathCalculator()
obtain instance of PathCalculator
void drawLanePathElements(const GUIVisualizationSettings &s, const GNELane *lane) const
draw lane path elements
GNEPathCreator * getPathCreator() const
get path creator module
bool controlsEdge(GNEEdge *edge) const
whether the given edge is controlled by the currently edited tlDef
void handleMultiChange(GNELane *lane, FXObject *obj, FXSelector sel, void *data)
update phase definition for the current traffic light and phase
SumoXMLTag getTag() const
get Tag vinculated with this attribute Property
GNEAttributeCarrier * getCurrentTemplateAC() const
get current templateAC
GNELane * getLaneFront() const
get front lane or a pointer to nullptr
const GNEViewNetHelper::EditModes & getEditModes() const
get edit modes
const GNEViewNetHelper::EditNetworkElementShapes & getEditNetworkElementShapes() const
get Edit Shape module
GNEViewNetHelper::InspectedElements & getInspectedElements()
get inspected elements
const GNEViewNetHelper::NetworkViewOptions & getNetworkViewOptions() const
get network view options
GNEViewParent * getViewParent() const
get the net object
bool checkOverLockedElement(const GUIGlObject *GLObject, const bool isSelected) const
check if given element is locked (used for drawing select and delete contour)
bool checkSelectEdges() const
check if select edges (toggle using button or shift)
const GNEViewNetHelper::ViewObjectsSelector & getViewObjectsSelector() const
get objects under cursor
GNEDeleteFrame * getDeleteFrame() const
get frame for delete elements
GNETLSEditorFrame * getTLSEditorFrame() const
get frame for NETWORK_TLS
GNEAdditionalFrame * getAdditionalFrame() const
get frame for NETWORK_ADDITIONAL
GNEInspectorFrame * getInspectorFrame() const
get frame for inspect elements
GNERouteFrame * getRouteFrame() const
get frame for DEMAND_ROUTE
static FXMenuCommand * buildFXMenuCommand(FXComposite *p, const std::string &text, FXIcon *icon, FXObject *tgt, FXSelector sel, const bool disable=false)
build menu command
const std::vector< double > & getShapeRotations() const
The rotations of the single shape parts.
static void drawGeometryPoints(const GUIVisualizationSettings::Detail d, const PositionVector &shape, const RGBColor &color, const double radius, const double exaggeration, const bool drawSymbols, const bool editingElevation)
draw geometry points
static void drawGeometry(const GUIVisualizationSettings::Detail d, const GUIGeometry &geometry, const double width, double offset=0)
draw geometry
static double calculateRotation(const Position &first, const Position &second)
return angle between two points (used in geometric calculations)
const PositionVector & getShape() const
The shape of the additional element.
void updateGeometry(const PositionVector &shape)
update entire geometry
const std::vector< double > & getShapeLengths() const
The lengths of the single shape parts.
const std::string & getMicrosimID() const
Returns the id of the object as known to microsim.
void buildPositionCopyEntry(GUIGLObjectPopupMenu *ret, const GUIMainWindow &app, bool addSeparator=true) const
Builds an entry which allows to copy the cursor position if geo projection is used,...
void setGLObjectParent(GUIGlObject *parent)
notify object about popup menu removal
void buildCenterPopupEntry(GUIGLObjectPopupMenu *ret, bool addSeparator=true)
Builds an entry which allows to center to the object.
void buildNameCopyPopupEntry(GUIGLObjectPopupMenu *ret, bool addSeparator=true)
Builds entries which allow to copy the name / typed name into the clipboard.
void buildPopupHeader(GUIGLObjectPopupMenu *ret, GUIMainWindow &app, bool addSeparator=true)
Builds the header.
GUIGlObjectType getType() const
Returns the type of the object as coded in GUIGlObjectType.
static FXIcon * getIcon(const GUIIcon which)
returns a icon previously defined in the enum GUIIcon
T getColor(const double value) const
const std::vector< T > & getSchemes() const
double m2p(double meter) const
meter-to-pixels conversion method
virtual Position getPositionInformation() const
Returns the cursor's x/y position within the network.
GUIGLObjectPopupMenu * getPopup() const
ge the current popup-menu
static GUIGlID getTexture(GUITexture which)
returns a texture previously defined in the enum GUITexture
static void drawTexturedBox(int which, double size)
Draws a named texture as a box with the given size.
bool checkBoundaryParentObject(const GUIVisualizationSettings &s, const GUIGlObject *GLObject, const double layer, const GUIGlObject *parent)
Stores the information about how to visualize structures.
static const double MISSING_DATA
GUIVisualizationSizeSettings addSize
bool disableLaneIcons
whether drawing is performed in left-hand networks
GUIVisualizationTextSettings drawLinkJunctionIndex
Detail getDetailLevel(const double exaggeration) const
return the detail level
bool showRails
Information whether rails shall be drawn.
GUIVisualizationCandidateColorSettings candidateColorSettings
candidate color settings
double laneWidthExaggeration
The lane exaggeration (upscale thickness)
bool lefthand
whether drawing is performed in left-hand networks
GUIVisualizationColorSettings colorSettings
color settings
GUIVisualizationDottedContourSettings dottedContourSettings
dotted contour settings
static const RGBColor & getLinkColor(const LinkState &ls, bool realistic=false)
map from LinkState to color constants
double scale
information about a lane's width (temporary, used for a single view)
bool showLaneDirection
Whether to show direction indicators for lanes.
bool drawForViewObjectsHandler
whether drawing is performed for the purpose of selecting objects in view using ViewObjectsHandler
bool showLinkDecals
Information whether link textures (arrows) shall be drawn.
GUIColorer laneColorer
The lane colorer.
bool laneShowBorders
Information whether lane borders shall be drawn.
GUIVisualizationTextSettings drawLinkTLIndex
double selectorFrameScale
the current selection scaling in netedit (set in SelectorFrame)
bool spreadSuperposed
Whether to improve visualisation of superposed (rail) edges.
GUIColorer junctionColorer
The junction colorer.
std::string edgeParam
key for coloring by edge parameter
GUIVisualizationNeteditSizeSettings neteditSizeSettings
netedit size settings
static double naviDegree(const double angle)
static FXColor getFXColor(const RGBColor &col)
converts FXColor to RGBColor
NBEdge * retrieve(const std::string &id, bool retrieveExtracted=false) const
Returns the edge that has the given id.
The representation of a single edge during network building.
double getLaneSpeed(int lane) const
get lane speed
void setPermittedChanging(int lane, SVCPermissions changeLeft, SVCPermissions changeRight)
set allowed classes for changing to the left and right from the given lane
SVCPermissions getPermissions(int lane=-1) const
get the union of allowed classes over all lanes or for a specific lane
void setPermissions(SVCPermissions permissions, int lane=-1)
set allowed/disallowed classes for the given lane or for all lanes if -1 is given
void setSpeed(int lane, double speed)
set lane specific speed (negative lane implies set for all lanes)
NBNode * getToNode() const
Returns the destination node of the edge.
Lane & getLaneStruct(int lane)
bool isBidiRail(bool ignoreSpread=false) const
whether this edge is part of a bidirectional railway
const std::string & getID() const
void setLaneWidth(int lane, double width)
set lane specific width (negative lane implies set for all lanes)
void setAcceleration(int lane, bool accelRamp)
marks one lane as acceleration lane
bool isBidiEdge(bool checkPotential=false) const
whether this edge is part of a bidirectional edge pair
int getNumLanes() const
Returns the number of lanes.
void setFriction(int lane, double friction)
set lane specific friction (negative lane implies set for all lanes)
std::string getLaneID(int lane) const
get lane ID
void setLaneShape(int lane, const PositionVector &shape)
sets a custom lane shape
NBNode * getFromNode() const
Returns the origin node of the edge.
static const double UNSPECIFIED_WIDTH
unspecified lane width
void setEndOffset(int lane, double offset)
set lane specific end-offset (negative lane implies set for all lanes)
Represents a single node (junction) during network building.
LinkDirection getDirection(const NBEdge *const incoming, const NBEdge *const outgoing, bool leftHand=false) const
Returns the representation of the described stream's direction.
LinkState getLinkState(const NBEdge *incoming, const NBEdge *outgoing, int fromLane, int toLane, bool mayDefinitelyPass, const std::string &tlID) const
get link state
An upper class for objects with additional parameters.
A point in 2D or 3D with translation and scaling methods.
double x() const
Returns the x-position.
double z() const
Returns the z-position.
double angleTo2D(const Position &other) const
returns the angle in the plane of the vector pointing from here to the other position (in radians bet...
double y() const
Returns the y-position.
double length2D() const
Returns the length.
double beginEndAngle() const
returns the angle in radians of the line connecting the first and the last position
double length() const
Returns the length.
double rotationDegreeAtOffset(double pos) const
Returns the rotation at the given length.
Position positionAtOffset(double pos, double lateralOffset=0) const
Returns the position at the given length.
double nearest_offset_to_point2D(const Position &p, bool perpendicular=true) const
return the nearest offest to point 2D
Position positionAtOffset2D(double pos, double lateralOffset=0, bool extrapolateBeyond=false) const
Returns the position at the given length.
static const RGBColor WHITE
unsigned char alpha() const
Returns the alpha-amount of the color.
static RGBColor fromHSV(double h, double s, double v, bool random=false)
Converts the given hsv-triplet to rgb, inspired by http://alvyray.com/Papers/CG/hsv2rgb....
static const RGBColor ORANGE
static const RGBColor CYAN
static const RGBColor GREEN
static const RGBColor BLACK
RGBColor changedBrightness(int change, int toChange=3) const
Returns a new color with altered brightness.
void setOffset(const double offset)
set offset
bool isDefined() const
check if stopOffset was defined
void setExceptions(const std::string permissions)
set exceptions (used in netedit)
std::string getExceptions() const
get exceptions (used in netedit)
double getOffset() const
get offset
std::vector< std::string > getStrings() const
get all strings
T get(const std::string &str) const
get key
static double toDouble(const std::string &sData)
converts a string into the double value described by it by calling the char-type converter
static bool toBool(const std::string &sData)
converts a string into the bool value described by it by calling the char-type converter
static FXIcon * getVClassIcon(const SUMOVehicleClass vc)
returns icon associated to the given vClass
NetworkEditMode networkEditMode
the current Network edit mode
bool isCurrentSupermodeDemand() const
@check if current supermode is Demand
bool isCurrentSupermodeData() const
@check if current supermode is Data
bool isCurrentSupermodeNetwork() const
@check if current supermode is Network
GNENetworkElement * getEditedNetworkElement() const
pointer to edited network element
static void drawLockIcon(const GUIVisualizationSettings::Detail d, const GNEAttributeCarrier *AC, GUIGlObjectType type, const Position position, const double exaggeration, const double size=0.5, const double offsetx=0, const double offsety=0)
draw lock icon
bool editingElevation() const
check if we're editing elevation
bool showDemandElements() const
check if show demand elements checkbox is enabled
static const RGBColor special
color for selected special candidate element (Usually selected using shift+click)
static const RGBColor conflict
color for selected conflict candidate element (Usually selected using ctrl+click)
static const RGBColor invalid
color for invalid elements
static const RGBColor target
color for selected candidate target
static const RGBColor possible
color for possible candidate element
static const RGBColor source
color for selected candidate source
RGBColor selectedEdgeColor
edge selection color
RGBColor selectedLaneColor
lane selection color
static const RGBColor editShapeColor
color for edited shapes (Junctions, crossings and connections)
static const double segmentWidth
width of dotted contour segments
static const double laneGeometryPointRadius
moving lane geometry point radius
static const double junctionBubbleRadius
junction bubble radius
double getExaggeration(const GUIVisualizationSettings &s, const GUIGlObject *o, double factor=20) const
return the drawing size including exaggeration and constantSize values
bool show(const GUIGlObject *o) const
whether to show the text
double width
This lane's width.
StopOffset laneStopOffset
stopOffsets.second - The stop offset for vehicles stopping at the lane's end. Applies if vClass is in...
PositionVector customShape
A custom shape for this lane set by the user.
double endOffset
This lane's offset to the intersection begin.
std::string type
the type of this lane
std::string oppositeID
An opposite lane ID, if given.
SVCPermissions changeRight
List of vehicle types that are allowed to change right from this lane.
double friction
The friction on this lane.
SVCPermissions changeLeft
List of vehicle types that are allowed to change Left from this lane.
bool accelRamp
Whether this lane is an acceleration lane.