Commit Graph

605 Commits

Author SHA1 Message Date
685c7e92e5 Merge pull request #100437 from KoBeWi/ruaninstancequestionmark
Add `is_instance()` helper method to Node
2025-09-23 12:08:48 -05:00
89c51cb183 Merge pull request #110571 from WhalesState/get-children
Improve `Node::get_children` performance.
2025-09-22 13:28:46 -05:00
149a4b4ca1 Merge pull request #107868 from lawnjelly/quick_ancestry4
Provide quick access to `Object` ancestry
2025-09-20 13:41:39 -05:00
7dc6df3051 Optimize Node::get_children.
Co-authored-by: Lukas Tenbrink <lukas.tenbrink@gmail.com>
2025-09-17 13:31:23 +03:00
7b47f5e8db [Accessibility] Process non-focusable windows (popups, menus) as part of the parent window tree. 2025-08-17 12:15:08 +03:00
254fa6c642 fix releasing the old unique name when renaming a Node
This fixes `Node::set_name()` to release the old unique name before
performing the rename.  #76560 changed the code to update `data.name`
before calling `_release_unique_name_in_owner()`, causing to incorrectly
try releasing the new name instead of the old name.

Fixes #108683
2025-07-16 14:21:50 -07:00
11adf408ab Add is_instance() helper method to Node 2025-07-08 20:42:52 +02:00
2d3dedb12d FTI - Add reset on setting top_level 2025-06-29 17:01:51 +01:00
14a814586a Provide quick access to Object ancestry 2025-06-23 07:11:11 +01:00
6e650163da Add a proper error message when trying to add node to a group with an empty name 2025-06-21 13:58:31 +04:00
e2931a5c19 Make conversions from NodePath to String explicit. 2025-06-11 16:50:27 +02:00
4e20e33e21 Expose Node.can_auto_translate() 2025-06-11 11:26:43 +08:00
6427343ec8 Merge pull request #106660 from bruvzg/ac_node_to_ctl
Move some accessibility properties from Node to Control
2025-06-09 12:31:32 -05:00
40665addbc Bitpack node auto translation values. 2025-06-09 00:03:53 +03:00
aff5b413aa Move some accessibility properties from Node to Control 2025-06-08 16:25:28 +03:00
b0f3c3fa22 Merge pull request #106966 from bruvzg/ac_trans_simpl
[Accessibility] Always auto-translation mode for names/descriptions.
2025-06-02 18:51:49 -05:00
3198b7bea2 [Accessibility] Always auto-translation mode for names/descriptions. 2025-05-30 17:55:27 +03:00
34152b3f39 Remove redundant data.inside_tree 2025-05-28 15:27:59 +02:00
91b3a26438 Merge pull request #106848 from Faless/mp/rpc_config_revert
Expose `get_rpc_config` and `get_node_rpc_config`
2025-05-27 09:39:32 -05:00
63dff62948 Merge pull request #100673 from RandomShaper/res_duplicate
Overhaul resource duplication
2025-05-27 09:39:25 -05:00
8d93b6a54c Add translation preview in editor 2025-05-27 07:59:28 +08:00
b73ec1fa9b Expose get_rpc_config and get_node_rpc_config 2025-05-27 00:43:21 +02:00
f3f76df0cd Merge pull request #103504 from lawnjelly/fti_warn_physics_non_interp4
Physics Interpolation - Add editor configuration warnings
2025-05-26 11:24:39 -05:00
c28d5d0058 Revert "Expose get_rpc_config and get_node_rpc_config"
This reverts commit 8835f326b1.
2025-05-26 15:57:38 +02:00
342266cfd9 Overhaul Variant::duplicate() for resources
This in the scope of a duplication triggered via any type in the `Variant` realm. that is, the following: `Variant` itself, `Array` and `Dictionary`. That includes invoking `duplicate()` from scripts.

A `duplicate_deep(deep_subresources_mode)` method is added to `Variant`, `Array` and `Dictionary` (for compatibility reasons, simply adding an extra parameter was not possible). The default value for it is `RESOURCE_DEEP_DUPLICATE_NONE`, which is like calling `duplicate(true)`.

Remarks:
- The results of copying resources via those `Variant` types are exactly the same as if the copy were initiated from the `Resource` type at C++.
- In order to keep some separation between `Variant` and the higher-level animal which is `Resource`, `Variant` still contains the original code for that, so it's self-sufficient unless there's a `Resource` involved. Once the deep copy finds a `Resource` that has to be copied according to the duplication parameters, the algorithm invokes the `Resource` duplication machinery. When the stack is unwind back to a nesting level `Variant` can handle, `Variant` duplication logic keeps functioning.

While that is good from a responsibility separation standpoint, that would have a caveat: `Variant` would not be aware of the mapping between original and duplicate subresources and so wouldn't be able to keep preventing multiple duplicates.

To avoid that, this commit also introduces a wormwhole, a sharing mechanism by which `Variant` and `Resource` can collaborate in managing the lifetime of the original-to-duplicates map. The user-visible benefit is that the overduplicate prevention works as broadly as the whole `Variant` entity being copied, including all nesting levels, regardless how disconnected the data members containing resources may be across al the nesting levels. In other words, despite the aforementioned division of duties between `Variant` and `Resource` duplication logic, the duplicates map is shared among them. It's created when first finding a `Resource` and, however how deep the copy was working at that point, the map kept alive unitl the stack is unwind to the root user call, until the first step of the recursion.

Thanks to that common map of duplicates, this commit is able to fix the issue that `Resource::duplicate_for_local_scene()` used to ignore overridden duplicate logic.
2025-05-26 10:06:40 +02:00
c4c28f8f62 Merge pull request #106281 from KoBeWi/false
Fix wrong children range when duplicating node
2025-05-13 01:05:23 +02:00
258062e312 Fix wrong children range when duplicating node 2025-05-12 20:21:40 +02:00
795ed8fd12 Faster Node::get_child_count()
There is no need to update the children cache when including internal nodes in the count.
2025-05-10 11:35:59 +01:00
a404b668a1 Change Node set_name to use StringName 2025-05-01 15:15:19 -07:00
70ff5770c9 Merge pull request #83757 from HauntedBees/master
Add `Node.get_orphan_node_ids`, edit `Node.print_orphan_nodes`
2025-04-29 11:24:08 -05:00
0ccdcb4a16 added list_orphan_nodes, edited print_orphan_nodes
print_orphan_nodes now prints the script file attached to the node.
list_orphan_nodes was created to return the same data as print_orphan_nodes in a dictionary format for users who wish to process this data differently than the print_orphan_nodes behavior.
2025-04-28 20:33:01 -07:00
b7d4426fff Merge pull request #104269 from lawnjelly/fti_scene_tree4
Physics Interpolation - Move 3D FTI to `SceneTree`
2025-04-28 10:01:34 -05:00
ae04a3a5dd Physics Interpolation - Move 3D FTI to SceneTree
Moves 3D interpolation from server to the client code (`SceneTree`).
Complete rework of 3D physics interpolation, but using the same user API.
2025-04-26 14:13:30 +01:00
40c05c69f9 Physics Interpolation - Add editor configuration warnings
* For physics bodies that are on non-interpolated branches
2025-04-20 10:03:04 +01:00
23ffdd79e8 fix gdextension Object/Node::to_string to check is_valid before returning the result
at best, this results in an empty string, at worst, the result is never
initialised when is_valid is false.
2025-04-19 10:45:12 +12:00
3c745c0315 Replace duplicate code of is_ancestor_of in node.cpp 2025-04-13 14:05:21 +08:00
bf963e767e Add Options, Functions and Settings to convert Node-Names and Strings to kebab-case
- refactored and renamed String::_camelcase_to_underscore to String:_separate_compound_words
- refactored String::to_snake_case to work with the refactored String::_separate_compound_words
- created char_utils::is_hyphen to catch all hyphen variants in kebab-case conversion
- created String::to_kebab_case using the new String::_separate_compound_words
- created corresponding Documentation in String and StringName
- simplified both switch statements in EditorNode and ProjectDialog
- added new kebab-casing Option for Node Names in ProjectSettings
- added missing camelCase Options to Scene- and Node-Names in ProjectSettings
- simplified Mono RuntimeInterop Functions
- hooked up the ConnectionsDialog
- created additional Unit Tests
2025-04-10 21:22:21 +02:00
b106dfd4f9 Base accessibility API. 2025-04-08 20:14:28 +03:00
22b5ec17fb Using iterator pattern instead of List::Element *.
Co-authored-by: Adam Scott <ascott.ca@gmail.com>
2025-03-28 13:29:15 +08:00
f09ee0171a Style: Begin integrating simple .clangd fixes 2025-03-22 13:24:35 -05:00
b377562b52 Merge pull request #91660 from AThousandShips/methodinfo_vec
[Core] Use `Vector` for `MethodInfo::arguments`
2025-03-14 10:06:13 -05:00
14b1e40e36 Fix missing binding for NOTIFICATION_WM_POSITION_CHANGED 2025-03-13 16:12:16 -04:00
7d677fe761 Merge pull request #96372 from CreatedBySeb/fix-signal-copying
Fix copying a Node with a signal potentially resulting in an Editor crash
2025-03-11 09:35:01 -05:00
d9721954e6 [Core] Use Vector for MethodInfo::arguments 2025-03-10 13:57:53 +01:00
77022096ef Merge pull request #102451 from ryevdokimov/add-fail-cond-msg-reparent-self
Add `ERR_FAIL_COND_MSG` for reparenting to self
2025-03-07 15:12:35 -06:00
92ab92114e Don't duplicate internal nodes 2025-03-07 16:08:53 +01:00
e23460ae78 Merge pull request #102585 from KoBeWi/localichangetion
Don't send `TRANSLATION_CHANGED` outside tree
2025-03-05 12:07:50 -06:00
e46993f0db Physics Interpolation - Auto-reset on set_physics_interpolation_mode()
Fixes historical bug where auto-reset wasn't working correctly.
Also fixes process modes on Cameras when mode is changed.
2025-02-10 10:19:54 +00:00
1680e9e77f Don't send TRANSLATION_CHANGED outside tree 2025-02-08 16:14:05 +01:00
80869063bd Add ERR_FAIL_COND_MSG for reparenting to self 2025-02-05 15:15:38 +04:00