using System; using System.Linq; using UnityEditor; using UnityEditor.SceneManagement; using UnityEditor.UIElements; using UnityEngine; using UnityEngine.UIElements; using UnityEditor.Compilation; using UnityEditor.Scripting.ScriptCompilation; namespace Pathfinding { internal class WelcomeScreen : UnityEditor.EditorWindow { [SerializeField] private VisualTreeAsset m_VisualTreeAsset = default; public bool isImportingSamples; private bool askedAboutQuitting; [InitializeOnLoadMethod] public static void TryCreate () { if (!PathfindingEditorSettings.instance.hasShownWelcomeScreen) { // Wait a bit before showing the window to avoid stuttering // as all the other windows in Unity load. // This makes the animation smoother. var delay = 0.5f; var t0 = Time.realtimeSinceStartup; EditorApplication.CallbackFunction create = null; create = () => { if (Time.realtimeSinceStartup - t0 > delay) { EditorApplication.update -= create; PathfindingEditorSettings.instance.hasShownWelcomeScreen = true; PathfindingEditorSettings.instance.Save(); Create(); } }; EditorApplication.update += create; } } public static void Create () { var window = GetWindow( true, "A* Pathfinding Project", true ); window.minSize = window.maxSize = new Vector2(400, 400*1.618f); window.ShowUtility(); } public void CreateGUI () { VisualElement root = rootVisualElement; VisualElement labelFromUXML = m_VisualTreeAsset.Instantiate(); root.Add(labelFromUXML); var sampleButton = root.Query