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)); }
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); }