/// <summary> /// Removes one <see cref="Scene" /> from the <see cref="SceneStack" /> /// </summary> private static void RemoveScene(AbstractTransition transition = null) { //Game.ResetFrameCounter(); if (transition == null) { var sm = GetInstance(); var c = sm.SceneStack.Count; if (c <= 0) { return; } sm.SceneStack.Last().UnloadContent(); sm.SceneStack.Last().ResetScene(); sm.SceneStack.RemoveAt(c - 1); } else { transition.SetLambda(() => RemoveScene()); AddTransition(transition); } }
/// <summary> /// Adds a <see cref="Scene" /> to the <see cref="SceneStack" /> /// </summary> /// <param name="scene"><see cref="Scene" /> that's added to the <see cref="SceneStack" /></param> /// <param name="transition"></param> public static void AddScene(Scene scene, AbstractTransition transition = null) { //Game.ResetFrameCounter(); if (transition == null) { var sm = GetInstance(); sm.SceneStack.Add(scene); sm.CurrentScene.ResetScene(); sm.CurrentScene.LoadContent(); } else { transition.SetLambda(() => AddScene(scene)); AddTransition(transition); } }
/// <summary> /// Adds a <see cref="Scene" /> to the <see cref="SceneStack" /> by <paramref name="key" /> /// </summary> /// <param name="key"></param> /// <param name="transition"></param> public static void AddScene(string key, AbstractTransition transition = null) { if (key == GetCurrentScene().SceneKey) { return; } //Game.ResetFrameCounter(); if (transition == null) { var sm = GetInstance(); sm.SceneStack.Add(sm.SceneDictionary[key]); sm.CurrentScene.ResetScene(); sm.CurrentScene.LoadContent(); } else { transition.SetLambda(() => AddScene(key)); AddTransition(transition); } }