44 std::vector<MSLane*> incoming,
45 std::vector<MSLane*>
internal,
59 std::vector<MSLane*>::iterator i;
62 std::vector<std::pair<MSLane*, MSLink*> > sortedLinks;
66 for (MSLinkCont::const_iterator j = links.begin(); j != links.end(); j++) {
67 if ((*j)->getLane()->getEdge().isWalkingArea() ||
68 ((*i)->getEdge().isWalkingArea() && !(*j)->getLane()->getEdge().isCrossing())) {
71 sortedLinks.push_back(std::make_pair(*i, *j));
80 const MSLane* walkingAreaFoe =
nullptr;
81 for (MSLinkCont::const_iterator j = links.begin(); j != links.end(); j++) {
82 if ((*j)->getLane()->getEdge().isWalkingArea()) {
85 walkingAreaFoe = (*j)->getLane();
88 }
else if (((*i)->getEdge().isWalkingArea() && !(*j)->getLane()->getEdge().isCrossing())) {
98 for (
int c = 0; c < maxNo; ++c) {
99 if (linkResponse.test(c)) {
100 MSLink* foe = sortedLinks[c].second;
112 std::vector<MSLink*> foes;
113 for (
int c = 0; c < maxNo; ++c) {
114 if (linkFoes.test(c)) {
115 MSLink* foe = sortedLinks[c].second;
123 for (MSLinkCont::const_iterator q = lc.begin(); q != lc.end(); ++q) {
124 if ((*q)->getViaLane() !=
nullptr) {
134 for (
int c = 0; c < (int)sortedLinks.size(); ++c) {
135 if (sortedLinks[c].second->getLane() ==
nullptr) {
138 if (linkFoes.test(c)) {
140 if (linkResponse.test(c)) {
141 const std::vector<MSLane::IncomingLaneInfo>& l =
myInternalLanes[li]->getIncomingLanes();
142 if (l.size() == 1 && l[0].lane->getEdge().isInternal()) {
154 assert((*j)->getViaLane()->getLinkCont().size() == 1);
159 if (ili.lane->getEdge().isWalkingArea()) {
171 for (std::vector<MSLink*>::const_iterator k = foes.begin(); k != foes.end(); ++k) {
172 (*j)->addBlockedLink(*k);
173 (*k)->addBlockedLink(*j);
177 if (walkingAreaFoe !=
nullptr && links.size() > 1) {
178 for (MSLinkCont::const_iterator j = links.begin(); j != links.end(); j++) {
179 if (!(*j)->getLane()->getEdge().isWalkingArea()) {