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)),
            });
        }
示例#2
0
    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++;
        }
    }