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); } } } }