1
0
Fork 0
Commit Graph

637 Commits

Author SHA1 Message Date
Thaddeus Crews 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
Thaddeus Crews 63dff62948
Merge pull request #100673 from RandomShaper/res_duplicate
Overhaul resource duplication
2025-05-27 09:39:25 -05:00
Haoyu Qiu 8d93b6a54c Add translation preview in editor 2025-05-27 07:59:28 +08:00
Fabio Alessandrelli b73ec1fa9b Expose get_rpc_config and get_node_rpc_config 2025-05-27 00:43:21 +02:00
Thaddeus Crews 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
Fabio Alessandrelli c28d5d0058 Revert "Expose get_rpc_config and get_node_rpc_config"
This reverts commit 8835f326b1.
2025-05-26 15:57:38 +02:00
Pedro J. Estébanez 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
Rémi Verschelde c4c28f8f62
Merge pull request #106281 from KoBeWi/false
Fix wrong children range when duplicating node
2025-05-13 01:05:23 +02:00
kobewi 258062e312 Fix wrong children range when duplicating node 2025-05-12 20:21:40 +02:00
lawnjelly 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
Aaron Franke a404b668a1
Change Node set_name to use StringName 2025-05-01 15:15:19 -07:00
Thaddeus Crews 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
Haunted Bees 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
Thaddeus Crews 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
lawnjelly 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
lawnjelly 40c05c69f9 Physics Interpolation - Add editor configuration warnings
* For physics bodies that are on non-interpolated branches
2025-04-20 10:03:04 +01:00
Quentin Quaadgras 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
2750558108 3c745c0315 Replace duplicate code of is_ancestor_of in node.cpp 2025-04-13 14:05:21 +08:00
Priahoud 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
Pāvels Nadtočajevs b106dfd4f9
Base accessibility API. 2025-04-08 20:14:28 +03:00
Yyf2333 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
Thaddeus Crews f09ee0171a
Style: Begin integrating simple `.clangd` fixes 2025-03-22 13:24:35 -05:00
Thaddeus Crews b377562b52
Merge pull request #91660 from AThousandShips/methodinfo_vec
[Core] Use `Vector` for `MethodInfo::arguments`
2025-03-14 10:06:13 -05:00
Hilderin 14b1e40e36 Fix missing binding for NOTIFICATION_WM_POSITION_CHANGED 2025-03-13 16:12:16 -04:00
Thaddeus Crews 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
A Thousand Ships d9721954e6
[Core] Use `Vector` for `MethodInfo::arguments` 2025-03-10 13:57:53 +01:00
Thaddeus Crews 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
kobewi 92ab92114e Don't duplicate internal nodes 2025-03-07 16:08:53 +01:00
Thaddeus Crews e23460ae78
Merge pull request #102585 from KoBeWi/localichangetion
Don't send `TRANSLATION_CHANGED` outside tree
2025-03-05 12:07:50 -06:00
lawnjelly 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
kobewi 1680e9e77f Don't send TRANSLATION_CHANGED outside tree 2025-02-08 16:14:05 +01:00
Robert Yevdokimov 80869063bd Add `ERR_FAIL_COND_MSG` for reparenting to self 2025-02-05 15:15:38 +04: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
AThousandShips ff6eea5042
Prevent infinite recursion in first `_draw` 2024-11-22 17:42:58 +01:00
Danil Alexeev e379cc76e5
Core: Fix `Callable.get_bound_arguments{,_count}()` return incorrect data 2024-11-04 22:41:56 +03:00
Michael Alexsander 16524a8a01
Add "Game" editor for better runtime debugging 2024-10-30 11:42:17 -03:00
A Thousand Ships 203d3be200
[Core] Add way to check if a signal has any connections
Added to `Object` and `Signal`
2024-09-20 16:39:09 +02:00
Haoyu Qiu c5d147b9b5 Allow configuring which translation domain Object.tr uses 2024-09-17 13:09:44 +08:00
Rémi Verschelde 8ebfd89359
Merge pull request #96024 from Ryan-000/expose_get_rpc_config
Expose `get_rpc_config` and `get_node_rpc_config`
2024-09-16 13:34:34 +02:00
Ryan 8835f326b1 Expose get_rpc_config and get_node_rpc_config
add documentation

Update doc/classes/Node.xml

change name of get_node_rpc_config to get_rpc_config

Co-Authored-By: moondog <159832633+dog-on-moon@users.noreply.github.com>
Co-Authored-By: Micky <66727710+Mickeon@users.noreply.github.com>
2024-09-04 15:45:22 -04:00
Sébastien Dunne Fulmer 7563c3a4df
Avoid copying a signal with a Node if the target path is empty 2024-08-31 10:41:19 +01:00
rune-scape 154049ce17 StringName Dictionary keys
also added 'is_string()' method to Variant
and refactored many String type comparisons to use it instead
2024-08-29 13:39:27 -07:00
Rémi Verschelde 6d22b8026d
Merge pull request #90992 from RadiantUwU/fix_node_duplicate
Fix `Node.duplicate()` crash when duplicating a node that cannot be instantiated.
2024-08-19 14:33:31 +02:00
Radiant 70f41e414e Fix node.duplicate, return nullptr if this operation fails. 2024-08-02 16:26:19 +03:00
Ricardo Buring 2f8ab4a654 Fixed Timestep Interpolation (3D)
Adds 3D fixed timestep interpolation to the rendering server.
This does not yet include support for multimeshes or particles.

Co-authored-by: lawnjelly <lawnjelly@gmail.com>
2024-07-07 22:15:23 +02:00
Ricardo Buring ceadbaa299 Fixed Timestep Interpolation: Fix behaviour on pause
Co-authored-by: lawnjelly <lawnjelly@gmail.com>
2024-07-07 16:48:17 +02:00
kobewi bef2e62c88 Fix duplicating nodes with Array properties 2024-06-27 19:17:50 +02:00
Rémi Verschelde 0ec023f101
Merge pull request #92678 from warriormaster12/dup_prop_before_remap_resources
Duplicate properties first before remapping resources
2024-06-18 14:08:39 +02:00
Raul Santos 29bf60cc02
Use GDExtension `to_string` in Node
Matches the `Object::to_string` implementation.
2024-06-11 17:40:51 +02:00
warriormaster12 e4d0d1344b Duplicate properties first before remapping resources 2024-06-02 13:27:35 +03:00
kobewi 59f05ed31a Cleanup unused/underused singleton StringNames 2024-05-14 18:18:29 +02:00
kobewi 413c11357d Use Core/Scene stringnames consistently 2024-05-13 23:41:07 +02:00
A Thousand Ships 2f442ff21a
Fix outdated name for `script` `StringName` 2024-05-13 12:39:41 +02:00
Rémi Verschelde 3bb7fd8ac4
Merge pull request #91329 from warriormaster12/dont-do-things-twice
Fix a performance regression when duplicating a node
2024-05-13 12:05:34 +02:00
warriormaster12 f14455fd3d Fix a performance regression when duplicating a node 2024-05-12 21:43:22 +03:00
kobewi a262d2d881 Add shorthand for using singleton string names 2024-05-11 18:53:08 +02:00
kobewi 5c0f7968e3 Fix crash when adding a child while duplicating a node 2024-05-07 21:56:38 +02:00
A Thousand Ships 955d5affa8
Reduce and prevent unnecessary random-access to `List`
Random-access access to `List` when iterating is `O(n^2)` (`O(n)` when
accessing a single element)

* Removed subscript operator, in favor of a more explicit `get`
* Added conversion from `Iterator` to `ConstIterator`
* Remade existing operations into other solutions when applicable
2024-05-04 16:08:55 +02:00
kobewi 0b877a9962 Expose is_part_of_edited_scene() 2024-04-26 11:49:38 +02:00
ajreckof 248e5bfba2
Revert what needs to be reverted 2024-04-10 09:49:30 +08:00
Ricardo Buring e6b9161246 Fix per-node physics interpolation setting
The per-node default should be ON.
2024-04-05 10:30:19 +02:00
Rémi Verschelde f47f4a02c8
Merge pull request #89992 from ajreckof/fix-my-mistake-with-replace-in-update-scene
Fix node duplication in update after external changes.
2024-04-04 02:53:57 +02:00
ajreckof ae472865d0 fix node duplication in update after external changes. 2024-04-03 12:19:38 +02:00
Rémi Verschelde af08342fd8
Merge pull request #89957 from warriormaster12/regress-dup
Fix regression when duplicating a node with a resource attached
2024-03-28 10:47:39 +01:00
warriormaster12 9533543aa5 Fix duplicating resources regression 2024-03-27 11:51:29 +02:00
Rémi Verschelde 9d8697ab01
Merge pull request #89686 from kleonc/unique-node-names-check-owned-then-in-owner
Always look for unique node names in owner if not found in owned nodes
2024-03-24 01:21:28 +01:00
Rémi Verschelde 1d4907243e
Merge pull request #89628 from twobitadder/whoops_no_internals_pls
Fix crash on `reparent()` with Node containing internal children
2024-03-24 01:19:34 +01:00
Rémi Verschelde e92806c7e7
Merge pull request #88424 from rburing/fti_2d
Physics interpolation (2D)
2024-03-24 01:13:53 +01:00
Ricardo Buring 2ed2ccc2d8 Fixed Timestep Interpolation (2D)
Adds fixed timestep interpolation to the rendering server (2D only).
Switchable on and off with a project setting (default is off).

Co-authored-by: lawnjelly <lawnjelly@gmail.com>
2024-03-23 12:28:36 +01:00
kleonc 95ced4bbdc Always look for unique node names in owner if not found in owned nodes 2024-03-19 22:13:10 +01:00
twobit b9bade8db1 fixes crash on nodes with internal children 2024-03-17 22:44:05 -04:00
warriormaster12 9851c1bdd8 Fix property duplication when duplicating a parent node 2024-03-17 09:57:38 +02:00
Rémi Verschelde c1377920cd
Merge pull request #86743 from Mickeon/autocompletion-optimise-object
Optimise comparisons for Object's `get_argument_options`
2024-03-01 14:56:06 +01:00
Micky cd2032a90b Optimise Object's `get_argument_options` 2024-02-29 18:00:54 +01:00
Markus Sauermann c58607c32f Fix owner when importing meshes
Handle the case correctly, that a child of a replaced node has
as owner an ancestor of the replaced node.
2024-02-26 22:24:57 +01:00
kobewi 75ba837612 Fix inefficient list iteration in Node 2024-02-24 23:18:44 +01:00
Travis Lange ae97cf2ff0
Fix AnimationMixer breaking animations with redundant check
Also change `Node::get_node_and_resource` to prevent it from printing an
error from `Node::get_node`, and just returns nullptr. This is what the
redundant check was trying to prevent.

Fixes #88428.

Co-authored-by: Rémi Verschelde <rverschelde@gmail.com>
2024-02-19 16:50:19 +01:00
Rémi Verschelde ab4c5a594a
Merge pull request #88521 from YeldhamDev/atr_regression
Fix regression in auto translation overhaul
2024-02-19 00:09:22 +01:00
Rémi Verschelde 0f0515a75f
Merge pull request #87743 from WhalesState/camera2d
Fix `Camera2D` is enabled when dragging scene files to the `CanvasItemEditor`
2024-02-19 00:07:57 +01:00
Michael Alexsander b56774b5bf
Fix regression in auto translation overhaul 2024-02-18 19:33:08 -03:00
Mounir Tohami 451b198c40 Fix dragging scene files to the `CanvasItemEditor` 2024-02-18 21:55:14 +02:00
Rémi Verschelde 92fcbe2f5c
Revert "Allow configuration warnings to refer to a property"
This reverts commit bf37a9bac6.
2024-02-17 19:04:18 +01:00
Michael Alexsander 7b42c24550
Make auto translation inheritable 2024-02-15 16:51:19 -03:00
Rémi Verschelde 58a8eb8617
Merge pull request #84824 from Rindbee/fix-double-internal-node
Fix duplicating sub-scene may get two copies of internal node
2024-02-09 12:14:29 +01:00
RedMser bf37a9bac6 Allow configuration warnings to refer to a property
This is used by the inspector so it can show a warning icon on
a specific property.
2024-02-08 23:05:20 +01:00
kobewi 0de8a736da Allow Node.create_tween() outside SceneTree 2024-01-29 20:18:43 +01:00
Rémi Verschelde ef9cb3dfa5
Merge pull request #87535 from Mickeon/scene-tree-configuration-warnings-cleanup
Improve appearance of Node configuration warnings
2024-01-29 13:17:17 +01:00
Micky 3e4e0f08c4 Improve appearance of Node configuration warnings 2024-01-27 13:03:07 +01:00
Yuri Sizov adcfe3d1a0 Merge pull request #87252 from ajreckof/Fix-renaming-a-node-to-the-name-of-its-siblings-breaking-NodePath
Fix renaming a node to the name of its siblings breaking NodePath
2024-01-24 14:08:20 +01:00
Yuri Sizov 28cf7fe2f6 Merge pull request #85384 from HolonProduction/unique-name-completion
Suggest scene unique nodes in `get_node` autocompletion
2024-01-17 18:52:31 +01:00
ajreckof 2f697926b0 Fix renaming a node to the name of its siblings breaking NodePath
Also fix cases where node name was not visually updated because name was not changed

Co-Authored-By: Nông Văn Tình <53887662+nongvantinh@users.noreply.github.com>
2024-01-16 15:18:30 +01:00
Rémi Verschelde f3fc35eb17
Merge pull request #81506 from twobitadder/reparent_keep_owner
Fix `reparent()` losing owner
2024-01-11 17:34:19 +01:00
Micky f996003fb4 Add autocompletion to `get_node_or_null` 2024-01-06 17:33:32 +01:00
Rémi Verschelde fbaab3cf53
Merge pull request #86745 from KoBeWi/internal_error
Ignore internal children when replacing node
2024-01-03 15:48:41 +01:00
Rémi Verschelde 73c5deff76
Merge pull request #82916 from jsjtxietian/update-scene-tree-tooltip-after-editor-description-chnage
Support updating tooltip immediately after editor description change
2024-01-03 15:41:31 +01:00
kobewi cd2edfef25 Ignore internal children when replacing node 2024-01-03 13:04:16 +01:00
风青山 f19c419126 Fix duplicating sub-scene may get two copies of internal node
Previously, internal node might be mistaken for `hidden_root` and be duplicated again.
Exclude those internal nodes to avoid this case, unless the owner is set intentionally.
2023-12-20 18:29:25 +08:00
Stanislav Labzyuk 958699a0c4 Implement project-wide node groups 2023-12-19 18:07:19 +01:00
Yuri Sizov 13305d31b5 Merge pull request #83343 from warriormaster12/node-property-duplication
Fix export variable of type Node pointing to a wrong child node when duplicating
2023-12-08 15:22:59 +01:00
HolonProduction 8cc85515af Suggest scene unique nodes in `get_node` autocompletion 2023-11-26 15:41:29 +01:00