From dd4bb2f7f1f3825b4e0c57e02d9e513e1e44743b Mon Sep 17 00:00:00 2001 From: Chandler Cox Date: Wed, 4 Jun 2025 11:16:01 -0500 Subject: [PATCH 1/3] Dont scroll to node when play is starting or ending. --- Source/Editor/Windows/SceneTreeWindow.cs | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/Source/Editor/Windows/SceneTreeWindow.cs b/Source/Editor/Windows/SceneTreeWindow.cs index 705976e6e..999be7f94 100644 --- a/Source/Editor/Windows/SceneTreeWindow.cs +++ b/Source/Editor/Windows/SceneTreeWindow.cs @@ -27,6 +27,7 @@ namespace FlaxEditor.Windows private Panel _sceneTreePanel; private bool _isUpdatingSelection; private bool _isMouseDown; + private bool _isPlayStateChanging = false; private DragAssets _dragAssets; private DragActorType _dragActorType; @@ -93,6 +94,11 @@ namespace FlaxEditor.Windows _tree.Parent = _sceneTreePanel; headerPanel.Parent = this; + Editor.PlayModeBeginning += () => _isPlayStateChanging = true; + Editor.PlayModeBegin += () => _isPlayStateChanging = false; + Editor.PlayModeEnding += () => _isPlayStateChanging = true; + Editor.PlayModeEnd += () => _isPlayStateChanging = false; + // Setup input actions InputActions.Add(options => options.TranslateMode, () => Editor.MainTransformGizmo.ActiveMode = TransformGizmoBase.Mode.Translate); InputActions.Add(options => options.RotateMode, () => Editor.MainTransformGizmo.ActiveMode = TransformGizmoBase.Mode.Rotate); @@ -250,7 +256,7 @@ namespace FlaxEditor.Windows _tree.Select(nodes); // For single node selected scroll view so user can see it - if (nodes.Count == 1) + if (nodes.Count == 1 && !_isPlayStateChanging) { nodes[0].ExpandAllParents(true); _sceneTreePanel.ScrollViewTo(nodes[0]); From dacc0068e0e76c2c93cfa8b9bb96f0bfec04a261 Mon Sep 17 00:00:00 2001 From: xxSeys1 Date: Tue, 10 Jun 2025 16:49:30 +0200 Subject: [PATCH 2/3] dont scroll to node after scripts compilation --- Source/Editor/Windows/SceneTreeWindow.cs | 18 ++++++++++++------ 1 file changed, 12 insertions(+), 6 deletions(-) diff --git a/Source/Editor/Windows/SceneTreeWindow.cs b/Source/Editor/Windows/SceneTreeWindow.cs index 999be7f94..80b709eb6 100644 --- a/Source/Editor/Windows/SceneTreeWindow.cs +++ b/Source/Editor/Windows/SceneTreeWindow.cs @@ -27,7 +27,7 @@ namespace FlaxEditor.Windows private Panel _sceneTreePanel; private bool _isUpdatingSelection; private bool _isMouseDown; - private bool _isPlayStateChanging = false; + private bool _blockSceneTreeScroll = false; private DragAssets _dragAssets; private DragActorType _dragActorType; @@ -94,10 +94,10 @@ namespace FlaxEditor.Windows _tree.Parent = _sceneTreePanel; headerPanel.Parent = this; - Editor.PlayModeBeginning += () => _isPlayStateChanging = true; - Editor.PlayModeBegin += () => _isPlayStateChanging = false; - Editor.PlayModeEnding += () => _isPlayStateChanging = true; - Editor.PlayModeEnd += () => _isPlayStateChanging = false; + Editor.PlayModeBeginning += () => _blockSceneTreeScroll = true; + Editor.PlayModeBegin += () => _blockSceneTreeScroll = false; + Editor.PlayModeEnding += () => _blockSceneTreeScroll = true; + Editor.PlayModeEnd += () => _blockSceneTreeScroll = false; // Setup input actions InputActions.Add(options => options.TranslateMode, () => Editor.MainTransformGizmo.ActiveMode = TransformGizmoBase.Mode.Translate); @@ -256,7 +256,7 @@ namespace FlaxEditor.Windows _tree.Select(nodes); // For single node selected scroll view so user can see it - if (nodes.Count == 1 && !_isPlayStateChanging) + if (nodes.Count == 1 && !_blockSceneTreeScroll) { nodes[0].ExpandAllParents(true); _sceneTreePanel.ScrollViewTo(nodes[0]); @@ -266,6 +266,12 @@ namespace FlaxEditor.Windows _isUpdatingSelection = false; } + /// + public override void OnEditorStateChanged() + { + _blockSceneTreeScroll = Editor.StateMachine.ReloadingScriptsState.IsActive; + } + private bool ValidateDragAsset(AssetItem assetItem) { if (assetItem.IsOfType()) From 3cb74d48ca4ac57a27f830715952949c69394c40 Mon Sep 17 00:00:00 2001 From: Chandler Cox Date: Thu, 19 Jun 2025 20:01:27 -0500 Subject: [PATCH 3/3] Convert using event to using window method overrides. --- Source/Editor/Windows/SceneTreeWindow.cs | 33 ++++++++++++++++++++---- 1 file changed, 28 insertions(+), 5 deletions(-) diff --git a/Source/Editor/Windows/SceneTreeWindow.cs b/Source/Editor/Windows/SceneTreeWindow.cs index 851cd62f3..75a3723cf 100644 --- a/Source/Editor/Windows/SceneTreeWindow.cs +++ b/Source/Editor/Windows/SceneTreeWindow.cs @@ -104,11 +104,6 @@ namespace FlaxEditor.Windows headerPanel.Parent = this; - Editor.PlayModeBeginning += () => _blockSceneTreeScroll = true; - Editor.PlayModeBegin += () => _blockSceneTreeScroll = false; - Editor.PlayModeEnding += () => _blockSceneTreeScroll = true; - Editor.PlayModeEnd += () => _blockSceneTreeScroll = false; - // Setup input actions InputActions.Add(options => options.TranslateMode, () => Editor.MainTransformGizmo.ActiveMode = TransformGizmoBase.Mode.Translate); InputActions.Add(options => options.RotateMode, () => Editor.MainTransformGizmo.ActiveMode = TransformGizmoBase.Mode.Rotate); @@ -117,6 +112,34 @@ namespace FlaxEditor.Windows InputActions.Add(options => options.LockFocusSelection, () => Editor.Windows.EditWin.Viewport.LockFocusSelection()); InputActions.Add(options => options.Rename, RenameSelection); } + + /// + public override void OnPlayBeginning() + { + base.OnPlayBeginning(); + _blockSceneTreeScroll = true; + } + + /// + public override void OnPlayBegin() + { + base.OnPlayBegin(); + _blockSceneTreeScroll = false; + } + + /// + public override void OnPlayEnding() + { + base.OnPlayEnding(); + _blockSceneTreeScroll = true; + } + + /// + public override void OnPlayEnd() + { + base.OnPlayEnd(); + _blockSceneTreeScroll = true; + } /// /// Enables or disables vertical and horizontal scrolling on the scene tree panel.