private async Task <List <int[]> > GetAsync(JsonElement start, JsonElement finish, JsonElement arr)
        {
            List <List <IBasicNodeModel> > graph = await _createGraph.GetAsync(arr[4][0].GetInt32(), arr[4][1].GetInt32());

            await _unitHelper.FillAsync(graph, start, finish, arr);

            graph = await CalculateAsync(graph);

            return(await ShortestPathAsync(finish.ConvertToVector2(), graph));
        }
Пример #2
0
        public async Task FillAsync(List <List <IBasicNodeModel> > graph, JsonElement start, JsonElement finish, JsonElement arr)
        {
            List <List <IBasicNodeModel> > list = new List <List <IBasicNodeModel> >();

            list.Add(new List <IBasicNodeModel>());
            Vector2 startCoord = start.ConvertToVector2();

            list[0].Add(CreateUnit(coord: startCoord, distance: 0, type: UnitType.StartNode, previousNodeCoord: new Vector2(-1, -1)));

            Vector2 finishNode = finish.ConvertToVector2();

            list[0].Add(CreateUnit(coord: finishNode, type: UnitType.FinishNode));

            list.Add(new List <IBasicNodeModel>());
            await Task.Run(() =>
            {
                foreach (JsonElement coords in arr[2].EnumerateArray())
                {
                    list[1].Add(CreateUnit(coord: coords.ConvertToVector2(), visited: true, type: UnitType.WallNode));
                }
            });

            await graph.DefineAsync(list);
        }