recast-navigation 0.25.0 → 0.27.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/generators.cjs CHANGED
@@ -1,2 +1,2 @@
1
- "use strict";var e=require("@recast-navigation/core");const t=(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 r=i[e],s=t[3*r],o=t[3*r+1],n=t[3*r+2];a.x=Math.min(a.x,s),a.y=Math.min(a.y,o),a.z=Math.min(a.z,n),l.x=Math.max(l.x,s),l.y=Math.max(l.y,o),l.z=Math.max(l.z,n)}return{bbMin:e.vec3.toArray(a),bbMax:e.vec3.toArray(l)}},i=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},a=e=>(e--,e|=e>>1,e|=e>>2,e|=e>>4,e|=e>>8,e|=e>>16,++e),l={...e.recastConfigDefaults},r={...e.recastConfigDefaults,tileSize:32,expectedLayersPerTile:4,maxObstacles:128},s=()=>new e.TileCacheMeshProcess(((e,t,i)=>{for(let a=0;a<e.polyCount();++a)t.set(a,0),i.set(a,1)})),o={...e.recastConfigDefaults};exports.createDefaultTileCacheMeshProcess=s,exports.dtIlog2=i,exports.dtNextPow2=a,exports.generateSoloNavMesh=(i,a,r={},s=!1)=>{const o=new e.RecastBuildContext,n={type:"solo",buildContext:o},h=new e.NavMesh,d=t=>(s||(n.heightfield&&(e.freeHeightfield(n.heightfield),n.heightfield=void 0),n.compactHeightfield&&(e.freeCompactHeightfield(n.compactHeightfield),n.compactHeightfield=void 0),n.contourSet&&(e.freeContourSet(n.contourSet),n.contourSet=void 0),n.polyMesh&&(e.freePolyMesh(n.polyMesh),n.polyMesh=void 0),n.polyMeshDetail&&(e.freePolyMeshDetail(n.polyMeshDetail),n.polyMeshDetail=void 0)),h.destroy(),{navMesh:void 0,success:!1,intermediates:n,error:t}),c=i,g=a.length,f=new e.Arrays.VertsArray;f.copy(c,c.length);const m=a,u=a.length/3,b=new e.Arrays.TrisArray;b.copy(m,m.length);const{bbMin:y,bbMax:M}=t(i,a),w=e.createRcConfig({...l,...r});w.minRegionArea=w.minRegionArea*w.minRegionArea,w.mergeRegionArea=w.mergeRegionArea*w.mergeRegionArea,w.detailSampleDist=w.detailSampleDist<.9?0:w.cs*w.detailSampleDist,w.detailSampleMaxError=w.ch*w.detailSampleMaxError;const C=e.calcGridSize(y,M,w.cs);w.width=C.width,w.height=C.height;const R=e.allocHeightfield();if(n.heightfield=R,!e.createHeightfield(o,R,w.width,w.height,y,M,w.cs,w.ch))return d("Could not create heightfield");const S=new e.Arrays.TriAreasArray;if(S.resize(u),e.markWalkableTriangles(o,w.walkableSlopeAngle,f,g,b,u,S),!e.rasterizeTriangles(o,f,g,b,S,u,R,w.walkableClimb))return d("Could not rasterize triangles");S.free(),e.filterLowHangingWalkableObstacles(o,w.walkableClimb,R),e.filterLedgeSpans(o,w.walkableHeight,w.walkableClimb,R),e.filterWalkableLowHeightSpans(o,w.walkableHeight,R);const p=e.allocCompactHeightfield();if(n.compactHeightfield=p,!e.buildCompactHeightfield(o,w.walkableHeight,w.walkableClimb,R,p))return d("Failed to build compact data");if(s||(e.freeHeightfield(R),n.heightfield=void 0),!e.erodeWalkableArea(o,w.walkableRadius,p))return d("Failed to erode walkable area");if(!e.buildDistanceField(o,p))return d("Failed to build distance field");if(!e.buildRegions(o,p,w.borderSize,w.minRegionArea,w.mergeRegionArea))return d("Failed to build regions");const x=e.allocContourSet();if(n.contourSet=x,!e.buildContours(o,p,w.maxSimplificationError,w.maxEdgeLen,x,e.Raw.Module.RC_CONTOUR_TESS_WALL_EDGES))return d("Failed to create contours");const A=e.allocPolyMesh();if(n.polyMesh=A,!e.buildPolyMesh(o,x,w.maxVertsPerPoly,A))return d("Failed to triangulate contours");const k=e.allocPolyMeshDetail();if(n.polyMeshDetail=k,!e.buildPolyMeshDetail(o,A,p,w.detailSampleDist,w.detailSampleMaxError,k))return d("Failed to build detail mesh");s||(e.freeCompactHeightfield(p),n.compactHeightfield=void 0,e.freeContourSet(x),n.contourSet=void 0);for(let t=0;t<A.npolys();t++)A.areas(t)==e.Raw.Recast.WALKABLE_AREA&&A.setAreas(t,0),0==A.areas(t)&&A.setFlags(t,1);const H=new e.NavMeshCreateParams;H.setPolyMeshCreateParams(A),H.setPolyMeshDetailCreateParams(k),H.setWalkableHeight(w.walkableHeight),H.setWalkableRadius(w.walkableRadius),H.setWalkableClimb(w.walkableClimb),H.setCellSize(w.cs),H.setCellHeight(w.ch),H.setBuildBvTree(!0),r.offMeshConnections&&H.setOffMeshConnections(r.offMeshConnections);const T=e.createNavMeshData(H);if(!T.success)return d("Failed to create Detour navmesh data");const{navMeshData:v}=T;return h.initSolo(v)?{success:!0,navMesh:h,intermediates:n}:d("Failed to create Detour navmesh")},exports.generateTileCache=(l,o,n={},h=!1)=>{const d=new e.RecastBuildContext,c={type:"tilecache",buildContext:d,chunkyTriMesh:void 0,tileIntermediates:[]},g=new e.TileCache,f=new e.NavMesh,m=()=>{if(!h)for(let t=0;t<c.tileIntermediates.length;t++){const i=c.tileIntermediates[t];i.heightfield&&(e.freeHeightfield(i.heightfield),i.heightfield=void 0),i.compactHeightfield&&(e.freeCompactHeightfield(i.compactHeightfield),i.compactHeightfield=void 0),i.heightfieldLayerSet&&(e.freeHeightfieldLayerSet(i.heightfieldLayerSet),i.heightfieldLayerSet=void 0)}},u=e=>(m(),g.destroy(),f.destroy(),{success:!1,navMesh:void 0,tileCache:void 0,intermediates:c,error:e}),b=l,y=o.length,M=new e.Arrays.VertsArray;M.copy(b,b.length);const w=o,C=o.length/3,R=new e.Arrays.TrisArray;R.copy(w,w.length);const{bbMin:S,bbMax:p}=t(l,o),{expectedLayersPerTile:x,maxObstacles:A,...k}={...r,...n},H=e.createRcConfig(k),T=e.calcGridSize(S,p,H.cs);H.width=T.width,H.height=T.height,H.minRegionArea=H.minRegionArea*H.minRegionArea,H.mergeRegionArea=H.mergeRegionArea*H.mergeRegionArea,H.detailSampleDist=H.detailSampleDist<.9?0:H.cs*H.detailSampleDist,H.detailSampleMaxError=H.ch*H.detailSampleMaxError;const v=Math.floor(H.tileSize),z=Math.floor((H.width+v-1)/v),_=Math.floor((H.height+v-1)/v);H.borderSize=H.walkableRadius+3,H.width=H.tileSize+2*H.borderSize,H.height=H.tileSize+2*H.borderSize;const D=e.DetourTileCacheParams.create({orig:S,cs:H.cs,ch:H.ch,width:H.tileSize,height:H.tileSize,walkableHeight:H.walkableHeight,walkableRadius:H.walkableRadius,walkableClimb:H.walkableClimb,maxSimplificationError:H.maxSimplificationError,maxTiles:z*_*x,maxObstacles:A}),L=new e.Raw.RecastLinearAllocator(32e3),P=new e.Raw.RecastFastLZCompressor,E=n.tileCacheMeshProcess??s();if(!g.init(D,L,P,E))return u("Failed to initialize tile cache");const F=e.vec3.fromArray(S);let N=Math.min(Math.floor(i(a(z*_*x))),14);N>14&&(N=14);const O=1<<N,W=1<<22-N,G=e.NavMeshParams.create({orig:F,tileWidth:H.tileSize*H.cs,tileHeight:H.tileSize*H.cs,maxTiles:O,maxPolys:W});if(!f.initTiled(G))return u("Failed to initialize tiled navmesh");const I=new e.RecastChunkyTriMesh;if(c.chunkyTriMesh=I,!I.init(M,R,C,256))return u("Failed to build chunky triangle mesh");const $=(t,i)=>{const a={tileX:t,tileY:i},l=H.tileSize*H.cs,r=e.cloneRcConfig(H),s=[S[0]+t*l,S[1],S[2]+i*l],o=[S[0]+(t+1)*l,p[1],S[2]+(i+1)*l];s[0]-=r.borderSize*r.cs,s[2]-=r.borderSize*r.cs,o[0]+=r.borderSize*r.cs,o[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,o[0]),r.set_bmax(1,o[1]),r.set_bmax(2,o[2]);const n=e.allocHeightfield();if(a.heightfield=n,!e.createHeightfield(d,n,r.width,r.height,s,o,r.cs,r.ch))return{n:0};const g=[s[0],s[2]],f=[o[0],o[2]],m=new e.Arrays.ChunkIdsArray;m.resize(512);const u=I.getChunksOverlappingRect(g,f,m,512);if(0===u)return{n:0};for(let t=0;t<u;++t){const i=m.get_data(t),a=I.nodes(i).n,l=I.getNodeTris(i),s=new e.Arrays.TriAreasArray;s.resize(a),e.markWalkableTriangles(d,r.walkableSlopeAngle,M,y,l,a,s);const o=e.rasterizeTriangles(d,M,y,l,s,a,n,r.walkableClimb);if(s.free(),!o)return{n:0}}e.filterLowHangingWalkableObstacles(d,H.walkableClimb,n),e.filterLedgeSpans(d,H.walkableHeight,H.walkableClimb,n),e.filterWalkableLowHeightSpans(d,H.walkableHeight,n);const b=e.allocCompactHeightfield();if(!e.buildCompactHeightfield(d,H.walkableHeight,H.walkableClimb,n,b))return{n:0};if(h||(e.freeHeightfield(a.heightfield),a.heightfield=void 0),!e.erodeWalkableArea(d,H.walkableRadius,b))return{n:0};const w=e.allocHeightfieldLayerSet();if(!e.buildHeightfieldLayers(d,b,H.borderSize,H.walkableHeight,w))return{n:0};h||(e.freeCompactHeightfield(b),a.compactHeightfield=void 0);const C=[];for(let a=0;a<w.nlayers();a++){const l=new e.Arrays.TileCacheData,r=w.layers(a),s=new e.Raw.dtTileCacheLayerHeader;s.magic=e.Raw.Detour.TILECACHE_MAGIC,s.version=e.Raw.Detour.TILECACHE_VERSION,s.tx=t,s.ty=i,s.tlayer=a;const o=r.bmin(),n=r.bmax();s.set_bmin(0,o.x),s.set_bmin(1,o.y),s.set_bmin(2,o.z),s.set_bmax(0,n.x),s.set_bmax(1,n.y),s.set_bmax(2,n.z),s.width=r.width(),s.height=r.height(),s.minx=r.minx(),s.maxx=r.maxx(),s.miny=r.miny(),s.maxy=r.maxy(),s.hmin=r.hmin(),s.hmax=r.hmax();const h=e.getHeightfieldLayerHeights(r),d=e.getHeightfieldLayerAreas(r),c=e.getHeightfieldLayerCons(r),g=e.buildTileCacheLayer(P,s,h,d,c,l);if(e.Raw.Detour.statusFailed(g))return{n:0};C.push(l)}return h||(e.freeHeightfieldLayerSet(w),a.heightfieldLayerSet=void 0),c.tileIntermediates.push(a),{n:C.length,tiles:C}};for(let t=0;t<_;++t)for(let i=0;i<z;++i){const{n:a,tiles:l}=$(i,t);if(a>0&&l)for(let r=0;r<a;r++){const a=l[r],s=g.addTile(a);e.Raw.Detour.statusFailed(s.status)&&d.log(e.Raw.Module.RC_LOG_WARNING,`Failed to add tile to tile cache - tx: ${i}, ty: ${t}`)}}for(let t=0;t<_;t++)for(let i=0;i<z;i++){const a=g.buildNavMeshTilesAt(i,t,f);if(e.Raw.Detour.statusFailed(a))return u(`Failed to build nav mesh tiles at ${i}, ${t}`)}return m(),{success:!0,tileCache:g,navMesh:f,intermediates:c}},exports.generateTiledNavMesh=(l,r,s={},n=!1)=>{const h=new e.RecastBuildContext,d={type:"tiled",buildContext:h,chunkyTriMesh:void 0,tileIntermediates:[]},c=new e.NavMesh,g=()=>{if(!n){for(let t=0;t<d.tileIntermediates.length;t++){const i=d.tileIntermediates[t];i.compactHeightfield&&e.freeCompactHeightfield(i.compactHeightfield),i.heightfield&&e.freeHeightfield(i.heightfield),i.contourSet&&e.freeContourSet(i.contourSet),i.polyMesh&&e.freePolyMesh(i.polyMesh),i.polyMeshDetail&&e.freePolyMeshDetail(i.polyMeshDetail)}d.chunkyTriMesh&&(d.chunkyTriMesh=void 0)}},f=e=>(g(),c.destroy(),{success:!1,navMesh:void 0,intermediates:d,error:e}),m=e.createRcConfig({...o,...s}),{bbMin:u,bbMax:b}=t(l,r),y=e.calcGridSize(u,b,m.cs);m.width=y.width,m.height=y.height,m.minRegionArea=m.minRegionArea*m.minRegionArea,m.mergeRegionArea=m.mergeRegionArea*m.mergeRegionArea,m.tileSize=Math.floor(m.tileSize),m.borderSize=m.walkableRadius+3,m.width=m.tileSize+2*m.borderSize,m.height=m.tileSize+2*m.borderSize,m.detailSampleDist=m.detailSampleDist<.9?0:m.cs*m.detailSampleDist,m.detailSampleMaxError=m.ch*m.detailSampleMaxError;const M=Math.floor(m.tileSize),w=Math.floor((y.width+M-1)/M),C=Math.floor((y.height+M-1)/M),R=m.tileSize*m.cs,S=l,p=r.length,x=new e.Arrays.VertsArray;x.copy(S,S.length);const A=r,k=r.length/3,H=new e.Arrays.TrisArray;H.copy(A,A.length);const T=e.vec3.fromArray(u);let v=Math.min(Math.floor(i(a(w*C))),14);v>14&&(v=14);const z=1<<v,_=1<<22-v,D=e.NavMeshParams.create({orig:T,tileWidth:m.tileSize*m.cs,tileHeight:m.tileSize*m.cs,maxTiles:z,maxPolys:_});if(!c.initTiled(D))return f("Could not init nav mesh for tiled use");const L=new e.RecastChunkyTriMesh;if(d.chunkyTriMesh=L,!L.init(x,H,k,256))return f("Failed to build chunky triangle mesh");const P=(t,i,a,l)=>{const r=t=>(h.log(e.Raw.Module.RC_LOG_ERROR,t),{success:!1,error:t}),o={tileX:t,tileY:i};d.tileIntermediates.push(o);const c=e.cloneRcConfig(m),g=[...a],f=[...l];g[0]-=c.borderSize*c.cs,g[2]-=c.borderSize*c.cs,f[0]+=c.borderSize*c.cs,f[2]+=c.borderSize*c.cs,c.set_bmin(0,g[0]),c.set_bmin(1,g[1]),c.set_bmin(2,g[2]),c.set_bmax(0,f[0]),c.set_bmax(1,f[1]),c.set_bmax(2,f[2]),h.resetTimers(),h.startTimer(e.Raw.Module.RC_TIMER_TOTAL),h.log(e.Raw.Module.RC_LOG_PROGRESS,`Building tile ${d.tileIntermediates.length} at x: ${t}, y: ${i}`),h.log(e.Raw.Module.RC_LOG_PROGRESS,` - ${m.width} x ${m.height} cells`),h.log(e.Raw.Module.RC_LOG_PROGRESS,` - ${p/1e3}fK verts, ${k/1e3}K tris`);const u=e.allocHeightfield();if(o.heightfield=u,!e.createHeightfield(h,u,c.width,c.height,g,f,c.cs,c.ch))return r("Could not create heightfield");(new e.Arrays.TriAreasArray).resize(L.maxTrisPerChunk());const b=[g[0],g[2]],y=[f[0],f[2]],M=new e.Arrays.ChunkIdsArray;M.resize(512);const w=L.getChunksOverlappingRect(b,y,M,512);if(0===w)return{success:!0};for(let t=0;t<w;++t){const i=M.get_data(t),a=L.nodes(i).n,l=L.getNodeTris(i),s=new e.Arrays.TriAreasArray;s.resize(a),e.markWalkableTriangles(h,c.walkableSlopeAngle,x,p,l,a,s);const o=e.rasterizeTriangles(h,x,p,l,s,a,u,c.walkableClimb);if(s.free(),!o)return r("Could not rasterize triangles")}e.filterLowHangingWalkableObstacles(h,c.walkableClimb,u),e.filterLedgeSpans(h,c.walkableHeight,c.walkableClimb,u),e.filterWalkableLowHeightSpans(h,c.walkableHeight,u);const C=e.allocCompactHeightfield();if(o.compactHeightfield=C,!e.buildCompactHeightfield(h,c.walkableHeight,c.walkableClimb,u,C))return r("Could not build compact heightfield");if(n||(e.freeHeightfield(o.heightfield),o.heightfield=void 0),!e.erodeWalkableArea(h,c.walkableRadius,C))return r("Could not erode walkable area");if(!e.buildDistanceField(h,C))return r("Failed to build distance field");if(!e.buildRegions(h,C,c.borderSize,c.minRegionArea,c.mergeRegionArea))return r("Failed to build regions");const R=e.allocContourSet();if(o.contourSet=R,!e.buildContours(h,C,c.maxSimplificationError,c.maxEdgeLen,R,e.Raw.Module.RC_CONTOUR_TESS_WALL_EDGES))return r("Failed to create contours");const S=e.allocPolyMesh();if(o.polyMesh=S,!e.buildPolyMesh(h,R,c.maxVertsPerPoly,S))return r("Failed to triangulate contours");const A=e.allocPolyMeshDetail();if(o.polyMeshDetail=A,!e.buildPolyMeshDetail(h,S,C,c.detailSampleDist,c.detailSampleMaxError,A))return r("Failed to build detail mesh");n||(e.freeCompactHeightfield(C),o.compactHeightfield=void 0,e.freeContourSet(R),o.contourSet=void 0);for(let t=0;t<S.npolys();t++)S.areas(t)==e.Raw.Recast.WALKABLE_AREA&&S.setAreas(t,0),0==S.areas(t)&&S.setFlags(t,1);const H=new e.NavMeshCreateParams;H.setPolyMeshCreateParams(S),H.setPolyMeshDetailCreateParams(A),H.setWalkableHeight(c.walkableHeight),H.setWalkableRadius(c.walkableRadius),H.setWalkableClimb(c.walkableClimb),H.setCellSize(c.cs),H.setCellHeight(c.ch),H.setBuildBvTree(!0),s.offMeshConnections&&H.setOffMeshConnections(s.offMeshConnections),H.setTileX(t),H.setTileY(i);const T=e.createNavMeshData(H);return T.success?(h.log(e.Raw.Module.RC_LOG_PROGRESS,`>> Polymesh: ${S.nverts()} vertices ${S.npolys()} polygons`),{success:!0,data:T.navMeshData}):r("Failed to create Detour navmesh data")};h.startTimer(e.Raw.Module.RC_TIMER_TEMP);const E=[0,0,0],F=[0,0,0];for(let t=0;t<C;t++)for(let i=0;i<w;i++){E[0]=u[0]+i*R,E[1]=u[1],E[2]=u[2]+t*R,F[0]=u[0]+(i+1)*R,F[1]=b[1],F[2]=u[2]+(t+1)*R;const a=P(i,t,E,F);if(a.success&&a.data){c.removeTile(c.getTileRefAt(i,t,0));const l=c.addTile(a.data,e.Raw.Module.DT_TILE_FREE_DATA,0);e.Raw.Detour.statusFailed(l.status)&&(h.log(e.Raw.Module.RC_LOG_WARNING,`Failed to add tile to nav mesh\n\ttx: ${i}, ty: ${t},status: ${e.statusToReadableString(l.status)} (${l.status})`),a.data.free())}}return h.stopTimer(e.Raw.Module.RC_TIMER_TEMP),n||g(),{success:!0,navMesh:c,intermediates:d}},exports.getBoundingBox=t,exports.soloNavMeshGeneratorConfigDefaults=l,exports.tileCacheGeneratorConfigDefaults=r,exports.tiledNavMeshGeneratorConfigDefaults=o;
1
+ "use strict";var e=require("@recast-navigation/core");const t=(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 r=i[e],o=t[3*r],s=t[3*r+1],n=t[3*r+2];a.x=Math.min(a.x,o),a.y=Math.min(a.y,s),a.z=Math.min(a.z,n),l.x=Math.max(l.x,o),l.y=Math.max(l.y,s),l.z=Math.max(l.z,n)}return{bbMin:e.vec3.toArray(a),bbMax:e.vec3.toArray(l)}},i=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},a=e=>(e--,e|=e>>1,e|=e>>2,e|=e>>4,e|=e>>8,e|=e>>16,++e),l={...e.recastConfigDefaults},r={...e.recastConfigDefaults,tileSize:32,expectedLayersPerTile:4,maxObstacles:128},o=()=>new e.TileCacheMeshProcess(((e,t,i)=>{for(let a=0;a<e.polyCount();++a)t.set(a,0),i.set(a,1)})),s={...e.recastConfigDefaults};exports.createDefaultTileCacheMeshProcess=o,exports.dtIlog2=i,exports.dtNextPow2=a,exports.generateSoloNavMesh=(i,a,r={},o=!1)=>{const s=new e.RecastBuildContext,n={type:"solo",buildContext:s},h=new e.NavMesh,d=t=>(o||(n.heightfield&&(e.freeHeightfield(n.heightfield),n.heightfield=void 0),n.compactHeightfield&&(e.freeCompactHeightfield(n.compactHeightfield),n.compactHeightfield=void 0),n.contourSet&&(e.freeContourSet(n.contourSet),n.contourSet=void 0),n.polyMesh&&(e.freePolyMesh(n.polyMesh),n.polyMesh=void 0),n.polyMeshDetail&&(e.freePolyMeshDetail(n.polyMeshDetail),n.polyMeshDetail=void 0)),h.destroy(),{navMesh:void 0,success:!1,intermediates:n,error:t}),c=i,g=a.length,f=new e.VerticesArray;f.copy(c);const m=a,u=a.length/3,b=new e.TrianglesArray;b.copy(m);const{bbMin:M,bbMax:w}=t(i,a),C=e.createRcConfig({...l,...r});C.minRegionArea=C.minRegionArea*C.minRegionArea,C.mergeRegionArea=C.mergeRegionArea*C.mergeRegionArea,C.detailSampleDist=C.detailSampleDist<.9?0:C.cs*C.detailSampleDist,C.detailSampleMaxError=C.ch*C.detailSampleMaxError;const y=e.calcGridSize(M,w,C.cs);C.width=y.width,C.height=y.height;const R=e.allocHeightfield();if(n.heightfield=R,!e.createHeightfield(s,R,C.width,C.height,M,w,C.cs,C.ch))return d("Could not create heightfield");const S=new e.TriangleAreasArray;if(S.resize(u),e.markWalkableTriangles(s,C.walkableSlopeAngle,f,g,b,u,S),!e.rasterizeTriangles(s,f,g,b,S,u,R,C.walkableClimb))return d("Could not rasterize triangles");S.free(),f.free(),b.free(),e.filterLowHangingWalkableObstacles(s,C.walkableClimb,R),e.filterLedgeSpans(s,C.walkableHeight,C.walkableClimb,R),e.filterWalkableLowHeightSpans(s,C.walkableHeight,R);const p=e.allocCompactHeightfield();if(n.compactHeightfield=p,!e.buildCompactHeightfield(s,C.walkableHeight,C.walkableClimb,R,p))return d("Failed to build compact data");if(o||(e.freeHeightfield(R),n.heightfield=void 0),!e.erodeWalkableArea(s,C.walkableRadius,p))return d("Failed to erode walkable area");if(!e.buildDistanceField(s,p))return d("Failed to build distance field");if(!e.buildRegions(s,p,C.borderSize,C.minRegionArea,C.mergeRegionArea))return d("Failed to build regions");const x=e.allocContourSet();if(n.contourSet=x,!e.buildContours(s,p,C.maxSimplificationError,C.maxEdgeLen,x,e.Raw.Module.RC_CONTOUR_TESS_WALL_EDGES))return d("Failed to create contours");const k=e.allocPolyMesh();if(n.polyMesh=k,!e.buildPolyMesh(s,x,C.maxVertsPerPoly,k))return d("Failed to triangulate contours");const H=e.allocPolyMeshDetail();if(n.polyMeshDetail=H,!e.buildPolyMeshDetail(s,k,p,C.detailSampleDist,C.detailSampleMaxError,H))return d("Failed to build detail mesh");o||(e.freeCompactHeightfield(p),n.compactHeightfield=void 0,e.freeContourSet(x),n.contourSet=void 0);for(let t=0;t<k.npolys();t++)k.areas(t)==e.Raw.Recast.WALKABLE_AREA&&k.setAreas(t,0),0==k.areas(t)&&k.setFlags(t,1);const A=new e.NavMeshCreateParams;A.setPolyMeshCreateParams(k),A.setPolyMeshDetailCreateParams(H),A.setWalkableHeight(C.walkableHeight),A.setWalkableRadius(C.walkableRadius),A.setWalkableClimb(C.walkableClimb),A.setCellSize(C.cs),A.setCellHeight(C.ch),A.setBuildBvTree(!0),r.offMeshConnections&&A.setOffMeshConnections(r.offMeshConnections);const T=e.createNavMeshData(A);if(!T.success)return d("Failed to create Detour navmesh data");const{navMeshData:v}=T;return h.initSolo(v)?{success:!0,navMesh:h,intermediates:n}:d("Failed to create Detour navmesh")},exports.generateTileCache=(l,s,n={},h=!1)=>{const d=new e.RecastBuildContext,c={type:"tilecache",buildContext:d,chunkyTriMesh:void 0,tileIntermediates:[]},g=new e.TileCache,f=new e.NavMesh,m=l,u=s.length,b=new e.VerticesArray;b.copy(m);const M=s,w=s.length/3,C=new e.TrianglesArray;C.copy(M);const{bbMin:y,bbMax:R}=t(l,s),{expectedLayersPerTile:S,maxObstacles:p,...x}={...r,...n},k=()=>{if(b.free(),C.free(),!h)for(let t=0;t<c.tileIntermediates.length;t++){const i=c.tileIntermediates[t];i.heightfield&&(e.freeHeightfield(i.heightfield),i.heightfield=void 0),i.compactHeightfield&&(e.freeCompactHeightfield(i.compactHeightfield),i.compactHeightfield=void 0),i.heightfieldLayerSet&&(e.freeHeightfieldLayerSet(i.heightfieldLayerSet),i.heightfieldLayerSet=void 0)}},H=e=>(k(),g.destroy(),f.destroy(),{success:!1,navMesh:void 0,tileCache:void 0,intermediates:c,error:e}),A=e.createRcConfig(x),T=e.calcGridSize(y,R,A.cs);A.width=T.width,A.height=T.height,A.minRegionArea=A.minRegionArea*A.minRegionArea,A.mergeRegionArea=A.mergeRegionArea*A.mergeRegionArea,A.detailSampleDist=A.detailSampleDist<.9?0:A.cs*A.detailSampleDist,A.detailSampleMaxError=A.ch*A.detailSampleMaxError;const v=Math.floor(A.tileSize),z=Math.floor((A.width+v-1)/v),D=Math.floor((A.height+v-1)/v);A.borderSize=A.walkableRadius+3,A.width=A.tileSize+2*A.borderSize,A.height=A.tileSize+2*A.borderSize;const _=e.DetourTileCacheParams.create({orig:y,cs:A.cs,ch:A.ch,width:A.tileSize,height:A.tileSize,walkableHeight:A.walkableHeight,walkableRadius:A.walkableRadius,walkableClimb:A.walkableClimb,maxSimplificationError:A.maxSimplificationError,maxTiles:z*D*S,maxObstacles:p}),L=new e.Raw.RecastLinearAllocator(32e3),P=new e.Raw.RecastFastLZCompressor,E=n.tileCacheMeshProcess??o();if(!g.init(_,L,P,E))return H("Failed to initialize tile cache");const F=e.vec3.fromArray(y);let N=Math.min(Math.floor(i(a(z*D*S))),14);N>14&&(N=14);const O=1<<N,W=1<<22-N,G=e.NavMeshParams.create({orig:F,tileWidth:A.tileSize*A.cs,tileHeight:A.tileSize*A.cs,maxTiles:O,maxPolys:W});if(!f.initTiled(G))return H("Failed to initialize tiled navmesh");const I=new e.RecastChunkyTriMesh;if(c.chunkyTriMesh=I,!I.init(b,C,w,256))return H("Failed to build chunky triangle mesh");const $=(t,i)=>{const a={tileX:t,tileY:i},l=A.tileSize*A.cs,r=e.cloneRcConfig(A),o=[y[0]+t*l,y[1],y[2]+i*l],s=[y[0]+(t+1)*l,R[1],y[2]+(i+1)*l];o[0]-=r.borderSize*r.cs,o[2]-=r.borderSize*r.cs,s[0]+=r.borderSize*r.cs,s[2]+=r.borderSize*r.cs,r.set_bmin(0,o[0]),r.set_bmin(1,o[1]),r.set_bmin(2,o[2]),r.set_bmax(0,s[0]),r.set_bmax(1,s[1]),r.set_bmax(2,s[2]);const n=e.allocHeightfield();if(a.heightfield=n,!e.createHeightfield(d,n,r.width,r.height,o,s,r.cs,r.ch))return{n:0};const g=[o[0],o[2]],f=[s[0],s[2]],m=new e.ChunkIdsArray;m.resize(512);const M=I.getChunksOverlappingRect(g,f,m,512);if(0===M)return{n:0};for(let t=0;t<M;++t){const i=m.get(t),a=I.nodes(i).n,l=I.getNodeTris(i),o=new e.TriangleAreasArray;o.resize(a),e.markWalkableTriangles(d,r.walkableSlopeAngle,b,u,l,a,o);const s=e.rasterizeTriangles(d,b,u,l,o,a,n,r.walkableClimb);if(o.free(),!s)return{n:0}}e.filterLowHangingWalkableObstacles(d,A.walkableClimb,n),e.filterLedgeSpans(d,A.walkableHeight,A.walkableClimb,n),e.filterWalkableLowHeightSpans(d,A.walkableHeight,n);const w=e.allocCompactHeightfield();if(!e.buildCompactHeightfield(d,A.walkableHeight,A.walkableClimb,n,w))return{n:0};if(h||(e.freeHeightfield(a.heightfield),a.heightfield=void 0),!e.erodeWalkableArea(d,A.walkableRadius,w))return{n:0};const C=e.allocHeightfieldLayerSet();if(!e.buildHeightfieldLayers(d,w,A.borderSize,A.walkableHeight,C))return{n:0};h||(e.freeCompactHeightfield(w),a.compactHeightfield=void 0);const S=[];for(let a=0;a<C.nlayers();a++){const l=new e.TileCacheData,r=C.layers(a),o=new e.Raw.dtTileCacheLayerHeader;o.magic=e.Raw.Detour.TILECACHE_MAGIC,o.version=e.Raw.Detour.TILECACHE_VERSION,o.tx=t,o.ty=i,o.tlayer=a;const s=r.bmin(),n=r.bmax();o.set_bmin(0,s.x),o.set_bmin(1,s.y),o.set_bmin(2,s.z),o.set_bmax(0,n.x),o.set_bmax(1,n.y),o.set_bmax(2,n.z),o.width=r.width(),o.height=r.height(),o.minx=r.minx(),o.maxx=r.maxx(),o.miny=r.miny(),o.maxy=r.maxy(),o.hmin=r.hmin(),o.hmax=r.hmax();const h=e.getHeightfieldLayerHeights(r),d=e.getHeightfieldLayerAreas(r),c=e.getHeightfieldLayerCons(r),g=e.buildTileCacheLayer(P,o,h,d,c,l);if(e.Raw.Detour.statusFailed(g))return{n:0};S.push(l)}return h||(e.freeHeightfieldLayerSet(C),a.heightfieldLayerSet=void 0),c.tileIntermediates.push(a),{n:S.length,tiles:S}};for(let t=0;t<D;++t)for(let i=0;i<z;++i){const{n:a,tiles:l}=$(i,t);if(a>0&&l)for(let r=0;r<a;r++){const a=l[r],o=g.addTile(a);e.Raw.Detour.statusFailed(o.status)&&d.log(e.Raw.Module.RC_LOG_WARNING,`Failed to add tile to tile cache - tx: ${i}, ty: ${t}`)}}for(let t=0;t<D;t++)for(let i=0;i<z;i++){const a=g.buildNavMeshTilesAt(i,t,f);if(e.Raw.Detour.statusFailed(a))return H(`Failed to build nav mesh tiles at ${i}, ${t}`)}return k(),{success:!0,tileCache:g,navMesh:f,intermediates:c}},exports.generateTiledNavMesh=(l,r,o={},n=!1)=>{const h=new e.RecastBuildContext,d={type:"tiled",buildContext:h,chunkyTriMesh:void 0,tileIntermediates:[]},c=new e.NavMesh,g=l,f=r.length,m=new e.VerticesArray;m.copy(g);const u=r,b=r.length/3,M=new e.TrianglesArray;M.copy(u);const w=()=>{if(m.free(),M.free(),!n){for(let t=0;t<d.tileIntermediates.length;t++){const i=d.tileIntermediates[t];i.compactHeightfield&&e.freeCompactHeightfield(i.compactHeightfield),i.heightfield&&e.freeHeightfield(i.heightfield),i.contourSet&&e.freeContourSet(i.contourSet),i.polyMesh&&e.freePolyMesh(i.polyMesh),i.polyMeshDetail&&e.freePolyMeshDetail(i.polyMeshDetail)}d.chunkyTriMesh&&(d.chunkyTriMesh=void 0)}},C=e=>(w(),c.destroy(),{success:!1,navMesh:void 0,intermediates:d,error:e}),y=e.createRcConfig({...s,...o}),{bbMin:R,bbMax:S}=t(l,r),p=e.calcGridSize(R,S,y.cs);y.width=p.width,y.height=p.height,y.minRegionArea=y.minRegionArea*y.minRegionArea,y.mergeRegionArea=y.mergeRegionArea*y.mergeRegionArea,y.tileSize=Math.floor(y.tileSize),y.borderSize=y.walkableRadius+3,y.width=y.tileSize+2*y.borderSize,y.height=y.tileSize+2*y.borderSize,y.detailSampleDist=y.detailSampleDist<.9?0:y.cs*y.detailSampleDist,y.detailSampleMaxError=y.ch*y.detailSampleMaxError;const x=Math.floor(y.tileSize),k=Math.floor((p.width+x-1)/x),H=Math.floor((p.height+x-1)/x),A=y.tileSize*y.cs,T=e.vec3.fromArray(R);let v=Math.min(Math.floor(i(a(k*H))),14);v>14&&(v=14);const z=1<<v,D=1<<22-v,_=e.NavMeshParams.create({orig:T,tileWidth:y.tileSize*y.cs,tileHeight:y.tileSize*y.cs,maxTiles:z,maxPolys:D});if(!c.initTiled(_))return C("Could not init nav mesh for tiled use");const L=new e.RecastChunkyTriMesh;if(d.chunkyTriMesh=L,!L.init(m,M,b,256))return C("Failed to build chunky triangle mesh");const P=(t,i,a,l)=>{const r=t=>(h.log(e.Raw.Module.RC_LOG_ERROR,t),{success:!1,error:t}),s={tileX:t,tileY:i};d.tileIntermediates.push(s);const c=e.cloneRcConfig(y),g=[...a],u=[...l];g[0]-=c.borderSize*c.cs,g[2]-=c.borderSize*c.cs,u[0]+=c.borderSize*c.cs,u[2]+=c.borderSize*c.cs,c.set_bmin(0,g[0]),c.set_bmin(1,g[1]),c.set_bmin(2,g[2]),c.set_bmax(0,u[0]),c.set_bmax(1,u[1]),c.set_bmax(2,u[2]),h.resetTimers(),h.startTimer(e.Raw.Module.RC_TIMER_TOTAL),h.log(e.Raw.Module.RC_LOG_PROGRESS,`Building tile ${d.tileIntermediates.length} at x: ${t}, y: ${i}`),h.log(e.Raw.Module.RC_LOG_PROGRESS,` - ${y.width} x ${y.height} cells`),h.log(e.Raw.Module.RC_LOG_PROGRESS,` - ${f/1e3}fK verts, ${b/1e3}K tris`);const M=e.allocHeightfield();if(s.heightfield=M,!e.createHeightfield(h,M,c.width,c.height,g,u,c.cs,c.ch))return r("Could not create heightfield");(new e.TriangleAreasArray).resize(L.maxTrisPerChunk());const w=[g[0],g[2]],C=[u[0],u[2]],R=new e.ChunkIdsArray;R.resize(512);const S=L.getChunksOverlappingRect(w,C,R,512);if(0===S)return{success:!0};for(let t=0;t<S;++t){const i=R.get(t),a=L.nodes(i).n,l=L.getNodeTris(i),o=new e.TriangleAreasArray;o.resize(a),e.markWalkableTriangles(h,c.walkableSlopeAngle,m,f,l,a,o);const s=e.rasterizeTriangles(h,m,f,l,o,a,M,c.walkableClimb);if(o.free(),!s)return r("Could not rasterize triangles")}e.filterLowHangingWalkableObstacles(h,c.walkableClimb,M),e.filterLedgeSpans(h,c.walkableHeight,c.walkableClimb,M),e.filterWalkableLowHeightSpans(h,c.walkableHeight,M);const p=e.allocCompactHeightfield();if(s.compactHeightfield=p,!e.buildCompactHeightfield(h,c.walkableHeight,c.walkableClimb,M,p))return r("Could not build compact heightfield");if(n||(e.freeHeightfield(s.heightfield),s.heightfield=void 0),!e.erodeWalkableArea(h,c.walkableRadius,p))return r("Could not erode walkable area");if(!e.buildDistanceField(h,p))return r("Failed to build distance field");if(!e.buildRegions(h,p,c.borderSize,c.minRegionArea,c.mergeRegionArea))return r("Failed to build regions");const x=e.allocContourSet();if(s.contourSet=x,!e.buildContours(h,p,c.maxSimplificationError,c.maxEdgeLen,x,e.Raw.Module.RC_CONTOUR_TESS_WALL_EDGES))return r("Failed to create contours");const k=e.allocPolyMesh();if(s.polyMesh=k,!e.buildPolyMesh(h,x,c.maxVertsPerPoly,k))return r("Failed to triangulate contours");const H=e.allocPolyMeshDetail();if(s.polyMeshDetail=H,!e.buildPolyMeshDetail(h,k,p,c.detailSampleDist,c.detailSampleMaxError,H))return r("Failed to build detail mesh");n||(e.freeCompactHeightfield(p),s.compactHeightfield=void 0,e.freeContourSet(x),s.contourSet=void 0);for(let t=0;t<k.npolys();t++)k.areas(t)==e.Raw.Recast.WALKABLE_AREA&&k.setAreas(t,0),0==k.areas(t)&&k.setFlags(t,1);const A=new e.NavMeshCreateParams;A.setPolyMeshCreateParams(k),A.setPolyMeshDetailCreateParams(H),A.setWalkableHeight(c.walkableHeight),A.setWalkableRadius(c.walkableRadius),A.setWalkableClimb(c.walkableClimb),A.setCellSize(c.cs),A.setCellHeight(c.ch),A.setBuildBvTree(!0),o.offMeshConnections&&A.setOffMeshConnections(o.offMeshConnections),A.setTileX(t),A.setTileY(i);const T=e.createNavMeshData(A);return T.success?(h.log(e.Raw.Module.RC_LOG_PROGRESS,`>> Polymesh: ${k.nverts()} vertices ${k.npolys()} polygons`),{success:!0,data:T.navMeshData}):r("Failed to create Detour navmesh data")};h.startTimer(e.Raw.Module.RC_TIMER_TEMP);const E=[0,0,0],F=[0,0,0];for(let t=0;t<H;t++)for(let i=0;i<k;i++){E[0]=R[0]+i*A,E[1]=R[1],E[2]=R[2]+t*A,F[0]=R[0]+(i+1)*A,F[1]=S[1],F[2]=R[2]+(t+1)*A;const a=P(i,t,E,F);if(a.success&&a.data){c.removeTile(c.getTileRefAt(i,t,0));const l=c.addTile(a.data,e.Raw.Module.DT_TILE_FREE_DATA,0);e.Raw.Detour.statusFailed(l.status)&&(h.log(e.Raw.Module.RC_LOG_WARNING,`Failed to add tile to nav mesh\n\ttx: ${i}, ty: ${t},status: ${e.statusToReadableString(l.status)} (${l.status})`),a.data.free())}}return h.stopTimer(e.Raw.Module.RC_TIMER_TEMP),n||w(),{success:!0,navMesh:c,intermediates:d}},exports.getBoundingBox=t,exports.soloNavMeshGeneratorConfigDefaults=l,exports.tileCacheGeneratorConfigDefaults=r,exports.tiledNavMeshGeneratorConfigDefaults=s;
2
2
  //# sourceMappingURL=generators.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"generators.cjs","sources":["../recast-navigation-generators/dist/index.mjs"],"sourcesContent":["import{vec3 as e,recastConfigDefaults as t,RecastBuildContext as i,NavMesh as a,Arrays as l,createRcConfig as r,calcGridSize as s,allocHeightfield as o,createHeightfield as n,markWalkableTriangles as h,rasterizeTriangles as d,filterLowHangingWalkableObstacles as c,filterLedgeSpans as m,filterWalkableLowHeightSpans as g,allocCompactHeightfield as u,buildCompactHeightfield as b,freeHeightfield as f,erodeWalkableArea as M,buildDistanceField as y,buildRegions as S,allocContourSet as w,buildContours as p,Raw as R,allocPolyMesh as C,buildPolyMesh as x,allocPolyMeshDetail as A,buildPolyMeshDetail as k,freeCompactHeightfield as _,freeContourSet as z,NavMeshCreateParams as T,createNavMeshData as v,freePolyMesh as E,freePolyMeshDetail as D,TileCacheMeshProcess as H,TileCache as F,DetourTileCacheParams as L,NavMeshParams as O,RecastChunkyTriMesh as P,freeHeightfieldLayerSet as I,cloneRcConfig as $,allocHeightfieldLayerSet as G,buildHeightfieldLayers as N,getHeightfieldLayerHeights as W,getHeightfieldLayerAreas as B,getHeightfieldLayerCons as V,buildTileCacheLayer as K,statusToReadableString as X}from\"@recast-navigation/core\";const Y=(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 r=i[e],s=t[3*r],o=t[3*r+1],n=t[3*r+2];a.x=Math.min(a.x,s),a.y=Math.min(a.y,o),a.z=Math.min(a.z,n),l.x=Math.max(l.x,s),l.y=Math.max(l.y,o),l.z=Math.max(l.z,n)}return{bbMin:e.toArray(a),bbMax:e.toArray(l)}},U=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},Z=e=>(e--,e|=e>>1,e|=e>>2,e|=e>>4,e|=e>>8,e|=e>>16,++e),j={...t},q=(e,t,H={},F=!1)=>{const L=new i,O={type:\"solo\",buildContext:L},P=new a,I=e=>(F||(O.heightfield&&(f(O.heightfield),O.heightfield=void 0),O.compactHeightfield&&(_(O.compactHeightfield),O.compactHeightfield=void 0),O.contourSet&&(z(O.contourSet),O.contourSet=void 0),O.polyMesh&&(E(O.polyMesh),O.polyMesh=void 0),O.polyMeshDetail&&(D(O.polyMeshDetail),O.polyMeshDetail=void 0)),P.destroy(),{navMesh:void 0,success:!1,intermediates:O,error:e}),$=e,G=t.length,N=new l.VertsArray;N.copy($,$.length);const W=t,B=t.length/3,V=new l.TrisArray;V.copy(W,W.length);const{bbMin:K,bbMax:X}=Y(e,t),U=r({...j,...H});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=s(K,X,U.cs);U.width=Z.width,U.height=Z.height;const q=o();if(O.heightfield=q,!n(L,q,U.width,U.height,K,X,U.cs,U.ch))return I(\"Could not create heightfield\");const J=new l.TriAreasArray;if(J.resize(B),h(L,U.walkableSlopeAngle,N,G,V,B,J),!d(L,N,G,V,J,B,q,U.walkableClimb))return I(\"Could not rasterize triangles\");J.free(),c(L,U.walkableClimb,q),m(L,U.walkableHeight,U.walkableClimb,q),g(L,U.walkableHeight,q);const Q=u();if(O.compactHeightfield=Q,!b(L,U.walkableHeight,U.walkableClimb,q,Q))return I(\"Failed to build compact data\");if(F||(f(q),O.heightfield=void 0),!M(L,U.walkableRadius,Q))return I(\"Failed to erode walkable area\");if(!y(L,Q))return I(\"Failed to build distance field\");if(!S(L,Q,U.borderSize,U.minRegionArea,U.mergeRegionArea))return I(\"Failed to build regions\");const ee=w();if(O.contourSet=ee,!p(L,Q,U.maxSimplificationError,U.maxEdgeLen,ee,R.Module.RC_CONTOUR_TESS_WALL_EDGES))return I(\"Failed to create contours\");const te=C();if(O.polyMesh=te,!x(L,ee,U.maxVertsPerPoly,te))return I(\"Failed to triangulate contours\");const ie=A();if(O.polyMeshDetail=ie,!k(L,te,Q,U.detailSampleDist,U.detailSampleMaxError,ie))return I(\"Failed to build detail mesh\");F||(_(Q),O.compactHeightfield=void 0,z(ee),O.contourSet=void 0);for(let e=0;e<te.npolys();e++)te.areas(e)==R.Recast.WALKABLE_AREA&&te.setAreas(e,0),0==te.areas(e)&&te.setFlags(e,1);const ae=new T;ae.setPolyMeshCreateParams(te),ae.setPolyMeshDetailCreateParams(ie),ae.setWalkableHeight(U.walkableHeight),ae.setWalkableRadius(U.walkableRadius),ae.setWalkableClimb(U.walkableClimb),ae.setCellSize(U.cs),ae.setCellHeight(U.ch),ae.setBuildBvTree(!0),H.offMeshConnections&&ae.setOffMeshConnections(H.offMeshConnections);const le=v(ae);if(!le.success)return I(\"Failed to create Detour navmesh data\");const{navMeshData:re}=le;return P.initSolo(re)?{success:!0,navMesh:P,intermediates:O}:I(\"Failed to create Detour navmesh\")},J={...t,tileSize:32,expectedLayersPerTile:4,maxObstacles:128},Q=()=>new H(((e,t,i)=>{for(let a=0;a<e.polyCount();++a)t.set(a,0),i.set(a,1)})),ee=(t,y,S={},w=!1)=>{const p=new i,C={type:\"tilecache\",buildContext:p,chunkyTriMesh:void 0,tileIntermediates:[]},x=new F,A=new a,k=()=>{if(!w)for(let e=0;e<C.tileIntermediates.length;e++){const t=C.tileIntermediates[e];t.heightfield&&(f(t.heightfield),t.heightfield=void 0),t.compactHeightfield&&(_(t.compactHeightfield),t.compactHeightfield=void 0),t.heightfieldLayerSet&&(I(t.heightfieldLayerSet),t.heightfieldLayerSet=void 0)}},z=e=>(k(),x.destroy(),A.destroy(),{success:!1,navMesh:void 0,tileCache:void 0,intermediates:C,error:e}),T=t,v=y.length,E=new l.VertsArray;E.copy(T,T.length);const D=y,H=y.length/3,X=new l.TrisArray;X.copy(D,D.length);const{bbMin:j,bbMax:q}=Y(t,y),{expectedLayersPerTile:ee,maxObstacles:te,...ie}={...J,...S},ae=r(ie),le=s(j,q,ae.cs);ae.width=le.width,ae.height=le.height,ae.minRegionArea=ae.minRegionArea*ae.minRegionArea,ae.mergeRegionArea=ae.mergeRegionArea*ae.mergeRegionArea,ae.detailSampleDist=ae.detailSampleDist<.9?0:ae.cs*ae.detailSampleDist,ae.detailSampleMaxError=ae.ch*ae.detailSampleMaxError;const re=Math.floor(ae.tileSize),se=Math.floor((ae.width+re-1)/re),oe=Math.floor((ae.height+re-1)/re);ae.borderSize=ae.walkableRadius+3,ae.width=ae.tileSize+2*ae.borderSize,ae.height=ae.tileSize+2*ae.borderSize;const ne=L.create({orig:j,cs:ae.cs,ch:ae.ch,width:ae.tileSize,height:ae.tileSize,walkableHeight:ae.walkableHeight,walkableRadius:ae.walkableRadius,walkableClimb:ae.walkableClimb,maxSimplificationError:ae.maxSimplificationError,maxTiles:se*oe*ee,maxObstacles:te}),he=new R.RecastLinearAllocator(32e3),de=new R.RecastFastLZCompressor,ce=S.tileCacheMeshProcess??Q();if(!x.init(ne,he,de,ce))return z(\"Failed to initialize tile cache\");const me=e.fromArray(j);let ge=Math.min(Math.floor(U(Z(se*oe*ee))),14);ge>14&&(ge=14);const ue=1<<ge,be=1<<22-ge,fe=O.create({orig:me,tileWidth:ae.tileSize*ae.cs,tileHeight:ae.tileSize*ae.cs,maxTiles:ue,maxPolys:be});if(!A.initTiled(fe))return z(\"Failed to initialize tiled navmesh\");const Me=new P;if(C.chunkyTriMesh=Me,!Me.init(E,X,H,256))return z(\"Failed to build chunky triangle mesh\");const ye=(e,t)=>{const i={tileX:e,tileY:t},a=ae.tileSize*ae.cs,r=$(ae),s=[j[0]+e*a,j[1],j[2]+t*a],y=[j[0]+(e+1)*a,q[1],j[2]+(t+1)*a];s[0]-=r.borderSize*r.cs,s[2]-=r.borderSize*r.cs,y[0]+=r.borderSize*r.cs,y[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,y[0]),r.set_bmax(1,y[1]),r.set_bmax(2,y[2]);const S=o();if(i.heightfield=S,!n(p,S,r.width,r.height,s,y,r.cs,r.ch))return{n:0};const x=[s[0],s[2]],A=[y[0],y[2]],k=new l.ChunkIdsArray;k.resize(512);const z=Me.getChunksOverlappingRect(x,A,k,512);if(0===z)return{n:0};for(let e=0;e<z;++e){const t=k.get_data(e),i=Me.nodes(t).n,a=Me.getNodeTris(t),s=new l.TriAreasArray;s.resize(i),h(p,r.walkableSlopeAngle,E,v,a,i,s);const o=d(p,E,v,a,s,i,S,r.walkableClimb);if(s.free(),!o)return{n:0}}c(p,ae.walkableClimb,S),m(p,ae.walkableHeight,ae.walkableClimb,S),g(p,ae.walkableHeight,S);const T=u();if(!b(p,ae.walkableHeight,ae.walkableClimb,S,T))return{n:0};if(w||(f(i.heightfield),i.heightfield=void 0),!M(p,ae.walkableRadius,T))return{n:0};const D=G();if(!N(p,T,ae.borderSize,ae.walkableHeight,D))return{n:0};w||(_(T),i.compactHeightfield=void 0);const H=[];for(let i=0;i<D.nlayers();i++){const a=new l.TileCacheData,r=D.layers(i),s=new R.dtTileCacheLayerHeader;s.magic=R.Detour.TILECACHE_MAGIC,s.version=R.Detour.TILECACHE_VERSION,s.tx=e,s.ty=t,s.tlayer=i;const o=r.bmin(),n=r.bmax();s.set_bmin(0,o.x),s.set_bmin(1,o.y),s.set_bmin(2,o.z),s.set_bmax(0,n.x),s.set_bmax(1,n.y),s.set_bmax(2,n.z),s.width=r.width(),s.height=r.height(),s.minx=r.minx(),s.maxx=r.maxx(),s.miny=r.miny(),s.maxy=r.maxy(),s.hmin=r.hmin(),s.hmax=r.hmax();const h=W(r),d=B(r),c=V(r),m=K(de,s,h,d,c,a);if(R.Detour.statusFailed(m))return{n:0};H.push(a)}return w||(I(D),i.heightfieldLayerSet=void 0),C.tileIntermediates.push(i),{n:H.length,tiles:H}};for(let e=0;e<oe;++e)for(let t=0;t<se;++t){const{n:i,tiles:a}=ye(t,e);if(i>0&&a)for(let l=0;l<i;l++){const i=a[l],r=x.addTile(i);R.Detour.statusFailed(r.status)&&p.log(R.Module.RC_LOG_WARNING,`Failed to add tile to tile cache - tx: ${t}, ty: ${e}`)}}for(let e=0;e<oe;e++)for(let t=0;t<se;t++){const i=x.buildNavMeshTilesAt(t,e,A);if(R.Detour.statusFailed(i))return z(`Failed to build nav mesh tiles at ${t}, ${e}`)}return k(),{success:!0,tileCache:x,navMesh:A,intermediates:C}},te={...t},ie=(t,H,F={},L=!1)=>{const I=new i,G={type:\"tiled\",buildContext:I,chunkyTriMesh:void 0,tileIntermediates:[]},N=new a,W=()=>{if(!L){for(let e=0;e<G.tileIntermediates.length;e++){const t=G.tileIntermediates[e];t.compactHeightfield&&_(t.compactHeightfield),t.heightfield&&f(t.heightfield),t.contourSet&&z(t.contourSet),t.polyMesh&&E(t.polyMesh),t.polyMeshDetail&&D(t.polyMeshDetail)}G.chunkyTriMesh&&(G.chunkyTriMesh=void 0)}},B=e=>(W(),N.destroy(),{success:!1,navMesh:void 0,intermediates:G,error:e}),V=r({...te,...F}),{bbMin:K,bbMax:j}=Y(t,H),q=s(K,j,V.cs);V.width=q.width,V.height=q.height,V.minRegionArea=V.minRegionArea*V.minRegionArea,V.mergeRegionArea=V.mergeRegionArea*V.mergeRegionArea,V.tileSize=Math.floor(V.tileSize),V.borderSize=V.walkableRadius+3,V.width=V.tileSize+2*V.borderSize,V.height=V.tileSize+2*V.borderSize,V.detailSampleDist=V.detailSampleDist<.9?0:V.cs*V.detailSampleDist,V.detailSampleMaxError=V.ch*V.detailSampleMaxError;const J=Math.floor(V.tileSize),Q=Math.floor((q.width+J-1)/J),ee=Math.floor((q.height+J-1)/J),ie=V.tileSize*V.cs,ae=t,le=H.length,re=new l.VertsArray;re.copy(ae,ae.length);const se=H,oe=H.length/3,ne=new l.TrisArray;ne.copy(se,se.length);const he=e.fromArray(K);let de=Math.min(Math.floor(U(Z(Q*ee))),14);de>14&&(de=14);const ce=1<<de,me=1<<22-de,ge=O.create({orig:he,tileWidth:V.tileSize*V.cs,tileHeight:V.tileSize*V.cs,maxTiles:ce,maxPolys:me});if(!N.initTiled(ge))return B(\"Could not init nav mesh for tiled use\");const ue=new P;if(G.chunkyTriMesh=ue,!ue.init(re,ne,oe,256))return B(\"Failed to build chunky triangle mesh\");const be=(e,t,i,a)=>{const r=e=>(I.log(R.Module.RC_LOG_ERROR,e),{success:!1,error:e}),s={tileX:e,tileY:t};G.tileIntermediates.push(s);const E=$(V),D=[...i],H=[...a];D[0]-=E.borderSize*E.cs,D[2]-=E.borderSize*E.cs,H[0]+=E.borderSize*E.cs,H[2]+=E.borderSize*E.cs,E.set_bmin(0,D[0]),E.set_bmin(1,D[1]),E.set_bmin(2,D[2]),E.set_bmax(0,H[0]),E.set_bmax(1,H[1]),E.set_bmax(2,H[2]),I.resetTimers(),I.startTimer(R.Module.RC_TIMER_TOTAL),I.log(R.Module.RC_LOG_PROGRESS,`Building tile ${G.tileIntermediates.length} at x: ${e}, y: ${t}`),I.log(R.Module.RC_LOG_PROGRESS,` - ${V.width} x ${V.height} cells`),I.log(R.Module.RC_LOG_PROGRESS,` - ${le/1e3}fK verts, ${oe/1e3}K tris`);const O=o();if(s.heightfield=O,!n(I,O,E.width,E.height,D,H,E.cs,E.ch))return r(\"Could not create heightfield\");(new l.TriAreasArray).resize(ue.maxTrisPerChunk());const P=[D[0],D[2]],N=[H[0],H[2]],W=new l.ChunkIdsArray;W.resize(512);const B=ue.getChunksOverlappingRect(P,N,W,512);if(0===B)return{success:!0};for(let e=0;e<B;++e){const t=W.get_data(e),i=ue.nodes(t).n,a=ue.getNodeTris(t),s=new l.TriAreasArray;s.resize(i),h(I,E.walkableSlopeAngle,re,le,a,i,s);const o=d(I,re,le,a,s,i,O,E.walkableClimb);if(s.free(),!o)return r(\"Could not rasterize triangles\")}c(I,E.walkableClimb,O),m(I,E.walkableHeight,E.walkableClimb,O),g(I,E.walkableHeight,O);const K=u();if(s.compactHeightfield=K,!b(I,E.walkableHeight,E.walkableClimb,O,K))return r(\"Could not build compact heightfield\");if(L||(f(s.heightfield),s.heightfield=void 0),!M(I,E.walkableRadius,K))return r(\"Could not erode walkable area\");if(!y(I,K))return r(\"Failed to build distance field\");if(!S(I,K,E.borderSize,E.minRegionArea,E.mergeRegionArea))return r(\"Failed to build regions\");const X=w();if(s.contourSet=X,!p(I,K,E.maxSimplificationError,E.maxEdgeLen,X,R.Module.RC_CONTOUR_TESS_WALL_EDGES))return r(\"Failed to create contours\");const Y=C();if(s.polyMesh=Y,!x(I,X,E.maxVertsPerPoly,Y))return r(\"Failed to triangulate contours\");const U=A();if(s.polyMeshDetail=U,!k(I,Y,K,E.detailSampleDist,E.detailSampleMaxError,U))return r(\"Failed to build detail mesh\");L||(_(K),s.compactHeightfield=void 0,z(X),s.contourSet=void 0);for(let e=0;e<Y.npolys();e++)Y.areas(e)==R.Recast.WALKABLE_AREA&&Y.setAreas(e,0),0==Y.areas(e)&&Y.setFlags(e,1);const Z=new T;Z.setPolyMeshCreateParams(Y),Z.setPolyMeshDetailCreateParams(U),Z.setWalkableHeight(E.walkableHeight),Z.setWalkableRadius(E.walkableRadius),Z.setWalkableClimb(E.walkableClimb),Z.setCellSize(E.cs),Z.setCellHeight(E.ch),Z.setBuildBvTree(!0),F.offMeshConnections&&Z.setOffMeshConnections(F.offMeshConnections),Z.setTileX(e),Z.setTileY(t);const j=v(Z);return j.success?(I.log(R.Module.RC_LOG_PROGRESS,`>> Polymesh: ${Y.nverts()} vertices ${Y.npolys()} polygons`),{success:!0,data:j.navMeshData}):r(\"Failed to create Detour navmesh data\")};I.startTimer(R.Module.RC_TIMER_TEMP);const fe=[0,0,0],Me=[0,0,0];for(let e=0;e<ee;e++)for(let t=0;t<Q;t++){fe[0]=K[0]+t*ie,fe[1]=K[1],fe[2]=K[2]+e*ie,Me[0]=K[0]+(t+1)*ie,Me[1]=j[1],Me[2]=K[2]+(e+1)*ie;const i=be(t,e,fe,Me);if(i.success&&i.data){N.removeTile(N.getTileRefAt(t,e,0));const a=N.addTile(i.data,R.Module.DT_TILE_FREE_DATA,0);R.Detour.statusFailed(a.status)&&(I.log(R.Module.RC_LOG_WARNING,`Failed to add tile to nav mesh\\n\\ttx: ${t}, ty: ${e},status: ${X(a.status)} (${a.status})`),i.data.free())}}return I.stopTimer(R.Module.RC_TIMER_TEMP),L||W(),{success:!0,navMesh:N,intermediates:G}};export{Q as createDefaultTileCacheMeshProcess,U as dtIlog2,Z as dtNextPow2,q as generateSoloNavMesh,ee as generateTileCache,ie as generateTiledNavMesh,Y as getBoundingBox,j as soloNavMeshGeneratorConfigDefaults,J as tileCacheGeneratorConfigDefaults,te as tiledNavMeshGeneratorConfigDefaults};\n//# sourceMappingURL=index.mjs.map\n"],"names":["Y","t","i","a","x","y","z","l","e","length","r","s","o","n","Math","min","max","bbMin","toArray","bbMax","U","Number","Z","j","recastConfigDefaults","J","tileSize","expectedLayersPerTile","maxObstacles","Q","H","TileCacheMeshProcess","polyCount","set","te","F","L","O","type","buildContext","P","NavMesh","I","heightfield","f","compactHeightfield","_","contourSet","polyMesh","E","freePolyMesh","polyMeshDetail","D","destroy","navMesh","success","intermediates","error","$","G","N","Arrays","VertsArray","copy","W","B","V","TrisArray","K","X","minRegionArea","mergeRegionArea","detailSampleDist","cs","detailSampleMaxError","ch","width","height","q","TriAreasArray","resize","h","walkableSlopeAngle","d","walkableClimb","free","c","filterLowHangingWalkableObstacles","m","walkableHeight","g","u","b","buildCompactHeightfield","freeHeightfield","M","walkableRadius","buildDistanceField","S","borderSize","ee","w","p","maxSimplificationError","maxEdgeLen","R","Raw","Module","RC_CONTOUR_TESS_WALL_EDGES","C","allocPolyMesh","maxVertsPerPoly","ie","A","allocPolyMeshDetail","k","buildPolyMeshDetail","freeCompactHeightfield","npolys","areas","Recast","WALKABLE_AREA","setAreas","setFlags","ae","T","setPolyMeshCreateParams","setPolyMeshDetailCreateParams","setWalkableHeight","setWalkableRadius","setWalkableClimb","setCellSize","setCellHeight","setBuildBvTree","offMeshConnections","setOffMeshConnections","le","v","createNavMeshData","navMeshData","re","initSolo","RecastBuildContext","chunkyTriMesh","tileIntermediates","TileCache","heightfieldLayerSet","freeHeightfieldLayerSet","tileCache","calcGridSize","floor","se","oe","ne","create","orig","maxTiles","he","RecastLinearAllocator","de","RecastFastLZCompressor","ce","tileCacheMeshProcess","init","me","fromArray","ge","ue","be","fe","NavMeshParams","tileWidth","tileHeight","maxPolys","initTiled","Me","ye","tileX","tileY","set_bmin","set_bmax","createHeightfield","ChunkIdsArray","getChunksOverlappingRect","get_data","nodes","getNodeTris","filterWalkableLowHeightSpans","erodeWalkableArea","nlayers","TileCacheData","layers","dtTileCacheLayerHeader","magic","Detour","TILECACHE_MAGIC","version","TILECACHE_VERSION","tx","ty","tlayer","bmin","bmax","minx","maxx","miny","maxy","hmin","hmax","getHeightfieldLayerHeights","buildTileCacheLayer","statusFailed","push","tiles","addTile","status","log","RC_LOG_WARNING","buildNavMeshTilesAt","freePolyMeshDetail","createRcConfig","vec3","RC_LOG_ERROR","resetTimers","startTimer","RC_TIMER_TOTAL","RC_LOG_PROGRESS","maxTrisPerChunk","filterLedgeSpans","buildRegions","buildContours","buildPolyMesh","freeContourSet","setTileX","setTileY","nverts","data","RC_TIMER_TEMP","removeTile","getTileRefAt","DT_TILE_FREE_DATA","statusToReadableString","stopTimer"],"mappings":"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"}
1
+ {"version":3,"file":"generators.cjs","sources":["../recast-navigation-generators/dist/index.mjs"],"sourcesContent":["import{vec3 as e,recastConfigDefaults as t,RecastBuildContext as i,NavMesh as l,VerticesArray as a,TrianglesArray as r,createRcConfig as o,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 p,buildRegions as y,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 r=i[e],o=t[3*r],s=t[3*r+1],n=t[3*r+2];l.x=Math.min(l.x,o),l.y=Math.min(l.y,s),l.z=Math.min(l.z,n),a.x=Math.max(a.x,o),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 r;X.copy(K);const{bbMin:Y,bbMax:U}=q(e,t),Z=o({...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.free(),B.free(),X.free(),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(!p(P,te))return G(\"Failed to build distance field\");if(!y(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 re=new E;re.setPolyMeshCreateParams(le),re.setPolyMeshDetailCreateParams(ae),re.setWalkableHeight(Z.walkableHeight),re.setWalkableRadius(Z.walkableRadius),re.setWalkableClimb(Z.walkableClimb),re.setCellSize(Z.cs),re.setCellHeight(Z.ch),re.setBuildBvTree(!0),L.offMeshConnections&&re.setOffMeshConnections(L.offMeshConnections);const oe=H(re);if(!oe.success)return G(\"Failed to create Detour navmesh data\");const{navMeshData:se}=oe;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,p,y={},R=!1)=>{const x=new i,k={type:\"tilecache\",buildContext:x,chunkyTriMesh:void 0,tileIntermediates:[]},z=new O,_=new l,A=t,T=p.length,E=new a;E.copy(A);const H=p,D=p.length/3,F=new r;F.copy(H);const{bbMin:L,bbMax:j}=q(t,p),{expectedLayersPerTile:ee,maxObstacles:te,...ae}={...ie,...y},re=()=>{if(E.free(),F.free(),!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)}},oe=e=>(re(),z.destroy(),_.destroy(),{success:!1,navMesh:void 0,tileCache:void 0,intermediates:k,error:e}),se=o(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=y.tileCacheMeshProcess??le();if(!z.init(me,ge,ue,be))return oe(\"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,pe=I.create({orig:fe,tileWidth:se.tileSize*se.cs,tileHeight:se.tileSize*se.cs,maxTiles:Se,maxPolys:we});if(!_.initTiled(pe))return oe(\"Failed to initialize tiled navmesh\");const ye=new $;if(k.chunkyTriMesh=ye,!ye.init(E,F,D,256))return oe(\"Failed to build chunky triangle mesh\");const Re=(e,t)=>{const i={tileX:e,tileY:t},l=se.tileSize*se.cs,a=N(se),r=[L[0]+e*l,L[1],L[2]+t*l],o=[L[0]+(e+1)*l,j[1],L[2]+(t+1)*l];r[0]-=a.borderSize*a.cs,r[2]-=a.borderSize*a.cs,o[0]+=a.borderSize*a.cs,o[2]+=a.borderSize*a.cs,a.set_bmin(0,r[0]),a.set_bmin(1,r[1]),a.set_bmin(2,r[2]),a.set_bmax(0,o[0]),a.set_bmax(1,o[1]),a.set_bmax(2,o[2]);const s=n();if(i.heightfield=s,!d(x,s,a.width,a.height,r,o,a.cs,a.ch))return{n:0};const p=[r[0],r[2]],y=[o[0],o[2]],z=new W;z.resize(512);const _=ye.getChunksOverlappingRect(p,y,z,512);if(0===_)return{n:0};for(let e=0;e<_;++e){const t=z.get(e),i=ye.nodes(t).n,l=ye.getNodeTris(t),r=new h;r.resize(i),c(x,a.walkableSlopeAngle,E,T,l,i,r);const o=m(x,E,T,l,r,i,s,a.walkableClimb);if(r.free(),!o)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),r=new C.dtTileCacheLayerHeader;r.magic=C.Detour.TILECACHE_MAGIC,r.version=C.Detour.TILECACHE_VERSION,r.tx=e,r.ty=t,r.tlayer=i;const o=a.bmin(),s=a.bmax();r.set_bmin(0,o.x),r.set_bmin(1,o.y),r.set_bmin(2,o.z),r.set_bmax(0,s.x),r.set_bmax(1,s.y),r.set_bmax(2,s.z),r.width=a.width(),r.height=a.height(),r.minx=a.minx(),r.maxx=a.maxx(),r.miny=a.miny(),r.maxy=a.maxy(),r.hmin=a.hmin(),r.hmax=a.hmax();const n=X(a),d=Y(a),h=U(a),c=Z(ue,r,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],r=z.addTile(i);C.Detour.statusFailed(r.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 oe(`Failed to build nav mesh tiles at ${t}, ${e}`)}return re(),{success:!0,tileCache:z,navMesh:_,intermediates:k}},re={...t},oe=(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 r;ee.copy(U);const te=()=>{if(Y.free(),ee.free(),!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=o({...re,...O}),{bbMin:ae,bbMax:oe}=q(t,L),se=s(ae,oe,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}),r={tileX:e,tileY:t};B.tileIntermediates.push(r);const o=N(le),s=[...i],D=[...l];s[0]-=o.borderSize*o.cs,s[2]-=o.borderSize*o.cs,D[0]+=o.borderSize*o.cs,D[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,D[0]),o.set_bmax(1,D[1]),o.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(r.heightfield=F,!d(G,F,o.width,o.height,s,D,o.cs,o.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),r=new h;r.resize(i),c(G,o.walkableSlopeAngle,Y,X,l,i,r);const s=m(G,Y,X,l,r,i,F,o.walkableClimb);if(r.free(),!s)return a(\"Could not rasterize triangles\")}g(G,o.walkableClimb,F),u(G,o.walkableHeight,o.walkableClimb,F),b(G,o.walkableHeight,F);const V=f();if(r.compactHeightfield=V,!M(G,o.walkableHeight,o.walkableClimb,F,V))return a(\"Could not build compact heightfield\");if(P||(S(r.heightfield),r.heightfield=void 0),!w(G,o.walkableRadius,V))return a(\"Could not erode walkable area\");if(!p(G,V))return a(\"Failed to build distance field\");if(!y(G,V,o.borderSize,o.minRegionArea,o.mergeRegionArea))return a(\"Failed to build regions\");const U=R();if(r.contourSet=U,!x(G,V,o.maxSimplificationError,o.maxEdgeLen,U,C.Module.RC_CONTOUR_TESS_WALL_EDGES))return a(\"Failed to create contours\");const j=k();if(r.polyMesh=j,!z(G,U,o.maxVertsPerPoly,j))return a(\"Failed to triangulate contours\");const q=_();if(r.polyMeshDetail=q,!A(G,j,V,o.detailSampleDist,o.detailSampleMaxError,q))return a(\"Failed to build detail mesh\");P||(v(V),r.compactHeightfield=void 0,T(U),r.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(o.walkableHeight),J.setWalkableRadius(o.walkableRadius),J.setWalkableClimb(o.walkableClimb),J.setCellSize(o.cs),J.setCellHeight(o.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],pe=[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,pe[0]=ae[0]+(t+1)*ce,pe[1]=oe[1],pe[2]=ae[2]+(e+1)*ce;const i=Se(t,e,we,pe);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.free())}}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,oe as generateTiledNavMesh,q as getBoundingBox,ee as soloNavMeshGeneratorConfigDefaults,ie as tileCacheGeneratorConfigDefaults,re as tiledNavMeshGeneratorConfigDefaults};\n//# sourceMappingURL=index.mjs.map\n"],"names":["q","t","i","l","x","y","z","a","e","length","r","o","s","n","Math","min","max","bbMin","toArray","bbMax","J","Number","Q","ee","ie","tileSize","expectedLayersPerTile","maxObstacles","le","L","polyCount","set","re","recastConfigDefaults","O","P","RecastBuildContext","I","type","buildContext","$","G","heightfield","S","freeHeightfield","compactHeightfield","v","contourSet","T","freeContourSet","polyMesh","D","polyMeshDetail","F","destroy","navMesh","success","intermediates","error","N","W","B","copy","K","V","X","TrianglesArray","Y","U","Z","minRegionArea","mergeRegionArea","detailSampleDist","cs","detailSampleMaxError","ch","j","width","height","d","h","TriangleAreasArray","resize","c","markWalkableTriangles","walkableSlopeAngle","m","walkableClimb","free","g","filterLowHangingWalkableObstacles","u","walkableHeight","b","te","f","M","buildCompactHeightfield","w","walkableRadius","p","buildRegions","borderSize","R","allocContourSet","buildContours","maxSimplificationError","maxEdgeLen","C","Module","RC_CONTOUR_TESS_WALL_EDGES","k","buildPolyMesh","maxVertsPerPoly","ae","_","A","npolys","areas","Recast","WALKABLE_AREA","setAreas","setFlags","E","setPolyMeshCreateParams","setPolyMeshDetailCreateParams","setWalkableHeight","setWalkableRadius","setWalkableClimb","setCellSize","setCellHeight","setBuildBvTree","offMeshConnections","setOffMeshConnections","oe","H","createNavMeshData","navMeshData","se","initSolo","chunkyTriMesh","tileIntermediates","heightfieldLayerSet","freeHeightfieldLayerSet","tileCache","ne","calcGridSize","de","floor","he","ce","me","DetourTileCacheParams","create","orig","maxTiles","ge","Raw","RecastLinearAllocator","ue","RecastFastLZCompressor","be","tileCacheMeshProcess","init","fe","fromArray","Me","Se","we","pe","NavMeshParams","tileWidth","tileHeight","maxPolys","initTiled","ye","Re","tileX","tileY","cloneRcConfig","set_bmin","set_bmax","allocHeightfield","ChunkIdsArray","getChunksOverlappingRect","get","nodes","getNodeTris","filterWalkableLowHeightSpans","erodeWalkableArea","nlayers","layers","dtTileCacheLayerHeader","magic","Detour","TILECACHE_MAGIC","version","TILECACHE_VERSION","tx","ty","tlayer","bmin","bmax","minx","maxx","miny","maxy","hmin","hmax","getHeightfieldLayerCons","statusFailed","push","tiles","addTile","status","log","RC_LOG_WARNING","buildNavMeshTilesAt","freeCompactHeightfield","freePolyMesh","createRcConfig","RC_LOG_ERROR","resetTimers","startTimer","RC_TIMER_TOTAL","RC_LOG_PROGRESS","createHeightfield","maxTrisPerChunk","filterLedgeSpans","allocCompactHeightfield","buildDistanceField","buildPolyMeshDetail","setTileX","setTileY","nverts","data","RC_TIMER_TEMP","removeTile","getTileRefAt","DT_TILE_FREE_DATA","statusToReadableString","stopTimer"],"mappings":"sDAA0sC,MAACA,EAAE,CAACC,EAAEC,KAAK,MAAMC,EAAE,CAACC,EAAE,IAAIC,EAAE,IAAIC,EAAE,KAAKC,EAAE,CAACH,GAAE,IAAKC,GAAE,IAAKC,GAAE,KAAM,IAAI,IAAIE,EAAE,EAAEA,EAAEN,EAAEO,OAAOD,IAAI,CAAC,MAAME,EAAER,EAAEM,GAAGG,EAAEV,EAAE,EAAES,GAAGE,EAAEX,EAAE,EAAES,EAAE,GAAGG,EAAEZ,EAAE,EAAES,EAAE,GAAGP,EAAEC,EAAEU,KAAKC,IAAIZ,EAAEC,EAAEO,GAAGR,EAAEE,EAAES,KAAKC,IAAIZ,EAAEE,EAAEO,GAAGT,EAAEG,EAAEQ,KAAKC,IAAIZ,EAAEG,EAAEO,GAAGN,EAAEH,EAAEU,KAAKE,IAAIT,EAAEH,EAAEO,GAAGJ,EAAEF,EAAES,KAAKE,IAAIT,EAAEF,EAAEO,GAAGL,EAAED,EAAEQ,KAAKE,IAAIT,EAAED,EAAEO,EAAE,CAAC,MAAM,CAACI,MAAMT,OAAEU,QAAQf,GAAGgB,MAAMX,EAAAA,KAAEU,QAAQX,GAAE,EAAGa,EAAEZ,IAAI,IAAIP,EAAE,EAAEC,EAAE,EAAE,OAAOD,EAAEoB,OAAOb,EAAE,QAAQ,EAAEA,IAAIP,EAAEC,EAAEmB,OAAOb,EAAE,MAAM,EAAEA,IAAIN,EAAED,GAAGC,EAAEA,EAAEmB,OAAOb,EAAE,KAAK,EAAEA,IAAIN,EAAED,GAAGC,EAAEA,EAAEmB,OAAOb,EAAE,IAAI,EAAEP,GAAGC,EAAED,IAAIO,IAAIN,IAAI,EAAED,GAAGqB,EAAEd,IAAIA,IAAIA,GAAGA,GAAG,EAAEA,GAAGA,GAAG,EAAEA,GAAGA,GAAG,EAAEA,GAAGA,GAAG,EAAEA,GAAGA,GAAG,KAAKA,GAAGe,EAAG,IAAItB,EAAAA,sBAAuoFuB,EAAG,IAAIvB,uBAAEwB,SAAS,GAAGC,sBAAsB,EAAEC,aAAa,KAAKC,EAAG,IAAI,IAAIC,EAAAA,uBAAIrB,EAAEP,EAAEC,KAAK,IAAI,IAAIC,EAAE,EAAEA,EAAEK,EAAEsB,cAAc3B,EAAEF,EAAE8B,IAAI5B,EAAE,GAAGD,EAAE6B,IAAI5B,EAAE,EAAG,IAAusI6B,EAAG,IAAI/B,EAACgC,qIAA79N,CAACzB,EAAEP,EAAE4B,EAAE,CAAE,EAACK,GAAE,KAAM,MAAMC,EAAE,IAAIjC,EAACkC,mBAACC,EAAE,CAACC,KAAK,OAAOC,aAAaJ,GAAGK,EAAE,IAAIrC,EAAAA,QAAEsC,EAAEjC,IAAI0B,IAAIG,EAAEK,cAAcC,EAACC,gBAACP,EAAEK,aAAaL,EAAEK,iBAAY,GAAQL,EAAEQ,qBAAqBC,yBAAET,EAAEQ,oBAAoBR,EAAEQ,wBAAmB,GAAQR,EAAEU,aAAaC,EAACC,eAACZ,EAAEU,YAAYV,EAAEU,gBAAW,GAAQV,EAAEa,WAAWC,EAAAA,aAAEd,EAAEa,UAAUb,EAAEa,cAAS,GAAQb,EAAEe,iBAAiBC,qBAAEhB,EAAEe,gBAAgBf,EAAEe,oBAAe,IAASZ,EAAEc,UAAU,CAACC,aAAQ,EAAOC,SAAQ,EAAGC,cAAcpB,EAAEqB,MAAMlD,IAAImD,EAAEnD,EAAEoD,EAAE3D,EAAEQ,OAAOoD,EAAE,IAAItD,EAAAA,cAAEsD,EAAEC,KAAKH,GAAG,MAAMI,EAAE9D,EAAE+D,EAAE/D,EAAEQ,OAAO,EAAEwD,EAAE,IAAIvD,EAACwD,eAACD,EAAEH,KAAKC,GAAG,MAAM9C,MAAMkD,EAAEhD,MAAMiD,GAAGpE,EAAEQ,EAAEP,GAAGoE,EAAE1D,EAAAA,eAAE,IAAIY,KAAMM,IAAIwC,EAAEC,cAAcD,EAAEC,cAAcD,EAAEC,cAAcD,EAAEE,gBAAgBF,EAAEE,gBAAgBF,EAAEE,gBAAgBF,EAAEG,iBAAiBH,EAAEG,iBAAiB,GAAG,EAAEH,EAAEI,GAAGJ,EAAEG,iBAAiBH,EAAEK,qBAAqBL,EAAEM,GAAGN,EAAEK,qBAAqB,MAAME,EAAEhE,eAAEuD,EAAEC,EAAEC,EAAEI,IAAIJ,EAAEQ,MAAMD,EAAEC,MAAMR,EAAES,OAAOF,EAAEE,OAAO,MAAM1D,EAAEP,EAAAA,mBAAI,GAAGwB,EAAEK,YAAYtB,GAAG2D,oBAAE5C,EAAEf,EAAEiD,EAAEQ,MAAMR,EAAES,OAAOX,EAAEC,EAAEC,EAAEI,GAAGJ,EAAEM,IAAI,OAAOlC,EAAE,gCAAgC,MAAMnB,EAAE,IAAI0D,EAACC,mBAAC,GAAG3D,EAAE4D,OAAOlB,GAAGmB,EAACC,sBAACjD,EAAEkC,EAAEgB,mBAAmBxB,EAAED,EAAEK,EAAED,EAAE1C,IAAIgE,qBAAEnD,EAAE0B,EAAED,EAAEK,EAAE3C,EAAE0C,EAAE5C,EAAEiD,EAAEkB,eAAe,OAAO9C,EAAE,iCAAiCnB,EAAEkE,OAAO3B,EAAE2B,OAAOvB,EAAEuB,OAAOC,EAACC,kCAACvD,EAAEkC,EAAEkB,cAAcnE,GAAGuE,EAAAA,iBAAExD,EAAEkC,EAAEuB,eAAevB,EAAEkB,cAAcnE,GAAGyE,EAAAA,6BAAE1D,EAAEkC,EAAEuB,eAAexE,GAAG,MAAM0E,EAAGC,4BAAI,GAAG1D,EAAEQ,mBAAmBiD,GAAIE,EAACC,wBAAC9D,EAAEkC,EAAEuB,eAAevB,EAAEkB,cAAcnE,EAAE0E,GAAI,OAAOrD,EAAE,gCAAgC,GAAGP,IAAIS,EAACC,gBAACxB,GAAGiB,EAAEK,iBAAY,IAASwD,oBAAE/D,EAAEkC,EAAE8B,eAAeL,GAAI,OAAOrD,EAAE,iCAAiC,IAAI2D,EAAAA,mBAAEjE,EAAE2D,GAAI,OAAOrD,EAAE,kCAAkC,IAAIpC,EAACgG,aAAClE,EAAE2D,EAAGzB,EAAEiC,WAAWjC,EAAEC,cAAcD,EAAEE,iBAAiB,OAAO9B,EAAE,2BAA2B,MAAMjB,EAAG+E,EAACC,kBAAG,GAAGnE,EAAEU,WAAWvB,GAAIpB,EAACqG,cAACtE,EAAE2D,EAAGzB,EAAEqC,uBAAuBrC,EAAEsC,WAAWnF,EAAGoF,EAAAA,IAAEC,OAAOC,4BAA4B,OAAOrE,EAAE,6BAA6B,MAAMb,EAAGmF,kBAAI,GAAG1E,EAAEa,SAAStB,GAAItB,EAAC0G,cAAC7E,EAAEX,EAAG6C,EAAE4C,gBAAgBrF,GAAI,OAAOa,EAAE,kCAAkC,MAAMyE,EAAGC,wBAAI,GAAG9E,EAAEe,eAAe8D,GAAIE,sBAAEjF,EAAEP,EAAGkE,EAAGzB,EAAEG,iBAAiBH,EAAEK,qBAAqBwC,GAAI,OAAOzE,EAAE,+BAA+BP,IAAIY,EAAAA,uBAAEgD,GAAIzD,EAAEQ,wBAAmB,EAAOG,EAACC,eAACzB,GAAIa,EAAEU,gBAAW,GAAQ,IAAI,IAAIvC,EAAE,EAAEA,EAAEoB,EAAGyF,SAAS7G,IAAIoB,EAAG0F,MAAM9G,IAAIoG,EAAAA,IAAEW,OAAOC,eAAe5F,EAAG6F,SAASjH,EAAE,GAAG,GAAGoB,EAAG0F,MAAM9G,IAAIoB,EAAG8F,SAASlH,EAAE,GAAG,MAAMwB,EAAG,IAAI2F,sBAAE3F,EAAG4F,wBAAwBhG,GAAII,EAAG6F,8BAA8BX,GAAIlF,EAAG8F,kBAAkBzD,EAAEuB,gBAAgB5D,EAAG+F,kBAAkB1D,EAAE8B,gBAAgBnE,EAAGgG,iBAAiB3D,EAAEkB,eAAevD,EAAGiG,YAAY5D,EAAEI,IAAIzC,EAAGkG,cAAc7D,EAAEM,IAAI3C,EAAGmG,gBAAe,GAAItG,EAAEuG,oBAAoBpG,EAAGqG,sBAAsBxG,EAAEuG,oBAAoB,MAAME,EAAGC,EAACC,kBAACxG,GAAI,IAAIsG,EAAG9E,QAAQ,OAAOf,EAAE,wCAAwC,MAAMgG,YAAYC,GAAIJ,EAAG,OAAO9F,EAAEmG,SAASD,GAAI,CAAClF,SAAQ,EAAGD,QAAQf,EAAEiB,cAAcpB,GAAGI,EAAE,kCAAiC,4BAAsJ,CAACxC,EAAEmG,EAAE/F,EAAE,CAAA,EAAGkG,GAAE,KAAM,MAAMnG,EAAE,IAAIF,EAAAA,mBAAE6G,EAAE,CAACzE,KAAK,YAAYC,aAAanC,EAAEwI,mBAAc,EAAOC,kBAAkB,IAAIvI,EAAE,IAAI4B,EAAAA,UAAEiF,EAAE,IAAIhH,EAAAA,QAAEiH,EAAEnH,EAAE+C,EAAEoD,EAAE3F,OAAOkH,EAAE,IAAIpH,EAAAA,cAAEoH,EAAE7D,KAAKsD,GAAG,MAAMmB,EAAEnC,EAAEjD,EAAEiD,EAAE3F,OAAO,EAAE4C,EAAE,IAAI3C,EAACwD,eAACb,EAAES,KAAKyE,GAAG,MAAMtH,MAAMY,EAAEV,MAAMyD,GAAG5E,EAAEC,EAAEmG,IAAI1E,sBAAsBH,EAAGI,aAAamE,KAAMoB,GAAI,IAAI1F,KAAMnB,GAAG2B,EAAG,KAAK,GAAG2F,EAAEnC,OAAOnC,EAAEmC,QAAQe,EAAE,IAAI,IAAI/F,EAAE,EAAEA,EAAEuG,EAAE8B,kBAAkBpI,OAAOD,IAAI,CAAC,MAAMP,EAAE8G,EAAE8B,kBAAkBrI,GAAGP,EAAEyC,cAAcC,EAAAA,gBAAE1C,EAAEyC,aAAazC,EAAEyC,iBAAY,GAAQzC,EAAE4C,qBAAqBC,yBAAE7C,EAAE4C,oBAAoB5C,EAAE4C,wBAAmB,GAAQ5C,EAAE6I,sBAAsBrG,EAACsG,wBAAC9I,EAAE6I,qBAAqB7I,EAAE6I,yBAAoB,EAAO,GAAGR,EAAG9H,IAAIwB,IAAK1B,EAAEgD,UAAU6D,EAAE7D,UAAU,CAACE,SAAQ,EAAGD,aAAQ,EAAOyF,eAAU,EAAOvF,cAAcsD,EAAErD,MAAMlD,IAAIkI,EAAG/H,EAAAA,eAAEuG,GAAI+B,EAAGrI,EAACsI,aAACrH,EAAE+C,EAAE8D,EAAGjE,IAAIiE,EAAG7D,MAAMoE,EAAGpE,MAAM6D,EAAG5D,OAAOmE,EAAGnE,OAAO4D,EAAGpE,cAAcoE,EAAGpE,cAAcoE,EAAGpE,cAAcoE,EAAGnE,gBAAgBmE,EAAGnE,gBAAgBmE,EAAGnE,gBAAgBmE,EAAGlE,iBAAiBkE,EAAGlE,iBAAiB,GAAG,EAAEkE,EAAGjE,GAAGiE,EAAGlE,iBAAiBkE,EAAGhE,qBAAqBgE,EAAG/D,GAAG+D,EAAGhE,qBAAqB,MAAMyE,EAAGrI,KAAKsI,MAAMV,EAAGjH,UAAU4H,EAAGvI,KAAKsI,OAAOV,EAAG7D,MAAMsE,EAAG,GAAGA,GAAIG,EAAGxI,KAAKsI,OAAOV,EAAG5D,OAAOqE,EAAG,GAAGA,GAAIT,EAAGpC,WAAWoC,EAAGvC,eAAe,EAAEuC,EAAG7D,MAAM6D,EAAGjH,SAAS,EAAEiH,EAAGpC,WAAWoC,EAAG5D,OAAO4D,EAAGjH,SAAS,EAAEiH,EAAGpC,WAAW,MAAMiD,EAAGpH,EAACqH,sBAACC,OAAO,CAACC,KAAK7H,EAAE4C,GAAGiE,EAAGjE,GAAGE,GAAG+D,EAAG/D,GAAGE,MAAM6D,EAAGjH,SAASqD,OAAO4D,EAAGjH,SAASmE,eAAe8C,EAAG9C,eAAeO,eAAeuC,EAAGvC,eAAeZ,cAAcmD,EAAGnD,cAAcmB,uBAAuBgC,EAAGhC,uBAAuBiD,SAASN,EAAGC,EAAG/H,EAAGI,aAAamE,IAAK8D,EAAG,IAAIhD,EAACiD,IAACC,sBAAsB,MAAMC,EAAG,IAAInD,EAACiD,IAACG,uBAAuBC,EAAG5J,EAAE6J,sBAAsBtI,IAAK,IAAItB,EAAE6J,KAAKZ,EAAGK,EAAGG,EAAGE,GAAI,OAAO3B,EAAG,mCAAmC,MAAM8B,EAAG5J,EAAAA,KAAE6J,UAAUxI,GAAG,IAAIyI,EAAGxJ,KAAKC,IAAID,KAAKsI,MAAMhI,EAAEE,EAAE+H,EAAGC,EAAG/H,KAAM,IAAI+I,EAAG,KAAKA,EAAG,IAAI,MAAMC,EAAG,GAAGD,EAAGE,EAAG,GAAG,GAAGF,EAAGG,EAAGpI,EAACqI,cAACjB,OAAO,CAACC,KAAKU,EAAGO,UAAUjC,EAAGjH,SAASiH,EAAGjE,GAAGmG,WAAWlC,EAAGjH,SAASiH,EAAGjE,GAAGkF,SAASY,EAAGM,SAASL,IAAK,IAAIrD,EAAE2D,UAAUL,GAAI,OAAOnC,EAAG,sCAAsC,MAAMyC,EAAG,IAAIvI,EAAAA,oBAAE,GAAGuE,EAAE6B,cAAcmC,GAAIA,EAAGZ,KAAKxC,EAAEtE,EAAEF,EAAE,KAAK,OAAOmF,EAAG,wCAAwC,MAAM0C,EAAG,CAACxK,EAAEP,KAAK,MAAMC,EAAE,CAAC+K,MAAMzK,EAAE0K,MAAMjL,GAAGE,EAAEuI,EAAGjH,SAASiH,EAAGjE,GAAGlE,EAAEoD,EAACwH,cAACzC,GAAIhI,EAAE,CAACmB,EAAE,GAAGrB,EAAEL,EAAE0B,EAAE,GAAGA,EAAE,GAAG5B,EAAEE,GAAGQ,EAAE,CAACkB,EAAE,IAAIrB,EAAE,GAAGL,EAAEyE,EAAE,GAAG/C,EAAE,IAAI5B,EAAE,GAAGE,GAAGO,EAAE,IAAIH,EAAE+F,WAAW/F,EAAEkE,GAAG/D,EAAE,IAAIH,EAAE+F,WAAW/F,EAAEkE,GAAG9D,EAAE,IAAIJ,EAAE+F,WAAW/F,EAAEkE,GAAG9D,EAAE,IAAIJ,EAAE+F,WAAW/F,EAAEkE,GAAGlE,EAAE6K,SAAS,EAAE1K,EAAE,IAAIH,EAAE6K,SAAS,EAAE1K,EAAE,IAAIH,EAAE6K,SAAS,EAAE1K,EAAE,IAAIH,EAAE8K,SAAS,EAAE1K,EAAE,IAAIJ,EAAE8K,SAAS,EAAE1K,EAAE,IAAIJ,EAAE8K,SAAS,EAAE1K,EAAE,IAAI,MAAMC,EAAEC,EAACyK,mBAAG,GAAGpL,EAAEwC,YAAY9B,GAAGmE,EAAAA,kBAAE3E,EAAEQ,EAAEL,EAAEsE,MAAMtE,EAAEuE,OAAOpE,EAAEC,EAAEJ,EAAEkE,GAAGlE,EAAEoE,IAAI,MAAM,CAAC9D,EAAE,GAAG,MAAMuF,EAAE,CAAC1F,EAAE,GAAGA,EAAE,IAAIL,EAAE,CAACM,EAAE,GAAGA,EAAE,IAAIL,EAAE,IAAIsD,EAAC2H,cAACjL,EAAE4E,OAAO,KAAK,MAAMiC,EAAE4D,EAAGS,yBAAyBpF,EAAE/F,EAAEC,EAAE,KAAK,GAAG,IAAI6G,EAAE,MAAM,CAACtG,EAAE,GAAG,IAAI,IAAIL,EAAE,EAAEA,EAAE2G,IAAI3G,EAAE,CAAC,MAAMP,EAAEK,EAAEmL,IAAIjL,GAAGN,EAAE6K,EAAGW,MAAMzL,GAAGY,EAAEV,EAAE4K,EAAGY,YAAY1L,GAAGS,EAAE,IAAIsE,qBAAEtE,EAAEwE,OAAOhF,GAAGiF,EAAAA,sBAAE/E,EAAEG,EAAE8E,mBAAmBsC,EAAE3E,EAAE7C,EAAED,EAAEQ,GAAG,MAAMC,EAAE2E,qBAAElF,EAAEuH,EAAE3E,EAAE7C,EAAEO,EAAER,EAAEU,EAAEL,EAAEgF,eAAe,GAAG7E,EAAE8E,QAAQ7E,EAAE,MAAM,CAACE,EAAE,EAAE,CAAC4E,EAAAA,kCAAErF,EAAEsI,EAAGnD,cAAc3E,GAAG+E,EAAAA,iBAAEvF,EAAEsI,EAAG9C,eAAe8C,EAAGnD,cAAc3E,GAAGiF,EAAC+F,6BAACxL,EAAEsI,EAAG9C,eAAehF,GAAG,MAAMwG,EAAErB,4BAAI,IAAIC,EAAAA,wBAAE5F,EAAEsI,EAAG9C,eAAe8C,EAAGnD,cAAc3E,EAAEwG,GAAG,MAAM,CAACvG,EAAE,GAAG,GAAG0F,IAAI5D,EAACC,gBAAC1C,EAAEwC,aAAaxC,EAAEwC,iBAAY,IAASwD,EAAC2F,kBAACzL,EAAEsI,EAAGvC,eAAeiB,GAAG,MAAM,CAACvG,EAAE,GAAG,MAAM0H,EAAE1E,EAAAA,2BAAI,IAAIE,EAAAA,uBAAE3D,EAAEgH,EAAEsB,EAAGpC,WAAWoC,EAAG9C,eAAe2C,GAAG,MAAM,CAAC1H,EAAE,GAAG0F,IAAIzD,EAAAA,uBAAEsE,GAAGlH,EAAE2C,wBAAmB,GAAQ,MAAMM,EAAE,GAAG,IAAI,IAAIjD,EAAE,EAAEA,EAAEqI,EAAEuD,UAAU5L,IAAI,CAAC,MAAMC,EAAE,IAAI6D,gBAAEzD,EAAEgI,EAAEwD,OAAO7L,GAAGQ,EAAE,IAAIkG,EAAAA,IAAEoF,uBAAuBtL,EAAEuL,MAAMrF,EAAAA,IAAEsF,OAAOC,gBAAgBzL,EAAE0L,QAAQxF,EAACiD,IAACqC,OAAOG,kBAAkB3L,EAAE4L,GAAG9L,EAAEE,EAAE6L,GAAGtM,EAAES,EAAE8L,OAAOtM,EAAE,MAAMS,EAAEJ,EAAEkM,OAAO7L,EAAEL,EAAEmM,OAAOhM,EAAE0K,SAAS,EAAEzK,EAAEP,GAAGM,EAAE0K,SAAS,EAAEzK,EAAEN,GAAGK,EAAE0K,SAAS,EAAEzK,EAAEL,GAAGI,EAAE2K,SAAS,EAAEzK,EAAER,GAAGM,EAAE2K,SAAS,EAAEzK,EAAEP,GAAGK,EAAE2K,SAAS,EAAEzK,EAAEN,GAAGI,EAAEmE,MAAMtE,EAAEsE,QAAQnE,EAAEoE,OAAOvE,EAAEuE,SAASpE,EAAEiM,KAAKpM,EAAEoM,OAAOjM,EAAEkM,KAAKrM,EAAEqM,OAAOlM,EAAEmM,KAAKtM,EAAEsM,OAAOnM,EAAEoM,KAAKvM,EAAEuM,OAAOpM,EAAEqM,KAAKxM,EAAEwM,OAAOrM,EAAEsM,KAAKzM,EAAEyM,OAAO,MAAMnM,EAAEoD,EAAAA,2BAAE1D,GAAGwE,EAAEZ,EAAAA,yBAAE5D,GAAGyE,EAAEZ,EAAC6I,wBAAC1M,GAAG4E,EAAEd,sBAAE0F,EAAGrJ,EAAEG,EAAEkE,EAAEC,EAAE7E,GAAG,GAAGyG,EAACiD,IAACqC,OAAOgB,aAAa/H,GAAG,MAAM,CAACtE,EAAE,GAAGsC,EAAEgK,KAAKhN,EAAE,CAAC,OAAOoG,IAAI9D,EAACsG,wBAACR,GAAGrI,EAAE4I,yBAAoB,GAAQ/B,EAAE8B,kBAAkBsE,KAAKjN,GAAG,CAACW,EAAEsC,EAAE1C,OAAO2M,MAAMjK,EAAC,EAAG,IAAI,IAAI3C,EAAE,EAAEA,EAAE8I,IAAK9I,EAAE,IAAI,IAAIP,EAAE,EAAEA,EAAEoJ,IAAKpJ,EAAE,CAAC,MAAMY,EAAEX,EAAEkN,MAAMjN,GAAG6K,EAAG/K,EAAEO,GAAG,GAAGN,EAAE,GAAGC,EAAE,IAAI,IAAII,EAAE,EAAEA,EAAEL,EAAEK,IAAI,CAAC,MAAML,EAAEC,EAAEI,GAAGG,EAAEJ,EAAE+M,QAAQnN,GAAG0G,EAAAA,IAAEsF,OAAOgB,aAAaxM,EAAE4M,SAASlN,EAAEmN,IAAI3G,EAACiD,IAAChD,OAAO2G,eAAe,0CAA0CvN,UAAUO,IAAI,CAAC,CAAC,IAAI,IAAIA,EAAE,EAAEA,EAAE8I,EAAG9I,IAAI,IAAI,IAAIP,EAAE,EAAEA,EAAEoJ,EAAGpJ,IAAI,CAAC,MAAMC,EAAEI,EAAEmN,oBAAoBxN,EAAEO,EAAE2G,GAAG,GAAGP,EAACiD,IAACqC,OAAOgB,aAAahN,GAAG,OAAOoI,EAAG,qCAAqCrI,MAAMO,IAAI,CAAC,OAAOwB,IAAK,CAACwB,SAAQ,EAAGwF,UAAU1I,EAAEiD,QAAQ4D,EAAE1D,cAAcsD,EAAC,+BAAgB,CAAC9G,EAAE4B,EAAEK,EAAE,GAAGC,GAAE,KAAM,MAAMM,EAAE,IAAIvC,EAAAA,mBAAE2D,EAAE,CAACvB,KAAK,QAAQC,aAAaE,EAAEmG,mBAAc,EAAOC,kBAAkB,IAAI9E,EAAE,IAAI5D,EAAAA,QAAE6D,EAAE/D,EAAEgE,EAAEpC,EAAEpB,OAAO0D,EAAE,IAAI5D,EAAAA,cAAE4D,EAAEL,KAAKE,GAAG,MAAMI,EAAEvC,EAAEwC,EAAExC,EAAEpB,OAAO,EAAEc,EAAG,IAAIb,EAACwD,eAAC3C,EAAGuC,KAAKM,GAAG,MAAM0B,EAAG,KAAK,GAAG3B,EAAEqB,OAAOjE,EAAGiE,QAAQrD,EAAE,CAAC,IAAI,IAAI3B,EAAE,EAAEA,EAAEqD,EAAEgF,kBAAkBpI,OAAOD,IAAI,CAAC,MAAMP,EAAE4D,EAAEgF,kBAAkBrI,GAAGP,EAAE4C,oBAAoBC,EAAC4K,uBAACzN,EAAE4C,oBAAoB5C,EAAEyC,aAAaC,EAAAA,gBAAE1C,EAAEyC,aAAazC,EAAE8C,YAAYC,EAAAA,eAAE/C,EAAE8C,YAAY9C,EAAEiD,UAAUC,EAACwK,aAAC1N,EAAEiD,UAAUjD,EAAEmD,gBAAgBC,EAAAA,mBAAEpD,EAAEmD,eAAe,CAACS,EAAE+E,gBAAgB/E,EAAE+E,mBAAc,EAAO,GAAGpH,EAAGhB,IAAIsF,IAAK/B,EAAET,UAAU,CAACE,SAAQ,EAAGD,aAAQ,EAAOE,cAAcI,EAAEH,MAAMlD,IAAIoB,EAAGjB,EAACiN,eAAC,IAAI5L,KAAME,KAAKjB,MAAMiG,EAAG/F,MAAMmH,GAAItI,EAAEC,EAAE4B,GAAG6G,EAAG9H,EAACsI,aAAChC,EAAGoB,EAAG1G,EAAG6C,IAAI7C,EAAGiD,MAAM6D,EAAG7D,MAAMjD,EAAGkD,OAAO4D,EAAG5D,OAAOlD,EAAG0C,cAAc1C,EAAG0C,cAAc1C,EAAG0C,cAAc1C,EAAG2C,gBAAgB3C,EAAG2C,gBAAgB3C,EAAG2C,gBAAgB3C,EAAGH,SAASX,KAAKsI,MAAMxH,EAAGH,UAAUG,EAAG0E,WAAW1E,EAAGuE,eAAe,EAAEvE,EAAGiD,MAAMjD,EAAGH,SAAS,EAAEG,EAAG0E,WAAW1E,EAAGkD,OAAOlD,EAAGH,SAAS,EAAEG,EAAG0E,WAAW1E,EAAG4C,iBAAiB5C,EAAG4C,iBAAiB,GAAG,EAAE5C,EAAG6C,GAAG7C,EAAG4C,iBAAiB5C,EAAG8C,qBAAqB9C,EAAG+C,GAAG/C,EAAG8C,qBAAqB,MAAMuE,EAAGnI,KAAKsI,MAAMxH,EAAGH,UAAU0H,EAAGrI,KAAKsI,OAAOV,EAAG7D,MAAMoE,EAAG,GAAGA,GAAII,EAAGvI,KAAKsI,OAAOV,EAAG5D,OAAOmE,EAAG,GAAGA,GAAIK,EAAG1H,EAAGH,SAASG,EAAG6C,GAAG8E,EAAG/I,EAAAA,KAAE6J,UAAUnD,GAAI,IAAI0C,EAAG9I,KAAKC,IAAID,KAAKsI,MAAMhI,EAAEE,EAAE6H,EAAGE,KAAM,IAAIO,EAAG,KAAKA,EAAG,IAAI,MAAMG,EAAG,GAAGH,EAAGK,EAAG,GAAG,GAAGL,EAAGQ,EAAG/H,EAACqI,cAACjB,OAAO,CAACC,KAAKH,EAAGoB,UAAU/I,EAAGH,SAASG,EAAG6C,GAAGmG,WAAWhJ,EAAGH,SAASG,EAAG6C,GAAGkF,SAASI,EAAGc,SAASZ,IAAK,IAAIlG,EAAE+G,UAAUV,GAAI,OAAO5I,EAAG,yCAAyC,MAAM8I,EAAG,IAAI9H,sBAAE,GAAGqB,EAAE+E,cAAc0B,GAAIA,EAAGH,KAAKhG,EAAE5C,EAAG8C,EAAE,KAAK,OAAO7C,EAAG,wCAAwC,MAAM+I,EAAG,CAAC/J,EAAEP,EAAEC,EAAEC,KAAK,MAAMI,EAAEC,IAAIiC,EAAE8K,IAAI3G,EAAAA,IAAEC,OAAOgH,aAAarN,GAAG,CAACgD,SAAQ,EAAGE,MAAMlD,IAAIE,EAAE,CAACuK,MAAMzK,EAAE0K,MAAMjL,GAAG4D,EAAEgF,kBAAkBsE,KAAKzM,GAAG,MAAMC,EAAEgD,EAACwH,cAACvJ,GAAIhB,EAAE,IAAIV,GAAGiD,EAAE,IAAIhD,GAAGS,EAAE,IAAID,EAAE2F,WAAW3F,EAAE8D,GAAG7D,EAAE,IAAID,EAAE2F,WAAW3F,EAAE8D,GAAGtB,EAAE,IAAIxC,EAAE2F,WAAW3F,EAAE8D,GAAGtB,EAAE,IAAIxC,EAAE2F,WAAW3F,EAAE8D,GAAG9D,EAAEyK,SAAS,EAAExK,EAAE,IAAID,EAAEyK,SAAS,EAAExK,EAAE,IAAID,EAAEyK,SAAS,EAAExK,EAAE,IAAID,EAAE0K,SAAS,EAAElI,EAAE,IAAIxC,EAAE0K,SAAS,EAAElI,EAAE,IAAIxC,EAAE0K,SAAS,EAAElI,EAAE,IAAIV,EAAEqL,cAAcrL,EAAEsL,WAAWnH,EAACiD,IAAChD,OAAOmH,gBAAgBvL,EAAE8K,IAAI3G,EAAAA,IAAEC,OAAOoH,gBAAgB,iBAAiBpK,EAAEgF,kBAAkBpI,gBAAgBD,SAASP,KAAKwC,EAAE8K,IAAI3G,EAACiD,IAAChD,OAAOoH,gBAAgB,MAAMrM,EAAGiD,WAAWjD,EAAGkD,gBAAgBrC,EAAE8K,IAAI3G,EAAAA,IAAEC,OAAOoH,gBAAgB,MAAMhK,EAAE,gBAAgBI,EAAE,aAAa,MAAMhB,EAAExC,EAACyK,mBAAG,GAAG5K,EAAEgC,YAAYW,GAAG0B,EAACmJ,kBAACzL,EAAEY,EAAE1C,EAAEkE,MAAMlE,EAAEmE,OAAOlE,EAAEuC,EAAExC,EAAE8D,GAAG9D,EAAEgE,IAAI,OAAOpE,EAAE,iCAAgC,IAAKyE,EAACC,oBAAEC,OAAOoF,EAAG6D,mBAAmB,MAAMtM,EAAE,CAACjB,EAAE,GAAGA,EAAE,IAAIyB,EAAE,CAACc,EAAE,GAAGA,EAAE,IAAIX,EAAE,IAAIoB,EAAAA,cAAEpB,EAAE0C,OAAO,KAAK,MAAMnB,EAAEuG,EAAGkB,yBAAyB3J,EAAEQ,EAAEG,EAAE,KAAK,GAAG,IAAIuB,EAAE,MAAM,CAACP,SAAQ,GAAI,IAAI,IAAIhD,EAAE,EAAEA,EAAEuD,IAAIvD,EAAE,CAAC,MAAMP,EAAEuC,EAAEiJ,IAAIjL,GAAGN,EAAEoK,EAAGoB,MAAMzL,GAAGY,EAAEV,EAAEmK,EAAGqB,YAAY1L,GAAGS,EAAE,IAAIsE,EAAAA,mBAAEtE,EAAEwE,OAAOhF,GAAGiF,wBAAE1C,EAAE9B,EAAE0E,mBAAmBlB,EAAEF,EAAE9D,EAAED,EAAEQ,GAAG,MAAME,EAAE0E,EAAAA,mBAAE7C,EAAE0B,EAAEF,EAAE9D,EAAEO,EAAER,EAAEmD,EAAE1C,EAAE4E,eAAe,GAAG7E,EAAE8E,QAAQ5E,EAAE,OAAOL,EAAE,gCAAgC,CAACkF,EAAAA,kCAAEhD,EAAE9B,EAAE4E,cAAclC,GAAGsC,EAACyI,iBAAC3L,EAAE9B,EAAEiF,eAAejF,EAAE4E,cAAclC,GAAGwC,EAAAA,6BAAEpD,EAAE9B,EAAEiF,eAAevC,GAAG,MAAMW,EAAE+B,EAACsI,0BAAG,GAAG3N,EAAEmC,mBAAmBmB,GAAGgC,EAAAA,wBAAEvD,EAAE9B,EAAEiF,eAAejF,EAAE4E,cAAclC,EAAEW,GAAG,OAAOzD,EAAE,uCAAuC,GAAG4B,IAAIQ,EAAAA,gBAAEjC,EAAEgC,aAAahC,EAAEgC,iBAAY,IAASwD,EAAC2F,kBAACpJ,EAAE9B,EAAEwF,eAAenC,GAAG,OAAOzD,EAAE,iCAAiC,IAAI6F,EAACkI,mBAAC7L,EAAEuB,GAAG,OAAOzD,EAAE,kCAAkC,IAAIF,EAACgG,aAAC5D,EAAEuB,EAAErD,EAAE2F,WAAW3F,EAAE2D,cAAc3D,EAAE4D,iBAAiB,OAAOhE,EAAE,2BAA2B,MAAM6D,EAAEmC,EAACC,kBAAG,GAAG9F,EAAEqC,WAAWqB,GAAGhE,EAAAA,cAAEqC,EAAEuB,EAAErD,EAAE+F,uBAAuB/F,EAAEgG,WAAWvC,EAAEwC,EAAAA,IAAEC,OAAOC,4BAA4B,OAAOvG,EAAE,6BAA6B,MAAMqE,EAAEmC,kBAAI,GAAGrG,EAAEwC,SAAS0B,GAAGtE,EAAC0G,cAACvE,EAAE2B,EAAEzD,EAAEsG,gBAAgBrC,GAAG,OAAOrE,EAAE,kCAAkC,MAAMP,EAAEmH,EAAAA,sBAAI,GAAGzG,EAAE0C,eAAepD,GAAGoH,EAACmH,oBAAC9L,EAAEmC,EAAEZ,EAAErD,EAAE6D,iBAAiB7D,EAAE+D,qBAAqB1E,GAAG,OAAOO,EAAE,+BAA+B4B,IAAIW,EAAAA,uBAAEkB,GAAGtD,EAAEmC,wBAAmB,EAAOG,EAACC,eAACmB,GAAG1D,EAAEqC,gBAAW,GAAQ,IAAI,IAAIvC,EAAE,EAAEA,EAAEoE,EAAEyC,SAAS7G,IAAIoE,EAAE0C,MAAM9G,IAAIoG,EAACiD,IAACtC,OAAOC,eAAe5C,EAAE6C,SAASjH,EAAE,GAAG,GAAGoE,EAAE0C,MAAM9G,IAAIoE,EAAE8C,SAASlH,EAAE,GAAG,MAAMY,EAAE,IAAIuG,EAAAA,oBAAEvG,EAAEwG,wBAAwBhD,GAAGxD,EAAEyG,8BAA8B7H,GAAGoB,EAAE0G,kBAAkBnH,EAAEiF,gBAAgBxE,EAAE2G,kBAAkBpH,EAAEwF,gBAAgB/E,EAAE4G,iBAAiBrH,EAAE4E,eAAenE,EAAE6G,YAAYtH,EAAE8D,IAAIrD,EAAE8G,cAAcvH,EAAEgE,IAAIvD,EAAE+G,gBAAe,GAAIjG,EAAEkG,oBAAoBhH,EAAEiH,sBAAsBnG,EAAEkG,oBAAoBhH,EAAEoN,SAAShO,GAAGY,EAAEqN,SAASxO,GAAG,MAAMqB,EAAEiH,EAAAA,kBAAEnH,GAAG,OAAOE,EAAEkC,SAASf,EAAE8K,IAAI3G,MAAEC,OAAOoH,gBAAgB,gBAAgBrJ,EAAE8J,sBAAsB9J,EAAEyC,qBAAqB,CAAC7D,SAAQ,EAAGmL,KAAKrN,EAAEmH,cAAclI,EAAE,uCAAsC,EAAGkC,EAAEsL,WAAWnH,EAAAA,IAAEC,OAAO+H,eAAe,MAAMpE,EAAG,CAAC,EAAE,EAAE,GAAGC,EAAG,CAAC,EAAE,EAAE,GAAG,IAAI,IAAIjK,EAAE,EAAEA,EAAE6I,EAAG7I,IAAI,IAAI,IAAIP,EAAE,EAAEA,EAAEkJ,EAAGlJ,IAAI,CAACuK,EAAG,GAAGtD,EAAG,GAAGjH,EAAEqJ,EAAGkB,EAAG,GAAGtD,EAAG,GAAGsD,EAAG,GAAGtD,EAAG,GAAG1G,EAAE8I,EAAGmB,EAAG,GAAGvD,EAAG,IAAIjH,EAAE,GAAGqJ,EAAGmB,EAAG,GAAGnC,EAAG,GAAGmC,EAAG,GAAGvD,EAAG,IAAI1G,EAAE,GAAG8I,EAAG,MAAMpJ,EAAEqK,EAAGtK,EAAEO,EAAEgK,EAAGC,GAAI,GAAGvK,EAAEsD,SAAStD,EAAEyO,KAAK,CAAC5K,EAAE8K,WAAW9K,EAAE+K,aAAa7O,EAAEO,EAAE,IAAI,MAAML,EAAE4D,EAAEsJ,QAAQnN,EAAEyO,KAAK/H,EAACiD,IAAChD,OAAOkI,kBAAkB,GAAGnI,EAAAA,IAAEsF,OAAOgB,aAAa/M,EAAEmN,UAAU7K,EAAE8K,IAAI3G,EAACiD,IAAChD,OAAO2G,eAAe,yCAAyCvN,UAAUO,aAAaoE,EAACoK,uBAAC7O,EAAEmN,YAAYnN,EAAEmN,WAAWpN,EAAEyO,KAAKnJ,OAAO,CAAC,CAAC,OAAO/C,EAAEwM,UAAUrI,MAAEC,OAAO+H,eAAezM,GAAG2D,IAAK,CAACtC,SAAQ,EAAGD,QAAQQ,EAAEN,cAAcI,EAAC"}
package/generators.mjs CHANGED
@@ -1,2 +1,2 @@
1
- import{recastConfigDefaults as e,vec3 as t,RecastBuildContext as i,NavMesh as a,Arrays as l,createRcConfig as r,calcGridSize as s,allocHeightfield as o,createHeightfield as n,markWalkableTriangles as h,rasterizeTriangles as d,filterLowHangingWalkableObstacles as c,filterLedgeSpans as m,filterWalkableLowHeightSpans as g,allocCompactHeightfield as u,buildCompactHeightfield as b,freeHeightfield as f,erodeWalkableArea as M,buildDistanceField as S,buildRegions as y,allocContourSet as w,buildContours as p,Raw as C,allocPolyMesh as R,buildPolyMesh as x,allocPolyMeshDetail as A,buildPolyMeshDetail as k,freeCompactHeightfield as T,freeContourSet as _,NavMeshCreateParams as v,createNavMeshData as z,TileCacheMeshProcess as E,TileCache as D,DetourTileCacheParams as H,NavMeshParams as F,RecastChunkyTriMesh as L,statusToReadableString as P,freePolyMesh as O,freePolyMeshDetail as I,freeHeightfieldLayerSet as G,cloneRcConfig as N,allocHeightfieldLayerSet as $,buildHeightfieldLayers as W,getHeightfieldLayerHeights as B,getHeightfieldLayerAreas as V,getHeightfieldLayerCons as K,buildTileCacheLayer as X}from"@recast-navigation/core";const Y=(e,i)=>{const a={x:1/0,y:1/0,z:1/0},l={x:-1/0,y:-1/0,z:-1/0};for(let t=0;t<i.length;t++){const r=i[t],s=e[3*r],o=e[3*r+1],n=e[3*r+2];a.x=Math.min(a.x,s),a.y=Math.min(a.y,o),a.z=Math.min(a.z,n),l.x=Math.max(l.x,s),l.y=Math.max(l.y,o),l.z=Math.max(l.z,n)}return{bbMin:t.toArray(a),bbMax:t.toArray(l)}},U=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},Z=e=>(e--,e|=e>>1,e|=e>>2,e|=e>>4,e|=e>>8,e|=e>>16,++e),j={...e},q=(e,t,E={},D=!1)=>{const H=new i,F={type:"solo",buildContext:H},L=new a,P=e=>(D||(F.heightfield&&(f(F.heightfield),F.heightfield=void 0),F.compactHeightfield&&(T(F.compactHeightfield),F.compactHeightfield=void 0),F.contourSet&&(_(F.contourSet),F.contourSet=void 0),F.polyMesh&&(O(F.polyMesh),F.polyMesh=void 0),F.polyMeshDetail&&(I(F.polyMeshDetail),F.polyMeshDetail=void 0)),L.destroy(),{navMesh:void 0,success:!1,intermediates:F,error:e}),G=e,N=t.length,$=new l.VertsArray;$.copy(G,G.length);const W=t,B=t.length/3,V=new l.TrisArray;V.copy(W,W.length);const{bbMin:K,bbMax:X}=Y(e,t),U=r({...j,...E});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=s(K,X,U.cs);U.width=Z.width,U.height=Z.height;const q=o();if(F.heightfield=q,!n(H,q,U.width,U.height,K,X,U.cs,U.ch))return P("Could not create heightfield");const J=new l.TriAreasArray;if(J.resize(B),h(H,U.walkableSlopeAngle,$,N,V,B,J),!d(H,$,N,V,J,B,q,U.walkableClimb))return P("Could not rasterize triangles");J.free(),c(H,U.walkableClimb,q),m(H,U.walkableHeight,U.walkableClimb,q),g(H,U.walkableHeight,q);const Q=u();if(F.compactHeightfield=Q,!b(H,U.walkableHeight,U.walkableClimb,q,Q))return P("Failed to build compact data");if(D||(f(q),F.heightfield=void 0),!M(H,U.walkableRadius,Q))return P("Failed to erode walkable area");if(!S(H,Q))return P("Failed to build distance field");if(!y(H,Q,U.borderSize,U.minRegionArea,U.mergeRegionArea))return P("Failed to build regions");const ee=w();if(F.contourSet=ee,!p(H,Q,U.maxSimplificationError,U.maxEdgeLen,ee,C.Module.RC_CONTOUR_TESS_WALL_EDGES))return P("Failed to create contours");const te=R();if(F.polyMesh=te,!x(H,ee,U.maxVertsPerPoly,te))return P("Failed to triangulate contours");const ie=A();if(F.polyMeshDetail=ie,!k(H,te,Q,U.detailSampleDist,U.detailSampleMaxError,ie))return P("Failed to build detail mesh");D||(T(Q),F.compactHeightfield=void 0,_(ee),F.contourSet=void 0);for(let e=0;e<te.npolys();e++)te.areas(e)==C.Recast.WALKABLE_AREA&&te.setAreas(e,0),0==te.areas(e)&&te.setFlags(e,1);const ae=new v;ae.setPolyMeshCreateParams(te),ae.setPolyMeshDetailCreateParams(ie),ae.setWalkableHeight(U.walkableHeight),ae.setWalkableRadius(U.walkableRadius),ae.setWalkableClimb(U.walkableClimb),ae.setCellSize(U.cs),ae.setCellHeight(U.ch),ae.setBuildBvTree(!0),E.offMeshConnections&&ae.setOffMeshConnections(E.offMeshConnections);const le=z(ae);if(!le.success)return P("Failed to create Detour navmesh data");const{navMeshData:re}=le;return L.initSolo(re)?{success:!0,navMesh:L,intermediates:F}:P("Failed to create Detour navmesh")},J={...e,tileSize:32,expectedLayersPerTile:4,maxObstacles:128},Q=()=>new E(((e,t,i)=>{for(let a=0;a<e.polyCount();++a)t.set(a,0),i.set(a,1)})),ee=(e,S,y={},w=!1)=>{const p=new i,R={type:"tilecache",buildContext:p,chunkyTriMesh:void 0,tileIntermediates:[]},x=new D,A=new a,k=()=>{if(!w)for(let e=0;e<R.tileIntermediates.length;e++){const t=R.tileIntermediates[e];t.heightfield&&(f(t.heightfield),t.heightfield=void 0),t.compactHeightfield&&(T(t.compactHeightfield),t.compactHeightfield=void 0),t.heightfieldLayerSet&&(G(t.heightfieldLayerSet),t.heightfieldLayerSet=void 0)}},_=e=>(k(),x.destroy(),A.destroy(),{success:!1,navMesh:void 0,tileCache:void 0,intermediates:R,error:e}),v=e,z=S.length,E=new l.VertsArray;E.copy(v,v.length);const P=S,O=S.length/3,I=new l.TrisArray;I.copy(P,P.length);const{bbMin:j,bbMax:q}=Y(e,S),{expectedLayersPerTile:ee,maxObstacles:te,...ie}={...J,...y},ae=r(ie),le=s(j,q,ae.cs);ae.width=le.width,ae.height=le.height,ae.minRegionArea=ae.minRegionArea*ae.minRegionArea,ae.mergeRegionArea=ae.mergeRegionArea*ae.mergeRegionArea,ae.detailSampleDist=ae.detailSampleDist<.9?0:ae.cs*ae.detailSampleDist,ae.detailSampleMaxError=ae.ch*ae.detailSampleMaxError;const re=Math.floor(ae.tileSize),se=Math.floor((ae.width+re-1)/re),oe=Math.floor((ae.height+re-1)/re);ae.borderSize=ae.walkableRadius+3,ae.width=ae.tileSize+2*ae.borderSize,ae.height=ae.tileSize+2*ae.borderSize;const ne=H.create({orig:j,cs:ae.cs,ch:ae.ch,width:ae.tileSize,height:ae.tileSize,walkableHeight:ae.walkableHeight,walkableRadius:ae.walkableRadius,walkableClimb:ae.walkableClimb,maxSimplificationError:ae.maxSimplificationError,maxTiles:se*oe*ee,maxObstacles:te}),he=new C.RecastLinearAllocator(32e3),de=new C.RecastFastLZCompressor,ce=y.tileCacheMeshProcess??Q();if(!x.init(ne,he,de,ce))return _("Failed to initialize tile cache");const me=t.fromArray(j);let ge=Math.min(Math.floor(U(Z(se*oe*ee))),14);ge>14&&(ge=14);const ue=1<<ge,be=1<<22-ge,fe=F.create({orig:me,tileWidth:ae.tileSize*ae.cs,tileHeight:ae.tileSize*ae.cs,maxTiles:ue,maxPolys:be});if(!A.initTiled(fe))return _("Failed to initialize tiled navmesh");const Me=new L;if(R.chunkyTriMesh=Me,!Me.init(E,I,O,256))return _("Failed to build chunky triangle mesh");const Se=(e,t)=>{const i={tileX:e,tileY:t},a=ae.tileSize*ae.cs,r=N(ae),s=[j[0]+e*a,j[1],j[2]+t*a],S=[j[0]+(e+1)*a,q[1],j[2]+(t+1)*a];s[0]-=r.borderSize*r.cs,s[2]-=r.borderSize*r.cs,S[0]+=r.borderSize*r.cs,S[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,S[0]),r.set_bmax(1,S[1]),r.set_bmax(2,S[2]);const y=o();if(i.heightfield=y,!n(p,y,r.width,r.height,s,S,r.cs,r.ch))return{n:0};const x=[s[0],s[2]],A=[S[0],S[2]],k=new l.ChunkIdsArray;k.resize(512);const _=Me.getChunksOverlappingRect(x,A,k,512);if(0===_)return{n:0};for(let e=0;e<_;++e){const t=k.get_data(e),i=Me.nodes(t).n,a=Me.getNodeTris(t),s=new l.TriAreasArray;s.resize(i),h(p,r.walkableSlopeAngle,E,z,a,i,s);const o=d(p,E,z,a,s,i,y,r.walkableClimb);if(s.free(),!o)return{n:0}}c(p,ae.walkableClimb,y),m(p,ae.walkableHeight,ae.walkableClimb,y),g(p,ae.walkableHeight,y);const v=u();if(!b(p,ae.walkableHeight,ae.walkableClimb,y,v))return{n:0};if(w||(f(i.heightfield),i.heightfield=void 0),!M(p,ae.walkableRadius,v))return{n:0};const D=$();if(!W(p,v,ae.borderSize,ae.walkableHeight,D))return{n:0};w||(T(v),i.compactHeightfield=void 0);const H=[];for(let i=0;i<D.nlayers();i++){const a=new l.TileCacheData,r=D.layers(i),s=new C.dtTileCacheLayerHeader;s.magic=C.Detour.TILECACHE_MAGIC,s.version=C.Detour.TILECACHE_VERSION,s.tx=e,s.ty=t,s.tlayer=i;const o=r.bmin(),n=r.bmax();s.set_bmin(0,o.x),s.set_bmin(1,o.y),s.set_bmin(2,o.z),s.set_bmax(0,n.x),s.set_bmax(1,n.y),s.set_bmax(2,n.z),s.width=r.width(),s.height=r.height(),s.minx=r.minx(),s.maxx=r.maxx(),s.miny=r.miny(),s.maxy=r.maxy(),s.hmin=r.hmin(),s.hmax=r.hmax();const h=B(r),d=V(r),c=K(r),m=X(de,s,h,d,c,a);if(C.Detour.statusFailed(m))return{n:0};H.push(a)}return w||(G(D),i.heightfieldLayerSet=void 0),R.tileIntermediates.push(i),{n:H.length,tiles:H}};for(let e=0;e<oe;++e)for(let t=0;t<se;++t){const{n:i,tiles:a}=Se(t,e);if(i>0&&a)for(let l=0;l<i;l++){const i=a[l],r=x.addTile(i);C.Detour.statusFailed(r.status)&&p.log(C.Module.RC_LOG_WARNING,`Failed to add tile to tile cache - tx: ${t}, ty: ${e}`)}}for(let e=0;e<oe;e++)for(let t=0;t<se;t++){const i=x.buildNavMeshTilesAt(t,e,A);if(C.Detour.statusFailed(i))return _(`Failed to build nav mesh tiles at ${t}, ${e}`)}return k(),{success:!0,tileCache:x,navMesh:A,intermediates:R}},te={...e},ie=(e,E,D={},H=!1)=>{const G=new i,$={type:"tiled",buildContext:G,chunkyTriMesh:void 0,tileIntermediates:[]},W=new a,B=()=>{if(!H){for(let e=0;e<$.tileIntermediates.length;e++){const t=$.tileIntermediates[e];t.compactHeightfield&&T(t.compactHeightfield),t.heightfield&&f(t.heightfield),t.contourSet&&_(t.contourSet),t.polyMesh&&O(t.polyMesh),t.polyMeshDetail&&I(t.polyMeshDetail)}$.chunkyTriMesh&&($.chunkyTriMesh=void 0)}},V=e=>(B(),W.destroy(),{success:!1,navMesh:void 0,intermediates:$,error:e}),K=r({...te,...D}),{bbMin:X,bbMax:j}=Y(e,E),q=s(X,j,K.cs);K.width=q.width,K.height=q.height,K.minRegionArea=K.minRegionArea*K.minRegionArea,K.mergeRegionArea=K.mergeRegionArea*K.mergeRegionArea,K.tileSize=Math.floor(K.tileSize),K.borderSize=K.walkableRadius+3,K.width=K.tileSize+2*K.borderSize,K.height=K.tileSize+2*K.borderSize,K.detailSampleDist=K.detailSampleDist<.9?0:K.cs*K.detailSampleDist,K.detailSampleMaxError=K.ch*K.detailSampleMaxError;const J=Math.floor(K.tileSize),Q=Math.floor((q.width+J-1)/J),ee=Math.floor((q.height+J-1)/J),ie=K.tileSize*K.cs,ae=e,le=E.length,re=new l.VertsArray;re.copy(ae,ae.length);const se=E,oe=E.length/3,ne=new l.TrisArray;ne.copy(se,se.length);const he=t.fromArray(X);let de=Math.min(Math.floor(U(Z(Q*ee))),14);de>14&&(de=14);const ce=1<<de,me=1<<22-de,ge=F.create({orig:he,tileWidth:K.tileSize*K.cs,tileHeight:K.tileSize*K.cs,maxTiles:ce,maxPolys:me});if(!W.initTiled(ge))return V("Could not init nav mesh for tiled use");const ue=new L;if($.chunkyTriMesh=ue,!ue.init(re,ne,oe,256))return V("Failed to build chunky triangle mesh");const be=(e,t,i,a)=>{const r=e=>(G.log(C.Module.RC_LOG_ERROR,e),{success:!1,error:e}),s={tileX:e,tileY:t};$.tileIntermediates.push(s);const E=N(K),F=[...i],L=[...a];F[0]-=E.borderSize*E.cs,F[2]-=E.borderSize*E.cs,L[0]+=E.borderSize*E.cs,L[2]+=E.borderSize*E.cs,E.set_bmin(0,F[0]),E.set_bmin(1,F[1]),E.set_bmin(2,F[2]),E.set_bmax(0,L[0]),E.set_bmax(1,L[1]),E.set_bmax(2,L[2]),G.resetTimers(),G.startTimer(C.Module.RC_TIMER_TOTAL),G.log(C.Module.RC_LOG_PROGRESS,`Building tile ${$.tileIntermediates.length} at x: ${e}, y: ${t}`),G.log(C.Module.RC_LOG_PROGRESS,` - ${K.width} x ${K.height} cells`),G.log(C.Module.RC_LOG_PROGRESS,` - ${le/1e3}fK verts, ${oe/1e3}K tris`);const P=o();if(s.heightfield=P,!n(G,P,E.width,E.height,F,L,E.cs,E.ch))return r("Could not create heightfield");(new l.TriAreasArray).resize(ue.maxTrisPerChunk());const O=[F[0],F[2]],I=[L[0],L[2]],W=new l.ChunkIdsArray;W.resize(512);const B=ue.getChunksOverlappingRect(O,I,W,512);if(0===B)return{success:!0};for(let e=0;e<B;++e){const t=W.get_data(e),i=ue.nodes(t).n,a=ue.getNodeTris(t),s=new l.TriAreasArray;s.resize(i),h(G,E.walkableSlopeAngle,re,le,a,i,s);const o=d(G,re,le,a,s,i,P,E.walkableClimb);if(s.free(),!o)return r("Could not rasterize triangles")}c(G,E.walkableClimb,P),m(G,E.walkableHeight,E.walkableClimb,P),g(G,E.walkableHeight,P);const V=u();if(s.compactHeightfield=V,!b(G,E.walkableHeight,E.walkableClimb,P,V))return r("Could not build compact heightfield");if(H||(f(s.heightfield),s.heightfield=void 0),!M(G,E.walkableRadius,V))return r("Could not erode walkable area");if(!S(G,V))return r("Failed to build distance field");if(!y(G,V,E.borderSize,E.minRegionArea,E.mergeRegionArea))return r("Failed to build regions");const X=w();if(s.contourSet=X,!p(G,V,E.maxSimplificationError,E.maxEdgeLen,X,C.Module.RC_CONTOUR_TESS_WALL_EDGES))return r("Failed to create contours");const Y=R();if(s.polyMesh=Y,!x(G,X,E.maxVertsPerPoly,Y))return r("Failed to triangulate contours");const U=A();if(s.polyMeshDetail=U,!k(G,Y,V,E.detailSampleDist,E.detailSampleMaxError,U))return r("Failed to build detail mesh");H||(T(V),s.compactHeightfield=void 0,_(X),s.contourSet=void 0);for(let e=0;e<Y.npolys();e++)Y.areas(e)==C.Recast.WALKABLE_AREA&&Y.setAreas(e,0),0==Y.areas(e)&&Y.setFlags(e,1);const Z=new v;Z.setPolyMeshCreateParams(Y),Z.setPolyMeshDetailCreateParams(U),Z.setWalkableHeight(E.walkableHeight),Z.setWalkableRadius(E.walkableRadius),Z.setWalkableClimb(E.walkableClimb),Z.setCellSize(E.cs),Z.setCellHeight(E.ch),Z.setBuildBvTree(!0),D.offMeshConnections&&Z.setOffMeshConnections(D.offMeshConnections),Z.setTileX(e),Z.setTileY(t);const j=z(Z);return j.success?(G.log(C.Module.RC_LOG_PROGRESS,`>> Polymesh: ${Y.nverts()} vertices ${Y.npolys()} polygons`),{success:!0,data:j.navMeshData}):r("Failed to create Detour navmesh data")};G.startTimer(C.Module.RC_TIMER_TEMP);const fe=[0,0,0],Me=[0,0,0];for(let e=0;e<ee;e++)for(let t=0;t<Q;t++){fe[0]=X[0]+t*ie,fe[1]=X[1],fe[2]=X[2]+e*ie,Me[0]=X[0]+(t+1)*ie,Me[1]=j[1],Me[2]=X[2]+(e+1)*ie;const i=be(t,e,fe,Me);if(i.success&&i.data){W.removeTile(W.getTileRefAt(t,e,0));const a=W.addTile(i.data,C.Module.DT_TILE_FREE_DATA,0);C.Detour.statusFailed(a.status)&&(G.log(C.Module.RC_LOG_WARNING,`Failed to add tile to nav mesh\n\ttx: ${t}, ty: ${e},status: ${P(a.status)} (${a.status})`),i.data.free())}}return G.stopTimer(C.Module.RC_TIMER_TEMP),H||B(),{success:!0,navMesh:W,intermediates:$}};export{Q as createDefaultTileCacheMeshProcess,U as dtIlog2,Z as dtNextPow2,q as generateSoloNavMesh,ee as generateTileCache,ie as generateTiledNavMesh,Y as getBoundingBox,j as soloNavMeshGeneratorConfigDefaults,J as tileCacheGeneratorConfigDefaults,te as tiledNavMeshGeneratorConfigDefaults};
1
+ import{recastConfigDefaults as e,vec3 as t,RecastBuildContext as i,NavMesh as a,VerticesArray as l,TrianglesArray as o,createRcConfig as r,calcGridSize as s,allocHeightfield as n,createHeightfield as h,TriangleAreasArray as d,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 p,buildRegions as y,allocContourSet as C,buildContours as R,Raw as x,allocPolyMesh as k,buildPolyMesh as v,allocPolyMeshDetail as z,buildPolyMeshDetail as _,freeCompactHeightfield as A,freeContourSet as T,NavMeshCreateParams as E,createNavMeshData as D,TileCacheMeshProcess as H,TileCache as F,DetourTileCacheParams as L,NavMeshParams as P,RecastChunkyTriMesh as O,statusToReadableString as I,freePolyMesh as G,freePolyMeshDetail as N,freeHeightfieldLayerSet as $,cloneRcConfig as W,ChunkIdsArray as B,allocHeightfieldLayerSet as K,buildHeightfieldLayers as V,TileCacheData as X,getHeightfieldLayerHeights as Y,getHeightfieldLayerAreas as U,getHeightfieldLayerCons as Z,buildTileCacheLayer as j}from"@recast-navigation/core";const q=(e,i)=>{const a={x:1/0,y:1/0,z:1/0},l={x:-1/0,y:-1/0,z:-1/0};for(let t=0;t<i.length;t++){const o=i[t],r=e[3*o],s=e[3*o+1],n=e[3*o+2];a.x=Math.min(a.x,r),a.y=Math.min(a.y,s),a.z=Math.min(a.z,n),l.x=Math.max(l.x,r),l.y=Math.max(l.y,s),l.z=Math.max(l.z,n)}return{bbMin:t.toArray(a),bbMax:t.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={...e},te=(e,t,H={},F=!1)=>{const L=new i,P={type:"solo",buildContext:L},O=new a,I=e=>(F||(P.heightfield&&(S(P.heightfield),P.heightfield=void 0),P.compactHeightfield&&(A(P.compactHeightfield),P.compactHeightfield=void 0),P.contourSet&&(T(P.contourSet),P.contourSet=void 0),P.polyMesh&&(G(P.polyMesh),P.polyMesh=void 0),P.polyMeshDetail&&(N(P.polyMeshDetail),P.polyMeshDetail=void 0)),O.destroy(),{navMesh:void 0,success:!1,intermediates:P,error:e}),$=e,W=t.length,B=new l;B.copy($);const K=t,V=t.length/3,X=new o;X.copy(K);const{bbMin:Y,bbMax:U}=q(e,t),Z=r({...ee,...H});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(P.heightfield=J,!h(L,J,Z.width,Z.height,Y,U,Z.cs,Z.ch))return I("Could not create heightfield");const Q=new d;if(Q.resize(V),c(L,Z.walkableSlopeAngle,B,W,X,V,Q),!m(L,B,W,X,Q,V,J,Z.walkableClimb))return I("Could not rasterize triangles");Q.free(),B.free(),X.free(),g(L,Z.walkableClimb,J),u(L,Z.walkableHeight,Z.walkableClimb,J),b(L,Z.walkableHeight,J);const te=f();if(P.compactHeightfield=te,!M(L,Z.walkableHeight,Z.walkableClimb,J,te))return I("Failed to build compact data");if(F||(S(J),P.heightfield=void 0),!w(L,Z.walkableRadius,te))return I("Failed to erode walkable area");if(!p(L,te))return I("Failed to build distance field");if(!y(L,te,Z.borderSize,Z.minRegionArea,Z.mergeRegionArea))return I("Failed to build regions");const ie=C();if(P.contourSet=ie,!R(L,te,Z.maxSimplificationError,Z.maxEdgeLen,ie,x.Module.RC_CONTOUR_TESS_WALL_EDGES))return I("Failed to create contours");const ae=k();if(P.polyMesh=ae,!v(L,ie,Z.maxVertsPerPoly,ae))return I("Failed to triangulate contours");const le=z();if(P.polyMeshDetail=le,!_(L,ae,te,Z.detailSampleDist,Z.detailSampleMaxError,le))return I("Failed to build detail mesh");F||(A(te),P.compactHeightfield=void 0,T(ie),P.contourSet=void 0);for(let e=0;e<ae.npolys();e++)ae.areas(e)==x.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(Z.walkableHeight),oe.setWalkableRadius(Z.walkableRadius),oe.setWalkableClimb(Z.walkableClimb),oe.setCellSize(Z.cs),oe.setCellHeight(Z.ch),oe.setBuildBvTree(!0),H.offMeshConnections&&oe.setOffMeshConnections(H.offMeshConnections);const re=D(oe);if(!re.success)return I("Failed to create Detour navmesh data");const{navMeshData:se}=re;return O.initSolo(se)?{success:!0,navMesh:O,intermediates:P}:I("Failed to create Detour navmesh")},ie={...e,tileSize:32,expectedLayersPerTile:4,maxObstacles:128},ae=()=>new H(((e,t,i)=>{for(let a=0;a<e.polyCount();++a)t.set(a,0),i.set(a,1)})),le=(e,p,y={},C=!1)=>{const R=new i,k={type:"tilecache",buildContext:R,chunkyTriMesh:void 0,tileIntermediates:[]},v=new F,z=new a,_=e,T=p.length,E=new l;E.copy(_);const D=p,H=p.length/3,I=new o;I.copy(D);const{bbMin:G,bbMax:N}=q(e,p),{expectedLayersPerTile:ee,maxObstacles:te,...le}={...ie,...y},oe=()=>{if(E.free(),I.free(),!C)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&&(A(t.compactHeightfield),t.compactHeightfield=void 0),t.heightfieldLayerSet&&($(t.heightfieldLayerSet),t.heightfieldLayerSet=void 0)}},re=e=>(oe(),v.destroy(),z.destroy(),{success:!1,navMesh:void 0,tileCache:void 0,intermediates:k,error:e}),se=r(le),ne=s(G,N,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 he=Math.floor(se.tileSize),de=Math.floor((se.width+he-1)/he),ce=Math.floor((se.height+he-1)/he);se.borderSize=se.walkableRadius+3,se.width=se.tileSize+2*se.borderSize,se.height=se.tileSize+2*se.borderSize;const me=L.create({orig:G,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:de*ce*ee,maxObstacles:te}),ge=new x.RecastLinearAllocator(32e3),ue=new x.RecastFastLZCompressor,be=y.tileCacheMeshProcess??ae();if(!v.init(me,ge,ue,be))return re("Failed to initialize tile cache");const fe=t.fromArray(G);let Me=Math.min(Math.floor(J(Q(de*ce*ee))),14);Me>14&&(Me=14);const Se=1<<Me,we=1<<22-Me,pe=P.create({orig:fe,tileWidth:se.tileSize*se.cs,tileHeight:se.tileSize*se.cs,maxTiles:Se,maxPolys:we});if(!z.initTiled(pe))return re("Failed to initialize tiled navmesh");const ye=new O;if(k.chunkyTriMesh=ye,!ye.init(E,I,H,256))return re("Failed to build chunky triangle mesh");const Ce=(e,t)=>{const i={tileX:e,tileY:t},a=se.tileSize*se.cs,l=W(se),o=[G[0]+e*a,G[1],G[2]+t*a],r=[G[0]+(e+1)*a,N[1],G[2]+(t+1)*a];o[0]-=l.borderSize*l.cs,o[2]-=l.borderSize*l.cs,r[0]+=l.borderSize*l.cs,r[2]+=l.borderSize*l.cs,l.set_bmin(0,o[0]),l.set_bmin(1,o[1]),l.set_bmin(2,o[2]),l.set_bmax(0,r[0]),l.set_bmax(1,r[1]),l.set_bmax(2,r[2]);const s=n();if(i.heightfield=s,!h(R,s,l.width,l.height,o,r,l.cs,l.ch))return{n:0};const p=[o[0],o[2]],y=[r[0],r[2]],v=new B;v.resize(512);const z=ye.getChunksOverlappingRect(p,y,v,512);if(0===z)return{n:0};for(let e=0;e<z;++e){const t=v.get(e),i=ye.nodes(t).n,a=ye.getNodeTris(t),o=new d;o.resize(i),c(R,l.walkableSlopeAngle,E,T,a,i,o);const r=m(R,E,T,a,o,i,s,l.walkableClimb);if(o.free(),!r)return{n:0}}g(R,se.walkableClimb,s),u(R,se.walkableHeight,se.walkableClimb,s),b(R,se.walkableHeight,s);const _=f();if(!M(R,se.walkableHeight,se.walkableClimb,s,_))return{n:0};if(C||(S(i.heightfield),i.heightfield=void 0),!w(R,se.walkableRadius,_))return{n:0};const D=K();if(!V(R,_,se.borderSize,se.walkableHeight,D))return{n:0};C||(A(_),i.compactHeightfield=void 0);const H=[];for(let i=0;i<D.nlayers();i++){const a=new X,l=D.layers(i),o=new x.dtTileCacheLayerHeader;o.magic=x.Detour.TILECACHE_MAGIC,o.version=x.Detour.TILECACHE_VERSION,o.tx=e,o.ty=t,o.tlayer=i;const r=l.bmin(),s=l.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=l.width(),o.height=l.height(),o.minx=l.minx(),o.maxx=l.maxx(),o.miny=l.miny(),o.maxy=l.maxy(),o.hmin=l.hmin(),o.hmax=l.hmax();const n=Y(l),h=U(l),d=Z(l),c=j(ue,o,n,h,d,a);if(x.Detour.statusFailed(c))return{n:0};H.push(a)}return C||($(D),i.heightfieldLayerSet=void 0),k.tileIntermediates.push(i),{n:H.length,tiles:H}};for(let e=0;e<ce;++e)for(let t=0;t<de;++t){const{n:i,tiles:a}=Ce(t,e);if(i>0&&a)for(let l=0;l<i;l++){const i=a[l],o=v.addTile(i);x.Detour.statusFailed(o.status)&&R.log(x.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<de;t++){const i=v.buildNavMeshTilesAt(t,e,z);if(x.Detour.statusFailed(i))return re(`Failed to build nav mesh tiles at ${t}, ${e}`)}return oe(),{success:!0,tileCache:v,navMesh:z,intermediates:k}},oe={...e},re=(e,H,F={},L=!1)=>{const $=new i,K={type:"tiled",buildContext:$,chunkyTriMesh:void 0,tileIntermediates:[]},V=new a,X=e,Y=H.length,U=new l;U.copy(X);const Z=H,j=H.length/3,ee=new o;ee.copy(Z);const te=()=>{if(U.free(),ee.free(),!L){for(let e=0;e<K.tileIntermediates.length;e++){const t=K.tileIntermediates[e];t.compactHeightfield&&A(t.compactHeightfield),t.heightfield&&S(t.heightfield),t.contourSet&&T(t.contourSet),t.polyMesh&&G(t.polyMesh),t.polyMeshDetail&&N(t.polyMeshDetail)}K.chunkyTriMesh&&(K.chunkyTriMesh=void 0)}},ie=e=>(te(),V.destroy(),{success:!1,navMesh:void 0,intermediates:K,error:e}),ae=r({...oe,...F}),{bbMin:le,bbMax:re}=q(e,H),se=s(le,re,ae.cs);ae.width=se.width,ae.height=se.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),he=Math.floor((se.width+ne-1)/ne),de=Math.floor((se.height+ne-1)/ne),ce=ae.tileSize*ae.cs,me=t.fromArray(le);let ge=Math.min(Math.floor(J(Q(he*de))),14);ge>14&&(ge=14);const ue=1<<ge,be=1<<22-ge,fe=P.create({orig:me,tileWidth:ae.tileSize*ae.cs,tileHeight:ae.tileSize*ae.cs,maxTiles:ue,maxPolys:be});if(!V.initTiled(fe))return ie("Could not init nav mesh for tiled use");const Me=new O;if(K.chunkyTriMesh=Me,!Me.init(U,ee,j,256))return ie("Failed to build chunky triangle mesh");const Se=(e,t,i,a)=>{const l=e=>($.log(x.Module.RC_LOG_ERROR,e),{success:!1,error:e}),o={tileX:e,tileY:t};K.tileIntermediates.push(o);const r=W(ae),s=[...i],H=[...a];s[0]-=r.borderSize*r.cs,s[2]-=r.borderSize*r.cs,H[0]+=r.borderSize*r.cs,H[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,H[0]),r.set_bmax(1,H[1]),r.set_bmax(2,H[2]),$.resetTimers(),$.startTimer(x.Module.RC_TIMER_TOTAL),$.log(x.Module.RC_LOG_PROGRESS,`Building tile ${K.tileIntermediates.length} at x: ${e}, y: ${t}`),$.log(x.Module.RC_LOG_PROGRESS,` - ${ae.width} x ${ae.height} cells`),$.log(x.Module.RC_LOG_PROGRESS,` - ${Y/1e3}fK verts, ${j/1e3}K tris`);const P=n();if(o.heightfield=P,!h($,P,r.width,r.height,s,H,r.cs,r.ch))return l("Could not create heightfield");(new d).resize(Me.maxTrisPerChunk());const O=[s[0],s[2]],I=[H[0],H[2]],G=new B;G.resize(512);const N=Me.getChunksOverlappingRect(O,I,G,512);if(0===N)return{success:!0};for(let e=0;e<N;++e){const t=G.get(e),i=Me.nodes(t).n,a=Me.getNodeTris(t),o=new d;o.resize(i),c($,r.walkableSlopeAngle,U,Y,a,i,o);const s=m($,U,Y,a,o,i,P,r.walkableClimb);if(o.free(),!s)return l("Could not rasterize triangles")}g($,r.walkableClimb,P),u($,r.walkableHeight,r.walkableClimb,P),b($,r.walkableHeight,P);const V=f();if(o.compactHeightfield=V,!M($,r.walkableHeight,r.walkableClimb,P,V))return l("Could not build compact heightfield");if(L||(S(o.heightfield),o.heightfield=void 0),!w($,r.walkableRadius,V))return l("Could not erode walkable area");if(!p($,V))return l("Failed to build distance field");if(!y($,V,r.borderSize,r.minRegionArea,r.mergeRegionArea))return l("Failed to build regions");const X=C();if(o.contourSet=X,!R($,V,r.maxSimplificationError,r.maxEdgeLen,X,x.Module.RC_CONTOUR_TESS_WALL_EDGES))return l("Failed to create contours");const Z=k();if(o.polyMesh=Z,!v($,X,r.maxVertsPerPoly,Z))return l("Failed to triangulate contours");const q=z();if(o.polyMeshDetail=q,!_($,Z,V,r.detailSampleDist,r.detailSampleMaxError,q))return l("Failed to build detail mesh");L||(A(V),o.compactHeightfield=void 0,T(X),o.contourSet=void 0);for(let e=0;e<Z.npolys();e++)Z.areas(e)==x.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),F.offMeshConnections&&J.setOffMeshConnections(F.offMeshConnections),J.setTileX(e),J.setTileY(t);const Q=D(J);return Q.success?($.log(x.Module.RC_LOG_PROGRESS,`>> Polymesh: ${Z.nverts()} vertices ${Z.npolys()} polygons`),{success:!0,data:Q.navMeshData}):l("Failed to create Detour navmesh data")};$.startTimer(x.Module.RC_TIMER_TEMP);const we=[0,0,0],pe=[0,0,0];for(let e=0;e<de;e++)for(let t=0;t<he;t++){we[0]=le[0]+t*ce,we[1]=le[1],we[2]=le[2]+e*ce,pe[0]=le[0]+(t+1)*ce,pe[1]=re[1],pe[2]=le[2]+(e+1)*ce;const i=Se(t,e,we,pe);if(i.success&&i.data){V.removeTile(V.getTileRefAt(t,e,0));const a=V.addTile(i.data,x.Module.DT_TILE_FREE_DATA,0);x.Detour.statusFailed(a.status)&&($.log(x.Module.RC_LOG_WARNING,`Failed to add tile to nav mesh\n\ttx: ${t}, ty: ${e},status: ${I(a.status)} (${a.status})`),i.data.free())}}return $.stopTimer(x.Module.RC_TIMER_TEMP),L||te(),{success:!0,navMesh:V,intermediates:K}};export{ae as createDefaultTileCacheMeshProcess,J as dtIlog2,Q as dtNextPow2,te as generateSoloNavMesh,le as generateTileCache,re as generateTiledNavMesh,q as getBoundingBox,ee as soloNavMeshGeneratorConfigDefaults,ie as tileCacheGeneratorConfigDefaults,oe as tiledNavMeshGeneratorConfigDefaults};
2
2
  //# sourceMappingURL=generators.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"generators.mjs","sources":["../recast-navigation-generators/dist/index.mjs"],"sourcesContent":["import{vec3 as e,recastConfigDefaults as t,RecastBuildContext as i,NavMesh as a,Arrays as l,createRcConfig as r,calcGridSize as s,allocHeightfield as o,createHeightfield as n,markWalkableTriangles as h,rasterizeTriangles as d,filterLowHangingWalkableObstacles as c,filterLedgeSpans as m,filterWalkableLowHeightSpans as g,allocCompactHeightfield as u,buildCompactHeightfield as b,freeHeightfield as f,erodeWalkableArea as M,buildDistanceField as y,buildRegions as S,allocContourSet as w,buildContours as p,Raw as R,allocPolyMesh as C,buildPolyMesh as x,allocPolyMeshDetail as A,buildPolyMeshDetail as k,freeCompactHeightfield as _,freeContourSet as z,NavMeshCreateParams as T,createNavMeshData as v,freePolyMesh as E,freePolyMeshDetail as D,TileCacheMeshProcess as H,TileCache as F,DetourTileCacheParams as L,NavMeshParams as O,RecastChunkyTriMesh as P,freeHeightfieldLayerSet as I,cloneRcConfig as $,allocHeightfieldLayerSet as G,buildHeightfieldLayers as N,getHeightfieldLayerHeights as W,getHeightfieldLayerAreas as B,getHeightfieldLayerCons as V,buildTileCacheLayer as K,statusToReadableString as X}from\"@recast-navigation/core\";const Y=(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 r=i[e],s=t[3*r],o=t[3*r+1],n=t[3*r+2];a.x=Math.min(a.x,s),a.y=Math.min(a.y,o),a.z=Math.min(a.z,n),l.x=Math.max(l.x,s),l.y=Math.max(l.y,o),l.z=Math.max(l.z,n)}return{bbMin:e.toArray(a),bbMax:e.toArray(l)}},U=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},Z=e=>(e--,e|=e>>1,e|=e>>2,e|=e>>4,e|=e>>8,e|=e>>16,++e),j={...t},q=(e,t,H={},F=!1)=>{const L=new i,O={type:\"solo\",buildContext:L},P=new a,I=e=>(F||(O.heightfield&&(f(O.heightfield),O.heightfield=void 0),O.compactHeightfield&&(_(O.compactHeightfield),O.compactHeightfield=void 0),O.contourSet&&(z(O.contourSet),O.contourSet=void 0),O.polyMesh&&(E(O.polyMesh),O.polyMesh=void 0),O.polyMeshDetail&&(D(O.polyMeshDetail),O.polyMeshDetail=void 0)),P.destroy(),{navMesh:void 0,success:!1,intermediates:O,error:e}),$=e,G=t.length,N=new l.VertsArray;N.copy($,$.length);const W=t,B=t.length/3,V=new l.TrisArray;V.copy(W,W.length);const{bbMin:K,bbMax:X}=Y(e,t),U=r({...j,...H});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=s(K,X,U.cs);U.width=Z.width,U.height=Z.height;const q=o();if(O.heightfield=q,!n(L,q,U.width,U.height,K,X,U.cs,U.ch))return I(\"Could not create heightfield\");const J=new l.TriAreasArray;if(J.resize(B),h(L,U.walkableSlopeAngle,N,G,V,B,J),!d(L,N,G,V,J,B,q,U.walkableClimb))return I(\"Could not rasterize triangles\");J.free(),c(L,U.walkableClimb,q),m(L,U.walkableHeight,U.walkableClimb,q),g(L,U.walkableHeight,q);const Q=u();if(O.compactHeightfield=Q,!b(L,U.walkableHeight,U.walkableClimb,q,Q))return I(\"Failed to build compact data\");if(F||(f(q),O.heightfield=void 0),!M(L,U.walkableRadius,Q))return I(\"Failed to erode walkable area\");if(!y(L,Q))return I(\"Failed to build distance field\");if(!S(L,Q,U.borderSize,U.minRegionArea,U.mergeRegionArea))return I(\"Failed to build regions\");const ee=w();if(O.contourSet=ee,!p(L,Q,U.maxSimplificationError,U.maxEdgeLen,ee,R.Module.RC_CONTOUR_TESS_WALL_EDGES))return I(\"Failed to create contours\");const te=C();if(O.polyMesh=te,!x(L,ee,U.maxVertsPerPoly,te))return I(\"Failed to triangulate contours\");const ie=A();if(O.polyMeshDetail=ie,!k(L,te,Q,U.detailSampleDist,U.detailSampleMaxError,ie))return I(\"Failed to build detail mesh\");F||(_(Q),O.compactHeightfield=void 0,z(ee),O.contourSet=void 0);for(let e=0;e<te.npolys();e++)te.areas(e)==R.Recast.WALKABLE_AREA&&te.setAreas(e,0),0==te.areas(e)&&te.setFlags(e,1);const ae=new T;ae.setPolyMeshCreateParams(te),ae.setPolyMeshDetailCreateParams(ie),ae.setWalkableHeight(U.walkableHeight),ae.setWalkableRadius(U.walkableRadius),ae.setWalkableClimb(U.walkableClimb),ae.setCellSize(U.cs),ae.setCellHeight(U.ch),ae.setBuildBvTree(!0),H.offMeshConnections&&ae.setOffMeshConnections(H.offMeshConnections);const le=v(ae);if(!le.success)return I(\"Failed to create Detour navmesh data\");const{navMeshData:re}=le;return P.initSolo(re)?{success:!0,navMesh:P,intermediates:O}:I(\"Failed to create Detour navmesh\")},J={...t,tileSize:32,expectedLayersPerTile:4,maxObstacles:128},Q=()=>new H(((e,t,i)=>{for(let a=0;a<e.polyCount();++a)t.set(a,0),i.set(a,1)})),ee=(t,y,S={},w=!1)=>{const p=new i,C={type:\"tilecache\",buildContext:p,chunkyTriMesh:void 0,tileIntermediates:[]},x=new F,A=new a,k=()=>{if(!w)for(let e=0;e<C.tileIntermediates.length;e++){const t=C.tileIntermediates[e];t.heightfield&&(f(t.heightfield),t.heightfield=void 0),t.compactHeightfield&&(_(t.compactHeightfield),t.compactHeightfield=void 0),t.heightfieldLayerSet&&(I(t.heightfieldLayerSet),t.heightfieldLayerSet=void 0)}},z=e=>(k(),x.destroy(),A.destroy(),{success:!1,navMesh:void 0,tileCache:void 0,intermediates:C,error:e}),T=t,v=y.length,E=new l.VertsArray;E.copy(T,T.length);const D=y,H=y.length/3,X=new l.TrisArray;X.copy(D,D.length);const{bbMin:j,bbMax:q}=Y(t,y),{expectedLayersPerTile:ee,maxObstacles:te,...ie}={...J,...S},ae=r(ie),le=s(j,q,ae.cs);ae.width=le.width,ae.height=le.height,ae.minRegionArea=ae.minRegionArea*ae.minRegionArea,ae.mergeRegionArea=ae.mergeRegionArea*ae.mergeRegionArea,ae.detailSampleDist=ae.detailSampleDist<.9?0:ae.cs*ae.detailSampleDist,ae.detailSampleMaxError=ae.ch*ae.detailSampleMaxError;const re=Math.floor(ae.tileSize),se=Math.floor((ae.width+re-1)/re),oe=Math.floor((ae.height+re-1)/re);ae.borderSize=ae.walkableRadius+3,ae.width=ae.tileSize+2*ae.borderSize,ae.height=ae.tileSize+2*ae.borderSize;const ne=L.create({orig:j,cs:ae.cs,ch:ae.ch,width:ae.tileSize,height:ae.tileSize,walkableHeight:ae.walkableHeight,walkableRadius:ae.walkableRadius,walkableClimb:ae.walkableClimb,maxSimplificationError:ae.maxSimplificationError,maxTiles:se*oe*ee,maxObstacles:te}),he=new R.RecastLinearAllocator(32e3),de=new R.RecastFastLZCompressor,ce=S.tileCacheMeshProcess??Q();if(!x.init(ne,he,de,ce))return z(\"Failed to initialize tile cache\");const me=e.fromArray(j);let ge=Math.min(Math.floor(U(Z(se*oe*ee))),14);ge>14&&(ge=14);const ue=1<<ge,be=1<<22-ge,fe=O.create({orig:me,tileWidth:ae.tileSize*ae.cs,tileHeight:ae.tileSize*ae.cs,maxTiles:ue,maxPolys:be});if(!A.initTiled(fe))return z(\"Failed to initialize tiled navmesh\");const Me=new P;if(C.chunkyTriMesh=Me,!Me.init(E,X,H,256))return z(\"Failed to build chunky triangle mesh\");const ye=(e,t)=>{const i={tileX:e,tileY:t},a=ae.tileSize*ae.cs,r=$(ae),s=[j[0]+e*a,j[1],j[2]+t*a],y=[j[0]+(e+1)*a,q[1],j[2]+(t+1)*a];s[0]-=r.borderSize*r.cs,s[2]-=r.borderSize*r.cs,y[0]+=r.borderSize*r.cs,y[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,y[0]),r.set_bmax(1,y[1]),r.set_bmax(2,y[2]);const S=o();if(i.heightfield=S,!n(p,S,r.width,r.height,s,y,r.cs,r.ch))return{n:0};const x=[s[0],s[2]],A=[y[0],y[2]],k=new l.ChunkIdsArray;k.resize(512);const z=Me.getChunksOverlappingRect(x,A,k,512);if(0===z)return{n:0};for(let e=0;e<z;++e){const t=k.get_data(e),i=Me.nodes(t).n,a=Me.getNodeTris(t),s=new l.TriAreasArray;s.resize(i),h(p,r.walkableSlopeAngle,E,v,a,i,s);const o=d(p,E,v,a,s,i,S,r.walkableClimb);if(s.free(),!o)return{n:0}}c(p,ae.walkableClimb,S),m(p,ae.walkableHeight,ae.walkableClimb,S),g(p,ae.walkableHeight,S);const T=u();if(!b(p,ae.walkableHeight,ae.walkableClimb,S,T))return{n:0};if(w||(f(i.heightfield),i.heightfield=void 0),!M(p,ae.walkableRadius,T))return{n:0};const D=G();if(!N(p,T,ae.borderSize,ae.walkableHeight,D))return{n:0};w||(_(T),i.compactHeightfield=void 0);const H=[];for(let i=0;i<D.nlayers();i++){const a=new l.TileCacheData,r=D.layers(i),s=new R.dtTileCacheLayerHeader;s.magic=R.Detour.TILECACHE_MAGIC,s.version=R.Detour.TILECACHE_VERSION,s.tx=e,s.ty=t,s.tlayer=i;const o=r.bmin(),n=r.bmax();s.set_bmin(0,o.x),s.set_bmin(1,o.y),s.set_bmin(2,o.z),s.set_bmax(0,n.x),s.set_bmax(1,n.y),s.set_bmax(2,n.z),s.width=r.width(),s.height=r.height(),s.minx=r.minx(),s.maxx=r.maxx(),s.miny=r.miny(),s.maxy=r.maxy(),s.hmin=r.hmin(),s.hmax=r.hmax();const h=W(r),d=B(r),c=V(r),m=K(de,s,h,d,c,a);if(R.Detour.statusFailed(m))return{n:0};H.push(a)}return w||(I(D),i.heightfieldLayerSet=void 0),C.tileIntermediates.push(i),{n:H.length,tiles:H}};for(let e=0;e<oe;++e)for(let t=0;t<se;++t){const{n:i,tiles:a}=ye(t,e);if(i>0&&a)for(let l=0;l<i;l++){const i=a[l],r=x.addTile(i);R.Detour.statusFailed(r.status)&&p.log(R.Module.RC_LOG_WARNING,`Failed to add tile to tile cache - tx: ${t}, ty: ${e}`)}}for(let e=0;e<oe;e++)for(let t=0;t<se;t++){const i=x.buildNavMeshTilesAt(t,e,A);if(R.Detour.statusFailed(i))return z(`Failed to build nav mesh tiles at ${t}, ${e}`)}return k(),{success:!0,tileCache:x,navMesh:A,intermediates:C}},te={...t},ie=(t,H,F={},L=!1)=>{const I=new i,G={type:\"tiled\",buildContext:I,chunkyTriMesh:void 0,tileIntermediates:[]},N=new a,W=()=>{if(!L){for(let e=0;e<G.tileIntermediates.length;e++){const t=G.tileIntermediates[e];t.compactHeightfield&&_(t.compactHeightfield),t.heightfield&&f(t.heightfield),t.contourSet&&z(t.contourSet),t.polyMesh&&E(t.polyMesh),t.polyMeshDetail&&D(t.polyMeshDetail)}G.chunkyTriMesh&&(G.chunkyTriMesh=void 0)}},B=e=>(W(),N.destroy(),{success:!1,navMesh:void 0,intermediates:G,error:e}),V=r({...te,...F}),{bbMin:K,bbMax:j}=Y(t,H),q=s(K,j,V.cs);V.width=q.width,V.height=q.height,V.minRegionArea=V.minRegionArea*V.minRegionArea,V.mergeRegionArea=V.mergeRegionArea*V.mergeRegionArea,V.tileSize=Math.floor(V.tileSize),V.borderSize=V.walkableRadius+3,V.width=V.tileSize+2*V.borderSize,V.height=V.tileSize+2*V.borderSize,V.detailSampleDist=V.detailSampleDist<.9?0:V.cs*V.detailSampleDist,V.detailSampleMaxError=V.ch*V.detailSampleMaxError;const J=Math.floor(V.tileSize),Q=Math.floor((q.width+J-1)/J),ee=Math.floor((q.height+J-1)/J),ie=V.tileSize*V.cs,ae=t,le=H.length,re=new l.VertsArray;re.copy(ae,ae.length);const se=H,oe=H.length/3,ne=new l.TrisArray;ne.copy(se,se.length);const he=e.fromArray(K);let de=Math.min(Math.floor(U(Z(Q*ee))),14);de>14&&(de=14);const ce=1<<de,me=1<<22-de,ge=O.create({orig:he,tileWidth:V.tileSize*V.cs,tileHeight:V.tileSize*V.cs,maxTiles:ce,maxPolys:me});if(!N.initTiled(ge))return B(\"Could not init nav mesh for tiled use\");const ue=new P;if(G.chunkyTriMesh=ue,!ue.init(re,ne,oe,256))return B(\"Failed to build chunky triangle mesh\");const be=(e,t,i,a)=>{const r=e=>(I.log(R.Module.RC_LOG_ERROR,e),{success:!1,error:e}),s={tileX:e,tileY:t};G.tileIntermediates.push(s);const E=$(V),D=[...i],H=[...a];D[0]-=E.borderSize*E.cs,D[2]-=E.borderSize*E.cs,H[0]+=E.borderSize*E.cs,H[2]+=E.borderSize*E.cs,E.set_bmin(0,D[0]),E.set_bmin(1,D[1]),E.set_bmin(2,D[2]),E.set_bmax(0,H[0]),E.set_bmax(1,H[1]),E.set_bmax(2,H[2]),I.resetTimers(),I.startTimer(R.Module.RC_TIMER_TOTAL),I.log(R.Module.RC_LOG_PROGRESS,`Building tile ${G.tileIntermediates.length} at x: ${e}, y: ${t}`),I.log(R.Module.RC_LOG_PROGRESS,` - ${V.width} x ${V.height} cells`),I.log(R.Module.RC_LOG_PROGRESS,` - ${le/1e3}fK verts, ${oe/1e3}K tris`);const O=o();if(s.heightfield=O,!n(I,O,E.width,E.height,D,H,E.cs,E.ch))return r(\"Could not create heightfield\");(new l.TriAreasArray).resize(ue.maxTrisPerChunk());const P=[D[0],D[2]],N=[H[0],H[2]],W=new l.ChunkIdsArray;W.resize(512);const B=ue.getChunksOverlappingRect(P,N,W,512);if(0===B)return{success:!0};for(let e=0;e<B;++e){const t=W.get_data(e),i=ue.nodes(t).n,a=ue.getNodeTris(t),s=new l.TriAreasArray;s.resize(i),h(I,E.walkableSlopeAngle,re,le,a,i,s);const o=d(I,re,le,a,s,i,O,E.walkableClimb);if(s.free(),!o)return r(\"Could not rasterize triangles\")}c(I,E.walkableClimb,O),m(I,E.walkableHeight,E.walkableClimb,O),g(I,E.walkableHeight,O);const K=u();if(s.compactHeightfield=K,!b(I,E.walkableHeight,E.walkableClimb,O,K))return r(\"Could not build compact heightfield\");if(L||(f(s.heightfield),s.heightfield=void 0),!M(I,E.walkableRadius,K))return r(\"Could not erode walkable area\");if(!y(I,K))return r(\"Failed to build distance field\");if(!S(I,K,E.borderSize,E.minRegionArea,E.mergeRegionArea))return r(\"Failed to build regions\");const X=w();if(s.contourSet=X,!p(I,K,E.maxSimplificationError,E.maxEdgeLen,X,R.Module.RC_CONTOUR_TESS_WALL_EDGES))return r(\"Failed to create contours\");const Y=C();if(s.polyMesh=Y,!x(I,X,E.maxVertsPerPoly,Y))return r(\"Failed to triangulate contours\");const U=A();if(s.polyMeshDetail=U,!k(I,Y,K,E.detailSampleDist,E.detailSampleMaxError,U))return r(\"Failed to build detail mesh\");L||(_(K),s.compactHeightfield=void 0,z(X),s.contourSet=void 0);for(let e=0;e<Y.npolys();e++)Y.areas(e)==R.Recast.WALKABLE_AREA&&Y.setAreas(e,0),0==Y.areas(e)&&Y.setFlags(e,1);const Z=new T;Z.setPolyMeshCreateParams(Y),Z.setPolyMeshDetailCreateParams(U),Z.setWalkableHeight(E.walkableHeight),Z.setWalkableRadius(E.walkableRadius),Z.setWalkableClimb(E.walkableClimb),Z.setCellSize(E.cs),Z.setCellHeight(E.ch),Z.setBuildBvTree(!0),F.offMeshConnections&&Z.setOffMeshConnections(F.offMeshConnections),Z.setTileX(e),Z.setTileY(t);const j=v(Z);return j.success?(I.log(R.Module.RC_LOG_PROGRESS,`>> Polymesh: ${Y.nverts()} vertices ${Y.npolys()} polygons`),{success:!0,data:j.navMeshData}):r(\"Failed to create Detour navmesh data\")};I.startTimer(R.Module.RC_TIMER_TEMP);const fe=[0,0,0],Me=[0,0,0];for(let e=0;e<ee;e++)for(let t=0;t<Q;t++){fe[0]=K[0]+t*ie,fe[1]=K[1],fe[2]=K[2]+e*ie,Me[0]=K[0]+(t+1)*ie,Me[1]=j[1],Me[2]=K[2]+(e+1)*ie;const i=be(t,e,fe,Me);if(i.success&&i.data){N.removeTile(N.getTileRefAt(t,e,0));const a=N.addTile(i.data,R.Module.DT_TILE_FREE_DATA,0);R.Detour.statusFailed(a.status)&&(I.log(R.Module.RC_LOG_WARNING,`Failed to add tile to nav mesh\\n\\ttx: ${t}, ty: ${e},status: ${X(a.status)} (${a.status})`),i.data.free())}}return I.stopTimer(R.Module.RC_TIMER_TEMP),L||W(),{success:!0,navMesh:N,intermediates:G}};export{Q as createDefaultTileCacheMeshProcess,U as dtIlog2,Z as dtNextPow2,q as generateSoloNavMesh,ee as generateTileCache,ie as generateTiledNavMesh,Y as getBoundingBox,j as soloNavMeshGeneratorConfigDefaults,J as tileCacheGeneratorConfigDefaults,te as tiledNavMeshGeneratorConfigDefaults};\n//# sourceMappingURL=index.mjs.map\n"],"names":["Y","t","i","a","x","y","z","l","e","length","r","s","o","n","Math","min","max","bbMin","toArray","bbMax","U","Number","Z","j","q","H","F","L","O","type","buildContext","P","I","heightfield","f","compactHeightfield","_","contourSet","polyMesh","E","polyMeshDetail","D","destroy","navMesh","success","intermediates","error","$","G","N","VertsArray","copy","W","B","V","TrisArray","K","X","minRegionArea","mergeRegionArea","detailSampleDist","cs","detailSampleMaxError","ch","width","height","J","TriAreasArray","resize","h","walkableSlopeAngle","d","walkableClimb","free","c","m","walkableHeight","g","Q","u","b","M","walkableRadius","S","borderSize","ee","w","p","maxSimplificationError","maxEdgeLen","R","Module","RC_CONTOUR_TESS_WALL_EDGES","te","C","maxVertsPerPoly","ie","A","k","npolys","areas","Recast","WALKABLE_AREA","setAreas","setFlags","ae","T","setPolyMeshCreateParams","setPolyMeshDetailCreateParams","setWalkableHeight","setWalkableRadius","setWalkableClimb","setCellSize","setCellHeight","setBuildBvTree","offMeshConnections","setOffMeshConnections","le","v","navMeshData","re","initSolo","tileSize","expectedLayersPerTile","maxObstacles","polyCount","set","chunkyTriMesh","tileIntermediates","heightfieldLayerSet","tileCache","floor","se","oe","ne","create","orig","maxTiles","he","RecastLinearAllocator","de","RecastFastLZCompressor","ce","tileCacheMeshProcess","init","me","fromArray","ge","ue","be","fe","tileWidth","tileHeight","maxPolys","initTiled","Me","ye","tileX","tileY","set_bmin","set_bmax","ChunkIdsArray","getChunksOverlappingRect","get_data","nodes","getNodeTris","nlayers","TileCacheData","layers","dtTileCacheLayerHeader","magic","Detour","TILECACHE_MAGIC","version","TILECACHE_VERSION","tx","ty","tlayer","bmin","bmax","minx","maxx","miny","maxy","hmin","hmax","statusFailed","push","tiles","addTile","status","log","RC_LOG_WARNING","buildNavMeshTilesAt","RC_LOG_ERROR","resetTimers","startTimer","RC_TIMER_TOTAL","RC_LOG_PROGRESS","maxTrisPerChunk","setTileX","setTileY","nverts","data","RC_TIMER_TEMP","removeTile","getTileRefAt","DT_TILE_FREE_DATA","stopTimer"],"mappings":"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"}
1
+ {"version":3,"file":"generators.mjs","sources":["../recast-navigation-generators/dist/index.mjs"],"sourcesContent":["import{vec3 as e,recastConfigDefaults as t,RecastBuildContext as i,NavMesh as l,VerticesArray as a,TrianglesArray as r,createRcConfig as o,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 p,buildRegions as y,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 r=i[e],o=t[3*r],s=t[3*r+1],n=t[3*r+2];l.x=Math.min(l.x,o),l.y=Math.min(l.y,s),l.z=Math.min(l.z,n),a.x=Math.max(a.x,o),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 r;X.copy(K);const{bbMin:Y,bbMax:U}=q(e,t),Z=o({...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.free(),B.free(),X.free(),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(!p(P,te))return G(\"Failed to build distance field\");if(!y(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 re=new E;re.setPolyMeshCreateParams(le),re.setPolyMeshDetailCreateParams(ae),re.setWalkableHeight(Z.walkableHeight),re.setWalkableRadius(Z.walkableRadius),re.setWalkableClimb(Z.walkableClimb),re.setCellSize(Z.cs),re.setCellHeight(Z.ch),re.setBuildBvTree(!0),L.offMeshConnections&&re.setOffMeshConnections(L.offMeshConnections);const oe=H(re);if(!oe.success)return G(\"Failed to create Detour navmesh data\");const{navMeshData:se}=oe;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,p,y={},R=!1)=>{const x=new i,k={type:\"tilecache\",buildContext:x,chunkyTriMesh:void 0,tileIntermediates:[]},z=new O,_=new l,A=t,T=p.length,E=new a;E.copy(A);const H=p,D=p.length/3,F=new r;F.copy(H);const{bbMin:L,bbMax:j}=q(t,p),{expectedLayersPerTile:ee,maxObstacles:te,...ae}={...ie,...y},re=()=>{if(E.free(),F.free(),!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)}},oe=e=>(re(),z.destroy(),_.destroy(),{success:!1,navMesh:void 0,tileCache:void 0,intermediates:k,error:e}),se=o(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=y.tileCacheMeshProcess??le();if(!z.init(me,ge,ue,be))return oe(\"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,pe=I.create({orig:fe,tileWidth:se.tileSize*se.cs,tileHeight:se.tileSize*se.cs,maxTiles:Se,maxPolys:we});if(!_.initTiled(pe))return oe(\"Failed to initialize tiled navmesh\");const ye=new $;if(k.chunkyTriMesh=ye,!ye.init(E,F,D,256))return oe(\"Failed to build chunky triangle mesh\");const Re=(e,t)=>{const i={tileX:e,tileY:t},l=se.tileSize*se.cs,a=N(se),r=[L[0]+e*l,L[1],L[2]+t*l],o=[L[0]+(e+1)*l,j[1],L[2]+(t+1)*l];r[0]-=a.borderSize*a.cs,r[2]-=a.borderSize*a.cs,o[0]+=a.borderSize*a.cs,o[2]+=a.borderSize*a.cs,a.set_bmin(0,r[0]),a.set_bmin(1,r[1]),a.set_bmin(2,r[2]),a.set_bmax(0,o[0]),a.set_bmax(1,o[1]),a.set_bmax(2,o[2]);const s=n();if(i.heightfield=s,!d(x,s,a.width,a.height,r,o,a.cs,a.ch))return{n:0};const p=[r[0],r[2]],y=[o[0],o[2]],z=new W;z.resize(512);const _=ye.getChunksOverlappingRect(p,y,z,512);if(0===_)return{n:0};for(let e=0;e<_;++e){const t=z.get(e),i=ye.nodes(t).n,l=ye.getNodeTris(t),r=new h;r.resize(i),c(x,a.walkableSlopeAngle,E,T,l,i,r);const o=m(x,E,T,l,r,i,s,a.walkableClimb);if(r.free(),!o)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),r=new C.dtTileCacheLayerHeader;r.magic=C.Detour.TILECACHE_MAGIC,r.version=C.Detour.TILECACHE_VERSION,r.tx=e,r.ty=t,r.tlayer=i;const o=a.bmin(),s=a.bmax();r.set_bmin(0,o.x),r.set_bmin(1,o.y),r.set_bmin(2,o.z),r.set_bmax(0,s.x),r.set_bmax(1,s.y),r.set_bmax(2,s.z),r.width=a.width(),r.height=a.height(),r.minx=a.minx(),r.maxx=a.maxx(),r.miny=a.miny(),r.maxy=a.maxy(),r.hmin=a.hmin(),r.hmax=a.hmax();const n=X(a),d=Y(a),h=U(a),c=Z(ue,r,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],r=z.addTile(i);C.Detour.statusFailed(r.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 oe(`Failed to build nav mesh tiles at ${t}, ${e}`)}return re(),{success:!0,tileCache:z,navMesh:_,intermediates:k}},re={...t},oe=(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 r;ee.copy(U);const te=()=>{if(Y.free(),ee.free(),!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=o({...re,...O}),{bbMin:ae,bbMax:oe}=q(t,L),se=s(ae,oe,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}),r={tileX:e,tileY:t};B.tileIntermediates.push(r);const o=N(le),s=[...i],D=[...l];s[0]-=o.borderSize*o.cs,s[2]-=o.borderSize*o.cs,D[0]+=o.borderSize*o.cs,D[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,D[0]),o.set_bmax(1,D[1]),o.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(r.heightfield=F,!d(G,F,o.width,o.height,s,D,o.cs,o.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),r=new h;r.resize(i),c(G,o.walkableSlopeAngle,Y,X,l,i,r);const s=m(G,Y,X,l,r,i,F,o.walkableClimb);if(r.free(),!s)return a(\"Could not rasterize triangles\")}g(G,o.walkableClimb,F),u(G,o.walkableHeight,o.walkableClimb,F),b(G,o.walkableHeight,F);const V=f();if(r.compactHeightfield=V,!M(G,o.walkableHeight,o.walkableClimb,F,V))return a(\"Could not build compact heightfield\");if(P||(S(r.heightfield),r.heightfield=void 0),!w(G,o.walkableRadius,V))return a(\"Could not erode walkable area\");if(!p(G,V))return a(\"Failed to build distance field\");if(!y(G,V,o.borderSize,o.minRegionArea,o.mergeRegionArea))return a(\"Failed to build regions\");const U=R();if(r.contourSet=U,!x(G,V,o.maxSimplificationError,o.maxEdgeLen,U,C.Module.RC_CONTOUR_TESS_WALL_EDGES))return a(\"Failed to create contours\");const j=k();if(r.polyMesh=j,!z(G,U,o.maxVertsPerPoly,j))return a(\"Failed to triangulate contours\");const q=_();if(r.polyMeshDetail=q,!A(G,j,V,o.detailSampleDist,o.detailSampleMaxError,q))return a(\"Failed to build detail mesh\");P||(v(V),r.compactHeightfield=void 0,T(U),r.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(o.walkableHeight),J.setWalkableRadius(o.walkableRadius),J.setWalkableClimb(o.walkableClimb),J.setCellSize(o.cs),J.setCellHeight(o.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],pe=[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,pe[0]=ae[0]+(t+1)*ce,pe[1]=oe[1],pe[2]=ae[2]+(e+1)*ce;const i=Se(t,e,we,pe);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.free())}}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,oe as generateTiledNavMesh,q as getBoundingBox,ee as soloNavMeshGeneratorConfigDefaults,ie as tileCacheGeneratorConfigDefaults,re as tiledNavMeshGeneratorConfigDefaults};\n//# sourceMappingURL=index.mjs.map\n"],"names":["q","t","i","l","x","y","z","a","e","length","r","o","s","n","Math","min","max","bbMin","toArray","bbMax","J","Number","Q","ee","te","L","O","P","I","type","buildContext","$","G","heightfield","S","compactHeightfield","v","contourSet","T","polyMesh","D","polyMeshDetail","F","destroy","navMesh","success","intermediates","error","N","W","B","copy","K","V","X","Y","U","Z","minRegionArea","mergeRegionArea","detailSampleDist","cs","detailSampleMaxError","ch","j","width","height","d","h","resize","c","walkableSlopeAngle","m","walkableClimb","free","g","u","walkableHeight","b","f","M","w","walkableRadius","p","borderSize","ie","R","maxSimplificationError","maxEdgeLen","C","Module","RC_CONTOUR_TESS_WALL_EDGES","le","k","maxVertsPerPoly","ae","_","A","npolys","areas","Recast","WALKABLE_AREA","setAreas","setFlags","re","E","setPolyMeshCreateParams","setPolyMeshDetailCreateParams","setWalkableHeight","setWalkableRadius","setWalkableClimb","setCellSize","setCellHeight","setBuildBvTree","offMeshConnections","setOffMeshConnections","oe","H","navMeshData","se","initSolo","tileSize","expectedLayersPerTile","maxObstacles","polyCount","set","chunkyTriMesh","tileIntermediates","heightfieldLayerSet","tileCache","ne","de","floor","he","ce","me","create","orig","maxTiles","ge","RecastLinearAllocator","ue","RecastFastLZCompressor","be","tileCacheMeshProcess","init","fe","fromArray","Me","Se","we","pe","tileWidth","tileHeight","maxPolys","initTiled","ye","Re","tileX","tileY","set_bmin","set_bmax","getChunksOverlappingRect","get","nodes","getNodeTris","nlayers","layers","dtTileCacheLayerHeader","magic","Detour","TILECACHE_MAGIC","version","TILECACHE_VERSION","tx","ty","tlayer","bmin","bmax","minx","maxx","miny","maxy","hmin","hmax","statusFailed","push","tiles","addTile","status","log","RC_LOG_WARNING","buildNavMeshTilesAt","RC_LOG_ERROR","resetTimers","startTimer","RC_TIMER_TOTAL","RC_LOG_PROGRESS","maxTrisPerChunk","setTileX","setTileY","nverts","data","RC_TIMER_TEMP","removeTile","getTileRefAt","DT_TILE_FREE_DATA","stopTimer"],"mappings":"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"}
package/package.json CHANGED
@@ -18,7 +18,7 @@
18
18
  "email": "isaac@isaacmason.com",
19
19
  "url": "https://isaacmason.com/"
20
20
  },
21
- "version": "0.25.0",
21
+ "version": "0.27.0",
22
22
  "license": "MIT",
23
23
  "homepage": "https://github.com/isaac-mason/recast-navigation-js",
24
24
  "bugs": {
@@ -72,9 +72,9 @@
72
72
  "lint": "eslint --ext .ts src"
73
73
  },
74
74
  "dependencies": {
75
- "@recast-navigation/core": "0.25.0",
76
- "@recast-navigation/generators": "0.25.0",
77
- "@recast-navigation/three": "0.25.0"
75
+ "@recast-navigation/core": "0.27.0",
76
+ "@recast-navigation/generators": "0.27.0",
77
+ "@recast-navigation/three": "0.27.0"
78
78
  },
79
79
  "devDependencies": {
80
80
  "@babel/core": "^7.24.4",
@@ -87,29 +87,31 @@
87
87
  "@rollup/plugin-node-resolve": "^15.0.1",
88
88
  "@rollup/plugin-terser": "^0.4.3",
89
89
  "@rollup/plugin-typescript": "^11.1.6",
90
- "@storybook/addon-actions": "^8.0.1",
91
- "@storybook/addon-essentials": "^8.0.1",
92
- "@storybook/addon-interactions": "^8.0.1",
93
- "@storybook/addon-links": "^8.0.1",
94
- "@storybook/addon-mdx-gfm": "^8.0.1",
95
- "@storybook/react": "^8.0.1",
96
- "@storybook/react-vite": "^8.0.1",
97
- "@types/react": "^18.2.73",
90
+ "@storybook/addon-actions": "^8.0.9",
91
+ "@storybook/addon-essentials": "^8.0.9",
92
+ "@storybook/addon-interactions": "^8.0.9",
93
+ "@storybook/addon-links": "^8.0.9",
94
+ "@storybook/addon-mdx-gfm": "^8.0.9",
95
+ "@storybook/react": "^8.0.9",
96
+ "@storybook/react-vite": "^8.0.9",
97
+ "@types/react": "^18.3.1",
98
98
  "@types/react-dom": "^18.2.8",
99
99
  "@types/three": "^0.163.0",
100
+ "@vitejs/plugin-react": "^4.2.1",
100
101
  "eslint": "^8.56.0",
101
102
  "leva": "^0.9.35",
102
- "react": "^18.2.0",
103
+ "react": "^18.3.1",
103
104
  "react-dom": "^18.2.0",
104
105
  "rollup": "^4.14.0",
105
106
  "rollup-plugin-copy": "^3.4.0",
106
107
  "rollup-plugin-filesize": "^10.0.0",
107
- "storybook": "^8.0.1",
108
+ "storybook": "^8.0.9",
108
109
  "suspend-react": "^0.1.3",
109
110
  "three": "^0.163.0",
110
111
  "three-pathfinding": "^1.2.0",
111
112
  "typescript": "^5.4.3",
112
- "vitest": "^1.5.0",
113
+ "vite": "^5.2.10",
114
+ "vitest": "^1.5.2",
113
115
  "zustand": "^4.5.2"
114
116
  },
115
117
  "packageManager": "yarn@3.2.2"