Exemplo n.º 1
0
        private void HandleAStarRouteMessage(SharedAiDebug.AStarRouteMessage message)
        {
            if ((_tooltips & AiDebugMode.Paths) != 0)
            {
                var entityManager = IoCManager.Resolve <IEntityManager>();
                var entity        = entityManager.GetEntity(message.EntityUid);
                TryCreatePanel(entity);

                var label = (Label)_aiBoxes[entity].GetChild(0).GetChild(1);
                label.Text = $"Pathfinding time (ms): {message.TimeTaken * 1000:0.0000}\n" +
                             $"Nodes traversed: {message.CameFrom.Count}\n" +
                             $"Nodes per ms: {message.CameFrom.Count / (message.TimeTaken * 1000)}";
            }
        }
Exemplo n.º 2
0
        private void DispatchAStarDebug(SharedAiDebug.AStarRouteDebug routeDebug)
        {
            var mapManager = IoCManager.Resolve <IMapManager>();
            var route      = new List <Vector2>();

            foreach (var tile in routeDebug.Route)
            {
                var tileGrid = mapManager.GetGrid(tile.GridIndex).GridTileToLocal(tile.GridIndices);
                route.Add(mapManager.GetGrid(tile.GridIndex).LocalToWorld(tileGrid).Position);
            }

            var cameFrom = new Dictionary <Vector2, Vector2>();

            foreach (var(from, to) in routeDebug.CameFrom)
            {
                var tileOneGrid  = mapManager.GetGrid(from.GridIndex).GridTileToLocal(from.GridIndices);
                var tileOneWorld = mapManager.GetGrid(from.GridIndex).LocalToWorld(tileOneGrid).Position;
                var tileTwoGrid  = mapManager.GetGrid(to.GridIndex).GridTileToLocal(to.GridIndices);
                var tileTwoWorld = mapManager.GetGrid(to.GridIndex).LocalToWorld(tileTwoGrid).Position;
                cameFrom.Add(tileOneWorld, tileTwoWorld);
            }

            var gScores = new Dictionary <Vector2, float>();

            foreach (var(tile, score) in routeDebug.GScores)
            {
                var tileGrid = mapManager.GetGrid(tile.GridIndex).GridTileToLocal(tile.GridIndices);
                gScores.Add(mapManager.GetGrid(tile.GridIndex).LocalToWorld(tileGrid).Position, score);
            }

            var closedTiles = new List <Vector2>();

            foreach (var tile in routeDebug.ClosedTiles)
            {
                var tileGrid = mapManager.GetGrid(tile.GridIndex).GridTileToLocal(tile.GridIndices);
                closedTiles.Add(mapManager.GetGrid(tile.GridIndex).LocalToWorld(tileGrid).Position);
            }

            var systemMessage = new SharedAiDebug.AStarRouteMessage(
                routeDebug.EntityUid,
                route,
                cameFrom,
                gScores,
                closedTiles,
                routeDebug.TimeTaken
                );

            EntityManager.EntityNetManager.SendSystemNetworkMessage(systemMessage);
        }
Exemplo n.º 3
0
 private void HandleAStarRouteMessage(SharedAiDebug.AStarRouteMessage message)
 {
     if ((_modes & PathfindingDebugMode.Nodes) != 0 ||
         (_modes & PathfindingDebugMode.Route) != 0)
     {
         _overlay.AStarRoutes.Add(message);
         Timer.Spawn(TimeSpan.FromSeconds(_routeDuration), () =>
         {
             if (_overlay == null)
             {
                 return;
             }
             _overlay.AStarRoutes.Remove(message);
         });
     }
 }
        private void DispatchAStarDebug(SharedAiDebug.AStarRouteDebug routeDebug)
        {
            var mapManager = IoCManager.Resolve <IMapManager>();
            var route      = new List <Vector2>();

            foreach (var tile in routeDebug.Route)
            {
                var tileGrid = mapManager.GetGrid(tile.GridIndex).GridTileToLocal(tile.GridIndices);
                route.Add(tileGrid.ToMapPos(EntityManager));
            }

            var cameFrom = new Dictionary <Vector2, Vector2>();

            foreach (var(from, to) in routeDebug.CameFrom)
            {
                var tileOneGrid  = mapManager.GetGrid(from.GridIndex).GridTileToLocal(from.GridIndices);
                var tileOneWorld = tileOneGrid.ToMapPos(EntityManager);
                var tileTwoGrid  = mapManager.GetGrid(to.GridIndex).GridTileToLocal(to.GridIndices);
                var tileTwoWorld = tileTwoGrid.ToMapPos(EntityManager);
                cameFrom[tileOneWorld] = tileTwoWorld;
            }

            var gScores = new Dictionary <Vector2, float>();

            foreach (var(tile, score) in routeDebug.GScores)
            {
                var tileGrid = mapManager.GetGrid(tile.GridIndex).GridTileToLocal(tile.GridIndices);
                gScores[tileGrid.ToMapPos(EntityManager)] = score;
            }

            var systemMessage = new SharedAiDebug.AStarRouteMessage(
                routeDebug.EntityUid,
                route,
                cameFrom,
                gScores,
                routeDebug.TimeTaken
                );

            RaiseNetworkEvent(systemMessage);
        }