VR4Medical/ICI/Library/PackageCache/com.unity.xr.openxr@3903c1059bcf/Runtime/CompositionLayers/OpenXRCompositionLayersFeature.cs
2025-07-29 13:45:50 +03:00

48 lines
1.8 KiB
C#

#if XR_COMPOSITION_LAYERS
using UnityEditor;
using Unity.XR.CompositionLayers.Services;
using UnityEngine.XR.OpenXR.CompositionLayers;
#if UNITY_EDITOR
using UnityEditor.XR.OpenXR.Features;
#endif
namespace UnityEngine.XR.OpenXR.Features.CompositionLayers
{
/// <summary>
/// Enables OpenXR Composition Layers.
/// </summary>
#if UNITY_EDITOR
[OpenXRFeature(UiName = FeatureName,
Desc = "Necessary to use OpenXR Composition Layers.",
Company = "Unity",
OpenxrExtensionStrings = "XR_KHR_composition_layer_cylinder XR_KHR_composition_layer_equirect XR_KHR_composition_layer_equirect2 XR_KHR_composition_layer_cube XR_KHR_composition_layer_color_scale_bias XR_KHR_android_surface_swapchain",
Version = "1.0.0",
BuildTargetGroups = new[] { BuildTargetGroup.Android, BuildTargetGroup.Standalone, BuildTargetGroup.WSA },
FeatureId = FeatureId
)]
#endif
public class OpenXRCompositionLayersFeature : OpenXRFeature
{
public const string FeatureId = "com.unity.openxr.feature.compositionlayers";
internal const string FeatureName = "Composition Layers Support";
protected internal override void OnSessionBegin(ulong xrSession)
{
if (CompositionLayerManager.Instance != null)
{
CompositionLayerManager.Instance.LayerProvider ??= new OpenXRLayerProvider();
}
}
protected internal override void OnSessionEnd(ulong xrSession)
{
if (CompositionLayerManager.Instance?.LayerProvider is OpenXRLayerProvider)
{
((OpenXRLayerProvider)CompositionLayerManager.Instance.LayerProvider).Dispose();
CompositionLayerManager.Instance.LayerProvider = null;
}
}
}
}
#endif