@recast-navigation/core 0.0.7 → 0.1.1

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.
@@ -1,5 +1,5 @@
1
1
  import type R from '@recast-navigation/wasm';
2
- export declare type NavMeshCreateParams = {
2
+ export declare type CreateNavMeshDataParams = {
3
3
  verts: number[];
4
4
  vertCount: number;
5
5
  polys: number[];
@@ -32,13 +32,9 @@ export declare type NavMeshCreateParams = {
32
32
  ch: number;
33
33
  buildBvTree: boolean;
34
34
  };
35
- export declare type CreateNavMeshDataResult = {
36
- success: boolean;
37
- navMeshData: readonly number[];
38
- navMeshDataSize: number;
39
- };
35
+ export declare type CreateNavMeshDataResult = R.CreateNavMeshDataResult;
40
36
  export declare class NavMeshBuilder {
41
37
  raw: R.NavMeshBuilder;
42
38
  constructor();
43
- createNavMeshData(params: NavMeshCreateParams): CreateNavMeshDataResult;
39
+ createNavMeshData(params: CreateNavMeshDataParams): CreateNavMeshDataResult;
44
40
  }
@@ -97,6 +97,14 @@ export declare type NavMeshConfig = {
97
97
  * @default 1
98
98
  */
99
99
  detailSampleMaxError: number;
100
+ /**
101
+ * How many layers (or "floors") each navmesh tile is expected to have.
102
+ */
103
+ expectedLayersPerTile: number;
104
+ /**
105
+ * The max number of layers a navmesh can have.
106
+ */
107
+ maxLayers: number;
100
108
  };
101
109
  export declare type NavMeshGeneratorResult = {
102
110
  success: boolean;
@@ -1,6 +1,6 @@
1
1
  import type R from '@recast-navigation/wasm';
2
2
  import { NavMesh } from './nav-mesh';
3
- import { NavPath, Vector3 } from './utils';
3
+ import { Vector3 } from './utils';
4
4
  export declare type NavMeshQueryParams = {
5
5
  navMesh: NavMesh;
6
6
  /**
@@ -28,7 +28,7 @@ export declare class NavMeshQuery {
28
28
  *g
29
29
  * @returns an array of Vector3 positions that make up the path, or an empty array if no path was found.
30
30
  */
31
- computePath(start: Vector3, end: Vector3): NavPath;
31
+ computePath(start: Vector3, end: Vector3): Vector3[];
32
32
  /**
33
33
  * Gets the Bounding box extent specified by setDefaultQueryExtent
34
34
  */
@@ -1,16 +1,164 @@
1
1
  import type R from '@recast-navigation/wasm';
2
- import { DebugNavMesh } from './debug-nav-mesh';
2
+ import { Vector3 } from './utils';
3
+ export declare class dtPoly {
4
+ raw: R.dtPoly;
5
+ constructor(raw: R.dtPoly);
6
+ firstLink(): number;
7
+ verts(index: number): number;
8
+ neis(index: number): number;
9
+ flags(): number;
10
+ vertCount(): number;
11
+ areaAndType(): number;
12
+ getType(): number;
13
+ }
14
+ export declare class dtPolyDetail {
15
+ raw: R.dtPolyDetail;
16
+ constructor(raw: R.dtPolyDetail);
17
+ vertBase(): number;
18
+ triBase(): number;
19
+ vertCount(): number;
20
+ triCount(): number;
21
+ }
22
+ export declare class dtLink {
23
+ raw: R.dtLink;
24
+ constructor(raw: R.dtLink);
25
+ ref(): number;
26
+ next(): number;
27
+ edge(): number;
28
+ side(): number;
29
+ bmin(): number;
30
+ bmax(): number;
31
+ }
32
+ export declare class dtBVNode {
33
+ raw: R.dtBVNode;
34
+ constructor(raw: R.dtBVNode);
35
+ bmin(): Vector3;
36
+ bmax(): Vector3;
37
+ i(): number;
38
+ }
39
+ export declare class dtOffMeshConnection {
40
+ raw: R.dtOffMeshConnection;
41
+ constructor(raw: R.dtOffMeshConnection);
42
+ pos(index: number): number;
43
+ rad(): number;
44
+ poly(): number;
45
+ flags(): number;
46
+ side(): number;
47
+ userId(): number;
48
+ }
49
+ export declare class dtMeshHeader {
50
+ raw: R.dtMeshHeader;
51
+ constructor(raw: R.dtMeshHeader);
52
+ magic(): number;
53
+ version(): number;
54
+ x(): number;
55
+ y(): number;
56
+ layer(): number;
57
+ userId(): number;
58
+ polyCount(): number;
59
+ vertCount(): number;
60
+ maxLinkCount(): number;
61
+ detailMeshCount(): number;
62
+ detailVertCount(): number;
63
+ detailTriCount(): number;
64
+ bvNodeCount(): number;
65
+ offMeshConCount(): number;
66
+ offMeshBase(): number;
67
+ walkableHeight(): number;
68
+ walkableRadius(): number;
69
+ walkableClimb(): number;
70
+ bmin(index: number): number;
71
+ bmax(index: number): number;
72
+ bvQuantFactor(): number;
73
+ }
74
+ export declare class dtMeshTile {
75
+ raw: R.dtMeshTile;
76
+ constructor(raw: R.dtMeshTile);
77
+ salt(): number;
78
+ linksFreeList(): number;
79
+ header(): dtMeshHeader | null;
80
+ polys(index: number): dtPoly;
81
+ verts(index: number): number;
82
+ links(index: number): dtLink;
83
+ detailMeshes(index: number): dtPolyDetail;
84
+ detailVerts(index: number): number;
85
+ detailTris(index: number): number;
86
+ bvTree(index: number): dtBVNode;
87
+ offMeshCons(index: number): dtOffMeshConnection;
88
+ data(index: number): number;
89
+ dataSize(): number;
90
+ flags(): number;
91
+ next(): dtMeshTile;
92
+ }
93
+ export declare class NavMeshGetTilesAtResult {
94
+ raw: R.NavMeshGetTilesAtResult;
95
+ constructor(raw: R.NavMeshGetTilesAtResult);
96
+ tiles(index: number): dtMeshTile;
97
+ tileCount(): number;
98
+ }
99
+ export declare class NavMeshAddTileResult {
100
+ raw: R.NavMeshAddTileResult;
101
+ constructor(raw: R.NavMeshAddTileResult);
102
+ tileRef(): number;
103
+ status(): number;
104
+ }
105
+ export declare class NavMeshRemoveTileResult {
106
+ raw: R.NavMeshRemoveTileResult;
107
+ constructor(raw: R.NavMeshRemoveTileResult);
108
+ data(): number[];
109
+ dataSize(): number;
110
+ }
111
+ export declare class NavMeshCalcTileLocResult {
112
+ raw: R.NavMeshCalcTileLocResult;
113
+ constructor(raw: R.NavMeshCalcTileLocResult);
114
+ tileX(): number;
115
+ tileY(): number;
116
+ }
117
+ export declare class NavMeshGetTileAndPolyByRefResult {
118
+ raw: R.NavMeshGetTileAndPolyByRefResult;
119
+ constructor(raw: R.NavMeshGetTileAndPolyByRefResult);
120
+ tile(): dtMeshTile;
121
+ poly(): dtPoly;
122
+ status(): number;
123
+ }
124
+ export declare class NavMeshGetOffMeshConnectionPolyEndPointsResult {
125
+ raw: R.NavMeshGetOffMeshConnectionPolyEndPointsResult;
126
+ constructor(raw: R.NavMeshGetOffMeshConnectionPolyEndPointsResult);
127
+ status(): number;
128
+ startPos(): Vector3;
129
+ endPos(): Vector3;
130
+ }
131
+ export declare class NavMeshGetPolyFlagsResult {
132
+ raw: R.NavMeshGetPolyFlagsResult;
133
+ constructor(raw: R.NavMeshGetPolyFlagsResult);
134
+ flags(): number;
135
+ status(): number;
136
+ }
137
+ export declare class NavMeshGetPolyAreaResult {
138
+ raw: R.NavMeshGetPolyAreaResult;
139
+ constructor(raw: R.NavMeshGetPolyAreaResult);
140
+ area(): number;
141
+ status(): number;
142
+ }
143
+ export declare class NavMeshStoreTileStateResult {
144
+ raw: R.NavMeshStoreTileStateResult;
145
+ constructor(raw: R.NavMeshStoreTileStateResult);
146
+ data(): number[];
147
+ dataSize(): number;
148
+ }
149
+ export declare class DebugNavMesh {
150
+ raw: R.DebugNavMesh;
151
+ positions: number[];
152
+ indices: number[];
153
+ constructor(debugNavMesh: R.DebugNavMesh);
154
+ }
3
155
  export declare type NavMeshParams = {
4
- orig: number[];
156
+ orig: Vector3;
5
157
  tileWidth: number;
6
158
  tileHeight: number;
7
159
  maxTiles: number;
8
160
  maxPolys: number;
9
161
  };
10
- export declare type NavMeshAddTileResult = {
11
- status: number;
12
- tileRef: number;
13
- };
14
162
  export declare class NavMesh {
15
163
  raw: R.NavMesh;
16
164
  constructor(raw?: R.NavMesh);
@@ -27,7 +175,7 @@ export declare class NavMesh {
27
175
  * @param params parameters for the NavMesh
28
176
  * @returns the status of the operation
29
177
  */
30
- initTiled(params: NavMeshParams): boolean;
178
+ initTiled({ orig, tileWidth, tileHeight, maxTiles, maxPolys, }: NavMeshParams): boolean;
31
179
  /**
32
180
  * Adds a tile to the NavMesh.
33
181
  * @param data the nav mesh data
@@ -38,11 +186,150 @@ export declare class NavMesh {
38
186
  */
39
187
  addTile(data: number[], dataSize: number, flags: number, lastRef: number): NavMeshAddTileResult;
40
188
  /**
41
- * Destroys the NavMesh.
189
+ * Removes a tile from the NavMesh
190
+ * @param ref the tile ref
191
+ * @returns the nav mesh data, so it can be added back later
42
192
  */
43
- destroy(): void;
193
+ removeTile(ref: number): NavMeshRemoveTileResult;
194
+ /**
195
+ * Calculates the tile grid location for the specified world position.
196
+ * @param pos The world position for the query. [(x, y, z)]
197
+ * @returns
198
+ */
199
+ calcTileLoc(pos: Vector3): NavMeshCalcTileLocResult;
200
+ /**
201
+ * Gets the tile at the specified grid location.
202
+ * @param x The tile's x-location. (x, y, layer)
203
+ * @param y The tile's y-location. (x, y, layer)
204
+ * @param layer The tile's layer. (x, y, layer)
205
+ * @returns The tile, or null if the tile does not exist.
206
+ */
207
+ getTileAt(x: number, y: number, layer: number): dtMeshTile | null;
208
+ /**
209
+ * Gets all tiles at the specified grid location. (All layers.)
210
+ * @param x The tile's x-location. (x, y)
211
+ * @param y The tile's y-location. (x, y)
212
+ * @param maxTiles The maximum tiles the tiles parameter can hold.
213
+ */
214
+ getTilesAt(x: number, y: number, maxTiles: number): NavMeshGetTilesAtResult;
215
+ /**
216
+ * Gets the tile reference for the tile at specified grid location.
217
+ * @param x The tile's x-location. (x, y, layer)
218
+ * @param y The tile's y-location. (x, y, layer)
219
+ * @param layer The tile's layer. (x, y, layer)
220
+ * @returns The tile reference of the tile, or 0 if there is none.
221
+ */
222
+ getTileRefAt(x: number, y: number, layer: number): number;
223
+ /**
224
+ * Gets the tile reference for the specified tile.
225
+ * @param tile
226
+ * @returns
227
+ */
228
+ getTileRef(tile: dtMeshTile): number;
229
+ /**
230
+ * Gets the tile for the specified tile reference.
231
+ * @param ref The tile reference of the tile to retrieve.
232
+ * @returns The tile for the specified reference, or null if the reference is invalid.
233
+ */
234
+ getTileByRef(ref: number): dtMeshTile | null;
235
+ /**
236
+ * Returns the maximum number of tiles supported by the navigation mesh.
237
+ */
238
+ getMaxTiles(): number;
239
+ /**
240
+ * Gets the tile at the specified index.
241
+ * @param i the tile index. [Limit: 0 >= index < #getMaxTiles()]
242
+ * @returns
243
+ */
244
+ getTile(i: number): dtMeshTile;
245
+ /**
246
+ * Gets the tile and polygon for the specified polygon reference.
247
+ * @param ref The reference for the a polygon.
248
+ * @returns
249
+ */
250
+ getTileAndPolyByRef(ref: number): NavMeshGetTileAndPolyByRefResult;
251
+ /**
252
+ * Gets the tile and polygon for the specified polygon reference.
253
+ * @param ref A known valid reference for a polygon.
254
+ * @returns
255
+ */
256
+ getTileAndPolyByRefUnsafe(ref: number): NavMeshGetTileAndPolyByRefResult;
257
+ /**
258
+ * Checks the validity of a polygon reference.
259
+ * @param ref
260
+ * @returns
261
+ */
262
+ isValidPolyRef(ref: number): boolean;
263
+ /**
264
+ * Gets the polygon reference for the tile's base polygon.
265
+ * @param tile
266
+ * @returns
267
+ */
268
+ getPolyRefBase(tile: dtMeshTile): number;
269
+ /**
270
+ * Gets the endpoints for an off-mesh connection, ordered by "direction of travel".
271
+ * @param prevRef The reference of the polygon before the connection.
272
+ * @param polyRef The reference of the off-mesh connection polygon.
273
+ * @returns
274
+ */
275
+ getOffMeshConnectionPolyEndPoints(prevRef: number, polyRef: number): NavMeshGetOffMeshConnectionPolyEndPointsResult;
276
+ /**
277
+ * Gets the specified off-mesh connection.
278
+ * @param ref The polygon reference of the off-mesh connection.
279
+ * @returns
280
+ */
281
+ getOffMeshConnectionByRef(ref: number): dtOffMeshConnection;
282
+ /**
283
+ * Sets the user defined flags for the specified polygon.
284
+ * @param ref The polygon reference.
285
+ * @param flags The new flags for the polygon.
286
+ */
287
+ setPolyFlags(ref: number, flags: number): number;
288
+ /**
289
+ * Gets the user defined flags for the specified polygon.
290
+ * @param ref The polygon reference.
291
+ * @returns
292
+ */
293
+ getPolyFlags(ref: number): NavMeshGetPolyFlagsResult;
294
+ /**
295
+ * Sets the user defined area for the specified polygon.
296
+ * @param ref The polygon reference.
297
+ * @param flags The new flags for the polygon.
298
+ */
299
+ setPolyArea(ref: number, area: number): number;
300
+ /**
301
+ * Gets the user defined area for the specified polygon.
302
+ * @param ref The polygon reference.
303
+ * @returns
304
+ */
305
+ getPolyArea(ref: number): NavMeshGetPolyAreaResult;
306
+ /**
307
+ * Gets the size of the buffer required by #storeTileState to store the specified tile's state.
308
+ * @param tile
309
+ * @returns The size of the buffer required to store the state.
310
+ */
311
+ getTileStateSize(tile: dtMeshTile): number;
312
+ /**
313
+ * Stores the non-structural state of the tile in the specified buffer. (Flags, area ids, etc.)
314
+ * @param tile The tile.
315
+ * @param maxDataSize The size of the data buffer. [Limit: >= #getTileStateSize]
316
+ * @returns
317
+ */
318
+ storeTileState(tile: dtMeshTile, maxDataSize: number): NavMeshStoreTileStateResult;
319
+ /**
320
+ * Restores the state of the tile.
321
+ * @param tile The tile.
322
+ * @param data The new state. (Obtained from @see storeTileState)
323
+ * @param maxDataSize The size of the state within the data buffer.
324
+ * @returns
325
+ */
326
+ restoreTileState(tile: dtMeshTile, data: number[], maxDataSize: number): number;
44
327
  /**
45
328
  * Returns a DebugNavMesh that can be used to visualize the NavMesh.
46
329
  */
47
330
  getDebugNavMesh(): DebugNavMesh;
331
+ /**
332
+ * Destroys the NavMesh.
333
+ */
334
+ destroy(): void;
48
335
  }
package/dist/utils.d.ts CHANGED
@@ -11,12 +11,15 @@ export declare const vec3: {
11
11
  y: number;
12
12
  z: number;
13
13
  };
14
- };
15
- export declare type NavPath = Vector3[];
16
- export declare const navPath: {
17
- fromRaw: (v: R.NavPath) => {
14
+ fromArray: ([x, y, z]: number[]) => {
18
15
  x: number;
19
16
  y: number;
20
17
  z: number;
21
- }[];
18
+ };
19
+ toArray: ({ x, y, z }: Vector3) => number[];
20
+ };
21
+ export declare const array: <T>(getter: (index: number) => T, count: number) => T[];
22
+ export declare const emscripten: {
23
+ isNull: (obj: unknown) => boolean;
24
+ getPointer: (obj: unknown) => number;
22
25
  };
package/dist/wasm.d.ts CHANGED
@@ -1,5 +1,6 @@
1
1
  import Recast from '@recast-navigation/wasm';
2
2
  export declare const Wasm: {
3
3
  Recast: typeof Recast;
4
+ DtStatus: Recast.DtStatus;
4
5
  };
5
6
  export declare const init: () => Promise<void>;
package/package.json CHANGED
@@ -6,7 +6,7 @@
6
6
  "email": "isaac@isaacmason.com",
7
7
  "url": "https://isaacmason.com/"
8
8
  },
9
- "version": "0.0.7",
9
+ "version": "0.1.1",
10
10
  "license": "MIT",
11
11
  "homepage": "https://github.com/isaac-mason/recast-navigation-js",
12
12
  "bugs": {
@@ -26,7 +26,7 @@
26
26
  },
27
27
  "devDependencies": {
28
28
  "@babel/core": "^7.18.6",
29
- "@recast-navigation/wasm": "0.0.7",
29
+ "@recast-navigation/wasm": "0.1.1",
30
30
  "@rollup/plugin-commonjs": "^24.0.1",
31
31
  "@rollup/plugin-node-resolve": "^15.0.1",
32
32
  "@rollup/plugin-terser": "^0.4.0",
@@ -1,7 +0,0 @@
1
- import R from '@recast-navigation/wasm';
2
- export declare class DebugNavMesh {
3
- raw: R.DebugNavMesh;
4
- positions: number[];
5
- indices: number[];
6
- constructor(debugNavMesh: R.DebugNavMesh);
7
- }