public class DistanceInterestManagement : InterestManagement
[Tooltip("The maximum range that objects will be visible at.")]
public int visRange = 10;
[Tooltip("Rebuild all every 'rebuildInterval' seconds.")]
public float rebuildInterval = 1;
public override bool OnCheckObserver(NetworkIdentity identity, NetworkConnection newObserver)
return Vector3.Distance(identity.transform.position, newObserver.identity.transform.position) <= visRange;
public override void OnRebuildObservers(NetworkIdentity identity, HashSet<NetworkConnection> newObservers, bool initialize)
Vector3 position = identity.transform.position;
foreach (NetworkConnectionToClient conn in NetworkServer.connections.Values)
// if authenticated and joined the world
if (conn != null && conn.isAuthenticated && conn.identity != null)
// check distance to our 'identity'
if (Vector3.Distance(conn.identity.transform.position, position) < visRange)
// rebuild all spawned NetworkIdentity's observers every interval
if (NetworkTime.time >= lastRebuildTime + rebuildInterval)
lastRebuildTime = NetworkTime.time;