From 9a522615e50d7bf708b39f5edd405442dd5dd16e Mon Sep 17 00:00:00 2001 From: Wojtek Figat Date: Tue, 10 Aug 2021 16:32:24 +0200 Subject: [PATCH] Add support for changing scenes via Editor during play mode --- Source/Editor/Modules/SceneModule.cs | 23 +++++++++++++++++++++++ Source/Editor/States/PlayingState.cs | 3 +++ 2 files changed, 26 insertions(+) diff --git a/Source/Editor/Modules/SceneModule.cs b/Source/Editor/Modules/SceneModule.cs index 33d41ddd6..3e6662f6c 100644 --- a/Source/Editor/Modules/SceneModule.cs +++ b/Source/Editor/Modules/SceneModule.cs @@ -251,6 +251,15 @@ namespace FlaxEditor.Modules if (!Editor.StateMachine.CurrentState.CanChangeScene) return; + // In play-mode Editor mocks the level streaming script + if (Editor.IsPlayMode) + { + if (!additive) + Level.UnloadAllScenesAsync(); + Level.LoadSceneAsync(sceneId); + return; + } + if (!additive) { // Ensure to save all pending changes @@ -272,6 +281,13 @@ namespace FlaxEditor.Modules if (!Editor.StateMachine.CurrentState.CanChangeScene) return; + // In play-mode Editor mocks the level streaming script + if (Editor.IsPlayMode) + { + Level.UnloadSceneAsync(scene); + return; + } + // Ensure to save all pending changes if (CheckSaveBeforeClose()) return; @@ -289,6 +305,13 @@ namespace FlaxEditor.Modules if (!Editor.StateMachine.CurrentState.CanChangeScene) return; + // In play-mode Editor mocks the level streaming script + if (Editor.IsPlayMode) + { + Level.UnloadAllScenesAsync(); + return; + } + // Ensure to save all pending changes if (CheckSaveBeforeClose()) return; diff --git a/Source/Editor/States/PlayingState.cs b/Source/Editor/States/PlayingState.cs index 171022745..6258975ae 100644 --- a/Source/Editor/States/PlayingState.cs +++ b/Source/Editor/States/PlayingState.cs @@ -28,6 +28,9 @@ namespace FlaxEditor.States /// public override bool CanEditScene => true; + /// + public override bool CanChangeScene => true; + /// public override bool CanUseUndoRedo => false;