@woosh/meep-engine 2.108.4 → 2.109.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.
Files changed (185) hide show
  1. package/build/meep.cjs +101 -61
  2. package/build/meep.min.js +1 -1
  3. package/build/meep.module.js +101 -61
  4. package/package.json +1 -1
  5. package/src/core/assert.d.ts +2 -2
  6. package/src/core/assert.d.ts.map +1 -1
  7. package/src/core/assert.js +1 -1
  8. package/src/core/binary/BitSet.d.ts +6 -0
  9. package/src/core/binary/BitSet.d.ts.map +1 -1
  10. package/src/core/binary/BitSet.js +14 -42
  11. package/src/core/binary/align_32.d.ts +7 -0
  12. package/src/core/binary/align_32.d.ts.map +1 -0
  13. package/src/core/binary/align_32.js +8 -0
  14. package/src/core/binary/align_32.spec.d.ts +2 -0
  15. package/src/core/binary/align_32.spec.d.ts.map +1 -0
  16. package/src/core/binary/align_32.spec.js +11 -0
  17. package/src/core/binary/align_4.js +2 -1
  18. package/src/core/binary/align_4.spec.d.ts +2 -0
  19. package/src/core/binary/align_4.spec.d.ts.map +1 -0
  20. package/src/core/binary/align_4.spec.js +20 -0
  21. package/src/core/binary/{de_interleave_bits_by_2.d.ts → de_interleave_2_bits.d.ts} +1 -1
  22. package/src/core/binary/de_interleave_2_bits.d.ts.map +1 -0
  23. package/src/core/binary/de_interleave_2_bits.spec.js +1 -1
  24. package/src/core/binary/hex2dec.spec.d.ts +2 -0
  25. package/src/core/binary/hex2dec.spec.d.ts.map +1 -0
  26. package/src/core/binary/hex2dec.spec.js +22 -0
  27. package/src/core/binary/lsb_32.d.ts +9 -0
  28. package/src/core/binary/lsb_32.d.ts.map +1 -0
  29. package/src/core/binary/lsb_32.js +12 -0
  30. package/src/core/binary/msb_32.d.ts +2 -0
  31. package/src/core/binary/msb_32.d.ts.map +1 -0
  32. package/src/core/binary/msb_32.js +20 -0
  33. package/src/core/binary/msb_lut_de_bruijn.d.ts +7 -0
  34. package/src/core/binary/msb_lut_de_bruijn.d.ts.map +1 -0
  35. package/src/core/binary/msb_lut_de_bruijn.js +9 -0
  36. package/src/core/binary/split_by_2.spec.d.ts +2 -0
  37. package/src/core/binary/split_by_2.spec.d.ts.map +1 -0
  38. package/src/core/binary/split_by_2.spec.js +22 -0
  39. package/src/core/bvh2/bvh3/ebvh_build_for_geometry_morton.d.ts +4 -1
  40. package/src/core/bvh2/bvh3/ebvh_build_for_geometry_morton.d.ts.map +1 -1
  41. package/src/core/bvh2/bvh3/ebvh_build_for_geometry_morton.js +16 -7
  42. package/src/core/bvh2/bvh3/ebvh_build_hierarchy.js +1 -1
  43. package/src/core/bvh2/bvh3/query/bvh_query_user_data_ray.d.ts.map +1 -1
  44. package/src/core/bvh2/bvh3/query/bvh_query_user_data_ray.js +12 -7
  45. package/src/core/geom/2d/circle/circle_circumference.d.ts +7 -0
  46. package/src/core/geom/2d/circle/circle_circumference.d.ts.map +1 -0
  47. package/src/core/geom/2d/circle/circle_circumference.js +12 -0
  48. package/src/core/geom/2d/compute_polygon_area_2d.d.ts.map +1 -1
  49. package/src/core/geom/2d/compute_polygon_area_2d.js +6 -4
  50. package/src/core/geom/2d/lt-grid/LooseTightGrid.js +1 -1
  51. package/src/core/geom/2d/triangle2d_get_barycentric.d.ts +2 -2
  52. package/src/core/geom/2d/triangle2d_get_barycentric.js +2 -2
  53. package/src/core/geom/3d/Ray3.d.ts +19 -0
  54. package/src/core/geom/3d/Ray3.d.ts.map +1 -0
  55. package/src/core/geom/3d/Ray3.js +27 -0
  56. package/src/core/geom/3d/ray/ray3_shift_origin_along_direction.d.ts +10 -0
  57. package/src/core/geom/3d/ray/ray3_shift_origin_along_direction.d.ts.map +1 -0
  58. package/src/core/geom/3d/ray/ray3_shift_origin_along_direction.js +35 -0
  59. package/src/core/geom/3d/sphere/harmonics/compute_legendre_polynomial.d.ts +1 -0
  60. package/src/core/geom/3d/sphere/harmonics/compute_legendre_polynomial.d.ts.map +1 -0
  61. package/src/core/geom/3d/sphere/harmonics/compute_legendre_polynomial.js +0 -0
  62. package/src/core/geom/3d/sphere/harmonics/sh3_convolve_with_cosine_kernel.d.ts +9 -0
  63. package/src/core/geom/3d/sphere/harmonics/sh3_convolve_with_cosine_kernel.d.ts.map +1 -0
  64. package/src/core/geom/3d/sphere/harmonics/sh3_convolve_with_cosine_kernel.js +26 -0
  65. package/src/core/geom/3d/sphere/harmonics/sh3_dering_optimize_positive.d.ts.map +1 -1
  66. package/src/core/geom/3d/sphere/harmonics/sh3_dering_optimize_positive.js +2 -4
  67. package/src/core/geom/3d/sphere/harmonics/sh3_rotate_bl.d.ts +8 -0
  68. package/src/core/geom/3d/sphere/harmonics/sh3_rotate_bl.d.ts.map +1 -0
  69. package/src/core/geom/3d/sphere/harmonics/sh3_rotate_bl.js +94 -0
  70. package/src/core/geom/3d/sphere/harmonics/sh3_rotate_filament.d.ts +8 -0
  71. package/src/core/geom/3d/sphere/harmonics/sh3_rotate_filament.d.ts.map +1 -0
  72. package/src/core/geom/3d/sphere/harmonics/{sh3_rotate.js → sh3_rotate_filament.js} +5 -2
  73. package/src/core/geom/3d/sphere/harmonics/sh3_vector_accumulate.d.ts +12 -0
  74. package/src/core/geom/3d/sphere/harmonics/sh3_vector_accumulate.d.ts.map +1 -0
  75. package/src/core/geom/3d/sphere/harmonics/sh3_vector_accumulate.js +40 -0
  76. package/src/core/geom/3d/sphere/harmonics/sh3_vector_accumulate.spec.d.ts +2 -0
  77. package/src/core/geom/3d/sphere/harmonics/sh3_vector_accumulate.spec.d.ts.map +1 -0
  78. package/src/core/geom/3d/sphere/harmonics/sh3_vector_accumulate.spec.js +27 -0
  79. package/src/core/geom/3d/sphere/harmonics/sh_compute_K.d.ts +3 -3
  80. package/src/core/geom/3d/sphere/harmonics/sh_compute_K.js +3 -3
  81. package/src/core/geom/3d/tetrahedra/delaunay/tetrahedral_mesh_build_from_grid.d.ts.map +1 -1
  82. package/src/core/geom/3d/tetrahedra/delaunay/tetrahedral_mesh_build_from_grid.js +29 -14
  83. package/src/core/geom/Quaternion.js +1 -1
  84. package/src/core/geom/vec/vector_copy.d.ts +10 -0
  85. package/src/core/geom/vec/vector_copy.d.ts.map +1 -0
  86. package/src/core/geom/vec/vector_copy.js +13 -0
  87. package/src/core/{math/vector_nd_dot.d.ts → geom/vec/vector_dot.d.ts} +2 -2
  88. package/src/core/geom/vec/vector_dot.d.ts.map +1 -0
  89. package/src/core/{math/vector_nd_dot.js → geom/vec/vector_dot.js} +1 -1
  90. package/src/core/{math/vector_nd_normalize.d.ts → geom/vec/vector_normalize.d.ts} +2 -2
  91. package/src/core/geom/vec/vector_normalize.d.ts.map +1 -0
  92. package/src/core/{math/vector_nd_normalize.js → geom/vec/vector_normalize.js} +1 -1
  93. package/src/core/geom/vec/vector_normalize.spec.d.ts +2 -0
  94. package/src/core/geom/vec/vector_normalize.spec.d.ts.map +1 -0
  95. package/src/core/{math/vector_nd_normalize.spec.js → geom/vec/vector_normalize.spec.js} +3 -3
  96. package/src/core/geom/vec/vector_scale_array.d.ts +11 -0
  97. package/src/core/geom/vec/vector_scale_array.d.ts.map +1 -0
  98. package/src/core/geom/vec/vector_scale_array.js +31 -0
  99. package/src/core/geom/vec3/v3_dot_array_array.js +2 -0
  100. package/src/core/geom/vec3/v3_matrix4_multiply.d.ts +10 -0
  101. package/src/core/geom/vec3/v3_matrix4_multiply.d.ts.map +1 -0
  102. package/src/core/geom/vec3/v3_matrix4_multiply.js +27 -0
  103. package/src/core/geom/vec3/v3_shift_along_direction.d.ts +14 -0
  104. package/src/core/geom/vec3/v3_shift_along_direction.d.ts.map +1 -0
  105. package/src/core/geom/vec3/v3_shift_along_direction.js +23 -0
  106. package/src/core/math/compute_legendre_polynomial.d.ts +10 -0
  107. package/src/core/math/compute_legendre_polynomial.d.ts.map +1 -0
  108. package/src/core/math/compute_legendre_polynomial.js +46 -0
  109. package/src/core/math/statistics/softmax.d.ts +11 -0
  110. package/src/core/math/statistics/softmax.d.ts.map +1 -0
  111. package/src/core/math/statistics/softmax.js +24 -0
  112. package/src/core/math/statistics/softmax.spec.d.ts +2 -0
  113. package/src/core/math/statistics/softmax.spec.d.ts.map +1 -0
  114. package/src/core/math/statistics/softmax.spec.js +9 -0
  115. package/src/core/model/node-graph/node/NodeInstance.d.ts.map +1 -1
  116. package/src/core/model/node-graph/node/NodeInstance.js +18 -0
  117. package/src/engine/ecs/transform/Transform.d.ts.map +1 -1
  118. package/src/engine/ecs/transform/Transform.js +19 -4
  119. package/src/engine/graphics/ecs/camera/CameraSystem.d.ts.map +1 -1
  120. package/src/engine/graphics/ecs/camera/CameraSystem.js +25 -13
  121. package/src/engine/graphics/geometry/decode_attribute_value.d.ts +10 -0
  122. package/src/engine/graphics/geometry/decode_attribute_value.d.ts.map +1 -0
  123. package/src/engine/graphics/geometry/decode_attribute_value.js +28 -0
  124. package/src/engine/graphics/geometry/geometry_construct_triangle_normal.d.ts +11 -0
  125. package/src/engine/graphics/geometry/geometry_construct_triangle_normal.d.ts.map +1 -0
  126. package/src/engine/graphics/geometry/geometry_construct_triangle_normal.js +31 -0
  127. package/src/engine/graphics/sh3/fromCubeRenderTarget.d.ts.map +1 -1
  128. package/src/engine/graphics/sh3/fromCubeRenderTarget.js +14 -17
  129. package/src/engine/graphics/sh3/lpv/LightProbeVolume.d.ts +3 -2
  130. package/src/engine/graphics/sh3/lpv/LightProbeVolume.d.ts.map +1 -1
  131. package/src/engine/graphics/sh3/lpv/LightProbeVolume.js +21 -97
  132. package/src/engine/graphics/sh3/lpv/PathTracerProbeRenderer.d.ts.map +1 -1
  133. package/src/engine/graphics/sh3/lpv/PathTracerProbeRenderer.js +8 -15
  134. package/src/engine/graphics/sh3/lpv/WebGLCubeProbeRenderer.d.ts +1 -0
  135. package/src/engine/graphics/sh3/lpv/WebGLCubeProbeRenderer.d.ts.map +1 -1
  136. package/src/engine/graphics/sh3/lpv/WebGLCubeProbeRenderer.js +6 -2
  137. package/src/engine/graphics/sh3/path_tracer/{GeometryBVHBatched.d.ts → BufferedGeometryBVH.d.ts} +9 -2
  138. package/src/engine/graphics/sh3/path_tracer/BufferedGeometryBVH.d.ts.map +1 -0
  139. package/src/engine/graphics/sh3/path_tracer/{GeometryBVHBatched.js → BufferedGeometryBVH.js} +84 -5
  140. package/src/engine/graphics/sh3/path_tracer/PathTracedMesh.d.ts +6 -4
  141. package/src/engine/graphics/sh3/path_tracer/PathTracedMesh.d.ts.map +1 -1
  142. package/src/engine/graphics/sh3/path_tracer/PathTracedMesh.js +54 -8
  143. package/src/engine/graphics/sh3/path_tracer/PathTracedScene.d.ts +6 -10
  144. package/src/engine/graphics/sh3/path_tracer/PathTracedScene.d.ts.map +1 -1
  145. package/src/engine/graphics/sh3/path_tracer/PathTracedScene.js +41 -47
  146. package/src/engine/graphics/sh3/path_tracer/material/MaterialConverter.d.ts +11 -0
  147. package/src/engine/graphics/sh3/path_tracer/material/MaterialConverter.d.ts.map +1 -0
  148. package/src/engine/graphics/sh3/path_tracer/material/MaterialConverter.js +102 -0
  149. package/src/engine/graphics/sh3/path_tracer/material/StandardMaterial.d.ts +9 -0
  150. package/src/engine/graphics/sh3/path_tracer/material/StandardMaterial.d.ts.map +1 -0
  151. package/src/engine/graphics/sh3/path_tracer/material/StandardMaterial.js +17 -0
  152. package/src/engine/graphics/sh3/path_tracer/material/StandardTexture.d.ts +31 -0
  153. package/src/engine/graphics/sh3/path_tracer/material/StandardTexture.d.ts.map +1 -0
  154. package/src/engine/graphics/sh3/path_tracer/material/StandardTexture.js +85 -0
  155. package/src/engine/graphics/sh3/path_tracer/material/TextureFilter.d.ts +14 -0
  156. package/src/engine/graphics/sh3/path_tracer/material/TextureFilter.d.ts.map +1 -0
  157. package/src/engine/graphics/sh3/path_tracer/material/TextureFilter.js +17 -0
  158. package/src/engine/graphics/sh3/path_tracer/material/TextureWrapping.d.ts +7 -0
  159. package/src/engine/graphics/sh3/path_tracer/material/TextureWrapping.d.ts.map +1 -0
  160. package/src/engine/graphics/sh3/path_tracer/material/TextureWrapping.js +9 -0
  161. package/src/engine/graphics/sh3/path_tracer/prototypePathTracer.js +104 -9
  162. package/src/engine/graphics/sh3/path_tracer/texture/sample_material.d.ts +1 -2
  163. package/src/engine/graphics/sh3/path_tracer/texture/sample_material.d.ts.map +1 -1
  164. package/src/engine/graphics/sh3/path_tracer/texture/sample_material.js +50 -23
  165. package/src/engine/graphics/sh3/prototypeSH3Probe.js +79 -29
  166. package/src/engine/graphics/sh3/visualise_spherical_harmonic_sphere.d.ts +11 -1
  167. package/src/engine/graphics/sh3/visualise_spherical_harmonic_sphere.d.ts.map +1 -1
  168. package/src/engine/graphics/sh3/visualise_spherical_harmonic_sphere.js +33 -16
  169. package/src/engine/graphics/texture/sampler/one_pixel_sampler_uint8.d.ts +8 -0
  170. package/src/engine/graphics/texture/sampler/one_pixel_sampler_uint8.d.ts.map +1 -0
  171. package/src/engine/graphics/texture/sampler/one_pixel_sampler_uint8.js +10 -0
  172. package/src/engine/graphics/texture/sampler/sampler_multiply_vector.d.ts +8 -0
  173. package/src/engine/graphics/texture/sampler/sampler_multiply_vector.d.ts.map +1 -0
  174. package/src/engine/graphics/texture/sampler/sampler_multiply_vector.js +23 -0
  175. package/src/engine/sound/material/detector/terrain/TerrainSoundMaterialSurfaceDetector.d.ts.map +1 -1
  176. package/src/engine/sound/material/detector/terrain/TerrainSoundMaterialSurfaceDetector.js +6 -6
  177. package/src/core/binary/de_interleave_bits_by_2.d.ts.map +0 -1
  178. package/src/core/geom/3d/sphere/harmonics/sh3_rotate.d.ts +0 -8
  179. package/src/core/geom/3d/sphere/harmonics/sh3_rotate.d.ts.map +0 -1
  180. package/src/core/math/vector_nd_dot.d.ts.map +0 -1
  181. package/src/core/math/vector_nd_normalize.d.ts.map +0 -1
  182. package/src/core/math/vector_nd_normalize.spec.d.ts +0 -2
  183. package/src/core/math/vector_nd_normalize.spec.d.ts.map +0 -1
  184. package/src/engine/graphics/sh3/path_tracer/GeometryBVHBatched.d.ts.map +0 -1
  185. /package/src/core/binary/{de_interleave_bits_by_2.js → de_interleave_2_bits.js} +0 -0
package/build/meep.cjs CHANGED
@@ -557,7 +557,7 @@ assert.isArray = function (value, name = 'value') {
557
557
 
558
558
  /**
559
559
  * @template T
560
- * @param {ArrayLike<T>|T[]} value
560
+ * @param {ArrayLike<T>|T[]|Uint32Array|Float32Array} value
561
561
  * @param {string} name
562
562
  */
563
563
  assert.isArrayLike = function (value, name = 'value') {
@@ -3608,7 +3608,7 @@ let Quaternion$1 = class Quaternion {
3608
3608
  /**
3609
3609
  *
3610
3610
  * @param {Quaternion} other
3611
- * @param {number} max_delta
3611
+ * @param {number} max_delta in radians
3612
3612
  */
3613
3613
  rotateTowards(other, max_delta) {
3614
3614
  Quaternion.rotateTowards(this, this, other, max_delta);
@@ -4987,6 +4987,19 @@ class Transform {
4987
4987
  return result;
4988
4988
  }
4989
4989
 
4990
+ /**
4991
+ *
4992
+ * @param {number[]|Float32Array} mat
4993
+ * @returns {Transform}
4994
+ */
4995
+ static fromMatrix(mat) {
4996
+ const result = new Transform();
4997
+
4998
+ result.fromMatrix4(mat);
4999
+
5000
+ return result;
5001
+ }
5002
+
4990
5003
  /**
4991
5004
  * Multiply two transforms, result it written into this one
4992
5005
  * @param {Transform} a
@@ -5000,17 +5013,18 @@ class Transform {
5000
5013
 
5001
5014
  /**
5002
5015
  *
5003
- * @param {mat4|number[]|Float32Array} m
5016
+ * @param {mat4|number[]|Float32Array} matrix
5004
5017
  */
5005
- fromMatrix4(m) {
5018
+ fromMatrix4(matrix) {
5019
+
5006
5020
  // we know we are changing the matrix, so we're going to need to disable the flag that sets matrix from position/rotation/scale changes
5007
5021
  const ad = this.getFlag(TransformFlags.AutomaticChangeDetection);
5008
5022
 
5009
5023
  this.clearFlag(TransformFlags.AutomaticChangeDetection);
5010
5024
 
5011
- this.matrix.set(m);
5025
+ this.matrix.set(matrix);
5012
5026
 
5013
- decompose_matrix_4_array(m, this.position, this.rotation, this.scale);
5027
+ decompose_matrix_4_array(matrix, this.position, this.rotation, this.scale);
5014
5028
 
5015
5029
  // restore value of the flag
5016
5030
  this.writeFlag(TransformFlags.AutomaticChangeDetection, ad);
@@ -59941,7 +59955,7 @@ const DEFAULT_INITIAL_CAPACITY_POWER = 4;
59941
59955
  * @readonly
59942
59956
  * @type {number}
59943
59957
  */
59944
- const DEFAULT_INITIAL_CAPACITY = 2 ** DEFAULT_INITIAL_CAPACITY_POWER;
59958
+ const DEFAULT_INITIAL_CAPACITY$1 = 2 ** DEFAULT_INITIAL_CAPACITY_POWER;
59945
59959
 
59946
59960
  /**
59947
59961
  * @readonly
@@ -60070,7 +60084,7 @@ class HashMap {
60070
60084
  constructor({
60071
60085
  keyHashFunction = invokeObjectHash,
60072
60086
  keyEqualityFunction = invokeObjectEquals,
60073
- capacity = DEFAULT_INITIAL_CAPACITY,
60087
+ capacity = DEFAULT_INITIAL_CAPACITY$1,
60074
60088
  loadFactor = DEFAULT_LOAD_FACTOR
60075
60089
  } = {}) {
60076
60090
 
@@ -69343,6 +69357,36 @@ function computeSystemName(system) {
69343
69357
  return system.constructor.name;
69344
69358
  }
69345
69359
 
69360
+ /**
69361
+ *
69362
+ * @param {Object3D} object
69363
+ */
69364
+ function threeUpdateMatrix(object) {
69365
+ object.updateMatrix();
69366
+
69367
+ const children = object.children;
69368
+ for (let i = 0, childCount = children.length; i < childCount; i++) {
69369
+ const child = children[i];
69370
+
69371
+ threeUpdateMatrix(child);
69372
+ }
69373
+ }
69374
+
69375
+ /**
69376
+ *
69377
+ * @param {Object3D} object3
69378
+ */
69379
+ function threeUpdateTransform(object3) {
69380
+
69381
+ /**
69382
+ signal that transformation matrix should be updated
69383
+ @see https://threejs.org/docs/index.html#api/core/Object3D.matrixWorldNeedsUpdate
69384
+ */
69385
+ threeUpdateMatrix(object3);
69386
+
69387
+ object3.updateMatrixWorld(false);
69388
+ }
69389
+
69346
69390
  /**
69347
69391
  *
69348
69392
  * @param {Camera} c
@@ -70089,50 +70133,43 @@ function set_camera_aspect_ratio(camera, width, height) {
70089
70133
 
70090
70134
  /**
70091
70135
  *
70092
- * @param {Object3D} object
70136
+ * @param {Camera} camera
70093
70137
  */
70094
- function threeUpdateMatrix(object) {
70095
- object.updateMatrix();
70138
+ function update_camera_transform(camera) {
70096
70139
 
70097
- const children = object.children;
70098
- for (let i = 0, childCount = children.length; i < childCount; i++) {
70099
- const child = children[i];
70140
+ const three_camera = camera.object;
70100
70141
 
70101
- threeUpdateMatrix(child);
70142
+ if (three_camera === null) {
70143
+ return;
70102
70144
  }
70145
+
70146
+ three_camera.updateProjectionMatrix();
70147
+ threeUpdateTransform(three_camera);
70103
70148
  }
70104
70149
 
70105
70150
  /**
70106
70151
  *
70107
- * @param {Object3D} object3
70152
+ * @param {THREE.Camera} object
70153
+ * @param {Quaternion} rotation
70108
70154
  */
70109
- function threeUpdateTransform(object3) {
70155
+ function three_camera_set_transform_rotation(object, rotation) {
70110
70156
 
70111
- /**
70112
- signal that transformation matrix should be updated
70113
- @see https://threejs.org/docs/index.html#api/core/Object3D.matrixWorldNeedsUpdate
70157
+ /*
70158
+ NOTE: I'm not sure why, but three.js camera points in the opposite direction to normal objects
70159
+ See: https://github.com/mrdoob/three.js/blob/412b99a7f26e117ea97f40eb53d010ab81aa3279/src/core/Object3D.js#L282
70114
70160
  */
70115
- threeUpdateMatrix(object3);
70116
70161
 
70117
- object3.updateMatrixWorld(false);
70118
- }
70119
-
70120
- /**
70121
- *
70122
- * @param {Camera} camera
70123
- */
70124
- function update_camera_transform(camera) {
70162
+ invertQuaternionOrientation(object.quaternion, rotation);
70125
70163
 
70126
- const three_camera = camera.object;
70164
+ object.rotation.setFromQuaternion(object.quaternion);
70127
70165
 
70128
- if (three_camera === null) {
70129
- return;
70130
- }
70166
+ // rotation.__setThreeEuler(camera.object.rotation); // seems unnecessary, based on Object3D.lookAt implementation
70167
+ // camera.object.quaternion.set(rotation.x, rotation.y, rotation.z, rotation.w);
70168
+
70169
+ object.updateProjectionMatrix();
70170
+ threeUpdateTransform(object);
70171
+ }
70131
70172
 
70132
- three_camera.updateProjectionMatrix();
70133
- threeUpdateTransform(three_camera);
70134
- }
70135
-
70136
70173
  class CameraSystem extends System {
70137
70174
  /**
70138
70175
  *
@@ -70221,19 +70258,7 @@ class CameraSystem extends System {
70221
70258
  function synchronizeRotation() {
70222
70259
  const rotation = transform.rotation;
70223
70260
 
70224
- /*
70225
- NOTE: I'm not sure why, but three.js camera points in the opposite direction to normal objects
70226
- See: https://github.com/mrdoob/three.js/blob/412b99a7f26e117ea97f40eb53d010ab81aa3279/src/core/Object3D.js#L282
70227
- */
70228
-
70229
- invertQuaternionOrientation(camera.object.quaternion, rotation);
70230
-
70231
- camera.object.rotation.setFromQuaternion(camera.object.quaternion);
70232
-
70233
- // rotation.__setThreeEuler(camera.object.rotation); // seems unnecessary, based on Object3D.lookAt implementation
70234
- // camera.object.quaternion.set(rotation.x, rotation.y, rotation.z, rotation.w);
70235
-
70236
- update_camera_transform(camera);
70261
+ three_camera_set_transform_rotation(camera.object, rotation);
70237
70262
  }
70238
70263
 
70239
70264
  function rebuild() {
@@ -70752,16 +70777,25 @@ const EntityFlags = {
70752
70777
  WatchDestruction: 4
70753
70778
  };
70754
70779
 
70780
+ /**
70781
+ * Align to the nearest number divisible by 32, rounding up
70782
+ * @param {number} n
70783
+ * @returns {number}
70784
+ */
70785
+ function align_32(n) {
70786
+ return ((n + 31) >>> 5) << 5
70787
+ }
70788
+
70755
70789
  /**
70756
70790
  * de Bruijn sequence
70757
70791
  * @see https://graphics.stanford.edu/~seander/bithacks.html
70758
70792
  * @type {Uint8Array}
70759
70793
  */
70760
- const msb_lut = new Uint8Array([
70794
+ const msb_lut_de_bruijn = new Uint8Array([
70761
70795
  0, 1, 28, 2, 29, 14, 24, 3, 30, 22, 20, 15, 25, 17, 4, 8,
70762
70796
  31, 27, 13, 23, 21, 19, 16, 7, 26, 12, 18, 6, 11, 5, 10, 9
70763
- ]);
70764
-
70797
+ ]);
70798
+
70765
70799
  /**
70766
70800
  * Get index of the least significant set bit
70767
70801
  * Also known as ctz32 or "count trailing zeroes"
@@ -70770,9 +70804,9 @@ const msb_lut = new Uint8Array([
70770
70804
  * @returns {number}
70771
70805
  */
70772
70806
  function lsb_32(v) {
70773
- return msb_lut[((v & -v) * 0x077CB531) >>> 27];
70774
- }
70775
-
70807
+ return msb_lut_de_bruijn[((v & -v) * 0x077CB531) >>> 27];
70808
+ }
70809
+
70776
70810
  /**
70777
70811
  * Used for overallocating space when bit set needs to grow
70778
70812
  * @constant
@@ -70793,12 +70827,20 @@ const SHRINK_FACTOR$1 = 0.5;
70793
70827
  */
70794
70828
  const RESIZE_COUNT_THRESHOLD = 128;
70795
70829
 
70830
+ /**
70831
+ * @readonly
70832
+ * @type {number}
70833
+ */
70834
+ const DEFAULT_INITIAL_CAPACITY = 64;
70835
+
70796
70836
  class BitSet {
70797
70837
  /**
70798
70838
  * Dynamically sized bit field
70799
70839
  * @constructor
70840
+ * @param {number} [initial_capacity]
70800
70841
  */
70801
- constructor() {
70842
+ constructor(initial_capacity = DEFAULT_INITIAL_CAPACITY) {
70843
+
70802
70844
  /**
70803
70845
  * Number of bits currently in use
70804
70846
  * @private
@@ -70811,7 +70853,7 @@ class BitSet {
70811
70853
  * @private
70812
70854
  * @type {number}
70813
70855
  */
70814
- this.__capacity = 64;
70856
+ this.__capacity = align_32(initial_capacity);
70815
70857
 
70816
70858
  /**
70817
70859
  * Uint32-backed storage
@@ -71337,9 +71379,7 @@ class BitSet {
71337
71379
  * @returns {BitSet}
71338
71380
  */
71339
71381
  static fixedSize(x) {
71340
- const r = new BitSet();
71341
-
71342
- r.setCapacity(x);
71382
+ const r = new BitSet(x);
71343
71383
 
71344
71384
  //prevent resizing
71345
71385
  r.__shrinkFactor = 0;