static bool InitializePackageFromMetadata(IXRPackage package, IXRPackageMetadata packageMetadata) { bool ret = true; ret = ret && InitializeLoaderFromMetadata(packageMetadata.packageName, packageMetadata.loaderMetadata); ret = ret && InitializeSettingsFromMetadata(package, packageMetadata.packageName, packageMetadata.settingsType); return(ret); }
internal static void AddPluginPackage(IXRPackage package) { if (s_CachedMDStoreInformation.installedPackages != null && !s_CachedMDStoreInformation.installedPackages.Contains(package.metadata.packageId)) { List <string> installedPackages = s_CachedMDStoreInformation.installedPackages.ToList <string>(); installedPackages.Add(package.metadata.packageId); s_CachedMDStoreInformation.installedPackages = installedPackages.ToArray(); StoreCachedMDStoreInformation(); } InternalAddPluginPackage(package); }
internal static void InitPackage(IXRPackage package) { var packageMetadata = package.metadata; if (packageMetadata == null) { Debug.LogError($"Package {package.GetType().Name} has a package definition but has no metadata. Skipping initialization."); return; } XRPackageMetadataStore.AddPluginPackage(package); if (!InitializePackageFromMetadata(package, packageMetadata)) { Debug.LogWarning( String.Format("{0} package Initialization not completed. You will need to create any instances of the loaders and settings manually before you can use the intended XR Plug-in Package.", packageMetadata.packageName)); } }
internal static void BeginPackageInitialization() { EditorApplication.update -= BeginPackageInitialization; foreach (var t in TypeLoaderExtensions.GetAllTypesWithInterface <IXRPackage>()) { if (t.IsInterface || t.FullName.Contains("Unity.XR.Management.TestPackage") || t.FullName.Contains("UnityEditor.XR.Management.Metadata.KnownPackages")) { continue; } IXRPackage package = Activator.CreateInstance(t) as IXRPackage; if (package == null) { Debug.LogError($"Unable to find an implementation for expected package type {t.FullName}."); continue; } InitPackage(package); } foreach (var t in TypeLoaderExtensions.GetAllTypesWithInterface <XRPackageInitializationBase>()) { if (t.IsInterface) { continue; } XRPackageInitializationBase packageInit = Activator.CreateInstance(t) as XRPackageInitializationBase; if (packageInit == null) { Debug.LogError($"Unable to find an implementation for expected package type {t.FullName}."); continue; } InitPackage(packageInit); } if (XRSettingsManager.Instance != null) { XRSettingsManager.Instance.ResetUi = true; } }
static bool InitializeSettingsFromMetadata(IXRPackage package, string packageName, string settingsType) { if (String.IsNullOrEmpty(packageName)) { return(false); } if (settingsType == null) { Debug.LogWarning($"Package {packageName} has no settings metadata. Skipping settings initialization."); return(true); } bool ret = EditorUtilities.AssetDatabaseHasInstanceOfType(settingsType); if (!ret) { var obj = EditorUtilities.CreateScriptableObjectInstance(settingsType, EditorUtilities.GetAssetPathForComponents(EditorUtilities.s_DefaultSettingsPath)); ret = package.PopulateNewSettingsInstance(obj); } return(ret); }
internal static void AddPackage(IXRPackage package) { s_Packages[package.metadata.packageId] = package; }
static void InternalAddPluginPackage(IXRPackage package) { s_Packages[package.metadata.packageId] = package; }