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
}
}
}
}