Commit graph

89 commits

Author SHA1 Message Date
Fabio Alessandrelli 61cf7d180c [MP] Optimize multiplayer NodePath caching
Only use paths during network transfer.
Use ObjectID instead of NodePaths for storing the Node <-> NetID
relations locally.
2023-10-10 14:42:48 +02:00
A Thousand Ships 517e9f8aef [Modules] Replace ERR_FAIL_COND with ERR_FAIL_NULL where applicable 2023-09-26 16:44:52 +02:00
Yuri Sizov 4bd569be95 Replace flat buttons with flat-styled buttons with a visible pressed state 2023-09-19 22:36:29 +02:00
Yuri Sizov 8ecc0c4f47 Fix accessing editor theme items throughout the UI
This also exposes `EditorInterface::get_editor_theme`.
2023-09-15 14:51:01 +02:00
Yuri Sizov d8ff69d53c Extract ScriptInstance to simplify includes
This allows to include script_instance.h directly in the
generated gdvirtual.gen.inc, and remove excessive includes
from the codebase.

This should also allow Resource to use GDVIRTUAL macros,
which wasn't possible previously due to a circular dependency.
2023-09-06 22:54:38 +02:00
kobewi 6de34fde27 Add EditorStringNames singleton 2023-09-03 19:58:18 +02:00
Fabio Alessandrelli c1c6911b5c [MP] Improve ReplicationEditor UX
Use an option button for the replication mode making sync and watch (now
"Always" and "On Change") mutually exclusive.
2023-08-30 15:37:42 +02:00
Fabio Alessandrelli 711e96edc4 [MP] Make replication mode an enum + optimizations
REPLICATION_MODE_ALWAYS (sync) and REPLICATION_MODE_ON_CHANGE (watch)
are now mutually exclusive.

Prevent invalid NodePath from being added to the config.

Optimize the replication config loading by composing the lists on
demand.
2023-08-30 15:00:39 +02:00
the-sink 8f80ebc035 Allow enter key to add properties to replication editor list 2023-08-29 19:29:01 -07:00
Fabio Alessandrelli 3860f2e366 [MP] Fix watch properties not being correctly removed 2023-08-27 10:53:04 +02:00
Fabio Alessandrelli b6dc799e64 [MP] Use get/set indexed in MultiplayerSynchronizer
Allows synchronizing (sub-)resource properties, transform components,
etc. by using subnames.

As an example, `.:transform.x` will only synchronize the `x` component
of the root transform instead of the whole transform.

This can also be used to synchronize a resource own properties, as long
as they are synchronizable (i.e. the property itself is not an Object,
RID, or Callable).
2023-07-14 20:50:55 +02:00
Rémi Verschelde 81064cc239
Doctool: Remove version attribute from XML header
We don't use that info for anything, and it generates unnecessary diffs
every time we bump the minor version (and CI failures if we forget to
sync some files from opt-in modules (mono, text_server_fb).
2023-07-06 10:08:21 +02:00
Rémi Verschelde 346f1ab86b
Bump version to 4.2-dev
Keep on waitin'
2023-07-05 22:07:03 +02:00
Fabio Alessandrelli 91004df875 [MP] Fix delta variables index decoding. 2023-06-26 12:33:30 +02:00
Ninni Pipping 982ca52e4c Fix MultiplayerSpawner documentation 2023-06-23 10:26:33 +02:00
Fabio Alessandrelli 2d19cec174
Merge pull request #78409 from AThousandShips/spawn_func_fix
Do not serialize `MultiplayerSpawner.spawn_function`
2023-06-23 10:13:11 +02:00
Ninni Pipping 9159208ed1 Ensure RID, Callable, and Signal are stored as strings
Prevents parser errors in `.tscn` and `.tres` files where the assignment
would otherwise be empty.
2023-06-22 17:01:08 +02:00
L4Vo5 01f887ee4f Clarify when things with _IDLE and _PHYSICS enums will run 2023-06-20 13:25:26 -03:00
Ninni Pipping 6f6999221d Do not serialize MultiplayerSpawner.spawn_function 2023-06-18 17:58:47 +02:00
Rémi Verschelde 25b2f1780a
Style: Harmonize header includes in modules
This applies our existing style guide, and adds a new rule to that style
guide for modular components such as platform ports and modules:

Includes from the platform port or module ("local" includes) should be listed
first in their own block using relative paths, before Godot's "core" includes
which use "absolute" (project folder relative) paths, and finally thirdparty
includes.

Includes in `#ifdef`s come after their relevant section, i.e. the overall
structure is:

- Local includes
  * Conditional local includes
- Core includes
  * Conditional core includes
- Thirdparty includes
  * Conditional thirdparty includes
2023-06-15 14:35:45 +02:00
Fabio Alessandrelli 45456f89a2 [MP] Fix crash when sending multiple delta variants. 2023-06-11 13:43:49 +02:00
RedworkDE 42ca35cfd7 Fix more issues with code tags in class reference 2023-05-29 15:46:34 +02:00
Ninni Pipping f69fba0d65 Add restrictions to MultiplayerSynchronizer editor and documentation 2023-05-24 09:37:11 +02:00
Fabio Alessandrelli f1e0d50841 [MP] Implement "watched" properties.
Checked at "delta_interval" (default = every frame), synchronized
(reliably) if changes are detected.
2023-05-24 05:21:41 +02:00
Yuri Sizov 391eccca76 Validate code tags in documentation for potential params
Adds a check to make_rst to look for matches
between the text inside of the [code][/code] tag
and known param identifiers.
Fixes most of what was revealed.
2023-04-26 21:36:04 +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
Yuri Sizov 9b500ab53c Fix premature theme item access in editor tools 2023-04-03 18:01:11 +02:00
Mai Lavelle 74edbdd4bc Fixups to list handling in SceneReplicationConfig
Wrong paths were being inserted leading to duplicates / missed properties.
2023-03-07 09:41:42 -05:00
Rémi Verschelde 1c1524a651
Bump version to 4.1-dev
Can't stop, won't stop, they said, huh?
2023-03-01 01:44:37 +01:00
Rémi Verschelde 491ded1898
Minor typo and docs URL fixes 2023-02-28 13:38:01 +01:00
Fabio Alessandrelli 72f5bbde82 [MP] Fix replication config not updating sync/spawn props from code. 2023-02-23 10:03:19 +01:00
Fabio Alessandrelli 522bddf63d [MP] Add a "synchronized" signal to MultiplayerSynchronized.
Emitted upon receiving a valid sync packet after setting the variables
state.
2023-02-20 14:46:39 +01:00
baptr 2eadbe7b78 Fix multiplayer replication crash in on_sync_receive.
A number of early continue cases applied the packet-provided `size`
without validation, allowing large uint32_t values to be treated as
negative offsets and leading to segfaults.

Now, we validate `size` against the buffer length immediately to avoid a
crash.

This could be triggered by receiving sync data for a synchronizer who's
root node had just been removed, since the code path that checked for
unusable sync state failed to advance the offset. Thus the next read
could interpret part of the payload as such an invalid `size`.

Now, we properly advance the read offset in that case (and raise a
better error).
2023-02-14 02:46:32 -08:00
Fabio Alessandrelli a77820ade0 [MP] Fix MultiplayerSpawner not connecting to child_entered_tree.
The connection used to happen during enter_tree, but this was causing
issues when setting the spawnable scenes from code.

The spawner now connects/disconnects to the signal during
add_spawnable_scene/clear_spawnable_scenes if the node is inside tree
and has a valid spawn_path.
2023-02-12 15:32:09 +01:00
Haoyu Qiu a40ccc2d7e Improve some editor strings for localization 2023-02-09 19:32:02 +08:00
Rémi Verschelde 5b1df48c6c
Convert en_GB spelling to en_US with codespell 2023-01-23 11:02:20 +01:00
Rémi Verschelde bcaf048f33
Merge pull request #71379 from KoBeWi/destruction_of_compatibility_function
Remove set_drag_forwarding_compat()
2023-01-18 17:40:13 +01:00
Fabio Alessandrelli ad3a4214c5 [MP] Fix nested spawning during "ready".
We want our spawns to be notified after ready, but we need to notify
them in the order they entered tree, so that nested spawners can be used
during "ready" (instead of having to await a frame).
2023-01-17 04:22:07 +01:00
kobewi b58111588a Add EditorUndoRedoManager singleton 2023-01-16 01:11:52 +01:00
kobewi 59ea36b87c Remove set_drag_forwarding_compat() 2023-01-14 15:16:51 +01:00
Rémi Verschelde 54688a7535
Merge pull request #71127 from reduz/drag-forward-to-callables
Change set_drag_forwarding() to use callables.
2023-01-11 01:14:58 +01:00
Juan Linietsky e6a4debede Change set_drag_forwarding() to use callables.
* This solution is much cleaner than the one in 3.x thanks to the use of callables.
* Works without issues in any language (no need to worry about camel or snake case).
* Editor code uses a compatibility function (too much work to redo).

Fixes #59899
2023-01-10 14:09:24 +01:00
Rémi Verschelde 4d4fcd0a6f
Merge pull request #70721 from Faless/mp/4.x_fix_relay_option
[MP] Fix server_relay being unsettable.
2023-01-09 23:09:53 +01:00
Fabio Alessandrelli 566c48f193 [MP] Convert _spawn_custom to a Callable property.
Renamed to "spawn_function".
Allow both custom spawn and auto spawn list to co-exist.

This makes it possible to implement custom spawn without being forced to
attach a script to MultiplayerSpawner directly.
2023-01-09 21:04:40 +01: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
Fabio Alessandrelli d123b01e86 [MP] Fix server_relay being unsettable.
Clarify nuance in the docs.
2022-12-29 23:15:26 +01:00
Rémi Verschelde 907298d673
Merge pull request #68747 from rune-scape/rune-stringname-unification
GDScript: Unify StringName and String
2022-12-09 18:06:48 +01:00
Haoyu Qiu 80ccd46dcd Use capitalized ID in the doc 2022-12-08 09:40:49 +08:00
rune-scape e79be6ce07 Unify String and StringName 2022-12-05 21:46:47 -05:00