diff options
author | Fabio Alessandrelli <fabio.alessandrelli@gmail.com> | 2019-01-15 11:14:51 +0100 |
---|---|---|
committer | Fabio Alessandrelli <fabio.alessandrelli@gmail.com> | 2019-01-15 11:14:51 +0100 |
commit | 60d235622d13b8126001e61da096ca48244c2733 (patch) | |
tree | 7f013580e878bee1ce0d1da2c34611e0bc5c3fe6 /core/io/multiplayer_api.cpp | |
parent | 1f7846abf8e2c3ec132426ef4d9c785297614244 (diff) | |
download | redot-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.cpp | 2 |
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"); |