12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485 |
- namespace VRTK.Examples.Utilities
- {
- using UnityEngine;
- using UnityEngine.SceneManagement;
- public class SceneChanger : MonoBehaviour
- {
- private bool canPress;
- private VRTK_ControllerReference controllerReference;
- private void Awake()
- {
- canPress = false;
- Invoke("ResetPress", 1f);
- DynamicGI.UpdateEnvironment();
- }
- private bool IsForwardPressed()
- {
- if (!VRTK_ControllerReference.IsValid(controllerReference))
- {
- return false;
- }
- if (canPress &&
- VRTK_SDK_Bridge.GetControllerButtonState(SDK_BaseController.ButtonTypes.Trigger, SDK_BaseController.ButtonPressTypes.Press, controllerReference) &&
- VRTK_SDK_Bridge.GetControllerButtonState(SDK_BaseController.ButtonTypes.Grip, SDK_BaseController.ButtonPressTypes.Press, controllerReference) &&
- VRTK_SDK_Bridge.GetControllerButtonState(SDK_BaseController.ButtonTypes.Touchpad, SDK_BaseController.ButtonPressTypes.Press, controllerReference))
- {
- return true;
- }
- return false;
- }
- private bool IsBackPressed()
- {
- if (!VRTK_ControllerReference.IsValid(controllerReference))
- {
- return false;
- }
- if (canPress &&
- VRTK_SDK_Bridge.GetControllerButtonState(SDK_BaseController.ButtonTypes.Trigger, SDK_BaseController.ButtonPressTypes.Press, controllerReference) &&
- VRTK_SDK_Bridge.GetControllerButtonState(SDK_BaseController.ButtonTypes.Grip, SDK_BaseController.ButtonPressTypes.Press, controllerReference) &&
- VRTK_SDK_Bridge.GetControllerButtonState(SDK_BaseController.ButtonTypes.ButtonTwo, SDK_BaseController.ButtonPressTypes.Press, controllerReference))
- {
- return true;
- }
- return false;
- }
- private void ResetPress()
- {
- canPress = true;
- }
- private void Update()
- {
- GameObject rightHand = VRTK_DeviceFinder.GetControllerRightHand(true);
- controllerReference = VRTK_ControllerReference.GetControllerReference(rightHand);
- int currentSceneIndex = SceneManager.GetActiveScene().buildIndex;
- int nextSceneIndex = currentSceneIndex;
- if (IsForwardPressed() || Input.GetKeyUp(KeyCode.Space))
- {
- nextSceneIndex++;
- if (nextSceneIndex >= SceneManager.sceneCountInBuildSettings)
- nextSceneIndex = 0;
- }
- else if (IsBackPressed() || Input.GetKeyUp(KeyCode.Backspace))
- {
- nextSceneIndex--;
- if (nextSceneIndex < 0)
- nextSceneIndex = SceneManager.sceneCountInBuildSettings - 1;
- }
- if (nextSceneIndex == currentSceneIndex)
- {
- return;
- }
- SceneManager.LoadScene(nextSceneIndex);
- }
- }
- }
|