87 lines
2.2 KiB
C#
87 lines
2.2 KiB
C#
using Obvious.Soap;
|
|
using UnityEngine;
|
|
using UnityEngine.Rendering.HighDefinition;
|
|
|
|
public class GameWater : MonoBehaviourSingleton<GameWater>
|
|
{
|
|
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;
|
|
}
|
|
}
|
|
}
|
|
}
|