diff --git a/Source/Engine/Networking/NetworkConfig.h b/Source/Engine/Networking/NetworkConfig.h
index 8814759db..304ccef9d 100644
--- a/Source/Engine/Networking/NetworkConfig.h
+++ b/Source/Engine/Networking/NetworkConfig.h
@@ -4,6 +4,8 @@
#include "Engine/Platform/Network.h"
+class PersistentScriptingObject;
+
///
/// Network driver implementations enum.
///
@@ -33,7 +35,12 @@ public:
///
API_FIELD()
NetworkDriverType NetworkDriverType = NetworkDriverType::ENet;
- // TODO: Expose INetworkDriver as a ref not enum, when C++/C# interfaces are done.
+
+ ///
+ /// The network driver instance that will be used to create and manage the peer, send and receive messages.
+ ///
+ API_FIELD()
+ PersistentScriptingObject* NetworkDriver = nullptr;
public:
///
diff --git a/Source/Engine/Networking/NetworkPeer.cpp b/Source/Engine/Networking/NetworkPeer.cpp
index 52bc72776..90a7967d6 100644
--- a/Source/Engine/Networking/NetworkPeer.cpp
+++ b/Source/Engine/Networking/NetworkPeer.cpp
@@ -20,7 +20,7 @@ void NetworkPeer::Initialize(const NetworkConfig& config)
Config = config;
ASSERT(NetworkDriver == nullptr);
- ASSERT(Config.NetworkDriverType != NetworkDriverType::Undefined);
+ ASSERT(Config.NetworkDriver != nullptr);
ASSERT(Config.ConnectionsLimit > 0);
ASSERT(Config.MessageSize > 32); // TODO: Adjust this, not sure what the lowest limit should be.
ASSERT(Config.MessagePoolSize > 128);
@@ -35,7 +35,7 @@ void NetworkPeer::Initialize(const NetworkConfig& config)
MessagePool.Push(messageId);
// Setup network driver
- NetworkDriver = New();
+ NetworkDriver = ToInterface(Config.NetworkDriver);
NetworkDriver->Initialize(this, Config);
LOG(Info, "NetworkManager initialized using driver = {0}", static_cast(Config.NetworkDriverType));