namespace Engine.Scene; public class SceneManager : IUpdate, IRender { public Scene? CurrentScene { get; private set; } private Func? _nextScene; public void Update(double parDeltaTime) { if (_nextScene != null) { CurrentScene?.Exit(); CurrentScene = _nextScene(); _nextScene = null; CurrentScene.Enter(); } if (parDeltaTime != 0) { CurrentScene?.Update(parDeltaTime); } } public void Render() { CurrentScene?.Render(); } public void TransitionTo(Func? parScene) { _nextScene = parScene; } }