// Update is called once per frame void Update() { try { if (transitioning) { return; } // Test currently running. if (state == RunState.TestRunning) { if (!tutorialActive && searchTimeLimit > 0 && (Time.time - stateStartTime) > searchTimeLimit) { EndTest(); if (tests.Count > 0) { StartCoroutine(WaitThenActivate(0.5f, GetNextTest(), ShowRealVal, null)); } else { StartCoroutine(WaitThenActivate(0.5f, null, EndTestPass)); } } //Activate/Deactivate applicable tooltips. if (selectionHandler.IsPointing()) { A_Button_Tooltip.SetActive(true); } else { A_Button_Tooltip.SetActive(false); } if (selectionHandler.HasSelected()) { X_Button_Tooltip.SetActive(true); } else { X_Button_Tooltip.SetActive(false); } //Lock in the answer and transition to the next test. if (OVRInput.GetUp(lockinButton) && (skippingAllowed || selectionHandler.HasSelected())) { EndTest(); if (tutorialActive) { if (tutorialTests.Count > 0) { StartCoroutine(WaitThenActivate(0.5f, GetNextTest(), ShowRealVal, null)); } else { StartCoroutine(WaitThenActivate(0.5f, null, EndTutorial)); } } else { if (tests.Count > 0) { StartCoroutine(WaitThenActivate(0.5f, GetNextTest(), ShowRealVal, null)); } else { StartCoroutine(WaitThenActivate(0.5f, null, EndTestPass)); } } } } // Real value currently shown. if (state == RunState.RealValue) { if (!tutorialActive && exposureTimeLimit > 0 && (Time.time - stateStartTime) > exposureTimeLimit) { StartCoroutine(WaitThenActivate(0.5f, currentTest, PrepareTest, StartTest)); } //Change view to the running test. if (OVRInput.GetUp(lockinButton)) { StartCoroutine(WaitThenActivate(0.5f, currentTest, PrepareTest, StartTest)); } } if (state == RunState.TutorialFinished) { //Start tutorial again if (OVRInput.GetUp(lockinButton)) { if (tutorialEndStart < 0) { tutorialEndStart = Time.time; } float timeHeld = Time.time - tutorialEndStart; if (timeHeld > timeToHold) { //End tutorial tutorialActive = false; StartCoroutine(WaitThenActivate(0.5f, GetNextTest(), ShowRealVal, null)); } else { tutorialEndIsHeld = false; StartCoroutine(WaitThenActivate(0.5f, GetNextTest(), ShowRealVal, null)); } } if (OVRInput.Get(lockinButton)) { if (!tutorialEndIsHeld) { tutorialEndIsHeld = true; tutorialEndStart = Time.time; } logger.SetLog("Time Held: " + (Time.time - tutorialEndStart)); } else { tutorialEndIsHeld = false; } } // Initial state still active, neither test nor real value yet shown. // Any tutorial will be started from this stage. if (state == RunState.NotBegun) { if (OVRInput.GetUp(lockinButton)) { if (tests.Count != 0) { StartCoroutine(WaitThenActivate(0f, GetNextTest(), ShowRealVal)); startTime = DateTime.Now; } } } // Final state when all testpasses are completed. // Any surveys or thank yous will be started from this stage. if (state == RunState.Finished) { } //LogDebugInfo(); } catch (Exception e) { //Log any exception thrown. logger.gameObject.SetActive(true); logger.Log("Exception caught: " + e.GetType().Name); logger.Log(e.Message); logger.Log(e.StackTrace); throw e; } }