forked from mirror/DotRecast
refactor: preparing for switching build with System.Numerics.Vector3
This commit is contained in:
parent
0368afea23
commit
3ab732e900
|
@ -95,15 +95,6 @@ namespace DotRecast.Core.Numerics
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
|
||||||
public void Set(float[] @in, int i)
|
|
||||||
{
|
|
||||||
X = @in[i];
|
|
||||||
Y = @in[i + 1];
|
|
||||||
Z = @in[i + 2];
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
||||||
public readonly float Length()
|
public readonly float Length()
|
||||||
{
|
{
|
||||||
|
|
|
@ -20,7 +20,6 @@ freely, subject to the following restrictions:
|
||||||
using System;
|
using System;
|
||||||
using DotRecast.Core.Numerics;
|
using DotRecast.Core.Numerics;
|
||||||
|
|
||||||
|
|
||||||
namespace DotRecast.Detour.Extras
|
namespace DotRecast.Detour.Extras
|
||||||
{
|
{
|
||||||
public class BVTreeBuilder
|
public class BVTreeBuilder
|
||||||
|
@ -41,10 +40,8 @@ namespace DotRecast.Detour.Extras
|
||||||
BVItem it = new BVItem();
|
BVItem it = new BVItem();
|
||||||
items[i] = it;
|
items[i] = it;
|
||||||
it.i = i;
|
it.i = i;
|
||||||
RcVec3f bmin = new RcVec3f();
|
RcVec3f bmin = new RcVec3f(data.verts.AsSpan(data.polys[i].verts[0] * 3));
|
||||||
RcVec3f bmax = new RcVec3f();
|
RcVec3f bmax = new RcVec3f(data.verts.AsSpan(data.polys[i].verts[0] * 3));
|
||||||
bmin.Set(data.verts, data.polys[i].verts[0] * 3);
|
|
||||||
bmax.Set(data.verts, data.polys[i].verts[0] * 3);
|
|
||||||
for (int j = 1; j < data.polys[i].vertCount; j++)
|
for (int j = 1; j < data.polys[i].vertCount; j++)
|
||||||
{
|
{
|
||||||
bmin.Min(data.verts, data.polys[i].verts[j] * 3);
|
bmin.Min(data.verts, data.polys[i].verts[j] * 3);
|
||||||
|
|
|
@ -53,10 +53,10 @@ namespace DotRecast.Detour
|
||||||
|
|
||||||
do
|
do
|
||||||
{
|
{
|
||||||
a.Set(p, 3 * (ai % n));
|
a = new RcVec3f(p.AsSpan(3 * (ai % n)));
|
||||||
b.Set(q, 3 * (bi % m));
|
b = new RcVec3f(q.AsSpan(3 * (bi % m)));
|
||||||
a1.Set(p, 3 * ((ai + n - 1) % n)); // prev a
|
a1 = new RcVec3f(p.AsSpan(3 * ((ai + n - 1) % n))); // prev a
|
||||||
b1.Set(q, 3 * ((bi + m - 1) % m)); // prev b
|
b1 = new RcVec3f(q.AsSpan(3 * ((bi + m - 1) % m))); // prev b
|
||||||
|
|
||||||
RcVec3f A = RcVec3f.Subtract(a, a1);
|
RcVec3f A = RcVec3f.Subtract(a, a1);
|
||||||
RcVec3f B = RcVec3f.Subtract(b, b1);
|
RcVec3f B = RcVec3f.Subtract(b, b1);
|
||||||
|
|
|
@ -401,8 +401,8 @@ namespace DotRecast.Detour
|
||||||
|
|
||||||
// Calc polygon bounds.
|
// Calc polygon bounds.
|
||||||
int v = p.verts[0] * 3;
|
int v = p.verts[0] * 3;
|
||||||
bmin.Set(tile.data.verts, v);
|
bmin = new RcVec3f(tile.data.verts.AsSpan(v));
|
||||||
bmax.Set(tile.data.verts, v);
|
bmax = new RcVec3f(tile.data.verts.AsSpan(v));
|
||||||
for (int j = 1; j < p.vertCount; ++j)
|
for (int j = 1; j < p.vertCount; ++j)
|
||||||
{
|
{
|
||||||
v = p.verts[j] * 3;
|
v = p.verts[j] * 3;
|
||||||
|
|
|
@ -159,11 +159,9 @@ namespace DotRecast.Detour
|
||||||
{
|
{
|
||||||
int vb = option.detailMeshes[i * 4 + 0];
|
int vb = option.detailMeshes[i * 4 + 0];
|
||||||
int ndv = option.detailMeshes[i * 4 + 1];
|
int ndv = option.detailMeshes[i * 4 + 1];
|
||||||
RcVec3f bmin = new RcVec3f();
|
|
||||||
RcVec3f bmax = new RcVec3f();
|
|
||||||
int dv = vb * 3;
|
int dv = vb * 3;
|
||||||
bmin.Set(option.detailVerts, dv);
|
var bmin = new RcVec3f(option.detailVerts.AsSpan(dv));
|
||||||
bmax.Set(option.detailVerts, dv);
|
var bmax = new RcVec3f(option.detailVerts.AsSpan(dv));
|
||||||
for (int j = 1; j < ndv; j++)
|
for (int j = 1; j < ndv; j++)
|
||||||
{
|
{
|
||||||
bmin.Min(option.detailVerts, dv + j * 3);
|
bmin.Min(option.detailVerts, dv + j * 3);
|
||||||
|
|
|
@ -641,8 +641,8 @@ namespace DotRecast.Detour
|
||||||
|
|
||||||
// Calc polygon bounds.
|
// Calc polygon bounds.
|
||||||
int v = p.verts[0] * 3;
|
int v = p.verts[0] * 3;
|
||||||
bmin.Set(tile.data.verts, v);
|
bmin = new RcVec3f(tile.data.verts.AsSpan(v));
|
||||||
bmax.Set(tile.data.verts, v);
|
bmax = new RcVec3f(tile.data.verts.AsSpan(v));
|
||||||
for (int j = 1; j < p.vertCount; ++j)
|
for (int j = 1; j < p.vertCount; ++j)
|
||||||
{
|
{
|
||||||
v = p.verts[j] * 3;
|
v = p.verts[j] * 3;
|
||||||
|
@ -3034,8 +3034,8 @@ namespace DotRecast.Detour
|
||||||
int ivj = poly.verts[j] * 3;
|
int ivj = poly.verts[j] * 3;
|
||||||
int ivi = poly.verts[i] * 3;
|
int ivi = poly.verts[i] * 3;
|
||||||
var seg = new RcSegmentVert();
|
var seg = new RcSegmentVert();
|
||||||
seg.vmin.Set(tile.data.verts, ivj);
|
seg.vmin = new RcVec3f(tile.data.verts.AsSpan(ivj));
|
||||||
seg.vmax.Set(tile.data.verts, ivi);
|
seg.vmax = new RcVec3f(tile.data.verts.AsSpan(ivi));
|
||||||
// Array.Copy(tile.data.verts, ivj, seg, 0, 3);
|
// Array.Copy(tile.data.verts, ivj, seg, 0, 3);
|
||||||
// Array.Copy(tile.data.verts, ivi, seg, 3, 3);
|
// Array.Copy(tile.data.verts, ivi, seg, 3, 3);
|
||||||
segmentVerts.Add(seg);
|
segmentVerts.Add(seg);
|
||||||
|
|
|
@ -234,7 +234,7 @@ public class CrowdSampleTool : ISampleTool
|
||||||
dd.Vertex(prev.X, prev.Y + 0.1f, prev.Z, DuRGBA(0, 0, 0, (int)(128 * preva)));
|
dd.Vertex(prev.X, prev.Y + 0.1f, prev.Z, DuRGBA(0, 0, 0, (int)(128 * preva)));
|
||||||
dd.Vertex(trail.trail[v], trail.trail[v + 1] + 0.1f, trail.trail[v + 2], DuRGBA(0, 0, 0, (int)(128 * a)));
|
dd.Vertex(trail.trail[v], trail.trail[v + 1] + 0.1f, trail.trail[v + 2], DuRGBA(0, 0, 0, (int)(128 * a)));
|
||||||
preva = a;
|
preva = a;
|
||||||
prev.Set(trail.trail, v);
|
prev = new RcVec3f(trail.trail.AsSpan(v));
|
||||||
}
|
}
|
||||||
|
|
||||||
dd.End();
|
dd.End();
|
||||||
|
|
Loading…
Reference in New Issue