From 21c5a732a49c094a8c2cfa7dcfb407363c6e355b Mon Sep 17 00:00:00 2001 From: Edward Lu Date: Tue, 1 Oct 2024 11:10:21 -0700 Subject: [PATCH] Add method for getting packet flags from ENetPacketPeer --- modules/enet/doc_classes/ENetPacketPeer.xml | 6 ++++++ modules/enet/enet_packet_peer.cpp | 6 ++++++ modules/enet/enet_packet_peer.h | 1 + 3 files changed, 13 insertions(+) diff --git a/modules/enet/doc_classes/ENetPacketPeer.xml b/modules/enet/doc_classes/ENetPacketPeer.xml index 3171da1f6db9..659cea974c92 100644 --- a/modules/enet/doc_classes/ENetPacketPeer.xml +++ b/modules/enet/doc_classes/ENetPacketPeer.xml @@ -18,6 +18,12 @@ Returns the number of channels allocated for communication with peer. + + + + Returns the ENet flags of the next packet in the received queue. See [code]FLAG_*[/code] constants for available packet flags. Note that not all flags are replicated from the sending peer to the receiving peer. + + diff --git a/modules/enet/enet_packet_peer.cpp b/modules/enet/enet_packet_peer.cpp index edb33fc96b93..9ec68465a5d9 100644 --- a/modules/enet/enet_packet_peer.cpp +++ b/modules/enet/enet_packet_peer.cpp @@ -175,6 +175,11 @@ int ENetPacketPeer::get_channels() const { return peer->channelCount; } +int ENetPacketPeer::get_packet_flags() const { + ERR_FAIL_COND_V(packet_queue.is_empty(), 0); + return packet_queue.front()->get()->flags; +} + void ENetPacketPeer::_on_disconnect() { if (peer) { peer->data = nullptr; @@ -206,6 +211,7 @@ void ENetPacketPeer::_bind_methods() { ClassDB::bind_method(D_METHOD("send", "channel", "packet", "flags"), &ENetPacketPeer::_send); ClassDB::bind_method(D_METHOD("throttle_configure", "interval", "acceleration", "deceleration"), &ENetPacketPeer::throttle_configure); ClassDB::bind_method(D_METHOD("set_timeout", "timeout", "timeout_min", "timeout_max"), &ENetPacketPeer::set_timeout); + ClassDB::bind_method(D_METHOD("get_packet_flags"), &ENetPacketPeer::get_packet_flags); ClassDB::bind_method(D_METHOD("get_remote_address"), &ENetPacketPeer::get_remote_address); ClassDB::bind_method(D_METHOD("get_remote_port"), &ENetPacketPeer::get_remote_port); ClassDB::bind_method(D_METHOD("get_statistic", "statistic"), &ENetPacketPeer::get_statistic); diff --git a/modules/enet/enet_packet_peer.h b/modules/enet/enet_packet_peer.h index fe40d0618825..b41d67e86b4c 100644 --- a/modules/enet/enet_packet_peer.h +++ b/modules/enet/enet_packet_peer.h @@ -113,6 +113,7 @@ public: double get_statistic(PeerStatistic p_stat); PeerState get_state() const; int get_channels() const; + int get_packet_flags() const; // Extras IPAddress get_remote_address() const;