/// <summary> /// Shuts down the engine, cleaning up resources. /// </summary> public static void Shutdown(int exitCode = 1) { if (IsExiting) { return; } Logger.Warn("Shutting down..."); AnalyticsService.EndSession(); ContentProvider.DeleteDirectory(TempPath); IsExiting = true; var dataModel = Game.DataModel; try { dataModel.OnClose(); } catch (Exception) { Logger.Error("DataModel OnClose callback errored."); } Settings.Save(); UserSettings.Save(); Exiting?.Invoke(null, null); CancelTokenSource.Cancel(); Logger.Info("dEngine has been shutdown."); Environment.Exit(0); }