You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 

58 lines
2.0 KiB

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.Rendering.HighDefinition;
[ExecuteInEditMode]
public class ShoreDecalTrigger : MonoBehaviour
{
public WaterSurface waterSurface;
public GameObject decalGameObject = null;
WaterSearchParameters searchParameters = new WaterSearchParameters();
WaterSearchResult searchResult = new WaterSearchResult();
void Start()
{
decalGameObject.SetActive(false);
}
// Update is called once per frame
void Update()
{
if (waterSurface != null)
{
// Build the search parameters
searchParameters.startPositionWS = searchResult.candidateLocationWS;
searchParameters.targetPositionWS = gameObject.transform.position;
searchParameters.error = 0.01f;
searchParameters.maxIterations = 8;
searchParameters.includeDeformation = true;
//Here, we exclude the simulation to avoid having larger waves (band 0) trigger the shore waves
searchParameters.excludeSimulation = true;
// Do the search
if (waterSurface.ProjectPointOnWaterSurface(searchParameters, out searchResult))
{
// If the trigger is below the water surface, it means a wave hit it, so if there's not already a decal, we instantiate one.
if(searchResult.projectedPositionWS.y > this.transform.position.y && !decalGameObject.activeSelf)
{
ActivateDecal();
}
}
}
}
void ActivateDecal()
{
if(decalGameObject != null)
{
decalGameObject.transform.parent = this.transform;
decalGameObject.transform.localPosition = Vector3.zero;
decalGameObject.transform.localEulerAngles = new Vector3(90, 0, -90);
decalGameObject.SetActive(true);
}
}
}