protected virtual void IntegrationsTab() { GUILayout.Label("Integrations", EditorStyles.boldLabel); GUILayout.Label("Install & Uninstall integrations and manage them all at one glance.", EditorStyles.wordWrappedLabel); foreach (IntegrationInfo integration in this.integrations.Values) { EditorGUILayout.BeginVertical(EditorStyles.helpBox); EditorGUILayout.BeginHorizontal(); GUILayout.Label(integration.Title, EditorStyles.boldLabel); EditorGUILayout.BeginVertical(); GUILayout.Space(5f); if (GUILayout.Button(integration.Installed ? "Uninstall" : "Install", EditorStyles.miniButton)) { if (integration.Installed) { IntegrationUtils.UninstallIntegration(integration); } else { IntegrationUtils.InstallIntegration(integration, true); } } EditorGUILayout.EndVertical(); GUILayout.FlexibleSpace(); EditorGUILayout.EndHorizontal(); GUILayout.Label(integration.Description, EditorStyles.wordWrappedLabel); if (integration.Dependencies.Length > 0) { string dependenciesText = "Dependencies:\n"; string[] dependencies = integration.Dependencies; for (int i = 0; i < dependencies.Length; i++) { IntegrationInfo dependency = IntegrationUtils.GetIntegration(dependencies[i]); dependenciesText += "- "; dependenciesText += dependency.Title; dependenciesText += " (" + (dependency.Installed ? "Installed" : "Not Installed") + ")"; if (i + 1 < dependencies.Length) { dependenciesText += "\n"; } } GUILayout.Label(dependenciesText, EditorStyles.wordWrappedLabel); } EditorGUILayout.BeginHorizontal(); GUILayout.FlexibleSpace(); if (integration.Links != null) { for (int i = 0; i < integration.Links.Length; i++) { if (GUILayout.Button(integration.Links[i].text, GUILayout.Width(100f))) { Application.OpenURL(integration.Links[i].url); } } } EditorGUILayout.EndHorizontal(); EditorGUILayout.EndVertical(); } }
protected virtual void OnEnable() { titleContent = new GUIContent(" Settings", Resources.Load <Texture>("savegamepro-icon")); this.integrations = new Dictionary <string, IntegrationInfo>(); foreach (IntegrationInfo integration in IntegrationUtils.GetIntegrations()) { integration.Dependents = new List <string>(); this.integrations.Add(integration.Identifier, integration); } foreach (IntegrationInfo integration in this.integrations.Values) { for (int i = 0; i < integration.Dependencies.Length; i++) { string dependency = integration.Dependencies[i]; this.integrations[dependency].Dependents.Add(integration.Identifier); } } }