From 09e2b737f0087f04a55ad1d20435caa607b94fe7 Mon Sep 17 00:00:00 2001 From: Wojtek Figat Date: Fri, 20 Aug 2021 10:51:27 +0200 Subject: [PATCH] Fix rare crashes due to selection not being empty on play mode start --- Source/Editor/States/PlayingState.cs | 17 +++++++++++------ 1 file changed, 11 insertions(+), 6 deletions(-) diff --git a/Source/Editor/States/PlayingState.cs b/Source/Editor/States/PlayingState.cs index 6258975ae..c9100dcf9 100644 --- a/Source/Editor/States/PlayingState.cs +++ b/Source/Editor/States/PlayingState.cs @@ -92,9 +92,13 @@ namespace FlaxEditor.States { Profiler.BeginEvent("PlayingState.CacheSelection"); _selectedObjects.Clear(); - for (int i = 0; i < Editor.SceneEditing.Selection.Count; i++) + var selection = Editor.SceneEditing.Selection; + if (selection.Count != 0) { - _selectedObjects.Add(Editor.SceneEditing.Selection[i].ID); + for (int i = 0; i < selection.Count; i++) + _selectedObjects.Add(selection[i].ID); + selection.Clear(); + Editor.SceneEditing.OnSelectionChanged(); } Profiler.EndEvent(); } @@ -102,15 +106,16 @@ namespace FlaxEditor.States private void RestoreSelection() { Profiler.BeginEvent("PlayingState.RestoreSelection"); - var count = Editor.SceneEditing.Selection.Count; - Editor.SceneEditing.Selection.Clear(); + var selection = Editor.SceneEditing.Selection; + var count = selection.Count; + selection.Clear(); for (int i = 0; i < _selectedObjects.Count; i++) { var node = SceneGraphFactory.FindNode(_selectedObjects[i]); if (node != null) - Editor.SceneEditing.Selection.Add(node); + selection.Add(node); } - if (Editor.SceneEditing.Selection.Count != count) + if (selection.Count != count) Editor.SceneEditing.OnSelectionChanged(); Profiler.EndEvent(); }