using System; using System.Collections.Generic; namespace UnityEngine.Networking { // Token: 0x02000053 RID: 83 [AddComponentMenu("Network/NetworkProximityChecker")] [RequireComponent(typeof(NetworkIdentity))] public class NetworkProximityChecker : NetworkBehaviour { // Token: 0x0600036C RID: 876 RVA: 0x00013AB0 File Offset: 0x00011CB0 private void Update() { if (NetworkServer.active) { if (Time.time - this.m_VisUpdateTime > this.visUpdateInterval) { base.GetComponent().RebuildObservers(false); this.m_VisUpdateTime = Time.time; } } } // Token: 0x0600036D RID: 877 RVA: 0x00013B00 File Offset: 0x00011D00 public override bool OnCheckObserver(NetworkConnection newObserver) { bool flag; if (this.forceHidden) { flag = false; } else { GameObject gameObject = null; for (int i = 0; i < newObserver.playerControllers.Count; i++) { PlayerController playerController = newObserver.playerControllers[i]; if (playerController != null && playerController.gameObject != null) { gameObject = playerController.gameObject; break; } } if (gameObject == null) { flag = false; } else { Vector3 position = gameObject.transform.position; flag = (position - base.transform.position).magnitude < (float)this.visRange; } } return flag; } // Token: 0x0600036E RID: 878 RVA: 0x00013BBC File Offset: 0x00011DBC public override bool OnRebuildObservers(HashSet observers, bool initial) { bool flag; if (this.forceHidden) { NetworkIdentity component = base.GetComponent(); if (component.connectionToClient != null) { observers.Add(component.connectionToClient); } flag = true; } else { NetworkProximityChecker.CheckMethod checkMethod = this.checkMethod; if (checkMethod != NetworkProximityChecker.CheckMethod.Physics3D) { if (checkMethod != NetworkProximityChecker.CheckMethod.Physics2D) { flag = false; } else { foreach (Collider2D collider2D in Physics2D.OverlapCircleAll(base.transform.position, (float)this.visRange)) { NetworkIdentity component2 = collider2D.GetComponent(); if (component2 != null && component2.connectionToClient != null) { observers.Add(component2.connectionToClient); } } flag = true; } } else { foreach (Collider collider in Physics.OverlapSphere(base.transform.position, (float)this.visRange)) { NetworkIdentity component3 = collider.GetComponent(); if (component3 != null && component3.connectionToClient != null) { observers.Add(component3.connectionToClient); } } flag = true; } } return flag; } // Token: 0x0600036F RID: 879 RVA: 0x00013D0B File Offset: 0x00011F0B public override void OnSetLocalVisibility(bool vis) { NetworkProximityChecker.SetVis(base.gameObject, vis); } // Token: 0x06000370 RID: 880 RVA: 0x00013D1C File Offset: 0x00011F1C private static void SetVis(GameObject go, bool vis) { foreach (Renderer renderer in go.GetComponents()) { renderer.enabled = vis; } for (int j = 0; j < go.transform.childCount; j++) { Transform child = go.transform.GetChild(j); NetworkProximityChecker.SetVis(child.gameObject, vis); } } // Token: 0x040001A6 RID: 422 public int visRange = 10; // Token: 0x040001A7 RID: 423 public float visUpdateInterval = 1f; // Token: 0x040001A8 RID: 424 public NetworkProximityChecker.CheckMethod checkMethod = NetworkProximityChecker.CheckMethod.Physics3D; // Token: 0x040001A9 RID: 425 public bool forceHidden = false; // Token: 0x040001AA RID: 426 private float m_VisUpdateTime; // Token: 0x02000054 RID: 84 public enum CheckMethod { // Token: 0x040001AC RID: 428 Physics3D, // Token: 0x040001AD RID: 429 Physics2D } } }