Add message sending to clients

This commit is contained in:
Damian Korczowski
2021-04-16 21:17:43 +02:00
parent d5bc9b5e46
commit 9927209293
2 changed files with 20 additions and 4 deletions

View File

@@ -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<NetworkConnection, HeapAllocation> targets)
void ENetDriver::SendMessage(const NetworkChannelType channelType, const NetworkMessage& message, Array<NetworkConnection, HeapAllocation> 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);
}
}

View File

@@ -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<NetworkConnection, HeapAllocation> targets) override;
private:
bool IsServer() const
{
return _host != nullptr && _peer == nullptr;
}
private:
NetworkConfig _config;
void* _host = nullptr;