Example #1
0
        public void WhenRouteUseDirectAnalyzeCorrectness()
        {
            // setup
            var wpts = new[]
            {
                new Waypoint("P01", 0.0, 15.0),
                new Waypoint("P02", 0.0, 16.0),
                new Waypoint("P03", 0.5, 16.5)
            };

            var wptList = new WaypointList();

            foreach (var i in wpts)
            {
                wptList.AddWaypoint(i);
            }

            var analyzer = new BasicRouteAnalyzer(
                GetRouteString("P01", "P02", "P03"),
                wptList,
                wptList.FindById("P01"));

            // invoke
            var route = analyzer.Analyze();

            // assert
            var expected = GetRoute(
                wpts[0], "DCT", -1.0,
                wpts[1], "DCT", -1.0,
                wpts[2]);

            Assert.IsTrue(route.Equals(expected));
        }
Example #2
0
        public void AddWaypoint(uint id, float x, float y, float z, uint waitTime = 0)
        {
            Escort_Waypoint t = new Escort_Waypoint(id, x, y, z, waitTime);

            WaypointList.Add(t);

            ScriptWP = true;
        }
Example #3
0
 private static void AssertTrack(string ID, string firstWpt, WaypointList wptList)
 {
     // check the track is added
     if (GetEdgeIndex(ID, firstWpt, wptList) < 0)
     {
         Assert.Fail("Track not found.");
     }
 }
Example #4
0
 public WaypointList(WaypointList wpList)
 {
     waypoints = new List <Waypoint>();
     foreach (var waypoint in wpList.waypoints)
     {
         waypoints.Add(waypoint);
     }
 }
Example #5
0
 public static List <IndexDistancePair> FromAirway(
     double Lat,
     double Lon,
     WaypointList wptList,
     WptSearchOption option)
 {
     return(Find(Lat, Lon, false, wptList, option));
 }
Example #6
0
        public async Task Update(WaypointList wptList, AirportManager airportList)
        {
            var action = new NetworkUpdateAction(
                (t) => SetTrackEnabled(t),
                (t) => DownloadAndEnableTracks(t));

            await airwayNetwork.Update(wptList, airportList, action);
        }
Example #7
0
        // Contains all integral lat/lon waypoints
        public static WaypointList GetWptList(IEnumerable <string> Idents)
        {
            var wptList = new WaypointList();

            AddLatLons(wptList);
            AddWpts(wptList, Idents);
            return(wptList);
        }
Example #8
0
        public void Case4Test()
        {
            // Setup
            var route = new[] { "SID1", "P1", "HLG", "A1", "MKG" };

            var wptList = new WaypointList();
            var rwy     = new Waypoint("RCTP05L", 20.0, 120.0);
            var wpt1    = new Waypoint("HLG", 22.0, 122.0);

            wptList.AddWaypoint(wpt1);

            var p1 = new Waypoint("P1", 21.0, 121.0);

            var sid = new SidEntry(
                "05L",
                "SID1",
                new[] { p1 },
                EntryType.RwySpecific,
                false);

            var extractor = new SidExtractor(
                route.ToRouteString(),
                "05L",
                rwy,
                wptList,
                new SidCollection(new[] { sid }));

            // Invoke
            var result = extractor.Extract();

            // Assert
            Assert.IsTrue(result.RemainingRoute.SequenceEqual(new[] { "HLG", "A1", "MKG" }));

            var origRoute = result.OrigRoute;

            Assert.AreEqual(3, origRoute.Count);

            var node      = origRoute.First;
            var neighbor1 = node.Value.Neighbor;

            Assert.IsTrue(node.Value.Waypoint.Equals(rwy));
            Assert.IsTrue(neighbor1.Airway == sid.Name);
            Assert.AreEqual(neighbor1.Distance, rwy.Distance(p1), 1E-8);
            Assert.AreEqual(0, neighbor1.InnerWaypoints.Count);
            Assert.AreEqual(InnerWaypointsType.Terminal, neighbor1.Type);

            node = node.Next;
            var neighbor2 = node.Value.Neighbor;

            Assert.IsTrue(node.Value.Waypoint.Equals(p1));
            Assert.IsTrue(neighbor2.Airway == "DCT");
            Assert.AreEqual(neighbor2.Distance, p1.Distance(wpt1), 1E-8);
            Assert.AreEqual(0, neighbor2.InnerWaypoints.Count);
            Assert.AreEqual(InnerWaypointsType.None, neighbor2.Type);

            node = node.Next;
            Assert.IsTrue(node.Value.Waypoint.Equals(wpt1));
        }
Example #9
0
        private void OnDeleteSelectedItem(object obj)
        {
            WaypointList.Remove(SelectedWaypointItem);
            var availableWaipoints = new Waypoints();

            availableWaipoints.AddRange(WaypointList);
            Task.Run(() => _repository.SaveAsync(availableWaipoints));
            NotifyOfPropertyChange(() => WaypointList);
        }
Example #10
0
 private bool StarIsAdded(int fromIndex, string name, double dis, WaypointList wptList)
 {
     return(wptList.EdgesFrom(fromIndex).Any(i =>
     {
         var edge = wptList.GetEdge(i);
         return edge.Value.Airway == name &&
         Math.Abs(dis - edge.Value.Distance) < DistanceEpsilon;
     }));
 }
Example #11
0
 public AirwayNodeFinder(
     int indexStart, string airway,
     string identEnd, WaypointList wptList)
 {
     this.indexStart = indexStart;
     this.airway     = airway;
     this.identEnd   = identEnd;
     this.wptList    = wptList;
 }
Example #12
0
        private void AddToWptListCase3And5(WaypointList wptList)
        {
            var entry = new SidEntry(
                "18",
                "SID1",
                List(wpt101, wpt102, wpt103, wpt104),
                EntryType.RwySpecific,
                false);

            var adder =
                new SidAdder(
                    "AXYZ",
                    new SidCollection(
                        List(entry)),
                    wptList,
                    wptList.GetEditor(),
                    GetAirportManager());

            int rwyIndex = adder.AddSidsToWptList("18", List("SID1"));

            // Check the SID has been added with correct total distance.
            var edges = wptList.EdgesFrom(rwyIndex).ToList();

            Assert.IsTrue(edges.Count > 0);
            Assert.IsTrue(edges.Select(e => wptList.GetEdge(e))
                          .All(e =>
                               e.Value.InnerWaypoints.SequenceEqual(List(wpt101, wpt102, wpt103)) &&
                               e.Value.Type == InnerWaypointsType.Terminal));

            double dis = List(rwy, wpt101, wpt102, wpt103, wpt104).TotalDistance();

            Assert.IsTrue(SidIsAdded(
                              rwyIndex,
                              "SID1",
                              dis,
                              wptList));

            // Check the edges of last wpt
            int index = wptList.FindByWaypoint(wpt104);

            Assert.AreEqual(2, wptList.EdgesFromCount(index));

            foreach (var i in wptList.EdgesFrom(index))
            {
                var edge     = wptList.GetEdge(i);
                var neighbor = edge.Value;
                Assert.AreEqual("DCT", neighbor.Airway);
                Assert.AreEqual(0, neighbor.InnerWaypoints.Count);

                var expectedDis = wpt104.Distance(wptList[edge.ToNodeIndex]);

                Assert.AreEqual(
                    expectedDis,
                    neighbor.Distance,
                    DistanceEpsilon);
            }
        }
Example #13
0
 public RouteFinder(
     WaypointList wptList,
     CountryCodeCollection avoidedCountry = null,
     AvgWindCalculator windCalc           = null)
 {
     this.wptList        = wptList;
     this.avoidedCountry = avoidedCountry ?? new CountryCodeCollection();
     this.windCalc       = windCalc;
 }
Example #14
0
        public AirwayNetwork(WaypointList wptList, AirportManager airportList,
                             MultiMap <string, Navaid> Navaids)
        {
            this.WptList     = wptList;
            this.AirportList = airportList;
            this.Navaids     = Navaids;

            SetTrackData();
        }
Example #15
0
        public void Case3Test()
        {
            // Setup
            var route = new[] { "SIERA", "P1", "STAR1" };

            var wptList = new WaypointList();
            var wpt     = new Waypoint("SIERA", 18.0, 115.0);

            wptList.AddWaypoint(wpt);

            var rwy = new Waypoint("VHHH07L", 18.0, 118.0);
            var p1  = new Waypoint("P1", 18.5, 117.0);

            var star = new StarEntry(
                "07L",
                "STAR1",
                new[] { p1 },
                EntryType.RwySpecific);

            var stars = new StarCollection(new[] { star });

            var extractor = new StarExtractor(
                route.ToRouteString(),
                "07L",
                rwy,
                wptList,
                stars);

            var result = extractor.Extract();

            Assert.IsTrue(result.RemainingRoute.SequenceEqual(new[] { "SIERA" }));

            var destRoute = result.DestRoute;

            Assert.AreEqual(3, destRoute.Count);

            var node1     = destRoute.First();
            var neighbor1 = node1.AirwayToNext;

            Assert.IsTrue(node1.Waypoint.Equals(wpt));
            Assert.IsTrue("DCT" == neighbor1.Airway);
            Assert.AreEqual(wpt.Distance(p1), neighbor1.Distance, 1E-8);
            Assert.AreEqual(0, neighbor1.InnerWaypoints.Count);
            Assert.AreEqual(InnerWaypointsType.None, neighbor1.Type);

            var node2     = destRoute.First.Next.Value;
            var neighbor2 = node2.AirwayToNext;

            Assert.IsTrue(node2.Waypoint.Equals(p1));
            Assert.IsTrue("STAR1" == neighbor2.Airway);
            Assert.AreEqual(p1.Distance(rwy), neighbor2.Distance, 1E-8);
            Assert.AreEqual(0, neighbor2.InnerWaypoints.Count);
            Assert.AreEqual(InnerWaypointsType.Terminal, neighbor2.Type);

            Assert.IsTrue(destRoute.Last().Waypoint.Equals(rwy));
        }
Example #16
0
        public override void displayPlayer(PlayerInfo _pInfo)
        {
            string output = "";

            output += new ClientInfoList(_pInfo, _options).DisplayShort(_sep);
            output += _sep;
            output += new WaypointList(_pInfo, _options).Display(_sep);

            SendOutput(output);
        }
Example #17
0
        private static void AddWpts(WaypointList wptList, IEnumerable <string> Idents)
        {
            var rd = new Random(123);

            foreach (var i in Idents)
            {
                wptList.AddWaypoint(
                    new Waypoint(i, rd.Next(-90, 91), rd.Next(-180, 181)));
            }
        }
Example #18
0
 private static void AddLatLons(WaypointList wptList)
 {
     for (int lon = -180; lon <= 180; lon++)
     {
         for (int lat = -90; lat <= 90; lat++)
         {
             wptList.AddWaypoint(
                 new Waypoint(Format5Letter.ToString(lat, lon), lat, lon));
         }
     }
 }
Example #19
0
 public TrackAdder(
     WaypointList wptList,
     WaypointListEditor editor,
     StatusRecorder recorder,
     TrackType type)
 {
     this.wptList  = wptList;
     this.editor   = editor;
     this.recorder = recorder;
     this.type     = type;
 }
        private static void AddAirways(WaypointList wptList)
        {
            foreach (var i in airwayEntries)
            {
                int x        = TryAddWpt(wptList, i.StartWpt);
                int y        = TryAddWpt(wptList, i.EndWpt);
                var neighbor = new Neighbor(i.Airway, wptList.Distance(x, y));

                wptList.AddNeighbor(x, y, neighbor);
            }
        }
Example #21
0
 public AutoSelectAnalyzer(
     RouteString route,
     ICoordinate orig,
     ICoordinate dest,
     WaypointList wptList)
 {
     this.route   = route;
     this.orig    = orig;
     this.dest    = dest;
     this.wptList = wptList;
 }
Example #22
0
 /// <summary>
 /// Adds a waypoint before the current destination
 /// </summary>
 /// <param name="targetPosition">The target position in world coordinates</param>
 public void AddWaypointPrev(Vector2 targetPosition)
 {
     if (current == null)
     {
         WaypointList.AddFirst(targetPosition);
     }
     else
     {
         WaypointList.AddBefore(current, targetPosition);
     }
 }
Example #23
0
 private static int GetEdgeIndex(string ID, string firstWpt, WaypointList wptList)
 {
     foreach (var i in wptList.EdgesFrom(wptList.FindById(firstWpt)))
     {
         if (wptList.GetEdge(i).Value.Airway == ID)
         {
             return(i);
         }
     }
     return(-1);
 }
Example #24
0
 public RouteSeachRegion(
     WaypointList wptList,
     int StartPtIndex,
     int EndPtIndex,
     double MaxDistanceSum = 0.0)
 {
     this.StartPtIndex   = StartPtIndex;
     this.EndPtIndex     = EndPtIndex;
     this.MaxDistanceSum = MaxDistanceSum;
     DirectDistance      = wptList.Distance(StartPtIndex, EndPtIndex);
 }
Example #25
0
 public TrackHandler(
     WaypointList wptList,
     WaypointListEditor editor,
     AirportManager airportList,
     TrackInUseCollection tracksInUse)
 {
     this.wptList     = wptList;
     this.editor      = editor;
     this.airportList = airportList;
     this.tracksInUse = tracksInUse;
 }
Example #26
0
 /// <summary>
 /// Adds a waypoint after the current destination
 /// </summary>
 /// <param name="targetPosition">The target position in world coordinates</param>
 public void AddWaypointNext(Vector2 targetPosition)
 {
     if (current == null)
     {
         WaypointList.AddLast(targetPosition);
     }
     else
     {
         WaypointList.AddAfter(current, targetPosition);
     }
 }
Example #27
0
        private static WaypointList BasicWptList()
        {
            var wptList = new WaypointList();

            int index1 = wptList.AddWaypoint(new Waypoint("25N050E", 25.0, 50.0));
            int index2 = wptList.AddWaypoint(new Waypoint("27N050E", 27.0, 50.0));

            wptList.AddNeighbor(index1, "AIRWAY1", index2);
            wptList.AddNeighbor(index2, "AIRWAY1", index1);

            return(wptList);
        }
Example #28
0
        private void AddToWptListCase2And4(WaypointList wptList)
        {
            var entry = new StarEntry(
                "18",
                "STAR1",
                List(wpt101, wpt102, wpt103, wpt104),
                EntryType.RwySpecific);

            var adder = new StarAdder(
                "AXYZ",
                new StarCollection(List(entry)),
                wptList,
                wptList.GetEditor(),
                GetAirportManager());

            int rwyIndex = adder.AddStarsToWptList("18", List("STAR1"));

            // Check the STAR1 has been added with correct total distance.
            var edges = wptList.EdgesTo(rwyIndex).ToList();

            Assert.IsTrue(edges.Count > 0);

            Assert.IsTrue(edges
                          .Select(e => wptList.GetEdge(e))
                          .All(e =>
                               e.Value.InnerWaypoints.SequenceEqual(List(wpt102, wpt103, wpt104)) &&
                               e.Value.Type == InnerWaypointsType.Terminal));

            double dis = List(wpt101, wpt102, wpt103, wpt104, rwy)
                         .TotalDistance();

            Assert.IsTrue(StarIsAdded(
                              wptList.FindByWaypoint(wpt101),
                              "STAR1",
                              dis,
                              wptList));

            // Check the edges of first wpt
            int index = wptList.FindByWaypoint(wpt101);

            Assert.IsTrue(index >= 0);
            Assert.AreEqual(2, wptList.EdgesToCount(index));

            foreach (var i in wptList.EdgesTo(index))
            {
                var edge = wptList.GetEdge(i);
                Assert.AreEqual("DCT", edge.Value.Airway);
                Assert.AreEqual(0, edge.Value.InnerWaypoints.Count);

                double expectedDis = wpt101.Distance(wptList[edge.FromNodeIndex]);
                Assert.AreEqual(expectedDis, edge.Value.Distance, DistanceEpsilon);
            }
        }
        private static void AssertDct(WaypointList wptList, string from, string to)
        {
            foreach (var i in wptList.EdgesFrom(wptList.FindById(from)))
            {
                if (wptList[wptList.GetEdge(i).ToNodeIndex].ID == to)
                {
                    return;
                }
            }

            Assert.Fail("{0} is not connected to {1}", from, to);
        }
Example #30
0
 public RouteFinderFacade(
     WaypointList wptList,
     AirportManager airportList,
     string navDataLocation = null,
     CountryCodeCollection avoidedCountry = null,
     AvgWindCalculator windCalc           = null)
 {
     this.wptList         = wptList;
     this.airportList     = airportList;
     this.navDataLocation = navDataLocation;
     finder = new RouteFinder(wptList, avoidedCountry, windCalc);
 }
Example #31
0
        public Unit()
        {
            Speed = MaxSpeed;
            IsAnimating = false;
            PreviousDirection = Direction.North;
            IsWithinTargetRange = true;

            Controls = new ControlManager();

            _waypoints = new WaypointList();

            _energyTextures = new List<Texture2D>();
        }
        public async Task AddWaypoint(ICrestSolarSystem waypoint, WaypointList waypointList)
        {
            await EnsureTokenIsValid()
                .ConfigureAwait(false);

            var json = string.Format(
                                     WAYPOINT_TEMPLATE,
                                     waypoint.Href,
                                     waypoint.Id,
                                     waypointList == WaypointList.AddToFront ? "false" : "true",
                                     "false");
            await Crest.Settings.DocumentLoader.AuthenticatedPostRequest(Character.Waypoints.Href, BearerToken, json, DataType.Json)
                .ConfigureAwait(false);
        }
        /// <summary>
        /// Called on Awake
        /// </summary>
        protected override void Awake()
        {
            base.Awake();

            this.WarnIfMultipleInstances();

            _transform = this.transform;

            _wayPoints = new WaypointList();
            _navMessage = new UnitNavigationEventMessage(this.gameObject);

            _resultProcessors = this.GetComponents<SteerForPathResultProcessorComponent>();
            Array.Sort(_resultProcessors, (a, b) => a.processingOrder.CompareTo(b.processingOrder));

            _unit = this.GetUnitFacade();
            _pathSettings = _unit.pathNavigationOptions;

            _stopped = true;
        }
Example #34
0
 /// <summary>
 /// Tank constructor
 /// </summary>
 public Tank()
 {
     waypoints = new WaypointList();
 }
Example #35
0
        /// <summary>
        /// Called on Awake
        /// </summary>
        protected override void Awake()
        {
            base.Awake();
			
			_transform = this.transform;
			
			_wayPoints = new WaypointList();
			_navMessage = new UnitNavigationEventMessage(this.gameObject);
			
			_resultProcessors = this.GetComponents<SteerForPathResultProcessorComponent>();
			Array.Sort(_resultProcessors, (a, b) => a.processingOrder.CompareTo(b.processingOrder));
			StartCoroutine(delayToInit());
 
        }
Example #36
0
 /// <summary>
 /// Tank constructor
 /// </summary>
 public Tank(Game game)
     : base(game)
 {
     location = Vector2.Zero;
     waypoints = new WaypointList();
     BehaviorType = BehaviorType.Linear;
 }