@recast-navigation/generators 0.29.2 → 0.31.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.mjs CHANGED
@@ -1,2 +1,2 @@
1
- import{vec3 as e,recastConfigDefaults as t,RecastBuildContext as i,NavMesh as l,VerticesArray as a,TrianglesArray as o,createRcConfig as r,calcGridSize as s,allocHeightfield as n,createHeightfield as d,TriangleAreasArray as h,markWalkableTriangles as c,rasterizeTriangles as m,filterLowHangingWalkableObstacles as g,filterLedgeSpans as u,filterWalkableLowHeightSpans as b,allocCompactHeightfield as f,buildCompactHeightfield as M,freeHeightfield as S,erodeWalkableArea as w,buildDistanceField as y,buildRegions as p,allocContourSet as R,buildContours as x,Raw as C,allocPolyMesh as k,buildPolyMesh as z,allocPolyMeshDetail as _,buildPolyMeshDetail as A,freeCompactHeightfield as v,freeContourSet as T,NavMeshCreateParams as E,createNavMeshData as H,freePolyMesh as D,freePolyMeshDetail as F,TileCacheMeshProcess as L,TileCache as O,DetourTileCacheParams as P,NavMeshParams as I,RecastChunkyTriMesh as $,freeHeightfieldLayerSet as G,cloneRcConfig as N,ChunkIdsArray as W,allocHeightfieldLayerSet as B,buildHeightfieldLayers as K,TileCacheData as V,getHeightfieldLayerHeights as X,getHeightfieldLayerAreas as Y,getHeightfieldLayerCons as U,buildTileCacheLayer as Z,statusToReadableString as j}from"@recast-navigation/core";const q=(t,i)=>{const l={x:1/0,y:1/0,z:1/0},a={x:-1/0,y:-1/0,z:-1/0};for(let e=0;e<i.length;e++){const o=i[e],r=t[3*o],s=t[3*o+1],n=t[3*o+2];l.x=Math.min(l.x,r),l.y=Math.min(l.y,s),l.z=Math.min(l.z,n),a.x=Math.max(a.x,r),a.y=Math.max(a.y,s),a.z=Math.max(a.z,n)}return{bbMin:e.toArray(l),bbMax:e.toArray(a)}},J=e=>{let t=0,i=0;return t=Number(e>65535)<<4,e>>=t,i=Number(e>255)<<3,e>>=i,t|=i,i=Number(e>15)<<2,e>>=i,t|=i,i=Number(e>3)<<1,t|=i,t|=(e>>=i)>>1,t},Q=e=>(e--,e|=e>>1,e|=e>>2,e|=e>>4,e|=e>>8,e|=e>>16,++e),ee={...t},te=(e,t,L={},O=!1)=>{const P=new i,I={type:"solo",buildContext:P},$=new l,G=e=>(O||(I.heightfield&&(S(I.heightfield),I.heightfield=void 0),I.compactHeightfield&&(v(I.compactHeightfield),I.compactHeightfield=void 0),I.contourSet&&(T(I.contourSet),I.contourSet=void 0),I.polyMesh&&(D(I.polyMesh),I.polyMesh=void 0),I.polyMeshDetail&&(F(I.polyMeshDetail),I.polyMeshDetail=void 0)),$.destroy(),{navMesh:void 0,success:!1,intermediates:I,error:e}),N=e,W=t.length,B=new a;B.copy(N);const K=t,V=t.length/3,X=new o;X.copy(K);const{bbMin:Y,bbMax:U}=q(e,t),Z=r({...ee,...L});Z.minRegionArea=Z.minRegionArea*Z.minRegionArea,Z.mergeRegionArea=Z.mergeRegionArea*Z.mergeRegionArea,Z.detailSampleDist=Z.detailSampleDist<.9?0:Z.cs*Z.detailSampleDist,Z.detailSampleMaxError=Z.ch*Z.detailSampleMaxError;const j=s(Y,U,Z.cs);Z.width=j.width,Z.height=j.height;const J=n();if(I.heightfield=J,!d(P,J,Z.width,Z.height,Y,U,Z.cs,Z.ch))return G("Could not create heightfield");const Q=new h;if(Q.resize(V),c(P,Z.walkableSlopeAngle,B,W,X,V,Q),!m(P,B,W,X,Q,V,J,Z.walkableClimb))return G("Could not rasterize triangles");Q.destroy(),B.destroy(),X.destroy(),g(P,Z.walkableClimb,J),u(P,Z.walkableHeight,Z.walkableClimb,J),b(P,Z.walkableHeight,J);const te=f();if(I.compactHeightfield=te,!M(P,Z.walkableHeight,Z.walkableClimb,J,te))return G("Failed to build compact data");if(O||(S(J),I.heightfield=void 0),!w(P,Z.walkableRadius,te))return G("Failed to erode walkable area");if(!y(P,te))return G("Failed to build distance field");if(!p(P,te,Z.borderSize,Z.minRegionArea,Z.mergeRegionArea))return G("Failed to build regions");const ie=R();if(I.contourSet=ie,!x(P,te,Z.maxSimplificationError,Z.maxEdgeLen,ie,C.Module.RC_CONTOUR_TESS_WALL_EDGES))return G("Failed to create contours");const le=k();if(I.polyMesh=le,!z(P,ie,Z.maxVertsPerPoly,le))return G("Failed to triangulate contours");const ae=_();if(I.polyMeshDetail=ae,!A(P,le,te,Z.detailSampleDist,Z.detailSampleMaxError,ae))return G("Failed to build detail mesh");O||(v(te),I.compactHeightfield=void 0,T(ie),I.contourSet=void 0);for(let e=0;e<le.npolys();e++)le.areas(e)==C.Recast.WALKABLE_AREA&&le.setAreas(e,0),0==le.areas(e)&&le.setFlags(e,1);const oe=new E;oe.setPolyMeshCreateParams(le),oe.setPolyMeshDetailCreateParams(ae),oe.setWalkableHeight(Z.walkableHeight),oe.setWalkableRadius(Z.walkableRadius),oe.setWalkableClimb(Z.walkableClimb),oe.setCellSize(Z.cs),oe.setCellHeight(Z.ch),oe.setBuildBvTree(!0),L.offMeshConnections&&oe.setOffMeshConnections(L.offMeshConnections);const re=H(oe);if(!re.success)return G("Failed to create Detour navmesh data");const{navMeshData:se}=re;return $.initSolo(se)?{success:!0,navMesh:$,intermediates:I}:G("Failed to create Detour navmesh")},ie={...t,tileSize:32,expectedLayersPerTile:4,maxObstacles:128},le=()=>new L(((e,t,i)=>{for(let l=0;l<e.polyCount();++l)t.set(l,0),i.set(l,1)})),ae=(t,y,p={},R=!1)=>{const x=new i,k={type:"tilecache",buildContext:x,chunkyTriMesh:void 0,tileIntermediates:[]},z=new O,_=new l,A=t,T=y.length,E=new a;E.copy(A);const H=y,D=y.length/3,F=new o;F.copy(H);const{bbMin:L,bbMax:j}=q(t,y),{expectedLayersPerTile:ee,maxObstacles:te,...ae}={...ie,...p},oe=()=>{if(E.destroy(),F.destroy(),!R)for(let e=0;e<k.tileIntermediates.length;e++){const t=k.tileIntermediates[e];t.heightfield&&(S(t.heightfield),t.heightfield=void 0),t.compactHeightfield&&(v(t.compactHeightfield),t.compactHeightfield=void 0),t.heightfieldLayerSet&&(G(t.heightfieldLayerSet),t.heightfieldLayerSet=void 0)}},re=e=>(oe(),z.destroy(),_.destroy(),{success:!1,navMesh:void 0,tileCache:void 0,intermediates:k,error:e}),se=r(ae),ne=s(L,j,se.cs);se.width=ne.width,se.height=ne.height,se.minRegionArea=se.minRegionArea*se.minRegionArea,se.mergeRegionArea=se.mergeRegionArea*se.mergeRegionArea,se.detailSampleDist=se.detailSampleDist<.9?0:se.cs*se.detailSampleDist,se.detailSampleMaxError=se.ch*se.detailSampleMaxError;const de=Math.floor(se.tileSize),he=Math.floor((se.width+de-1)/de),ce=Math.floor((se.height+de-1)/de);se.borderSize=se.walkableRadius+3,se.width=se.tileSize+2*se.borderSize,se.height=se.tileSize+2*se.borderSize;const me=P.create({orig:L,cs:se.cs,ch:se.ch,width:se.tileSize,height:se.tileSize,walkableHeight:se.walkableHeight,walkableRadius:se.walkableRadius,walkableClimb:se.walkableClimb,maxSimplificationError:se.maxSimplificationError,maxTiles:he*ce*ee,maxObstacles:te}),ge=new C.RecastLinearAllocator(32e3),ue=new C.RecastFastLZCompressor,be=p.tileCacheMeshProcess??le();if(!z.init(me,ge,ue,be))return re("Failed to initialize tile cache");const fe=e.fromArray(L);let Me=Math.min(Math.floor(J(Q(he*ce*ee))),14);Me>14&&(Me=14);const Se=1<<Me,we=1<<22-Me,ye=I.create({orig:fe,tileWidth:se.tileSize*se.cs,tileHeight:se.tileSize*se.cs,maxTiles:Se,maxPolys:we});if(!_.initTiled(ye))return re("Failed to initialize tiled navmesh");const pe=new $;if(k.chunkyTriMesh=pe,!pe.init(E,F,D,256))return re("Failed to build chunky triangle mesh");const Re=(e,t)=>{const i={tileX:e,tileY:t},l=se.tileSize*se.cs,a=N(se),o=[L[0]+e*l,L[1],L[2]+t*l],r=[L[0]+(e+1)*l,j[1],L[2]+(t+1)*l];o[0]-=a.borderSize*a.cs,o[2]-=a.borderSize*a.cs,r[0]+=a.borderSize*a.cs,r[2]+=a.borderSize*a.cs,a.set_bmin(0,o[0]),a.set_bmin(1,o[1]),a.set_bmin(2,o[2]),a.set_bmax(0,r[0]),a.set_bmax(1,r[1]),a.set_bmax(2,r[2]);const s=n();if(i.heightfield=s,!d(x,s,a.width,a.height,o,r,a.cs,a.ch))return{n:0};const y=[o[0],o[2]],p=[r[0],r[2]],z=new W;z.resize(512);const _=pe.getChunksOverlappingRect(y,p,z,512);if(0===_)return{n:0};for(let e=0;e<_;++e){const t=z.get(e),i=pe.nodes(t).n,l=pe.getNodeTris(t),o=new h;o.resize(i),c(x,a.walkableSlopeAngle,E,T,l,i,o);const r=m(x,E,T,l,o,i,s,a.walkableClimb);if(o.destroy(),!r)return{n:0}}g(x,se.walkableClimb,s),u(x,se.walkableHeight,se.walkableClimb,s),b(x,se.walkableHeight,s);const A=f();if(!M(x,se.walkableHeight,se.walkableClimb,s,A))return{n:0};if(R||(S(i.heightfield),i.heightfield=void 0),!w(x,se.walkableRadius,A))return{n:0};const H=B();if(!K(x,A,se.borderSize,se.walkableHeight,H))return{n:0};R||(v(A),i.compactHeightfield=void 0);const D=[];for(let i=0;i<H.nlayers();i++){const l=new V,a=H.layers(i),o=new C.dtTileCacheLayerHeader;o.magic=C.Detour.TILECACHE_MAGIC,o.version=C.Detour.TILECACHE_VERSION,o.tx=e,o.ty=t,o.tlayer=i;const r=a.bmin(),s=a.bmax();o.set_bmin(0,r.x),o.set_bmin(1,r.y),o.set_bmin(2,r.z),o.set_bmax(0,s.x),o.set_bmax(1,s.y),o.set_bmax(2,s.z),o.width=a.width(),o.height=a.height(),o.minx=a.minx(),o.maxx=a.maxx(),o.miny=a.miny(),o.maxy=a.maxy(),o.hmin=a.hmin(),o.hmax=a.hmax();const n=X(a),d=Y(a),h=U(a),c=Z(ue,o,n,d,h,l);if(C.Detour.statusFailed(c))return{n:0};D.push(l)}return R||(G(H),i.heightfieldLayerSet=void 0),k.tileIntermediates.push(i),{n:D.length,tiles:D}};for(let e=0;e<ce;++e)for(let t=0;t<he;++t){const{n:i,tiles:l}=Re(t,e);if(i>0&&l)for(let a=0;a<i;a++){const i=l[a],o=z.addTile(i);C.Detour.statusFailed(o.status)&&x.log(C.Module.RC_LOG_WARNING,`Failed to add tile to tile cache - tx: ${t}, ty: ${e}`)}}for(let e=0;e<ce;e++)for(let t=0;t<he;t++){const i=z.buildNavMeshTilesAt(t,e,_);if(C.Detour.statusFailed(i))return re(`Failed to build nav mesh tiles at ${t}, ${e}`)}return oe(),{success:!0,tileCache:z,navMesh:_,intermediates:k}},oe={...t},re=(t,L,O={},P=!1)=>{const G=new i,B={type:"tiled",buildContext:G,chunkyTriMesh:void 0,tileIntermediates:[]},K=new l,V=t,X=L.length,Y=new a;Y.copy(V);const U=L,Z=L.length/3,ee=new o;ee.copy(U);const te=()=>{if(Y.destroy(),ee.destroy(),!P){for(let e=0;e<B.tileIntermediates.length;e++){const t=B.tileIntermediates[e];t.compactHeightfield&&v(t.compactHeightfield),t.heightfield&&S(t.heightfield),t.contourSet&&T(t.contourSet),t.polyMesh&&D(t.polyMesh),t.polyMeshDetail&&F(t.polyMeshDetail)}B.chunkyTriMesh&&(B.chunkyTriMesh=void 0)}},ie=e=>(te(),K.destroy(),{success:!1,navMesh:void 0,intermediates:B,error:e}),le=r({...oe,...O}),{bbMin:ae,bbMax:re}=q(t,L),se=s(ae,re,le.cs);le.width=se.width,le.height=se.height,le.minRegionArea=le.minRegionArea*le.minRegionArea,le.mergeRegionArea=le.mergeRegionArea*le.mergeRegionArea,le.tileSize=Math.floor(le.tileSize),le.borderSize=le.walkableRadius+3,le.width=le.tileSize+2*le.borderSize,le.height=le.tileSize+2*le.borderSize,le.detailSampleDist=le.detailSampleDist<.9?0:le.cs*le.detailSampleDist,le.detailSampleMaxError=le.ch*le.detailSampleMaxError;const ne=Math.floor(le.tileSize),de=Math.floor((se.width+ne-1)/ne),he=Math.floor((se.height+ne-1)/ne),ce=le.tileSize*le.cs,me=e.fromArray(ae);let ge=Math.min(Math.floor(J(Q(de*he))),14);ge>14&&(ge=14);const ue=1<<ge,be=1<<22-ge,fe=I.create({orig:me,tileWidth:le.tileSize*le.cs,tileHeight:le.tileSize*le.cs,maxTiles:ue,maxPolys:be});if(!K.initTiled(fe))return ie("Could not init nav mesh for tiled use");const Me=new $;if(B.chunkyTriMesh=Me,!Me.init(Y,ee,Z,256))return ie("Failed to build chunky triangle mesh");const Se=(e,t,i,l)=>{const a=e=>(G.log(C.Module.RC_LOG_ERROR,e),{success:!1,error:e}),o={tileX:e,tileY:t};B.tileIntermediates.push(o);const r=N(le),s=[...i],D=[...l];s[0]-=r.borderSize*r.cs,s[2]-=r.borderSize*r.cs,D[0]+=r.borderSize*r.cs,D[2]+=r.borderSize*r.cs,r.set_bmin(0,s[0]),r.set_bmin(1,s[1]),r.set_bmin(2,s[2]),r.set_bmax(0,D[0]),r.set_bmax(1,D[1]),r.set_bmax(2,D[2]),G.resetTimers(),G.startTimer(C.Module.RC_TIMER_TOTAL),G.log(C.Module.RC_LOG_PROGRESS,`Building tile ${B.tileIntermediates.length} at x: ${e}, y: ${t}`),G.log(C.Module.RC_LOG_PROGRESS,` - ${le.width} x ${le.height} cells`),G.log(C.Module.RC_LOG_PROGRESS,` - ${X/1e3}fK verts, ${Z/1e3}K tris`);const F=n();if(o.heightfield=F,!d(G,F,r.width,r.height,s,D,r.cs,r.ch))return a("Could not create heightfield");(new h).resize(Me.maxTrisPerChunk());const L=[s[0],s[2]],I=[D[0],D[2]],$=new W;$.resize(512);const K=Me.getChunksOverlappingRect(L,I,$,512);if(0===K)return{success:!0};for(let e=0;e<K;++e){const t=$.get(e),i=Me.nodes(t).n,l=Me.getNodeTris(t),o=new h;o.resize(i),c(G,r.walkableSlopeAngle,Y,X,l,i,o);const s=m(G,Y,X,l,o,i,F,r.walkableClimb);if(o.destroy(),!s)return a("Could not rasterize triangles")}g(G,r.walkableClimb,F),u(G,r.walkableHeight,r.walkableClimb,F),b(G,r.walkableHeight,F);const V=f();if(o.compactHeightfield=V,!M(G,r.walkableHeight,r.walkableClimb,F,V))return a("Could not build compact heightfield");if(P||(S(o.heightfield),o.heightfield=void 0),!w(G,r.walkableRadius,V))return a("Could not erode walkable area");if(!y(G,V))return a("Failed to build distance field");if(!p(G,V,r.borderSize,r.minRegionArea,r.mergeRegionArea))return a("Failed to build regions");const U=R();if(o.contourSet=U,!x(G,V,r.maxSimplificationError,r.maxEdgeLen,U,C.Module.RC_CONTOUR_TESS_WALL_EDGES))return a("Failed to create contours");const j=k();if(o.polyMesh=j,!z(G,U,r.maxVertsPerPoly,j))return a("Failed to triangulate contours");const q=_();if(o.polyMeshDetail=q,!A(G,j,V,r.detailSampleDist,r.detailSampleMaxError,q))return a("Failed to build detail mesh");P||(v(V),o.compactHeightfield=void 0,T(U),o.contourSet=void 0);for(let e=0;e<j.npolys();e++)j.areas(e)==C.Recast.WALKABLE_AREA&&j.setAreas(e,0),0==j.areas(e)&&j.setFlags(e,1);const J=new E;J.setPolyMeshCreateParams(j),J.setPolyMeshDetailCreateParams(q),J.setWalkableHeight(r.walkableHeight),J.setWalkableRadius(r.walkableRadius),J.setWalkableClimb(r.walkableClimb),J.setCellSize(r.cs),J.setCellHeight(r.ch),J.setBuildBvTree(!0),O.offMeshConnections&&J.setOffMeshConnections(O.offMeshConnections),J.setTileX(e),J.setTileY(t);const Q=H(J);return Q.success?(G.log(C.Module.RC_LOG_PROGRESS,`>> Polymesh: ${j.nverts()} vertices ${j.npolys()} polygons`),{success:!0,data:Q.navMeshData}):a("Failed to create Detour navmesh data")};G.startTimer(C.Module.RC_TIMER_TEMP);const we=[0,0,0],ye=[0,0,0];for(let e=0;e<he;e++)for(let t=0;t<de;t++){we[0]=ae[0]+t*ce,we[1]=ae[1],we[2]=ae[2]+e*ce,ye[0]=ae[0]+(t+1)*ce,ye[1]=re[1],ye[2]=ae[2]+(e+1)*ce;const i=Se(t,e,we,ye);if(i.success&&i.data){K.removeTile(K.getTileRefAt(t,e,0));const l=K.addTile(i.data,C.Module.DT_TILE_FREE_DATA,0);C.Detour.statusFailed(l.status)&&(G.log(C.Module.RC_LOG_WARNING,`Failed to add tile to nav mesh\n\ttx: ${t}, ty: ${e},status: ${j(l.status)} (${l.status})`),i.data.destroy())}}return G.stopTimer(C.Module.RC_TIMER_TEMP),P||te(),{success:!0,navMesh:K,intermediates:B}};export{le as createDefaultTileCacheMeshProcess,J as dtIlog2,Q as dtNextPow2,te as generateSoloNavMesh,ae as generateTileCache,re as generateTiledNavMesh,q as getBoundingBox,ee as soloNavMeshGeneratorConfigDefaults,ie as tileCacheGeneratorConfigDefaults,oe as tiledNavMeshGeneratorConfigDefaults};
1
+ import{vec3 as e,recastConfigDefaults as t,Raw as i,RecastBuildContext as a,NavMesh as l,VerticesArray as o,TrianglesArray as s,createRcConfig as r,calcGridSize as n,allocHeightfield as d,createHeightfield as h,TriangleAreasArray as c,markWalkableTriangles as m,rasterizeTriangles as g,filterLowHangingWalkableObstacles as u,filterLedgeSpans as b,filterWalkableLowHeightSpans as f,allocCompactHeightfield as w,buildCompactHeightfield as M,freeHeightfield as S,erodeWalkableArea as y,buildDistanceField as p,buildRegions as R,allocContourSet as x,buildContours as C,allocPolyMesh as k,buildPolyMesh as v,allocPolyMeshDetail as z,buildPolyMeshDetail as A,freeCompactHeightfield as _,freeContourSet as T,NavMeshCreateParams as E,createNavMeshData as H,freePolyMesh as D,freePolyMeshDetail as F,TileCacheMeshProcess as L,TileCache as P,DetourTileCacheParams as O,NavMeshParams as I,RecastChunkyTriMesh as $,freeHeightfieldLayerSet as G,cloneRcConfig as N,ChunkIdsArray as W,allocHeightfieldLayerSet as B,buildHeightfieldLayers as j,TileCacheData as K,getHeightfieldLayerHeights as V,getHeightfieldLayerAreas as X,getHeightfieldLayerCons as Y,buildTileCacheLayer as U,statusToReadableString as Z}from"@recast-navigation/core";const q=(t,i)=>{const a={x:1/0,y:1/0,z:1/0},l={x:-1/0,y:-1/0,z:-1/0};for(let e=0;e<i.length;e++){const o=i[e],s=t[3*o],r=t[3*o+1],n=t[3*o+2];a.x=Math.min(a.x,s),a.y=Math.min(a.y,r),a.z=Math.min(a.z,n),l.x=Math.max(l.x,s),l.y=Math.max(l.y,r),l.z=Math.max(l.z,n)}return{bbMin:e.toArray(a),bbMax:e.toArray(l)}},J=e=>{let t=0,i=0;return t=Number(e>65535)<<4,e>>=t,i=Number(e>255)<<3,e>>=i,t|=i,i=Number(e>15)<<2,e>>=i,t|=i,i=Number(e>3)<<1,t|=i,t|=(e>>=i)>>1,t},Q=e=>(e--,e|=e>>1,e|=e>>2,e|=e>>4,e|=e>>8,e|=e>>16,++e),ee={...t},te=(e,t,L={},P=!1)=>{if(!i.Module)throw new Error('"init" must be called before using any recast-navigation-js APIs. See: https://github.com/isaac-mason/recast-navigation-js?tab=readme-ov-file#initialization');const O=new a,I={type:"solo",buildContext:O},$=new l,G=e=>(P||(I.heightfield&&(S(I.heightfield),I.heightfield=void 0),I.compactHeightfield&&(_(I.compactHeightfield),I.compactHeightfield=void 0),I.contourSet&&(T(I.contourSet),I.contourSet=void 0),I.polyMesh&&(D(I.polyMesh),I.polyMesh=void 0),I.polyMeshDetail&&(F(I.polyMeshDetail),I.polyMeshDetail=void 0)),$.destroy(),{navMesh:void 0,success:!1,intermediates:I,error:e}),N=e,W=t.length,B=new o;B.copy(N);const j=t,K=t.length/3,V=new s;V.copy(j);const{bbMin:X,bbMax:Y}=q(e,t),U=r({...ee,...L});U.minRegionArea=U.minRegionArea*U.minRegionArea,U.mergeRegionArea=U.mergeRegionArea*U.mergeRegionArea,U.detailSampleDist=U.detailSampleDist<.9?0:U.cs*U.detailSampleDist,U.detailSampleMaxError=U.ch*U.detailSampleMaxError;const Z=n(X,Y,U.cs);U.width=Z.width,U.height=Z.height;const J=d();if(I.heightfield=J,!h(O,J,U.width,U.height,X,Y,U.cs,U.ch))return G("Could not create heightfield");const Q=new c;if(Q.resize(K),m(O,U.walkableSlopeAngle,B,W,V,K,Q),!g(O,B,W,V,Q,K,J,U.walkableClimb))return G("Could not rasterize triangles");Q.destroy(),B.destroy(),V.destroy(),u(O,U.walkableClimb,J),b(O,U.walkableHeight,U.walkableClimb,J),f(O,U.walkableHeight,J);const te=w();if(I.compactHeightfield=te,!M(O,U.walkableHeight,U.walkableClimb,J,te))return G("Failed to build compact data");if(P||(S(J),I.heightfield=void 0),!y(O,U.walkableRadius,te))return G("Failed to erode walkable area");if(!p(O,te))return G("Failed to build distance field");if(!R(O,te,U.borderSize,U.minRegionArea,U.mergeRegionArea))return G("Failed to build regions");const ie=x();if(I.contourSet=ie,!C(O,te,U.maxSimplificationError,U.maxEdgeLen,ie,i.Module.RC_CONTOUR_TESS_WALL_EDGES))return G("Failed to create contours");const ae=k();if(I.polyMesh=ae,!v(O,ie,U.maxVertsPerPoly,ae))return G("Failed to triangulate contours");const le=z();if(I.polyMeshDetail=le,!A(O,ae,te,U.detailSampleDist,U.detailSampleMaxError,le))return G("Failed to build detail mesh");P||(_(te),I.compactHeightfield=void 0,T(ie),I.contourSet=void 0);for(let e=0;e<ae.npolys();e++)ae.areas(e)==i.Recast.WALKABLE_AREA&&ae.setAreas(e,0),0==ae.areas(e)&&ae.setFlags(e,1);const oe=new E;oe.setPolyMeshCreateParams(ae),oe.setPolyMeshDetailCreateParams(le),oe.setWalkableHeight(U.walkableHeight),oe.setWalkableRadius(U.walkableRadius),oe.setWalkableClimb(U.walkableClimb),oe.setCellSize(U.cs),oe.setCellHeight(U.ch),oe.setBuildBvTree(!0),L.offMeshConnections&&oe.setOffMeshConnections(L.offMeshConnections);const se=H(oe);if(!se.success)return G("Failed to create Detour navmesh data");const{navMeshData:re}=se;return $.initSolo(re)?{success:!0,navMesh:$,intermediates:I}:G("Failed to create Detour navmesh")},ie={...t,tileSize:32,expectedLayersPerTile:4,maxObstacles:128},ae=()=>new L(((e,t,i)=>{for(let a=0;a<e.polyCount();++a)t.set(a,0),i.set(a,1)})),le=(t,p,R={},x=!1)=>{if(!i.Module)throw new Error('"init" must be called before using any recast-navigation-js APIs. See: https://github.com/isaac-mason/recast-navigation-js?tab=readme-ov-file#initialization');const C=new a,k={type:"tilecache",buildContext:C,chunkyTriMesh:void 0,tileIntermediates:[]},v=new P,z=new l,A=t,T=p.length,E=new o;E.copy(A);const H=p,D=p.length/3,F=new s;F.copy(H);const{bbMin:L,bbMax:Z}=q(t,p),{expectedLayersPerTile:ee,maxObstacles:te,...le}={...ie,...R},oe=()=>{if(E.destroy(),F.destroy(),!x)for(let e=0;e<k.tileIntermediates.length;e++){const t=k.tileIntermediates[e];t.heightfield&&(S(t.heightfield),t.heightfield=void 0),t.compactHeightfield&&(_(t.compactHeightfield),t.compactHeightfield=void 0),t.heightfieldLayerSet&&(G(t.heightfieldLayerSet),t.heightfieldLayerSet=void 0)}},se=e=>(oe(),v.destroy(),z.destroy(),{success:!1,navMesh:void 0,tileCache:void 0,intermediates:k,error:e}),re=r(le),ne=n(L,Z,re.cs);re.width=ne.width,re.height=ne.height,re.minRegionArea=re.minRegionArea*re.minRegionArea,re.mergeRegionArea=re.mergeRegionArea*re.mergeRegionArea,re.detailSampleDist=re.detailSampleDist<.9?0:re.cs*re.detailSampleDist,re.detailSampleMaxError=re.ch*re.detailSampleMaxError;const de=Math.floor(re.tileSize),he=Math.floor((re.width+de-1)/de),ce=Math.floor((re.height+de-1)/de);re.borderSize=re.walkableRadius+3,re.width=re.tileSize+2*re.borderSize,re.height=re.tileSize+2*re.borderSize;const me=O.create({orig:L,cs:re.cs,ch:re.ch,width:re.tileSize,height:re.tileSize,walkableHeight:re.walkableHeight,walkableRadius:re.walkableRadius,walkableClimb:re.walkableClimb,maxSimplificationError:re.maxSimplificationError,maxTiles:he*ce*ee,maxObstacles:te}),ge=new i.RecastLinearAllocator(32e3),ue=new i.RecastFastLZCompressor,be=R.tileCacheMeshProcess??ae();if(!v.init(me,ge,ue,be))return se("Failed to initialize tile cache");const fe=e.fromArray(L);let we=Math.min(Math.floor(J(Q(he*ce*ee))),14);we>14&&(we=14);const Me=1<<we,Se=1<<22-we,ye=I.create({orig:fe,tileWidth:re.tileSize*re.cs,tileHeight:re.tileSize*re.cs,maxTiles:Me,maxPolys:Se});if(!z.initTiled(ye))return se("Failed to initialize tiled navmesh");const pe=new $;if(k.chunkyTriMesh=pe,!pe.init(E,F,D,256))return se("Failed to build chunky triangle mesh");const Re=(e,t)=>{const a={tileX:e,tileY:t},l=re.tileSize*re.cs,o=N(re),s=[L[0]+e*l,L[1],L[2]+t*l],r=[L[0]+(e+1)*l,Z[1],L[2]+(t+1)*l];s[0]-=o.borderSize*o.cs,s[2]-=o.borderSize*o.cs,r[0]+=o.borderSize*o.cs,r[2]+=o.borderSize*o.cs,o.set_bmin(0,s[0]),o.set_bmin(1,s[1]),o.set_bmin(2,s[2]),o.set_bmax(0,r[0]),o.set_bmax(1,r[1]),o.set_bmax(2,r[2]);const n=d();if(a.heightfield=n,!h(C,n,o.width,o.height,s,r,o.cs,o.ch))return{n:0};const p=[s[0],s[2]],R=[r[0],r[2]],v=new W;v.resize(512);const z=pe.getChunksOverlappingRect(p,R,v,512);if(0===z)return{n:0};for(let e=0;e<z;++e){const t=v.get(e),i=pe.nodes(t).n,a=pe.getNodeTris(t),l=new c;l.resize(i),m(C,o.walkableSlopeAngle,E,T,a,i,l);const s=g(C,E,T,a,l,i,n,o.walkableClimb);if(l.destroy(),!s)return{n:0}}u(C,re.walkableClimb,n),b(C,re.walkableHeight,re.walkableClimb,n),f(C,re.walkableHeight,n);const A=w();if(!M(C,re.walkableHeight,re.walkableClimb,n,A))return{n:0};if(x||(S(a.heightfield),a.heightfield=void 0),!y(C,re.walkableRadius,A))return{n:0};const H=B();if(!j(C,A,re.borderSize,re.walkableHeight,H))return{n:0};x||(_(A),a.compactHeightfield=void 0);const D=[];for(let a=0;a<H.nlayers();a++){const l=new K,o=H.layers(a),s=new i.dtTileCacheLayerHeader;s.magic=i.Detour.TILECACHE_MAGIC,s.version=i.Detour.TILECACHE_VERSION,s.tx=e,s.ty=t,s.tlayer=a;const r=o.bmin(),n=o.bmax();s.set_bmin(0,r.x),s.set_bmin(1,r.y),s.set_bmin(2,r.z),s.set_bmax(0,n.x),s.set_bmax(1,n.y),s.set_bmax(2,n.z),s.width=o.width(),s.height=o.height(),s.minx=o.minx(),s.maxx=o.maxx(),s.miny=o.miny(),s.maxy=o.maxy(),s.hmin=o.hmin(),s.hmax=o.hmax();const d=V(o),h=X(o),c=Y(o),m=U(ue,s,d,h,c,l);if(i.Detour.statusFailed(m))return{n:0};D.push(l)}return x||(G(H),a.heightfieldLayerSet=void 0),k.tileIntermediates.push(a),{n:D.length,tiles:D}};for(let e=0;e<ce;++e)for(let t=0;t<he;++t){const{n:a,tiles:l}=Re(t,e);if(a>0&&l)for(let o=0;o<a;o++){const a=l[o],s=v.addTile(a);i.Detour.statusFailed(s.status)&&C.log(i.Module.RC_LOG_WARNING,`Failed to add tile to tile cache - tx: ${t}, ty: ${e}`)}}for(let e=0;e<ce;e++)for(let t=0;t<he;t++){const a=v.buildNavMeshTilesAt(t,e,z);if(i.Detour.statusFailed(a))return se(`Failed to build nav mesh tiles at ${t}, ${e}`)}return oe(),{success:!0,tileCache:v,navMesh:z,intermediates:k}},oe={...t},se=(t,L,P={},O=!1)=>{if(!i.Module)throw new Error('"init" must be called before using any recast-navigation-js APIs. See: https://github.com/isaac-mason/recast-navigation-js?tab=readme-ov-file#initialization');const G=new a,B={type:"tiled",buildContext:G,chunkyTriMesh:void 0,tileIntermediates:[]},j=new l,K=t,V=L.length,X=new o;X.copy(K);const Y=L,U=L.length/3,ee=new s;ee.copy(Y);const te=()=>{if(X.destroy(),ee.destroy(),!O){for(let e=0;e<B.tileIntermediates.length;e++){const t=B.tileIntermediates[e];t.compactHeightfield&&_(t.compactHeightfield),t.heightfield&&S(t.heightfield),t.contourSet&&T(t.contourSet),t.polyMesh&&D(t.polyMesh),t.polyMeshDetail&&F(t.polyMeshDetail)}B.chunkyTriMesh&&(B.chunkyTriMesh=void 0)}},ie=e=>(te(),j.destroy(),{success:!1,navMesh:void 0,intermediates:B,error:e}),ae=r({...oe,...P}),{bbMin:le,bbMax:se}=q(t,L),re=n(le,se,ae.cs);ae.width=re.width,ae.height=re.height,ae.minRegionArea=ae.minRegionArea*ae.minRegionArea,ae.mergeRegionArea=ae.mergeRegionArea*ae.mergeRegionArea,ae.tileSize=Math.floor(ae.tileSize),ae.borderSize=ae.walkableRadius+3,ae.width=ae.tileSize+2*ae.borderSize,ae.height=ae.tileSize+2*ae.borderSize,ae.detailSampleDist=ae.detailSampleDist<.9?0:ae.cs*ae.detailSampleDist,ae.detailSampleMaxError=ae.ch*ae.detailSampleMaxError;const ne=Math.floor(ae.tileSize),de=Math.floor((re.width+ne-1)/ne),he=Math.floor((re.height+ne-1)/ne),ce=ae.tileSize*ae.cs,me=e.fromArray(le);let ge=Math.min(Math.floor(J(Q(de*he))),14);ge>14&&(ge=14);const ue=1<<ge,be=1<<22-ge,fe=I.create({orig:me,tileWidth:ae.tileSize*ae.cs,tileHeight:ae.tileSize*ae.cs,maxTiles:ue,maxPolys:be});if(!j.initTiled(fe))return ie("Could not init nav mesh for tiled use");const we=new $;if(B.chunkyTriMesh=we,!we.init(X,ee,U,256))return ie("Failed to build chunky triangle mesh");const Me=(e,t,a,l)=>{const o=e=>(G.log(i.Module.RC_LOG_ERROR,e),{success:!1,error:e}),s={tileX:e,tileY:t};B.tileIntermediates.push(s);const r=N(ae),n=[...a],D=[...l];n[0]-=r.borderSize*r.cs,n[2]-=r.borderSize*r.cs,D[0]+=r.borderSize*r.cs,D[2]+=r.borderSize*r.cs,r.set_bmin(0,n[0]),r.set_bmin(1,n[1]),r.set_bmin(2,n[2]),r.set_bmax(0,D[0]),r.set_bmax(1,D[1]),r.set_bmax(2,D[2]),G.resetTimers(),G.startTimer(i.Module.RC_TIMER_TOTAL),G.log(i.Module.RC_LOG_PROGRESS,`Building tile ${B.tileIntermediates.length} at x: ${e}, y: ${t}`),G.log(i.Module.RC_LOG_PROGRESS,` - ${ae.width} x ${ae.height} cells`),G.log(i.Module.RC_LOG_PROGRESS,` - ${V/1e3}fK verts, ${U/1e3}K tris`);const F=d();if(s.heightfield=F,!h(G,F,r.width,r.height,n,D,r.cs,r.ch))return o("Could not create heightfield");(new c).resize(we.maxTrisPerChunk());const L=[n[0],n[2]],I=[D[0],D[2]],$=new W;$.resize(512);const j=we.getChunksOverlappingRect(L,I,$,512);if(0===j)return{success:!0};for(let e=0;e<j;++e){const t=$.get(e),i=we.nodes(t).n,a=we.getNodeTris(t),l=new c;l.resize(i),m(G,r.walkableSlopeAngle,X,V,a,i,l);const s=g(G,X,V,a,l,i,F,r.walkableClimb);if(l.destroy(),!s)return o("Could not rasterize triangles")}u(G,r.walkableClimb,F),b(G,r.walkableHeight,r.walkableClimb,F),f(G,r.walkableHeight,F);const K=w();if(s.compactHeightfield=K,!M(G,r.walkableHeight,r.walkableClimb,F,K))return o("Could not build compact heightfield");if(O||(S(s.heightfield),s.heightfield=void 0),!y(G,r.walkableRadius,K))return o("Could not erode walkable area");if(!p(G,K))return o("Failed to build distance field");if(!R(G,K,r.borderSize,r.minRegionArea,r.mergeRegionArea))return o("Failed to build regions");const Y=x();if(s.contourSet=Y,!C(G,K,r.maxSimplificationError,r.maxEdgeLen,Y,i.Module.RC_CONTOUR_TESS_WALL_EDGES))return o("Failed to create contours");const Z=k();if(s.polyMesh=Z,!v(G,Y,r.maxVertsPerPoly,Z))return o("Failed to triangulate contours");const q=z();if(s.polyMeshDetail=q,!A(G,Z,K,r.detailSampleDist,r.detailSampleMaxError,q))return o("Failed to build detail mesh");O||(_(K),s.compactHeightfield=void 0,T(Y),s.contourSet=void 0);for(let e=0;e<Z.npolys();e++)Z.areas(e)==i.Recast.WALKABLE_AREA&&Z.setAreas(e,0),0==Z.areas(e)&&Z.setFlags(e,1);const J=new E;J.setPolyMeshCreateParams(Z),J.setPolyMeshDetailCreateParams(q),J.setWalkableHeight(r.walkableHeight),J.setWalkableRadius(r.walkableRadius),J.setWalkableClimb(r.walkableClimb),J.setCellSize(r.cs),J.setCellHeight(r.ch),J.setBuildBvTree(!0),P.offMeshConnections&&J.setOffMeshConnections(P.offMeshConnections),J.setTileX(e),J.setTileY(t);const Q=H(J);return Q.success?(G.log(i.Module.RC_LOG_PROGRESS,`>> Polymesh: ${Z.nverts()} vertices ${Z.npolys()} polygons`),{success:!0,data:Q.navMeshData}):o("Failed to create Detour navmesh data")};G.startTimer(i.Module.RC_TIMER_TEMP);const Se=[0,0,0],ye=[0,0,0];for(let e=0;e<he;e++)for(let t=0;t<de;t++){Se[0]=le[0]+t*ce,Se[1]=le[1],Se[2]=le[2]+e*ce,ye[0]=le[0]+(t+1)*ce,ye[1]=se[1],ye[2]=le[2]+(e+1)*ce;const a=Me(t,e,Se,ye);if(a.success&&a.data){j.removeTile(j.getTileRefAt(t,e,0));const l=j.addTile(a.data,i.Module.DT_TILE_FREE_DATA,0);i.Detour.statusFailed(l.status)&&(G.log(i.Module.RC_LOG_WARNING,`Failed to add tile to nav mesh\n\ttx: ${t}, ty: ${e},status: ${Z(l.status)} (${l.status})`),a.data.destroy())}}return G.stopTimer(i.Module.RC_TIMER_TEMP),O||te(),{success:!0,navMesh:j,intermediates:B}};export{ae as createDefaultTileCacheMeshProcess,J as dtIlog2,Q as dtNextPow2,te as generateSoloNavMesh,le as generateTileCache,se as generateTiledNavMesh,q as getBoundingBox,ee as soloNavMeshGeneratorConfigDefaults,ie as tileCacheGeneratorConfigDefaults,oe as tiledNavMeshGeneratorConfigDefaults};
2
2
  //# sourceMappingURL=index.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.mjs","sources":["../src/generators/common.ts","../src/generators/generate-solo-nav-mesh.ts","../src/generators/generate-tile-cache.ts","../src/generators/generate-tiled-nav-mesh.ts"],"sourcesContent":[null,null,null,null],"names":["getBoundingBox","positions","indices","bbMin","x","Infinity","y","z","bbMax","i","length","ind","Math","min","max","vec3","toArray","dtIlog2","v","r","shift","Number","dtNextPow2","soloNavMeshGeneratorConfigDefaults","recastConfigDefaults","generateSoloNavMesh","navMeshGeneratorConfig","keepIntermediates","buildContext","RecastBuildContext","intermediates","type","navMesh","NavMesh","fail","error","heightfield","freeHeightfield","undefined","compactHeightfield","freeCompactHeightfield","contourSet","freeContourSet","polyMesh","freePolyMesh","polyMeshDetail","freePolyMeshDetail","destroy","success","vertices","numVertices","verticesArray","VerticesArray","copy","triangles","numTriangles","trianglesArray","TrianglesArray","config","createRcConfig","minRegionArea","mergeRegionArea","detailSampleDist","cs","detailSampleMaxError","ch","gridSize","calcGridSize","width","height","allocHeightfield","createHeightfield","triangleAreasArray","TriangleAreasArray","resize","markWalkableTriangles","walkableSlopeAngle","rasterizeTriangles","walkableClimb","filterLowHangingWalkableObstacles","filterLedgeSpans","walkableHeight","filterWalkableLowHeightSpans","allocCompactHeightfield","buildCompactHeightfield","erodeWalkableArea","walkableRadius","buildDistanceField","buildRegions","borderSize","allocContourSet","buildContours","maxSimplificationError","maxEdgeLen","Raw","Module","RC_CONTOUR_TESS_WALL_EDGES","allocPolyMesh","buildPolyMesh","maxVertsPerPoly","allocPolyMeshDetail","buildPolyMeshDetail","npolys","areas","Recast","WALKABLE_AREA","setAreas","setFlags","navMeshCreateParams","NavMeshCreateParams","setPolyMeshCreateParams","setPolyMeshDetailCreateParams","setWalkableHeight","setWalkableRadius","setWalkableClimb","setCellSize","setCellHeight","setBuildBvTree","offMeshConnections","setOffMeshConnections","createNavMeshDataResult","createNavMeshData","navMeshData","initSolo","tileCacheGeneratorConfigDefaults","tileSize","expectedLayersPerTile","maxObstacles","createDefaultTileCacheMeshProcess","TileCacheMeshProcess","polyAreas","polyFlags","polyCount","set","generateTileCache","chunkyTriMesh","tileIntermediates","tileCache","TileCache","recastConfig","cleanup","tileIntermediate","heightfieldLayerSet","freeHeightfieldLayerSet","floor","tileWidth","tileHeight","tileCacheParams","DetourTileCacheParams","create","orig","maxTiles","allocator","RecastLinearAllocator","compressor","RecastFastLZCompressor","tileCacheMeshProcess","init","fromArray","tileBits","maxPolysPerTile","navMeshParams","NavMeshParams","maxPolys","initTiled","RecastChunkyTriMesh","rasterizeTileLayers","tileX","tileY","tcs","tileConfig","cloneRcConfig","tileBoundsMin","tileBoundsMax","set_bmin","set_bmax","n","tbmin","tbmax","chunkIdsArray","ChunkIdsArray","nChunksOverlapping","getChunksOverlappingRect","nodeId","get","nNodeTris","nodes","nodeTrianglesArray","getNodeTris","allocHeightfieldLayerSet","buildHeightfieldLayers","tiles","nlayers","tile","TileCacheData","heightfieldLayer","layers","header","dtTileCacheLayerHeader","magic","Detour","TILECACHE_MAGIC","version","TILECACHE_VERSION","tx","ty","tlayer","heightfieldLayerBin","bmin","heightfieldLayerBmax","bmax","minx","maxx","miny","maxy","hmin","hmax","heights","getHeightfieldLayerHeights","getHeightfieldLayerAreas","cons","getHeightfieldLayerCons","status","buildTileCacheLayer","statusFailed","push","newTiles","tileCacheData","addResult","addTile","log","RC_LOG_WARNING","dtStatus","buildNavMeshTilesAt","tiledNavMeshGeneratorConfigDefaults","generateTiledNavMesh","buildTileMesh","failTileMesh","RC_LOG_ERROR","expandedTileBoundsMin","expandedTileBoundsMax","resetTimers","startTimer","RC_TIMER_TOTAL","RC_LOG_PROGRESS","maxTrisPerChunk","setTileX","setTileY","nverts","data","RC_TIMER_TEMP","lastBuiltTileBmin","lastBuiltTileBmax","result","removeTile","getTileRefAt","addTileResult","DT_TILE_FREE_DATA","statusToReadableString","stopTimer"],"mappings":"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"}
1
+ {"version":3,"file":"index.mjs","sources":["../src/generators/common.ts","../src/generators/generate-solo-nav-mesh.ts","../src/generators/generate-tile-cache.ts","../src/generators/generate-tiled-nav-mesh.ts"],"sourcesContent":[null,null,null,null],"names":["getBoundingBox","positions","indices","bbMin","x","Infinity","y","z","bbMax","i","length","ind","Math","min","max","vec3","toArray","dtIlog2","v","r","shift","Number","dtNextPow2","soloNavMeshGeneratorConfigDefaults","recastConfigDefaults","generateSoloNavMesh","navMeshGeneratorConfig","keepIntermediates","Raw","Module","Error","buildContext","RecastBuildContext","intermediates","type","navMesh","NavMesh","fail","error","heightfield","freeHeightfield","undefined","compactHeightfield","freeCompactHeightfield","contourSet","freeContourSet","polyMesh","freePolyMesh","polyMeshDetail","freePolyMeshDetail","destroy","success","vertices","numVertices","verticesArray","VerticesArray","copy","triangles","numTriangles","trianglesArray","TrianglesArray","config","createRcConfig","minRegionArea","mergeRegionArea","detailSampleDist","cs","detailSampleMaxError","ch","gridSize","calcGridSize","width","height","allocHeightfield","createHeightfield","triangleAreasArray","TriangleAreasArray","resize","markWalkableTriangles","walkableSlopeAngle","rasterizeTriangles","walkableClimb","filterLowHangingWalkableObstacles","filterLedgeSpans","walkableHeight","filterWalkableLowHeightSpans","allocCompactHeightfield","buildCompactHeightfield","erodeWalkableArea","walkableRadius","buildDistanceField","buildRegions","borderSize","allocContourSet","buildContours","maxSimplificationError","maxEdgeLen","RC_CONTOUR_TESS_WALL_EDGES","allocPolyMesh","buildPolyMesh","maxVertsPerPoly","allocPolyMeshDetail","buildPolyMeshDetail","npolys","areas","Recast","WALKABLE_AREA","setAreas","setFlags","navMeshCreateParams","NavMeshCreateParams","setPolyMeshCreateParams","setPolyMeshDetailCreateParams","setWalkableHeight","setWalkableRadius","setWalkableClimb","setCellSize","setCellHeight","setBuildBvTree","offMeshConnections","setOffMeshConnections","createNavMeshDataResult","createNavMeshData","navMeshData","initSolo","tileCacheGeneratorConfigDefaults","tileSize","expectedLayersPerTile","maxObstacles","createDefaultTileCacheMeshProcess","TileCacheMeshProcess","polyAreas","polyFlags","polyCount","set","generateTileCache","chunkyTriMesh","tileIntermediates","tileCache","TileCache","recastConfig","cleanup","tileIntermediate","heightfieldLayerSet","freeHeightfieldLayerSet","floor","tileWidth","tileHeight","tileCacheParams","DetourTileCacheParams","create","orig","maxTiles","allocator","RecastLinearAllocator","compressor","RecastFastLZCompressor","tileCacheMeshProcess","init","fromArray","tileBits","maxPolysPerTile","navMeshParams","NavMeshParams","maxPolys","initTiled","RecastChunkyTriMesh","rasterizeTileLayers","tileX","tileY","tcs","tileConfig","cloneRcConfig","tileBoundsMin","tileBoundsMax","set_bmin","set_bmax","n","tbmin","tbmax","chunkIdsArray","ChunkIdsArray","nChunksOverlapping","getChunksOverlappingRect","nodeId","get","nNodeTris","nodes","nodeTrianglesArray","getNodeTris","allocHeightfieldLayerSet","buildHeightfieldLayers","tiles","nlayers","tile","TileCacheData","heightfieldLayer","layers","header","dtTileCacheLayerHeader","magic","Detour","TILECACHE_MAGIC","version","TILECACHE_VERSION","tx","ty","tlayer","heightfieldLayerBin","bmin","heightfieldLayerBmax","bmax","minx","maxx","miny","maxy","hmin","hmax","heights","getHeightfieldLayerHeights","getHeightfieldLayerAreas","cons","getHeightfieldLayerCons","status","buildTileCacheLayer","statusFailed","push","newTiles","tileCacheData","addResult","addTile","log","RC_LOG_WARNING","dtStatus","buildNavMeshTilesAt","tiledNavMeshGeneratorConfigDefaults","generateTiledNavMesh","buildTileMesh","failTileMesh","RC_LOG_ERROR","expandedTileBoundsMin","expandedTileBoundsMax","resetTimers","startTimer","RC_TIMER_TOTAL","RC_LOG_PROGRESS","maxTrisPerChunk","setTileX","setTileY","nverts","data","RC_TIMER_TEMP","lastBuiltTileBmin","lastBuiltTileBmax","result","removeTile","getTileRefAt","addTileResult","DT_TILE_FREE_DATA","statusToReadableString","stopTimer"],"mappings":"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"}
package/package.json CHANGED
@@ -6,7 +6,7 @@
6
6
  "email": "isaac@isaacmason.com",
7
7
  "url": "https://isaacmason.com/"
8
8
  },
9
- "version": "0.29.2",
9
+ "version": "0.31.0",
10
10
  "license": "MIT",
11
11
  "homepage": "https://github.com/isaac-mason/recast-navigation-js",
12
12
  "bugs": {
@@ -27,8 +27,8 @@
27
27
  "lint": "eslint --ext .ts src"
28
28
  },
29
29
  "dependencies": {
30
- "@recast-navigation/core": "0.29.2",
31
- "@recast-navigation/wasm": "0.29.2"
30
+ "@recast-navigation/core": "0.31.0",
31
+ "@recast-navigation/wasm": "0.31.0"
32
32
  },
33
33
  "devDependencies": {
34
34
  "@babel/core": "^7.24.5",