/// <summary> /// shutdown game engine. /// call it one time on application exit. /// </summary> public static void Shutdown() { foreach (var initializable in Globals.MEFContainer.GetExportedValues <XLEBridgeUtils.IShutdownWithEngine>()) { initializable.Shutdown(); } foreach (var keyValue in s_idToDomNode) { DestroyObject( keyValue.Key.Item1, keyValue.Key.Item2, keyValue.Value.TypeId); } s_idToDomNode.Clear(); s_foregroundUpdateTimer.Stop(); s_foregroundUpdateTimer.Dispose(); s_foregroundUpdateTimer = null; s_loggingRedirect.Dispose(); s_loggingRedirect = null; XLEBridgeUtils.Utils.DetachLibrary(); Util3D.Shutdown(); XLEBridgeUtils.Utils.GlobalSceneManager = null; s_entityInterface = null; s_underlyingScene.Dispose(); s_underlyingScene = null; s_retainedRenderResources.Dispose(); s_retainedRenderResources = null; s_engineDevice.Dispose(); s_engineDevice = null; GlobalSelection.Dispose(); GlobalSelection = null; CriticalError = s_notInitialized; }