/// <summary> /// Pushes the specified screen. /// </summary> /// <param name="screen">The screen.</param> public void Push(Screen screen) { foreach (var s in _screenStack) { if (s.TransitionState == TransitionState.On || s.TransitionState == TransitionState.Shown) s.TransitionState = TransitionState.Off; } _screens.Add(screen); _screenStack.Push(screen); screen.TransitionState = TransitionState.On; screen.Manager = this; }
private void UpdateTransition(Screen screen, GameTime gameTime) { if (screen.TransitionState == TransitionState.On) { if (screen.TransitionOn == TimeSpan.Zero) screen.TransitionProgress = 1; else screen.TransitionProgress = MathHelper.Clamp(screen.TransitionProgress + (float)(gameTime.ElapsedGameTime.TotalSeconds / screen.TransitionOn.TotalSeconds), 0, 1); } else { if (screen.TransitionOn == TimeSpan.Zero) screen.TransitionProgress = 0; else screen.TransitionProgress = MathHelper.Clamp(screen.TransitionProgress - (float)(gameTime.ElapsedGameTime.TotalSeconds / screen.TransitionOff.TotalSeconds), 0, 1); } }