recast-navigation 0.27.0 → 0.29.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 +120 -43
- package/generators.mjs +1 -1
- package/generators.mjs.map +1 -1
- package/package.json +14 -16
- package/generators.cjs +0 -2
- package/generators.cjs.map +0 -1
- package/index.cjs +0 -2
- package/index.cjs.map +0 -1
- package/three.cjs +0 -2
- package/three.cjs.map +0 -1
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
|
-
|
|
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,16 +42,27 @@ 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
|
-
|
|
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
|
-
"imports":
|
|
51
|
-
"@recast-navigation/core": "https://unpkg.com/@recast-navigation/core@0.
|
|
52
|
-
"@recast-navigation/
|
|
53
|
-
"@recast-navigation/
|
|
54
|
-
|
|
60
|
+
"imports":
|
|
61
|
+
"@recast-navigation/core": "https://unpkg.com/@recast-navigation/core@0.28.0/dist/index.mjs",
|
|
62
|
+
"@recast-navigation/wasm": "https://unpkg.com/@recast-navigation/wasm@0.28.0/dist/recast-navigation.wasm-compat.js",
|
|
63
|
+
"@recast-navigation/generators": "https://unpkg.com/@recast-navigation/generators@0.28.0/dist/index.mjs",
|
|
64
|
+
"@recast-navigation/three": "https://unpkg.com/@recast-navigation/three@0.28.0/dist/index.mjs"
|
|
65
|
+
|
|
55
66
|
}
|
|
56
67
|
</script>
|
|
57
68
|
<script type="module">
|
|
@@ -61,15 +72,7 @@ npm install recast-navigation
|
|
|
61
72
|
</script>
|
|
62
73
|
```
|
|
63
74
|
|
|
64
|
-
|
|
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
|
-
####
|
|
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(
|
|
178
|
+
const navMeshQuery = new NavMeshQuery(navMesh);
|
|
179
|
+
```
|
|
180
|
+
|
|
181
|
+
**Compute a straight path between two points**
|
|
182
|
+
|
|
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**
|
|
164
190
|
|
|
165
|
-
|
|
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
|
+
```
|
|
197
|
+
|
|
198
|
+
**Find a random point on the NavMesh around a given position**
|
|
169
199
|
|
|
170
|
-
|
|
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
|
-
|
|
212
|
+
**Creating a Crowd**
|
|
188
213
|
|
|
189
214
|
```ts
|
|
190
215
|
import { Crowd } from 'recast-navigation';
|
|
@@ -192,10 +217,55 @@ 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
|
|
220
|
+
const crowd = new Crowd(navMesh, { maxAgents, maxAgentRadius });
|
|
196
221
|
```
|
|
197
222
|
|
|
198
|
-
|
|
223
|
+
**Updating a Crowd**
|
|
224
|
+
|
|
225
|
+
There are a few options for updating a crowd:
|
|
226
|
+
|
|
227
|
+
**Variable time stepping**
|
|
228
|
+
|
|
229
|
+
The simplest approach is to do varible time stepping. Simply call `crowd.update` with your delta time every frame.
|
|
230
|
+
|
|
231
|
+
```ts
|
|
232
|
+
crowd.update(timeSinceLastFrame);
|
|
233
|
+
```
|
|
234
|
+
|
|
235
|
+
This approach is suitable for most use cases, but the variable timestep will result in non-deterministic behaviour.
|
|
236
|
+
|
|
237
|
+
Depending on your use case, you might want to clamp `timeSinceLastFrame` to a maximum value to prevent large time steps causing issues.
|
|
238
|
+
|
|
239
|
+
**Fixed time stepping with interpolation**
|
|
240
|
+
|
|
241
|
+
Fixed time stepping with interpolation can be preferable if you need deterministic behaviour, but still want smooth agent position updates each frame.
|
|
242
|
+
|
|
243
|
+
If you provide `update` with a `dt` value and a `timeSinceLastFrame` value, the crowd update will do fixed time stepping with interpolation.
|
|
244
|
+
|
|
245
|
+
```ts
|
|
246
|
+
const dt = 1 / 60;
|
|
247
|
+
const maxSubSteps = 10;
|
|
248
|
+
|
|
249
|
+
crowd.update(dt, timeSinceLastFrame, maxSubSteps);
|
|
250
|
+
```
|
|
251
|
+
|
|
252
|
+
This will update the `interpolatedPosition` vector3 on each agent, which you can use to render a smoothly interpolated agent position between updates.
|
|
253
|
+
|
|
254
|
+
```ts
|
|
255
|
+
console.log(agent.interpolatedPosition); // { x: 1, y: 2, z: 3 }
|
|
256
|
+
```
|
|
257
|
+
|
|
258
|
+
**Manual fixed time stepping**
|
|
259
|
+
|
|
260
|
+
If you want full control over crowd updates, you can simply call `crowd.update` with a given `dt` value.
|
|
261
|
+
|
|
262
|
+
```ts
|
|
263
|
+
const dt = 1 / 60;
|
|
264
|
+
|
|
265
|
+
crowd.update(dt);
|
|
266
|
+
```
|
|
267
|
+
|
|
268
|
+
**Creating an Agent in a Crowd**
|
|
199
269
|
|
|
200
270
|
```ts
|
|
201
271
|
const position = { x: 0, y: 0, z: 0 };
|
|
@@ -217,7 +287,24 @@ const agent = crowd.addAgent(initialAgentPosition, {
|
|
|
217
287
|
pathOptimizationRange: 0.0,
|
|
218
288
|
separationWeight: 1.0,
|
|
219
289
|
});
|
|
290
|
+
```
|
|
291
|
+
|
|
292
|
+
**Setting an Agent's Target**
|
|
293
|
+
|
|
294
|
+
```ts
|
|
295
|
+
const targetPosition = { x: 2, y: 0, z: 0 };
|
|
296
|
+
agent.requestMoveTarget(targetPosition);
|
|
297
|
+
```
|
|
298
|
+
|
|
299
|
+
**Clearing an Agent's Target**
|
|
300
|
+
|
|
301
|
+
```ts
|
|
302
|
+
agent.resetMoveTarget();
|
|
303
|
+
```
|
|
304
|
+
|
|
305
|
+
**Interacting with Agents**
|
|
220
306
|
|
|
307
|
+
```ts
|
|
221
308
|
/* get information about the agent */
|
|
222
309
|
const agentPosition = agent.position();
|
|
223
310
|
const agentVelocity = agent.velocity();
|
|
@@ -257,16 +344,6 @@ agent.setParameters({
|
|
|
257
344
|
crowd.removeAgent(agent);
|
|
258
345
|
```
|
|
259
346
|
|
|
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
347
|
### Temporary Obstacles
|
|
271
348
|
|
|
272
349
|
Recast Navigation supports temporary Box and Cylinder obstacles via a `TileCache`.
|
|
@@ -405,9 +482,7 @@ const debugNavMesh = navMesh.getDebugNavMesh();
|
|
|
405
482
|
const { positions, indices } = debugNavMesh;
|
|
406
483
|
```
|
|
407
484
|
|
|
408
|
-
If you are using three.js, you can use
|
|
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.
|
|
485
|
+
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
486
|
|
|
412
487
|
#### Detour Status Codes
|
|
413
488
|
|
|
@@ -425,6 +500,7 @@ If you need to work with status codes programmatically, you can use these utilit
|
|
|
425
500
|
|
|
426
501
|
```ts
|
|
427
502
|
import {
|
|
503
|
+
Raw,
|
|
428
504
|
statusSucceed,
|
|
429
505
|
statusInProgress,
|
|
430
506
|
statusFailed,
|
|
@@ -441,8 +517,7 @@ const inProgress = statusInProgress(status);
|
|
|
441
517
|
const failed = statusFailed(status);
|
|
442
518
|
|
|
443
519
|
// get the detail of the status
|
|
444
|
-
const detail =
|
|
445
|
-
|
|
520
|
+
const detail = Raw.Detour.BUFFER_TOO_SMALL;
|
|
446
521
|
// Raw.Detour.WRONG_MAGIC;
|
|
447
522
|
// Raw.Detour.WRONG_VERSION;
|
|
448
523
|
// Raw.Detour.OUT_OF_MEMORY;
|
|
@@ -451,6 +526,8 @@ const detail = statusDetail(status);
|
|
|
451
526
|
// Raw.Detour.OUT_OF_NODES;
|
|
452
527
|
// Raw.Detour.PARTIAL_RESULT;
|
|
453
528
|
// Raw.Detour.ALREADY_OCCUPIED;
|
|
529
|
+
|
|
530
|
+
const detail = statusDetail(status, detail);
|
|
454
531
|
```
|
|
455
532
|
|
|
456
533
|
### 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
|
package/generators.mjs.map
CHANGED
|
@@ -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.
|
|
21
|
+
"version": "0.29.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
|
-
"
|
|
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
|
-
"
|
|
35
|
+
"default": "./index.mjs"
|
|
35
36
|
},
|
|
36
37
|
"./generators": {
|
|
37
38
|
"types": "./generators.d.ts",
|
|
38
39
|
"import": "./generators.mjs",
|
|
39
|
-
"
|
|
40
|
+
"default": "./generators.mjs"
|
|
40
41
|
},
|
|
41
42
|
"./three": {
|
|
42
43
|
"types": "./three.d.ts",
|
|
43
44
|
"import": "./three.mjs",
|
|
44
|
-
"
|
|
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.
|
|
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.
|
|
76
|
-
"@recast-navigation/generators": "0.
|
|
77
|
-
"@recast-navigation/three": "0.
|
|
70
|
+
"@recast-navigation/core": "0.29.0",
|
|
71
|
+
"@recast-navigation/generators": "0.29.0",
|
|
72
|
+
"@recast-navigation/three": "0.29.0"
|
|
78
73
|
},
|
|
79
74
|
"devDependencies": {
|
|
80
|
-
"@babel/core": "^7.24.
|
|
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
|
package/generators.cjs.map
DELETED
|
@@ -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
package/index.cjs.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.cjs","sources":[],"sourcesContent":[],"names":[],"mappings":""}
|
package/three.cjs
DELETED
package/three.cjs.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"three.cjs","sources":[],"sourcesContent":[],"names":[],"mappings":""}
|