43 lines
971 B
C#
43 lines
971 B
C#
using System;
|
|
using UnityEngine.Rendering.HighDefinition;
|
|
|
|
public class WaterBody : MonoBehaviourExtended
|
|
{
|
|
public Action<bool> OnWaterChangeState;
|
|
|
|
private bool inWater;
|
|
|
|
private WaterSearchParameters waterSearchParameters;
|
|
|
|
private WaterSearchResult waterSearchResult;
|
|
|
|
public WaterSurface water;
|
|
|
|
public bool InWater => inWater;
|
|
|
|
private void Start()
|
|
{
|
|
water = MonoBehaviourSingleton<GameWater>.Instance.WaterSurface;
|
|
}
|
|
|
|
public void CheckIsInWater()
|
|
{
|
|
}
|
|
|
|
private void FixedUpdate()
|
|
{
|
|
waterSearchParameters.startPositionWS = base.transform.position;
|
|
water.ProjectPointOnWaterSurface(waterSearchParameters, out waterSearchResult);
|
|
if (!inWater && base.transform.position.y < waterSearchResult.projectedPositionWS.y)
|
|
{
|
|
OnWaterChangeState?.Invoke(obj: true);
|
|
inWater = true;
|
|
}
|
|
if (inWater && base.transform.position.y >= waterSearchResult.projectedPositionWS.y)
|
|
{
|
|
OnWaterChangeState?.Invoke(obj: false);
|
|
inWater = false;
|
|
}
|
|
}
|
|
}
|