/// <summary> /// Gets a polygon and its tile. /// </summary> /// <param name="polyRef">The reference of the polygon.</param> /// <param name="tile">The tile the polygon belongs to.</param> /// <param name="poly">The polygon.</param> /// <returns>The <see cref="NavStatus"/> flags for the operation.</returns> public NavStatus GetTileAndPoly(uint polyRef , out NavmeshTile tile , out NavmeshPoly poly) { IntPtr pTile = IntPtr.Zero; IntPtr pPoly = IntPtr.Zero; NavStatus status = NavmeshEx.dtnmGetTileAndPolyByRef(root , polyRef , ref pTile , ref pPoly); if (NavUtil.Succeeded(status)) { tile = new NavmeshTile(this, pTile); poly = (NavmeshPoly)Marshal.PtrToStructure(pPoly , typeof(NavmeshPoly)); } else { tile = null; poly = new NavmeshPoly(); } return(status); }
/// <summary> /// Gets a copy of the polygon buffer. /// </summary> /// <param name="buffer"> /// The buffer to load the results into. /// [Length: >= <see cref="NavmeshTileHeader.polyCount"/>] /// </param> /// <returns>The number of polygons returned.</returns> public int GetPolys(NavmeshPoly[] buffer) { if (mOwner.IsDisposed || buffer == null) return 0; return NavmeshTileEx.dtnmGetTilePolys(mTile , buffer , buffer.Length); }
/// <summary> /// Gets a polygon and its tile. /// </summary> /// <param name="polyRef">The reference of the polygon.</param> /// <param name="tile">The tile the polygon belongs to.</param> /// <param name="poly">The polygon.</param> /// <returns>The <see cref="NavStatus"/> flags for the operation.</returns> public NavStatus GetTileAndPoly(uint polyRef , out NavmeshTile tile , out NavmeshPoly poly) { IntPtr pTile = IntPtr.Zero; IntPtr pPoly = IntPtr.Zero; NavStatus status = NavmeshEx.dtnmGetTileAndPolyByRef(root , polyRef , ref pTile , ref pPoly); if (NavUtil.Succeeded(status)) { tile = new NavmeshTile(this, pTile); poly = (NavmeshPoly)Marshal.PtrToStructure(pPoly , typeof(NavmeshPoly)); } else { tile = null; poly = new NavmeshPoly(); } return status; }