@recast-navigation/core 0.1.2 → 0.2.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.
@@ -1,6 +1,7 @@
1
1
  import type R from '@recast-navigation/wasm';
2
2
  import { NavMesh } from './nav-mesh';
3
3
  import { TileCache } from './tile-cache';
4
+ import { rcChunkyTriMesh, rcCompactHeightfield, rcContourSet, rcHeightfield, rcHeightfieldLayerSet } from './wrappers';
4
5
  export type NavMeshConfig = {
5
6
  /**
6
7
  * The size of the non-navigable border around the heightfield.
@@ -106,20 +107,55 @@ export type NavMeshConfig = {
106
107
  */
107
108
  maxLayers: number;
108
109
  };
109
- export type NavMeshGeneratorResult = {
110
+ export type SoloNavMeshConfig = Omit<NavMeshConfig, 'tileSize'>;
111
+ export type TiledNavMeshConfig = NavMeshConfig;
112
+ export declare class NavMeshIntermediates {
113
+ raw: R.NavMeshIntermediates;
114
+ constructor(raw: R.NavMeshIntermediates);
115
+ heightfield(): rcHeightfield;
116
+ compactHeightfield(): rcCompactHeightfield;
117
+ contourSet(): rcContourSet;
118
+ heightfieldLayerSet(): rcHeightfieldLayerSet;
119
+ destroy(): void;
120
+ }
121
+ export declare class TiledNavMeshIntermediates {
122
+ raw: R.TiledNavMeshIntermediates;
123
+ constructor(raw: R.TiledNavMeshIntermediates);
124
+ chunkyTriMesh(): rcChunkyTriMesh;
125
+ intermediates(index: number): NavMeshIntermediates;
126
+ intermediatesCount(): number;
127
+ destroy(): void;
128
+ }
129
+ export type SoloNavMeshGeneratorResult = {
130
+ success: boolean;
131
+ navMesh: NavMesh;
132
+ intermediates?: NavMeshIntermediates;
133
+ };
134
+ export type TiledNavMeshGeneratorResult = {
110
135
  success: boolean;
111
136
  navMesh: NavMesh;
112
137
  tileCache: TileCache;
138
+ intermediates?: TiledNavMeshIntermediates;
113
139
  };
114
140
  export declare class NavMeshGenerator {
115
141
  raw: R.NavMeshGenerator;
116
142
  constructor();
117
143
  /**
118
- * Builds a NavMesh from the given positions and indices.
144
+ * Builds a Solo NavMesh from the given positions and indices.
145
+ * @param positions a flat array of positions
146
+ * @param indices a flat array of indices
147
+ * @param navMeshConfig optional configuration for the NavMesh
148
+ * @param keepIntermediates if true, the NavMeshIntermediates will be returned
149
+ */
150
+ generateSoloNavMesh(positions: ArrayLike<number>, indices: ArrayLike<number>, navMeshConfig?: Partial<Omit<NavMeshConfig, 'tileSize'>>, keepIntermediates?: boolean): SoloNavMeshGeneratorResult;
151
+ /**
152
+ * Builds a Tiled NavMesh from the given positions and indices.
119
153
  * @param positions a flat array of positions
120
154
  * @param indices a flat array of indices
121
155
  * @param navMeshConfig optional configuration for the NavMesh
156
+ * @param keepIntermediates if true, the TiledNavMeshIntermediates will be returned
122
157
  */
123
- generate(positions: ArrayLike<number>, indices: ArrayLike<number>, navMeshConfig?: Partial<NavMeshConfig>): NavMeshGeneratorResult;
158
+ generateTiledNavMesh(positions: ArrayLike<number>, indices: ArrayLike<number>, navMeshConfig?: Partial<NavMeshConfig>, keepIntermediates?: boolean): TiledNavMeshGeneratorResult;
159
+ private generate;
124
160
  destroy(): void;
125
161
  }
@@ -1,95 +1,6 @@
1
1
  import type R from '@recast-navigation/wasm';
2
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
- }
3
+ import { dtMeshTile, dtPoly, dtOffMeshConnection } from './wrappers';
93
4
  export declare class NavMeshGetTilesAtResult {
94
5
  raw: R.NavMeshGetTilesAtResult;
95
6
  constructor(raw: R.NavMeshGetTilesAtResult);
@@ -0,0 +1,248 @@
1
+ import type R from '@recast-navigation/wasm';
2
+ import { Vector3 } from './utils';
3
+ export declare class rcSpan {
4
+ raw: R.rcSpan;
5
+ constructor(raw: R.rcSpan);
6
+ smin(): number;
7
+ smax(): number;
8
+ area(): number;
9
+ next(): rcSpan | null;
10
+ }
11
+ export declare class rcSpanPool {
12
+ raw: R.rcSpanPool;
13
+ constructor(raw: R.rcSpanPool);
14
+ next(): rcSpanPool | null;
15
+ items(index: number): rcSpan;
16
+ }
17
+ export declare class rcHeightfield {
18
+ raw: R.rcHeightfield;
19
+ constructor(raw: R.rcHeightfield);
20
+ width(): number;
21
+ height(): number;
22
+ bmin(): Vector3;
23
+ bmax(): Vector3;
24
+ cs(): number;
25
+ ch(): number;
26
+ spans(index: number): rcSpan;
27
+ pools(index: number): rcSpanPool;
28
+ freelist(index: number): rcSpan;
29
+ }
30
+ export declare class rcCompactCell {
31
+ raw: R.rcCompactCell;
32
+ constructor(raw: R.rcCompactCell);
33
+ index(): number;
34
+ count(): number;
35
+ }
36
+ export declare class rcCompactSpan {
37
+ raw: R.rcCompactSpan;
38
+ constructor(raw: R.rcCompactSpan);
39
+ y(): number;
40
+ reg(): number;
41
+ con(): number;
42
+ h(): number;
43
+ }
44
+ export declare class rcCompactHeightfield {
45
+ raw: R.rcCompactHeightfield;
46
+ constructor(raw: R.rcCompactHeightfield);
47
+ width(): number;
48
+ height(): number;
49
+ spanCount(): number;
50
+ walkableHeight(): number;
51
+ walkableClimb(): number;
52
+ borderSize(): number;
53
+ maxDistance(): number;
54
+ maxRegions(): number;
55
+ bmin(): Vector3;
56
+ bmax(): Vector3;
57
+ cs(): number;
58
+ ch(): number;
59
+ cells(index: number): rcCompactCell;
60
+ spans(index: number): rcCompactSpan;
61
+ dist(index: number): number;
62
+ areas(index: number): number;
63
+ }
64
+ export declare class rcContour {
65
+ raw: R.rcContour;
66
+ constructor(raw: R.rcContour);
67
+ verts(index: number): number;
68
+ nverts(): number;
69
+ rverts(index: number): number;
70
+ nrverts(): number;
71
+ reg(): number;
72
+ area(): number;
73
+ }
74
+ export declare class rcContourSet {
75
+ raw: R.rcContourSet;
76
+ constructor(raw: R.rcContourSet);
77
+ conts(index: number): rcContour;
78
+ nconts(): number;
79
+ bmin(): Vector3;
80
+ bmax(): Vector3;
81
+ cs(): number;
82
+ ch(): number;
83
+ width(): number;
84
+ height(): number;
85
+ borderSize(): number;
86
+ maxError(): number;
87
+ }
88
+ export declare class rcHeightfieldLayer {
89
+ raw: R.rcHeightfieldLayer;
90
+ constructor(raw: R.rcHeightfieldLayer);
91
+ bmin(): Vector3;
92
+ bmax(): Vector3;
93
+ cs(): number;
94
+ ch(): number;
95
+ width(): number;
96
+ height(): number;
97
+ minx(): number;
98
+ maxx(): number;
99
+ miny(): number;
100
+ maxy(): number;
101
+ hmin(): number;
102
+ hmax(): number;
103
+ heights(index: number): number;
104
+ areas(index: number): number;
105
+ cons(index: number): number;
106
+ }
107
+ export declare class rcHeightfieldLayerSet {
108
+ raw: R.rcHeightfieldLayerSet;
109
+ constructor(raw: R.rcHeightfieldLayerSet);
110
+ layers(index: number): rcHeightfieldLayer;
111
+ nlayers(): number;
112
+ }
113
+ export declare class rcChunkyTriMeshNode {
114
+ raw: R.rcChunkyTriMeshNode;
115
+ constructor(raw: R.rcChunkyTriMeshNode);
116
+ bmin(): Vector3;
117
+ bmax(): Vector3;
118
+ i(): number;
119
+ n(): number;
120
+ }
121
+ export declare class rcChunkyTriMesh {
122
+ raw: R.rcChunkyTriMesh;
123
+ constructor(raw: R.rcChunkyTriMesh);
124
+ nodes(index: number): rcChunkyTriMeshNode;
125
+ nnodes(): number;
126
+ tris(index: number): number;
127
+ ntris(): number;
128
+ maxTrisPerChunk(): number;
129
+ }
130
+ export declare class rcPolyMesh {
131
+ raw: R.rcPolyMesh;
132
+ constructor(raw: R.rcPolyMesh);
133
+ verts(index: number): number;
134
+ polys(index: number): number;
135
+ regs(index: number): number;
136
+ flags(index: number): number;
137
+ areas(index: number): number;
138
+ nverts(): number;
139
+ npolys(): number;
140
+ maxpolys(): number;
141
+ nvp(): number;
142
+ bmin(): Vector3;
143
+ bmax(): Vector3;
144
+ cs(): number;
145
+ ch(): number;
146
+ borderSize(): number;
147
+ maxEdgeError(): number;
148
+ }
149
+ export declare class rcPolyMeshDetail {
150
+ raw: R.rcPolyMeshDetail;
151
+ constructor(raw: R.rcPolyMeshDetail);
152
+ meshes(index: number): number;
153
+ verts(index: number): number;
154
+ tris(index: number): number;
155
+ nmeshes(): number;
156
+ nverts(): number;
157
+ ntris(): number;
158
+ }
159
+ export declare class dtPoly {
160
+ raw: R.dtPoly;
161
+ constructor(raw: R.dtPoly);
162
+ firstLink(): number;
163
+ verts(index: number): number;
164
+ neis(index: number): number;
165
+ flags(): number;
166
+ vertCount(): number;
167
+ areaAndType(): number;
168
+ getType(): number;
169
+ }
170
+ export declare class dtPolyDetail {
171
+ raw: R.dtPolyDetail;
172
+ constructor(raw: R.dtPolyDetail);
173
+ vertBase(): number;
174
+ triBase(): number;
175
+ vertCount(): number;
176
+ triCount(): number;
177
+ }
178
+ export declare class dtLink {
179
+ raw: R.dtLink;
180
+ constructor(raw: R.dtLink);
181
+ ref(): number;
182
+ next(): number;
183
+ edge(): number;
184
+ side(): number;
185
+ bmin(): number;
186
+ bmax(): number;
187
+ }
188
+ export declare class dtBVNode {
189
+ raw: R.dtBVNode;
190
+ constructor(raw: R.dtBVNode);
191
+ bmin(): Vector3;
192
+ bmax(): Vector3;
193
+ i(): number;
194
+ }
195
+ export declare class dtOffMeshConnection {
196
+ raw: R.dtOffMeshConnection;
197
+ constructor(raw: R.dtOffMeshConnection);
198
+ pos(index: number): number;
199
+ rad(): number;
200
+ poly(): number;
201
+ flags(): number;
202
+ side(): number;
203
+ userId(): number;
204
+ }
205
+ export declare class dtMeshHeader {
206
+ raw: R.dtMeshHeader;
207
+ constructor(raw: R.dtMeshHeader);
208
+ magic(): number;
209
+ version(): number;
210
+ x(): number;
211
+ y(): number;
212
+ layer(): number;
213
+ userId(): number;
214
+ polyCount(): number;
215
+ vertCount(): number;
216
+ maxLinkCount(): number;
217
+ detailMeshCount(): number;
218
+ detailVertCount(): number;
219
+ detailTriCount(): number;
220
+ bvNodeCount(): number;
221
+ offMeshConCount(): number;
222
+ offMeshBase(): number;
223
+ walkableHeight(): number;
224
+ walkableRadius(): number;
225
+ walkableClimb(): number;
226
+ bmin(index: number): number;
227
+ bmax(index: number): number;
228
+ bvQuantFactor(): number;
229
+ }
230
+ export declare class dtMeshTile {
231
+ raw: R.dtMeshTile;
232
+ constructor(raw: R.dtMeshTile);
233
+ salt(): number;
234
+ linksFreeList(): number;
235
+ header(): dtMeshHeader | null;
236
+ polys(index: number): dtPoly;
237
+ verts(index: number): number;
238
+ links(index: number): dtLink;
239
+ detailMeshes(index: number): dtPolyDetail;
240
+ detailVerts(index: number): number;
241
+ detailTris(index: number): number;
242
+ bvTree(index: number): dtBVNode;
243
+ offMeshCons(index: number): dtOffMeshConnection;
244
+ data(index: number): number;
245
+ dataSize(): number;
246
+ flags(): number;
247
+ next(): dtMeshTile;
248
+ }
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.1.2",
9
+ "version": "0.2.0",
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.1.2",
29
+ "@recast-navigation/wasm": "0.2.0",
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",