static SettingsProvider[] CreateAllChildSettingsProviders() { List <SettingsProvider> ret = new List <SettingsProvider>(); if (s_SettingsManager != null) { var ats = TypeLoaderExtensions.GetAllTypesWithAttribute <PlayerIdentityConfigurationDataAttribute>(); foreach (var at in ats) { var xrbda = at.GetCustomAttributes(typeof(PlayerIdentityConfigurationDataAttribute), true)[0] as PlayerIdentityConfigurationDataAttribute; string settingsPath = $"{s_SettingsRootTitle}/{xrbda.displayName}"; var resProv = new PlayerIdentityConfigurationProvider(settingsPath, xrbda.buildSettingsKey, at); ret.Add(resProv); } } return(ret.ToArray()); }
internal static void PopulateAllKnownLoaderInfos(List <LoaderInfo> backendLoaders, List <LoaderInfo> providerLoaders) { var loaderTypes = TypeLoaderExtensions.GetAllTypesWithInterface <PlayerIdentityLoader>(); foreach (Type loaderType in loaderTypes) { if (string.Compare("DummyLoader", loaderType.Name, StringComparison.OrdinalIgnoreCase) == 0 || string.Compare("SampleLoader", loaderType.Name, StringComparison.OrdinalIgnoreCase) == 0) { continue; } var assets = AssetDatabase.FindAssets($"t:{loaderType}"); if (!assets.Any()) { // Create the instance and asset var newAssetName = $"{EditorUtilities.TypeNameToString(loaderType)}.asset"; var loader = Editor.CreateInstance(loaderType) as PlayerIdentityLoader; string assetPath = EditorUtilities.GetAssetPathForComponents(EditorUtilities.defaultLoaderPath); if (string.IsNullOrEmpty(assetPath)) { continue; } assetPath = Path.Combine(assetPath, newAssetName); AssetDatabase.CreateAsset(loader, assetPath); assets = AssetDatabase.FindAssets($"t:{loaderType}"); } // Add the loader info only if the loader is created. foreach (var asset in assets) { string path = AssetDatabase.GUIDToAssetPath(asset); LoaderInfo info = new LoaderInfo(); info.loaderType = loaderType; info.instance = AssetDatabase.LoadAssetAtPath(path, loaderType) as PlayerIdentityLoader; if (info.instance == null) { continue; } info.assetName = Path.GetFileNameWithoutExtension(path); switch (info.instance.Category) { case PlayerIdentityLoaderCategory.IdentityBackend: backendLoaders.Add(info); break; case PlayerIdentityLoaderCategory.IdentityProvider: providerLoaders.Add(info); break; default: Logger.Warning("Unknown identity loader category: " + info.instance.Category); break; } } } }