Files
2026-02-21 16:45:37 +08:00

36 lines
1.5 KiB
C#

using UnityEngine;
namespace UltimateWater.Internal
{
public sealed class WaterWavesSpectrumData : WaterWavesSpectrumDataBase
{
private readonly WaterWavesSpectrum _Spectrum;
public WaterWavesSpectrumData(Water water, WindWaves windWaves, WaterWavesSpectrum spectrum)
: base(water, windWaves, spectrum.TileSize, spectrum.Gravity)
{
_Spectrum = spectrum;
}
protected override void GenerateContents(Vector3[][] spectrumValues)
{
int finalResolution = _WindWaves.FinalResolution;
Vector4 tileSizeScales = _WindWaves.TileSizeScales;
int num = ((_Water.Seed == 0) ? Random.Range(0, 1000000) : _Water.Seed);
WaterQualityLevel[] qualityLevelsDirect = WaterQualitySettings.Instance.GetQualityLevelsDirect();
int maxSpectrumResolution = qualityLevelsDirect[qualityLevelsDirect.Length - 1].MaxSpectrumResolution;
if (finalResolution > maxSpectrumResolution)
{
Debug.LogWarningFormat("In water quality settings spectrum resolution of {0} is max, but at runtime a spectrum with resolution of {1} is generated. That may generate some unexpected behaviour. Make sure that the last water quality level has the highest resolution and don't alter it at runtime.", maxSpectrumResolution, finalResolution);
}
for (byte b = 0; b < 4; b++)
{
Random.State state = Random.state;
Random.InitState(num + b);
_Spectrum.ComputeSpectrum(spectrumValues[b], tileSizeScales[b], maxSpectrumResolution, null);
Random.state = state;
}
}
}
}