diff --git a/Source/Editor/Modules/SceneModule.cs b/Source/Editor/Modules/SceneModule.cs index 4fb28ac76..954e3bd50 100644 --- a/Source/Editor/Modules/SceneModule.cs +++ b/Source/Editor/Modules/SceneModule.cs @@ -242,7 +242,6 @@ namespace FlaxEditor.Modules /// True if don't close opened scenes and just add new scene to them, otherwise will release current scenes and load single one. public void OpenScene(Guid sceneId, bool additive = false) { - // Check if cannot change scene now if (!Editor.StateMachine.CurrentState.CanChangeScene) return; @@ -271,11 +270,21 @@ namespace FlaxEditor.Modules /// public void ReloadScenes() { + if (!Editor.StateMachine.CurrentState.CanChangeScene) + return; + + if (!Editor.IsPlayMode) + { + if (CheckSaveBeforeClose()) + return; + } + + // Reload scenes foreach (var scene in Level.Scenes) { var sceneId = scene.ID; - if (!Level.UnloadScene(scene)) - Level.LoadScene(sceneId); + Level.UnloadScene(scene); + Level.LoadScene(sceneId); } } @@ -285,7 +294,6 @@ namespace FlaxEditor.Modules /// The scene. public void CloseScene(Scene scene) { - // Check if cannot change scene now if (!Editor.StateMachine.CurrentState.CanChangeScene) return; @@ -309,7 +317,6 @@ namespace FlaxEditor.Modules /// public void CloseAllScenes() { - // Check if cannot change scene now if (!Editor.StateMachine.CurrentState.CanChangeScene) return; @@ -334,7 +341,6 @@ namespace FlaxEditor.Modules /// The scene to not close. public void CloseAllScenesExcept(Scene scene) { - // Check if cannot change scene now if (!Editor.StateMachine.CurrentState.CanChangeScene) return; diff --git a/Source/Engine/Level/Level.cpp b/Source/Engine/Level/Level.cpp index cfdf11a6f..a95b8070f 100644 --- a/Source/Engine/Level/Level.cpp +++ b/Source/Engine/Level/Level.cpp @@ -1108,7 +1108,7 @@ bool LevelImpl::saveScene(Scene* scene) bool LevelImpl::saveScene(Scene* scene, const String& path) { - ASSERT(scene); + ASSERT(scene && EnumHasNoneFlags(scene->Flags, ObjectFlags::WasMarkedToDelete)); auto sceneId = scene->GetID(); LOG(Info, "Saving scene {0} to \'{1}\'", scene->GetName(), path);