Merge branch 'Tryibion-fix-tooltip-scene'
This commit is contained in:
@@ -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)
|
||||||
|
|||||||
Reference in New Issue
Block a user