52 lines
1.5 KiB
C#
52 lines
1.5 KiB
C#
#if XR_COMPOSITION_LAYERS
|
|
using System.Runtime.CompilerServices;
|
|
using Unity.XR.CompositionLayers.Layers;
|
|
using UnityEditor;
|
|
using UnityEngine.XR.OpenXR.CompositionLayers;
|
|
using UnityEngine.XR.OpenXR.Features;
|
|
|
|
#if UNITY_EDITOR
|
|
[UnityEditor.XR.OpenXR.Features.OpenXRFeature(UiName = "OpenXR Custom Layer Handler Example",
|
|
BuildTargetGroups = new[] { BuildTargetGroup.Standalone, BuildTargetGroup.WSA, BuildTargetGroup.Android },
|
|
Company = "Unity",
|
|
Desc = "An example to demonstrate how to enable a handler for a customized composition layer type.",
|
|
DocumentationLink = "",
|
|
FeatureId = "com.unity.openxr.features.customlayerexample",
|
|
OpenxrExtensionStrings = "",
|
|
Version = "1")]
|
|
#endif
|
|
public class CustomFeature : OpenXRFeature
|
|
{
|
|
bool isSubscribed;
|
|
|
|
protected override void OnEnable()
|
|
{
|
|
if (OpenXRLayerProvider.isStarted)
|
|
CreateAndRegisterLayerHandler();
|
|
else
|
|
{
|
|
OpenXRLayerProvider.Started += CreateAndRegisterLayerHandler;
|
|
isSubscribed = true;
|
|
}
|
|
}
|
|
|
|
protected override void OnDisable()
|
|
{
|
|
if (isSubscribed)
|
|
{
|
|
OpenXRLayerProvider.Started -= CreateAndRegisterLayerHandler;
|
|
isSubscribed = false;
|
|
}
|
|
}
|
|
|
|
protected void CreateAndRegisterLayerHandler()
|
|
{
|
|
if (enabled)
|
|
{
|
|
var layerHandler = new CustomLayerHandler();
|
|
OpenXRLayerProvider.RegisterLayerHandler(typeof(CustomQuadLayerData), layerHandler);
|
|
}
|
|
}
|
|
}
|
|
#endif
|