[Upstream] Minor refactor in RecastMesh.cpp (#661)

- https://github.com/recastnavigation/recastnavigation/pull/661
This commit is contained in:
ikpil 2023-09-06 00:12:19 +09:00
parent 1008a15856
commit ecca198d6f
2 changed files with 16 additions and 14 deletions

View File

@ -489,8 +489,8 @@ namespace DotRecast.Recast
p0 = 8;
p1 = 12;
if (RecastMesh.Vequal(pverts, d0, p0) || RecastMesh.Vequal(pverts, d1, p0)
|| RecastMesh.Vequal(pverts, d0, p1) || RecastMesh.Vequal(pverts, d1, p1))
if (RecastMesh.VEqual(pverts, d0, p0) || RecastMesh.VEqual(pverts, d1, p0) ||
RecastMesh.VEqual(pverts, d0, p1) || RecastMesh.VEqual(pverts, d1, p1))
continue;
if (RecastMesh.Intersect(pverts, d0, d1, p0, p1))

View File

@ -204,13 +204,14 @@ namespace DotRecast.Recast
{
if (!Collinear(verts, a, b, c))
return false;
// If ab not vertical, check betweenness on x; else on y.
if (verts[a + 0] != verts[b + 0])
return ((verts[a + 0] <= verts[c + 0]) && (verts[c + 0] <= verts[b + 0]))
|| ((verts[a + 0] >= verts[c + 0]) && (verts[c + 0] >= verts[b + 0]));
else
return ((verts[a + 2] <= verts[c + 2]) && (verts[c + 2] <= verts[b + 2]))
|| ((verts[a + 2] >= verts[c + 2]) && (verts[c + 2] >= verts[b + 2]));
return ((verts[a + 0] <= verts[c + 0]) && (verts[c + 0] <= verts[b + 0])) ||
((verts[a + 0] >= verts[c + 0]) && (verts[c + 0] >= verts[b + 0]));
return ((verts[a + 2] <= verts[c + 2]) && (verts[c + 2] <= verts[b + 2])) ||
((verts[a + 2] >= verts[c + 2]) && (verts[c + 2] >= verts[b + 2]));
}
// Returns true iff segments ab and cd intersect, properly or improperly.
@ -218,14 +219,15 @@ namespace DotRecast.Recast
{
if (IntersectProp(verts, a, b, c, d))
return true;
else if (Between(verts, a, b, c) || Between(verts, a, b, d) || Between(verts, c, d, a)
|| Between(verts, c, d, b))
if (Between(verts, a, b, c) || Between(verts, a, b, d) ||
Between(verts, c, d, a) || Between(verts, c, d, b))
return true;
else
return false;
return false;
}
public static bool Vequal(int[] verts, int a, int b)
public static bool VEqual(int[] verts, int a, int b)
{
return verts[a + 0] == verts[b + 0] && verts[a + 2] == verts[b + 2];
}
@ -247,7 +249,7 @@ namespace DotRecast.Recast
int p0 = (indices[k] & 0x0fffffff) * 4;
int p1 = (indices[k1] & 0x0fffffff) * 4;
if (Vequal(verts, d0, p0) || Vequal(verts, d1, p0) || Vequal(verts, d0, p1) || Vequal(verts, d1, p1))
if (VEqual(verts, d0, p0) || VEqual(verts, d1, p0) || VEqual(verts, d0, p1) || VEqual(verts, d1, p1))
continue;
if (Intersect(verts, d0, d1, p0, p1))
@ -299,7 +301,7 @@ namespace DotRecast.Recast
int p0 = (indices[k] & 0x0fffffff) * 4;
int p1 = (indices[k1] & 0x0fffffff) * 4;
if (Vequal(verts, d0, p0) || Vequal(verts, d1, p0) || Vequal(verts, d0, p1) || Vequal(verts, d1, p1))
if (VEqual(verts, d0, p0) || VEqual(verts, d1, p0) || VEqual(verts, d0, p1) || VEqual(verts, d1, p1))
continue;
if (IntersectProp(verts, d0, d1, p0, p1))