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; }