From bd344e8137b130c3b14d2e519de772f96f6e16b2 Mon Sep 17 00:00:00 2001 From: Chandler Cox Date: Thu, 31 Oct 2024 22:19:13 -0500 Subject: [PATCH] Reload existing scene if opened again. --- Source/Editor/States/ChangingScenesState.cs | 45 +++++++++++++-------- 1 file changed, 29 insertions(+), 16 deletions(-) diff --git a/Source/Editor/States/ChangingScenesState.cs b/Source/Editor/States/ChangingScenesState.cs index 4fe543153..17fa30ff7 100644 --- a/Source/Editor/States/ChangingScenesState.cs +++ b/Source/Editor/States/ChangingScenesState.cs @@ -109,29 +109,42 @@ namespace FlaxEditor.States private void TryEnter() { - // Remove redundant scene changes - for (int i = 0; i < _scenesToUnload.Count; i++) + // Reload existing scene if only 1 scene exists + bool reloadExistingScene = false; + if (Level.Scenes.Length == 1 && _scenesToLoad.Count == 1) { - var id = _scenesToUnload[i].ID; - for (int j = 0; j < _scenesToLoad.Count; j++) + if (Level.FindScene(_scenesToLoad[0])) { - if (_scenesToLoad[j] == id) - { - _scenesToLoad.RemoveAt(j--); - _scenesToUnload.RemoveAt(i); - break; - } + reloadExistingScene = true; } } - // Skip already loaded scenes - for (int j = 0; j < _scenesToLoad.Count; j++) + if (!reloadExistingScene) { - if (Level.FindScene(_scenesToLoad[j])) + // Remove redundant scene changes + for (int i = 0; i < _scenesToUnload.Count; i++) { - _scenesToLoad.RemoveAt(j--); - if (_scenesToLoad.Count == 0) - break; + var id = _scenesToUnload[i].ID; + for (int j = 0; j < _scenesToLoad.Count; j++) + { + if (_scenesToLoad[j] == id) + { + _scenesToLoad.RemoveAt(j--); + _scenesToUnload.RemoveAt(i); + break; + } + } + } + + // Skip already loaded scenes + for (int j = 0; j < _scenesToLoad.Count; j++) + { + if (Level.FindScene(_scenesToLoad[j])) + { + _scenesToLoad.RemoveAt(j--); + if (_scenesToLoad.Count == 0) + break; + } } }