| 682 | } |
| 683 | |
| 684 | RouterResultCode IndexRouter::CalculateSubroute(Checkpoints const & checkpoints, size_t subrouteIdx, |
| 685 | RouterDelegate const & delegate, |
| 686 | shared_ptr<AStarProgress> const & progress, IndexGraphStarter & starter, |
| 687 | vector<Segment> & subroute, bool guidesActive /* = false */) |
| 688 | { |
| 689 | subroute.clear(); |
| 690 | |
| 691 | SetupAlgorithmMode(starter, guidesActive); |
| 692 | |
| 693 | WorldGraphMode const mode = starter.GetGraph().GetMode(); |
| 694 | LOG(LINFO, ("Routing in mode:", mode)); |
| 695 | |
| 696 | base::ScopedTimerWithLog timer("Route build"); |
| 697 | switch (mode) |
| 698 | { |
| 699 | case WorldGraphMode::Joints: return CalculateSubrouteJointsMode(starter, delegate, progress, subroute); |
| 700 | case WorldGraphMode::NoLeaps: return CalculateSubrouteNoLeapsMode(starter, delegate, progress, subroute); |
| 701 | case WorldGraphMode::LeapsOnly: |
| 702 | return CalculateSubrouteLeapsOnlyMode(checkpoints, subrouteIdx, starter, delegate, progress, subroute); |
| 703 | default: CHECK(false, ("Wrong WorldGraphMode here:", mode)); |
| 704 | } |
| 705 | UNREACHABLE(); |
| 706 | } |
| 707 | |
| 708 | RouterResultCode IndexRouter::CalculateSubrouteJointsMode(IndexGraphStarter & starter, RouterDelegate const & delegate, |
| 709 | shared_ptr<AStarProgress> const & progress, |