From 5dd4ae8ebd79373cbc8a71faf3481bca43aa488f Mon Sep 17 00:00:00 2001 From: Steve Lobdell Date: Sat, 13 Feb 2021 12:24:06 -0500 Subject: [PATCH] Fix duplicate removing timed out player --- .../Networking/Players/ForgePlayerTimeoutBridge.cs | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/ForgeAlloy/ForgeAlloyUnity/Assets/ForgeNetworking/Networking/Players/ForgePlayerTimeoutBridge.cs b/ForgeAlloy/ForgeAlloyUnity/Assets/ForgeNetworking/Networking/Players/ForgePlayerTimeoutBridge.cs index e433b39d..fba59634 100644 --- a/ForgeAlloy/ForgeAlloyUnity/Assets/ForgeNetworking/Networking/Players/ForgePlayerTimeoutBridge.cs +++ b/ForgeAlloy/ForgeAlloyUnity/Assets/ForgeNetworking/Networking/Players/ForgePlayerTimeoutBridge.cs @@ -30,6 +30,7 @@ private void WatchForTimeouts() var now = DateTime.Now; lock (_previousPlayerSet) { + _timedOutPlayers.Clear(); foreach (var player in _previousPlayerSet) { var span = now - player.LastCommunication; @@ -51,6 +52,9 @@ private void ProcessPlayerLists(object state) { lock (_previousPlayerSet) { + foreach (var player in _timedOutPlayers) + _networkMediator.PlayerRepository.RemovePlayer(player); + _previousPlayerSet.Clear(); var itr = _networkMediator.PlayerRepository.GetEnumerator(); while (itr.MoveNext()) @@ -58,8 +62,6 @@ private void ProcessPlayerLists(object state) if (itr.Current != null) _previousPlayerSet.Add(itr.Current); } - foreach (var player in _timedOutPlayers) - _networkMediator.PlayerRepository.RemovePlayer(player); } } }