Files
UltimateFishing2020/Assets/Scripts/Assembly-CSharp/FreeCamera.cs
2026-03-04 10:03:45 +08:00

70 lines
1.4 KiB
C#

using System;
using UltimateWater;
using UnityEngine;
public class FreeCamera : MonoBehaviour
{
[HideInInspector]
public Camera camera;
public AudioSource underwaterAudio;
private bool isUnderWater;
public static event Action OnEnterUnderwater;
public static event Action OnExitUnderwater;
private void Start()
{
camera = GetComponent<Camera>();
underwaterAudio.Stop();
}
private void OnDestroy()
{
if (isUnderWater)
{
isUnderWater = false;
FreeCamera.OnExitUnderwater?.Invoke();
}
}
private void Update()
{
if (GameWaterSystem.IsPositionUnderWater(base.transform.position))
{
if (!isUnderWater)
{
isUnderWater = true;
camera.cullingMask |= 1 << LayerMask.NameToLayer("UnderwaterObject");
underwaterAudio.Play();
EnableDisableAllAudioOnScene(val: false);
GetComponent<WaterCamera>().enabled = false;
FreeCamera.OnEnterUnderwater?.Invoke();
}
}
else if (isUnderWater)
{
isUnderWater = false;
camera.cullingMask &= ~(1 << LayerMask.NameToLayer("UnderwaterObject"));
underwaterAudio.Stop();
EnableDisableAllAudioOnScene(val: true);
GetComponent<WaterCamera>().enabled = true;
FreeCamera.OnExitUnderwater?.Invoke();
}
}
private void EnableDisableAllAudioOnScene(bool val)
{
AudioSource[] array = UnityEngine.Object.FindObjectsOfType<AudioSource>();
for (int i = 0; i < array.Length; i++)
{
if (underwaterAudio != array[i])
{
array[i].enabled = val;
}
}
}
}