diff --git a/src/DotRecast.Core/RcMath.cs b/src/DotRecast.Core/RcMath.cs index d36a92d..670d6e9 100644 --- a/src/DotRecast.Core/RcMath.cs +++ b/src/DotRecast.Core/RcMath.cs @@ -83,9 +83,6 @@ namespace DotRecast.Core } - - - /// @} /// @name Computational geometry helper functions. /// @{ @@ -104,15 +101,6 @@ namespace DotRecast.Core return acx * abz - abx * acz; } - public static float TriArea2D(float[] a, float[] b, float[] c) - { - float abx = b[0] - a[0]; - float abz = b[2] - a[2]; - float acx = c[0] - a[0]; - float acz = c[2] - a[2]; - return acx * abz - abx * acz; - } - public static float TriArea2D(Vector3f a, Vector3f b, Vector3f c) { float abx = b.x - a.x; @@ -122,16 +110,6 @@ namespace DotRecast.Core return acx * abz - abx * acz; } - public static float TriArea2D(Vector3f a, float[] b, Vector3f c) - { - float abx = b[0] - a.x; - float abz = b[2] - a.z; - float acx = c.x - a.x; - float acz = c.z - a.z; - return acx * abz - abx * acz; - } - - /// Determines if two axis-aligned bounding boxes overlap. /// @param[in] amin Minimum bounds of box A. [(x, y, z)] /// @param[in] amax Maximum bounds of box A. [(x, y, z)] @@ -155,15 +133,6 @@ namespace DotRecast.Core /// @param[in] bmax Maximum bounds of box B. [(x, y, z)] /// @return True if the two AABB's overlap. /// @see dtOverlapQuantBounds - public static bool OverlapBounds(float[] amin, float[] amax, float[] bmin, float[] bmax) - { - bool overlap = true; - overlap = (amin[0] > bmax[0] || amax[0] < bmin[0]) ? false : overlap; - overlap = (amin[1] > bmax[1] || amax[1] < bmin[1]) ? false : overlap; - overlap = (amin[2] > bmax[2] || amax[2] < bmin[2]) ? false : overlap; - return overlap; - } - public static bool OverlapBounds(Vector3f amin, Vector3f amax, Vector3f bmin, Vector3f bmax) { bool overlap = true; @@ -278,7 +247,7 @@ namespace DotRecast.Core return c; } - public static float[] ProjectPoly(Vector3f axis, float[] poly, int npoly) + public static Vector2f ProjectPoly(Vector3f axis, float[] poly, int npoly) { float rmin, rmax; rmin = rmax = axis.Dot2D(poly, 0); @@ -289,7 +258,11 @@ namespace DotRecast.Core rmax = Math.Max(rmax, d); } - return new float[] { rmin, rmax }; + return new Vector2f + { + x = rmin, + y = rmax, + }; } public static bool OverlapRange(float amin, float amax, float bmin, float bmax, float eps) @@ -311,9 +284,9 @@ namespace DotRecast.Core Vector3f n = Vector3f.Of(polya[vb + 2] - polya[va + 2], 0, -(polya[vb + 0] - polya[va + 0])); - float[] aminmax = ProjectPoly(n, polya, npolya); - float[] bminmax = ProjectPoly(n, polyb, npolyb); - if (!OverlapRange(aminmax[0], aminmax[1], bminmax[0], bminmax[1], eps)) + Vector2f aminmax = ProjectPoly(n, polya, npolya); + Vector2f bminmax = ProjectPoly(n, polyb, npolyb); + if (!OverlapRange(aminmax.x, aminmax.y, bminmax.x, bminmax.y, eps)) { // Found separating axis return false; @@ -327,9 +300,9 @@ namespace DotRecast.Core Vector3f n = Vector3f.Of(polyb[vb + 2] - polyb[va + 2], 0, -(polyb[vb + 0] - polyb[va + 0])); - float[] aminmax = ProjectPoly(n, polya, npolya); - float[] bminmax = ProjectPoly(n, polyb, npolyb); - if (!OverlapRange(aminmax[0], aminmax[1], bminmax[0], bminmax[1], eps)) + Vector2f aminmax = ProjectPoly(n, polya, npolya); + Vector2f bminmax = ProjectPoly(n, polyb, npolyb); + if (!OverlapRange(aminmax.x, aminmax.y, bminmax.x, bminmax.y, eps)) { // Found separating axis return false; @@ -557,31 +530,5 @@ namespace DotRecast.Core float t = Vector3f.PerpXZ(u, w) / d; return Tuple.Create(s, t); } - - /// Checks that the specified vector's components are all finite. - /// @param[in] v A point. [(x, y, z)] - /// @return True if all of the point's components are finite, i.e. not NaN - /// or any of the infinities. - public static bool VIsFinite(float[] v) - { - return float.IsFinite(v[0]) && float.IsFinite(v[1]) && float.IsFinite(v[2]); - } - - public static bool VIsFinite(Vector3f v) - { - return float.IsFinite(v.x) && float.IsFinite(v.y) && float.IsFinite(v.z); - } - - /// Checks that the specified vector's 2D components are finite. - /// @param[in] v A point. [(x, y, z)] - public static bool VIsFinite2D(float[] v) - { - return float.IsFinite(v[0]) && float.IsFinite(v[2]); - } - - public static bool VIsFinite2D(Vector3f v) - { - return float.IsFinite(v.x) && float.IsFinite(v.z); - } } } \ No newline at end of file diff --git a/src/DotRecast.Core/Vector3f.cs b/src/DotRecast.Core/Vector3f.cs index b988e20..bf3fca0 100644 --- a/src/DotRecast.Core/Vector3f.cs +++ b/src/DotRecast.Core/Vector3f.cs @@ -471,6 +471,23 @@ namespace DotRecast.Core return v.x * v.x + v.y * v.y + v.z * v.z; } + /// Checks that the specified vector's components are all finite. + /// @param[in] v A point. [(x, y, z)] + /// @return True if all of the point's components are finite, i.e. not NaN + /// or any of the infinities. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool IsFinite(Vector3f v) + { + return float.IsFinite(v.x) && float.IsFinite(v.y) && float.IsFinite(v.z); + } + + /// Checks that the specified vector's 2D components are finite. + /// @param[in] v A point. [(x, y, z)] + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool IsFinite2D(Vector3f v) + { + return float.IsFinite(v.x) && float.IsFinite(v.z); + } } } \ No newline at end of file diff --git a/src/DotRecast.Detour/LegacyNavMeshQuery.cs b/src/DotRecast.Detour/LegacyNavMeshQuery.cs index e370c1a..9908dab 100644 --- a/src/DotRecast.Detour/LegacyNavMeshQuery.cs +++ b/src/DotRecast.Detour/LegacyNavMeshQuery.cs @@ -43,7 +43,7 @@ namespace DotRecast.Detour public override Result> FindPath(long startRef, long endRef, Vector3f startPos, Vector3f endPos, IQueryFilter filter) { // Validate input - if (!m_nav.IsValidPolyRef(startRef) || !m_nav.IsValidPolyRef(endRef) || !VIsFinite(startPos) || !VIsFinite(endPos) || null == filter) + if (!m_nav.IsValidPolyRef(startRef) || !m_nav.IsValidPolyRef(endRef) || !Vector3f.IsFinite(startPos) || !Vector3f.IsFinite(endPos) || null == filter) { return Results.InvalidParam>(); } @@ -648,7 +648,7 @@ namespace DotRecast.Detour public override Result FindDistanceToWall(long startRef, Vector3f centerPos, float maxRadius, IQueryFilter filter) { // Validate input - if (!m_nav.IsValidPolyRef(startRef) || !VIsFinite(centerPos) || maxRadius < 0 + if (!m_nav.IsValidPolyRef(startRef) || !Vector3f.IsFinite(centerPos) || maxRadius < 0 || !float.IsFinite(maxRadius) || null == filter) { return Results.InvalidParam(); @@ -776,7 +776,7 @@ namespace DotRecast.Detour Poly neighbourPoly = neighbourTileAndPoly.Item2; // Skip off-mesh connections. - if (neighbourPoly.GetType() == Poly.DT_POLYTYPE_OFFMESH_CONNECTION) + if (neighbourPoly.GetPolyType() == Poly.DT_POLYTYPE_OFFMESH_CONNECTION) { continue; } diff --git a/src/DotRecast.Detour/NavMesh.cs b/src/DotRecast.Detour/NavMesh.cs index 0a258b6..12120ec 100644 --- a/src/DotRecast.Detour/NavMesh.cs +++ b/src/DotRecast.Detour/NavMesh.cs @@ -400,7 +400,7 @@ namespace DotRecast.Detour { Poly p = tile.data.polys[i]; // Do not return off-mesh connection polygons. - if (p.GetType() == Poly.DT_POLYTYPE_OFFMESH_CONNECTION) + if (p.GetPolyType() == Poly.DT_POLYTYPE_OFFMESH_CONNECTION) { continue; } @@ -654,7 +654,7 @@ namespace DotRecast.Detour Poly poly = tile.data.polys[i]; tile.polyLinks[poly.index] = DT_NULL_LINK; - if (poly.GetType() == Poly.DT_POLYTYPE_OFFMESH_CONNECTION) + if (poly.GetPolyType() == Poly.DT_POLYTYPE_OFFMESH_CONNECTION) { continue; } @@ -1233,7 +1233,7 @@ namespace DotRecast.Detour { // Off-mesh connections do not have detail polys and getting height // over them does not make sense. - if (poly.GetType() == Poly.DT_POLYTYPE_OFFMESH_CONNECTION) + if (poly.GetPolyType() == Poly.DT_POLYTYPE_OFFMESH_CONNECTION) { return null; } @@ -1337,7 +1337,7 @@ namespace DotRecast.Detour } // Off-mesh connections don't have detail polygons. - if (poly.GetType() == Poly.DT_POLYTYPE_OFFMESH_CONNECTION) + if (poly.GetPolyType() == Poly.DT_POLYTYPE_OFFMESH_CONNECTION) { int i = poly.verts[0] * 3; var v0 = new Vector3f { x = tile.data.verts[i], y = tile.data.verts[i + 1], z = tile.data.verts[i + 2] }; @@ -1550,7 +1550,7 @@ namespace DotRecast.Detour Poly poly = tile.data.polys[ip]; // Make sure that the current poly is indeed off-mesh link. - if (poly.GetType() != Poly.DT_POLYTYPE_OFFMESH_CONNECTION) + if (poly.GetPolyType() != Poly.DT_POLYTYPE_OFFMESH_CONNECTION) { return Results.InvalidParam>("Invalid poly type"); } diff --git a/src/DotRecast.Detour/NavMeshQuery.cs b/src/DotRecast.Detour/NavMeshQuery.cs index 2a89642..07b4a9d 100644 --- a/src/DotRecast.Detour/NavMeshQuery.cs +++ b/src/DotRecast.Detour/NavMeshQuery.cs @@ -125,7 +125,7 @@ namespace DotRecast.Detour { Poly p = tile.data.polys[i]; // Do not return off-mesh connection polygons. - if (p.GetType() != Poly.DT_POLYTYPE_GROUND) + if (p.GetPolyType() != Poly.DT_POLYTYPE_GROUND) { continue; } @@ -226,7 +226,7 @@ namespace DotRecast.Detour IQueryFilter filter, FRand frand, IPolygonByCircleConstraint constraint) { // Validate input - if (!m_nav.IsValidPolyRef(startRef) || !VIsFinite(centerPos) || maxRadius < 0 + if (!m_nav.IsValidPolyRef(startRef) || !Vector3f.IsFinite(centerPos) || maxRadius < 0 || !float.IsFinite(maxRadius) || null == filter || null == frand) { return Results.InvalidParam(); @@ -272,7 +272,7 @@ namespace DotRecast.Detour Poly bestPoly = bestTilePoly.Item2; // Place random locations on on ground. - if (bestPoly.GetType() == Poly.DT_POLYTYPE_GROUND) + if (bestPoly.GetPolyType() == Poly.DT_POLYTYPE_GROUND) { // Calc area of the polygon. float polyArea = 0.0f; @@ -423,7 +423,7 @@ namespace DotRecast.Detour /// @returns The status flags for the query. public Result ClosestPointOnPoly(long refs, Vector3f pos) { - if (!m_nav.IsValidPolyRef(refs) || !VIsFinite(pos)) + if (!m_nav.IsValidPolyRef(refs) || !Vector3f.IsFinite(pos)) { return Results.InvalidParam(); } @@ -463,7 +463,7 @@ namespace DotRecast.Detour return Results.InvalidParam("Invalid tile"); } - if (!VIsFinite(pos)) + if (!Vector3f.IsFinite(pos)) { return Results.InvalidParam(); } @@ -526,7 +526,7 @@ namespace DotRecast.Detour MeshTile tile = tileAndPoly.result.Item1; Poly poly = tileAndPoly.result.Item2; - if (!VIsFinite2D(pos)) + if (!Vector3f.IsFinite2D(pos)) { return Results.InvalidParam(); } @@ -534,7 +534,7 @@ namespace DotRecast.Detour // We used to return success for offmesh connections, but the // getPolyHeight in DetourNavMesh does not do this, so special // case it here. - if (poly.GetType() == Poly.DT_POLYTYPE_OFFMESH_CONNECTION) + if (poly.GetPolyType() == Poly.DT_POLYTYPE_OFFMESH_CONNECTION) { int i = poly.verts[0] * 3; var v0 = new Vector3f { x = tile.data.verts[i], y = tile.data.verts[i + 1], z = tile.data.verts[i + 2] }; @@ -638,7 +638,7 @@ namespace DotRecast.Detour { Poly p = tile.data.polys[i]; // Do not return off-mesh connection polygons. - if (p.GetType() == Poly.DT_POLYTYPE_OFFMESH_CONNECTION) + if (p.GetPolyType() == Poly.DT_POLYTYPE_OFFMESH_CONNECTION) { continue; } @@ -683,7 +683,7 @@ namespace DotRecast.Detour */ public Status QueryPolygons(Vector3f center, Vector3f halfExtents, IQueryFilter filter, IPolyQuery query) { - if (!VIsFinite(center) || !VIsFinite(halfExtents) || null == filter) + if (!Vector3f.IsFinite(center) || !Vector3f.IsFinite(halfExtents) || null == filter) { return Status.FAILURE_INVALID_PARAM; } @@ -704,7 +704,7 @@ namespace DotRecast.Detour */ public IList QueryTiles(Vector3f center, Vector3f halfExtents) { - if (!VIsFinite(center) || !VIsFinite(halfExtents)) + if (!Vector3f.IsFinite(center) || !Vector3f.IsFinite(halfExtents)) { return ImmutableArray.Empty; } @@ -764,7 +764,7 @@ namespace DotRecast.Detour IQueryHeuristic heuristic, int options, float raycastLimit) { // Validate input - if (!m_nav.IsValidPolyRef(startRef) || !m_nav.IsValidPolyRef(endRef) || !VIsFinite(startPos) || !VIsFinite(endPos) || null == filter) + if (!m_nav.IsValidPolyRef(startRef) || !m_nav.IsValidPolyRef(endRef) || !Vector3f.IsFinite(startPos) || !Vector3f.IsFinite(endPos) || null == filter) { return Results.InvalidParam>(); } @@ -1049,7 +1049,7 @@ namespace DotRecast.Detour m_query.raycastLimitSqr = Sqr(raycastLimit); // Validate input - if (!m_nav.IsValidPolyRef(startRef) || !m_nav.IsValidPolyRef(endRef) || !VIsFinite(startPos) || !VIsFinite(endPos) || null == filter) + if (!m_nav.IsValidPolyRef(startRef) || !m_nav.IsValidPolyRef(endRef) || !Vector3f.IsFinite(startPos) || !Vector3f.IsFinite(endPos) || null == filter) { return Status.FAILURE_INVALID_PARAM; } @@ -1545,8 +1545,8 @@ namespace DotRecast.Detour int maxStraightPath, int options) { List straightPath = new List(); - if (!VIsFinite(startPos) || !VIsFinite(endPos) - || null == path || 0 == path.Count || path[0] == 0 || maxStraightPath <= 0) + if (!Vector3f.IsFinite(startPos) || !Vector3f.IsFinite(endPos) + || null == path || 0 == path.Count || path[0] == 0 || maxStraightPath <= 0) { return Results.InvalidParam>(); } @@ -1802,8 +1802,8 @@ namespace DotRecast.Detour public Result MoveAlongSurface(long startRef, Vector3f startPos, Vector3f endPos, IQueryFilter filter) { // Validate input - if (!m_nav.IsValidPolyRef(startRef) || !VIsFinite(startPos) - || !VIsFinite(endPos) || null == filter) + if (!m_nav.IsValidPolyRef(startRef) || !Vector3f.IsFinite(startPos) + || !Vector3f.IsFinite(endPos) || null == filter) { return Results.InvalidParam(); } @@ -1985,7 +1985,7 @@ namespace DotRecast.Detour Tuple tileAndPoly = tileAndPolyResult.result; MeshTile fromTile = tileAndPoly.Item1; Poly fromPoly = tileAndPoly.Item2; - int fromType = fromPoly.GetType(); + int fromType = fromPoly.GetPolyType(); tileAndPolyResult = m_nav.GetTileAndPolyByRef(to); if (tileAndPolyResult.Failed()) @@ -1996,7 +1996,7 @@ namespace DotRecast.Detour tileAndPoly = tileAndPolyResult.result; MeshTile toTile = tileAndPoly.Item1; Poly toPoly = tileAndPoly.Item2; - int toType = toPoly.GetType(); + int toType = toPoly.GetPolyType(); return GetPortalPoints(from, fromPoly, fromTile, to, toPoly, toTile, fromType, toType); } @@ -2024,7 +2024,7 @@ namespace DotRecast.Detour } // Handle off-mesh connections. - if (fromPoly.GetType() == Poly.DT_POLYTYPE_OFFMESH_CONNECTION) + if (fromPoly.GetPolyType() == Poly.DT_POLYTYPE_OFFMESH_CONNECTION) { // Find link that points to first vertex. for (int i = fromTile.polyLinks[fromPoly.index]; i != NavMesh.DT_NULL_LINK; i = fromTile.links[i].next) @@ -2046,7 +2046,7 @@ namespace DotRecast.Detour return Results.InvalidParam("Invalid offmesh from connection"); } - if (toPoly.GetType() == Poly.DT_POLYTYPE_OFFMESH_CONNECTION) + if (toPoly.GetPolyType() == Poly.DT_POLYTYPE_OFFMESH_CONNECTION) { for (int i = toTile.polyLinks[toPoly.index]; i != NavMesh.DT_NULL_LINK; i = toTile.links[i].next) { @@ -2195,7 +2195,7 @@ namespace DotRecast.Detour long prevRef) { // Validate input - if (!m_nav.IsValidPolyRef(startRef) || !VIsFinite(startPos) || !VIsFinite(endPos) || null == filter + if (!m_nav.IsValidPolyRef(startRef) || !Vector3f.IsFinite(startPos) || !Vector3f.IsFinite(endPos) || null == filter || (prevRef != 0 && !m_nav.IsValidPolyRef(prevRef))) { return Results.InvalidParam(); @@ -2291,7 +2291,7 @@ namespace DotRecast.Detour nextTile = tileAndPolyUns.Item1; nextPoly = tileAndPolyUns.Item2; // Skip off-mesh connections. - if (nextPoly.GetType() == Poly.DT_POLYTYPE_OFFMESH_CONNECTION) + if (nextPoly.GetPolyType() == Poly.DT_POLYTYPE_OFFMESH_CONNECTION) { continue; } @@ -2463,7 +2463,7 @@ namespace DotRecast.Detour { // Validate input - if (!m_nav.IsValidPolyRef(startRef) || !VIsFinite(centerPos) || radius < 0 + if (!m_nav.IsValidPolyRef(startRef) || !Vector3f.IsFinite(centerPos) || radius < 0 || !float.IsFinite(radius) || null == filter) { return Results.InvalidParam(); @@ -2832,7 +2832,7 @@ namespace DotRecast.Detour IQueryFilter filter) { // Validate input - if (!m_nav.IsValidPolyRef(startRef) || !VIsFinite(centerPos) || radius < 0 + if (!m_nav.IsValidPolyRef(startRef) || !Vector3f.IsFinite(centerPos) || radius < 0 || !float.IsFinite(radius) || null == filter) { return Results.InvalidParam(); @@ -2894,7 +2894,7 @@ namespace DotRecast.Detour Poly neighbourPoly = tileAndPoly.Item2; // Skip off-mesh connections. - if (neighbourPoly.GetType() == Poly.DT_POLYTYPE_OFFMESH_CONNECTION) + if (neighbourPoly.GetPolyType() == Poly.DT_POLYTYPE_OFFMESH_CONNECTION) { continue; } @@ -3172,7 +3172,7 @@ namespace DotRecast.Detour IQueryFilter filter) { // Validate input - if (!m_nav.IsValidPolyRef(startRef) || !VIsFinite(centerPos) || maxRadius < 0 + if (!m_nav.IsValidPolyRef(startRef) || !Vector3f.IsFinite(centerPos) || maxRadius < 0 || !float.IsFinite(maxRadius) || null == filter) { return Results.InvalidParam(); @@ -3299,7 +3299,7 @@ namespace DotRecast.Detour Poly neighbourPoly = neighbourTileAndPoly.Item2; // Skip off-mesh connections. - if (neighbourPoly.GetType() == Poly.DT_POLYTYPE_OFFMESH_CONNECTION) + if (neighbourPoly.GetPolyType() == Poly.DT_POLYTYPE_OFFMESH_CONNECTION) { continue; } diff --git a/src/DotRecast.Detour/NavMeshRaycast.cs b/src/DotRecast.Detour/NavMeshRaycast.cs index 8843c99..f6ce143 100644 --- a/src/DotRecast.Detour/NavMeshRaycast.cs +++ b/src/DotRecast.Detour/NavMeshRaycast.cs @@ -49,7 +49,7 @@ namespace DotRecast.Detour for (int i = 0; i < tile.data.header.polyCount; ++i) { Poly p = tile.data.polys[i]; - if (p.GetType() == Poly.DT_POLYTYPE_OFFMESH_CONNECTION) + if (p.GetPolyType() == Poly.DT_POLYTYPE_OFFMESH_CONNECTION) { continue; } diff --git a/src/DotRecast.Detour/Poly.cs b/src/DotRecast.Detour/Poly.cs index 8948373..36841cb 100644 --- a/src/DotRecast.Detour/Poly.cs +++ b/src/DotRecast.Detour/Poly.cs @@ -76,7 +76,7 @@ namespace DotRecast.Detour } /** Gets the polygon type. (See: #dtPolyTypes) */ - public int GetType() + public int GetPolyType() { return areaAndtype >> 6; } diff --git a/src/DotRecast.Recast.Demo/Draw/RecastDebugDraw.cs b/src/DotRecast.Recast.Demo/Draw/RecastDebugDraw.cs index a76f122..9f2ae9a 100644 --- a/src/DotRecast.Recast.Demo/Draw/RecastDebugDraw.cs +++ b/src/DotRecast.Recast.Demo/Draw/RecastDebugDraw.cs @@ -126,7 +126,7 @@ public class RecastDebugDraw : DebugDraw for (int i = 0; i < tile.data.header.polyCount; ++i) { Poly p = tile.data.polys[i]; - if (p.GetType() == Poly.DT_POLYTYPE_OFFMESH_CONNECTION) + if (p.GetPolyType() == Poly.DT_POLYTYPE_OFFMESH_CONNECTION) { continue; } @@ -173,7 +173,7 @@ public class RecastDebugDraw : DebugDraw { Poly p = tile.data.polys[i]; - if (p.GetType() != Poly.DT_POLYTYPE_OFFMESH_CONNECTION) + if (p.GetPolyType() != Poly.DT_POLYTYPE_OFFMESH_CONNECTION) { continue; } @@ -307,7 +307,7 @@ public class RecastDebugDraw : DebugDraw { Poly p = tile.data.polys[i]; - if (p.GetType() == Poly.DT_POLYTYPE_OFFMESH_CONNECTION) + if (p.GetPolyType() == Poly.DT_POLYTYPE_OFFMESH_CONNECTION) { continue; } @@ -1296,7 +1296,7 @@ public class RecastDebugDraw : DebugDraw int c = DuTransCol(col, 64); int ip = poly.index; - if (poly.GetType() == Poly.DT_POLYTYPE_OFFMESH_CONNECTION) + if (poly.GetPolyType() == Poly.DT_POLYTYPE_OFFMESH_CONNECTION) { OffMeshConnection con = tile.data.offMeshCons[ip - tile.data.header.offMeshBase]; diff --git a/test/DotRecast.Detour.Test/NavMeshBuilderTest.cs b/test/DotRecast.Detour.Test/NavMeshBuilderTest.cs index 6f70377..b173baa 100644 --- a/test/DotRecast.Detour.Test/NavMeshBuilderTest.cs +++ b/test/DotRecast.Detour.Test/NavMeshBuilderTest.cs @@ -64,6 +64,6 @@ public class NavMeshBuilderTest Assert.That(nmd.polys[118].verts[1], Is.EqualTo(224)); Assert.That(nmd.polys[118].flags, Is.EqualTo(12)); Assert.That(nmd.polys[118].GetArea(), Is.EqualTo(2)); - Assert.That(nmd.polys[118].GetType(), Is.EqualTo(Poly.DT_POLYTYPE_OFFMESH_CONNECTION)); + Assert.That(nmd.polys[118].GetPolyType(), Is.EqualTo(Poly.DT_POLYTYPE_OFFMESH_CONNECTION)); } }