Skip to content

Commit

Permalink
refactor: separate player ownership from NetworkServer (#580)
Browse files Browse the repository at this point in the history
NetworkServer should not have to deal with NetworkIdentities or their
owners.

Remove SendToClientOfPlayer method, it doesn't add value.

BREAKING CHANGE: SendToClientOfPlayer removed. Use identity.ConnectionToClient.Send() instead
  • Loading branch information
paulpach committed Feb 14, 2021
1 parent 68adb2b commit 8d7efa6
Show file tree
Hide file tree
Showing 6 changed files with 4 additions and 34 deletions.
2 changes: 0 additions & 2 deletions Assets/Mirror/Runtime/INetworkServer.cs
Original file line number Diff line number Diff line change
Expand Up @@ -35,7 +35,5 @@ public interface INetworkServer
void RemoveConnection(INetworkConnection conn);

void SendToAll<T>(T msg, int channelId = Channel.Reliable);

void SendToClientOfPlayer<T>(NetworkIdentity identity, T msg, int channelId = Channel.Reliable);
}
}
2 changes: 1 addition & 1 deletion Assets/Mirror/Runtime/NetworkIdentity.cs
Original file line number Diff line number Diff line change
Expand Up @@ -1231,7 +1231,7 @@ void SendUpdateVarsMessage()
{
varsMessage.payload = ownerWriter.ToArraySegment();
if (ConnectionToClient != null && ConnectionToClient.IsReady)
Server.SendToClientOfPlayer(this, varsMessage);
ConnectionToClient.Send(varsMessage);
}

// send observersWriter to everyone but owner
Expand Down
18 changes: 0 additions & 18 deletions Assets/Mirror/Runtime/NetworkServer.cs
Original file line number Diff line number Diff line change
Expand Up @@ -427,23 +427,5 @@ internal void OnAuthenticated(INetworkConnection conn)

Authenticated?.Invoke(conn);
}

/// <summary>
/// send this message to the player only
/// </summary>
/// <typeparam name="T">Message type</typeparam>
/// <param name="identity"></param>
/// <param name="msg"></param>
public void SendToClientOfPlayer<T>(NetworkIdentity identity, T msg, int channelId = Channel.Reliable)
{
if (identity != null)
{
identity.ConnectionToClient.Send(msg, channelId);
}
else
{
throw new InvalidOperationException("SendToClientOfPlayer: player has no NetworkIdentity: " + identity);
}
}
}
}
4 changes: 2 additions & 2 deletions Assets/Mirror/Samples~/AdditiveScenes/Scripts/ZoneHandler.cs
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@ void OnTriggerEnter(Collider other)
if (logger.LogEnabled()) logger.LogFormat(LogType.Log, "Loading {0}", subScene);

NetworkIdentity networkIdentity = other.gameObject.GetComponent<NetworkIdentity>();
Server.SendToClientOfPlayer(networkIdentity, new SceneMessage { scenePath = subScene, sceneOperation = SceneOperation.LoadAdditive });
networkIdentity.ConnectionToClient.Send(new SceneMessage { scenePath = subScene, sceneOperation = SceneOperation.LoadAdditive });
}

[Server]
Expand All @@ -30,7 +30,7 @@ void OnTriggerExit(Collider other)
if (logger.LogEnabled()) logger.LogFormat(LogType.Log, "Unloading {0}", subScene);

NetworkIdentity networkIdentity = other.gameObject.GetComponent<NetworkIdentity>();
Server.SendToClientOfPlayer(networkIdentity, new SceneMessage { scenePath = subScene, sceneOperation = SceneOperation.UnloadAdditive });
networkIdentity.ConnectionToClient.Send(new SceneMessage { scenePath = subScene, sceneOperation = SceneOperation.UnloadAdditive });
}
}
}
1 change: 0 additions & 1 deletion Assets/Mirror/Weaver/Processors/ReaderWriterProcessor.cs
Original file line number Diff line number Diff line change
Expand Up @@ -185,7 +185,6 @@ private void GenerateReadersWriters(MethodReference method, SequencePoint sequen
method.Is<NetworkClient>(nameof(NetworkClient.Send)) ||
method.Is<NetworkClient>(nameof(NetworkClient.SendAsync)) ||
method.Is<NetworkServer>(nameof(NetworkServer.SendToAll)) ||
method.Is<NetworkServer>(nameof(NetworkServer.SendToClientOfPlayer)) ||
method.Is<INetworkServer>(nameof(INetworkServer.SendToAll));

bool generate = isMessage ||
Expand Down
11 changes: 1 addition & 10 deletions Assets/Tests/Runtime/ClientServer/NetworkServerTests.cs
Original file line number Diff line number Diff line change
Expand Up @@ -32,15 +32,6 @@ public void InitializeTest()
Assert.That(server.LocalClientActive, Is.False);
}

[Test]
public void SendToClientOfPlayerExceptionTest()
{
Assert.Throws<InvalidOperationException>(() =>
{
server.SendToClientOfPlayer(null, new ServerRpcMessage());
});
}

[UnityTest]
public IEnumerator ReadyMessageSetsClientReadyTest() => UniTask.ToCoroutine(async () =>
{
Expand Down Expand Up @@ -73,7 +64,7 @@ public void SendToClientOfPlayerExceptionTest()
connectionToServer.RegisterHandler<WovenTestMessage>(msg => invoked = true) ;
server.SendToClientOfPlayer(serverIdentity, message);
serverIdentity.ConnectionToClient.Send(message);
connectionToServer.ProcessMessagesAsync().Forget();
Expand Down

0 comments on commit 8d7efa6

Please sign in to comment.