// Copyright (c) 2025 TerraByte Inc. // // A new utility class that uses [InitializeOnLoad] to safely cache data // from Unity's main thread that is needed by background threads. using System.IO; using UnityEngine; using UnityEditor; using UnityEngine.Scripting; using Terra.Arbitrator.Settings; namespace Terra.Arbitrator.Services { [Preserve] [InitializeOnLoad] public static class MainThreadDataCache { /// /// A thread-safe, cached path to the project's root directory. /// public static string ProjectRoot { get; private set; } public static string UserName { get; private set; } public static string EmailAddress { get; private set; } public static string AuthUsername { get; private set; } public static string AuthPassword { get; private set; } static MainThreadDataCache() { ProjectRoot = Directory.GetParent(Application.dataPath)?.FullName; EditorApplication.update += UpdatePrefValues; UpdatePrefValues(); } private static void UpdatePrefValues() { UserName = EditorPrefs.GetString(BetterGitSettings.UsernameKey, string.Empty); EmailAddress = EditorPrefs.GetString(BetterGitSettings.EmailKey, string.Empty); AuthUsername = EditorPrefs.GetString(BetterGitSettings.AuthUsernameKey, string.Empty); AuthPassword = EditorPrefs.GetString(BetterGitSettings.AuthPasswordKey, string.Empty); } } }