コード例 #1
0
        public void SetFrequency(float frequency)
        {
            var message = new Message();

            message.command  = "frequency";
            message.argument = frequency;
            context.SendJson <Message>(message);
        }
コード例 #2
0
        private void Update()
        {
            if (attached)
            {
                transform.position = attached.transform.position;
                transform.rotation = attached.transform.rotation;
            }
            if (owner)
            {
                context.SendJson(new Message(transform, fired));
            }
            if (owner && fired)
            {
                body.isKinematic = false;
                body.AddForce(transform.up * 0.75f, ForceMode.Force);

                if (!particles.isPlaying)
                {
                    particles.Play();
                    body.AddForce(new Vector3(Random.value, Random.value, Random.value) * 1.1f, ForceMode.Force);
                }
            }
            if (!owner && fired)
            {
                if (!particles.isPlaying)
                {
                    particles.Play();
                }
            }
        }
コード例 #3
0
 private void Send<T>(string type, T args)
 {
     context.SendJson(new Message()
     {
         type = type,
         args = JsonUtility.ToJson(args)
     });
 }
コード例 #4
0
 private void Send(string type, string args)
 {
     context.SendJson(new Message()
     {
         type = type,
         args = args
     });
 }
コード例 #5
0
ファイル: NetworkSpawner.cs プロジェクト: AriaTZY/MonopolyVR
        public GameObject Spawn(GameObject gameObject)
        {
            var i         = ResolveIndex(gameObject);
            var networkId = NetworkScene.GenerateUniqueId();

            context.SendJson(new Message()
            {
                catalogueIndex = i, networkId = networkId
            });
            return(Instantiate(i, networkId, true));
        }
コード例 #6
0
        public void SpawnBasketball()
        {
            var ball = Instantiate(Prefab, transform).GetComponent <SimpleBasketball>();

            ball.Id.Set(NetworkScene.GenerateUniqueId());
            ball.owner = true;
            context.SendJson(new Message()
            {
                newNetworkObjectId = ball.Id
            });
        }
コード例 #7
0
        private void FixedUpdate()
        {
            if (follow != null)
            {
                owner          = true;
                rb.isKinematic = false;
                // TZY
                transform.position = follow.transform.position;
                transform.rotation = follow.transform.rotation;
            }

            // if a player throw the matrial and material stoped
            if (follow == null && rb.velocity == new Vector3(0, 0, 0) && rb.angularVelocity == new Vector3(0, 0, 0))
            {
                //Debug.Log("The center is:" + center);
                //Debug.Log("I am here:" + this.gameObject.transform.localPosition);
                float dis = Mathf.Pow(center.x - transform.position.x, 2) + Mathf.Pow(center.y - transform.position.z, 2);
                dis = Mathf.Sqrt(dis);

                if (dis < activate_distance_threshold)
                {
                    if (!is_set)
                    {
                        int index = gameController.current_piece_index;
                        gameController.current_piece_index += 1;

                        int floor_index = index / 5;
                        int wall_index  = index % 5;

                        Debug.Log("The index is:" + index);

                        if (wall_index <= 3)
                        {
                            transform.position = BasePosition + wall_bias[wall_index] + new Vector3(0, 2, 0) * floor_index;
                            Debug.Log("The position has been set to:" + transform.position);
                            transform.rotation = Quaternion.Euler(wall_angle[wall_index]);
                        }
                        GetComponent <Rigidbody>().useGravity = false;
                        GetComponent <BoxCollider>().enabled  = false;
                        is_set = true;
                    }
                }
                //Debug.Log("The distance:" + dis);
            }

            if (owner)
            {
                context.SendJson(new TransformMessage(transform));
            }
        }
コード例 #8
0
 private void FixedUpdate()
 {
     if (follow != null)
     {
         owner          = true;
         rb.isKinematic = false;
     }
     if (follow != null)
     {
         rb.AddForce(-rb.velocity, ForceMode.VelocityChange);
         rb.AddForce((follow.transform.position - rb.position) / Time.deltaTime, ForceMode.VelocityChange);
     }
     if (owner)
     {
         context.SendJson(new TransformMessage(transform));
     }
     if (!follow && owner_id != null && rb.velocity == vel && rb.angularVelocity == vel)
     {
         Vector3 y = new Vector3(0, 1, 0);
         if (Vector3.Dot(rb.transform.forward, y) >= 0.9)
         {
             result = 3;
         }
         if (Vector3.Dot(rb.transform.right, y) >= 0.9)
         {
             result = 5;
         }
         if (Vector3.Dot(rb.transform.up, y) >= 0.9)
         {
             result = 1;
         }
         if (Vector3.Dot(rb.transform.forward, y) <= -0.9)
         {
             result = 4;
         }
         if (Vector3.Dot(rb.transform.right, y) <= -0.9)
         {
             result = 2;
         }
         if (Vector3.Dot(rb.transform.up, y) <= -0.9)
         {
             result = 6;
         }
         owner = false;
     }
 }
コード例 #9
0
        private void FixedUpdate()
        {
            if (follow != null)
            {
                owner          = true;
                rb.isKinematic = false;
            }

            if (follow != null)
            {
                rb.AddForce(-rb.velocity, ForceMode.VelocityChange);
                rb.AddForce((follow.transform.position - rb.position) / Time.deltaTime, ForceMode.VelocityChange);
            }

            if (owner)
            {
                context.SendJson(new TransformMessage(transform));
            }
        }
コード例 #10
0
        void Update()
        {
            // when update, check if the puzzle is finished
            bool isFinish = Instance.IsFinish();

            // Updata position matrix and Update Correction Matrix in PuzzleManager Instance
            Instance.UpdatePosition(rectTransform.position, name);
            Instance.UpdateGridCorrection();

            // sending msg
            if (owner)
            {
                content.SendJson(new Message(rectTransform.position));
            }

            if (pre_not_owner)
            {
                owner = false; pre_not_owner = false;
            }
        }
コード例 #11
0
ファイル: PuzzleManager.cs プロジェクト: AriaTZY/MonopolyVR
 // Update is called once per frame
 void Update()
 {
     // if the start button is pressed by me, I need to send the time to other all the time
     // Otherwise, just parse the time received in Update()
     if (isMePressStartButton)
     {
         content.SendJson(new Message(spendTime, distroyflag));//, puzzlespanwer.transform.position + new Vector3(0.0f, 1.2f, 0.0f)));
         if (startTime && !finishedflag)
         {
             UpdateTime();
         }
     }
     else
     {
         ParseTime(spendTime);
     }
     if (distroyflag)
     {
         Destroy(ClosePanel);
     }
 }
コード例 #12
0
    private void AnimateHands()
    {
        if (avatar.IsLocal)
        {
            gripTargetLeft  = GetHintNode(AvatarHints.NodeFloat.LeftHandGrip);
            gripTargetRight = GetHintNode(AvatarHints.NodeFloat.RightHandGrip);

            context.SendJson(new Message(gripTargetLeft, gripTargetRight)); // sent every frame currently...put into if() ?
            //Debug.Log("Anim: " + gripCurrent + " " + gripTarget);
        }

        if (gripCurrentLeft != gripTargetLeft)
        {
            gripCurrentLeft = Mathf.MoveTowards(gripCurrentLeft, gripTargetLeft, Time.deltaTime * speed);
            leftHandAnimator.SetFloat(animatorGripParam, gripCurrentLeft);
        }
        if (gripCurrentRight != gripTargetRight)
        {
            gripCurrentRight = Mathf.MoveTowards(gripCurrentRight, gripTargetRight, Time.deltaTime * speed);
            rightHandAnimator.SetFloat(animatorGripParam, gripCurrentRight);
        }
    }
コード例 #13
0
 public void Send(NetworkId sharedId, Message m)
 {
     context.SendJson(sharedId, m);
 }
コード例 #14
0
ファイル: GameController.cs プロジェクト: AriaTZY/MonopolyVR
 public void ClickStartButton()
 {
     is_click = true;
     is_start = true;
     context.SendJson(new ClickMessage(is_click, is_start));
 }
コード例 #15
0
ファイル: BuildingBlocks.cs プロジェクト: AriaTZY/MonopolyVR
        private void FixedUpdate()
        {
            //print("我当前正在看:" + "本地:" + current_piece_index + "Controller:" + gameController.current_piece_index);
            if (follow != null)
            {
                owner = true;
                // TZY
                if (current_piece_index > 2)
                {
                    transform.position = follow.transform.position;
                }
                else  // first 3 pieces are so high, so I add some y axis bias to make it easy to hold
                {
                    transform.position = new Vector3(follow.transform.position.x, follow.transform.position.y + 1.5f, follow.transform.position.z);
                }
                transform.rotation = follow.transform.rotation;
            }


            if (follow == null)  // TZY, only owner do this judgement. If not, if I drag the object to the nearby place, it will flash
            {
                if (owner == true && rb.velocity == new Vector3(0, 0, 0) && rb.angularVelocity == new Vector3(0, 0, 0))
                {
                    float dis = Mathf.Pow(centre.x - transform.position.x, 2) + Mathf.Pow(centre.z - transform.position.z, 2);
                    dis = Mathf.Sqrt(dis);

                    if (dis < activate_distance_threshold)
                    {
                        transform.position = blockPositions[current_piece_index];
                        transform.rotation = Quaternion.Euler(blockAngles[current_piece_index]);

                        GetComponent <Rigidbody>().useGravity = false;
                        GetComponent <BoxCollider>().enabled  = false;

                        context.SendJson(new TransformMessage(transform));
                        owner = false;
                        // always sending, but only update when the receieving state is true
                        // context.SendJson(new finishMessage(is_finished));
                    }
                }
            }

            // Dymatic check if is finshed by comparing the distance is 0 or not
            if (follow == null)
            {
                rb.isKinematic = false;
                //print("位置对比:" + transform.position.x + '=' + blockPositions[current_piece_index].x + ' ' + transform.position.z + '=' + blockPositions[current_piece_index].z);
                if (Mathf.Abs(transform.position.x - blockPositions[current_piece_index].x) < 0.3 && (transform.position.z - blockPositions[current_piece_index].z) < 0.3 && transform.rotation == Quaternion.Euler(blockAngles[current_piece_index]))
                {
                    rb.isKinematic = true;
                    centerComponent.GetComponent <MeshRenderer>().enabled = false;
                    GetComponent <Rigidbody>().useGravity = false;
                    GetComponent <BoxCollider>().enabled  = false;
                }
            }

            if (owner)
            {
                context.SendJson(new TransformMessage(transform));
            }
        }