@woosh/meep-engine 2.89.5 → 2.91.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/build/bundle-worker-terrain.js +1 -1
- package/build/meep.cjs +55 -36
- package/build/meep.min.js +1 -1
- package/build/meep.module.js +55 -36
- package/package.json +1 -1
- package/src/core/binary/de_interleave_2_bits.spec.d.ts.map +1 -0
- package/src/core/binary/de_interleave_bits_by_2.d.ts.map +1 -0
- package/src/core/binary/reinterpret_float32_as_int32.d.ts.map +1 -0
- package/src/core/binary/split_by_2.d.ts.map +1 -0
- package/src/core/binary/split_by_3.d.ts.map +1 -0
- package/src/core/bvh2/binary/2/BinaryUint32BVH.d.ts.map +1 -1
- package/src/core/bvh2/binary/2/BinaryUint32BVH.js +3 -4
- package/src/core/bvh2/bvh3/BVH.js +1 -1
- package/src/core/geom/2d/aabb/AABB2.d.ts.map +1 -1
- package/src/core/geom/2d/aabb/AABB2.js +2 -4
- package/src/core/geom/2d/aabb/aabb2_array_combine.d.ts +11 -0
- package/src/core/geom/2d/aabb/aabb2_array_combine.d.ts.map +1 -0
- package/src/core/geom/2d/aabb/aabb2_array_combine.js +35 -0
- package/src/core/geom/2d/aabb/aabb2_array_set.d.ts +11 -0
- package/src/core/geom/2d/aabb/aabb2_array_set.d.ts.map +1 -0
- package/src/core/geom/2d/aabb/aabb2_array_set.js +21 -0
- package/src/core/geom/2d/aabb/aabb2_compute_area.d.ts +10 -0
- package/src/core/geom/2d/aabb/aabb2_compute_area.d.ts.map +1 -0
- package/src/core/geom/2d/aabb/aabb2_compute_area.js +14 -0
- package/src/core/geom/2d/bvh/BVH2D.d.ts +289 -0
- package/src/core/geom/2d/bvh/BVH2D.d.ts.map +1 -0
- package/src/core/geom/2d/bvh/BVH2D.js +1143 -0
- package/src/core/geom/2d/bvh/BVH2D.spec.d.ts +2 -0
- package/src/core/geom/2d/bvh/BVH2D.spec.d.ts.map +1 -0
- package/src/core/geom/2d/bvh/BVH2D.spec.js +358 -0
- package/src/core/geom/2d/lt-grid/LooseTightGrid.js +2 -2
- package/src/core/geom/2d/quad-tree/QuadTreeNode.spec.js +1 -1
- package/src/core/geom/2d/r-tree/StaticR2Tree.d.ts +79 -0
- package/src/core/geom/2d/r-tree/StaticR2Tree.d.ts.map +1 -0
- package/src/core/geom/2d/r-tree/StaticR2Tree.js +384 -0
- package/src/core/geom/2d/r-tree/StaticR2Tree.spec.d.ts +2 -0
- package/src/core/geom/2d/r-tree/StaticR2Tree.spec.d.ts.map +1 -0
- package/src/core/geom/2d/r-tree/StaticR2Tree.spec.js +62 -0
- package/src/core/geom/3d/morton/mortonEncode_magicbits.js +1 -1
- package/src/core/geom/3d/topology/struct/binary/io/OrderedEdge.js +1 -1
- package/src/engine/graphics/render/forward_plus/LightManager.d.ts.map +1 -1
- package/src/engine/graphics/render/forward_plus/LightManager.js +2 -0
- package/src/engine/graphics/render/forward_plus/cluster/read_plane_pair.d.ts +1 -1
- package/src/engine/graphics/render/forward_plus/cluster/read_plane_pair.js +1 -1
- package/src/engine/graphics/texture/virtual/tile/compose_tile_address.js +1 -1
- package/src/engine/graphics/texture/virtual/tile/tile_address_to_finger_print.js +1 -1
- package/src/engine/input/devices/KeyboardDevice.d.ts.map +1 -1
- package/src/engine/input/devices/KeyboardDevice.js +7 -1
- package/src/core/geom/3d/morton/de_interleave_2_bits.spec.d.ts.map +0 -1
- package/src/core/geom/3d/morton/de_interleave_bits_by_2.d.ts.map +0 -1
- package/src/core/geom/3d/morton/reinterpret_float32_as_int32.d.ts.map +0 -1
- package/src/core/geom/3d/morton/split_by_2.d.ts.map +0 -1
- package/src/core/geom/3d/morton/split_by_3.d.ts.map +0 -1
- /package/src/core/{geom/3d/morton → binary}/de_interleave_2_bits.spec.d.ts +0 -0
- /package/src/core/{geom/3d/morton → binary}/de_interleave_2_bits.spec.js +0 -0
- /package/src/core/{geom/3d/morton → binary}/de_interleave_bits_by_2.d.ts +0 -0
- /package/src/core/{geom/3d/morton → binary}/de_interleave_bits_by_2.js +0 -0
- /package/src/core/{geom/3d/morton → binary}/reinterpret_float32_as_int32.d.ts +0 -0
- /package/src/core/{geom/3d/morton → binary}/reinterpret_float32_as_int32.js +0 -0
- /package/src/core/{geom/3d/morton → binary}/split_by_2.d.ts +0 -0
- /package/src/core/{geom/3d/morton → binary}/split_by_2.js +0 -0
- /package/src/core/{geom/3d/morton → binary}/split_by_3.d.ts +0 -0
- /package/src/core/{geom/3d/morton → binary}/split_by_3.js +0 -0
|
@@ -0,0 +1,289 @@
|
|
|
1
|
+
export const COLUMN_PARENT: 4;
|
|
2
|
+
export const COLUMN_CHILD_1: 5;
|
|
3
|
+
export const COLUMN_CHILD_2: 6;
|
|
4
|
+
export const COLUMN_HEIGHT: 7;
|
|
5
|
+
/**
|
|
6
|
+
*
|
|
7
|
+
* @type {number}
|
|
8
|
+
*/
|
|
9
|
+
export const NULL_NODE: number;
|
|
10
|
+
/**
|
|
11
|
+
* How many words are used for a single NODE in the tree
|
|
12
|
+
* One "word" is 4 bytes for the sake of alignment
|
|
13
|
+
* @readonly
|
|
14
|
+
* @type {number}
|
|
15
|
+
*/
|
|
16
|
+
export const ELEMENT_WORD_COUNT: number;
|
|
17
|
+
/**
|
|
18
|
+
* 2D Bounding Volume Hierarchy implementation.
|
|
19
|
+
* Based on BVH (3D) implementation
|
|
20
|
+
* @class
|
|
21
|
+
*/
|
|
22
|
+
export class BVH2D {
|
|
23
|
+
/**
|
|
24
|
+
*
|
|
25
|
+
* @type {ArrayBuffer}
|
|
26
|
+
* @private
|
|
27
|
+
*/
|
|
28
|
+
private __data_buffer;
|
|
29
|
+
/**
|
|
30
|
+
*
|
|
31
|
+
* @type {Float32Array}
|
|
32
|
+
* @private
|
|
33
|
+
*/
|
|
34
|
+
private __data_float32;
|
|
35
|
+
/**
|
|
36
|
+
*
|
|
37
|
+
* @type {Uint32Array}
|
|
38
|
+
* @private
|
|
39
|
+
*/
|
|
40
|
+
private __data_uint32;
|
|
41
|
+
/**
|
|
42
|
+
* How many nodes are currently reserved, this will grow automatically through {@link #allocate_node} method usage
|
|
43
|
+
* @type {number}
|
|
44
|
+
* @private
|
|
45
|
+
*/
|
|
46
|
+
private __capacity;
|
|
47
|
+
/**
|
|
48
|
+
* Number of used nodes. These are either live nodes, or node sitting in the {@link #__free} pool
|
|
49
|
+
* @type {number}
|
|
50
|
+
* @private
|
|
51
|
+
*/
|
|
52
|
+
private __size;
|
|
53
|
+
/**
|
|
54
|
+
* Indices of released nodes. Nodes are pulled from here first if available, before the whole tree gets resized
|
|
55
|
+
* @type {number[]}
|
|
56
|
+
* @private
|
|
57
|
+
*/
|
|
58
|
+
private __free;
|
|
59
|
+
/**
|
|
60
|
+
* Pointer into __free array that's used as a stack, so this pointer represents top of the stack
|
|
61
|
+
* @type {number}
|
|
62
|
+
* @private
|
|
63
|
+
*/
|
|
64
|
+
private __free_pointer;
|
|
65
|
+
/**
|
|
66
|
+
* Root node of the hierarchy
|
|
67
|
+
* @type {number}
|
|
68
|
+
* @private
|
|
69
|
+
*/
|
|
70
|
+
private __root;
|
|
71
|
+
/**
|
|
72
|
+
*
|
|
73
|
+
* @returns {number}
|
|
74
|
+
*/
|
|
75
|
+
get root(): number;
|
|
76
|
+
/**
|
|
77
|
+
*
|
|
78
|
+
* @param {number} v
|
|
79
|
+
*/
|
|
80
|
+
set node_capacity(arg: number);
|
|
81
|
+
/**
|
|
82
|
+
*
|
|
83
|
+
* @returns {number}
|
|
84
|
+
*/
|
|
85
|
+
get node_capacity(): number;
|
|
86
|
+
__grow_capacity(): void;
|
|
87
|
+
/**
|
|
88
|
+
*
|
|
89
|
+
* @param {number} new_capacity in number of nodes
|
|
90
|
+
* @private
|
|
91
|
+
*/
|
|
92
|
+
private __set_capacity;
|
|
93
|
+
/**
|
|
94
|
+
* Trim allocated memory region to only contain allocated nodes
|
|
95
|
+
*/
|
|
96
|
+
trim(): void;
|
|
97
|
+
/**
|
|
98
|
+
*
|
|
99
|
+
* @returns {number}
|
|
100
|
+
*/
|
|
101
|
+
allocate_node(): number;
|
|
102
|
+
/**
|
|
103
|
+
* Release memory used by the node back into the pool
|
|
104
|
+
* NOTE: Make sure that the node is not "live" (not attached to the hierarchy), otherwise this operation may corrupt the tree
|
|
105
|
+
* @param {number} id
|
|
106
|
+
*/
|
|
107
|
+
release_node(id: number): void;
|
|
108
|
+
/**
|
|
109
|
+
*
|
|
110
|
+
* @param {number} id
|
|
111
|
+
* @returns {boolean}
|
|
112
|
+
*/
|
|
113
|
+
node_is_leaf(id: number): boolean;
|
|
114
|
+
/**
|
|
115
|
+
*
|
|
116
|
+
* @param {number} id
|
|
117
|
+
* @returns {number}
|
|
118
|
+
*/
|
|
119
|
+
node_get_user_data(id: number): number;
|
|
120
|
+
/**
|
|
121
|
+
*
|
|
122
|
+
* @param {number} id
|
|
123
|
+
* @param {number} value
|
|
124
|
+
*/
|
|
125
|
+
node_set_user_data(id: number, value: number): void;
|
|
126
|
+
/**
|
|
127
|
+
*
|
|
128
|
+
* @param {number} id
|
|
129
|
+
* @returns {number}
|
|
130
|
+
*/
|
|
131
|
+
node_get_child1(id: number): number;
|
|
132
|
+
/**
|
|
133
|
+
*
|
|
134
|
+
* @param {number} node
|
|
135
|
+
* @param {number} child1
|
|
136
|
+
*/
|
|
137
|
+
node_set_child1(node: number, child1: number): void;
|
|
138
|
+
/**
|
|
139
|
+
*
|
|
140
|
+
* @param {number} id
|
|
141
|
+
* @returns {number}
|
|
142
|
+
*/
|
|
143
|
+
node_get_child2(id: number): number;
|
|
144
|
+
/**
|
|
145
|
+
*
|
|
146
|
+
* @param {number} node
|
|
147
|
+
* @param {number} child2
|
|
148
|
+
*/
|
|
149
|
+
node_set_child2(node: number, child2: number): void;
|
|
150
|
+
/**
|
|
151
|
+
*
|
|
152
|
+
* @param {number} id
|
|
153
|
+
* @returns {number}
|
|
154
|
+
*/
|
|
155
|
+
node_get_parent(id: number): number;
|
|
156
|
+
/**
|
|
157
|
+
*
|
|
158
|
+
* @param {number} node
|
|
159
|
+
* @param {number} parent
|
|
160
|
+
*/
|
|
161
|
+
node_set_parent(node: number, parent: number): void;
|
|
162
|
+
/**
|
|
163
|
+
*
|
|
164
|
+
* @param {number} id
|
|
165
|
+
* @returns {number}
|
|
166
|
+
*/
|
|
167
|
+
node_get_height(id: number): number;
|
|
168
|
+
/**
|
|
169
|
+
*
|
|
170
|
+
* @param {number} id
|
|
171
|
+
* @param {number} height
|
|
172
|
+
*/
|
|
173
|
+
node_set_height(id: number, height: number): void;
|
|
174
|
+
/**
|
|
175
|
+
*
|
|
176
|
+
* @param {number} id
|
|
177
|
+
* @param {number[]|Float32Array} result
|
|
178
|
+
*/
|
|
179
|
+
node_get_aabb(id: number, result: number[] | Float32Array): void;
|
|
180
|
+
/**
|
|
181
|
+
*
|
|
182
|
+
* @param {number} id
|
|
183
|
+
* @param {number[]|ArrayLike<number>} aabb
|
|
184
|
+
*/
|
|
185
|
+
node_set_aabb(id: number, aabb: number[] | ArrayLike<number>): void;
|
|
186
|
+
/**
|
|
187
|
+
*
|
|
188
|
+
* @param {number} id
|
|
189
|
+
* @param {number[]} aabb
|
|
190
|
+
*/
|
|
191
|
+
node_move_aabb(id: number, aabb: number[]): void;
|
|
192
|
+
/**
|
|
193
|
+
*
|
|
194
|
+
* @param {number} id
|
|
195
|
+
* @param {number} x0
|
|
196
|
+
* @param {number} y0
|
|
197
|
+
* @param {number} z0
|
|
198
|
+
* @param {number} x1
|
|
199
|
+
* @param {number} y1
|
|
200
|
+
* @param {number} z1
|
|
201
|
+
*/
|
|
202
|
+
node_set_aabb_primitive(id: number, x0: number, y0: number, x1: number, y1: number): void;
|
|
203
|
+
/**
|
|
204
|
+
*
|
|
205
|
+
* @param {number} id
|
|
206
|
+
* @returns {number}
|
|
207
|
+
*/
|
|
208
|
+
node_get_surface_area(id: number): number;
|
|
209
|
+
/**
|
|
210
|
+
*
|
|
211
|
+
* @param {number} index_a
|
|
212
|
+
* @param {number} index_b
|
|
213
|
+
* @returns {number}
|
|
214
|
+
*/
|
|
215
|
+
node_get_combined_surface_area(index_a: number, index_b: number): number;
|
|
216
|
+
/**
|
|
217
|
+
*
|
|
218
|
+
* @param {number} destination
|
|
219
|
+
* @param {number} index_a
|
|
220
|
+
* @param {number} index_b
|
|
221
|
+
*/
|
|
222
|
+
node_set_combined_aabb(destination: number, index_a: number, index_b: number): void;
|
|
223
|
+
/**
|
|
224
|
+
*
|
|
225
|
+
* @param {number} leaf
|
|
226
|
+
* @returns {void}
|
|
227
|
+
*/
|
|
228
|
+
insert_leaf(leaf: number): void;
|
|
229
|
+
/**
|
|
230
|
+
* refit and update nodes up the tree. Only updates bounds
|
|
231
|
+
* NOTE: Does not update "height"
|
|
232
|
+
* @param {number} parent
|
|
233
|
+
* @private
|
|
234
|
+
*/
|
|
235
|
+
private bubble_up_refit;
|
|
236
|
+
/**
|
|
237
|
+
* refit and update nodes up the tree
|
|
238
|
+
* @param {number} parent
|
|
239
|
+
* @private
|
|
240
|
+
*/
|
|
241
|
+
private bubble_up_update;
|
|
242
|
+
/**
|
|
243
|
+
* NOTE: Leaf node is not released, make sure to call {@link #release_node} separately when you no longer need the leaf node
|
|
244
|
+
* @param {number} leaf
|
|
245
|
+
* @returns {void}
|
|
246
|
+
*/
|
|
247
|
+
remove_leaf(leaf: number): void;
|
|
248
|
+
/**
|
|
249
|
+
* Perform a left or right rotation if node A is imbalanced.
|
|
250
|
+
* Returns the new root index.
|
|
251
|
+
* @param {number} iA
|
|
252
|
+
* @returns {number}
|
|
253
|
+
* @private
|
|
254
|
+
*/
|
|
255
|
+
private balance;
|
|
256
|
+
/**
|
|
257
|
+
* Release all nodes, this essentially resets the tree to empty state
|
|
258
|
+
* NOTE: For performance reasons, released memory is not reset, this means that attempting to access cleared nodes' memory will yield garbage data
|
|
259
|
+
*/
|
|
260
|
+
release_all(): void;
|
|
261
|
+
/**
|
|
262
|
+
*
|
|
263
|
+
* @param {function(node:number, tree:BVH):void} callback
|
|
264
|
+
* @param {*} [ctx]
|
|
265
|
+
*/
|
|
266
|
+
traverse(callback: any, ctx?: any): void;
|
|
267
|
+
/**
|
|
268
|
+
*
|
|
269
|
+
* @param {number[]} destination
|
|
270
|
+
* @param {number} destination_offset
|
|
271
|
+
* @returns {number}
|
|
272
|
+
*/
|
|
273
|
+
collect_nodes_all(destination: number[], destination_offset: number): number;
|
|
274
|
+
/**
|
|
275
|
+
* Update parent and child links of a given node to point to a new location, useful for re-locating nodes
|
|
276
|
+
* @param {number} node node to update
|
|
277
|
+
* @param {number} destination Where updated links should point to
|
|
278
|
+
* @private
|
|
279
|
+
*/
|
|
280
|
+
private __move_node_links;
|
|
281
|
+
/**
|
|
282
|
+
* Swap two nodes in memory
|
|
283
|
+
* @param {number} a
|
|
284
|
+
* @param {number} b
|
|
285
|
+
* @returns {boolean}
|
|
286
|
+
*/
|
|
287
|
+
swap_nodes(a: number, b: number): boolean;
|
|
288
|
+
}
|
|
289
|
+
//# sourceMappingURL=BVH2D.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"BVH2D.d.ts","sourceRoot":"","sources":["../../../../../../src/core/geom/2d/bvh/BVH2D.js"],"names":[],"mappings":"AASA,8BAA+B;AAC/B,+BAAgC;AAChC,+BAAgC;AAChC,8BAA+B;AAU/B;;;GAGG;AACH,wBAFU,MAAM,CAEoB;AAcpC;;;;;GAKG;AACH,iCAFU,MAAM,CAEoB;AAgBpC;;;;GAIG;AACH;IAEI;;;;OAIG;IACH,sBAA2E;IAE3E;;;;OAIG;IACH,uBAAsD;IAEtD;;;;OAIG;IACH,sBAAoD;IAEpD;;;;OAIG;IACH,mBAA8B;IAE9B;;;;OAIG;IACH,eAAW;IAEX;;;;OAIG;IACH,eAAY;IAEZ;;;;OAIG;IACH,uBAAmB;IAEnB;;;;OAIG;IACH,eAAmB;IAEnB;;;OAGG;IACH,mBAEC;IAUD;;;OAGG;IACH,+BAMC;IAlBD;;;OAGG;IACH,4BAEC;IAcD,wBAgBC;IAED;;;;OAIG;IACH,uBAqBC;IAED;;OAEG;IACH,aAIC;IAED;;;OAGG;IACH,iBAFa,MAAM,CAmDlB;IAED;;;;OAIG;IACH,iBAFW,MAAM,QAMhB;IAED;;;;OAIG;IACH,iBAHW,MAAM,GACJ,OAAO,CAOnB;IAED;;;;OAIG;IACH,uBAHW,MAAM,GACJ,MAAM,CAKlB;IAED;;;;OAIG;IACH,uBAHW,MAAM,SACN,MAAM,QAOhB;IAED;;;;OAIG;IACH,oBAHW,MAAM,GACJ,MAAM,CAKlB;IAED;;;;OAIG;IACH,sBAHW,MAAM,UACN,MAAM,QAIhB;IAED;;;;OAIG;IACH,oBAHW,MAAM,GACJ,MAAM,CAKlB;IAED;;;;OAIG;IACH,sBAHW,MAAM,UACN,MAAM,QAIhB;IAED;;;;OAIG;IACH,oBAHW,MAAM,GACJ,MAAM,CAKlB;IAED;;;;OAIG;IACH,sBAHW,MAAM,UACN,MAAM,QAIhB;IAGD;;;;OAIG;IACH,oBAHW,MAAM,GACJ,MAAM,CAKlB;IAED;;;;OAIG;IACH,oBAHW,MAAM,UACN,MAAM,QAKhB;IAED;;;;OAIG;IACH,kBAHW,MAAM,UACN,MAAM,EAAE,GAAC,YAAY,QAa/B;IAED;;;;OAIG;IACH,kBAHW,MAAM,QACN,MAAM,EAAE,GAAC,UAAU,MAAM,CAAC,QAkBpC;IAED;;;;OAIG;IACH,mBAHW,MAAM,QACN,MAAM,EAAE,QAWlB;IAED;;;;;;;;;OASG;IACH,4BARW,MAAM,MACN,MAAM,MACN,MAAM,MAEN,MAAM,MACN,MAAM,QAkBhB;IAED;;;;OAIG;IACH,0BAHW,MAAM,GACJ,MAAM,CAkBlB;IAED;;;;;OAKG;IACH,wCAJW,MAAM,WACN,MAAM,GACJ,MAAM,CA6BlB;IAED;;;;;OAKG;IACH,oCAJW,MAAM,WACN,MAAM,WACN,MAAM,QA+BhB;IAED;;;;OAIG;IACH,kBAHW,MAAM,GACJ,IAAI,CA0GhB;IAED;;;;;OAKG;IACH,wBAuBC;IAED;;;;OAIG;IACH,yBA4BC;IAED;;;;OAIG;IACH,kBAHW,MAAM,GACJ,IAAI,CA6ChB;IAED;;;;;;OAMG;IACH,gBAoMC;IAED;;;OAGG;IACH,oBAIC;IAED;;;;OAIG;IACH,yCA8BC;IAED;;;;;OAKG;IACH,+BAJW,MAAM,EAAE,sBACR,MAAM,GACJ,MAAM,CAWlB;IAED;;;;;OAKG;IACH,0BA6BC;IAED;;;;;OAKG;IACH,cAJW,MAAM,KACN,MAAM,GACJ,OAAO,CAsCnB;CACJ"}
|