diff --git a/MirrorOculusP2P/OculusClient.cs b/MirrorOculusP2P/OculusClient.cs index b426b91..ca9ccc4 100644 --- a/MirrorOculusP2P/OculusClient.cs +++ b/MirrorOculusP2P/OculusClient.cs @@ -97,6 +97,7 @@ private void OnConnectionStatusChanged(Message message) break; case PeerConnectionState.Timeout: + Net.Connect(message.Data.ID); break; case PeerConnectionState.Closed: InternalDisconnect(); diff --git a/MirrorOculusP2P/OculusCommon.cs b/MirrorOculusP2P/OculusCommon.cs index 24c5ec6..9677604 100644 --- a/MirrorOculusP2P/OculusCommon.cs +++ b/MirrorOculusP2P/OculusCommon.cs @@ -23,9 +23,9 @@ protected bool SendPacket(ulong userId, byte[] data, int channelId) { switch (channelId) { - case Channels.DefaultReliable: + case Channels.Reliable: return Net.SendPacket(userId, data, SendPolicy.Reliable); - case Channels.DefaultUnreliable: + case Channels.Unreliable: return Net.SendPacket(userId, data, SendPolicy.Unreliable); default: OculusLogError("Unknown send policy. Defaulting to reliable."); @@ -39,13 +39,13 @@ protected bool SendPacket(ulong userId, byte[] data, int channelId) switch (packet.Policy) { case SendPolicy.Unreliable: - channel = Channels.DefaultUnreliable; + channel = Channels.Unreliable; break; case SendPolicy.Reliable: - channel = Channels.DefaultReliable; + channel = Channels.Reliable; break; default: - channel = Channels.DefaultReliable; + channel = Channels.Reliable; OculusLogWarning("Unknown packet policy, defaulting to reliable"); break; } diff --git a/MirrorOculusP2P/OculusServer.cs b/MirrorOculusP2P/OculusServer.cs index b7afed9..2d1134e 100644 --- a/MirrorOculusP2P/OculusServer.cs +++ b/MirrorOculusP2P/OculusServer.cs @@ -61,11 +61,14 @@ private void OnPeerConnectRequest(Message message) Net.Accept(oculusId); } } + + Net.Accept(oculusId); } private void OnConnectionStatusChanged(Message message) { var oculusId = message.Data.ID; + switch (message.Data.State) { case PeerConnectionState.Unknown: @@ -78,6 +81,7 @@ private void OnConnectionStatusChanged(Message message) break; case PeerConnectionState.Timeout: + Net.Connect(oculusId); break; case PeerConnectionState.Closed: if (_oculusIDToMirrorID.TryGetValue(oculusId, out int connId)) diff --git a/MirrorOculusP2P/OculusTransport.cs b/MirrorOculusP2P/OculusTransport.cs index 1f4cfa8..9d61ab5 100644 --- a/MirrorOculusP2P/OculusTransport.cs +++ b/MirrorOculusP2P/OculusTransport.cs @@ -45,7 +45,7 @@ public override void ClientConnect(string address) return; } - if (!ClientActive() || client.Error) + if (client == null && (!ClientActive() || client.Error)) { Debug.Log($"Starting client [Oculus], target address {address}."); client = OculusClient.CreateClient(this, address); @@ -56,7 +56,7 @@ public override void ClientConnect(string address) } } - public override void ClientSend(int channelId, ArraySegment segment) + public override void ClientSend(ArraySegment segment, int channelId) { byte[] data = new byte[segment.Count]; Array.Copy(segment.Array, segment.Offset, data, 0, segment.Count); @@ -104,10 +104,11 @@ public override void ServerStart() public override Uri ServerUri() { - return new Uri(_user.ID.ToString()); + return new Uri(_user.ID.ToString + ()); } - public override void ServerSend(int connectionId, int channelId, ArraySegment segment) + public override void ServerSend(int connectionId, ArraySegment segment, int channelId) { if (ServerActive()) { @@ -117,8 +118,10 @@ public override void ServerSend(int connectionId, int channelId, ArraySegment ServerActive() && server.Disconnect(connectionId); - + //public override bool ServerDisconnect(int connectionId) => ServerActive() && server.Disconnect(connectionId); + public override void ServerDisconnect(int connectionId) => server.Disconnect(connectionId); + + public override string ServerGetClientAddress(int connectionId) => ServerActive() ? server.ServerGetClientAddress(connectionId) : string.Empty; public override void ServerStop() @@ -150,9 +153,9 @@ public override int GetMaxPacketSize(int channelId) { switch (channelId) { - case Mirror.Channels.DefaultReliable: + case Mirror.Channels.Reliable: return OculusCommon.ReliableMaxMessageSize; - case Mirror.Channels.DefaultUnreliable: + case Mirror.Channels.Unreliable: return OculusCommon.UnreliableMaxMessageSize; default: OculusLogWarning("Unknown channel");