Commit graph

148 commits

Author SHA1 Message Date
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
Michael Alexsander
38ff1500c7
Add toggle to hide filtered out parents in the "SceneTree" dock 2024-12-24 13:43:01 -03: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
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
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
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
RedMser
b11ccf3c77 Fix "reparent to new node" not remembering index 2024-09-05 18:48:00 +02:00
kobewi
ecc0ab8061 Add EditorContextMenuPluginManager and refactor menu plugins 2024-09-03 23:59:25 +02:00
kobewi
e47ec7eeb0 Avoid saving EditorSettings on startup 2024-08-05 21:14:24 +02:00
Rémi Verschelde
553f77674c
Merge pull request #91265 from AeioMuch/fix_drop_reparent
Fix reparenting after hover delay
2024-06-10 16:11:34 +02:00
AeioMuch
829bedcadb Fix reparent when hovering after delay 2024-05-31 14:27:41 +02:00
Haoyu Qiu
e5c321448e Create AudioStreamPlayer when dropping AudioStream
- Create AudioStreamPlayer if dropped in between nodes in the Scene dock
- Create AudioStreamPlayer2D if dropped into 2D editor
- Create AudioStreamPlayer3D if dropped into 3D editor
2024-05-19 20:26:04 +08:00
ajreckof
48a6476861 Fix going forward backward in editor selection history. 2024-04-14 17:21:11 +02:00
AeioMuch
0ba1adfaf9 Inspect hovered node while dragging 2024-04-10 17:15:13 +02:00
Muller-Castro
1638c1b28f Add const lvalue ref to editor/* container parameters 2024-02-26 15:28:15 -03:00
Bitlytic
f9e03459e8
Add an option to center children around the new parent when reparenting 2024-02-14 13:46:04 +01:00
passivestar
97a77c5193 Add support for search shortcut to all docks 2024-01-22 22:37:59 +04:00
SaracenOne
cb8a743e18
Fix behavior of 'Editable Children' toggle.
Prevents losing nodes owned by the edited scene when
toggling editable_children off on an instanced scene,
and makes the toggle compatible with undo-redo.
2024-01-09 13:34:38 +01:00
Rémi Verschelde
df8b7fee81
Merge pull request #82802 from marcinn/fix-82756-prevent-saving-children-without-owner
Fix saving branch as scene saves children without owner set
2024-01-03 15:40:37 +01:00
Invertex
59787683a9 Added "Show In FileSystem" right-click option to Scene hierarchy nodes.
-Implemented shared function for focusing FileSystem tab and highlighting the node path.
-Created right-click option that shows up in the Scene-Hierarchy on Nodes that have a file-system source path.
-Created custom icon for this right-click option
-Implemented the shared function and icon for other places that already had this features (Open Node tab, Inspector Resource)

Co-authored-by: MewPurPur <mew.pur.pur@gmail.com>
2023-12-13 07:43:39 -08:00
Marcin Nowak
561fcf54a4 Fix #82756: Save branch as scene saves children without owner set 2023-11-16 01:14:04 +01:00
Yuri Sizov
8b11ae9cf5 Merge pull request #83596 from SaracenOne/node_copy_paste_fix
Fix ownership bugs in node copy and pasting.
2023-11-06 13:23:03 +01:00
Saracen
26576cc210 Fix ownership bugs in node copy and pasting. 2023-11-04 20:14:09 +00:00
Rémi Verschelde
f41e07bfe6
Merge pull request #81737 from Mickeon/fix-connection-inherited-packed-scene
Fix internal `CONNECT_INHERITED` being saved in PackedScene & Make Local
2023-10-24 10:53:37 +02:00
kobewi
a5c984412c Don't try updating wrong NodePaths in resources 2023-10-13 13:31:13 +02:00
Micky
021d92fece Fix internal CONNECT_INHERITED being saved in PackedScene & Make Local 2023-10-03 15:03:55 +02:00
Rémi Verschelde
016621f51d
Merge pull request #79467 from Calinou/editor-add-paste-as-sibling
Add a shortcut to paste nodes as sibling of the selected node
2023-08-07 14:47:27 +02:00
Yuri Sizov
e4b8dc81b8 Merge pull request #78300 from ajreckof/fix-replace-node-destroying-Node-properties
Auto-update properties when replacing a node
2023-08-03 22:37:40 +02:00
ajreckof
4da9927faf Fix replace node deleting Node properties.
Update editor/scene_tree_dock.cpp

Co-Authored-By: Hugo Locurcio <hugo.locurcio@hugo.pro>
2023-08-03 18:38:24 +02:00
Chia-Hsiang Cheng
e0cbbe4bbd Avoid duplicating the 'Filters' section 2023-07-23 12:14:28 +08:00
Hugo Locurcio
c0e3dc55ba
Add a shortcut to paste nodes as sibling of the selected node
This makes quick pasting jobs easier when you don't want a heavily
nested structure, by pressing Ctrl + Shift + V (Cmd + Shift + V on macOS)
instead of Ctrl + V (Cmd + V on macOS).
2023-07-14 17:35:23 +02:00
kobewi
36b4ed4fa4 Prompt to confirm anim track delete on node delete 2023-04-25 17:55:05 +02:00
Yuri Sizov
49d7041d34 Decouple EditorInterface from EditorPlugin
- Simplify some includes in the process.
- Also exposes EditorInterface.movie_maker_enabled as a property.
2023-04-17 21:59:09 +02:00
Yuri Sizov
4154039832 Improve includes of EditorNode (and everything else)
Also start organizing editor-specific GUI components
into a dedicated folder, `editor/gui`.
Also move `editor_file_server` next to the rest of debugger classes.
2023-04-07 18:59:49 +02:00
kobewi
5a99304251 Add a list of all sub-resources used in the scene 2023-04-05 21:01:49 +02:00
Rémi Verschelde
d95794ec8a
One Copyright Update to rule them all
As many open source projects have started doing it, we're removing the
current year from the copyright notice, so that we don't need to bump
it every year.

It seems like only the first year of publication is technically
relevant for copyright notices, and even that seems to be something
that many companies stopped listing altogether (in a version controlled
codebase, the commits are a much better source of date of publication
than a hardcoded copyright statement).

We also now list Godot Engine contributors first as we're collectively
the current maintainers of the project, and we clarify that the
"exclusive" copyright of the co-founders covers the timespan before
opensourcing (their further contributions are included as part of Godot
Engine contributors).

Also fixed "cf." Frenchism - it's meant as "refer to / see".
2023-01-05 13:25:55 +01:00
trollodel
c90d0bd84f Use forward-declarations in big editor classes 2022-11-29 09:59:43 +01:00
trollodel
ba9e619b51 Use forward-declarations in EditorPlugin where possible 2022-11-11 20:25:51 +01:00
Micky
33092b6f45 Expose and warn about Node Filters in Scene Tree Dock
Adds "Filter by Type" and "Filter by Group" in the Scene Tree Dock's MenuButton.
Hovering on them displays an useful tooltip.
When selecting these items, the matching parameter is appended to the terms, and the caret is automatically brought to the end.

When typing a filter that cannot be identified, a warning icon is displayed. The reason is explained as a tooltip.

The same options are also quickly available by right-clicking or middle-clicking in the text field.
2022-10-06 13:36:40 +02:00
Rémi Verschelde
f37143b20a Merge pull request #65933 from Mickeon/remove-scene-tree-dock-unused
Remove unused `import_subscene()` in Scene Tree Dock
2022-09-21 18:55:39 +02:00
Ninni Pipping
df9eaf5f47 Tree recursive folding 2022-09-21 13:28:29 +02:00
Micky
976ec5f94a Remove unused import_subscene() in Scene Tree Dock 2022-09-16 22:30:39 +02:00
kobewi
80c78387a2 Remove pathed get_node() use from scene tree dock 2022-09-03 23:10:07 +02:00
Rémi Verschelde
90019676b0 Code quality: Fix header guards consistency
Adds `header_guards.sh` bash script, used in CI to validate future
changes. Can be run locally to fix invalid header guards.
2022-07-25 11:17:40 +02:00
kobewi
ec6bbd486f Don't handle pending clicks outside scene tree 2022-06-10 15:14:31 +02:00
Rémi Verschelde
3c9cc7914a
Merge pull request #61162 from KoBeWi/drag_nodes_like_a_boss 2022-05-23 22:08:03 +02:00
reduz
45af29da80 Add a new HashSet template
* Intended to replace RBSet in most cases.
* Optimized for iteration speed
2022-05-20 22:40:38 +02:00
kobewi
95bbffff48 Only switch to node when not dragging it 2022-05-18 23:25:32 +02:00
reduz
746dddc067 Replace most uses of Map by HashMap
* Map is unnecessary and inefficient in almost every case.
* Replaced by the new HashMap.
* Renamed Map to RBMap and Set to RBSet for cases that still make sense
  (order matters) but use is discouraged.

There were very few cases where replacing by HashMap was undesired because
keeping the key order was intended.
I tried to keep those (as RBMap) as much as possible, but might have missed
some. Review appreciated!
2022-05-16 10:37:48 +02:00
Hugo Locurcio
180e5d3028
Remove RES and REF typedefs in favor of spelled out Ref<>
These typedefs don't save much typing compared to the full `Ref<Resource>`
and `Ref<RefCounted>`, yet they sometimes introduce confusion among
new contributors.
2022-05-03 01:43:50 +02:00