Commit graph

662 commits

Author SHA1 Message Date
Rémi Verschelde
f7b9a6a8b1 Merge pull request #100091 from AeioMuch/fix_nodepath_in_history
Add missing cleanup of editor history & set appropriate class icon for object in it
2025-01-08 00:20:58 +01:00
AeioMuch
96e59b99ba Cleanup editor history when opening the history menu popup & set appropriate class icon for object in it. Handle do&undo for selection when reparenting 2025-01-07 23:15:30 +01:00
Yufeng Ying
34d8255947 Force build editor with regex module, remove checking code.
Fix include.

Co-authored-by: Rémi Verschelde <rverschelde@gmail.com>
2025-01-07 19:43:23 +08:00
Rémi Verschelde
ae205b0fc6
Merge pull request #98926 from YeldhamDev/out_all_of_you
Add toggle to hide filtered out parents in the "SceneTree" dock
2025-01-06 22:46:48 +01:00
Michael Alexsander
38ff1500c7
Add toggle to hide filtered out parents in the "SceneTree" dock 2024-12-24 13:43:01 -03:00
A Thousand Ships
a1846b27ea
Improve use of Ref.is_null/valid
Use `is_null` over `!is_valid` and vice versa.
2024-12-23 16:35:02 -05:00
Yufeng Ying
73d85f46c9 Remove unused headers in scene.
Co-authored-by: Thaddeus Crews <repiteo@outlook.com>

Co-authored-by: A Thousand Ships <96648715+AThousandShips@users.noreply.github.com>
2024-12-24 00:40:09 +08:00
Haoyu Qiu
bf4e5cca3f Make editor's shortcut names translated on-site 2024-12-18 13:00:30 +08:00
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
Chaosus
ba39b078f5 [Scene] Add SceneStringName::FlatButton 2024-12-10 11:12:26 +03:00
Thaddeus Crews
68c35f498a
Merge pull request #98232 from dbnicholson/editor-dock-select-root
Fix selecting root node before button released
2024-11-10 12:12:39 -06:00
Aaron Franke
562c666e3d
Rename internal Button icon to button_icon to match exposed methods 2024-10-29 16:23:03 -07:00
Thaddeus Crews
cf313e4492
Merge pull request #96786 from passivestar/spin-slider-focus-fix
Fix EditorSpinSlider blocking viewport from getting focus
2024-10-25 13:03:47 -05:00
bjornmp
06998a3927 Enforce that custom nodes keep their original type
Enforce that custom nodes and resources created via the "Create New Node" dialog, should permanently retain their original type (script). This means:

- Type continuity: It should be impossible for the user to (accidentally) clear the original script of a custom node that was created via the "Create New Node" dialog.

- Extensibility: The user should be able to extend custom types as usual (create a script that inherits the original type and replace the original script of that node with his own). However, if he then clears his extension-script from that node later on, the custom type should revert to its original script instead of becoming a non-scripted type.
2024-10-22 18:18:16 +02:00
Dan Nicholson
b05aab4b33 Fix selecting root node before button released
In order to test if the button press is within the scene tree, the
Tree's coordinates should be used, not the SceneTreeEditor's.
2024-10-16 05:51:08 -06:00
Stijn Hinlopen
06791e1acd New Quick Open Dialog
- Updated list view with thumbnails, and separate file name.
  - Added a grid view which has larger icons.
  - Added toggle to filter out files from addons.
  - Store history for each opened resource type.

New Editor settings for Quick Open:
  - Startup display mode (grid or list):
      - Determined by the requested resource type.
      - Whatever was last used.
  - Toggle to filter out files from addons (for persistence).

Notes
  - The dialog is now created once in EditorNode, and globally available for other components.
  - A fixed number of result scenes are instantiated, and reused based on query.
  - Drop support for multiselect.
2024-10-01 21:39:16 +02:00
Rémi Verschelde
0fd62f7525
Merge pull request #96124 from AeioMuch/check_mouse_pos_inside_inspector
Prevent selecting the hovered node if the mouse is not inside the inspector dock
2024-10-01 17:30:41 +02:00
HolonProduction
03c3c5f608 Set position to zero when saving a positioned branch as scene 2024-09-30 09:43:47 +02:00
Rémi Verschelde
d4735ebd97
Merge pull request #96776 from aXu-AP/detach-script-undo
Make detach script non-destructive operation
2024-09-16 13:34:58 +02:00
A Thousand Ships
dd6443193c
[Editor] Expose more editor settings to documentation
Co-authored-by: Tomasz Chabora <kobewi4e@gmail.com>
2024-09-12 15:34:49 +02:00
Rémi Verschelde
a4e77d94bc
Merge pull request #96539 from KoBeWi/feat_context_menu_plugin4.x_2-electric_boogaloo
Add EditorContextMenuPluginManager and refactor menu plugins
2024-09-11 12:34:53 +02:00
passivestar
16f3d52253 Fix EditorSpinSlider blocking viewport from getting focus 2024-09-10 14:44:47 +04:00
aXu-AP
e4db0bca73 Make detach script non-destructive operation
Fix detach script not returning script's property values on undo.
2024-09-10 10:19:17 +03:00
kit
5e1c9d68aa Extract editor main screen 2024-09-09 11:06:18 -04:00
AeioMuch
5848d72915 Prevent selecting the hovered node if the mouse is not inside the inspector at the end of the drag 2024-09-09 06:50:29 +02:00
Rémi Verschelde
b4dc87db9d
Merge pull request #96189 from SaracenOne/disable_placeholder_toggle
Add Instance Placeholder validation check.
2024-09-08 23:21:41 +02:00
RedMser
8da49ab947 Fix "reparent to new node" when node has internal children 2024-09-06 13:13:40 +02:00
RedMser
b11ccf3c77 Fix "reparent to new node" not remembering index 2024-09-05 18:48:00 +02:00
Rémi Verschelde
de2f50777e
Merge pull request #95343 from Giganzo/unique-name-dialog
Add ConfirmationDialog when clicking on % button in SceneTree
2024-09-04 17:11:46 +02:00
Giganzo
89c009b105 Add ConfirmationDialog when clicking on % button in SceneTree 2024-09-04 12:08:32 +02:00
kobewi
ecc0ab8061 Add EditorContextMenuPluginManager and refactor menu plugins 2024-09-03 23:59:25 +02:00
Rémi Verschelde
d15de6f264
Merge pull request #96292 from AThousandShips/null_check_ref_fix
Cleanup of raw `nullptr` checks with `Ref`
2024-09-03 16:13:55 +02:00
Rémi Verschelde
79da448d5f
Merge pull request #94582 from citizenll/feat_context_menu_plugin4.x
Add support for custom items to editor right-click context menus
2024-09-03 16:13:47 +02:00
citizenl
6b2348adac Add support for custom items to editor right-click context menus 2024-09-03 20:14:14 +08:00
A Thousand Ships
194bdde947
Cleanup of raw nullptr checks with Ref
Using `is_valid/null` over checks with `nullptr` or `ERR_FAIL_NULL` etc.
2024-08-31 15:01:09 +02:00
kleonc
5ae85a4fb9 Fix SceneTreeDock invalid state after trying to remove internal Node 2024-08-28 19:06:50 +02:00
Saracen
fe6762a6c7 Add Instance Placeholder validation check.
Disallow toggling placeholder on editable children
or inherited nodes.
2024-08-27 22:56:23 +01:00
jsjtxietian
b5fa2a3d3a Support opening custom class documentation with "Open Documentation" menu entry 2024-08-27 21:52:07 +08:00
Rémi Verschelde
01b87a9a9c
Merge pull request #95171 from KoBeWi/remove_save
Avoid saving EditorSettings on startup
2024-08-17 00:46:03 +02:00
kobewi
e47ec7eeb0 Avoid saving EditorSettings on startup 2024-08-05 21:14:24 +02:00
Haoyu Qiu
8b3400e634 Don't drop PackedScene as property 2024-08-03 14:43:24 +08:00
AeioMuch
393fb68aea
Fix node gets wrongly selected after moving another node in the tree 2024-07-23 15:16:45 +02:00
iiMidknightii
2bbba84f79 Removed Unique Name Access From Node Moved To Root 2024-07-17 16:17:22 -07:00
Rémi Verschelde
ef3443ef35
Merge pull request #93165 from passivestar/scenetree-shortcut-focus
Prevent node rename shortcut from stealing focus from controls
2024-07-17 11:42:38 +02:00
passivestar
09f967bc00 Prevent node rename shortcut from stealing focus from controls 2024-07-09 16:29:35 +04:00
kobewi
b51d9117ed Fix wrong inspected node after drag&drop 2024-07-08 23:52:16 +02:00
AeioMuch
9eacbf6de7 Fix clear_custom_color on invalid tree_item_inspected 2024-06-28 06:10:49 +02:00
Anni Ryynänen
eed6f4fef4
Fix reselecting scene tree node after inspecting a resource
This broke when the `node_selected` connection was removed in #91435.
Here it's returned, but the emit is removed from `_node_removed`. That
preserves the earlier fix while allowing nodes to be reselected.
2024-06-24 13:17:45 +03:00
Rémi Verschelde
a50b535988
Merge pull request #93110 from Hilderin/fix-signal-panel-after-connection
Fix Can't reopen signals panel immediately after connecting a signal
2024-06-19 10:10:14 +02:00
A Thousand Ships
fbb879debd
[Scene] Add SceneStringNames::text/value_changed 2024-06-19 09:44:38 +02:00