Example #1
0
    void ProcessTouch()
    {
        if (EventSystem.current.IsPointerOverGameObject())
        {
            return;
        }
        Touch touch;

        if (Input.touchCount != 1 ||
            (touch = Input.GetTouch(0)).phase != TouchPhase.Began)
        {
            return;
        }

        TrackableHit      hit;
        TrackableHitFlags raycastFilter =
            TrackableHitFlags.PlaneWithinBounds |
            TrackableHitFlags.PlaneWithinPolygon;

        if (Frame.Raycast(touch.position.x, touch.position.y, raycastFilter, out hit))
        {
            if (marker == null)
            {
                SpawnMarker(hit.Trackable as DetectedPlane);
                Constants.dataContainer.SetCurrentState(States.MarkerPlacement);
            }
            else if (!markerSet)
            {
                if (touch.position.y < Screen.height / 10)
                {
                    markerSet = true;
                    Constants.dataContainer.SetCurrentState(States.MarkerRotation);
                    timeup = false;
                    StartCoroutine(Timer());
                }
            }
            else if (!roomSet && markerSet && timeup)
            {
                if (touch.position.x > Screen.width / 2 && touch.position.y > Screen.height / 10)
                {
                    rotateMarker(2);
                }
                else if (touch.position.x < Screen.width / 2 && touch.position.y > Screen.height / 10)
                {
                    rotateMarker(-2);
                }
                else
                {
                    spawnRoom.spawnARoom(hit, marker.transform.position, marker.transform.rotation);
                    roomSet = true;
                    marker.SetActive(false);
                    Constants.dataContainer.SetCurrentState(States.ModelPlacement);
                }
            }
        }
    }