VR4Medical/ICI/Library/PackageCache/com.unity.xr.management@20be87dea580/Editor/Metadata/KnownPackages.cs
2025-07-29 13:45:50 +03:00

245 lines
10 KiB
C#

using System;
using System.Collections.Generic;
using System.Linq;
using UnityEngine;
namespace UnityEditor.XR.Management.Metadata
{
internal class KnownPackages
{
#if UNITY_XR_VISIONOS_SUPPORTED
[XRCustomLoaderUI(k_VisionOSLoaderTypeName, BuildTargetGroup.VisionOS)]
class VisionOSCustomLoaderUI : IXRCustomLoaderUI
{
GUIContent m_LabelContent;
public bool IsLoaderEnabled { get; set; }
public string[] IncompatibleLoaders => Array.Empty<string>();
public float RequiredRenderHeight { get; private set; }
public BuildTargetGroup ActiveBuildTargetGroup { get; set; }
public void SetRenderedLineHeight(float height)
{
RequiredRenderHeight = height;
}
void SetUpLabelContentIfNeeded()
{
if (m_LabelContent != null)
return;
var tooltip = UnityEditorInternal.InternalEditorUtility.HasPro() ? string.Empty : k_VisionOSLicenseTooltip;
m_LabelContent = new GUIContent(k_VisionOSLoaderName, tooltip);
}
public void OnGUI(Rect rect)
{
SetUpLabelContentIfNeeded();
IsLoaderEnabled = EditorGUI.ToggleLeft(rect, m_LabelContent, IsLoaderEnabled);
}
}
#endif
internal static string k_KnownPackageMockHMDLoader = "Unity.XR.MockHMD.MockHMDLoader";
#if UNITY_XR_VISIONOS_SUPPORTED
const string k_VisionOSLoaderTypeName = "UnityEngine.XR.VisionOS.VisionOSLoader";
const string k_VisionOSLicenseTooltip = "Support for Fully Immersive (VR) applications on Apple visionOS requires a Unity Pro, Unity Enterprise, or Unity Industry license";
const string k_VisionOSLoaderName = "Apple visionOS";
#endif
class KnownLoaderMetadata : IXRLoaderMetadata
{
public string loaderName { get; set; }
public string loaderType { get; set; }
public List<BuildTargetGroup> supportedBuildTargets { get; set; }
}
internal class KnownPackageMetadata : IXRPackageMetadata
{
public string packageName { get; set; }
public string packageId { get; set; }
public string settingsType { get; set; }
public List<IXRLoaderMetadata> loaderMetadata { get; set; }
public bool disabled { get; set; }
}
class KnownPackage : IXRPackage
{
public IXRPackageMetadata metadata { get; set; }
public bool PopulateNewSettingsInstance(ScriptableObject obj) { return true; }
}
private static Lazy<List<IXRPackage>> s_KnownPackages = new Lazy<List<IXRPackage>>(InitKnownPackages);
internal static List<IXRPackage> Packages => s_KnownPackages.Value;
static List<IXRPackage> InitKnownPackages()
{
List<IXRPackage> packages = new List<IXRPackage>();
#if UNITY_2020_3_OR_NEWER
packages.Add(new KnownPackage() {
metadata = new KnownPackageMetadata(){
packageName = "Open XR Plugin",
packageId = "com.unity.xr.openxr",
settingsType = "UnityEditor.XR.OpenXR.OpenXRPackageSettings",
loaderMetadata = new List<IXRLoaderMetadata>() {
new KnownLoaderMetadata() {
loaderName = "Open XR",
loaderType = "UnityEngine.XR.OpenXR.OpenXRLoader",
supportedBuildTargets = new List<BuildTargetGroup>() {
BuildTargetGroup.Standalone,
BuildTargetGroup.WSA,
BuildTargetGroup.Android
}
},
}
}
});
#endif
#if !UNITY_2021_2_OR_NEWER
packages.Add(new KnownPackage() {
metadata = new KnownPackageMetadata(){
packageName = "Windows XR Plugin",
packageId = "com.unity.xr.windowsmr",
settingsType = "UnityEditor.XR.WindowsMR.WindowsMRPackageSettings",
loaderMetadata = new List<IXRLoaderMetadata>() {
new KnownLoaderMetadata() {
loaderName = "Windows Mixed Reality",
loaderType = "UnityEngine.XR.WindowsMR.WindowsMRLoader",
supportedBuildTargets = new List<BuildTargetGroup>() {
BuildTargetGroup.Standalone,
BuildTargetGroup.WSA
}
},
}
}
});
#endif
packages.Add(new KnownPackage() {
metadata = new KnownPackageMetadata(){
packageName = "Oculus XR Plugin",
packageId = "com.unity.xr.oculus",
settingsType = "Unity.XR.Oculus.OculusSettings",
loaderMetadata = new List<IXRLoaderMetadata>() {
new KnownLoaderMetadata() {
loaderName = "Oculus",
loaderType = "Unity.XR.Oculus.OculusLoader",
supportedBuildTargets = new List<BuildTargetGroup>() {
BuildTargetGroup.Standalone,
BuildTargetGroup.Android,
}
},
}
}
});
#if !UNITY_2021_2_OR_NEWER
packages.Add(new KnownPackage() {
metadata = new KnownPackageMetadata(){
packageName = "Magic Leap XR Plugin",
packageId = "com.unity.xr.magicleap",
settingsType = "UnityEngine.XR.MagicLeap.MagicLeapSettings",
loaderMetadata = new List<IXRLoaderMetadata>() {
new KnownLoaderMetadata() {
loaderName = "Magic Leap Zero Iteration",
loaderType = "UnityEngine.XR.MagicLeap.MagicLeapLoader",
supportedBuildTargets = new List<BuildTargetGroup>() {
BuildTargetGroup.Standalone,
}
},
new KnownLoaderMetadata() {
loaderName = "Magic Leap",
loaderType = "UnityEngine.XR.MagicLeap.MagicLeapLoader",
supportedBuildTargets = new List<BuildTargetGroup>() {
BuildTargetGroup.Lumin
}
},
}
}
});
#endif // !UNITY_2021_2_OR_NEWER
packages.Add(new KnownPackage() {
metadata = new KnownPackageMetadata(){
packageName = "ARCore XR Plugin",
packageId = "com.unity.xr.arcore",
settingsType = "UnityEditor.XR.ARCore.ARCoreSettings",
loaderMetadata = new List<IXRLoaderMetadata>() {
new KnownLoaderMetadata() {
loaderName = "ARCore",
loaderType = "UnityEngine.XR.ARCore.ARCoreLoader",
supportedBuildTargets = new List<BuildTargetGroup>() {
BuildTargetGroup.Android,
}
},
}
}
});
packages.Add(new KnownPackage() {
metadata = new KnownPackageMetadata(){
packageName = "ARKit XR Plugin",
packageId = "com.unity.xr.arkit",
settingsType = "UnityEditor.XR.ARKit.ARKitSettings",
loaderMetadata = new List<IXRLoaderMetadata>() {
new KnownLoaderMetadata() {
loaderName = "ARKit",
loaderType = "UnityEngine.XR.ARKit.ARKitLoader",
supportedBuildTargets = new List<BuildTargetGroup>() {
BuildTargetGroup.iOS,
}
},
}
}
});
packages.Add(new KnownPackage() {
metadata = new KnownPackageMetadata() {
packageName = "MockHMD XR Plugin",
packageId = "com.unity.xr.mock-hmd",
settingsType = "Unity.XR.MockHMD.MockHMDBuildSettings",
loaderMetadata = new List<IXRLoaderMetadata>() {
new KnownLoaderMetadata() {
loaderName = "Unity Mock HMD",
loaderType = k_KnownPackageMockHMDLoader,
supportedBuildTargets = new List<BuildTargetGroup>() {
BuildTargetGroup.Standalone,
BuildTargetGroup.Android
}
},
}
}
});
#if UNITY_XR_VISIONOS_SUPPORTED
packages.Add(new KnownPackage() {
metadata = new KnownPackageMetadata() {
packageName = "Apple visionOS XR Plugin",
packageId = "com.unity.xr.visionos",
settingsType = "UnityEditor.XR.VisionOS.VisionOSSettings",
loaderMetadata = new List<IXRLoaderMetadata>() {
new KnownLoaderMetadata() {
loaderName = k_VisionOSLoaderName,
loaderType = k_VisionOSLoaderTypeName,
supportedBuildTargets = new List<BuildTargetGroup>() {
BuildTargetGroup.VisionOS
},
},
},
disabled = !UnityEditorInternal.InternalEditorUtility.HasPro()
}
});
#endif
return packages;
}
}
}