Ejemplo n.º 1
0
 private void ExecuteAllActionsOnNavigationEngine(NavigationEngine engine, NavigationContext context)
 {
     for (var i = 0; i < context.Rovers.Count(); i++)
     {
         engine.Guide(context.Rovers[i], context.NavigationActions[i].ToArray());
     }
 }
Ejemplo n.º 2
0
        public async Task <IActionResult> InputNavigationString(string navigationString)
        {
            // Double check string is actually not sent, fixes potential environmental issues
            if (string.IsNullOrEmpty(navigationString))
            {
                using (var reader = new StreamReader(Request.Body))
                {
                    navigationString = await reader.ReadToEndAsync();
                }
            }
            navigationString = navigationString.Trim();
            if (!_navigationStringValidator.IsValidNavigationString(navigationString))
            {
                return(BadRequest("Unable to validate navigation string"));
            }

            var historicalIO = _memoryCache.GetOrCreate <List <KeyValuePair <string, NavigationContext> > >(CacheKey, (_) => new List <KeyValuePair <string, NavigationContext> >());
            var cached       = historicalIO.FirstOrDefault(kvp => kvp.Key.Equals(navigationString, StringComparison.OrdinalIgnoreCase));

            if (cached.Value != default)
            {
                return(Ok(cached.Value));
            }

            var context          = _navigationContextFactory.CreateFromNavigationString(navigationString);
            var navigationEngine = new NavigationEngine(context.Plateau);

            ExecuteAllActionsOnNavigationEngine(navigationEngine, context);

            historicalIO.Add(new KeyValuePair <string, NavigationContext>(navigationString, context));
            return(Ok(context));
        }
        public void GivenNavigationActionWouldRemoveRoverFromPlateauShouldThrow()
        {
            var plateau          = new Plateau(new Point(5, 5));
            var rover            = new Rover(new Point(5, 4), Heading.East);
            var navigationEngine = new NavigationEngine(plateau, rover);

            Assert.That(() => navigationEngine.Guide(rover, NavigationAction.M), Throws.InvalidOperationException);
        }
        public void GivenValidInputShouldCreateNavigationEngine()
        {
            var plateau = new Plateau(new Point(5, 5));
            var rover   = new Rover(new Point(1, 2), Heading.North);

            var navigationEngine = new NavigationEngine(plateau, rover);

            Assert.That(navigationEngine.RoverActionsCache.Count, Is.EqualTo(1));
            Assert.That(navigationEngine.Plateau, Is.Not.Null);
        }
Ejemplo n.º 5
0
        public NavigationTest(Client client) : base(client)
        {
            navEngine = new NavigationEngine();

            if (!navEngine.SetCurrentMap(me.Memory.ReadInt32(IntPtr.Zero + Offset.MapId)))
            {
                throw new Exception();
            }

            this.Active = true;
        }
        public void GivenValidActionsShouldGuideRover(int roverX, int roverY, Heading roverHeading, int expectedX, int expectedY, Heading expectedHeading, params NavigationAction[] navigationActions)
        {
            var plateau          = new Plateau(new Point(5, 5));
            var rover            = new Rover(new Point(roverX, roverY), roverHeading);
            var navigationEngine = new NavigationEngine(plateau, rover);

            navigationEngine.Guide(rover, navigationActions);

            Assert.That(rover.CurrentCoordinates.X, Is.EqualTo(expectedX));
            Assert.That(rover.CurrentCoordinates.Y, Is.EqualTo(expectedY));
            Assert.That(rover.CurrentHeading, Is.EqualTo(expectedHeading));
        }
Ejemplo n.º 7
0
        private void Awake()
        {
            NavigationGraph = NavigationGraphAsset.InstanciateNavigationGraph();
            NavigationGraphComponentContainer.UniqueNavigationGraphComponent = this;

            for (int i = 0; i < NavigationGraph.NavigationNodes.Count; i++)
            {
                NavigationNodeGameRepresentation[NavigationGraph.NavigationNodes[i]] = NavigationNodeComponent.instanciateFromPrefab(transform, NavigationGraph.NavigationNodes[i], NavigationNodeComponentPrefab);
            }

            NavigationEngine = NavigationEngine.alloc();
        }
Ejemplo n.º 8
0
    public void Before()
    {
        TestEventQueue         = EventQueue.alloc();
        ExternalHooks.LogDebug = (string s) => { };
        TurnTimeline.alloc();

        NavigationEngine.alloc();
        NavigationGraph l_navigationGraph = NavigationGraph.alloc();

        NavigationGraphContainer.UniqueNavigationGraph = l_navigationGraph;
        NavigationGraphBuild.CreateGridNavigation(l_navigationGraph, 4, 4);
        NavigationGraph.takeSnapshot(l_navigationGraph);
    }
Ejemplo n.º 9
0
        public override void Execute(EventQueue p_eventQueue)
        {
            base.Execute(p_eventQueue);
            NavigationNode l_oldNavigationNode = Entity.CurrentNavigationNode;

            Entity.set_currentNavigationNode(Entity, NavigationNode);

            List <AEvent> l_triggeredEvents = NavigationEngine.resolveEntityNavigationNodeChange(NavigationEngineContainer.UniqueNavigationEngine, Entity, l_oldNavigationNode, NavigationNode);

            for (int i = l_triggeredEvents.Count - 1; i >= 0; i--)
            {
                EventQueue.insertEventAt(p_eventQueue, 0, l_triggeredEvents[i]);
            }
        }
        public void GivenNavigationActionWouldMoveRoverShouldAddActionToCache()
        {
            var plateau          = new Plateau(new Point(7, 7));
            var initialX         = 5;
            var initialY         = 4;
            var initialHeading   = Heading.East;
            var rover            = new Rover(new Point(initialX, initialY), initialHeading);
            var navigationEngine = new NavigationEngine(plateau, rover);

            navigationEngine.Guide(rover, NavigationAction.M);


            Assert.That(navigationEngine.RoverActionsCache[rover], Is.Not.Empty);
        }
Ejemplo n.º 11
0
    public void After()
    {
        foreach (Entity l_entity in EntityContainer.Entities)
        {
            Entity.markForDestruction(l_entity);
            EventQueue.enqueueEvent(TestEventQueue, EntityDestroyEvent.alloc(l_entity));
        }

        EventQueue.iterate(TestEventQueue);
        EventQueue.clearAll(TestEventQueue);
        _TurnTimeline.TurnTimeline.free(_TurnTimeline.TurnTimelineContainer.UniqueTurnTimeline);
        NavigationEngine.free(NavigationEngineContainer.UniqueNavigationEngine);
        NavigationGraph.free(NavigationGraphContainer.UniqueNavigationGraph);
        TestEventQueue = null;
    }
        public void GivenNavigationActionWouldRemoveRoverFromPlateauShouldNotAddActionToCache()
        {
            var plateau          = new Plateau(new Point(5, 5));
            var initialX         = 5;
            var initialY         = 4;
            var initialHeading   = Heading.East;
            var rover            = new Rover(new Point(initialX, initialY), initialHeading);
            var navigationEngine = new NavigationEngine(plateau, rover);

            try
            {
                navigationEngine.Guide(rover, NavigationAction.M);
            }
            catch (InvalidOperationException)
            {
                // Do nothing
            }

            Assert.That(navigationEngine.RoverActionsCache[rover], Is.Empty);
        }
        public void GivenNavigationActionWouldRemoveRoverFromPlateauShouldResetRoversPosition()
        {
            var plateau          = new Plateau(new Point(5, 5));
            var initialX         = 5;
            var initialY         = 4;
            var initialHeading   = Heading.East;
            var rover            = new Rover(new Point(initialX, initialY), initialHeading);
            var navigationEngine = new NavigationEngine(plateau, rover);

            try
            {
                navigationEngine.Guide(rover, NavigationAction.M);
            }
            catch (InvalidOperationException)
            {
                // Do nothing
            }

            Assert.That(rover.CurrentCoordinates.X, Is.EqualTo(initialX));
            Assert.That(rover.CurrentCoordinates.Y, Is.EqualTo(initialY));
            Assert.That(rover.CurrentHeading, Is.EqualTo(initialHeading));
        }
Ejemplo n.º 14
0
        public TestBot(Nav.Navmesh navmesh, NavigationEngine navigator, ExplorationEngine explorer, Vec3 pos, Vec3 dest, bool explore = false, bool simulate_stuck = false, int dest_grid_id = -1, List <Vec3> waypoints = null)
        {
            m_Navmesh = navmesh;
            //m_Navigator = new NavigationEngine(navmesh);
            //m_Navigator.AddObserver(this);
            m_Navigator                    = navigator;
            m_Navigator.CurrentPos         = pos;
            m_Navigator.Precision          = 2;
            m_Navigator.EnableAntiStuck    = true;
            m_Navigator.DestinationGridsId = dest_grid_id != -1 ? new List <int>(new int[] { dest_grid_id }) : null;
            if (waypoints != null)
            {
                m_Navigator.Waypoints = waypoints;
            }

            //m_Explorer = new Nav.ExploreEngine.Nearest(m_Navmesh, m_Navigator);
            m_Explorer         = explorer;
            m_Explorer.Enabled = explore;

            Destination   = dest;
            SimulateStuck = simulate_stuck;
            Paused        = false;
            m_GotoPosUpdateTimer.Start();
        }
Ejemplo n.º 15
0
Archivo: Nearest.cs Proyecto: Ifry/Nav
 public Nearest(Navmesh navmesh, NavigationEngine navigator, int explore_cell_size = 90)
     : base(navmesh, navigator, explore_cell_size)
 {
 }
Ejemplo n.º 16
0
 public Nearest(Navmesh navmesh, NavigationEngine navigator, int explore_cell_size = 90, bool ignore_small = true)
     : base(navmesh, navigator, explore_cell_size, ignore_small)
 {
 }