summaryrefslogtreecommitdiff
path: root/modules/multiplayer
diff options
context:
space:
mode:
authorFabio Alessandrelli <fabio.alessandrelli@gmail.com>2023-02-20 14:46:39 +0100
committerFabio Alessandrelli <fabio.alessandrelli@gmail.com>2023-02-20 14:46:39 +0100
commit522bddf63d83e51b35172afa3400b4aaade9b112 (patch)
tree1c877ee786e32852da92f32c6650e3f32852b89c /modules/multiplayer
parent6f64349bfe42b795a6c50e9c2093d38e7a992e7a (diff)
[MP] Add a "synchronized" signal to MultiplayerSynchronized.
Emitted upon receiving a valid sync packet after setting the variables state.
Diffstat (limited to 'modules/multiplayer')
-rw-r--r--modules/multiplayer/doc_classes/MultiplayerSynchronizer.xml5
-rw-r--r--modules/multiplayer/multiplayer_synchronizer.cpp1
-rw-r--r--modules/multiplayer/scene_replication_interface.cpp1
3 files changed, 7 insertions, 0 deletions
diff --git a/modules/multiplayer/doc_classes/MultiplayerSynchronizer.xml b/modules/multiplayer/doc_classes/MultiplayerSynchronizer.xml
index af7c345f15..717906bd2b 100644
--- a/modules/multiplayer/doc_classes/MultiplayerSynchronizer.xml
+++ b/modules/multiplayer/doc_classes/MultiplayerSynchronizer.xml
@@ -69,6 +69,11 @@
</member>
</members>
<signals>
+ <signal name="synchronized">
+ <description>
+ Emitted when a new synchronization state is received by this synchronizer after the variables have been updated.
+ </description>
+ </signal>
<signal name="visibility_changed">
<param index="0" name="for_peer" type="int" />
<description>
diff --git a/modules/multiplayer/multiplayer_synchronizer.cpp b/modules/multiplayer/multiplayer_synchronizer.cpp
index 10714db6df..458b6a664a 100644
--- a/modules/multiplayer/multiplayer_synchronizer.cpp
+++ b/modules/multiplayer/multiplayer_synchronizer.cpp
@@ -268,6 +268,7 @@ void MultiplayerSynchronizer::_bind_methods() {
BIND_ENUM_CONSTANT(VISIBILITY_PROCESS_PHYSICS);
BIND_ENUM_CONSTANT(VISIBILITY_PROCESS_NONE);
+ ADD_SIGNAL(MethodInfo("synchronized"));
ADD_SIGNAL(MethodInfo("visibility_changed", PropertyInfo(Variant::INT, "for_peer")));
}
diff --git a/modules/multiplayer/scene_replication_interface.cpp b/modules/multiplayer/scene_replication_interface.cpp
index 68b6bc4a24..c1d45636f1 100644
--- a/modules/multiplayer/scene_replication_interface.cpp
+++ b/modules/multiplayer/scene_replication_interface.cpp
@@ -775,6 +775,7 @@ Error SceneReplicationInterface::on_sync_receive(int p_from, const uint8_t *p_bu
err = MultiplayerSynchronizer::set_state(props, node, vars);
ERR_FAIL_COND_V(err, err);
ofs += size;
+ sync->emit_signal(SNAME("synchronized"));
#ifdef DEBUG_ENABLED
_profile_node_data("sync_in", sync->get_instance_id(), size);
#endif