using System; using System.Collections.Generic; using System.Linq; using UnityEngine; namespace UnityEditor.XR.Management.Metadata { internal class KnownPackages { internal static string k_KnownPackageMockHMDLoader = "Unity.XR.MockHMD.MockHMDLoader"; class KnownLoaderMetadata : IXRLoaderMetadata { public string loaderName { get; set; } public string loaderType { get; set; } public List supportedBuildTargets { get; set; } } class KnownPackageMetadata : IXRPackageMetadata { public string packageName { get; set; } public string packageId { get; set; } public string settingsType { get; set; } public List loaderMetadata { get; set; } } class KnownPackage : IXRPackage { public IXRPackageMetadata metadata { get; set; } public bool PopulateNewSettingsInstance(ScriptableObject obj) { return true; } } private static Lazy> s_KnownPackages = new Lazy>(InitKnownPackages); internal static List Packages => s_KnownPackages.Value; static List InitKnownPackages() { List packages = new List(); packages.Add(new KnownPackage() { metadata = new KnownPackageMetadata(){ packageName = "Windows XR Plugin", packageId = "com.unity.xr.windowsmr", settingsType = "UnityEditor.XR.WindowsMR.WindowsMRPackageSettings", loaderMetadata = new List() { new KnownLoaderMetadata() { loaderName = "Windows Mixed Reality", loaderType = "UnityEngine.XR.WindowsMR.WindowsMRLoader", supportedBuildTargets = new List() { BuildTargetGroup.Standalone, BuildTargetGroup.WSA } }, } } }); packages.Add(new KnownPackage() { metadata = new KnownPackageMetadata(){ packageName = "Oculus XR Plugin", packageId = "com.unity.xr.oculus", settingsType = "Unity.XR.Oculus.OculusSettings", loaderMetadata = new List() { new KnownLoaderMetadata() { loaderName = "Oculus", loaderType = "Unity.XR.Oculus.OculusLoader", supportedBuildTargets = new List() { BuildTargetGroup.Standalone, BuildTargetGroup.Android, } }, } } }); 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() { new KnownLoaderMetadata() { loaderName = "Magic Leap Zero Iteration", loaderType = "UnityEngine.XR.MagicLeap.MagicLeapLoader", supportedBuildTargets = new List() { BuildTargetGroup.Standalone, } }, new KnownLoaderMetadata() { loaderName = "Magic Leap", loaderType = "UnityEngine.XR.MagicLeap.MagicLeapLoader", supportedBuildTargets = new List() { BuildTargetGroup.Lumin } }, } } }); packages.Add(new KnownPackage() { metadata = new KnownPackageMetadata(){ packageName = "ARCore XR Plugin", packageId = "com.unity.xr.arcore", settingsType = "UnityEditor.XR.ARCore.ARCoreSettings", loaderMetadata = new List() { new KnownLoaderMetadata() { loaderName = "ARCore", loaderType = "UnityEngine.XR.ARCore.ARCoreLoader", supportedBuildTargets = new List() { 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() { new KnownLoaderMetadata() { loaderName = "ARKit", loaderType = "UnityEngine.XR.ARKit.ARKitLoader", supportedBuildTargets = new List() { 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() { new KnownLoaderMetadata() { loaderName = "Unity Mock HMD", loaderType = k_KnownPackageMockHMDLoader, supportedBuildTargets = new List() { BuildTargetGroup.Standalone, BuildTargetGroup.Android } }, } } }); return packages; } } }