Merge branch 'fix-tooltip-scene' of https://github.com/Tryibion/FlaxEngine into Tryibion-fix-tooltip-scene

This commit is contained in:
Wojtek Figat
2025-07-01 10:48:26 +02:00

View File

@@ -19,6 +19,7 @@ namespace FlaxEditor.States
private readonly List<Guid> _scenesToLoad = new List<Guid>(); private readonly List<Guid> _scenesToLoad = new List<Guid>();
private readonly List<Scene> _scenesToUnload = new List<Scene>(); private readonly List<Scene> _scenesToUnload = new List<Scene>();
private Guid _lastSceneFromRequest; private Guid _lastSceneFromRequest;
private bool _sameSceneReload = false;
internal ChangingScenesState(Editor editor) internal ChangingScenesState(Editor editor)
: base(editor) : base(editor)
@@ -164,10 +165,22 @@ namespace FlaxEditor.States
{ {
Assert.AreEqual(Guid.Empty, _lastSceneFromRequest, "Invalid state."); Assert.AreEqual(Guid.Empty, _lastSceneFromRequest, "Invalid state.");
// Bind events // Bind events, only bind loading event and error if re-loading the same scene to avoid issues.
Level.SceneLoaded += OnSceneEvent; if (_scenesToUnload.Count == 1 && _scenesToLoad.Count == 1)
Level.SceneLoadError += OnSceneEvent; {
Level.SceneUnloaded += OnSceneEvent; if (_scenesToLoad[0] == _scenesToUnload[0].ID)
{
Level.SceneLoaded += OnSceneEvent;
Level.SceneLoadError += OnSceneEvent;
_sameSceneReload = true;
}
}
if (!_sameSceneReload)
{
Level.SceneLoaded += OnSceneEvent;
Level.SceneLoadError += OnSceneEvent;
Level.SceneUnloaded += OnSceneEvent;
}
// Push scenes changing requests // Push scenes changing requests
for (int i = 0; i < _scenesToUnload.Count; i++) for (int i = 0; i < _scenesToUnload.Count; i++)
@@ -210,9 +223,18 @@ namespace FlaxEditor.States
} }
// Unbind events // Unbind events
Level.SceneLoaded -= OnSceneEvent; if (_sameSceneReload)
Level.SceneLoadError -= OnSceneEvent; {
Level.SceneUnloaded -= OnSceneEvent; Level.SceneLoaded -= OnSceneEvent;
Level.SceneLoadError -= OnSceneEvent;
_sameSceneReload = false;
}
else
{
Level.SceneLoaded -= OnSceneEvent;
Level.SceneLoadError -= OnSceneEvent;
Level.SceneUnloaded -= OnSceneEvent;
}
} }
private void OnSceneEvent(Scene scene, Guid sceneId) private void OnSceneEvent(Scene scene, Guid sceneId)