in RealityMaterialExplorer/Assets/Oculus/VR/Editor/OVRPluginUpdater.cs [620:787]
private static void ActivateOVRPluginOpenXR()
{
if (!unityVersionSupportsAndroidUniversal)
{
UnityEngine.Debug.LogError("Unexpected error: Unity must support AndroidUniversal version of Oculus Utilities Plugin for accessing OpenXR");
return;
}
if (OVRPluginUpdaterStub.IsInsidePackageDistribution())
{
UnityEngine.Debug.LogError("Unable to change plugin when using package distribution");
return;
}
#if !USING_XR_SDK && !REQUIRES_XR_SDK
UnityEngine.Debug.LogError("Oculus Utilities Plugin with OpenXR only supports XR Plug-in Managmenent with Oculus XR Plugin");
return;
#else
if (!unityRunningInBatchmode)
{
bool accepted = EditorUtility.DisplayDialog("Warning",
"Oculus Utilities Plugin with OpenXR is experimental. You may expect to encounter stability issues and/or missing functionalities, " +
"including but not limited to, fixed foveated rendering / composition layer / display refresh rates / etc." +
"\n\n" +
"Also, Oculus Utilities Plugin with OpenXR only supports XR Plug-in Managmenent with Oculus XR Plugin on Quest",
"Continue", "Cancel");
if (!accepted)
{
return;
}
}
List<PluginPackage> allUtilsPluginPkgs = GetAllUtilitiesPluginPackages();
PluginPackage enabledUtilsPluginPkg = null;
foreach (PluginPackage pluginPkg in allUtilsPluginPkgs)
{
if (pluginPkg.IsEnabled())
{
enabledUtilsPluginPkg = pluginPkg;
break;
}
}
if (enabledUtilsPluginPkg == null)
{
UnityEngine.Debug.LogError("Unable to Activate OVRPlugin with OpenXR: Oculus Utilities Plugin package not activated");
return;
}
if (!enabledUtilsPluginPkg.IsAndroidOpenXRPresent() && !enabledUtilsPluginPkg.IsWin64OpenXRPresent())
{
UnityEngine.Debug.LogError("Unable to Activate OVRPlugin with OpenXR: Both AndroidOpenXR/OVRPlugin.aar or Win64OpenXR/OVRPlugin.dll does not exist");
return;
}
if (enabledUtilsPluginPkg.IsAndroidOpenXREnabled() && enabledUtilsPluginPkg.IsWin64OpenXREnabled())
{
if (!unityRunningInBatchmode)
{
EditorUtility.DisplayDialog("Unable to Activate OVRPlugin with OpenXR", "Both AndroidOpenXR/OVRPlugin.aar and Win64OpenXR/OVRPlugin.dll already enabled", "Ok");
}
return;
}
if (enabledUtilsPluginPkg.IsAndroidOpenXRPresent() && !enabledUtilsPluginPkg.IsAndroidOpenXREnabled())
{
if (enabledUtilsPluginPkg.IsAndroidUniversalEnabled())
{
string androidUniveralPluginPath = enabledUtilsPluginPkg.Plugins[PluginPlatform.AndroidUniversal];
string androidUniveralPluginBasePath = GetCurrentProjectPath();
string androidUniveralPluginRelPath = androidUniveralPluginPath.Substring(androidUniveralPluginBasePath.Length + 1);
PluginImporter pi = PluginImporter.GetAtPath(androidUniveralPluginRelPath) as PluginImporter;
if (pi != null)
{
pi.SetCompatibleWithPlatform(BuildTarget.Android, false);
AssetDatabase.ImportAsset(androidUniveralPluginRelPath, ImportAssetOptions.ForceUpdate);
}
else
{
UnityEngine.Debug.LogWarning("Unable to find PluginImporter: " + androidUniveralPluginRelPath);
}
}
{
string androidOpenXRPluginPath = enabledUtilsPluginPkg.Plugins[PluginPlatform.AndroidOpenXR];
string androidOpenXRPluginBasePath = GetCurrentProjectPath();
string androidOpenXRPluginRelPath = androidOpenXRPluginPath.Substring(androidOpenXRPluginBasePath.Length + 1);
PluginImporter pi = PluginImporter.GetAtPath(androidOpenXRPluginRelPath) as PluginImporter;
if (pi != null)
{
pi.SetCompatibleWithPlatform(BuildTarget.Android, true);
AssetDatabase.ImportAsset(androidOpenXRPluginRelPath, ImportAssetOptions.ForceUpdate);
}
else
{
UnityEngine.Debug.LogWarning("Unable to find PluginImporter: " + androidOpenXRPluginRelPath);
}
}
}
bool win64PluginUpdated = false;
if (enabledUtilsPluginPkg.IsWin64OpenXRPresent() && !enabledUtilsPluginPkg.IsWin64OpenXREnabled())
{
if (enabledUtilsPluginPkg.IsWin64Enabled())
{
string win64PluginPath = enabledUtilsPluginPkg.Plugins[PluginPlatform.Win64];
string win64PluginBasePath = GetCurrentProjectPath();
string win64PluginRelPath = win64PluginPath.Substring(win64PluginBasePath.Length + 1);
PluginImporter pi = PluginImporter.GetAtPath(win64PluginRelPath) as PluginImporter;
if (pi != null)
{
pi.ClearSettings();
pi.SetCompatibleWithEditor(false);
pi.SetCompatibleWithAnyPlatform(false);
AssetDatabase.ImportAsset(win64PluginRelPath, ImportAssetOptions.ForceUpdate);
}
else
{
UnityEngine.Debug.LogWarning("Unable to find PluginImporter: " + win64PluginRelPath);
}
}
{
string win64OpenXRPluginPath = enabledUtilsPluginPkg.Plugins[PluginPlatform.Win64OpenXR];
string win64OpenXRPluginBasePath = GetCurrentProjectPath();
string win64OpenXRPluginRelPath = win64OpenXRPluginPath.Substring(win64OpenXRPluginBasePath.Length + 1);
PluginImporter pi = PluginImporter.GetAtPath(win64OpenXRPluginRelPath) as PluginImporter;
if (pi != null)
{
pi.SetCompatibleWithPlatform(BuildTarget.StandaloneWindows64, true);
pi.SetCompatibleWithEditor(true);
pi.SetEditorData("CPU", "X86_64");
pi.SetEditorData("OS", "Windows");
pi.SetPlatformData("Editor", "CPU", "X86_64");
pi.SetPlatformData("Editor", "OS", "Windows");
AssetDatabase.ImportAsset(win64OpenXRPluginRelPath, ImportAssetOptions.ForceUpdate);
}
else
{
UnityEngine.Debug.LogWarning("Unable to find PluginImporter: " + win64OpenXRPluginRelPath);
}
}
win64PluginUpdated = true;
}
AssetDatabase.Refresh();
AssetDatabase.SaveAssets();
if (!unityRunningInBatchmode)
{
EditorUtility.DisplayDialog("Activate OVRPlugin with OpenXR", "Oculus Utilities Plugin with OpenXR has been enabled on Android", "Ok");
if (win64PluginUpdated && EditorUtility.DisplayDialog("Restart Unity",
"Win64 plugin updated. Do you want to restart Unity editor?",
"Restart",
"Not Now"))
{
RestartUnityEditor();
}
}
#endif // !USING_XR_SDK
}