diff --git a/Source/Engine/Networking/Drivers/ENetDriver.cpp b/Source/Engine/Networking/Drivers/ENetDriver.cpp index 3b7c91674..ec773878e 100644 --- a/Source/Engine/Networking/Drivers/ENetDriver.cpp +++ b/Source/Engine/Networking/Drivers/ENetDriver.cpp @@ -153,6 +153,9 @@ bool ENetDriver::PopEvent(NetworkEvent* eventPtr) if(result > 0) { + // Copy sender data + eventPtr->Sender = NetworkConnection(enet_peer_get_id(event.peer)); + switch(event.type) { case ENET_EVENT_TYPE_CONNECT: @@ -180,8 +183,6 @@ bool ENetDriver::PopEvent(NetworkEvent* eventPtr) eventPtr->Message = NetworkManager::CreateMessage(eventPtr->HostId); eventPtr->Message.Length = event.packet->dataLength; Memory::CopyItems(eventPtr->Message.Buffer, event.packet->data, event.packet->dataLength); - - // TODO: Copy sender info break; default: break; @@ -197,7 +198,15 @@ void ENetDriver::SendMessage(const NetworkChannelType channelType, const Network SendPacketToPeer((ENetPeer*)_peer, channelType, message); } -void ENetDriver::SendMessage(NetworkChannelType channelType, const NetworkMessage& message, Array targets) +void ENetDriver::SendMessage(const NetworkChannelType channelType, const NetworkMessage& message, Array targets) { - // TODO: Send messages + for(NetworkConnection connection&& : targets) + { + ASSERT(_peerMap.ContainsKey(connection)); + + ENetPeer* peer = (ENetPeer*)_peerMap.TryGet(connection); + ASSERT(peer != nullptr); + + SendPacketToPeer(peer, channelType, message); + } } diff --git a/Source/Engine/Networking/Drivers/ENetDriver.h b/Source/Engine/Networking/Drivers/ENetDriver.h index 3c8f6329d..7966a25a5 100644 --- a/Source/Engine/Networking/Drivers/ENetDriver.h +++ b/Source/Engine/Networking/Drivers/ENetDriver.h @@ -6,6 +6,7 @@ #include "Engine/Networking/INetworkDriver.h" #include "Engine/Networking/NetworkConfig.h" +#include "Engine/Core/Collections/Dictionary.h" #include "Engine/Scripting/ScriptingType.h" API_CLASS(Namespace="FlaxEngine.Networking", Sealed) class FLAXENGINE_API ENetDriver : public INetworkDriver @@ -25,6 +26,12 @@ public: void SendMessage(NetworkChannelType channelType, const NetworkMessage& message) override; void SendMessage(NetworkChannelType channelType, const NetworkMessage& message, Array targets) override; +private: + bool IsServer() const + { + return _host != nullptr && _peer == nullptr; + } + private: NetworkConfig _config; void* _host = nullptr;