/* * Copyright (c) Meta Platforms, Inc. and affiliates. * All rights reserved. * * Licensed under the Oculus SDK License Agreement (the "License"); * you may not use the Oculus SDK except in compliance with the License, * which is provided at the time of installation or download, or which * otherwise accompanies this software in either electronic or hard copy form. * * You may obtain a copy of the License at * * https://developer.oculus.com/licenses/oculussdk/ * * Unless required by applicable law or agreed to in writing, the Oculus SDK * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ using UnityEngine; using System.Collections; /// /// Sample that allows you to play with various VR settings. /// public class OVRSceneSampleController : MonoBehaviour { /// /// The key that quits the application. /// public KeyCode quitKey = KeyCode.Escape; /// /// An optional texture that appears before the menu fades in. /// public Texture fadeInTexture = null; /// /// Controls how quickly the player's speed and rotation change based on input. /// public float speedRotationIncrement = 0.05f; private OVRPlayerController playerController = null; // Handle to OVRCameraRig private OVRCameraRig cameraController = null; /// /// We can set the layer to be anything we want to, this allows /// a specific camera to render it. /// public string layerName = "Default"; // Vision mode on/off private bool visionMode = true; // We want to hold onto GridCube, for potential sharing // of the menu RenderTarget OVRGridCube gridCube = null; #if SHOW_DK2_VARIABLES private string strVisionMode = "Vision Enabled: ON"; #endif #region MonoBehaviour Message Handlers /// /// Awake this instance. /// void Awake() { // Find camera controller OVRCameraRig[] cameraControllers; cameraControllers = gameObject.GetComponentsInChildren(); if (cameraControllers.Length == 0) { Debug.LogWarning("OVRMainMenu: No OVRCameraRig attached."); } else if (cameraControllers.Length > 1) { Debug.LogWarning("OVRMainMenu: More then 1 OVRCameraRig attached."); } else { cameraController = cameraControllers[0]; } // Find player controller OVRPlayerController[] playerControllers; playerControllers = gameObject.GetComponentsInChildren(); if (playerControllers.Length == 0) { Debug.LogWarning("OVRMainMenu: No OVRPlayerController attached."); } else if (playerControllers.Length > 1) { Debug.LogWarning("OVRMainMenu: More then 1 OVRPlayerController attached."); } else { playerController = playerControllers[0]; } } /// /// Start this instance. /// void Start() { // Make sure to hide cursor if (Application.isEditor == false) { Cursor.visible = false; Cursor.lockState = CursorLockMode.Locked; } // CameraController updates if (cameraController != null) { // Add a GridCube component to this object gridCube = gameObject.AddComponent(); gridCube.SetOVRCameraController(ref cameraController); } } /// /// Update this instance. /// void Update() { // Recenter pose UpdateRecenterPose(); // Turn On/Off Vision Mode UpdateVisionMode(); // Update Speed and Rotation Scale if (playerController != null) UpdateSpeedAndRotationScaleMultiplier(); //todo: enable for Unity Input System #if ENABLE_LEGACY_INPUT_MANAGER // Toggle Fullscreen if (Input.GetKeyDown(KeyCode.F11)) Screen.fullScreen = !Screen.fullScreen; if (Input.GetKeyDown(KeyCode.M)) UnityEngine.XR.XRSettings.showDeviceView = !UnityEngine.XR.XRSettings.showDeviceView; #if !UNITY_ANDROID || UNITY_EDITOR // Escape Application if (Input.GetKeyDown(quitKey)) Application.Quit(); #endif #endif } #endregion /// /// Updates the vision mode. /// void UpdateVisionMode() { //todo: enable for Unity Input System #if ENABLE_LEGACY_INPUT_MANAGER if (Input.GetKeyDown(KeyCode.F2)) { visionMode ^= visionMode; OVRManager.tracker.isEnabled = visionMode; } #endif } /// /// Updates the speed and rotation scale multiplier. /// void UpdateSpeedAndRotationScaleMultiplier() { float moveScaleMultiplier = 0.0f; playerController.GetMoveScaleMultiplier(ref moveScaleMultiplier); //todo: enable for Unity Input System #if ENABLE_LEGACY_INPUT_MANAGER if (Input.GetKeyDown(KeyCode.Alpha7)) { moveScaleMultiplier -= speedRotationIncrement; } else if (Input.GetKeyDown(KeyCode.Alpha8)) { moveScaleMultiplier += speedRotationIncrement; } #endif playerController.SetMoveScaleMultiplier(moveScaleMultiplier); float rotationScaleMultiplier = 0.0f; playerController.GetRotationScaleMultiplier(ref rotationScaleMultiplier); //todo: enable for Unity Input System #if ENABLE_LEGACY_INPUT_MANAGER if (Input.GetKeyDown(KeyCode.Alpha9)) { rotationScaleMultiplier -= speedRotationIncrement; } else if (Input.GetKeyDown(KeyCode.Alpha0)) { rotationScaleMultiplier += speedRotationIncrement; } #endif playerController.SetRotationScaleMultiplier(rotationScaleMultiplier); } /// /// Recenter pose /// void UpdateRecenterPose() { //todo: enable for Unity Input System #if ENABLE_LEGACY_INPUT_MANAGER if (Input.GetKeyDown(KeyCode.R)) OVRManager.display.RecenterPose(); #endif } }