/// <summary> /// Seamlessly changes between two screens /// </summary> /// <param name="focusedScreen">Currently focused screen</param> /// <param name="exchangedFor">New screen</param> private static void SeamlesslyChangeScreen(MyGuiScreenBase focusedScreen, MyGuiScreenBase exchangedFor) { focusedScreen.SkipTransition = true; focusedScreen.CloseScreen(); exchangedFor.SkipTransition = true; MyScreenManager.AddScreenNow(exchangedFor); }
public override bool Update(bool hasFocus) { if (base.Update(hasFocus) == false) { return(false); } VRageRender.MyRenderProxy.GetRenderProfiler().StartProfilingBlock("MyGuiScreenLoading::Update()"); if (this.State == MyGuiScreenState.OPENED) { if (!m_loadFinished) { MyAudio.Static.Mute = true; MyAudio.Static.StopMusic(); MyAudio.Static.VolumeMusic = 0f; MyAudio.Static.VolumeGame = 0f; MyAudio.Static.VolumeHud = 0f; VRageRender.MyRenderProxy.GetRenderProfiler().StartProfilingBlock("LoadInBackgroundThread"); DrawLoading(); if (m_screenToLoad != null) { MySandboxGame.Log.WriteLine("RunLoadingAction - START"); RunLoad(); MySandboxGame.Log.WriteLine("RunLoadingAction - END"); } if (m_screenToLoad != null) { // Screen is loaded so now we can add it to other thread MyScreenManager.AddScreenNow(m_screenToLoad); m_screenToLoad.Update(false); } m_screenToLoad = null; m_loadFinished = true; m_wheel.ManualRotationUpdate = true; VRageRender.MyRenderProxy.GetRenderProfiler().EndProfilingBlock(); } } if (m_loadFinished && MySandboxGame.IsGameReady) { if (!m_exceptionDuringLoad && OnScreenLoadingFinished != null) { OnScreenLoadingFinished(); OnScreenLoadingFinished = null; } CloseScreenNow(); DrawLoading(); } VRageRender.MyRenderProxy.GetRenderProfiler().EndProfilingBlock(); return(true); }