public void OnTriggerEnter(Collider other)
    {
        if (waterBody == null)
        {
            Debug.LogError("waterbody null", this);
        }
        WaterSensor component = other.gameObject.GetComponent <WaterSensor>();

        if (component != null)
        {
            component.OnEnterBody(waterBody);
            sensors.Add(component);
        }
        else
        {
            if (!respawnNetBody || NetGame.isClient)
            {
                return;
            }
            NetBody component2 = other.gameObject.GetComponent <NetBody>();
            if (component2 != null && component2.respawn)
            {
                MeshFilter component3 = other.gameObject.GetComponent <MeshFilter>();
                if (component3 != null)
                {
                    RespawnAdd(component2);
                }
            }
        }
    }
    private void Update()
    {
        if (!NetGame.isClient || !(cameraWaterSensor != null) || !(waterBody != null) || colliders == null)
        {
            return;
        }
        Vector3 position  = cameraController.transform.position;
        float   magnitude = (position - oldCameraPosition).magnitude;

        if (!(magnitude > 0.0001f))
        {
            return;
        }
        Vector3 normalized = (position - oldCameraPosition).normalized;
        Ray     ray        = new Ray(oldCameraPosition, normalized);
        Ray     ray2       = new Ray(position, -normalized);
        bool    flag       = sensors.Contains(cameraWaterSensor);

        Collider[] array = colliders;
        foreach (Collider collider in array)
        {
            bool flag2 = collider.bounds.Contains(position);
            if ((!flag2 && flag) || ((flag2 || flag) && (collider.Raycast(ray, out RaycastHit hitInfo, magnitude) || collider.Raycast(ray2, out hitInfo, magnitude))))
            {
                if (flag)
                {
                    cameraWaterSensor.OnLeaveBody(waterBody);
                    sensors.Remove(cameraWaterSensor);
                }
                else
                {
                    cameraWaterSensor.OnEnterBody(waterBody);
                    sensors.Add(cameraWaterSensor);
                }
            }
        }
        oldCameraPosition = position;
    }