#if UNITY_6000_3_OR_NEWER using UnityEditor; using UnityEditor.SceneManagement; using UnityEngine.SceneManagement; namespace Module.NavigationTool.Editor.Toolbar { [InitializeOnLoad] internal static class MainToolbarScenePickerStateChanged { static MainToolbarScenePickerStateChanged() { EditorApplication.playModeStateChanged += OnPlayModeStateChanged; SceneManager.activeSceneChanged += OnActiveSceneChanged; SceneManager.sceneLoaded += OnSceneLoaded; SceneManager.sceneUnloaded += OnSceneUnloaded; EditorSceneManager.newSceneCreated += OnNewSceneCreated; EditorSceneManager.activeSceneChangedInEditMode += OnActiveSceneChangedInEditMode; EditorSceneManager.sceneOpened += OnSceneOpened; EditorSceneManager.sceneClosed += OnSceneClosed; } private static void OnPlayModeStateChanged(PlayModeStateChange state) { MainToolbarScenePickerElement.Refresh(); } private static void OnActiveSceneChanged(Scene current, Scene next) { MainToolbarScenePickerElement.Refresh(); } private static void OnSceneLoaded(Scene scene, LoadSceneMode mode) { MainToolbarScenePickerElement.Refresh(); } private static void OnSceneUnloaded(Scene arg0) { MainToolbarScenePickerElement.Refresh(); } private static void OnActiveSceneChangedInEditMode(Scene from, Scene to) { MainToolbarScenePickerElement.Refresh(); } private static void OnNewSceneCreated(Scene scene, NewSceneSetup setup, NewSceneMode mode) { MainToolbarScenePickerElement.Refresh(); } private static void OnSceneOpened(Scene scene, OpenSceneMode mode) { MainToolbarScenePickerElement.Refresh(); } private static void OnSceneClosed(Scene scene) { MainToolbarScenePickerElement.Refresh(); } } } #endif