mirror of
				https://github.com/godotengine/godot.git
				synced 2025-10-30 21:21:10 +00:00 
			
		
		
		
	Add set_peer_timeout to NetworkedMultiplayerENet.
This commit is contained in:
		
							parent
							
								
									7b685a1558
								
							
						
					
					
						commit
						1b54de3039
					
				
					 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]. | 				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> | 			</description> | ||||||
| 		</method> | 		</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> | 	</methods> | ||||||
| 	<members> | 	<members> | ||||||
| 		<member name="always_ordered" type="bool" setter="set_always_ordered" getter="is_always_ordered" default="false"> | 		<member name="always_ordered" type="bool" setter="set_always_ordered" getter="is_always_ordered" default="false"> | ||||||
|  |  | ||||||
|  | @ -784,6 +784,14 @@ int NetworkedMultiplayerENet::get_peer_port(int p_peer_id) const { | ||||||
| #endif | #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) { | 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)); | 	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)); | ||||||
| 	ERR_FAIL_COND_MSG(p_channel == SYSCH_CONFIG, vformat("The channel %d is reserved.", SYSCH_CONFIG)); | 	ERR_FAIL_COND_MSG(p_channel == SYSCH_CONFIG, vformat("The channel %d is reserved.", SYSCH_CONFIG)); | ||||||
|  | @ -838,6 +846,7 @@ void NetworkedMultiplayerENet::_bind_methods() { | ||||||
| 	ClassDB::bind_method(D_METHOD("is_dtls_verify_enabled"), &NetworkedMultiplayerENet::is_dtls_verify_enabled); | 	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_address", "id"), &NetworkedMultiplayerENet::get_peer_address); | ||||||
| 	ClassDB::bind_method(D_METHOD("get_peer_port", "id"), &NetworkedMultiplayerENet::get_peer_port); | 	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_packet_channel"), &NetworkedMultiplayerENet::get_packet_channel); | ||||||
| 	ClassDB::bind_method(D_METHOD("get_last_packet_channel"), &NetworkedMultiplayerENet::get_last_packet_channel); | 	ClassDB::bind_method(D_METHOD("get_last_packet_channel"), &NetworkedMultiplayerENet::get_last_packet_channel); | ||||||
|  |  | ||||||
|  | @ -127,6 +127,7 @@ public: | ||||||
| 
 | 
 | ||||||
| 	virtual IP_Address get_peer_address(int p_peer_id) const; | 	virtual IP_Address get_peer_address(int p_peer_id) const; | ||||||
| 	virtual int get_peer_port(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_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); | 	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…
	
	Add table
		Add a link
		
	
		Reference in a new issue
	
	 Fabian
						Fabian