recast-navigation 0.27.0 → 0.28.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/README.md CHANGED
@@ -34,7 +34,7 @@ Demonstrations of how to use the library in different environments (such as Node
34
34
 
35
35
  ## Installation
36
36
 
37
- This package ships as both ECMAScript modules and CJS, and is compatible with Node.js and browser environments.
37
+ `recast-navigation-js` ships as ECMAScript modules, and is compatible with Node.js and browser environments.
38
38
 
39
39
  **NPM**
40
40
 
@@ -42,15 +42,26 @@ This package ships as both ECMAScript modules and CJS, and is compatible with No
42
42
  npm install recast-navigation
43
43
  ```
44
44
 
45
- **Unpkg**
45
+ If you are using Vite, you may need to opt `recast-navigation` out of pre-bundling:
46
+
47
+ ```js
48
+ export default defineConfig(() => ({
49
+ optimizeDeps: { exclude: ['recast-navigation'] }
50
+ )}
51
+ ```
52
+
53
+ **Usage without bundlers**
54
+
55
+ You can use import maps to use the library without a bundler:
46
56
 
47
57
  ```html
48
58
  <script type="importmap">
49
59
  {
50
60
  "imports": {
51
- "@recast-navigation/core": "https://unpkg.com/@recast-navigation/core@0.24.1/dist/index.mjs",
52
- "@recast-navigation/generators": "https://unpkg.com/@recast-navigation/generators@0.24.1/dist/index.mjs",
53
- "@recast-navigation/three": "https://unpkg.com/@recast-navigation/three@0.24.1/dist/index.mjs"
61
+ "@recast-navigation/core": "https://unpkg.com/@recast-navigation/core@0.27.0/dist/index.mjs",
62
+ "@recast-navigation/wasm": "https://unpkg.com/@recast-navigation/wasm@0.27.0/dist/recast-navigation.wasm-compat.js",
63
+ "@recast-navigation/generators": "https://unpkg.com/@recast-navigation/generators@0.27.0/dist/index.mjs",
64
+ "@recast-navigation/three": "https://unpkg.com/@recast-navigation/three@0.27.0/dist/index.mjs"
54
65
  }
55
66
  }
56
67
  </script>
@@ -61,15 +72,7 @@ npm install recast-navigation
61
72
  </script>
62
73
  ```
63
74
 
64
- **Usage with bundlers**
65
-
66
- If you are using Vite, you may need to opt `recast-navigation` out of pre-bundling:
67
-
68
- ```js
69
- export default defineConfig(() => ({
70
- optimizeDeps: { exclude: ['recast-navigation'] }
71
- )}
72
- ```
75
+ A full example can be found here: https://github.com/isaac-mason/recast-navigation-js/tree/main/examples/no-bundler/index.html
73
76
 
74
77
  ## Documentation
75
78
 
@@ -147,7 +150,17 @@ const { success, navMesh } = generateSoloNavMesh(
147
150
 
148
151
  See the docs for more information on generator options: https://docs.recast-navigation-js.isaacmason.com/modules/generators.html
149
152
 
150
- #### Advanced Usage
153
+ #### Builing a NavMesh in a Web Worker
154
+
155
+ It's possible to build a NavMesh in a Web Worker. This can be useful for offloading heavy computation from the main thread.
156
+
157
+ The library doesn't include a web worker, but it's straightforward to create your own. An example of solo nav mesh generation in a web worker can be found here: https://github.com/isaac-mason/recast-navigation-js/tree/next/examples/vite-worker-example
158
+
159
+ The example uses `importNavMesh` and `exportNavMesh` to serialize and deserialize a NavMesh for transfer between the main thread and the web worker.
160
+
161
+ For more advanced scenarios such as dynamic navmesh regeneration, you can generate nav mesh tiles in a web worker, and transfer the Uint8Array result of the `createNavMeshData` function to the main thread. This allows you to build individual tiles within a web worker, while the main thread continues to manage the nav mesh.
162
+
163
+ #### Customizing the NavMesh Generation Process
151
164
 
152
165
  This library provides low-level APIs that aim to match the recast and detour c++ api, allowing you to create custom navigation mesh generators based on your specific needs. You can use the NavMesh generators provided by `@recast-navigation/generators` as a basis: https://github.com/isaac-mason/recast-navigation-js/tree/main/packages/recast-navigation-generators/src/generators
153
166
 
@@ -157,17 +170,34 @@ Please note that not all recast and detour functionality is exposed yet. If you
157
170
 
158
171
  ### Querying a NavMesh
159
172
 
173
+ **Creating a NavMeshQuery class**
174
+
160
175
  ```ts
161
176
  import { NavMeshQuery } from 'recast-navigation';
162
177
 
163
- const navMeshQuery = new NavMeshQuery({ navMesh });
178
+ const navMeshQuery = new NavMeshQuery(navMesh);
179
+ ```
180
+
181
+ **Compute a straight path between two points**
164
182
 
165
- /* find the closest point on the NavMesh to the given position */
183
+ ```ts
184
+ const start = { x: 0, y: 0, z: 0 };
185
+ const end = { x: 2, y: 0, z: 0 };
186
+ const { success, error, path } = navMeshQuery.computePath(start, end);
187
+ ```
188
+
189
+ **Find the closest point on the NavMesh to a given position**
190
+
191
+ ```ts
166
192
  const position = { x: 0, y: 0, z: 0 };
193
+
167
194
  const { success, status, point, polyRef, isPointOverPoly } =
168
195
  navMeshQuery.findClosestPoint(position);
196
+ ```
169
197
 
170
- /* get a random point around the given position */
198
+ **Find a random point on the NavMesh around a given position**
199
+
200
+ ```ts
171
201
  const radius = 0.5;
172
202
  const {
173
203
  success,
@@ -175,16 +205,11 @@ const {
175
205
  randomPolyRef,
176
206
  randomPoint: initialAgentPosition,
177
207
  } = navMeshQuery.findRandomPointAroundCircle(position, radius);
178
-
179
- /* compute a straight path between two points */
180
- const start = { x: 0, y: 0, z: 0 };
181
- const end = { x: 2, y: 0, z: 0 };
182
- const { success, error, path } = navMeshQuery.computePath(start, end);
183
208
  ```
184
209
 
185
210
  ### Crowds and Agents
186
211
 
187
- First, create a `Crowd`:
212
+ **Creating a Crowd**
188
213
 
189
214
  ```ts
190
215
  import { Crowd } from 'recast-navigation';
@@ -192,10 +217,10 @@ import { Crowd } from 'recast-navigation';
192
217
  const maxAgents = 10;
193
218
  const maxAgentRadius = 0.6;
194
219
 
195
- const crowd = new Crowd({ maxAgents, maxAgentRadius, navMesh });
220
+ const crowd = new Crowd(navMesh, { maxAgents, maxAgentRadius });
196
221
  ```
197
222
 
198
- Next, create and interface with agents in the crowd.
223
+ **Creating an Agent in a Crowd**
199
224
 
200
225
  ```ts
201
226
  const position = { x: 0, y: 0, z: 0 };
@@ -217,7 +242,36 @@ const agent = crowd.addAgent(initialAgentPosition, {
217
242
  pathOptimizationRange: 0.0,
218
243
  separationWeight: 1.0,
219
244
  });
245
+ ```
246
+
247
+ **Setting an Agent's Target**
248
+
249
+ ```ts
250
+ const targetPosition = { x: 2, y: 0, z: 0 };
251
+ agent.requestMoveTarget(targetPosition);
252
+ ```
253
+
254
+ **Clearing an Agent's Target**
255
+
256
+ ```ts
257
+ agent.resetMoveTarget();
258
+ ```
259
+
260
+ **Updating the Crowd**
261
+
262
+ To update the crowd, first set a timeStep, then call `update` each frame with the delta time.
263
+
264
+ ```ts
265
+ const dt = 1 / 60;
266
+ crowd.timeStep = dt;
220
267
 
268
+ // you should call this every frame
269
+ crowd.update(dt);
270
+ ```
271
+
272
+ **Interacting with Agents**
273
+
274
+ ```ts
221
275
  /* get information about the agent */
222
276
  const agentPosition = agent.position();
223
277
  const agentVelocity = agent.velocity();
@@ -257,16 +311,6 @@ agent.setParameters({
257
311
  crowd.removeAgent(agent);
258
312
  ```
259
313
 
260
- To update the crowd, first set a timeStep, then call `update` each frame with the delta time.
261
-
262
- ```ts
263
- const dt = 1 / 60;
264
- crowd.timeStep = dt;
265
-
266
- // you should call this every frame
267
- crowd.update(dt);
268
- ```
269
-
270
314
  ### Temporary Obstacles
271
315
 
272
316
  Recast Navigation supports temporary Box and Cylinder obstacles via a `TileCache`.
@@ -405,9 +449,7 @@ const debugNavMesh = navMesh.getDebugNavMesh();
405
449
  const { positions, indices } = debugNavMesh;
406
450
  ```
407
451
 
408
- If you are using three.js, you can use `NavMeshHelper` and `CrowdHelper` to visualize NavMeshes, Crowds, and NavMesh generation intermediates.
409
-
410
- See the [`@recast-navigation/three` package README](https://github.com/isaac-mason/recast-navigation-js/tree/main/packages/recast-navigation-three/README.md) for usage information.
452
+ If you are using three.js, you can use built-in helpers from the [`@recast-navigation/three` package](https://github.com/isaac-mason/recast-navigation-js/tree/main/packages/recast-navigation-three/README.md).
411
453
 
412
454
  #### Detour Status Codes
413
455
 
@@ -425,6 +467,7 @@ If you need to work with status codes programmatically, you can use these utilit
425
467
 
426
468
  ```ts
427
469
  import {
470
+ Raw,
428
471
  statusSucceed,
429
472
  statusInProgress,
430
473
  statusFailed,
@@ -441,8 +484,7 @@ const inProgress = statusInProgress(status);
441
484
  const failed = statusFailed(status);
442
485
 
443
486
  // get the detail of the status
444
- const detail = statusDetail(status);
445
-
487
+ const detail = Raw.Detour.BUFFER_TOO_SMALL;
446
488
  // Raw.Detour.WRONG_MAGIC;
447
489
  // Raw.Detour.WRONG_VERSION;
448
490
  // Raw.Detour.OUT_OF_MEMORY;
@@ -451,6 +493,8 @@ const detail = statusDetail(status);
451
493
  // Raw.Detour.OUT_OF_NODES;
452
494
  // Raw.Detour.PARTIAL_RESULT;
453
495
  // Raw.Detour.ALREADY_OCCUPIED;
496
+
497
+ const detail = statusDetail(status, detail);
454
498
  ```
455
499
 
456
500
  ### Importing and Exporting
package/generators.mjs CHANGED
@@ -1,2 +1,2 @@
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};
1
+ export*from"@recast-navigation/generators";
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 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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"}
1
+ {"version":3,"file":"generators.mjs","sources":[],"sourcesContent":[],"names":[],"mappings":""}
package/package.json CHANGED
@@ -18,53 +18,48 @@
18
18
  "email": "isaac@isaacmason.com",
19
19
  "url": "https://isaacmason.com/"
20
20
  },
21
- "version": "0.27.0",
21
+ "version": "0.28.0",
22
22
  "license": "MIT",
23
23
  "homepage": "https://github.com/isaac-mason/recast-navigation-js",
24
24
  "bugs": {
25
25
  "url": "https://github.com/isaac-mason/recast-navigation-js/issues"
26
26
  },
27
- "main": "./index.cjs",
27
+ "type": "module",
28
+ "main": "./index.mjs",
28
29
  "module": "./index.mjs",
29
30
  "types": "./index.d.ts",
30
31
  "exports": {
31
32
  ".": {
32
33
  "types": "./index.d.ts",
33
34
  "import": "./index.mjs",
34
- "require": "./index.cjs"
35
+ "default": "./index.mjs"
35
36
  },
36
37
  "./generators": {
37
38
  "types": "./generators.d.ts",
38
39
  "import": "./generators.mjs",
39
- "require": "./generators.cjs"
40
+ "default": "./generators.mjs"
40
41
  },
41
42
  "./three": {
42
43
  "types": "./three.d.ts",
43
44
  "import": "./three.mjs",
44
- "require": "./index.cjs"
45
+ "default": "./three.mjs"
45
46
  }
46
47
  },
47
48
  "files": [
48
49
  "index.mjs",
49
50
  "index.mjs.map",
50
- "index.cjs",
51
- "index.cjs.map",
52
51
  "index.d.ts",
53
52
  "generators.mjs",
54
53
  "generators.mjs.map",
55
- "generators.cjs",
56
- "generators.cjs.map",
57
54
  "generators.d.ts",
58
55
  "three.mjs",
59
56
  "three.mjs.map",
60
- "three.cjs",
61
- "three.cjs.map",
62
57
  "three.d.ts",
63
58
  "LICENSE",
64
59
  "README.md"
65
60
  ],
66
61
  "scripts": {
67
- "clean": "(rm index.mjs index.cjs index.d.ts generators.mjs generators.cjs generators.d.ts three.mjs three.cjs three.d.ts || true)",
62
+ "clean": "(rm index.mjs index.d.ts generators.mjs generators.d.ts three.mjs three.d.ts || true)",
68
63
  "build": "yarn clean && rollup --config rollup.config.js --bundleConfigAsCjs",
69
64
  "storybook": "storybook dev -p 6006",
70
65
  "build-storybook": "storybook build",
@@ -72,17 +67,20 @@
72
67
  "lint": "eslint --ext .ts src"
73
68
  },
74
69
  "dependencies": {
75
- "@recast-navigation/core": "0.27.0",
76
- "@recast-navigation/generators": "0.27.0",
77
- "@recast-navigation/three": "0.27.0"
70
+ "@recast-navigation/core": "0.28.0",
71
+ "@recast-navigation/generators": "0.28.0",
72
+ "@recast-navigation/three": "0.28.0"
78
73
  },
79
74
  "devDependencies": {
80
- "@babel/core": "^7.24.4",
75
+ "@babel/core": "^7.24.5",
76
+ "@babel/preset-env": "^7.24.5",
77
+ "@babel/preset-typescript": "^7.24.1",
81
78
  "@isaac-mason/eslint-config-typescript": "^0.0.5",
82
79
  "@mdx-js/react": "^2.3.0",
83
80
  "@pmndrs/assets": "^1.6.0",
84
81
  "@react-three/drei": "^9.105.4",
85
82
  "@react-three/fiber": "^8.15.12",
83
+ "@rollup/plugin-babel": "^6.0.4",
86
84
  "@rollup/plugin-commonjs": "^25.0.7",
87
85
  "@rollup/plugin-node-resolve": "^15.0.1",
88
86
  "@rollup/plugin-terser": "^0.4.3",
package/generators.cjs DELETED
@@ -1,2 +0,0 @@
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
- //# sourceMappingURL=generators.cjs.map
@@ -1 +0,0 @@
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":"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"}
package/index.cjs DELETED
@@ -1,2 +0,0 @@
1
- "use strict";var e=require("@recast-navigation/core");Object.keys(e).forEach((function(t){"default"===t||Object.prototype.hasOwnProperty.call(exports,t)||Object.defineProperty(exports,t,{enumerable:!0,get:function(){return e[t]}})}));
2
- //# sourceMappingURL=index.cjs.map
package/index.cjs.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.cjs","sources":[],"sourcesContent":[],"names":[],"mappings":""}
package/three.cjs DELETED
@@ -1,2 +0,0 @@
1
- "use strict";var e=require("@recast-navigation/three");Object.keys(e).forEach((function(t){"default"===t||Object.prototype.hasOwnProperty.call(exports,t)||Object.defineProperty(exports,t,{enumerable:!0,get:function(){return e[t]}})}));
2
- //# sourceMappingURL=three.cjs.map
package/three.cjs.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"file":"three.cjs","sources":[],"sourcesContent":[],"names":[],"mappings":""}