2024-09-05 16:57:28 +03:00
|
|
|
using System;
|
2024-05-19 03:16:25 +03:00
|
|
|
using System.Linq;
|
|
|
|
using DotRecast.Core.Numerics;
|
|
|
|
using NUnit.Framework;
|
|
|
|
|
|
|
|
namespace DotRecast.Detour.Test;
|
|
|
|
|
|
|
|
public class FindCollectPolyTest : AbstractDetourTest
|
|
|
|
{
|
|
|
|
private static readonly long[][] POLY_REFS =
|
|
|
|
{
|
|
|
|
new long[]
|
|
|
|
{
|
|
|
|
281474976710697L,
|
|
|
|
281474976710695L,
|
|
|
|
281474976710696L,
|
|
|
|
281474976710691L,
|
|
|
|
},
|
|
|
|
new long[]
|
|
|
|
{
|
|
|
|
281474976710769L,
|
|
|
|
281474976710773L,
|
|
|
|
},
|
|
|
|
new long[]
|
|
|
|
{
|
|
|
|
281474976710676L,
|
|
|
|
281474976710678L,
|
|
|
|
281474976710679L,
|
|
|
|
281474976710674L,
|
|
|
|
281474976710677L,
|
|
|
|
281474976710683L,
|
|
|
|
281474976710680L,
|
|
|
|
281474976710684L,
|
|
|
|
},
|
|
|
|
|
|
|
|
new long[]
|
|
|
|
{
|
|
|
|
281474976710748L,
|
|
|
|
281474976710753L,
|
|
|
|
281474976710752L,
|
|
|
|
281474976710750L,
|
|
|
|
},
|
|
|
|
|
|
|
|
new long[]
|
|
|
|
{
|
|
|
|
281474976710736L,
|
|
|
|
281474976710733L,
|
|
|
|
281474976710735L,
|
|
|
|
}
|
|
|
|
};
|
|
|
|
|
|
|
|
[Test]
|
|
|
|
public void TestFindNearestPoly()
|
|
|
|
{
|
|
|
|
IDtQueryFilter filter = new DtQueryDefaultFilter();
|
|
|
|
RcVec3f extents = new RcVec3f(2, 4, 2);
|
|
|
|
var polys = new long[32];
|
|
|
|
for (int i = 0; i < startRefs.Length; i++)
|
|
|
|
{
|
|
|
|
Array.Fill(polys, 0);
|
|
|
|
RcVec3f startPos = startPoss[i];
|
|
|
|
var status = query.QueryPolygons(startPos, extents, filter, polys, out var polyCount, 32);
|
|
|
|
Assert.That(status.Succeeded(), Is.True, $"index({i})");
|
|
|
|
Assert.That(polyCount, Is.EqualTo(POLY_REFS[i].Length), $"index({i})");
|
|
|
|
Assert.That(polys.AsSpan(0, polyCount).ToArray(), Is.EqualTo(POLY_REFS[i]), $"index({i})");
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|