Add message sending to clients
This commit is contained in:
@@ -153,6 +153,9 @@ bool ENetDriver::PopEvent(NetworkEvent* eventPtr)
|
|||||||
|
|
||||||
if(result > 0)
|
if(result > 0)
|
||||||
{
|
{
|
||||||
|
// Copy sender data
|
||||||
|
eventPtr->Sender = NetworkConnection(enet_peer_get_id(event.peer));
|
||||||
|
|
||||||
switch(event.type)
|
switch(event.type)
|
||||||
{
|
{
|
||||||
case ENET_EVENT_TYPE_CONNECT:
|
case ENET_EVENT_TYPE_CONNECT:
|
||||||
@@ -180,8 +183,6 @@ bool ENetDriver::PopEvent(NetworkEvent* eventPtr)
|
|||||||
eventPtr->Message = NetworkManager::CreateMessage(eventPtr->HostId);
|
eventPtr->Message = NetworkManager::CreateMessage(eventPtr->HostId);
|
||||||
eventPtr->Message.Length = event.packet->dataLength;
|
eventPtr->Message.Length = event.packet->dataLength;
|
||||||
Memory::CopyItems(eventPtr->Message.Buffer, event.packet->data, event.packet->dataLength);
|
Memory::CopyItems(eventPtr->Message.Buffer, event.packet->data, event.packet->dataLength);
|
||||||
|
|
||||||
// TODO: Copy sender info
|
|
||||||
break;
|
break;
|
||||||
|
|
||||||
default: break;
|
default: break;
|
||||||
@@ -197,7 +198,15 @@ void ENetDriver::SendMessage(const NetworkChannelType channelType, const Network
|
|||||||
SendPacketToPeer((ENetPeer*)_peer, channelType, message);
|
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);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -6,6 +6,7 @@
|
|||||||
#include "Engine/Networking/INetworkDriver.h"
|
#include "Engine/Networking/INetworkDriver.h"
|
||||||
#include "Engine/Networking/NetworkConfig.h"
|
#include "Engine/Networking/NetworkConfig.h"
|
||||||
|
|
||||||
|
#include "Engine/Core/Collections/Dictionary.h"
|
||||||
#include "Engine/Scripting/ScriptingType.h"
|
#include "Engine/Scripting/ScriptingType.h"
|
||||||
|
|
||||||
API_CLASS(Namespace="FlaxEngine.Networking", Sealed) class FLAXENGINE_API ENetDriver : public INetworkDriver
|
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) override;
|
||||||
void SendMessage(NetworkChannelType channelType, const NetworkMessage& message, Array<NetworkConnection, HeapAllocation> targets) override;
|
void SendMessage(NetworkChannelType channelType, const NetworkMessage& message, Array<NetworkConnection, HeapAllocation> targets) override;
|
||||||
|
|
||||||
|
private:
|
||||||
|
bool IsServer() const
|
||||||
|
{
|
||||||
|
return _host != nullptr && _peer == nullptr;
|
||||||
|
}
|
||||||
|
|
||||||
private:
|
private:
|
||||||
NetworkConfig _config;
|
NetworkConfig _config;
|
||||||
void* _host = nullptr;
|
void* _host = nullptr;
|
||||||
|
|||||||
Reference in New Issue
Block a user