Beispiel #1
0
        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));
        }
Beispiel #2
0
 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;
 }