behaviour-tree-test/editor/gui
HP van Braam 6f7525c396 Improve Scene Tree editor performance
We now cache the Node*<>TreeItem* mapping in the SceneTreeEditor. This
allows us to make targeted updates to the Tree used to display the scene
tree in the editor.

Previously on almost all changes to the scene tree the editor would
rebuild the entire widget, causing a large number of deallocations an
allocations. We now carefully manipulate the Tree widget in-situ saving
a large number of these allocations.

In order to know what Nodes need to be updated we add a
editor_state_changed signal to Node, this is a TOOLS_ENABLED,
editor-only signal fired when changes to Node happen that are relevant
to editor state.

We also now make sure that when nodes are moved/renamed we don't check
expensive properties that cannot contain NodePaths. This saves a lot of
time when SceneTreeDock renames a node in a scene with a lot of
MeshInstances. This makes renaming nodes go from ~27 seconds to ~2
seconds on large scenes.

SceneTreeEditor instances will now also not do all of the potentially
expensive update work if they are invisible. This behavior is turned off
by default so it won't affect existing users. This change allows the
editor to only update SceneTreeEditors that actually in view. In
practice this means that for most changes instead of updating 6
SceneTreeEditors we only update 1 instantly, and the others only when
they become visible.

There is definitely more that could be done, but this is already a
massive improvement. In complex scenes we see an improvement of 10x,
things that used to take ~30 seconds now only take 2.

This fixes #83460

I want to thank KoBeWi, TokisanGames, a-johnston, aniel080400 for
their tireless testing. And AeioMuch for their testing and providing a
fix for the hover issue.
2024-12-12 22:47:05 +01:00
..
editor_bottom_panel.cpp Add a lock toggle to prevent involuntary bottom editor switching 2024-11-11 12:09:57 -03:00
editor_bottom_panel.h Add a lock toggle to prevent involuntary bottom editor switching 2024-11-11 12:09:57 -03:00
editor_dir_dialog.cpp Unify make dir and duplicate dialogs 2024-10-02 14:57:37 +02:00
editor_dir_dialog.h Unify make dir and duplicate dialogs 2024-10-02 14:57:37 +02:00
editor_file_dialog.cpp [Scene] Add SceneStringName::FlatButton 2024-12-10 11:12:26 +03:00
editor_file_dialog.h Fix UI inconsistencies in EditorFileDialog's toolbar 2024-12-05 16:56:59 +08:00
editor_object_selector.cpp Show correct icons in EditorDebuggerRemoteObject 2024-10-15 16:40:16 -04:00
editor_object_selector.h Remove empty bind_methods() 2024-08-15 08:24:32 +02:00
editor_quick_open_dialog.cpp [Scene] Add SceneStringName::hover 2024-12-11 11:11:25 +03:00
editor_quick_open_dialog.h Add fuzzy string matching to quick open search 2024-10-28 11:24:36 -07:00
editor_run_bar.cpp Rename internal Button icon to button_icon to match exposed methods 2024-10-29 16:23:03 -07:00
editor_run_bar.h New Quick Open Dialog 2024-10-01 21:39:16 +02:00
editor_scene_tabs.cpp Rename internal Button icon to button_icon to match exposed methods 2024-10-29 16:23:03 -07:00
editor_scene_tabs.h
editor_spin_slider.cpp Use SceneStringName in more places 2024-12-02 14:39:16 +01:00
editor_spin_slider.h Fix EditorSpinSlider blocking viewport from getting focus 2024-09-10 14:44:47 +04:00
editor_title_bar.cpp [macOS] Use native window drag for the custom editor title bars. 2024-12-02 17:40:27 +02:00
editor_title_bar.h Style: Apply new clang-format changes 2024-09-20 08:09:48 -05:00
editor_toaster.cpp Add copy to toast notification 2024-11-30 14:51:50 -05:00
editor_toaster.h Add copy to toast notification 2024-11-30 14:51:50 -05:00
editor_validation_panel.cpp Center the label of EditorValidationPanel 2024-06-24 15:22:02 +04:00
editor_validation_panel.h
editor_version_button.cpp Unify editor version buttons 2024-09-28 23:26:23 +08:00
editor_version_button.h Unify editor version buttons 2024-09-28 23:26:23 +08:00
editor_zoom_widget.cpp [Scene] Add SceneStringName::hover 2024-12-11 11:11:25 +03:00
editor_zoom_widget.h
scene_tree_editor.cpp Improve Scene Tree editor performance 2024-12-12 22:47:05 +01:00
scene_tree_editor.h Improve Scene Tree editor performance 2024-12-12 22:47:05 +01:00
SCsub SCons: Add unobtrusive type hints in SCons files 2024-09-25 09:34:35 -05:00