Add set_peer_timeout to NetworkedMultiplayerENet.
(cherry picked from commit 1b54de3039
)
This commit is contained in:
parent
56c0b39521
commit
2aafe2b25e
3 changed files with 26 additions and 0 deletions
|
@ -124,6 +124,22 @@
|
|||
Configure the [CryptoKey] to use when [member use_dtls] is [code]true[/code]. Remember to also call [method set_dtls_certificate] to setup your [X509Certificate].
|
||||
</description>
|
||||
</method>
|
||||
<method name="set_peer_timeout">
|
||||
<return type="void">
|
||||
</return>
|
||||
<argument index="0" name="id" type="int">
|
||||
</argument>
|
||||
<argument index="1" name="timeout_limit" type="int">
|
||||
</argument>
|
||||
<argument index="2" name="timeout_min" type="int">
|
||||
</argument>
|
||||
<argument index="3" name="timeout_max" type="int">
|
||||
</argument>
|
||||
<description>
|
||||
Sets the timeout parameters for a peer. The timeout parameters control how and when a peer will timeout from a failure to acknowledge reliable traffic. Timeout values are expressed in milliseconds.
|
||||
The [code]timeout_limit[/code] is a factor that, multiplied by a value based on the avarage round trip time, will determine the timeout limit for a reliable packet. When that limit is reached, the timeout will be doubled, and the peer will be disconnected if that limit has reached [code]timeout_min[/code]. The [code]timeout_max[/code] parameter, on the other hand, defines a fixed timeout for which any packet must be acknowledged or the peer will be dropped.
|
||||
</description>
|
||||
</method>
|
||||
</methods>
|
||||
<members>
|
||||
<member name="always_ordered" type="bool" setter="set_always_ordered" getter="is_always_ordered" default="false">
|
||||
|
|
|
@ -825,6 +825,14 @@ int NetworkedMultiplayerENet::get_peer_port(int p_peer_id) const {
|
|||
#endif
|
||||
}
|
||||
|
||||
void NetworkedMultiplayerENet::set_peer_timeout(int p_peer_id, int p_timeout_limit, int p_timeout_min, int p_timeout_max) {
|
||||
ERR_FAIL_COND_MSG(!peer_map.has(p_peer_id), vformat("Peer ID %d not found in the list of peers.", p_peer_id));
|
||||
ERR_FAIL_COND_MSG(!is_server() && p_peer_id != 1, "Can't change the timeout of peers other then the server when acting as a client.");
|
||||
ERR_FAIL_COND_MSG(peer_map[p_peer_id] == nullptr, vformat("Peer ID %d found in the list of peers, but is null.", p_peer_id));
|
||||
ERR_FAIL_COND_MSG(p_timeout_limit > p_timeout_min || p_timeout_min > p_timeout_max, "Timeout limit must be less than minimum timeout, which itself must be less then maximum timeout");
|
||||
enet_peer_timeout(peer_map[p_peer_id], p_timeout_limit, p_timeout_min, p_timeout_max);
|
||||
}
|
||||
|
||||
void NetworkedMultiplayerENet::set_transfer_channel(int p_channel) {
|
||||
|
||||
ERR_FAIL_COND_MSG(p_channel < -1 || p_channel >= channel_count, vformat("The transfer channel must be set between 0 and %d, inclusive (got %d).", channel_count - 1, p_channel));
|
||||
|
@ -882,6 +890,7 @@ void NetworkedMultiplayerENet::_bind_methods() {
|
|||
ClassDB::bind_method(D_METHOD("is_dtls_verify_enabled"), &NetworkedMultiplayerENet::is_dtls_verify_enabled);
|
||||
ClassDB::bind_method(D_METHOD("get_peer_address", "id"), &NetworkedMultiplayerENet::get_peer_address);
|
||||
ClassDB::bind_method(D_METHOD("get_peer_port", "id"), &NetworkedMultiplayerENet::get_peer_port);
|
||||
ClassDB::bind_method(D_METHOD("set_peer_timeout", "id", "timeout_limit", "timeout_min", "timeout_max"), &NetworkedMultiplayerENet::set_peer_timeout);
|
||||
|
||||
ClassDB::bind_method(D_METHOD("get_packet_channel"), &NetworkedMultiplayerENet::get_packet_channel);
|
||||
ClassDB::bind_method(D_METHOD("get_last_packet_channel"), &NetworkedMultiplayerENet::get_last_packet_channel);
|
||||
|
|
|
@ -129,6 +129,7 @@ public:
|
|||
|
||||
virtual IP_Address get_peer_address(int p_peer_id) const;
|
||||
virtual int get_peer_port(int p_peer_id) const;
|
||||
void set_peer_timeout(int p_peer_id, int p_timeout_limit, int p_timeout_min, int p_timeout_max);
|
||||
|
||||
Error create_server(int p_port, int p_max_clients = 32, int p_in_bandwidth = 0, int p_out_bandwidth = 0);
|
||||
Error create_client(const String &p_address, int p_port, int p_in_bandwidth = 0, int p_out_bandwidth = 0, int p_client_port = 0);
|
||||
|
|
Loading…
Reference in a new issue