@woosh/meep-engine 2.109.6 → 2.109.8

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 (180) hide show
  1. package/build/bundle-worker-terrain.js +1 -1
  2. package/build/meep.cjs +203 -174
  3. package/build/meep.min.js +1 -1
  4. package/build/meep.module.js +203 -174
  5. package/editor/tools/v2/TransformControls.js +39 -33
  6. package/package.json +1 -1
  7. package/src/core/bvh2/bvh3/BVH.d.ts.map +1 -1
  8. package/src/core/bvh2/bvh3/BVH.js +8 -0
  9. package/src/core/bvh2/bvh3/ebvh_build_for_geometry_morton.d.ts.map +1 -1
  10. package/src/core/bvh2/bvh3/ebvh_build_for_geometry_morton.js +11 -9
  11. package/src/core/geom/3d/Ray3.js +1 -1
  12. package/src/core/geom/3d/aabb/AABB3.js +1 -1
  13. package/src/core/geom/3d/normal/octahedron/decode_octahedron_to_unit.d.ts +4 -4
  14. package/src/core/geom/3d/normal/octahedron/decode_octahedron_to_unit.d.ts.map +1 -1
  15. package/src/core/geom/3d/normal/octahedron/decode_octahedron_to_unit.js +15 -11
  16. package/src/core/geom/3d/normal/octahedron/encode_unit_to_octahedron.d.ts.map +1 -1
  17. package/src/core/geom/3d/normal/octahedron/encode_unit_to_octahedron.js +13 -7
  18. package/src/core/geom/3d/normal/octahedron/encoding.spec.js +26 -1
  19. package/src/core/geom/3d/normal/octahedron/prototype.d.ts +2 -0
  20. package/src/core/geom/3d/normal/octahedron/prototype.d.ts.map +1 -0
  21. package/src/core/geom/3d/normal/octahedron/prototype.js +226 -0
  22. package/src/core/geom/3d/sphere/harmonics/sh3_rotate_bl.d.ts +1 -1
  23. package/src/core/geom/3d/sphere/harmonics/sh3_rotate_bl.js +4 -4
  24. package/src/core/geom/3d/tetrahedra/TetrahedralMesh.d.ts +3 -3
  25. package/src/core/geom/3d/tetrahedra/TetrahedralMesh.d.ts.map +1 -1
  26. package/src/core/geom/3d/tetrahedra/TetrahedralMesh.js +10 -5
  27. package/src/core/geom/3d/tetrahedra/triangle/triangle_encode_rasterized_depth.d.ts +7 -1
  28. package/src/core/geom/3d/tetrahedra/triangle/triangle_encode_rasterized_depth.d.ts.map +1 -1
  29. package/src/core/geom/3d/tetrahedra/triangle/triangle_encode_rasterized_depth.js +6 -0
  30. package/src/core/geom/vec3/v3_distance.d.ts.map +1 -1
  31. package/src/core/geom/vec3/v3_distance.js +5 -5
  32. package/src/core/geometry/3d/tetrahedra/tetrahedral_mesh_find_tets_attached_to_vertex.d.ts +10 -0
  33. package/src/core/geometry/3d/tetrahedra/tetrahedral_mesh_find_tets_attached_to_vertex.d.ts.map +1 -0
  34. package/src/core/geometry/3d/tetrahedra/tetrahedral_mesh_find_tets_attached_to_vertex.js +34 -0
  35. package/src/core/model/node-graph/DataType.d.ts.map +1 -1
  36. package/src/core/model/node-graph/DataType.js +16 -10
  37. package/src/core/model/node-graph/ParametricDataType.d.ts +34 -0
  38. package/src/core/model/node-graph/ParametricDataType.d.ts.map +1 -0
  39. package/src/core/model/node-graph/ParametricDataType.js +63 -0
  40. package/src/core/model/node-graph/json/serializeNodeGraphToJSON.d.ts +5 -1
  41. package/src/core/model/node-graph/json/serializeNodeGraphToJSON.d.ts.map +1 -1
  42. package/src/core/model/node-graph/json/serializeNodeGraphToJSON.js +11 -6
  43. package/src/engine/asset/loaders/AssetLoader.d.ts.map +1 -1
  44. package/src/engine/asset/loaders/AssetLoader.js +1 -1
  45. package/src/engine/asset/loaders/material/computeTextureEquality.d.ts.map +1 -1
  46. package/src/engine/asset/loaders/material/computeTextureEquality.js +6 -1
  47. package/src/engine/asset/loaders/material/computeTextureHash.d.ts.map +1 -1
  48. package/src/engine/asset/loaders/material/computeTextureHash.js +8 -3
  49. package/src/engine/graphics/geometry/instancing/InstancedMeshGroup.d.ts.map +1 -1
  50. package/src/engine/graphics/geometry/instancing/InstancedMeshGroup.js +9 -15
  51. package/src/engine/graphics/geometry/instancing/geometry_copy.d.ts +7 -0
  52. package/src/engine/graphics/geometry/instancing/geometry_copy.d.ts.map +1 -0
  53. package/src/engine/graphics/geometry/instancing/geometry_copy.js +15 -0
  54. package/src/engine/graphics/impostors/octahedral/ImpostorBaker.d.ts.map +1 -1
  55. package/src/engine/graphics/impostors/octahedral/ImpostorBaker.js +28 -20
  56. package/src/engine/graphics/impostors/octahedral/ImpostorCaptureType.d.ts +1 -0
  57. package/src/engine/graphics/impostors/octahedral/ImpostorCaptureType.d.ts.map +1 -1
  58. package/src/engine/graphics/impostors/octahedral/ImpostorCaptureType.js +4 -0
  59. package/src/engine/graphics/impostors/octahedral/grid/OctahedralUvEncoder.js +6 -6
  60. package/src/engine/graphics/impostors/octahedral/prototypeBaker.js +16 -7
  61. package/src/engine/graphics/impostors/octahedral/util/build_cutout_from_atlas_by_alpha.d.ts +3 -2
  62. package/src/engine/graphics/impostors/octahedral/util/build_cutout_from_atlas_by_alpha.d.ts.map +1 -1
  63. package/src/engine/graphics/impostors/octahedral/util/build_cutout_from_atlas_by_alpha.js +25 -14
  64. package/src/engine/graphics/render/visibility/hiz/buildCanvasViewFromTexture.js +1 -0
  65. package/src/engine/graphics/sh3/gi/material/MaterialTransformer.d.ts.map +1 -1
  66. package/src/engine/graphics/sh3/gi/material/MaterialTransformer.js +59 -37
  67. package/src/engine/graphics/sh3/gi/material/common.glsl +484 -0
  68. package/src/engine/graphics/sh3/gi/material/makeLookupTexture3D.d.ts +8 -0
  69. package/src/engine/graphics/sh3/gi/material/makeLookupTexture3D.d.ts.map +1 -0
  70. package/src/engine/graphics/sh3/gi/material/makeLookupTexture3D.js +35 -0
  71. package/src/engine/graphics/sh3/gi/material/makeOctahedralDepthAtlas.d.ts +8 -0
  72. package/src/engine/graphics/sh3/gi/material/makeOctahedralDepthAtlas.d.ts.map +1 -0
  73. package/src/engine/graphics/sh3/gi/material/makeOctahedralDepthAtlas.js +28 -0
  74. package/src/engine/graphics/sh3/gi/material/space_fragment/build_fragment_shader.d.ts.map +1 -0
  75. package/src/engine/graphics/sh3/gi/material/space_fragment/build_fragment_shader.js +51 -0
  76. package/src/engine/graphics/sh3/gi/material/space_fragment/build_vertex_shader.d.ts.map +1 -0
  77. package/src/engine/graphics/sh3/gi/material/space_fragment/build_vertex_shader.js +29 -0
  78. package/src/engine/graphics/sh3/gi/material/space_fragment/space_fragment_transform_shader.d.ts +9 -0
  79. package/src/engine/graphics/sh3/gi/material/space_fragment/space_fragment_transform_shader.d.ts.map +1 -0
  80. package/src/engine/graphics/sh3/gi/material/space_fragment/space_fragment_transform_shader.js +12 -0
  81. package/src/engine/graphics/sh3/gi/material/space_vertex/build_fragment_shader.d.ts +6 -0
  82. package/src/engine/graphics/sh3/gi/material/space_vertex/build_fragment_shader.d.ts.map +1 -0
  83. package/src/engine/graphics/sh3/gi/material/space_vertex/build_fragment_shader.js +26 -0
  84. package/src/engine/graphics/sh3/gi/material/space_vertex/build_vertex_shader.d.ts +6 -0
  85. package/src/engine/graphics/sh3/gi/material/space_vertex/build_vertex_shader.d.ts.map +1 -0
  86. package/src/engine/graphics/sh3/gi/material/space_vertex/build_vertex_shader.js +62 -0
  87. package/src/engine/graphics/sh3/gi/material/space_vertex/preable.frag.glsl +43 -0
  88. package/src/engine/graphics/sh3/gi/material/space_vertex/preable.vert.glsl +9 -0
  89. package/src/engine/graphics/sh3/gi/material/space_vertex/space_vertex_transform_shader.d.ts +9 -0
  90. package/src/engine/graphics/sh3/gi/material/space_vertex/space_vertex_transform_shader.d.ts.map +1 -0
  91. package/src/engine/graphics/sh3/gi/material/space_vertex/space_vertex_transform_shader.js +12 -0
  92. package/src/engine/graphics/sh3/lpv/LightProbeVolume.d.ts +2 -0
  93. package/src/engine/graphics/sh3/lpv/LightProbeVolume.d.ts.map +1 -1
  94. package/src/engine/graphics/sh3/lpv/LightProbeVolume.js +35 -3
  95. package/src/engine/graphics/sh3/lpv/LightProbeVolumeBaker.d.ts.map +1 -1
  96. package/src/engine/graphics/sh3/lpv/LightProbeVolumeBaker.js +26 -9
  97. package/src/engine/graphics/sh3/lpv/PathTracerProbeRenderer.d.ts +11 -1
  98. package/src/engine/graphics/sh3/lpv/PathTracerProbeRenderer.d.ts.map +1 -1
  99. package/src/engine/graphics/sh3/lpv/PathTracerProbeRenderer.js +27 -61
  100. package/src/engine/graphics/sh3/lpv/build_probes_for_scene.d.ts.map +1 -1
  101. package/src/engine/graphics/sh3/lpv/build_probes_for_scene.js +8 -6
  102. package/src/engine/graphics/sh3/lpv/depth/octahedral/OctahedralDepthDebuggerWidget.d.ts +17 -0
  103. package/src/engine/graphics/sh3/lpv/depth/octahedral/OctahedralDepthDebuggerWidget.d.ts.map +1 -0
  104. package/src/engine/graphics/sh3/lpv/depth/octahedral/OctahedralDepthDebuggerWidget.js +100 -0
  105. package/src/engine/graphics/sh3/lpv/depth/octahedral/bake_octahedral_depth_map.d.ts +12 -0
  106. package/src/engine/graphics/sh3/lpv/depth/octahedral/bake_octahedral_depth_map.d.ts.map +1 -0
  107. package/src/engine/graphics/sh3/lpv/depth/octahedral/bake_octahedral_depth_map.js +58 -0
  108. package/src/engine/graphics/sh3/lpv/depth/octahedral/shader/OctahedralDepthVisualizationMaterial.d.ts +11 -0
  109. package/src/engine/graphics/sh3/lpv/depth/octahedral/shader/OctahedralDepthVisualizationMaterial.d.ts.map +1 -0
  110. package/src/engine/graphics/sh3/lpv/depth/octahedral/shader/OctahedralDepthVisualizationMaterial.js +45 -0
  111. package/src/engine/graphics/sh3/lpv/depth/octahedral/shader/visualize.frag.glsl +126 -0
  112. package/src/engine/graphics/sh3/lpv/depth/octahedral/shader/visualize.vert.glsl +10 -0
  113. package/src/engine/graphics/sh3/lpv/depth/octahedral/v2/VLPDepthMapVisualisation.d.ts +13 -0
  114. package/src/engine/graphics/sh3/lpv/depth/octahedral/v2/VLPDepthMapVisualisation.d.ts.map +1 -0
  115. package/src/engine/graphics/sh3/lpv/depth/octahedral/v2/VLPDepthMapVisualisation.js +149 -0
  116. package/src/engine/graphics/sh3/lpv/depth/octahedral/v2/visualise.frag.glsl +161 -0
  117. package/src/engine/graphics/sh3/lpv/depth/octahedral/v2/visualise.vert.glsl +13 -0
  118. package/src/engine/graphics/sh3/lpv/depth/sh3_bake_depth.d.ts.map +1 -0
  119. package/src/engine/graphics/sh3/lpv/{sh3_bake_depth.js → depth/sh3_bake_depth.js} +7 -7
  120. package/src/engine/graphics/sh3/lpv/find_max_depth_radius_for_point.d.ts +8 -0
  121. package/src/engine/graphics/sh3/lpv/find_max_depth_radius_for_point.d.ts.map +1 -0
  122. package/src/engine/graphics/sh3/lpv/find_max_depth_radius_for_point.js +50 -0
  123. package/src/engine/graphics/sh3/lpv/probe_volume_to_textures.d.ts +3 -6
  124. package/src/engine/graphics/sh3/lpv/probe_volume_to_textures.d.ts.map +1 -1
  125. package/src/engine/graphics/sh3/lpv/probe_volume_to_textures.js +34 -58
  126. package/src/engine/graphics/sh3/lpv/serialization/LightProbeVolumeSerializationAdapter.d.ts.map +1 -1
  127. package/src/engine/graphics/sh3/lpv/serialization/LightProbeVolumeSerializationAdapter.js +8 -0
  128. package/src/engine/graphics/sh3/path_tracer/BufferedGeometryBVH.d.ts +2 -2
  129. package/src/engine/graphics/sh3/path_tracer/BufferedGeometryBVH.d.ts.map +1 -1
  130. package/src/engine/graphics/sh3/path_tracer/BufferedGeometryBVH.js +8 -5
  131. package/src/engine/graphics/sh3/path_tracer/populate_path_traced_scene_from_ecd.d.ts +7 -0
  132. package/src/engine/graphics/sh3/path_tracer/populate_path_traced_scene_from_ecd.d.ts.map +1 -0
  133. package/src/engine/graphics/sh3/path_tracer/populate_path_traced_scene_from_ecd.js +50 -0
  134. package/src/engine/graphics/sh3/path_tracer/prototypePathTracer.js +40 -3
  135. package/src/engine/graphics/sh3/path_tracer/sorting/build_bvh_nodes_distances_along_ray.d.ts.map +1 -0
  136. package/src/engine/graphics/sh3/path_tracer/{build_bvh_nodes_distances_along_ray.js → sorting/build_bvh_nodes_distances_along_ray.js} +2 -2
  137. package/src/engine/graphics/sh3/path_tracer/sorting/build_bvh_nodes_distances_sqr_to_point.d.ts.map +1 -0
  138. package/src/engine/graphics/sh3/path_tracer/{build_bvh_nodes_distances_sqr_to_point.js → sorting/build_bvh_nodes_distances_sqr_to_point.js} +2 -2
  139. package/src/engine/graphics/sh3/path_tracer/sorting/sort_bvh_nodes_by_distance_to_point.d.ts.map +1 -0
  140. package/src/engine/graphics/sh3/path_tracer/{sort_bvh_nodes_by_distance_to_point.js → sorting/sort_bvh_nodes_by_distance_to_point.js} +3 -3
  141. package/src/engine/graphics/sh3/prototypeSH3Probe.js +41 -8
  142. package/src/engine/graphics/sh3/shader/SH3VisualisationMaterial.d.ts.map +1 -0
  143. package/src/engine/graphics/sh3/shader/SH3VisualisationMaterial.js +29 -0
  144. package/src/engine/graphics/sh3/shader/visualize.frag.glsl +41 -0
  145. package/src/engine/graphics/sh3/shader/visualize.vert.glsl +9 -0
  146. package/src/engine/graphics/sh3/visualise_spherical_harmonic_sphere.js +1 -1
  147. package/src/engine/graphics/texture/debug_preview_texture.d.ts +8 -0
  148. package/src/engine/graphics/texture/debug_preview_texture.d.ts.map +1 -0
  149. package/src/engine/graphics/texture/debug_preview_texture.js +38 -0
  150. package/src/view/View.d.ts.map +1 -1
  151. package/src/view/View.js +2 -0
  152. package/src/core/geom/3d/sphere/harmonics/sh3_rotate_filament.d.ts +0 -8
  153. package/src/core/geom/3d/sphere/harmonics/sh3_rotate_filament.d.ts.map +0 -1
  154. package/src/core/geom/3d/sphere/harmonics/sh3_rotate_filament.js +0 -32
  155. package/src/core/geom/3d/sphere/harmonics/sh_rotate_band1.d.ts +0 -8
  156. package/src/core/geom/3d/sphere/harmonics/sh_rotate_band1.d.ts.map +0 -1
  157. package/src/core/geom/3d/sphere/harmonics/sh_rotate_band1.js +0 -44
  158. package/src/core/geom/3d/sphere/harmonics/sh_rotate_band2.d.ts +0 -8
  159. package/src/core/geom/3d/sphere/harmonics/sh_rotate_band2.d.ts.map +0 -1
  160. package/src/core/geom/3d/sphere/harmonics/sh_rotate_band2.js +0 -86
  161. package/src/engine/graphics/sh3/SH3VisualisationMaterial.d.ts.map +0 -1
  162. package/src/engine/graphics/sh3/SH3VisualisationMaterial.js +0 -83
  163. package/src/engine/graphics/sh3/gi/material/build_fragment_shader.d.ts.map +0 -1
  164. package/src/engine/graphics/sh3/gi/material/build_fragment_shader.js +0 -71
  165. package/src/engine/graphics/sh3/gi/material/build_vertex_shader.d.ts.map +0 -1
  166. package/src/engine/graphics/sh3/gi/material/build_vertex_shader.js +0 -256
  167. package/src/engine/graphics/sh3/lpv/sh3_bake_depth.d.ts.map +0 -1
  168. package/src/engine/graphics/sh3/path_tracer/build_bvh_nodes_distances_along_ray.d.ts.map +0 -1
  169. package/src/engine/graphics/sh3/path_tracer/build_bvh_nodes_distances_sqr_to_point.d.ts.map +0 -1
  170. package/src/engine/graphics/sh3/path_tracer/ray_reflect.d.ts +0 -2
  171. package/src/engine/graphics/sh3/path_tracer/ray_reflect.d.ts.map +0 -1
  172. package/src/engine/graphics/sh3/path_tracer/ray_reflect.js +0 -27
  173. package/src/engine/graphics/sh3/path_tracer/sort_bvh_nodes_by_distance_to_point.d.ts.map +0 -1
  174. /package/src/engine/graphics/sh3/gi/material/{build_fragment_shader.d.ts → space_fragment/build_fragment_shader.d.ts} +0 -0
  175. /package/src/engine/graphics/sh3/gi/material/{build_vertex_shader.d.ts → space_fragment/build_vertex_shader.d.ts} +0 -0
  176. /package/src/engine/graphics/sh3/lpv/{sh3_bake_depth.d.ts → depth/sh3_bake_depth.d.ts} +0 -0
  177. /package/src/engine/graphics/sh3/path_tracer/{build_bvh_nodes_distances_along_ray.d.ts → sorting/build_bvh_nodes_distances_along_ray.d.ts} +0 -0
  178. /package/src/engine/graphics/sh3/path_tracer/{build_bvh_nodes_distances_sqr_to_point.d.ts → sorting/build_bvh_nodes_distances_sqr_to_point.d.ts} +0 -0
  179. /package/src/engine/graphics/sh3/path_tracer/{sort_bvh_nodes_by_distance_to_point.d.ts → sorting/sort_bvh_nodes_by_distance_to_point.d.ts} +0 -0
  180. /package/src/engine/graphics/sh3/{SH3VisualisationMaterial.d.ts → shader/SH3VisualisationMaterial.d.ts} +0 -0
@@ -52160,6 +52160,14 @@ class BVH {
52160
52160
  return this.__root;
52161
52161
  }
52162
52162
 
52163
+ /**
52164
+ * Make sure you understand what you're doing before using this
52165
+ * @param {number} v
52166
+ */
52167
+ set root(v) {
52168
+ this.__root = v;
52169
+ }
52170
+
52163
52171
  /**
52164
52172
  *
52165
52173
  * @returns {number}
@@ -56720,7 +56728,7 @@ class AABB3 {
56720
56728
 
56721
56729
  /**
56722
56730
  * Get center position of the box
56723
- * @param {Vector3} target where to write result
56731
+ * @param {Vector3} [target] where to write result
56724
56732
  */
56725
56733
  getCenter(target = new Vector3$1()) {
56726
56734
  const x = this.getCenterX();
@@ -68007,7 +68015,7 @@ class AssetLoader {
68007
68015
  *
68008
68016
  * @param {AssetRequestScope} scope
68009
68017
  * @param {string} path
68010
- * @param {function(Asset)} success
68018
+ * @param {function(asset:Asset)} success
68011
68019
  * @param {function} failure
68012
68020
  * @param {function(current:number, total:number)} progress
68013
68021
  */
@@ -75811,6 +75819,125 @@ class GenericRendererAdapter extends AbstractRenderAdapter {
75811
75819
 
75812
75820
  }
75813
75821
 
75822
+ /**
75823
+ *
75824
+ * @param {Plane} plane
75825
+ * @returns {number}
75826
+ */
75827
+ function planeHash(plane) {
75828
+ return mortonEncode_magicbits(plane.normal.x, plane.normal.y, plane.normal.z) ^ plane.constant;
75829
+ }
75830
+
75831
+ /**
75832
+ * @template T
75833
+ * @param {T[]} array
75834
+ * @param {function(T):number} elementHashFunction
75835
+ * @returns {number}
75836
+ */
75837
+ function computeHashArray(array, elementHashFunction) {
75838
+
75839
+ const numArguments = array.length;
75840
+ let hash = numArguments;
75841
+
75842
+ for (let i = 0; i < numArguments; i++) {
75843
+
75844
+ const singleValue = array[i];
75845
+
75846
+ const elementHash = elementHashFunction(singleValue);
75847
+
75848
+ hash = ((hash << 5) - hash) + elementHash;
75849
+ hash |= 0; // Convert to 32bit integer
75850
+ }
75851
+
75852
+ return hash;
75853
+ }
75854
+
75855
+ /**
75856
+ *
75857
+ * @param {THREE.Texture} texture
75858
+ * @return {number}
75859
+ */
75860
+ function textureHashById(texture) {
75861
+ if (texture === undefined || texture === null) {
75862
+ return 0;
75863
+ }
75864
+
75865
+ return texture.id;
75866
+ }
75867
+
75868
+ /**
75869
+ *
75870
+ * @param {THREE.Color} c
75871
+ */
75872
+ function computeHashColor(c) {
75873
+ return c.getHex();
75874
+ }
75875
+
75876
+ /**
75877
+ *
75878
+ * @param {Material|MeshStandardMaterial|ShaderMaterial} material
75879
+ * @returns {number}
75880
+ */
75881
+ function computeMaterialHash(material) {
75882
+
75883
+ let hash = computeHashIntegerArray(
75884
+ computeHashFloat(material.alphaTest),
75885
+ material.blendDst,
75886
+ material.blendDstAlpha === null ? 0 : computeHashFloat(material.blendDstAlpha),
75887
+ material.blendEquation,
75888
+ material.blendEquationAlpha === null ? 0 : computeHashFloat(material.blendEquationAlpha),
75889
+ material.blending,
75890
+ material.blendSrc,
75891
+ material.blendSrcAlpha === null ? 0 : computeHashFloat(material.blendSrcAlpha),
75892
+ material.clipIntersection ? 0 : 1,
75893
+ material.clippingPlanes === null ? 0 : computeHashArray(material.clippingPlanes, planeHash),
75894
+ material.clipShadows ? 0 : 1,
75895
+ material.colorWrite ? 0 : 1,
75896
+ material.depthFunc,
75897
+ material.depthTest ? 0 : 1,
75898
+ material.depthWrite ? 0 : 1,
75899
+ material.fog ? 0 : 1,
75900
+ computeHashFloat(material.opacity),
75901
+ material.polygonOffset ? 0 : 1,
75902
+ computeHashFloat(material.polygonOffsetFactor),
75903
+ computeHashFloat(material.polygonOffsetUnits),
75904
+ computeStringHash(material.precision),
75905
+ material.premultipliedAlpha ? 0 : 1,
75906
+ material.dithering ? 0 : 1,
75907
+ material.flatShading ? 0 : 1,
75908
+ material.side,
75909
+ material.transparent ? 0 : 1,
75910
+ computeStringHash(material.type),
75911
+ material.vertexColors ? 0 : 1,
75912
+ material.visible ? 0 : 1,
75913
+ );
75914
+
75915
+
75916
+ if (material.isMeshStandardMaterial) {
75917
+ hash = computeHashIntegerArray(
75918
+ hash,
75919
+ computeHashColor(material.color),
75920
+ computeHashFloat(material.roughness),
75921
+ computeHashFloat(material.metalness),
75922
+ textureHashById(material.map),
75923
+ textureHashById(material.lightMap),
75924
+ computeHashFloat(material.lightMapIntensity),
75925
+ textureHashById(material.aoMap),
75926
+ computeHashFloat(material.aoMapIntensity),
75927
+ computeHashColor(material.emissive),
75928
+ computeHashFloat(material.emissiveIntensity),
75929
+ textureHashById(material.emissiveMap),
75930
+ computeHashFloat(material.envMapIntensity),
75931
+ textureHashById(material.bumpMap),
75932
+ textureHashById(material.normalMap),
75933
+ );
75934
+ } else if (material.isShaderMaterial) {
75935
+ hash ^= material.lights ? 0 : 1;
75936
+ }
75937
+
75938
+ return hash;
75939
+ }
75940
+
75814
75941
  class TextureAttachment {
75815
75942
  /**
75816
75943
  * @template T
@@ -75972,6 +76099,46 @@ const TextureAttachmentsByMaterialType = {
75972
76099
 
75973
76100
  TextureAttachmentsByMaterialType.MeshPhysicalMaterial = TextureAttachmentsByMaterialType.MeshStandardMaterial;
75974
76101
 
76102
+ /**
76103
+ * NOTE: based on https://github.com/garycourt/murmurhash-js/blob/master/murmurhash3_gc.js
76104
+ * @param {Uint32Array} key
76105
+ * @param {number} seed
76106
+ * @returns {number}
76107
+ */
76108
+ function murmur3_32(key, seed) {
76109
+ let h1 = seed;
76110
+ let k1;
76111
+ let i = 0;
76112
+
76113
+ const key_length = key.length;
76114
+
76115
+ while (i < key_length) {
76116
+ k1 = key[i];
76117
+ ++i;
76118
+
76119
+ k1 = ((((k1 & 0xffff) * 0xcc9e2d51) + ((((k1 >>> 16) * 0xcc9e2d51) & 0xffff) << 16)));
76120
+ k1 = (k1 << 15) | (k1 >>> 17);
76121
+ k1 = ((((k1 & 0xffff) * 0x1b873593) + ((((k1 >>> 16) * 0x1b873593) & 0xffff) << 16)));
76122
+
76123
+ h1 ^= k1;
76124
+ h1 = (h1 << 13) | (h1 >>> 19);
76125
+ h1 = ((((h1 & 0xffff) * 5) + ((((h1 >>> 16) * 5) & 0xffff) << 16)));
76126
+ h1 = (((h1 & 0xffff) + 0x6b64) + ((((h1 >>> 16) + 0xe654) & 0xffff) << 16));
76127
+ }
76128
+
76129
+ // mix in array length
76130
+ h1 ^= key_length;
76131
+
76132
+ h1 ^= h1 >>> 16;
76133
+ h1 = (((h1 & 0xffff) * 0x85ebca6b) + ((((h1 >>> 16) * 0x85ebca6b) & 0xffff) << 16));
76134
+ h1 ^= h1 >>> 13;
76135
+ h1 = ((((h1 & 0xffff) * 0xc2b2ae35) + ((((h1 >>> 16) * 0xc2b2ae35) & 0xffff) << 16)));
76136
+ h1 ^= h1 >>> 16;
76137
+
76138
+ // cast to uint32
76139
+ return h1 >>> 0;
76140
+ }
76141
+
75975
76142
  /**
75976
76143
  * Transfer bitmap contents to Sampler2D, effectively moving data to CPU, making it readable
75977
76144
  * @param {WebGL2RenderingContext} gl
@@ -76163,46 +76330,6 @@ function computeImageBitmapHash(bitmap) {
76163
76330
  return hash;
76164
76331
  }
76165
76332
 
76166
- /**
76167
- * NOTE: based on https://github.com/garycourt/murmurhash-js/blob/master/murmurhash3_gc.js
76168
- * @param {Uint32Array} key
76169
- * @param {number} seed
76170
- * @returns {number}
76171
- */
76172
- function murmur3_32(key, seed) {
76173
- let h1 = seed;
76174
- let k1;
76175
- let i = 0;
76176
-
76177
- const key_length = key.length;
76178
-
76179
- while (i < key_length) {
76180
- k1 = key[i];
76181
- ++i;
76182
-
76183
- k1 = ((((k1 & 0xffff) * 0xcc9e2d51) + ((((k1 >>> 16) * 0xcc9e2d51) & 0xffff) << 16)));
76184
- k1 = (k1 << 15) | (k1 >>> 17);
76185
- k1 = ((((k1 & 0xffff) * 0x1b873593) + ((((k1 >>> 16) * 0x1b873593) & 0xffff) << 16)));
76186
-
76187
- h1 ^= k1;
76188
- h1 = (h1 << 13) | (h1 >>> 19);
76189
- h1 = ((((h1 & 0xffff) * 5) + ((((h1 >>> 16) * 5) & 0xffff) << 16)));
76190
- h1 = (((h1 & 0xffff) + 0x6b64) + ((((h1 >>> 16) + 0xe654) & 0xffff) << 16));
76191
- }
76192
-
76193
- // mix in array length
76194
- h1 ^= key_length;
76195
-
76196
- h1 ^= h1 >>> 16;
76197
- h1 = (((h1 & 0xffff) * 0x85ebca6b) + ((((h1 >>> 16) * 0x85ebca6b) & 0xffff) << 16));
76198
- h1 ^= h1 >>> 13;
76199
- h1 = ((((h1 & 0xffff) * 0xc2b2ae35) + ((((h1 >>> 16) * 0xc2b2ae35) & 0xffff) << 16)));
76200
- h1 ^= h1 >>> 16;
76201
-
76202
- // cast to uint32
76203
- return h1 >>> 0;
76204
- }
76205
-
76206
76333
  /**
76207
76334
  *
76208
76335
  * @param {Vector2} v
@@ -76234,7 +76361,12 @@ function computeImageDataHash(image) {
76234
76361
 
76235
76362
  let result = 0;
76236
76363
 
76237
- if (image instanceof ImageBitmap) {
76364
+ if (
76365
+ // check that browser/environment has the class at all to avoid potential exceptions
76366
+ // Required for Safari below version 15.6
76367
+ ImageBitmap !== undefined
76368
+ && (image instanceof ImageBitmap)
76369
+ ) {
76238
76370
  result = computeImageBitmapHash(image);
76239
76371
  } else if (image instanceof HTMLImageElement) {
76240
76372
  result = computeStringHash(image.src);
@@ -76430,7 +76562,12 @@ function textureImagesEqual(a, b) {
76430
76562
  return false;
76431
76563
  }
76432
76564
 
76433
- if (a instanceof ImageBitmap && b instanceof ImageBitmap) {
76565
+ if (
76566
+ // check that browser/environment has the class at all to avoid potential exceptions
76567
+ // Required for Safari below version 15.6
76568
+ ImageBitmap !== undefined
76569
+ && (a instanceof ImageBitmap && b instanceof ImageBitmap)
76570
+ ) {
76434
76571
  return computeImageBitmapEquality(a, b);
76435
76572
  }
76436
76573
 
@@ -76534,125 +76671,6 @@ function textureMipmapEqual(a, b) {
76534
76671
  return fastArrayEquals(aData, bData);
76535
76672
  }
76536
76673
 
76537
- /**
76538
- *
76539
- * @param {Plane} plane
76540
- * @returns {number}
76541
- */
76542
- function planeHash(plane) {
76543
- return mortonEncode_magicbits(plane.normal.x, plane.normal.y, plane.normal.z) ^ plane.constant;
76544
- }
76545
-
76546
- /**
76547
- * @template T
76548
- * @param {T[]} array
76549
- * @param {function(T):number} elementHashFunction
76550
- * @returns {number}
76551
- */
76552
- function computeHashArray(array, elementHashFunction) {
76553
-
76554
- const numArguments = array.length;
76555
- let hash = numArguments;
76556
-
76557
- for (let i = 0; i < numArguments; i++) {
76558
-
76559
- const singleValue = array[i];
76560
-
76561
- const elementHash = elementHashFunction(singleValue);
76562
-
76563
- hash = ((hash << 5) - hash) + elementHash;
76564
- hash |= 0; // Convert to 32bit integer
76565
- }
76566
-
76567
- return hash;
76568
- }
76569
-
76570
- /**
76571
- *
76572
- * @param {THREE.Texture} texture
76573
- * @return {number}
76574
- */
76575
- function textureHashById(texture) {
76576
- if (texture === undefined || texture === null) {
76577
- return 0;
76578
- }
76579
-
76580
- return texture.id;
76581
- }
76582
-
76583
- /**
76584
- *
76585
- * @param {THREE.Color} c
76586
- */
76587
- function computeHashColor(c) {
76588
- return c.getHex();
76589
- }
76590
-
76591
- /**
76592
- *
76593
- * @param {Material|MeshStandardMaterial|ShaderMaterial} material
76594
- * @returns {number}
76595
- */
76596
- function computeMaterialHash(material) {
76597
-
76598
- let hash = computeHashIntegerArray(
76599
- computeHashFloat(material.alphaTest),
76600
- material.blendDst,
76601
- material.blendDstAlpha === null ? 0 : computeHashFloat(material.blendDstAlpha),
76602
- material.blendEquation,
76603
- material.blendEquationAlpha === null ? 0 : computeHashFloat(material.blendEquationAlpha),
76604
- material.blending,
76605
- material.blendSrc,
76606
- material.blendSrcAlpha === null ? 0 : computeHashFloat(material.blendSrcAlpha),
76607
- material.clipIntersection ? 0 : 1,
76608
- material.clippingPlanes === null ? 0 : computeHashArray(material.clippingPlanes, planeHash),
76609
- material.clipShadows ? 0 : 1,
76610
- material.colorWrite ? 0 : 1,
76611
- material.depthFunc,
76612
- material.depthTest ? 0 : 1,
76613
- material.depthWrite ? 0 : 1,
76614
- material.fog ? 0 : 1,
76615
- computeHashFloat(material.opacity),
76616
- material.polygonOffset ? 0 : 1,
76617
- computeHashFloat(material.polygonOffsetFactor),
76618
- computeHashFloat(material.polygonOffsetUnits),
76619
- computeStringHash(material.precision),
76620
- material.premultipliedAlpha ? 0 : 1,
76621
- material.dithering ? 0 : 1,
76622
- material.flatShading ? 0 : 1,
76623
- material.side,
76624
- material.transparent ? 0 : 1,
76625
- computeStringHash(material.type),
76626
- material.vertexColors ? 0 : 1,
76627
- material.visible ? 0 : 1,
76628
- );
76629
-
76630
-
76631
- if (material.isMeshStandardMaterial) {
76632
- hash = computeHashIntegerArray(
76633
- hash,
76634
- computeHashColor(material.color),
76635
- computeHashFloat(material.roughness),
76636
- computeHashFloat(material.metalness),
76637
- textureHashById(material.map),
76638
- textureHashById(material.lightMap),
76639
- computeHashFloat(material.lightMapIntensity),
76640
- textureHashById(material.aoMap),
76641
- computeHashFloat(material.aoMapIntensity),
76642
- computeHashColor(material.emissive),
76643
- computeHashFloat(material.emissiveIntensity),
76644
- textureHashById(material.emissiveMap),
76645
- computeHashFloat(material.envMapIntensity),
76646
- textureHashById(material.bumpMap),
76647
- textureHashById(material.normalMap),
76648
- );
76649
- } else if (material.isShaderMaterial) {
76650
- hash ^= material.lights ? 0 : 1;
76651
- }
76652
-
76653
- return hash;
76654
- }
76655
-
76656
76674
  /**
76657
76675
  *
76658
76676
  * @param {Plane} a
@@ -77004,6 +77022,22 @@ function composeCompile(previous, next) {
77004
77022
  return result_function;
77005
77023
  }
77006
77024
 
77025
+ /**
77026
+ *
77027
+ * @param {BufferGeometry} target
77028
+ * @param {BufferGeometry} source
77029
+ */
77030
+ function geometry_copy(target, source) {
77031
+ target.index = source.index;
77032
+ for (let attributeName in source.attributes) {
77033
+ if (!source.attributes.hasOwnProperty(attributeName)) {
77034
+ continue;
77035
+ }
77036
+
77037
+ target.attributes[attributeName] = source.attributes[attributeName];
77038
+ }
77039
+ }
77040
+
77007
77041
  const SHADER_PREAMBLE = `
77008
77042
  #define USE_COLOR_ALPHA
77009
77043
  #define USE_INSTANCING_COLOR
@@ -77574,14 +77608,7 @@ class InstancedMeshGroup {
77574
77608
  geometry.dynamic = true;
77575
77609
 
77576
77610
  //copy instance attributes
77577
- geometry.index = instance.index;
77578
- for (let attributeName in instance.attributes) {
77579
- if (!instance.attributes.hasOwnProperty(attributeName)) {
77580
- continue;
77581
- }
77582
-
77583
- geometry.attributes[attributeName] = instance.attributes[attributeName];
77584
- }
77611
+ geometry_copy(geometry, instance);
77585
77612
 
77586
77613
  //build instanced attributes
77587
77614
  const newTransformArray = new Float32Array(this.capacity * 16);
@@ -106383,9 +106410,11 @@ function v3_morton_encode_transformed(x, y, z, matrix) {
106383
106410
  * @param {number} z1
106384
106411
  * @returns {number}
106385
106412
  */
106386
- function v3_distance(x0, y0, z0, x1, y1, z1) {
106387
-
106388
- return Math.sqrt(v3_distance_sqr(x0, y0, z0, x1, y1, z1));
106413
+ function v3_distance(
106414
+ x0, y0, z0,
106415
+ x1, y1, z1
106416
+ ) {
106417
+ return Math.hypot(x1 - x0, y1 - y0, z1 - z0);
106389
106418
  }
106390
106419
 
106391
106420
  class AbstractTextureAtlas {
@@ -68,6 +68,15 @@ function TranslateHelperGeometry() {
68
68
 
69
69
  }
70
70
 
71
+ /**
72
+ * @enum {string}
73
+ */
74
+ const TransformMode = {
75
+ Scale: 'scale',
76
+ Translate: 'translate',
77
+ Rotate: 'rotate'
78
+ };
79
+
71
80
  class GizmoNode extends EntityNode {
72
81
  constructor() {
73
82
  super();
@@ -221,7 +230,7 @@ class TransformControls extends GizmoNode {
221
230
  defineProperty('object', undefined);
222
231
  defineProperty('enabled', true);
223
232
  defineProperty('axis', null);
224
- defineProperty('mode', 'translate');
233
+ defineProperty('mode', TransformMode.Translate);
225
234
  defineProperty('translationSnap', null);
226
235
  defineProperty('rotationSnap', null);
227
236
  defineProperty('scaleSnap', null);
@@ -393,7 +402,7 @@ class TransformControls extends GizmoNode {
393
402
 
394
403
  let space = this.space;
395
404
 
396
- if (mode === 'scale') {
405
+ if (mode === TransformMode.Scale) {
397
406
 
398
407
  space = 'local';
399
408
 
@@ -415,7 +424,7 @@ class TransformControls extends GizmoNode {
415
424
 
416
425
  this.pointEnd.copy(planeIntersect.contact.position).sub(this.worldPositionStart);
417
426
 
418
- if (mode === 'translate') {
427
+ if (mode === TransformMode.Translate) {
419
428
 
420
429
  // Apply translate
421
430
 
@@ -513,7 +522,7 @@ class TransformControls extends GizmoNode {
513
522
  // write
514
523
  object_transform.position.copy(_tempTransform.position);
515
524
 
516
- } else if (mode === 'scale') {
525
+ } else if (mode === TransformMode.Scale) {
517
526
 
518
527
  if (axis.search('XYZ') !== -1) {
519
528
 
@@ -584,7 +593,7 @@ class TransformControls extends GizmoNode {
584
593
 
585
594
  object_transform.scale.copy(_tempTransform.scale);
586
595
 
587
- } else if (mode === 'rotate') {
596
+ } else if (mode === TransformMode.Rotate) {
588
597
 
589
598
  this._offset.copy(this.pointEnd).sub(this.pointStart);
590
599
 
@@ -1329,40 +1338,40 @@ class TransformControlsGizmo extends GizmoNode {
1329
1338
  */
1330
1339
  this.helper = {};
1331
1340
 
1332
- this.addChild(this.gizmo['translate'] = setupGizmo(gizmoTranslate));
1333
- this.addChild(this.gizmo['rotate'] = setupGizmo(gizmoRotate));
1334
- this.addChild(this.gizmo['scale'] = setupGizmo(gizmoScale));
1335
- this.addChild(this.picker['translate'] = setupGizmo(pickerTranslate));
1336
- this.addChild(this.picker['rotate'] = setupGizmo(pickerRotate));
1337
- this.addChild(this.picker['scale'] = setupGizmo(pickerScale));
1338
- this.addChild(this.helper['translate'] = setupGizmo(helperTranslate));
1339
- this.addChild(this.helper['rotate'] = setupGizmo(helperRotate));
1340
- this.addChild(this.helper['scale'] = setupGizmo(helperScale));
1341
+ this.addChild(this.gizmo[TransformMode.Translate] = setupGizmo(gizmoTranslate));
1342
+ this.addChild(this.gizmo[TransformMode.Rotate] = setupGizmo(gizmoRotate));
1343
+ this.addChild(this.gizmo[TransformMode.Scale] = setupGizmo(gizmoScale));
1344
+ this.addChild(this.picker[TransformMode.Translate] = setupGizmo(pickerTranslate));
1345
+ this.addChild(this.picker[TransformMode.Rotate] = setupGizmo(pickerRotate));
1346
+ this.addChild(this.picker[TransformMode.Scale] = setupGizmo(pickerScale));
1347
+ this.addChild(this.helper[TransformMode.Translate] = setupGizmo(helperTranslate));
1348
+ this.addChild(this.helper[TransformMode.Rotate] = setupGizmo(helperRotate));
1349
+ this.addChild(this.helper[TransformMode.Scale] = setupGizmo(helperScale));
1341
1350
 
1342
1351
  // Pickers should be hidden always
1343
1352
 
1344
- this.picker['translate'].visible = false;
1345
- this.picker['rotate'].visible = false;
1346
- this.picker['scale'].visible = false;
1353
+ this.picker[TransformMode.Translate].visible = false;
1354
+ this.picker[TransformMode.Rotate].visible = false;
1355
+ this.picker[TransformMode.Scale].visible = false;
1347
1356
  }
1348
1357
 
1349
1358
  // updateMatrixWorld will update transformations and appearance of individual handles
1350
1359
 
1351
1360
  update(force) {
1352
1361
 
1353
- const space = (this.mode === 'scale') ? 'local' : this.space; // scale always oriented to local rotation
1362
+ const space = (this.mode === TransformMode.Scale) ? 'local' : this.space; // scale always oriented to local rotation
1354
1363
 
1355
1364
  const quaternion = (space === 'local') ? this.worldQuaternion : _identityQuaternion;
1356
1365
 
1357
1366
  // Show only gizmos for current transform mode
1358
1367
 
1359
- this.gizmo['translate'].visible = this.mode === 'translate';
1360
- this.gizmo['rotate'].visible = this.mode === 'rotate';
1361
- this.gizmo['scale'].visible = this.mode === 'scale';
1368
+ this.gizmo[TransformMode.Translate].visible = this.mode === TransformMode.Translate;
1369
+ this.gizmo[TransformMode.Rotate].visible = this.mode === TransformMode.Rotate;
1370
+ this.gizmo[TransformMode.Scale].visible = this.mode === TransformMode.Scale;
1362
1371
 
1363
- this.helper['translate'].visible = this.mode === 'translate';
1364
- this.helper['rotate'].visible = this.mode === 'rotate';
1365
- this.helper['scale'].visible = this.mode === 'scale';
1372
+ this.helper[TransformMode.Translate].visible = this.mode === TransformMode.Translate;
1373
+ this.helper[TransformMode.Rotate].visible = this.mode === TransformMode.Rotate;
1374
+ this.helper[TransformMode.Scale].visible = this.mode === TransformMode.Scale;
1366
1375
 
1367
1376
  /**
1368
1377
  *
@@ -1521,7 +1530,7 @@ class TransformControlsGizmo extends GizmoNode {
1521
1530
 
1522
1531
  handle.transform.rotation.copy(quaternion);
1523
1532
 
1524
- if (this.mode === 'translate' || this.mode === 'scale') {
1533
+ if (this.mode === TransformMode.Translate || this.mode === TransformMode.Scale) {
1525
1534
 
1526
1535
  // Hide translate and scale axis facing the camera
1527
1536
 
@@ -1594,7 +1603,7 @@ class TransformControlsGizmo extends GizmoNode {
1594
1603
 
1595
1604
  }
1596
1605
 
1597
- } else if (this.mode === 'rotate') {
1606
+ } else if (this.mode === TransformMode.Rotate) {
1598
1607
 
1599
1608
  // Align handles to current local or world rotation
1600
1609
 
@@ -1696,9 +1705,6 @@ class TransformControlsPlane extends GizmoNode {
1696
1705
  this.isTransformControlsPlane = true;
1697
1706
 
1698
1707
  this.type = 'TransformControlsPlane';
1699
-
1700
-
1701
- this.transform.rotation.onChanged.add(console.warn);
1702
1708
  }
1703
1709
 
1704
1710
  update() {
@@ -1709,7 +1715,7 @@ class TransformControlsPlane extends GizmoNode {
1709
1715
 
1710
1716
  transform.position.copy(this.worldPosition);
1711
1717
 
1712
- if (this.mode === 'scale') space = 'local'; // scale always oriented to local rotation
1718
+ if (this.mode === TransformMode.Scale) space = 'local'; // scale always oriented to local rotation
1713
1719
 
1714
1720
  _v1.copy(_unitX).applyQuaternion(space === 'local' ? this.worldQuaternion : _identityQuaternion);
1715
1721
  _v2.copy(_unitY).applyQuaternion(space === 'local' ? this.worldQuaternion : _identityQuaternion);
@@ -1721,8 +1727,8 @@ class TransformControlsPlane extends GizmoNode {
1721
1727
 
1722
1728
  switch (this.mode) {
1723
1729
 
1724
- case 'translate':
1725
- case 'scale':
1730
+ case TransformMode.Translate:
1731
+ case TransformMode.Scale:
1726
1732
  switch (this.axis) {
1727
1733
 
1728
1734
  case 'X':
@@ -1755,7 +1761,7 @@ class TransformControlsPlane extends GizmoNode {
1755
1761
  }
1756
1762
 
1757
1763
  break;
1758
- case 'rotate':
1764
+ case TransformMode.Rotate:
1759
1765
  default:
1760
1766
  // special case for rotate
1761
1767
  _dirVector.set(0, 0, 0);
package/package.json CHANGED
@@ -5,7 +5,7 @@
5
5
  "description": "Fully featured ECS game engine written in JavaScript",
6
6
  "type": "module",
7
7
  "author": "Alexander Goldring",
8
- "version": "2.109.6",
8
+ "version": "2.109.8",
9
9
  "main": "build/meep.module.js",
10
10
  "module": "build/meep.module.js",
11
11
  "exports": {
@@ -1 +1 @@
1
- {"version":3,"file":"BVH.d.ts","sourceRoot":"","sources":["../../../../../src/core/bvh2/bvh3/BVH.js"],"names":[],"mappings":"AAQA,8BAA+B;AAC/B,+BAAgC;AAChC,+BAAgC;AAChC,8BAA+B;AAE/B;;;;;GAKG;AACH,+BAFU,MAAM,CAE+B;AAE/C;;;GAGG;AACH,wBAFU,MAAM,CAEoB;AAcpC;;;;;GAKG;AACH,iCAFU,MAAM,CAEqB;AAgBrC;;;;;;GAMG;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,CAqDlB;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,QAe/B;IAED;;;;OAIG;IACH,kBAHW,MAAM,QACN,MAAM,EAAE,GAAC,UAAU,MAAM,CAAC,QAAM,QAsB1C;IAED;;;;OAIG;IACH,mBAHW,MAAM,QACN,MAAM,EAAE,QAWlB;IAED;;;;;;;;;OASG;IACH,4BARW,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,QAmBhB;IAED;;;;OAIG;IACH,0BAHW,MAAM,GACJ,MAAM,CAoBlB;IAED;;;;;OAKG;IACH,wCAJW,MAAM,WACN,MAAM,GACJ,MAAM,CAoClB;IAED;;;;;OAKG;IACH,oCAJW,MAAM,WACN,MAAM,WACN,MAAM,QAwChB;IAED;;;;OAIG;IACH,kBAHW,MAAM,GACJ,IAAI,CA0GhB;IAED;;;;;OAKG;IACH,wBAqBC;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"}
1
+ {"version":3,"file":"BVH.d.ts","sourceRoot":"","sources":["../../../../../src/core/bvh2/bvh3/BVH.js"],"names":[],"mappings":"AAQA,8BAA+B;AAC/B,+BAAgC;AAChC,+BAAgC;AAChC,8BAA+B;AAE/B;;;;;GAKG;AACH,+BAFU,MAAM,CAE+B;AAE/C;;;GAGG;AACH,wBAFU,MAAM,CAEoB;AAcpC;;;;;GAKG;AACH,iCAFU,MAAM,CAEqB;AAgBrC;;;;;;GAMG;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;IAUnB;;;OAGG;IACH,sBAEC;IAdD;;;OAGG;IACH,mBAEC;IAkBD;;;OAGG;IACH,+BAMC;IAlBD;;;OAGG;IACH,4BAEC;IAcD,wBAgBC;IAED;;;;OAIG;IACH,uBAqBC;IAED;;OAEG;IACH,aAIC;IAED;;;OAGG;IACH,iBAFa,MAAM,CAqDlB;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,QAe/B;IAED;;;;OAIG;IACH,kBAHW,MAAM,QACN,MAAM,EAAE,GAAC,UAAU,MAAM,CAAC,QAAM,QAsB1C;IAED;;;;OAIG;IACH,mBAHW,MAAM,QACN,MAAM,EAAE,QAWlB;IAED;;;;;;;;;OASG;IACH,4BARW,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,QAmBhB;IAED;;;;OAIG;IACH,0BAHW,MAAM,GACJ,MAAM,CAoBlB;IAED;;;;;OAKG;IACH,wCAJW,MAAM,WACN,MAAM,GACJ,MAAM,CAoClB;IAED;;;;;OAKG;IACH,oCAJW,MAAM,WACN,MAAM,WACN,MAAM,QAwChB;IAED;;;;OAIG;IACH,kBAHW,MAAM,GACJ,IAAI,CA0GhB;IAED;;;;;OAKG;IACH,wBAqBC;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"}
@@ -132,6 +132,14 @@ export class BVH {
132
132
  return this.__root;
133
133
  }
134
134
 
135
+ /**
136
+ * Make sure you understand what you're doing before using this
137
+ * @param {number} v
138
+ */
139
+ set root(v) {
140
+ this.__root = v;
141
+ }
142
+
135
143
  /**
136
144
  *
137
145
  * @returns {number}
@@ -1 +1 @@
1
- {"version":3,"file":"ebvh_build_for_geometry_morton.d.ts","sourceRoot":"","sources":["../../../../../src/core/bvh2/bvh3/ebvh_build_for_geometry_morton.js"],"names":[],"mappings":"AAWA;;;;;;;;GAQG;AACH,sEALW,MAAM,EAAE,GAAC,YAAY,kBACrB,MAAM,EAAE,GAAC,YAAY,iBACrB,WAAW,WACX,KAAK,QA0Ff;sBAzGqB,6BAA6B"}
1
+ {"version":3,"file":"ebvh_build_for_geometry_morton.d.ts","sourceRoot":"","sources":["../../../../../src/core/bvh2/bvh3/ebvh_build_for_geometry_morton.js"],"names":[],"mappings":"AAWA;;;;;;;;GAQG;AACH,sEALW,MAAM,EAAE,GAAC,YAAY,kBACrB,MAAM,EAAE,GAAC,YAAY,iBACrB,WAAW,WACX,KAAK,QA4Ff;sBA3GqB,6BAA6B"}