diff --git a/MLAPI/Data/NetworkConfig.cs b/MLAPI/Data/NetworkConfig.cs
index b493fd5..27c93b9 100644
--- a/MLAPI/Data/NetworkConfig.cs
+++ b/MLAPI/Data/NetworkConfig.cs
@@ -21,6 +21,18 @@ namespace MLAPI.Data
///
public ushort ProtocolVersion = 0;
///
+ /// The transport hosts the sever uses
+ ///
+ public List ServerTransports = new List()
+ {
+ new TransportHost()
+ {
+ Name = "UDP Socket",
+ Port = 7777,
+ Websockets = false
+ }
+ };
+ ///
/// Channels used by the NetworkedTransport
///
public List Channels = new List();
@@ -75,13 +87,13 @@ namespace MLAPI.Data
///
public int MaxConnections = 100;
///
- /// The port for the NetworkTransport to use
+ /// The port for the NetworkTransport to use when connecting
///
- public int Port = 7777;
+ public int ConnectPort = 7777;
///
/// The address to connect to
///
- public string Address = "127.0.0.1";
+ public string ConnectAddress = "127.0.0.1";
///
/// The amount of seconds to wait for handshake to complete before timing out a client
///
@@ -128,14 +140,6 @@ namespace MLAPI.Data
/// Wheter or not to enable scene switching
///
public bool EnableSceneSwitching = false;
- ///
- /// Wheter or not we should have an additional host that listens for WebSocket requests
- ///
- public bool UseWebsockets = false;
- ///
- /// The port the websocket host listens on
- ///
- public int WebsocketsPort = 7778;
private byte[] ConfigHash = null;
///
diff --git a/MLAPI/Data/TransportHost.cs b/MLAPI/Data/TransportHost.cs
new file mode 100644
index 0000000..8230919
--- /dev/null
+++ b/MLAPI/Data/TransportHost.cs
@@ -0,0 +1,12 @@
+using System;
+
+namespace MLAPI.Data
+{
+ [Serializable]
+ public class TransportHost
+ {
+ public string Name = Guid.NewGuid().ToString().Replace("-", "");
+ public int Port = 7777;
+ public bool Websockets = false;
+ }
+}
diff --git a/MLAPI/MLAPI.csproj b/MLAPI/MLAPI.csproj
index d684e2d..0ae7f97 100644
--- a/MLAPI/MLAPI.csproj
+++ b/MLAPI/MLAPI.csproj
@@ -73,6 +73,7 @@
+
diff --git a/MLAPI/MonoBehaviours/Core/NetworkingManager.cs b/MLAPI/MonoBehaviours/Core/NetworkingManager.cs
index 3435997..bcd33e2 100644
--- a/MLAPI/MonoBehaviours/Core/NetworkingManager.cs
+++ b/MLAPI/MonoBehaviours/Core/NetworkingManager.cs
@@ -387,10 +387,13 @@ namespace MLAPI.MonoBehaviours.Core
}
}
HostTopology hostTopology = new HostTopology(cConfig, NetworkConfig.MaxConnections);
- NetworkTransport.AddHost(hostTopology, NetworkConfig.Port);
-
- if(NetworkConfig.UseWebsockets)
- NetworkTransport.AddWebsocketHost(hostTopology, NetworkConfig.WebsocketsPort);
+ for (int i = 0; i < NetworkConfig.ServerTransports.Count; i++)
+ {
+ if (NetworkConfig.ServerTransports[i].Websockets)
+ NetworkTransport.AddWebsocketHost(hostTopology, NetworkConfig.ServerTransports[i].Port);
+ else
+ NetworkTransport.AddHost(hostTopology, NetworkConfig.ServerTransports[i].Port);
+ }
_isServer = true;
_isClient = false;
@@ -420,7 +423,7 @@ namespace MLAPI.MonoBehaviours.Core
_isClient = true;
isListening = true;
byte error;
- serverConnectionId = NetworkTransport.Connect(serverHostId, NetworkConfig.Address, NetworkConfig.Port, 0, out error);
+ serverConnectionId = NetworkTransport.Connect(serverHostId, NetworkConfig.ConnectAddress, NetworkConfig.ConnectPort, 0, out error);
Debug.LogWarning("MLAPI: Connection failed: " + ((NetworkError)error).ToString());
}
@@ -444,7 +447,7 @@ namespace MLAPI.MonoBehaviours.Core
_isClient = true;
isListening = true;
byte error;
- serverConnectionId = NetworkTransport.Connect(serverHostId, NetworkConfig.Address, NetworkConfig.WebsocketsPort, 0, out error);
+ serverConnectionId = NetworkTransport.Connect(serverHostId, NetworkConfig.ConnectAddress, NetworkConfig.ConnectPort, 0, out error);
Debug.LogWarning("MLAPI: Connection failed: " + ((NetworkError)error).ToString());
}
@@ -527,9 +530,13 @@ namespace MLAPI.MonoBehaviours.Core
}
}
HostTopology hostTopology = new HostTopology(cConfig, NetworkConfig.MaxConnections);
- NetworkTransport.AddHost(hostTopology, NetworkConfig.Port, null);
- if (NetworkConfig.UseWebsockets)
- NetworkTransport.AddWebsocketHost(hostTopology, NetworkConfig.WebsocketsPort);
+ for (int i = 0; i < NetworkConfig.ServerTransports.Count; i++)
+ {
+ if (NetworkConfig.ServerTransports[i].Websockets)
+ NetworkTransport.AddWebsocketHost(hostTopology, NetworkConfig.ServerTransports[i].Port);
+ else
+ NetworkTransport.AddHost(hostTopology, NetworkConfig.ServerTransports[i].Port);
+ }
_isServer = true;
_isClient = true;