summaryrefslogtreecommitdiffstats
path: root/core/io/multiplayer_api.cpp
diff options
context:
space:
mode:
authorFabio Alessandrelli <fabio.alessandrelli@gmail.com>2019-01-15 11:14:51 +0100
committerFabio Alessandrelli <fabio.alessandrelli@gmail.com>2019-01-15 11:14:51 +0100
commit60d235622d13b8126001e61da096ca48244c2733 (patch)
tree7f013580e878bee1ce0d1da2c34611e0bc5c3fe6 /core/io/multiplayer_api.cpp
parent1f7846abf8e2c3ec132426ef4d9c785297614244 (diff)
downloadredot-engine-60d235622d13b8126001e61da096ca48244c2733.tar.gz
Don't reset MultiplayerAPI when setting same peer.
A GDScript call to: `multiplayer.network_peer.some_prop = true` seems to transalte to: ``` var temp = multiplayer.network_peer temp.some_prop = true multiplayer.network_peer = temp ``` Which caused the MultiplayerAPI to be resetted. The call to set_network_peer is now ignored if the peer that's beeing set is the same as the currently set one.
Diffstat (limited to 'core/io/multiplayer_api.cpp')
-rw-r--r--core/io/multiplayer_api.cpp2
1 files changed, 2 insertions, 0 deletions
diff --git a/core/io/multiplayer_api.cpp b/core/io/multiplayer_api.cpp
index 9a2dddbb82..7680d47620 100644
--- a/core/io/multiplayer_api.cpp
+++ b/core/io/multiplayer_api.cpp
@@ -132,6 +132,8 @@ void MultiplayerAPI::set_root_node(Node *p_node) {
void MultiplayerAPI::set_network_peer(const Ref<NetworkedMultiplayerPeer> &p_peer) {
+ if (p_peer == network_peer) return; // Nothing to do
+
if (network_peer.is_valid()) {
network_peer->disconnect("peer_connected", this, "_add_peer");
network_peer->disconnect("peer_disconnected", this, "_del_peer");