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()); } }
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); }
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)); }
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(); }
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); }
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); }
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)); }
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(); }
public Nearest(Navmesh navmesh, NavigationEngine navigator, int explore_cell_size = 90) : base(navmesh, navigator, explore_cell_size) { }
public Nearest(Navmesh navmesh, NavigationEngine navigator, int explore_cell_size = 90, bool ignore_small = true) : base(navmesh, navigator, explore_cell_size, ignore_small) { }