private void HandleInput() { //Currently handling Oculus GO and keyboard input types Quaternion controllerLocalRotation = OVRInput.GetLocalControllerRotation(OVRInput.GetActiveController()); bool hasController = (controllerLocalRotation != Quaternion.identity); // Controller discreet events, use else if because we don't want to double count clickUp as touchUp // Back is Quit if (OVRInput.GetUp(OVRInput.Button.Back) || Input.GetKeyUp(KeyCode.Backspace)) { //Debug.Log("GOT BACKBUTTON"); //audioSynth.masterVolume = 0f; quitNow = true; } //Trackpad Gestures on the OVRInput.Get() else if (OVRInput.Get(OVRInput.Button.DpadDown) || Input.GetKeyUp(KeyCode.DownArrow)) { //Debug.Log("GOT DOWN"); ribbonCloner.SetNumber(ribbonCloner.GetNumber() - 1); } // Up Swipe Gesture (up arrow) increases arm count by 1 else if (OVRInput.Get(OVRInput.Button.DpadUp) || Input.GetKeyUp(KeyCode.UpArrow)) { //Debug.Log("GOT UP"); ribbonCloner.SetNumber(ribbonCloner.GetNumber() + 1); } else if (OVRInput.Get(OVRInput.Button.DpadLeft) || Input.GetKeyUp(KeyCode.LeftArrow)) { //Debug.Log("GOT LEFT"); ribbonCloner.ChangeColor(-1); } else if (OVRInput.Get(OVRInput.Button.DpadRight) || Input.GetKeyUp(KeyCode.RightArrow)) { //Debug.Log("GOT RIGHT"); ribbonCloner.ChangeColor(1); } else if (OVRInput.GetUp(OVRInput.Button.PrimaryTouchpad) || Input.GetKeyUp(KeyCode.R)) { //Debug.Log("GOT TRACKPAD CLICK"); ribbonGenerator.SetScaledTime(-1f); ribbonCloner.transform.rotation = Quaternion.identity; ribbonCloner.SetNumber(Random.Range(1, 15)); ribbonCloner.ChangeColor(Random.Range(-2, 2)); } else if (OVRInput.Get(OVRInput.Touch.PrimaryTouchpad)) { touchCoords = OVRInput.Get(OVRInput.Axis2D.PrimaryTouchpad); } else if (OVRInput.GetUp(OVRInput.Touch.PrimaryTouchpad) || Input.GetKeyUp(KeyCode.S)) { float speedOverride = -1f; float widthOverride = -1f; if (hasController) // Only works with controller, no PC control for this. { //speedOverride = controllerLocalRotation.eulerAngles.z; //speedOverride = 1f - (speedOverride > 180f ? (180f - speedOverride) / 360f : (360f - speedOverride) / 360f + .5f); //Debug.Log("speedSet " + touchCoords); speedOverride = (touchCoords.x + 1f) / 2f; widthOverride = (touchCoords.y + 1.2f) / 2.1f; } ribbonGenerator.SetScaledTime(speedOverride); ribbonGenerator.SetWidthOverride(widthOverride); } if (OVRInput.GetDown(OVRInput.Button.PrimaryIndexTrigger)) { //Debug.Log("GOT TRIGGER DOWN"); controllerStartOrientation = OVRInput.GetLocalControllerRotation(OVRInput.GetActiveController()); clonerStartOrientation = ribbonCloner.transform.rotation; } else if (OVRInput.Get(OVRInput.Button.PrimaryIndexTrigger)) { // slowly drift back to center when not grabbing Quaternion rotateBy = Quaternion.Inverse(controllerStartOrientation) * OVRInput.GetLocalControllerRotation(OVRInput.GetActiveController()); ribbonCloner.transform.rotation = rotateBy * clonerStartOrientation; } else { ribbonCloner.transform.rotation = Quaternion.RotateTowards(ribbonCloner.transform.rotation, Quaternion.identity, .05f); } }