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

67 lines
1.4 KiB
C#

using UnityEngine;
namespace UltimateWater
{
public sealed class WaterFloat : MonoBehaviour
{
public enum DisplacementMode
{
Height = 0,
Displacement = 1
}
[SerializeField]
private DisplacementMode _DisplacementMode = DisplacementMode.Displacement;
[SerializeField]
private float _HeightBonus;
[Range(0.04f, 1f)]
[SerializeField]
private float _Precision = 0.2f;
[SerializeField]
private Water _Water;
private Vector3 _InitialPosition;
private Vector3 _PreviousPosition;
private WaterSample _Sample;
private void Start()
{
if (_Water == null)
{
_Water = Utilities.GetWaterReference();
}
if (!_Water.IsNullReference(this))
{
_InitialPosition = base.transform.position;
_PreviousPosition = _InitialPosition;
_Sample = new WaterSample(_Water, (WaterSample.DisplacementMode)_DisplacementMode, _Precision);
_Sample.Start(base.transform.position);
}
}
private void OnDisable()
{
_Sample.Stop();
}
private void LateUpdate()
{
_InitialPosition += base.transform.position - _PreviousPosition;
Vector3 andReset = _Sample.GetAndReset(_InitialPosition.x, _InitialPosition.z, WaterSample.ComputationsMode.ForceCompletion);
andReset.y += _HeightBonus;
base.transform.position = andReset;
_PreviousPosition = andReset;
}
private void Reset()
{
_Water = Utilities.GetWaterReference();
}
}
}