Esempio n. 1
0
    Vector2 GetAnchorSetCircumcenter(AnchorSet anchorSet)
    {
        FindCircumcenter findC = GetComponent <FindCircumcenter>();

        Vector2 first = new Vector2(anchorSet.first.x, anchorSet.first.z);

        Vector2 second = new Vector2(anchorSet.second.x, anchorSet.second.z);

        Vector2 third = new Vector2(anchorSet.third.x, anchorSet.third.z);

        return(findC.FindCircumCenter(first, second, third));
    }
Esempio n. 2
0
    // Update is called once per frame
    void Update()
    {
        /*
         * if (OVRInput.GetLocalControllerVelocity(OVRInput.Controller.LTouch).sqrMagnitude < 0.1f*0.1f)
         * {
         *  AddPointTimer += Time.deltaTime;
         *
         *  if (AddPointTimer > 2)
         *      AddAnchorpoint();
         *
         * }
         * else
         * {
         *  AddPointTimer = 0;
         *
         * }
         */


        if (OVRInput.GetDown(OVRInput.RawButton.X) && calibrationActive)
        {
            AddAnchorpoint();

            //guide.SetInfoScreen(AnchorPoints.Count);
        }

        if (OVRInput.GetDown(OVRInput.RawButton.Y))
        {
            calibrationActive = true;
            foreach (GameObject an in AnchorPoints)
            {
                Destroy(an);
            }
            AnchorPoints.Clear();

            //guide.SetInfoScreen(0);

            //GameManager.Instance.isBoardTracked = false;
            GameManager.Instance.calibratedObject.ResetCalibration();
        }

        if (AnchorPoints.Count >= 3)
        {
            calibrationActive = false;

            FindCircumcenter findC = GetComponent <FindCircumcenter>();

            List <Vector2> anchorPoints2D = new List <Vector2>();

            foreach (GameObject go in AnchorPoints)
            {
                anchorPoints2D.Add(new Vector2(go.transform.position.x, go.transform.position.z));
            }

            Vector2 center = findC.FindCircumCenter(anchorPoints2D[0], anchorPoints2D[1], anchorPoints2D[2]);

            Centerpoint = new Vector3(center.x, 1, center.y);

            PunchingBagObj.transform.position = Centerpoint;

            float distFromCenter = Vector2.Distance(anchorPoints2D[0], center);

            PunchingBagObj.transform.localScale = Vector3.one * distFromCenter * 2;

            //GameManager.Instance.isBoardTracked = true;

            Vector3 averarageAnchor = Vector3.zero;

            for (int i = 0; i < 3; i++)
            {
                averarageAnchor += new Vector3(anchorPoints2D[i].x, 1, anchorPoints2D[i].y);
            }

            averarageAnchor /= 3;

            PunchingBagObj.forward = (Centerpoint - averarageAnchor).normalized;

            averarageAnchor = Vector3.zero;

            for (int i = 0; i < 3; i++)
            {
                averarageAnchor += AnchorPoints[i].transform.position;
            }

            averarageAnchor /= 3;

            PunchingBagObj.transform.position = new Vector3(PunchingBagObj.position.x, averarageAnchor.y, PunchingBagObj.position.z);

            GameManager.Instance.calibratedObject.SetCalibration(PunchingBagObj);

            foreach (GameObject an in AnchorPoints)
            {
                Destroy(an);
            }
            AnchorPoints.Clear();
        }

        if (OVRInput.GetDown(OVRInput.RawButton.RIndexTrigger))
        {
            transform.forward = -transform.forward;
        }

        if (OVRInput.Get(OVRInput.RawButton.LIndexTrigger))
        {
            Vector3 handpos = ArmPositioning.LeftHandInstance.transform.position;

            handpos = new Vector3(handpos.x, 0, handpos.z);

            Vector3 bagpos = PunchingBagObj.transform.position;

            bagpos = new Vector3(bagpos.x, 0, bagpos.y);

            float distFromCenter = Vector3.Distance(handpos, bagpos);

            PunchingBagObj.transform.localScale = Vector3.one * distFromCenter * 2;
        }

        if (Input.GetKeyDown(KeyCode.N))
        {
            GameManager.Instance.calibratedObject.SetCalibration(PunchingBagObj);
        }
    }