52 lines
1.2 KiB
C#
52 lines
1.2 KiB
C#
using NWH.DWP2.WaterObjects;
|
|
using Unity.Mathematics;
|
|
using UnityEngine;
|
|
using UnityEngine.Rendering.HighDefinition;
|
|
|
|
namespace NWH.DWP2.WaterData
|
|
{
|
|
[DefaultExecutionOrder(-50)]
|
|
public class WaterSurfaceDataProvider : WaterDataProvider
|
|
{
|
|
public WaterSurface targetSurface;
|
|
|
|
private WaterSearchParameters searchParameters;
|
|
|
|
private WaterSearchResult searchResult;
|
|
|
|
private Vector3 _point;
|
|
|
|
public override bool SupportsWaterHeightQueries()
|
|
{
|
|
return true;
|
|
}
|
|
|
|
public override bool SupportsWaterNormalQueries()
|
|
{
|
|
return false;
|
|
}
|
|
|
|
public override bool SupportsWaterFlowQueries()
|
|
{
|
|
return false;
|
|
}
|
|
|
|
public override void GetWaterHeights(WaterObject waterObject, ref Vector3[] points, ref float[] waterHeights)
|
|
{
|
|
int num = points.Length;
|
|
Debug.Log($"POINTS{num}");
|
|
for (int i = 0; i < num; i++)
|
|
{
|
|
searchParameters.startPositionWS = searchResult.candidateLocationWS;
|
|
searchParameters.targetPositionWS = new float3(points[i]);
|
|
searchParameters.error = 0.01f;
|
|
searchParameters.maxIterations = 8;
|
|
if (targetSurface.ProjectPointOnWaterSurface(searchParameters, out searchResult))
|
|
{
|
|
waterHeights[i] = searchResult.candidateLocationWS.y;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|