@@ -10,9 +10,7 @@ namespace MLAPI.Data.Transports.UNET
1010 public class UnetTransport : IUDPTransport
1111 {
1212 public ChannelType InternalChannel => ChannelType . ReliableFragmentedSequenced ;
13- public uint HostDummyId => new NetId ( 0 , 0 , true , false ) . GetClientId ( ) ;
14- public uint InvalidDummyId => new NetId ( 0 , 0 , false , true ) . GetClientId ( ) ;
15- public uint ServerNetId => new NetId ( ( byte ) serverHostId , ( ushort ) serverConnectionId , false , false ) . GetClientId ( ) ;
13+ public uint ServerClientId => new NetId ( 0 , 0 , true ) . GetClientId ( ) ;
1614 public int serverConnectionId ;
1715 public int serverHostId ;
1816 public static readonly List < TransportHost > ServerTransports = new List < TransportHost > ( )
@@ -35,7 +33,7 @@ public int Connect(string address, int port, object settings, bool websocket, ou
3533 public void DisconnectClient ( uint clientId )
3634 {
3735 NetId netId = new NetId ( clientId ) ;
38- if ( netId . IsHost ( ) || netId . IsInvalid ( ) )
36+ if ( netId . IsServer ( ) )
3937 return ;
4038 NetworkTransport . Disconnect ( netId . HostId , netId . ConnectionId , out byte error ) ;
4139 }
@@ -45,6 +43,11 @@ public void DisconnectClient(uint clientId)
4543 public int GetCurrentRTT ( uint clientId , out byte error )
4644 {
4745 NetId netId = new NetId ( clientId ) ;
46+ if ( netId . IsServer ( ) )
47+ {
48+ netId . ConnectionId = ( ushort ) serverConnectionId ;
49+ netId . HostId = ( byte ) serverHostId ;
50+ }
4851 return NetworkTransport . GetCurrentRTT ( netId . HostId , netId . ConnectionId , out error ) ;
4952 }
5053
@@ -53,13 +56,18 @@ public int GetCurrentRTT(uint clientId, out byte error)
5356 public int GetRemoteDelayTimeMS ( uint clientId , int remoteTimestamp , out byte error )
5457 {
5558 NetId netId = new NetId ( clientId ) ;
59+ if ( netId . IsServer ( ) )
60+ {
61+ netId . ConnectionId = ( ushort ) serverConnectionId ;
62+ netId . HostId = ( byte ) serverHostId ;
63+ }
5664 return NetworkTransport . GetRemoteDelayTimeMS ( netId . HostId , netId . ConnectionId , remoteTimestamp , out error ) ;
5765 }
5866
5967 public NetEventType PollReceive ( out uint clientId , out int channelId , ref byte [ ] data , int bufferSize , out int receivedSize , out byte error )
6068 {
6169 NetworkEventType eventType = NetworkTransport . Receive ( out int hostId , out int connectionId , out channelId , data , bufferSize , out receivedSize , out byte err ) ;
62- clientId = new NetId ( ( byte ) hostId , ( ushort ) connectionId , false , false ) . GetClientId ( ) ;
70+ clientId = new NetId ( ( byte ) hostId , ( ushort ) connectionId , false ) . GetClientId ( ) ;
6371 NetworkError errorType = ( NetworkError ) err ;
6472 if ( errorType == NetworkError . Timeout )
6573 eventType = NetworkEventType . DisconnectEvent ; //In UNET. Timeouts are not disconnects. We have to translate that here.
@@ -85,11 +93,12 @@ public NetEventType PollReceive(out uint clientId, out int channelId, ref byte[]
8593 public void QueueMessageForSending ( uint clientId , byte [ ] dataBuffer , int dataSize , int channelId , bool skipqueue , out byte error )
8694 {
8795 NetId netId = new NetId ( clientId ) ;
88- if ( netId . IsHost ( ) || netId . IsInvalid ( ) )
96+ if ( netId . IsServer ( ) )
8997 {
90- error = 0 ;
91- return ;
98+ netId . ConnectionId = ( ushort ) serverConnectionId ;
99+ netId . HostId = ( byte ) serverHostId ;
92100 }
101+
93102 if ( skipqueue )
94103 NetworkTransport . Send ( netId . HostId , netId . ConnectionId , channelId , dataBuffer , dataSize , out error ) ;
95104 else
@@ -101,6 +110,11 @@ public void QueueMessageForSending(uint clientId, byte[] dataBuffer, int dataSiz
101110 public void SendQueue ( uint clientId , out byte error )
102111 {
103112 NetId netId = new NetId ( clientId ) ;
113+ if ( netId . IsServer ( ) )
114+ {
115+ netId . ConnectionId = ( ushort ) serverConnectionId ;
116+ netId . HostId = ( byte ) serverHostId ;
117+ }
104118 NetworkTransport . SendQueuedMessages ( netId . HostId , netId . ConnectionId , out error ) ;
105119 }
106120
0 commit comments