summaryrefslogtreecommitdiff
path: root/modules/webrtc/webrtc_multiplayer_peer.cpp
diff options
context:
space:
mode:
authorFabio Alessandrelli <fabio.alessandrelli@gmail.com>2022-11-01 20:35:04 +0100
committerGitHub <noreply@github.com>2022-11-01 20:35:04 +0100
commit0a0e99cadc6e250ff2ee27ef31760eb9c2e21040 (patch)
treef790d365bebbfad3c39b96c7b879c9cd6f6506f2 /modules/webrtc/webrtc_multiplayer_peer.cpp
parente6751549cf7247965d1744b8c464f5e901006f21 (diff)
parent39f3d9d59e80d5a9f62925abca596d87ce1e4d0f (diff)
Merge pull request #67982 from Faless/mp/4.x_disconnect_close
[MP] Add MultiplayerPeer disconnect_peer, close.
Diffstat (limited to 'modules/webrtc/webrtc_multiplayer_peer.cpp')
-rw-r--r--modules/webrtc/webrtc_multiplayer_peer.cpp13
1 files changed, 12 insertions, 1 deletions
diff --git a/modules/webrtc/webrtc_multiplayer_peer.cpp b/modules/webrtc/webrtc_multiplayer_peer.cpp
index 5ea81d5a1b..163b17fa6f 100644
--- a/modules/webrtc/webrtc_multiplayer_peer.cpp
+++ b/modules/webrtc/webrtc_multiplayer_peer.cpp
@@ -42,7 +42,6 @@ void WebRTCMultiplayerPeer::_bind_methods() {
ClassDB::bind_method(D_METHOD("has_peer", "peer_id"), &WebRTCMultiplayerPeer::has_peer);
ClassDB::bind_method(D_METHOD("get_peer", "peer_id"), &WebRTCMultiplayerPeer::get_peer);
ClassDB::bind_method(D_METHOD("get_peers"), &WebRTCMultiplayerPeer::get_peers);
- ClassDB::bind_method(D_METHOD("close"), &WebRTCMultiplayerPeer::close);
}
void WebRTCMultiplayerPeer::set_target_peer(int p_peer_id) {
@@ -352,6 +351,18 @@ void WebRTCMultiplayerPeer::remove_peer(int p_peer_id) {
}
}
+void WebRTCMultiplayerPeer::disconnect_peer(int p_peer_id, bool p_force) {
+ ERR_FAIL_COND(!peer_map.has(p_peer_id));
+ if (p_force) {
+ peer_map.erase(p_peer_id);
+ if (network_mode == MODE_CLIENT && p_peer_id == TARGET_PEER_SERVER) {
+ connection_status = CONNECTION_DISCONNECTED;
+ }
+ } else {
+ peer_map[p_peer_id]->connection->close(); // Will be removed during next poll.
+ }
+}
+
Error WebRTCMultiplayerPeer::get_packet(const uint8_t **r_buffer, int &r_buffer_size) {
// Peer not available
if (next_packet_peer == 0 || !peer_map.has(next_packet_peer)) {