using UnityEditor; using UnityEngine; using Terra.Arbitrator.Settings; namespace Terra.Arbitrator.GUI { internal class BetterGitSettingsProvider : SettingsProvider { // The path in the Project Settings window. private const string SettingsPath = "Project/Better Git"; // Constructor private BetterGitSettingsProvider(string path, SettingsScope scope = SettingsScope.User) : base(path, scope) {} /// /// This static method is what registers our settings provider with Unity. /// [SettingsProvider] public static SettingsProvider CreateSettingsProvider() { var provider = new BetterGitSettingsProvider(SettingsPath, SettingsScope.Project); return provider; } /// /// This is where we draw the UI for our settings page. /// public override void OnGUI(string searchContext) { // Load the current settings directly within OnGUI. var username = BetterGitSettings.Username; var email = BetterGitSettings.Email; EditorGUILayout.Space(); EditorGUILayout.LabelField("Git Credentials", EditorStyles.boldLabel); EditorGUILayout.HelpBox("These credentials will be used for Git operations like Push. They are saved per-user and shared across your projects. Changes are saved automatically.", MessageType.Info); EditorGUILayout.Space(); EditorGUI.BeginChangeCheck(); username = EditorGUILayout.TextField("Username", username); email = EditorGUILayout.TextField("Email Address", email); if (!EditorGUI.EndChangeCheck()) return; BetterGitSettings.Username = username; BetterGitSettings.Email = email; } } }