48 lines
1.2 KiB
C#
48 lines
1.2 KiB
C#
using UnityEngine;
|
|
using UnityEngine.Rendering.HighDefinition;
|
|
|
|
[ExecuteInEditMode]
|
|
public class ShoreDecalTrigger : MonoBehaviour
|
|
{
|
|
public WaterSurface waterSurface;
|
|
|
|
public GameObject decalGameObject;
|
|
|
|
private WaterSearchParameters searchParameters;
|
|
|
|
private WaterSearchResult searchResult;
|
|
|
|
private void Start()
|
|
{
|
|
decalGameObject.SetActive(value: false);
|
|
}
|
|
|
|
private void Update()
|
|
{
|
|
if (waterSurface != null)
|
|
{
|
|
searchParameters.startPositionWS = searchResult.candidateLocationWS;
|
|
searchParameters.targetPositionWS = base.gameObject.transform.position;
|
|
searchParameters.error = 0.01f;
|
|
searchParameters.maxIterations = 8;
|
|
searchParameters.includeDeformation = true;
|
|
searchParameters.excludeSimulation = true;
|
|
if (waterSurface.ProjectPointOnWaterSurface(searchParameters, out searchResult) && searchResult.projectedPositionWS.y > base.transform.position.y && !decalGameObject.activeSelf)
|
|
{
|
|
ActivateDecal();
|
|
}
|
|
}
|
|
}
|
|
|
|
private void ActivateDecal()
|
|
{
|
|
if (decalGameObject != null)
|
|
{
|
|
decalGameObject.transform.parent = base.transform;
|
|
decalGameObject.transform.localPosition = Vector3.zero;
|
|
decalGameObject.transform.localEulerAngles = new Vector3(90f, 0f, -90f);
|
|
decalGameObject.SetActive(value: true);
|
|
}
|
|
}
|
|
}
|