Ejemplo n.º 1
0
        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);
        }
Ejemplo n.º 2
0
 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);
 }
Ejemplo n.º 3
0
        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));
            }
        }
Ejemplo n.º 4
0
        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;
            }
        }
Ejemplo n.º 5
0
        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);
        }
Ejemplo n.º 6
0
 internal static void AddPackage(IXRPackage package)
 {
     s_Packages[package.metadata.packageId] = package;
 }
Ejemplo n.º 7
0
 static void InternalAddPluginPackage(IXRPackage package)
 {
     s_Packages[package.metadata.packageId] = package;
 }