using Obvious.Soap; using UnityEngine; using UnityEngine.Rendering.HighDefinition; public class GameWater : MonoBehaviourSingleton { public WaterSurface WaterSurface; public FloatVariable dayTime; public Gradient curves; [SerializeField] private BoolVariable isWaterHiden; [SerializeField] private IntVariable settings_waterQuality; private float defaultAbsorbption; private new void Awake() { base.Awake(); defaultAbsorbption = WaterSurface.absorptionDistance; SetWaterQuality(); } private void OnEnable() { isWaterHiden.OnValueChanged += IsWaterHiden_OnValueChanged; if ((Object)(object)settings_waterQuality != null) { settings_waterQuality.OnValueChanged += Settings_waterQuality_OnValueChanged; } } private void IsWaterHiden_OnValueChanged(bool obj) { WaterSurface.absorptionDistance = (obj ? 1000f : defaultAbsorbption); } private void Settings_waterQuality_OnValueChanged(int obj) { SetWaterQuality(); } private void OnDisable() { isWaterHiden.OnValueChanged -= IsWaterHiden_OnValueChanged; if ((Object)(object)settings_waterQuality != null) { settings_waterQuality.OnValueChanged -= Settings_waterQuality_OnValueChanged; } } private void Update() { WaterSurface.scatteringColor = curves.Evaluate(dayTime.Value / 24f); } private void SetWaterQuality() { if (!((Object)(object)settings_waterQuality == null)) { switch (settings_waterQuality.Value) { case 0: WaterSurface.foamResolution = WaterSurface.WaterDecalRegionResolution.Resolution256; WaterSurface.causticsResolution = WaterSurface.WaterCausticsResolution.Caustics256; break; case 1: WaterSurface.foamResolution = WaterSurface.WaterDecalRegionResolution.Resolution256; WaterSurface.causticsResolution = WaterSurface.WaterCausticsResolution.Caustics256; break; case 2: WaterSurface.foamResolution = WaterSurface.WaterDecalRegionResolution.Resolution512; WaterSurface.causticsResolution = WaterSurface.WaterCausticsResolution.Caustics512; break; case 3: WaterSurface.foamResolution = WaterSurface.WaterDecalRegionResolution.Resolution512; WaterSurface.causticsResolution = WaterSurface.WaterCausticsResolution.Caustics512; break; } } } }