|
|
- namespace VRTK.Examples.Utilities
- {
- using UnityEngine;
- using UnityEngine.SceneManagement;
-
- public class VRTKExample_SceneSwitcher : MonoBehaviour
- {
- public KeyCode backKey = KeyCode.Backspace;
- public KeyCode forwardKey = KeyCode.Space;
-
- protected int firstSceneIndex = 0;
- protected int lastSceneIndex;
-
- protected bool pressEnabled;
- protected VRTK_ControllerReference controllerReference;
-
- protected virtual void Awake()
- {
- DynamicGI.UpdateEnvironment();
- }
-
- protected virtual void OnEnable()
- {
- lastSceneIndex = SceneManager.sceneCountInBuildSettings - 1;
- pressEnabled = false;
- Invoke("EnablePress", 1f);
- }
-
- protected virtual void Update()
- {
- GameObject rightHand = VRTK_DeviceFinder.GetControllerRightHand(true);
- controllerReference = VRTK_ControllerReference.GetControllerReference(rightHand);
-
- int currentSceneIndex = SceneManager.GetActiveScene().buildIndex;
- int nextSceneIndex = currentSceneIndex;
-
- if (ForwardPressed())
- {
- nextSceneIndex++;
- if (nextSceneIndex >= lastSceneIndex)
- {
- nextSceneIndex = firstSceneIndex;
- }
- }
- else if (BackPressed())
- {
- nextSceneIndex--;
- if (nextSceneIndex < firstSceneIndex)
- {
- nextSceneIndex = lastSceneIndex - 1;
- }
- }
-
- if (nextSceneIndex != currentSceneIndex)
- {
- SceneManager.LoadScene(nextSceneIndex);
- }
- }
-
- protected virtual void EnablePress()
- {
- pressEnabled = true;
- }
-
- protected virtual bool BackPressed()
- {
- if (Input.GetKeyDown(backKey) || ControllerBackward())
- {
- return true;
- }
- return false;
- }
-
- protected virtual bool ForwardPressed()
- {
- if (Input.GetKeyDown(forwardKey) || ControllerForward())
- {
- return true;
- }
- return false;
- }
-
- protected virtual bool ControllerForward()
- {
- if (!VRTK_ControllerReference.IsValid(controllerReference))
- {
- return false;
- }
-
- return (pressEnabled &&
- VRTK_SDK_Bridge.GetControllerButtonState(SDK_BaseController.ButtonTypes.ButtonTwo, SDK_BaseController.ButtonPressTypes.Press, controllerReference) &&
- VRTK_SDK_Bridge.GetControllerButtonState(SDK_BaseController.ButtonTypes.Touchpad, SDK_BaseController.ButtonPressTypes.Press, controllerReference) &&
- VRTK_SDK_Bridge.GetControllerButtonState(SDK_BaseController.ButtonTypes.Trigger, SDK_BaseController.ButtonPressTypes.Press, controllerReference));
- }
-
- protected virtual bool ControllerBackward()
- {
- if (!VRTK_ControllerReference.IsValid(controllerReference))
- {
- return false;
- }
-
- return (pressEnabled &&
- VRTK_SDK_Bridge.GetControllerButtonState(SDK_BaseController.ButtonTypes.ButtonTwo, SDK_BaseController.ButtonPressTypes.Press, controllerReference) &&
- VRTK_SDK_Bridge.GetControllerButtonState(SDK_BaseController.ButtonTypes.Touchpad, SDK_BaseController.ButtonPressTypes.Press, controllerReference) &&
- VRTK_SDK_Bridge.GetControllerButtonState(SDK_BaseController.ButtonTypes.Grip, SDK_BaseController.ButtonPressTypes.Press, controllerReference));
- }
- }
- }
|