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

74 lines
2.1 KiB
C#

using UltimateWater.Internal;
using UnityEngine;
using UnityEngine.Serialization;
namespace UltimateWater
{
public class WeatherSystem : MonoBehaviour
{
[SerializeField]
[FormerlySerializedAs("water")]
private Water _Water;
[SerializeField]
[FormerlySerializedAs("profile")]
private WaterProfile _Profile;
[Tooltip("Describes how big the weather system is. Common values range from 10000 to 150000, assuming that the scene units are used as meters.")]
[SerializeField]
[FormerlySerializedAs("radius")]
private float _Radius = 10000f;
[Range(0f, 1f)]
[SerializeField]
[FormerlySerializedAs("weight")]
private float _Weight = 1f;
private WaterWavesSpectrumData _SpectrumData;
private Vector2 _LastOffset;
private Vector2 _LastWindDirection;
private float _LastRadius;
private float _LastWeight;
private void Start()
{
_SpectrumData = new WaterWavesSpectrumData(_Water, _Water.WindWaves, _Profile.Data.Spectrum);
LateUpdate();
_Water.WindWaves.SpectrumResolver.AddSpectrum(_SpectrumData);
}
private void OnEnable()
{
if (_SpectrumData != null && !_Water.WindWaves.SpectrumResolver.ContainsSpectrum(_SpectrumData))
{
_Water.WindWaves.SpectrumResolver.AddSpectrum(_SpectrumData);
}
}
private void OnDisable()
{
_Water.WindWaves.SpectrumResolver.RemoveSpectrum(_SpectrumData);
}
private void LateUpdate()
{
Vector3 vector = _Water.transform.InverseTransformPoint(base.transform.position);
Vector2 vector2 = new Vector2(vector.x, vector.z);
Vector3 forward = base.transform.forward;
Vector2 normalized = new Vector2(forward.x, forward.z).normalized;
if (normalized != _LastWindDirection || vector2 != _LastOffset || _Radius != _LastRadius || _Weight != _LastWeight)
{
_SpectrumData.WindDirection = (_LastWindDirection = normalized);
_SpectrumData.WeatherSystemOffset = (_LastOffset = vector2);
_SpectrumData.WeatherSystemRadius = (_LastRadius = _Radius);
_SpectrumData.Weight = (_LastWeight = _Weight);
_Water.WindWaves.SpectrumResolver.SetDirectionalSpectrumDirty();
}
}
}
}