private void MainWindow_OnClosing(ClosingReason reason, ref bool cancel) { Editor.Log("Main window is closing, reason: " + reason); if (Editor.StateMachine.IsPlayMode) { // Cancel closing but leave the play mode cancel = true; Editor.Log("Skip closing editor and leave the play mode"); Editor.Simulation.RequestStopPlay(); return; } SaveCurrentLayout(); // Block closing only on user events if (reason == ClosingReason.User) { // Check if cancel action or save scene before exit if (Editor.Scene.CheckSaveBeforeClose()) { // Cancel cancel = true; return; } // Close all asset editor windows for (int i = 0; i < Windows.Count; i++) { if (Windows[i] is AssetEditorWindow assetEditorWindow) { if (assetEditorWindow.Close(ClosingReason.User)) { // Cancel cancel = true; return; } // Remove it OnWindowRemove(assetEditorWindow); i--; } } } MainWindowClosing?.Invoke(); }
private void _Window_Closing(object sender, CancelEventArgs e) { MainWindowClosing?.Invoke(this, e); }