@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.
Files changed (63) hide show
  1. package/build/bundle-worker-terrain.js +1 -1
  2. package/build/meep.cjs +55 -36
  3. package/build/meep.min.js +1 -1
  4. package/build/meep.module.js +55 -36
  5. package/package.json +1 -1
  6. package/src/core/binary/de_interleave_2_bits.spec.d.ts.map +1 -0
  7. package/src/core/binary/de_interleave_bits_by_2.d.ts.map +1 -0
  8. package/src/core/binary/reinterpret_float32_as_int32.d.ts.map +1 -0
  9. package/src/core/binary/split_by_2.d.ts.map +1 -0
  10. package/src/core/binary/split_by_3.d.ts.map +1 -0
  11. package/src/core/bvh2/binary/2/BinaryUint32BVH.d.ts.map +1 -1
  12. package/src/core/bvh2/binary/2/BinaryUint32BVH.js +3 -4
  13. package/src/core/bvh2/bvh3/BVH.js +1 -1
  14. package/src/core/geom/2d/aabb/AABB2.d.ts.map +1 -1
  15. package/src/core/geom/2d/aabb/AABB2.js +2 -4
  16. package/src/core/geom/2d/aabb/aabb2_array_combine.d.ts +11 -0
  17. package/src/core/geom/2d/aabb/aabb2_array_combine.d.ts.map +1 -0
  18. package/src/core/geom/2d/aabb/aabb2_array_combine.js +35 -0
  19. package/src/core/geom/2d/aabb/aabb2_array_set.d.ts +11 -0
  20. package/src/core/geom/2d/aabb/aabb2_array_set.d.ts.map +1 -0
  21. package/src/core/geom/2d/aabb/aabb2_array_set.js +21 -0
  22. package/src/core/geom/2d/aabb/aabb2_compute_area.d.ts +10 -0
  23. package/src/core/geom/2d/aabb/aabb2_compute_area.d.ts.map +1 -0
  24. package/src/core/geom/2d/aabb/aabb2_compute_area.js +14 -0
  25. package/src/core/geom/2d/bvh/BVH2D.d.ts +289 -0
  26. package/src/core/geom/2d/bvh/BVH2D.d.ts.map +1 -0
  27. package/src/core/geom/2d/bvh/BVH2D.js +1143 -0
  28. package/src/core/geom/2d/bvh/BVH2D.spec.d.ts +2 -0
  29. package/src/core/geom/2d/bvh/BVH2D.spec.d.ts.map +1 -0
  30. package/src/core/geom/2d/bvh/BVH2D.spec.js +358 -0
  31. package/src/core/geom/2d/lt-grid/LooseTightGrid.js +2 -2
  32. package/src/core/geom/2d/quad-tree/QuadTreeNode.spec.js +1 -1
  33. package/src/core/geom/2d/r-tree/StaticR2Tree.d.ts +79 -0
  34. package/src/core/geom/2d/r-tree/StaticR2Tree.d.ts.map +1 -0
  35. package/src/core/geom/2d/r-tree/StaticR2Tree.js +384 -0
  36. package/src/core/geom/2d/r-tree/StaticR2Tree.spec.d.ts +2 -0
  37. package/src/core/geom/2d/r-tree/StaticR2Tree.spec.d.ts.map +1 -0
  38. package/src/core/geom/2d/r-tree/StaticR2Tree.spec.js +62 -0
  39. package/src/core/geom/3d/morton/mortonEncode_magicbits.js +1 -1
  40. package/src/core/geom/3d/topology/struct/binary/io/OrderedEdge.js +1 -1
  41. package/src/engine/graphics/render/forward_plus/LightManager.d.ts.map +1 -1
  42. package/src/engine/graphics/render/forward_plus/LightManager.js +2 -0
  43. package/src/engine/graphics/render/forward_plus/cluster/read_plane_pair.d.ts +1 -1
  44. package/src/engine/graphics/render/forward_plus/cluster/read_plane_pair.js +1 -1
  45. package/src/engine/graphics/texture/virtual/tile/compose_tile_address.js +1 -1
  46. package/src/engine/graphics/texture/virtual/tile/tile_address_to_finger_print.js +1 -1
  47. package/src/engine/input/devices/KeyboardDevice.d.ts.map +1 -1
  48. package/src/engine/input/devices/KeyboardDevice.js +7 -1
  49. package/src/core/geom/3d/morton/de_interleave_2_bits.spec.d.ts.map +0 -1
  50. package/src/core/geom/3d/morton/de_interleave_bits_by_2.d.ts.map +0 -1
  51. package/src/core/geom/3d/morton/reinterpret_float32_as_int32.d.ts.map +0 -1
  52. package/src/core/geom/3d/morton/split_by_2.d.ts.map +0 -1
  53. package/src/core/geom/3d/morton/split_by_3.d.ts.map +0 -1
  54. /package/src/core/{geom/3d/morton → binary}/de_interleave_2_bits.spec.d.ts +0 -0
  55. /package/src/core/{geom/3d/morton → binary}/de_interleave_2_bits.spec.js +0 -0
  56. /package/src/core/{geom/3d/morton → binary}/de_interleave_bits_by_2.d.ts +0 -0
  57. /package/src/core/{geom/3d/morton → binary}/de_interleave_bits_by_2.js +0 -0
  58. /package/src/core/{geom/3d/morton → binary}/reinterpret_float32_as_int32.d.ts +0 -0
  59. /package/src/core/{geom/3d/morton → binary}/reinterpret_float32_as_int32.js +0 -0
  60. /package/src/core/{geom/3d/morton → binary}/split_by_2.d.ts +0 -0
  61. /package/src/core/{geom/3d/morton → binary}/split_by_2.js +0 -0
  62. /package/src/core/{geom/3d/morton → binary}/split_by_3.d.ts +0 -0
  63. /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"}