public void OnTriggerExit(Collider other) { WaterSensor component = other.gameObject.GetComponent <WaterSensor>(); if (component != null) { component.OnLeaveBody(waterBody); sensors.Remove(component); } }
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; }