static bool InitializePackageFromMetadata(IAdaptivePerformancePackage package, IAdaptivePerformancePackageMetadata packageMetadata) { bool ret = true; ret = ret && InitializeLoaderFromMetadata(packageMetadata.packageName, packageMetadata.loaderMetadata); ret = ret && InitializeSettingsFromMetadata(package, packageMetadata.packageName, packageMetadata.settingsType, packageMetadata.licenseURL); return(ret); }
internal static void AddPluginPackage(IAdaptivePerformancePackage 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(IAdaptivePerformancePackage 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; } AdaptivePerformancePackageMetadataStore.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 Adaptive Performance Provider Package.", packageMetadata.packageName)); } }
internal static void BeginPackageInitialization() { EditorApplication.update -= BeginPackageInitialization; foreach (var t in TypeLoaderExtensions.GetAllTypesWithInterface <IAdaptivePerformancePackage>()) { if (t.IsInterface || t.FullName.Contains("Unity.AdaptivePerformance.TestPackage") || t.FullName.Contains("UnityEditor.AdaptivePerformance.Editor.Metadata.AdaptivePerformanceKnownPackages")) { continue; } IAdaptivePerformancePackage package = Activator.CreateInstance(t) as IAdaptivePerformancePackage; 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 <AdaptivePerformancePackageInitializationBase>()) { if (t.IsInterface) { continue; } AdaptivePerformancePackageInitializationBase packageInit = Activator.CreateInstance(t) as AdaptivePerformancePackageInitializationBase; if (packageInit == null) { Debug.LogError($"Unable to find an implementation for expected package type {t.FullName}."); continue; } InitPackage(packageInit); } if (AdaptivePerformanceSettingsManager.Instance != null) { AdaptivePerformanceSettingsManager.Instance.ResetUi = true; } }
static bool InitializeSettingsFromMetadata(IAdaptivePerformancePackage package, string packageName, string settingsType, string licenseURL) { 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); }
static void InternalAddPluginPackage(IAdaptivePerformancePackage package) { s_Packages[package.metadata.packageId] = package; }