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);