private async void GetBoardAsyncCommandExecute() { var results = await boardClient.GetBoardAsync(); BoardModels.Clear(); BoardModels.Add(new BoardModel { ID = results.ID, SwimLanes = await Task.WhenAll(from s in results.SwimLanes select GetUpdatedSwimLaneAsync(s)), }); }
private async Task GenerateBoardAsync() { var board = await boardClient.GetBoardAsync(); List <Task> swimLaneInits = new List <Task>(); int counter = 0; float degrees = Mathf.PI / (float)board.SwimLanes.Count(); foreach (var lane in board.SwimLanes) { var go = GameObject.Instantiate(SwimLanePrefab, transform); var swimLane = go.GetComponent <SwimLane>(); swimLane.SwimLaneModel = lane; swimLane.CardClient = cardClient; swimLane.GvrLaserPointer = GvrLaserPointer; swimLane.Player = Player; swimLane.BoardManager = this; swimLane.ChildCardChanged += SwimLane_ChildCardChanged; swimLanes.Add(swimLane); var x = transform.position.x + RADIUS * Mathf.Cos(degrees * (float)counter); var z = transform.position.z + RADIUS * Mathf.Sin(degrees * (float)counter); var ray = new Ray(new Vector3(-x, 100.0f, z), Vector3.down); RaycastHit hit = default(RaycastHit); if (Island.GetComponent <Collider>().Raycast(ray, out hit, 100.0f)) { go.transform.position = hit.point + new Vector3(0, 1, 0); } swimLane.AfterPositionUpdate(); counter++; } }