Ejemplo n.º 1
0
    void Placing()
    {
        if (!placed)          //if it is the first phase
        {
            if (cooldown <= 0)
            {
                foreach (Touch touch in Input.touches)
                {
                    if (touch.phase == TouchPhase.Began || touch.phase == TouchPhase.Moved || touch.phase == TouchPhase.Ended)
                    {
                        if (raycastManager.Raycast(touch.position, hits, UnityEngine.XR.ARSubsystems.TrackableType.PlaneWithinBounds))
                        {
                            if (marker.activeSelf == false)
                            {
                                marker.SetActive(true);
                            }
                            //Pose p = new Pose(hits[0].pose.position + (Vector3.up * height / 100), hits[0].pose.rotation); //move marker to new hit
                            marker.transform.position   = hits[0].pose.position + (Vector3.up * height / 100);
                            marker.transform.rotation   = hits[0].pose.rotation;
                            marker.transform.localScale = new Vector3(scale, scale, scale) * defaultScale;
                            if (touch.phase == TouchPhase.Ended)                              //if the lifting of the touch is on a plane go to the rotation screen
                            {
                                plane           = planeManager.GetPlane(hits[0].trackableId);
                                startOriginPose = new Pose(hits[0].pose.position, hits[0].pose.rotation);
                                confirmUI.SetActive(true);
                                placed = true;
                                adjust = true;

                                foreach (ARPlane pl in planeManager.trackables)
                                {
                                    if (pl != plane)
                                    {
                                        pl.gameObject.SetActive(false);
                                    }
                                }
                                planeManager.detectionMode = UnityEngine.XR.ARSubsystems.PlaneDetectionMode.None;

                                PopupManager.popupManager.DisplayPopup(PopupManager.FOUND, false);

                                mainPlane = plane.gameObject;

                                //mainPlane.GetComponent<MeshRenderer>().enabled = false;
                                //mainPlane.GetComponent<LineRenderer>().enabled = false;
                            }
                        }
                        else
                        {
                            marker.SetActive(false);
                        }
                    }
                }
            }
            else
            {
                cooldown -= Time.deltaTime;
            }
        }
        else if (adjust)          //if it is the second phase
        {
            CheckMarker();
            marker.transform.position         = startOriginPose.position + (Vector3.up * height / 100);
            marker.transform.localEulerAngles = startOriginPose.rotation.eulerAngles + new Vector3(0, rotation, 0);
            marker.transform.localScale       = new Vector3(scale, scale, scale) * defaultScale;
            //Debug.Log((Vector3.up * height / 100));
            if (done)
            {
                Destroy(marker.gameObject);
                startOriginPose.position += (Vector3.up * height / 100);
                anchor = refManager.AttachReferencePoint(plane, startOriginPose).gameObject;
                print("Anchor placed");
                done = adjust = false;
                confirmUI.SetActive(false);


                if (MySceneManager.CurrentScene == MySceneManager.CHOOSINGSTART)
                {
                    MySceneManager.sceneManager.ChangeScene(MySceneManager.MAPSELECTOR);
                }
                else if (MySceneManager.CurrentScene == MySceneManager.CHOOSINGPOS)
                {
                    MySceneManager.sceneManager.ChangeScene(MySceneManager.MAIN);
                }
            }
        }
    }