private void AddLoaderMenuSelected(object data) { int selected = (int)data; LoaderInfo info = m_LoadersNotInUse[selected]; AddLoaderMenu(info); }
private void DrawElementCallback(Rect rect, int index, bool isActive, bool isFocused) { LoaderInfo info = m_LoadersInUse[index]; var label = (info.instance == null) ? EditorGUIUtility.TrTextContent("Missing (PlayerIdentityLoader)") : EditorGUIUtility.TrTextContent(info.assetName); EditorGUI.LabelField(rect, label); }
void ReloadData() { m_AllBackendLoaderInfo.Clear(); m_SelectedBackendLoaderInfo = null; m_AllProviderLoaderInfo.Clear(); m_SelectedProviderLoaderInfos.Clear(); PlayerIdentitySettingsManager.PopulateAllKnownLoaderInfos(m_AllBackendLoaderInfo, m_AllProviderLoaderInfo); m_MustReloadData = false; }
private void RemoveInstanceFromList(ReorderableList list) { LoaderInfo info = m_LoadersInUse[list.index]; m_LoadersInUse.Remove(info); if (info.loaderType != null) { m_LoadersInUse.Remove(info); m_LoadersNotInUse.Add(info); m_ShouldReload = true; } UpdateSerializedProperty(); }
public PlayerIdentityGeneralSettings SettingsForBuildTarget(BuildTargetGroup targetGroup) { PlayerIdentityGeneralSettings ret = null; m_Settings.TryGetValue(targetGroup, out ret); if (ret == null) { ret = CreateInstance <PlayerIdentityGeneralSettings>(); SetSettingsForBuildTarget(targetGroup, ret); AssetDatabase.AddObjectToAsset(ret, AssetDatabase.GetAssetOrScenePath(this)); if (ret.Manager == null) { var ms = CreateInstance <PlayerIdentityManagerSettings>(); AssetDatabase.AddObjectToAsset(ms, AssetDatabase.GetAssetOrScenePath(ret)); ret.Manager = ms; List <LoaderInfo> m_AllBackendLoaderInfo = new List <LoaderInfo>(); List <LoaderInfo> m_AllProviderLoaderInfo = new List <LoaderInfo>(); PlayerIdentitySettingsManager.PopulateAllKnownLoaderInfos(m_AllBackendLoaderInfo, m_AllProviderLoaderInfo); LoaderInfo defaultbackloader = null; if (m_AllBackendLoaderInfo.Count != 0) { defaultbackloader = m_AllBackendLoaderInfo[0]; } if (defaultbackloader != null) { ret.Manager.backendLoader = defaultbackloader.instance; } } } return(ret); }
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; } } } }
public override void OnInspectorGUI() { PlayerIdentityGeneralSettingsPerBuildTarget targetObject; if (serializedObject == null || serializedObject.targetObject == null) { return; } if (m_MustReloadData) { ReloadData(); } serializedObject.Update(); // Load the current settings targetObject = serializedObject.targetObject as PlayerIdentityGeneralSettingsPerBuildTarget; if (targetObject == null) { return; } // Always use standalone for setting identity backend and other global settings var standaloneCurrentSettings = targetObject.SettingsForBuildTarget(BuildTargetGroup.Standalone); // UI to select backend loader GUILayout.Label("Select Identity Backend", EditorStyles.boldLabel); EditorGUILayout.BeginHorizontal(); { EditorGUILayout.PrefixLabel("Backend Type"); var currentSelectedBackendIndex = GetSelectedBackendLoaderIndex(standaloneCurrentSettings, m_AllBackendLoaderInfo); currentSelectedBackendIndex = EditorGUILayout.Popup(currentSelectedBackendIndex, GetLoaderNames(m_AllBackendLoaderInfo)); if (m_AllBackendLoaderInfo.Count > 0) { m_SelectedBackendLoaderInfo = m_AllBackendLoaderInfo[currentSelectedBackendIndex]; // Apply to all values, not just current setting ApplyChangesToAllSettings((group, currentValue) => { var localCachedItem = GetOrCreateCachedItem(group, currentValue.objectReferenceValue as PlayerIdentityGeneralSettings); localCachedItem.managerSettingsObject.FindProperty("m_BackendLoader").objectReferenceValue = m_SelectedBackendLoaderInfo.instance; localCachedItem.managerSettingsObject.ApplyModifiedProperties(); }); } else { m_SelectedBackendLoaderInfo = null; } } EditorGUILayout.EndHorizontal(); EditorGUILayout.Space(); // UI to select identity providers GUILayout.Label("Configure Identity Providers", EditorStyles.boldLabel); var buildTargetGroup = EditorGUILayout.BeginBuildTargetSelectionGrouping(); { var currentSettings = targetObject.SettingsForBuildTarget(buildTargetGroup); var cachedItem = GetOrCreateCachedItem(buildTargetGroup, currentSettings); if (cachedItem.loaderOrderUI == null) { var loaderList = FindLoaderList(cachedItem); var loadersInUse = FindLoadersInUse(cachedItem); cachedItem.loaderOrderUI = new LoaderOrderUI(m_AllProviderLoaderInfo, loadersInUse, loaderList, onUpdate: () => { ReloadData(); }); } m_MustReloadData = cachedItem.loaderOrderUI.OnGUI(); serializedObject.ApplyModifiedProperties(); } EditorGUILayout.EndBuildTargetSelectionGrouping(); // Options // Whether verify email shall be triggered automatically standaloneCurrentSettings.Manager.automaticallyVerifyEmail = EditorGUILayout.ToggleLeft("Automatically send verification email to users who sign up with email.", standaloneCurrentSettings.Manager.automaticallyVerifyEmail); // Apply to all values ApplyChangesToAllSettings((group, currentValue) => { var localCachedItem = GetOrCreateCachedItem(group, currentValue.objectReferenceValue as PlayerIdentityGeneralSettings); localCachedItem.managerSettingsObject.FindProperty("m_AutomaticallyVerifyEmail").boolValue = standaloneCurrentSettings.Manager.automaticallyVerifyEmail; localCachedItem.managerSettingsObject.ApplyModifiedProperties(); }); serializedObject.ApplyModifiedProperties(); }
private void AddLoaderMenu(LoaderInfo info) { m_LoadersNotInUse.Remove(info); m_LoadersInUse.Add(info); UpdateSerializedProperty(); }