| 
									
										
										
										
											2016-10-10 19:50:51 +02:00
										 |  |  | /*************************************************************************/ | 
					
						
							| 
									
										
										
										
											2021-07-12 16:18:43 +02:00
										 |  |  | /*  enet_multiplayer_peer.h                                              */ | 
					
						
							| 
									
										
										
										
											2016-10-10 19:50:51 +02:00
										 |  |  | /*************************************************************************/ | 
					
						
							|  |  |  | /*                       This file is part of:                           */ | 
					
						
							|  |  |  | /*                           GODOT ENGINE                                */ | 
					
						
							| 
									
										
										
										
											2017-08-27 14:16:55 +02:00
										 |  |  | /*                      https://godotengine.org                          */ | 
					
						
							| 
									
										
										
										
											2016-10-10 19:50:51 +02:00
										 |  |  | /*************************************************************************/ | 
					
						
							| 
									
										
										
										
											2022-01-03 21:27:34 +01:00
										 |  |  | /* Copyright (c) 2007-2022 Juan Linietsky, Ariel Manzur.                 */ | 
					
						
							|  |  |  | /* Copyright (c) 2014-2022 Godot Engine contributors (cf. AUTHORS.md).   */ | 
					
						
							| 
									
										
										
										
											2016-10-10 19:50:51 +02:00
										 |  |  | /*                                                                       */ | 
					
						
							|  |  |  | /* Permission is hereby granted, free of charge, to any person obtaining */ | 
					
						
							|  |  |  | /* a copy of this software and associated documentation files (the       */ | 
					
						
							|  |  |  | /* "Software"), to deal in the Software without restriction, including   */ | 
					
						
							|  |  |  | /* without limitation the rights to use, copy, modify, merge, publish,   */ | 
					
						
							|  |  |  | /* distribute, sublicense, and/or sell copies of the Software, and to    */ | 
					
						
							|  |  |  | /* permit persons to whom the Software is furnished to do so, subject to */ | 
					
						
							|  |  |  | /* the following conditions:                                             */ | 
					
						
							|  |  |  | /*                                                                       */ | 
					
						
							|  |  |  | /* The above copyright notice and this permission notice shall be        */ | 
					
						
							|  |  |  | /* included in all copies or substantial portions of the Software.       */ | 
					
						
							|  |  |  | /*                                                                       */ | 
					
						
							|  |  |  | /* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,       */ | 
					
						
							|  |  |  | /* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF    */ | 
					
						
							|  |  |  | /* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.*/ | 
					
						
							|  |  |  | /* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY  */ | 
					
						
							|  |  |  | /* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,  */ | 
					
						
							|  |  |  | /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE     */ | 
					
						
							|  |  |  | /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.                */ | 
					
						
							|  |  |  | /*************************************************************************/ | 
					
						
							| 
									
										
										
										
											2018-01-05 00:50:27 +01:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-07-23 23:41:51 +02:00
										 |  |  | #ifndef ENET_MULTIPLAYER_PEER_H
 | 
					
						
							|  |  |  | #define ENET_MULTIPLAYER_PEER_H
 | 
					
						
							| 
									
										
										
										
											2016-08-14 13:29:25 -03:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-01-13 16:51:17 +01:00
										 |  |  | #include "core/crypto/crypto.h"
 | 
					
						
							| 
									
										
										
										
											2022-07-12 23:12:42 +02:00
										 |  |  | #include "scene/main/multiplayer_peer.h"
 | 
					
						
							| 
									
										
										
										
											2016-08-14 13:29:25 -03:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-07-16 01:48:44 +02:00
										 |  |  | #include "enet_connection.h"
 | 
					
						
							| 
									
										
										
										
											2017-03-05 19:12:22 +01:00
										 |  |  | #include <enet/enet.h>
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-07-12 16:18:43 +02:00
										 |  |  | class ENetMultiplayerPeer : public MultiplayerPeer { | 
					
						
							|  |  |  | 	GDCLASS(ENetMultiplayerPeer, MultiplayerPeer); | 
					
						
							| 
									
										
										
										
											2019-03-19 14:35:57 -04:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-03-05 16:44:50 +01:00
										 |  |  | private: | 
					
						
							| 
									
										
										
										
											2016-08-19 16:48:08 -03:00
										 |  |  | 	enum { | 
					
						
							|  |  |  | 		SYSMSG_ADD_PEER, | 
					
						
							|  |  |  | 		SYSMSG_REMOVE_PEER | 
					
						
							|  |  |  | 	}; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-09-30 01:23:54 +02:00
										 |  |  | 	enum { | 
					
						
							| 
									
										
										
										
											2022-10-08 20:50:19 +02:00
										 |  |  | 		SYSCH_RELIABLE = 0, | 
					
						
							|  |  |  | 		SYSCH_UNRELIABLE = 1, | 
					
						
							|  |  |  | 		SYSCH_MAX = 2 | 
					
						
							| 
									
										
										
										
											2016-09-30 01:23:54 +02:00
										 |  |  | 	}; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-07-16 01:48:44 +02:00
										 |  |  | 	enum Mode { | 
					
						
							|  |  |  | 		MODE_NONE, | 
					
						
							|  |  |  | 		MODE_SERVER, | 
					
						
							|  |  |  | 		MODE_CLIENT, | 
					
						
							|  |  |  | 		MODE_MESH, | 
					
						
							|  |  |  | 	}; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	Mode active_mode = MODE_NONE; | 
					
						
							| 
									
										
										
										
											2016-08-14 13:29:25 -03:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-02-08 10:57:18 +01:00
										 |  |  | 	uint32_t unique_id = 0; | 
					
						
							| 
									
										
										
										
											2016-08-19 16:48:08 -03:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-02-08 10:57:18 +01:00
										 |  |  | 	int target_peer = 0; | 
					
						
							| 
									
										
										
										
											2016-08-14 13:29:25 -03:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-02-08 10:57:18 +01:00
										 |  |  | 	ConnectionStatus connection_status = CONNECTION_DISCONNECTED; | 
					
						
							| 
									
										
										
										
											2016-08-14 14:06:51 -03:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-05-13 15:04:37 +02:00
										 |  |  | 	HashMap<int, Ref<ENetConnection>> hosts; | 
					
						
							|  |  |  | 	HashMap<int, Ref<ENetPacketPeer>> peers; | 
					
						
							| 
									
										
										
										
											2016-08-14 13:29:25 -03:00
										 |  |  | 
 | 
					
						
							|  |  |  | 	struct Packet { | 
					
						
							| 
									
										
										
										
											2021-02-08 10:57:18 +01:00
										 |  |  | 		ENetPacket *packet = nullptr; | 
					
						
							|  |  |  | 		int from = 0; | 
					
						
							|  |  |  | 		int channel = 0; | 
					
						
							| 
									
										
										
										
											2022-10-08 20:50:19 +02:00
										 |  |  | 		TransferMode transfer_mode = TRANSFER_MODE_RELIABLE; | 
					
						
							| 
									
										
										
										
											2016-08-14 13:29:25 -03:00
										 |  |  | 	}; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-12-15 16:05:42 +01:00
										 |  |  | 	List<Packet> incoming_packets; | 
					
						
							| 
									
										
										
										
											2016-08-14 13:29:25 -03:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-12-15 16:05:42 +01:00
										 |  |  | 	Packet current_packet; | 
					
						
							| 
									
										
										
										
											2016-08-14 13:29:25 -03:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-10-08 20:50:19 +02:00
										 |  |  | 	void _store_packet(int32_t p_source, ENetConnection::Event &p_event); | 
					
						
							| 
									
										
										
										
											2017-12-15 16:05:42 +01:00
										 |  |  | 	void _pop_current_packet(); | 
					
						
							| 
									
										
										
										
											2022-10-22 17:49:40 +02:00
										 |  |  | 	void _disconnect_inactive_peers(); | 
					
						
							| 
									
										
										
										
											2021-07-16 01:48:44 +02:00
										 |  |  | 	void _destroy_unused(ENetPacket *p_packet); | 
					
						
							|  |  |  | 	_FORCE_INLINE_ bool _is_active() const { return active_mode != MODE_NONE; } | 
					
						
							| 
									
										
										
										
											2016-08-22 01:14:08 -03:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-05-06 02:48:18 +02:00
										 |  |  | 	IPAddress bind_ip; | 
					
						
							| 
									
										
										
										
											2017-03-05 16:44:50 +01:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-08-14 13:29:25 -03:00
										 |  |  | protected: | 
					
						
							|  |  |  | 	static void _bind_methods(); | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-03-05 16:44:50 +01:00
										 |  |  | public: | 
					
						
							| 
									
										
										
										
											2020-07-10 11:34:39 +01:00
										 |  |  | 	virtual void set_target_peer(int p_peer) override; | 
					
						
							| 
									
										
										
										
											2022-10-08 20:50:19 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-07-10 11:34:39 +01:00
										 |  |  | 	virtual int get_packet_peer() const override; | 
					
						
							| 
									
										
										
										
											2022-10-08 20:50:19 +02:00
										 |  |  | 	virtual TransferMode get_packet_mode() const override; | 
					
						
							|  |  |  | 	virtual int get_packet_channel() const override; | 
					
						
							| 
									
										
										
										
											2016-08-14 13:29:25 -03:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-07-10 11:34:39 +01:00
										 |  |  | 	virtual void poll() override; | 
					
						
							| 
									
										
										
										
											2022-10-22 17:49:40 +02:00
										 |  |  | 	virtual void close() override; | 
					
						
							|  |  |  | 	virtual void disconnect_peer(int p_peer, bool p_force = false) override; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-07-10 11:34:39 +01:00
										 |  |  | 	virtual bool is_server() const override; | 
					
						
							| 
									
										
										
										
											2022-10-08 20:50:19 +02:00
										 |  |  | 	virtual bool is_server_relay_supported() const override; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
											
												Fix various typos
Found via ` codespell -q 3 -S ./thirdparty,*.po,./DONORS.md -L ackward,ang,ans,ba,beng,cas,childs,childrens,dof,doubleclick,expct,fave,findn,gird,hist,inout,leapyear,lod,nd,numer,ois,ony,paket,seeked,sinc,switchs,te,uint,varn`
Update editor/import/resource_importer_layered_texture.cpp
Co-authored-by: Raul Santos <raulsntos@gmail.com>
Update doc/classes/TileSetScenesCollectionSource.xml
Co-authored-by: Raul Santos <raulsntos@gmail.com>
Update scene/gui/graph_edit.cpp
Co-authored-by: Raul Santos <raulsntos@gmail.com>
Update scene/resources/animation.cpp
Co-authored-by: Raul Santos <raulsntos@gmail.com>
Update scene/resources/animation.cpp
Co-authored-by: Raul Santos <raulsntos@gmail.com>
Update scene/resources/animation.cpp
Co-authored-by: Raul Santos <raulsntos@gmail.com>
Update scene/gui/rich_text_label.cpp
Co-authored-by: Raul Santos <raulsntos@gmail.com>
Revert previously committed change
											
										 
											2022-01-02 01:03:58 -05:00
										 |  |  | 	// Overridden so we can instrument the DTLSServer when needed.
 | 
					
						
							| 
									
										
										
										
											2021-09-07 23:04:52 +02:00
										 |  |  | 	virtual void set_refuse_new_connections(bool p_enabled) override; | 
					
						
							| 
									
										
										
										
											2016-08-14 18:49:50 -03:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-09-07 23:04:52 +02:00
										 |  |  | 	virtual ConnectionStatus get_connection_status() const override; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	virtual int get_unique_id() const override; | 
					
						
							| 
									
										
										
										
											2016-08-14 13:29:25 -03:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-07-10 11:34:39 +01:00
										 |  |  | 	virtual int get_max_packet_size() const override; | 
					
						
							| 
									
										
										
										
											2021-09-07 23:04:52 +02:00
										 |  |  | 	virtual int get_available_packet_count() const override; | 
					
						
							|  |  |  | 	virtual Error get_packet(const uint8_t **r_buffer, int &r_buffer_size) override; | 
					
						
							|  |  |  | 	virtual Error put_packet(const uint8_t *p_buffer, int p_buffer_size) override; | 
					
						
							| 
									
										
										
										
											2016-08-14 13:29:25 -03:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-09-07 23:04:52 +02:00
										 |  |  | 	Error create_server(int p_port, int p_max_clients = 32, int p_max_channels = 0, int p_in_bandwidth = 0, int p_out_bandwidth = 0); | 
					
						
							|  |  |  | 	Error create_client(const String &p_address, int p_port, int p_channel_count = 0, int p_in_bandwidth = 0, int p_out_bandwidth = 0, int p_local_port = 0); | 
					
						
							|  |  |  | 	Error create_mesh(int p_id); | 
					
						
							|  |  |  | 	Error add_mesh_peer(int p_id, Ref<ENetConnection> p_host); | 
					
						
							| 
									
										
										
										
											2016-08-14 13:29:25 -03:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-07-16 01:48:44 +02:00
										 |  |  | 	void set_bind_ip(const IPAddress &p_ip); | 
					
						
							| 
									
										
										
										
											2018-05-12 19:42:00 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-07-16 01:48:44 +02:00
										 |  |  | 	Ref<ENetConnection> get_host() const; | 
					
						
							|  |  |  | 	Ref<ENetPacketPeer> get_peer(int p_id) const; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-07-12 16:18:43 +02:00
										 |  |  | 	ENetMultiplayerPeer(); | 
					
						
							|  |  |  | 	~ENetMultiplayerPeer(); | 
					
						
							| 
									
										
										
										
											2016-08-14 13:29:25 -03:00
										 |  |  | }; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-07-23 23:41:51 +02:00
										 |  |  | #endif // ENET_MULTIPLAYER_PEER_H
 |