Skip to content

Commit

Permalink
perf: Optimize interest management (#899)
Browse files Browse the repository at this point in the history
* perf: Optimize interest management

* Update NetworkIdentity.cs

* Update NetworkIdentity.cs

* Use explicit type

* Cache this set

* Update NetworkIdentity.cs
  • Loading branch information
paulpach authored and miwarnec committed Jun 17, 2019
1 parent 2761ff2 commit ff1a234
Showing 1 changed file with 12 additions and 8 deletions.
20 changes: 12 additions & 8 deletions Assets/Mirror/Runtime/NetworkIdentity.cs
Original file line number Diff line number Diff line change
Expand Up @@ -811,15 +811,17 @@ internal void AddObserver(NetworkConnection conn)
conn.AddToVisList(this);
}

static readonly HashSet<NetworkConnection> newObservers = new HashSet<NetworkConnection>();

public void RebuildObservers(bool initialize)
{
if (observers == null)
return;

bool changed = false;
bool result = false;
HashSet<NetworkConnection> oldObservers = new HashSet<NetworkConnection>(observers.Values);
HashSet<NetworkConnection> newObservers = new HashSet<NetworkConnection>();

newObservers.Clear();

// call OnRebuildObservers function in components
foreach (NetworkBehaviour comp in NetworkBehaviours)
Expand Down Expand Up @@ -870,7 +872,7 @@ public void RebuildObservers(bool initialize)
continue;
}

if (initialize || !oldObservers.Contains(conn))
if (initialize || !observers.ContainsKey(conn.connectionId))
{
// new observer
conn.AddToVisList(this);
Expand All @@ -879,7 +881,7 @@ public void RebuildObservers(bool initialize)
}
}

foreach (NetworkConnection conn in oldObservers)
foreach (NetworkConnection conn in observers.Values)
{
if (!newObservers.Contains(conn))
{
Expand All @@ -901,10 +903,12 @@ public void RebuildObservers(bool initialize)

if (changed)
{
observers =
newObservers.
Where(conn => conn.isReady).
ToDictionary(conn => conn.connectionId, conn => conn);
observers.Clear();
foreach (NetworkConnection conn in newObservers)
{
if (conn.isReady)
observers.Add(conn.connectionId, conn);
}
}
}

Expand Down

0 comments on commit ff1a234

Please sign in to comment.