/// <summary> /// Fades the whole Application screen in. /// </summary> /// <param name = "startColor">The Color used for start</param> /// <param name = "length">The length in seconds the fade operation should last</param> public static void FadeIn(Color startColor, float length) { if (_fadeActive) { Debug.WriteLine("Fading already active"); return; } // if (_hideActive) { _hideActive = false; } _fadeActive = true; Instance._transitionColor = startColor; Interpolator.Create(1.0f, 0.0f, length, (step) => { Instance._transitionColor = new Color(Convert.ToSingle(Instance._transitionColor.R), Convert.ToSingle(Instance._transitionColor.G), Convert.ToSingle(Instance._transitionColor.B), step.Value); }, completed => _fadeActive = false); }
/// <summary> /// Fades the whole Application screen out. /// </summary> /// <param name = "endColor">The Color used for end</param> /// <param name = "length">The length in seconds the fade operation should last</param> public static void FadeOut(Color endColor, float length) { if (_fadeActive) { Debug.WriteLine("Fading already active"); return; } if (_hideActive) { Debug.WriteLine("Screen already hidden"); return; } _fadeActive = true; Instance._transitionColor = endColor * 0f; Interpolator.Create(0.0f, 1.0f, length, (step) => { Instance._transitionColor = new Color(Convert.ToSingle(Instance._transitionColor.R), Convert.ToSingle(Instance._transitionColor.G), Convert.ToSingle(Instance._transitionColor.B), step.Value); }, completed => { _fadeActive = false; _hideActive = true; }); }
/// <summary> /// Full update /// </summary> /// <param name = "gameTime">Time passed since the last call to Update.</param> protected override void Update(GameTime gameTime) { #if WINDOWS if (SunBurn.Editor != null && SunBurn.Editor.EditorAttached) { Input.Enabled = false; } else { Input.Enabled = true; } #endif base.Update(gameTime); // we update the ThreadPool Threads.Update(); // we update the Interpolator and Timer providers Interpolator.Update((float)gameTime.ElapsedGameTime.TotalSeconds); Timer.Update((float)gameTime.ElapsedGameTime.TotalSeconds); // If the current GameState is loaded, we update it, otherwise, we update its LoadingGameState if (ActiveGameState != null && ActiveGameState.IsLoadingComplete && (_loadingGameState == null || _loadingGameState.ShouldRenderLoadedGameState)) { ((IUpdate)ActiveGameState).Update(gameTime); } if (_loadingGameState != null && _loadingGameState.IsLoadingComplete && !_loadingGameState.ShouldRenderLoadedGameState) { ((IUpdate)_loadingGameState).Update(gameTime); } }