public IEnumerable <ThreadInfo> GetDirections(ThreadManager TM, int to, Dictionary <string, string> query) { var currentThread = TM.CurrentThread; _settings = new DirectionsSettings(query); yield return(TM.Await(currentThread, GetShortestPath(TM, to))); _pathFindingDone = 1; yield return(TM.Await(currentThread, GetDirectionMessages(TM))); _messageFindingDone = 1; yield return(TM.Sleep(currentThread, 60000)); _directions.Remove(_id); yield return(TM.Return(currentThread)); }
public TargetPath(Node start, double distSoFar, List <PartitionPass> partitions, SortedSet <TargetPath> queue, DirectionsSettings settings) { Id = _currentId; _currentId++; CurrentNode = start; DistSoFar = distSoFar; PartitionsLeft = partitions; BestDist = PartitionsLeft.Sum(pp => pp.BestDist) + distSoFar; if (partitions.Any()) { BestDist += settings.WeightedDist(start, partitions.First().Target); } PathQueue = queue; }