using System; using UnityEditor; using UnityEngine.Experimental.Rendering; #if ENABLE_VR && ENABLE_VR_MODULE using UnityEngine.XR; #endif namespace UnityEngine.Rendering { /// /// XRGraphics insulates SRP from API changes across platforms, Editor versions, and as XR transitions into XR SDK /// [Serializable] public class XRSRPSettings { /// /// Try enable. /// #if UNITY_EDITOR // TryEnable gets updated before "play" is pressed- we use this for updating GUI only. public static bool tryEnable { get { return false; } } #endif /// /// SRP should use this to safely determine whether XR is enabled at runtime. /// public static bool enabled { get { #if ENABLE_VR && ENABLE_VR_MODULE return XRSettings.enabled; #else return false; #endif } } /// /// Returns true if the XR device is active. /// public static bool isDeviceActive { get { #if ENABLE_VR && ENABLE_VR_MODULE if (enabled) return XRSettings.isDeviceActive; #endif return false; } } /// /// Name of the loaded XR device. /// public static string loadedDeviceName { get { #if ENABLE_VR && ENABLE_VR_MODULE if (enabled) return XRSettings.loadedDeviceName; #endif return "No XR device loaded"; } } /// /// List of supported XR devices. /// public static string[] supportedDevices { get { #if ENABLE_VR && ENABLE_VR_MODULE if (enabled) return XRSettings.supportedDevices; #endif return new string[1]; } } /// /// Eye texture descriptor. /// public static RenderTextureDescriptor eyeTextureDesc { get { #if ENABLE_VR && ENABLE_VR_MODULE if (enabled) return XRSettings.eyeTextureDesc; #endif return new RenderTextureDescriptor(0, 0); } } /// /// Eye texture width. /// public static int eyeTextureWidth { get { #if ENABLE_VR && ENABLE_VR_MODULE if (enabled) return XRSettings.eyeTextureWidth; #endif return 0; } } /// /// Eye texture height. /// public static int eyeTextureHeight { get { #if ENABLE_VR && ENABLE_VR_MODULE if (enabled) return XRSettings.eyeTextureHeight; #endif return 0; } } /// /// Occlusion mesh's scaling factor. /// public static float occlusionMeshScale { get { #if ENABLE_VR && ENABLE_VR_MODULE if (enabled) return XRSystem.GetOcclusionMeshScale(); #endif return 0; } set { #if ENABLE_VR && ENABLE_VR_MODULE if (enabled) XRSystem.SetOcclusionMeshScale(value); #endif } } /// /// Controls XR mirror view blit operation /// public static int mirrorViewMode { get { #if ENABLE_VR && ENABLE_VR_MODULE if (enabled) return XRSystem.GetMirrorViewMode(); #endif return 0; } set { #if ENABLE_VR && ENABLE_VR_MODULE if (enabled) XRSystem.SetMirrorViewMode(value); #endif } } } }