153 lines
4.0 KiB
C#
153 lines
4.0 KiB
C#
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<NetworkIdentity>().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<NetworkConnection> observers, bool initial)
|
|
{
|
|
bool flag;
|
|
if (this.forceHidden)
|
|
{
|
|
NetworkIdentity component = base.GetComponent<NetworkIdentity>();
|
|
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<NetworkIdentity>();
|
|
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<NetworkIdentity>();
|
|
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>())
|
|
{
|
|
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
|
|
}
|
|
}
|
|
}
|