37 lines
1.2 KiB
C#
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) { }
|
|
}
|
|
}
|