Skip to content

Instantly share code, notes, and snippets.

@korinVR
Last active February 21, 2024 18:49
Show Gist options
  • Star 5 You must be signed in to star a gist
  • Fork 2 You must be signed in to fork a gist
  • Save korinVR/a8c185cbbca6467b56c33428c68efa80 to your computer and use it in GitHub Desktop.
Save korinVR/a8c185cbbca6467b56c33428c68efa80 to your computer and use it in GitHub Desktop.
Enable and disable XR Plug-in Management plugins
using System;
using UnityEditor;
using UnityEditor.XR.Management;
using UnityEditor.XR.Management.Metadata;
using UnityEngine;
namespace FrameSynthesis.XR
{
// ref. https://docs.unity3d.com/Packages/com.unity.xr.management@4.1/manual/EndUser.html
public static class XRPluginManagementSettings
{
public enum Plugin
{
OpenXR,
Oculus,
OpenVR
}
public static void EnablePlugin(BuildTargetGroup buildTargetGroup, Plugin plugin)
{
var buildTargetSettings = XRGeneralSettingsPerBuildTarget.XRGeneralSettingsForBuildTarget(buildTargetGroup);
var pluginsSettings = buildTargetSettings.AssignedSettings;
var success = XRPackageMetadataStore.AssignLoader(pluginsSettings, GetLoaderName(plugin), buildTargetGroup);
if (success)
{
Debug.Log($"XR Plug-in Management: Enabled {plugin} plugin on {buildTargetGroup}");
}
}
public static void DisablePlugin(BuildTargetGroup buildTargetGroup, Plugin plugin)
{
var buildTargetSettings = XRGeneralSettingsPerBuildTarget.XRGeneralSettingsForBuildTarget(buildTargetGroup);
var pluginsSettings = buildTargetSettings.AssignedSettings;
var success = XRPackageMetadataStore.RemoveLoader(pluginsSettings, GetLoaderName(plugin), buildTargetGroup);
if (success)
{
Debug.Log($"XR Plug-in Management: Disabled {plugin} plugin on {buildTargetGroup}");
}
}
static string GetLoaderName(Plugin plugin) => plugin switch
{
Plugin.OpenXR => "UnityEngine.XR.OpenXR.OpenXRLoader",
Plugin.Oculus => "Unity.XR.Oculus.OculusLoader",
Plugin.OpenVR => "Unity.XR.OpenVR.OpenVRLoader",
_ => throw new NotImplementedException()
};
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment