void SectorMap::makeParentBFS(crint3 source) { parent.clear(); int mySector = retrieveTile(source); std::queue<int3> toVisit; toVisit.push(source); while (!toVisit.empty()) { int3 curPos = toVisit.front(); toVisit.pop(); TSectorID & sec = retrieveTile(curPos); assert(sec == mySector); //consider only tiles from the same sector UNUSED(sec); foreach_neighbour(curPos, [&](crint3 neighPos) { if (retrieveTile(neighPos) == mySector && !vstd::contains(parent, neighPos)) { if (cb->canMoveBetween(curPos, neighPos)) { toVisit.push(neighPos); parent[neighPos] = curPos; } } }); } }