using UnityEditor; using UnityEngine; namespace Unity.VisualScripting { public class WrappedEditorWindow : EditorWindow { // The wrapper reference is not serialized and will be lost // on assembly reload. Hence why we lock assembly reload while // this window is open. public EditorWindowWrapper wrapper { get; set; } private void Awake() { } private void OnDestroy() { } private void OnEnable() { EditorApplicationUtility.LockReloadAssemblies(); wrapper?.OnShow(); } private void OnDisable() { wrapper?.OnClose(); EditorApplicationUtility.UnlockReloadAssemblies(); } private void Update() { if (wrapper == null) { Close(); return; } try { wrapper.Update(); } catch (WindowClose) { Close(); } } private void OnGUI() { try { wrapper?.OnGUI(); } catch (ExitGUIException) { } catch (WindowClose) { Close(); } } private void OnFocus() { try { wrapper?.OnFocus(); } catch (WindowClose) { Close(); } } private void OnLostFocus() { try { wrapper?.OnLostFocus(); } catch (WindowClose) { Close(); } } } }