Files
Fishing2/Packages/com.waveharmonic.crest/Runtime/Scripts/Data/Query/Depth/DepthQuery.cs
2026-01-31 00:32:49 +08:00

37 lines
1.2 KiB
C#

// Crest Water System
// Copyright © 2024 Wave Harmonic. All rights reserved.
using UnityEngine;
namespace WaveHarmonic.Crest
{
sealed class DepthQuery : QueryBaseSimple, IDepthProvider
{
public DepthQuery() : base(WaterRenderer.Instance.DepthLod) { }
public DepthQuery(WaterRenderer water) : base(water.DepthLod) { }
protected override int Kernel => 2;
public override int Query(int hash, float minimumSpatialLength, Vector3[] queries, Vector3[] results, Vector3? center = null)
{
var id = base.Query(hash, minimumSpatialLength, queries, results, center);
// Infinity will become NaN. Convert back to infinity.
// Negative infinity should not happen.
for (var i = 0; i < results.Length; i++)
{
var value = results[i];
if (float.IsNaN(value.x)) value.x = float.PositiveInfinity;
if (float.IsNaN(value.y)) value.y = float.PositiveInfinity;
results[i] = value;
}
return id;
}
}
sealed class DepthQueryPerCamera : QueryPerCameraSimple<DepthQuery>, IDepthProvider
{
public DepthQueryPerCamera(WaterRenderer water) : base(water) { }
}
}