[Test] public void SwitchToDuringLeave() { // Set up some objects Scene scene = new Scene(); Scene scene2 = new Scene(); // Switch to the first Scene regularly { Scene.SwitchTo(scene); Assert.AreEqual(Scene.Current, scene); } // Switch to the second while leaving { Scene.SwitchTo(scene); GameObject obj = new GameObject("SwitchObject"); var switchComponent = new ShutdownSwitchToSceneComponent { Target = scene2 }; obj.AddComponent(switchComponent); scene.AddObject(obj); Scene.SwitchTo(null); DualityApp.Update(); Assert.False(switchComponent.Switched); Assert.AreEqual(Scene.Current, scene2); } // Clean up scene.Dispose(); scene2.Dispose(); }
[Test] public void SwitchTo() { // Set up some objects Scene scene = new Scene(); Scene scene2 = new Scene(); // Switch to the first Scene regularly { Scene.SwitchTo(scene); Assert.AreEqual(Scene.Current, scene); } // Switch to the second during update { GameObject obj = new GameObject("SwitchObject"); var switchComponent = new UpdateSwitchToSceneComponent { Target = scene2 }; obj.AddComponent(switchComponent); scene.AddObject(obj); DualityApp.Update(); Assert.False(switchComponent.Switched); Assert.AreEqual(Scene.Current, scene2); Scene.SwitchTo(scene); Assert.AreEqual(Scene.Current, scene); } // Switch to the second while entering { Scene.SwitchTo(null); GameObject obj = new GameObject("SwitchObject"); var switchComponent = new InitSwitchToSceneComponent { Target = scene2 }; obj.AddComponent(switchComponent); scene.AddObject(obj); Scene.SwitchTo(scene); DualityApp.Update(); Assert.False(switchComponent.Switched); Assert.AreEqual(Scene.Current, scene2); Scene.SwitchTo(scene); Assert.AreEqual(Scene.Current, scene); } // Switch to the second while leaving { Scene.SwitchTo(null); GameObject obj = new GameObject("SwitchObject"); var switchComponent = new ShutdownSwitchToSceneComponent { Target = scene2 }; obj.AddComponent(switchComponent); scene.AddObject(obj); Scene.SwitchTo(scene); DualityApp.Update(); Assert.False(switchComponent.Switched); Assert.AreEqual(Scene.Current, scene2); Scene.SwitchTo(scene); Assert.AreEqual(Scene.Current, scene); } // Clean up scene.Dispose(); scene2.Dispose(); }