64 const auto& parentLanes =
myMovedElement->getHierarchicalElement()->getParentLanes();
66 const bool allowChangeLane =
myMovedElement->getNet()->getViewParent()->getMoveFrame()->getCommonMoveOptions()->getAllowChangeLane();
72 if (geometryPoints.empty()) {
75 if (geometryPoints.front() == 0) {
85 if (parentLanes.size() > 1) {
102 return myEndPos->getMoveOperation();
346 for (
int i = 1; i < (int)
myMovedElement->getHierarchicalElement()->getParentLanes().size(); i++) {
348 const auto firstLane =
myMovedElement->getHierarchicalElement()->getParentLanes().at(i - 1);
349 const auto secondLane =
myMovedElement->getHierarchicalElement()->getParentLanes().at(i);
351 bool foundConnection =
false;
352 for (
const auto& connection : firstLane->getParentEdge()->getGNEConnections()) {
353 if ((connection->getLaneFrom() == firstLane) && (connection->getLaneTo() == secondLane)) {
354 foundConnection =
true;
359 if (!foundConnection) {
361 NBEdge::Connection newCon(firstLane->getIndex(), secondLane->getParentEdge()->getNBEdge(), secondLane->getIndex());
369 if (
myMovedElement->getHierarchicalElement()->getParentLanes().size() == 1) {
371 const double finalLenght =
myMovedElement->getHierarchicalElement()->getParentLanes().back()->getParentEdge()->getNBEdge()->getFinalLength();
372 const double maxStartPos = (
myEndPos->myPosOverLane ==
INVALID_DOUBLE) ? finalLenght : (
myEndPos->getFixedPositionOverLane(
false) - POSITION_EPS);
373 if (maxStartPos < POSITION_EPS) {
376 }
else if (
myStartPos->getFixedPositionOverLane(
false) > maxStartPos) {
378 const double newStartPos = (std::trunc(maxStartPos * 1000) / 1000);