@woosh/meep-engine 3.40.0 → 3.42.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 (539) hide show
  1. package/build/bundle-worker-image-decoder.js +1 -1
  2. package/build/bundle-worker-terrain.js +1 -1
  3. package/editor/selection/editor_pick.d.ts.map +1 -1
  4. package/editor/selection/editor_pick.js +2 -1
  5. package/editor/tools/TransformToolV2.d.ts.map +1 -1
  6. package/editor/tools/TransformToolV2.js +7 -1
  7. package/editor/tools/engine/ToolEngine.d.ts.map +1 -1
  8. package/editor/tools/engine/ToolEngine.js +10 -0
  9. package/editor/tools/v2/TransformControls.d.ts.map +1 -1
  10. package/editor/tools/v2/TransformControls.js +7 -20
  11. package/editor/tools/v2/handle/gizmo_drag_plane.d.ts.map +1 -1
  12. package/editor/tools/v2/handle/gizmo_drag_plane.js +4 -0
  13. package/editor/view/ecs/EntityEditor.d.ts.map +1 -1
  14. package/editor/view/ecs/EntityEditor.js +3 -1
  15. package/editor/view/node-graph/NodeGraphView.d.ts.map +1 -1
  16. package/editor/view/node-graph/NodeGraphView.js +28 -12
  17. package/package.json +1 -1
  18. package/samples/engine/first-scene/index.html +4 -1
  19. package/samples/engine/first-scene/main.js +14 -9
  20. package/src/core/binary/utf8/utf8_decode.js +3 -3
  21. package/src/core/bvh2/binary/2/bvh32_query_user_data_ray.d.ts.map +1 -1
  22. package/src/core/bvh2/binary/2/bvh32_query_user_data_ray.js +112 -113
  23. package/src/core/bvh2/bvh3/ebvh_nodes_sort_sah_local4.js +2 -2
  24. package/src/core/cache/wtinylfu/benchmark/CacheWTinylfu.bench.md +14 -14
  25. package/src/core/collection/RingBuffer.d.ts.map +1 -1
  26. package/src/core/collection/RingBuffer.js +4 -0
  27. package/src/core/collection/array/array_contains_duplicates.d.ts.map +1 -1
  28. package/src/core/collection/array/array_contains_duplicates.js +2 -1
  29. package/src/core/collection/array/array_copy.d.ts.map +1 -1
  30. package/src/core/collection/array/array_copy.js +23 -0
  31. package/src/core/collection/array/typed/sparse_typed_array_hash.d.ts +2 -2
  32. package/src/core/collection/array/typed/sparse_typed_array_hash.d.ts.map +1 -1
  33. package/src/core/collection/array/typed/sparse_typed_array_hash.js +9 -8
  34. package/src/core/collection/array/typed/uint16_array_hash.d.ts +2 -2
  35. package/src/core/collection/array/typed/uint16_array_hash.js +4 -4
  36. package/src/core/collection/array/typed/uint8_array_hash.d.ts +2 -2
  37. package/src/core/collection/array/typed/uint8_array_hash.js +4 -4
  38. package/src/core/collection/array/weightedRandomFromArray.d.ts +1 -0
  39. package/src/core/collection/array/weightedRandomFromArray.d.ts.map +1 -1
  40. package/src/core/collection/array/weightedRandomFromArray.js +9 -1
  41. package/src/core/collection/heap/BinaryHeap.d.ts.map +1 -1
  42. package/src/core/collection/heap/BinaryHeap.js +4 -0
  43. package/src/core/collection/list/List.d.ts.map +1 -1
  44. package/src/core/collection/list/List.js +4 -2
  45. package/src/core/collection/set/ArraySet.js +1 -1
  46. package/src/core/collection/set/HashSet.d.ts +1 -1
  47. package/src/core/collection/set/HashSet.d.ts.map +1 -1
  48. package/src/core/collection/set/HashSet.js +4 -2
  49. package/src/core/debug/matchers/IsEqual.js +1 -1
  50. package/src/core/debug/matchers/IsIterableContaining.d.ts.map +1 -1
  51. package/src/core/debug/matchers/IsIterableContaining.js +61 -74
  52. package/src/core/events/signal/SignalBinding.js +101 -101
  53. package/src/core/function/extractFunctionBody.js +13 -13
  54. package/src/core/function/objectsEqual.d.ts.map +1 -1
  55. package/src/core/function/objectsEqual.js +15 -14
  56. package/src/core/geom/3d/frustum/frustum3_compute_closest_point.d.ts.map +1 -1
  57. package/src/core/geom/3d/frustum/frustum3_compute_closest_point.js +207 -172
  58. package/src/core/geom/3d/gjk/gjk_epa_penetration.d.ts.map +1 -1
  59. package/src/core/geom/3d/gjk/gjk_epa_penetration.js +5 -4
  60. package/src/core/geom/3d/line/line3_compute_segment_point_distance_eikonal.d.ts.map +1 -1
  61. package/src/core/geom/3d/line/line3_compute_segment_point_distance_eikonal.js +8 -2
  62. package/src/core/geom/3d/quaternion/swing_twist_clamp.d.ts +24 -0
  63. package/src/core/geom/3d/quaternion/swing_twist_clamp.d.ts.map +1 -0
  64. package/src/core/geom/3d/quaternion/swing_twist_clamp.js +62 -0
  65. package/src/core/geom/3d/quaternion/swing_twist_compose.d.ts +15 -0
  66. package/src/core/geom/3d/quaternion/swing_twist_compose.d.ts.map +1 -0
  67. package/src/core/geom/3d/quaternion/swing_twist_compose.js +36 -0
  68. package/src/core/geom/3d/quaternion/swing_twist_error.d.ts +39 -0
  69. package/src/core/geom/3d/quaternion/swing_twist_error.d.ts.map +1 -0
  70. package/src/core/geom/3d/quaternion/swing_twist_error.js +85 -0
  71. package/src/core/geom/3d/triangle/tri3_ray_intersection.d.ts +20 -0
  72. package/src/core/geom/3d/triangle/tri3_ray_intersection.d.ts.map +1 -1
  73. package/src/core/geom/3d/triangle/tri3_ray_intersection.js +182 -0
  74. package/src/core/geom/vec3/v3_rigid_align_paired_unit_vectors.d.ts +11 -6
  75. package/src/core/geom/vec3/v3_rigid_align_paired_unit_vectors.d.ts.map +1 -1
  76. package/src/core/geom/vec3/v3_rigid_align_paired_unit_vectors.js +27 -13
  77. package/src/core/math/linalg/eigen/matrix_symmetric_4x4_eigen.d.ts +25 -0
  78. package/src/core/math/linalg/eigen/matrix_symmetric_4x4_eigen.d.ts.map +1 -0
  79. package/src/core/math/linalg/eigen/matrix_symmetric_4x4_eigen.js +166 -0
  80. package/src/core/math/linalg/eigen/matrix_top_eigenvector_power_iteration.d.ts +5 -3
  81. package/src/core/math/linalg/eigen/matrix_top_eigenvector_power_iteration.d.ts.map +1 -1
  82. package/src/core/math/linalg/eigen/matrix_top_eigenvector_power_iteration.js +5 -3
  83. package/src/core/math/noise/curl_noise_3dt.d.ts.map +1 -1
  84. package/src/core/math/noise/curl_noise_3dt.js +20 -10
  85. package/src/core/math/noise/sdnoise.d.ts +16 -5
  86. package/src/core/math/noise/sdnoise.d.ts.map +1 -1
  87. package/src/core/math/noise/sdnoise.js +43 -9
  88. package/src/core/math/spline/spline3_hermite_nearest_point.d.ts +16 -1
  89. package/src/core/math/spline/spline3_hermite_nearest_point.d.ts.map +1 -1
  90. package/src/core/math/spline/spline3_hermite_nearest_point.js +44 -3
  91. package/src/engine/Engine.d.ts.map +1 -1
  92. package/src/engine/Engine.js +6 -2
  93. package/src/engine/animation/curve/AnimationCurve.d.ts +3 -0
  94. package/src/engine/animation/curve/AnimationCurve.d.ts.map +1 -1
  95. package/src/engine/animation/curve/AnimationCurve.js +6 -1
  96. package/src/engine/control/first-person/FirstPersonPlayerController.d.ts +9 -0
  97. package/src/engine/control/first-person/FirstPersonPlayerController.d.ts.map +1 -1
  98. package/src/engine/control/first-person/FirstPersonPlayerControllerConfig.d.ts +26 -0
  99. package/src/engine/control/first-person/FirstPersonPlayerControllerConfig.d.ts.map +1 -1
  100. package/src/engine/control/first-person/FirstPersonPlayerControllerConfig.js +2 -0
  101. package/src/engine/control/first-person/abilities/AbilitySet.d.ts.map +1 -1
  102. package/src/engine/control/first-person/abilities/AbilitySet.js +9 -0
  103. package/src/engine/control/first-person/abilities/LedgeGrab.d.ts.map +1 -1
  104. package/src/engine/control/first-person/abilities/LedgeGrab.js +6 -0
  105. package/src/engine/control/first-person/abilities/Slide.d.ts.map +1 -1
  106. package/src/engine/control/first-person/abilities/Slide.js +1 -0
  107. package/src/engine/control/first-person/abilities/WallRun.d.ts +4 -1
  108. package/src/engine/control/first-person/abilities/WallRun.d.ts.map +1 -1
  109. package/src/engine/control/first-person/abilities/WallRun.js +13 -1
  110. package/src/engine/control/first-person/mastery/SlideInitiationTimingEvaluator.d.ts +1 -1
  111. package/src/engine/control/first-person/mastery/SlideInitiationTimingEvaluator.d.ts.map +1 -1
  112. package/src/engine/control/first-person/mastery/SlideInitiationTimingEvaluator.js +6 -5
  113. package/src/engine/control/first-person/mastery/StrideTimingJumpEvaluator.d.ts +3 -3
  114. package/src/engine/control/first-person/mastery/StrideTimingJumpEvaluator.d.ts.map +1 -1
  115. package/src/engine/control/first-person/mastery/StrideTimingJumpEvaluator.js +9 -8
  116. package/src/engine/control/first-person/sensors/FirstPersonSensorsSystem.d.ts.map +1 -1
  117. package/src/engine/control/first-person/sensors/FirstPersonSensorsSystem.js +13 -4
  118. package/src/engine/ecs/EntityManager.d.ts +9 -1
  119. package/src/engine/ecs/EntityManager.d.ts.map +1 -1
  120. package/src/engine/ecs/EntityManager.js +44 -42
  121. package/src/engine/ecs/dynamic_actions/rules/DynamicRuleDescription.d.ts.map +1 -1
  122. package/src/engine/ecs/dynamic_actions/rules/DynamicRuleDescription.js +2 -1
  123. package/src/engine/ecs/dynamic_actions/rules/DynamicRuleDescriptionTable.d.ts.map +1 -1
  124. package/src/engine/ecs/dynamic_actions/rules/DynamicRuleDescriptionTable.js +1 -0
  125. package/src/engine/ecs/fow/FogOfWarRevealerSystem.d.ts.map +1 -1
  126. package/src/engine/ecs/fow/FogOfWarRevealerSystem.js +3 -0
  127. package/src/engine/ecs/gpu/GPUStateAuthority.d.ts +20 -0
  128. package/src/engine/ecs/gpu/GPUStateAuthority.d.ts.map +1 -1
  129. package/src/engine/ecs/gpu/GPUStateAuthority.js +21 -0
  130. package/src/engine/ecs/gpu/GPU_AUTHORITY_EVENT_HOLD_CHANGE.d.ts +13 -0
  131. package/src/engine/ecs/gpu/GPU_AUTHORITY_EVENT_HOLD_CHANGE.d.ts.map +1 -0
  132. package/src/engine/ecs/gpu/GPU_AUTHORITY_EVENT_HOLD_CHANGE.js +12 -0
  133. package/src/engine/ecs/gpu/gpu_authority_grant.d.ts +6 -0
  134. package/src/engine/ecs/gpu/gpu_authority_grant.d.ts.map +1 -1
  135. package/src/engine/ecs/gpu/gpu_authority_grant.js +7 -1
  136. package/src/engine/ecs/gpu/gpu_authority_held.d.ts +14 -0
  137. package/src/engine/ecs/gpu/gpu_authority_held.d.ts.map +1 -0
  138. package/src/engine/ecs/gpu/gpu_authority_held.js +23 -0
  139. package/src/engine/ecs/gpu/gpu_authority_hold.d.ts +23 -0
  140. package/src/engine/ecs/gpu/gpu_authority_hold.d.ts.map +1 -0
  141. package/src/engine/ecs/gpu/gpu_authority_hold.js +41 -0
  142. package/src/engine/ecs/gpu/gpu_authority_unhold.d.ts +14 -0
  143. package/src/engine/ecs/gpu/gpu_authority_unhold.d.ts.map +1 -0
  144. package/src/engine/ecs/gpu/gpu_authority_unhold.js +32 -0
  145. package/src/engine/ecs/ik/IKGoal.d.ts +59 -0
  146. package/src/engine/ecs/ik/IKGoal.d.ts.map +1 -0
  147. package/src/engine/ecs/ik/IKGoal.js +83 -0
  148. package/src/engine/ecs/ik/IKGoalSystem.d.ts +75 -0
  149. package/src/engine/ecs/ik/IKGoalSystem.d.ts.map +1 -0
  150. package/src/engine/ecs/ik/IKGoalSystem.js +1456 -0
  151. package/src/engine/ecs/ik/PLAN.md +179 -0
  152. package/src/engine/ecs/parent/EntityNode.js +3 -3
  153. package/src/engine/ecs/speaker/VoiceSystem.d.ts +2 -2
  154. package/src/engine/ecs/speaker/VoiceSystem.d.ts.map +1 -1
  155. package/src/engine/ecs/speaker/VoiceSystem.js +4 -0
  156. package/src/engine/ecs/storage/BinaryBufferDeSerializer.js +5 -5
  157. package/src/engine/ecs/storage/BinaryBufferSerializer.d.ts.map +1 -1
  158. package/src/engine/ecs/storage/BinaryBufferSerializer.js +4 -5
  159. package/src/engine/ecs/storage/binary/BinarySerializationRegistry.d.ts.map +1 -1
  160. package/src/engine/ecs/storage/binary/BinarySerializationRegistry.js +3 -2
  161. package/src/engine/ecs/storage/binary/SERIALIZATION_COVERAGE.md +7 -3
  162. package/src/engine/ecs/storage/binary/object/BinaryObjectSerializationAdapter2.js +1 -1
  163. package/src/engine/ecs/storage/binary/object-v2/BinaryObjectDeSerializer.d.ts.map +1 -1
  164. package/src/engine/ecs/storage/binary/object-v2/BinaryObjectDeSerializer.js +8 -1
  165. package/src/engine/ecs/storage/populateEngineSerializationRegistry.d.ts.map +1 -1
  166. package/src/engine/ecs/storage/populateEngineSerializationRegistry.js +9 -2
  167. package/src/engine/ecs/system/orderSystemsByDeclaredAccess.d.ts +33 -0
  168. package/src/engine/ecs/system/orderSystemsByDeclaredAccess.d.ts.map +1 -0
  169. package/src/engine/ecs/system/orderSystemsByDeclaredAccess.js +282 -0
  170. package/src/engine/ecs/terrain/ecs/cling/ClingToTerrainSystem.d.ts.map +1 -1
  171. package/src/engine/ecs/terrain/ecs/cling/ClingToTerrainSystem.js +5 -2
  172. package/src/engine/ecs/terrain/ecs/layers/TerrainLayers.d.ts.map +1 -1
  173. package/src/engine/ecs/terrain/ecs/layers/TerrainLayers.js +3 -0
  174. package/src/engine/ecs/terrain/ecs/splat/SplatMapping.d.ts.map +1 -1
  175. package/src/engine/ecs/terrain/ecs/splat/SplatMapping.js +1 -0
  176. package/src/engine/ecs/terrain/overlay/TerrainOverlay.js +1 -1
  177. package/src/engine/ecs/terrain/tiles/TerrainTile.d.ts.map +1 -1
  178. package/src/engine/ecs/terrain/tiles/TerrainTile.js +13 -1
  179. package/src/engine/ecs/terrain/tiles/TerrainTileManager.d.ts.map +1 -1
  180. package/src/engine/ecs/terrain/tiles/TerrainTileManager.js +1 -0
  181. package/src/engine/ecs/transform/T64WorldCache.js +139 -139
  182. package/src/engine/ecs/transform/t64_evaluate_local.d.ts +25 -0
  183. package/src/engine/ecs/transform/t64_evaluate_local.d.ts.map +1 -0
  184. package/src/engine/ecs/transform/t64_evaluate_local.js +35 -0
  185. package/src/engine/ecs/transform/t64_evaluate_world.d.ts +5 -3
  186. package/src/engine/ecs/transform/t64_evaluate_world.d.ts.map +1 -1
  187. package/src/engine/ecs/transform/t64_evaluate_world.js +128 -126
  188. package/src/engine/graphics/ecs/light/LightSerializationAdapter.d.ts.map +1 -1
  189. package/src/engine/graphics/ecs/light/LightSerializationAdapter.js +13 -1
  190. package/src/engine/graphics/ecs/light/LightSerializationUpgrader_0_1.d.ts +5 -0
  191. package/src/engine/graphics/ecs/light/LightSerializationUpgrader_0_1.d.ts.map +1 -0
  192. package/src/engine/graphics/ecs/light/LightSerializationUpgrader_0_1.js +27 -0
  193. package/src/engine/graphics/ecs/water/Water.d.ts +11 -0
  194. package/src/engine/graphics/ecs/water/Water.d.ts.map +1 -1
  195. package/src/engine/graphics/ecs/water/Water.js +17 -0
  196. package/src/engine/graphics/ecs/water/WaterSerializationAdapter.d.ts.map +1 -1
  197. package/src/engine/graphics/ecs/water/WaterSerializationAdapter.js +3 -1
  198. package/src/engine/graphics/ecs/water/WaterSerializationUpgrader_4_5.d.ts +9 -0
  199. package/src/engine/graphics/ecs/water/WaterSerializationUpgrader_4_5.d.ts.map +1 -0
  200. package/src/engine/graphics/ecs/water/WaterSerializationUpgrader_4_5.js +24 -0
  201. package/src/engine/graphics/ecs/water/WaterWaves.d.ts +30 -9
  202. package/src/engine/graphics/ecs/water/WaterWaves.d.ts.map +1 -1
  203. package/src/engine/graphics/ecs/water/WaterWaves.js +41 -9
  204. package/src/engine/graphics/ecs/water/WaterWavesSerializationAdapter.d.ts.map +1 -1
  205. package/src/engine/graphics/ecs/water/WaterWavesSerializationAdapter.js +30 -26
  206. package/src/engine/graphics/ecs/water/WaterWavesSerializationUpgrader_0_1.d.ts +6 -0
  207. package/src/engine/graphics/ecs/water/WaterWavesSerializationUpgrader_0_1.d.ts.map +1 -0
  208. package/src/engine/graphics/ecs/water/WaterWavesSerializationUpgrader_0_1.js +22 -0
  209. package/src/engine/graphics/geometry/buffered/query/bvh32_geometry_raycast.d.ts.map +1 -1
  210. package/src/engine/graphics/geometry/buffered/query/bvh32_geometry_raycast.js +3 -5
  211. package/src/engine/graphics/texture/3d/scs3d_sample_linear3.d.ts +20 -0
  212. package/src/engine/graphics/texture/3d/scs3d_sample_linear3.d.ts.map +1 -1
  213. package/src/engine/graphics/texture/3d/scs3d_sample_linear3.js +36 -0
  214. package/src/engine/graphics3/AnimationGraphSystem.d.ts +2 -0
  215. package/src/engine/graphics3/AnimationGraphSystem.d.ts.map +1 -1
  216. package/src/engine/graphics3/AnimationGraphSystem.js +337 -329
  217. package/src/engine/graphics3/AnimationSystem.d.ts +2 -0
  218. package/src/engine/graphics3/AnimationSystem.d.ts.map +1 -1
  219. package/src/engine/graphics3/AnimationSystem.js +360 -352
  220. package/src/engine/graphics3/WaterSystem.d.ts +12 -3
  221. package/src/engine/graphics3/WaterSystem.d.ts.map +1 -1
  222. package/src/engine/graphics3/WaterSystem.js +78 -46
  223. package/src/engine/input/devices/PointerDevice.d.ts.map +1 -1
  224. package/src/engine/input/devices/PointerDevice.js +29 -4
  225. package/src/engine/intelligence/behavior/selector/WeightedRandomBehavior.d.ts +1 -0
  226. package/src/engine/intelligence/behavior/selector/WeightedRandomBehavior.d.ts.map +1 -1
  227. package/src/engine/intelligence/behavior/selector/WeightedRandomBehavior.js +14 -3
  228. package/src/engine/physics/cloth/MEASUREMENTS.md +130 -0
  229. package/src/engine/physics/cloth/PLAN.md +16 -1
  230. package/src/engine/physics/cloth/ecs/ClothColliderSystem.d.ts +5 -6
  231. package/src/engine/physics/cloth/ecs/ClothColliderSystem.d.ts.map +1 -1
  232. package/src/engine/physics/cloth/ecs/ClothColliderSystem.js +5 -6
  233. package/src/engine/physics/cloth/ecs/ClothInstance.d.ts +4 -7
  234. package/src/engine/physics/cloth/ecs/ClothInstance.d.ts.map +1 -1
  235. package/src/engine/physics/cloth/ecs/ClothInstance.js +4 -7
  236. package/src/engine/physics/cloth/ecs/ClothSystem.d.ts +4 -3
  237. package/src/engine/physics/cloth/ecs/ClothSystem.d.ts.map +1 -1
  238. package/src/engine/physics/cloth/ecs/ClothSystem.js +4 -3
  239. package/src/engine/physics/cloth/ecs/ClothWorld.d.ts.map +1 -1
  240. package/src/engine/physics/cloth/ecs/ClothWorld.js +10 -0
  241. package/src/engine/physics/cloth/ecs/cloth_seed_rig.d.ts +24 -24
  242. package/src/engine/physics/cloth/ecs/cloth_seed_rig.d.ts.map +1 -1
  243. package/src/engine/physics/cloth/ecs/cloth_seed_rig.js +46 -43
  244. package/src/engine/physics/cloth/ecs/cloth_write_back.d.ts +1 -1
  245. package/src/engine/physics/cloth/ecs/cloth_write_back.js +1 -1
  246. package/src/engine/physics/constraint/solve_constraints.d.ts +0 -35
  247. package/src/engine/physics/constraint/solve_constraints.d.ts.map +1 -1
  248. package/src/engine/physics/constraint/solve_constraints.js +1 -83
  249. package/src/engine/physics/ecs/ContactProbe.d.ts +73 -0
  250. package/src/engine/physics/ecs/ContactProbe.d.ts.map +1 -0
  251. package/src/engine/physics/ecs/ContactProbe.js +103 -0
  252. package/src/engine/physics/ecs/ContactProbeSystem.d.ts +44 -0
  253. package/src/engine/physics/ecs/ContactProbeSystem.d.ts.map +1 -0
  254. package/src/engine/physics/ecs/ContactProbeSystem.js +397 -0
  255. package/src/engine/physics/fluid/ecs/FluidComponent.d.ts +1 -1
  256. package/src/engine/physics/fluid/ecs/FluidComponent.js +1 -1
  257. package/src/engine/physics/fluid/ecs/FluidObstacleSystem.d.ts +4 -4
  258. package/src/engine/physics/fluid/solver/v3_grid_advect_maccormack_velocity.d.ts.map +1 -1
  259. package/src/engine/physics/fluid/solver/v3_grid_advect_maccormack_velocity.js +12 -3
  260. package/src/engine/physics/fluid/solver/v3_grid_advect_sl_velocity.d.ts.map +1 -1
  261. package/src/engine/physics/fluid/solver/v3_grid_advect_sl_velocity.js +8 -2
  262. package/src/engine/physics/fluid/solver/v3_grid_sample_scalar_masked.d.ts +19 -0
  263. package/src/engine/physics/fluid/solver/v3_grid_sample_scalar_masked.d.ts.map +1 -1
  264. package/src/engine/physics/fluid/solver/v3_grid_sample_scalar_masked.js +41 -2
  265. package/src/engine/physics/fluid/solver/v3_mac_advect_scalar.d.ts.map +1 -1
  266. package/src/engine/physics/fluid/solver/v3_mac_advect_scalar.js +9 -3
  267. package/src/engine/physics/fluid/solver/v3_mac_advect_sl_velocity.d.ts.map +1 -1
  268. package/src/engine/physics/fluid/solver/v3_mac_advect_sl_velocity.js +26 -10
  269. package/src/engine/physics/inverse_kinematics/frame_fabrik/FrameFabrikProblem.d.ts +205 -0
  270. package/src/engine/physics/inverse_kinematics/frame_fabrik/FrameFabrikProblem.d.ts.map +1 -0
  271. package/src/engine/physics/inverse_kinematics/frame_fabrik/FrameFabrikProblem.js +245 -0
  272. package/src/engine/physics/inverse_kinematics/frame_fabrik/frame_fabrik_limit_from_joint.d.ts +21 -0
  273. package/src/engine/physics/inverse_kinematics/frame_fabrik/frame_fabrik_limit_from_joint.d.ts.map +1 -0
  274. package/src/engine/physics/inverse_kinematics/frame_fabrik/frame_fabrik_limit_from_joint.js +63 -0
  275. package/src/engine/physics/inverse_kinematics/frame_fabrik/frame_fabrik_solve.d.ts +33 -0
  276. package/src/engine/physics/inverse_kinematics/frame_fabrik/frame_fabrik_solve.d.ts.map +1 -0
  277. package/src/engine/physics/inverse_kinematics/frame_fabrik/frame_fabrik_solve.js +874 -0
  278. package/src/engine/physics/inverse_kinematics/joint_hinge_mid_axis.d.ts +27 -0
  279. package/src/engine/physics/inverse_kinematics/joint_hinge_mid_axis.d.ts.map +1 -0
  280. package/src/engine/physics/inverse_kinematics/joint_hinge_mid_axis.js +77 -0
  281. package/src/engine/physics/inverse_kinematics/two_bone_path_solve.d.ts +36 -0
  282. package/src/engine/physics/inverse_kinematics/two_bone_path_solve.d.ts.map +1 -0
  283. package/src/engine/physics/inverse_kinematics/two_bone_path_solve.js +97 -0
  284. package/src/engine/physics/inverse_kinematics/two_joint_ik.d.ts +33 -11
  285. package/src/engine/physics/inverse_kinematics/two_joint_ik.d.ts.map +1 -1
  286. package/src/engine/physics/inverse_kinematics/two_joint_ik.js +158 -67
  287. package/src/engine/sound/sopra/definition/clip/RandomContainerAudioClip.d.ts +3 -6
  288. package/src/engine/sound/sopra/definition/clip/RandomContainerAudioClip.d.ts.map +1 -1
  289. package/src/engine/sound/sopra/definition/clip/RandomContainerAudioClip.js +22 -9
  290. package/src/engine/ui/DraggableAspect.d.ts +5 -1
  291. package/src/engine/ui/DraggableAspect.d.ts.map +1 -1
  292. package/src/engine/ui/DraggableAspect.js +61 -4
  293. package/src/format/image/avif/heif/ItemProperty.d.ts +1 -1
  294. package/src/format/image/avif/heif/ItemProperty.js +1 -1
  295. package/src/format/image/png/chunk/png_chunk_decode_iTXt.d.ts.map +1 -1
  296. package/src/format/image/png/chunk/png_chunk_decode_iTXt.js +17 -6
  297. package/src/shade/device/mock/SoftwareGPUDevice.d.ts +2 -4
  298. package/src/shade/device/mock/SoftwareGPUDevice.d.ts.map +1 -1
  299. package/src/shade/device/mock/SoftwareGPUDevice.js +20 -13
  300. package/src/shade/playground/skinned_blas_refit/sweep_views.d.ts.map +1 -1
  301. package/src/shade/playground/skinned_blas_refit/sweep_views.js +2 -1
  302. package/src/shade/playground/water_refraction/README.md +10 -11
  303. package/src/shade/playground/water_refraction/main.js +9 -8
  304. package/src/shade/playground/water_refraction/world.js +1 -1
  305. package/src/shade/playground/water_surface/README.md +43 -0
  306. package/src/shade/playground/water_surface/index.html +30 -0
  307. package/src/shade/playground/water_surface/main.d.ts +2 -0
  308. package/src/shade/playground/water_surface/main.d.ts.map +1 -0
  309. package/src/shade/playground/water_surface/main.js +154 -0
  310. package/src/shade/playground/water_surface/world.d.ts +44 -0
  311. package/src/shade/playground/water_surface/world.d.ts.map +1 -0
  312. package/src/shade/playground/water_surface/world.js +160 -0
  313. package/src/shade/renderer/animation/ANIMATION_TRACK_BINDING_STRUCT.d.ts.map +1 -1
  314. package/src/shade/renderer/animation/ANIMATION_TRACK_BINDING_STRUCT.js +10 -1
  315. package/src/shade/renderer/animation/GPUAnimationManager.d.ts +10 -4
  316. package/src/shade/renderer/animation/GPUAnimationManager.d.ts.map +1 -1
  317. package/src/shade/renderer/animation/GPUAnimationManager.js +251 -23
  318. package/src/shade/renderer/animation/POSE_ACCUMULATOR_LAYOUT.d.ts +12 -4
  319. package/src/shade/renderer/animation/POSE_ACCUMULATOR_LAYOUT.d.ts.map +1 -1
  320. package/src/shade/renderer/animation/POSE_ACCUMULATOR_LAYOUT.js +12 -4
  321. package/src/shade/renderer/animation/chunk_pose_accumulator.d.ts.map +1 -1
  322. package/src/shade/renderer/animation/chunk_pose_accumulator.js +14 -1
  323. package/src/shade/renderer/animation/pose/PoseChannelIndex.d.ts +78 -0
  324. package/src/shade/renderer/animation/pose/PoseChannelIndex.d.ts.map +1 -0
  325. package/src/shade/renderer/animation/pose/PoseChannelIndex.js +274 -0
  326. package/src/shade/renderer/animation/pose/PosePlayback.d.ts +40 -3
  327. package/src/shade/renderer/animation/pose/PosePlayback.d.ts.map +1 -1
  328. package/src/shade/renderer/animation/pose/PosePlayback.js +77 -3
  329. package/src/shade/renderer/animation/pose/pose_evaluate_local.d.ts +21 -3
  330. package/src/shade/renderer/animation/pose/pose_evaluate_local.d.ts.map +1 -1
  331. package/src/shade/renderer/animation/pose/pose_evaluate_local.js +79 -11
  332. package/src/shade/renderer/animation/shader_animation_apply.js +1 -1
  333. package/src/shade/renderer/animation/shader_animation_pose_resolve.d.ts +3 -2
  334. package/src/shade/renderer/animation/shader_animation_pose_resolve.d.ts.map +1 -1
  335. package/src/shade/renderer/animation/shader_animation_pose_resolve.js +187 -176
  336. package/src/shade/renderer/animation/skinning/GPUMeshSkinningContext.d.ts.map +1 -1
  337. package/src/shade/renderer/animation/skinning/GPUMeshSkinningContext.js +5 -0
  338. package/src/shade/renderer/binding/BufferBinding.js +2 -2
  339. package/src/shade/renderer/buffer/table/GPUTypedTable.d.ts.map +1 -1
  340. package/src/shade/renderer/buffer/table/GPUTypedTable.js +5 -3
  341. package/src/shade/renderer/buffer/table/GPUTypedTableDescriptor.d.ts +10 -3
  342. package/src/shade/renderer/buffer/table/GPUTypedTableDescriptor.d.ts.map +1 -1
  343. package/src/shade/renderer/buffer/table/GPUTypedTableDescriptor.js +17 -9
  344. package/src/shade/renderer/camera/orbital/OrbitalCameraInput.d.ts +3 -0
  345. package/src/shade/renderer/camera/orbital/OrbitalCameraInput.d.ts.map +1 -1
  346. package/src/shade/renderer/camera/orbital/OrbitalCameraInput.js +16 -0
  347. package/src/shade/renderer/camera/orbital/OrbitalCameraRig.d.ts +2 -0
  348. package/src/shade/renderer/camera/orbital/OrbitalCameraRig.d.ts.map +1 -1
  349. package/src/shade/renderer/camera/orbital/OrbitalCameraRig.js +11 -0
  350. package/src/shade/renderer/geometry/meshlet/build/meshoptimizer/geometry_to_meshlets_meshoptimizer.d.ts +1 -1
  351. package/src/shade/renderer/geometry/meshlet/build/meshoptimizer/geometry_to_meshlets_meshoptimizer.d.ts.map +1 -1
  352. package/src/shade/renderer/geometry/meshlet/build/meshoptimizer/geometry_to_meshlets_meshoptimizer.js +9 -3
  353. package/src/shade/renderer/geometry/util/geometry_simplify_redundant_topology.d.ts.map +1 -1
  354. package/src/shade/renderer/geometry/util/geometry_simplify_redundant_topology.js +2 -2
  355. package/src/shade/renderer/geometry/virtual/format/vgeo_validate_container.d.ts.map +1 -1
  356. package/src/shade/renderer/geometry/virtual/format/vgeo_validate_container.js +85 -0
  357. package/src/shade/renderer/geometry/virtual/runtime/GPUVirtualGeometryRuntime.d.ts.map +1 -1
  358. package/src/shade/renderer/geometry/virtual/runtime/GPUVirtualGeometryRuntime.js +12 -6
  359. package/src/shade/renderer/geometry/virtual/runtime/VGeoPageFetcher.d.ts.map +1 -1
  360. package/src/shade/renderer/geometry/virtual/runtime/VGeoPageFetcher.js +7 -0
  361. package/src/shade/renderer/geometry/virtual/runtime/VGeoRuntimeTables.d.ts.map +1 -1
  362. package/src/shade/renderer/geometry/virtual/runtime/VGeoRuntimeTables.js +3 -1
  363. package/src/shade/renderer/loader/gltf/tiny-gltf.d.ts +1 -1
  364. package/src/shade/renderer/object_property/chunk_write_object_property.d.ts +3 -1
  365. package/src/shade/renderer/object_property/chunk_write_object_property.d.ts.map +1 -1
  366. package/src/shade/renderer/object_property/chunk_write_object_property.js +5 -2
  367. package/src/shade/renderer/object_property/chunk_write_object_property_node3d.d.ts +4 -0
  368. package/src/shade/renderer/object_property/chunk_write_object_property_node3d.d.ts.map +1 -1
  369. package/src/shade/renderer/object_property/chunk_write_object_property_node3d.js +6 -1
  370. package/src/shade/renderer/postprocess/nss/NSS.d.ts +1 -1
  371. package/src/shade/renderer/scene/SCENE_DATABASE_SPEC.js +2 -1
  372. package/src/shade/renderer/scene/optimization/geometry/geometry_deduplicate.d.ts +1 -1
  373. package/src/shade/renderer/scene/optimization/geometry/geometry_deduplicate.d.ts.map +1 -1
  374. package/src/shade/renderer/scene/optimization/geometry/geometry_deduplicate.js +135 -73
  375. package/src/shade/renderer/scene/optimization/geometry/internal/cover_greedy.d.ts +7 -0
  376. package/src/shade/renderer/scene/optimization/geometry/internal/cover_greedy.d.ts.map +1 -1
  377. package/src/shade/renderer/scene/optimization/geometry/internal/cover_greedy.js +29 -1
  378. package/src/shade/renderer/scene/optimization/geometry/internal/face_neighbourhood_hash.d.ts +19 -0
  379. package/src/shade/renderer/scene/optimization/geometry/internal/face_neighbourhood_hash.d.ts.map +1 -0
  380. package/src/shade/renderer/scene/optimization/geometry/internal/face_neighbourhood_hash.js +167 -0
  381. package/src/shade/renderer/scene/optimization/geometry/internal/neighbourhood_anchor_index.d.ts +25 -0
  382. package/src/shade/renderer/scene/optimization/geometry/internal/neighbourhood_anchor_index.d.ts.map +1 -0
  383. package/src/shade/renderer/scene/optimization/geometry/internal/neighbourhood_anchor_index.js +124 -0
  384. package/src/shade/renderer/scene/optimization/geometry/internal/seed_correspondence_from_face_pair.d.ts +19 -0
  385. package/src/shade/renderer/scene/optimization/geometry/internal/seed_correspondence_from_face_pair.d.ts.map +1 -0
  386. package/src/shade/renderer/scene/optimization/geometry/internal/seed_correspondence_from_face_pair.js +48 -0
  387. package/src/shade/renderer/scene/rows/GPUSceneRows.d.ts +17 -1
  388. package/src/shade/renderer/scene/rows/GPUSceneRows.d.ts.map +1 -1
  389. package/src/shade/renderer/scene/rows/GPUSceneRows.js +29 -3
  390. package/src/shade/renderer/shader/chunk/math/fft/chunk_fft128_inverse.d.ts +13 -0
  391. package/src/shade/renderer/shader/chunk/math/fft/chunk_fft128_inverse.d.ts.map +1 -0
  392. package/src/shade/renderer/shader/chunk/math/fft/chunk_fft128_inverse.js +42 -0
  393. package/src/shade/renderer/shader/chunk/math/fft/chunk_fft128x4_inverse_workgroup.d.ts +15 -0
  394. package/src/shade/renderer/shader/chunk/math/fft/chunk_fft128x4_inverse_workgroup.d.ts.map +1 -0
  395. package/src/shade/renderer/shader/chunk/math/fft/chunk_fft128x4_inverse_workgroup.js +39 -0
  396. package/src/shade/renderer/shader/resource/ShaderResourceSetDescriptor.d.ts.map +1 -1
  397. package/src/shade/renderer/shader/resource/ShaderResourceSetDescriptor.js +2 -0
  398. package/src/shade/renderer/water/GPUWaterRenderer.d.ts +15 -0
  399. package/src/shade/renderer/water/GPUWaterRenderer.d.ts.map +1 -1
  400. package/src/shade/renderer/water/GPUWaterRenderer.js +110 -30
  401. package/src/shade/renderer/water/medium/GPUWaterBodies.d.ts +16 -8
  402. package/src/shade/renderer/water/medium/GPUWaterBodies.d.ts.map +1 -1
  403. package/src/shade/renderer/water/medium/GPUWaterBodies.js +31 -26
  404. package/src/shade/renderer/water/medium/shader_water_meshlets.d.ts +0 -1
  405. package/src/shade/renderer/water/medium/shader_water_meshlets.d.ts.map +1 -1
  406. package/src/shade/renderer/water/medium/shader_water_meshlets.js +1 -39
  407. package/src/shade/renderer/water/shader_water.d.ts +0 -1
  408. package/src/shade/renderer/water/shader_water.d.ts.map +1 -1
  409. package/src/shade/renderer/water/shader_water.js +201 -72
  410. package/src/shade/renderer/water/surface/GPUWaterSurface.d.ts +70 -0
  411. package/src/shade/renderer/water/surface/GPUWaterSurface.d.ts.map +1 -0
  412. package/src/shade/renderer/water/surface/GPUWaterSurface.js +199 -0
  413. package/src/shade/renderer/water/surface/WATER_WAVE_RECORD_STRUCT.d.ts +5 -2
  414. package/src/shade/renderer/water/surface/WATER_WAVE_RECORD_STRUCT.d.ts.map +1 -1
  415. package/src/shade/renderer/water/surface/WATER_WAVE_RECORD_STRUCT.js +32 -12
  416. package/src/shade/renderer/water/surface/chunk_water_surface_sample.d.ts +22 -0
  417. package/src/shade/renderer/water/surface/chunk_water_surface_sample.d.ts.map +1 -0
  418. package/src/shade/renderer/water/surface/chunk_water_surface_sample.js +217 -0
  419. package/src/shade/renderer/water/surface/graph_water_tessellation.d.ts +65 -11
  420. package/src/shade/renderer/water/surface/graph_water_tessellation.d.ts.map +1 -1
  421. package/src/shade/renderer/water/surface/graph_water_tessellation.js +163 -28
  422. package/src/shade/renderer/water/surface/lod/WATER_LOD.d.ts +51 -0
  423. package/src/shade/renderer/water/surface/lod/WATER_LOD.d.ts.map +1 -0
  424. package/src/shade/renderer/water/surface/lod/WATER_LOD.js +95 -0
  425. package/src/shade/renderer/water/surface/lod/chunk_water_lod.d.ts +10 -0
  426. package/src/shade/renderer/water/surface/lod/chunk_water_lod.d.ts.map +1 -0
  427. package/src/shade/renderer/water/surface/lod/chunk_water_lod.js +127 -0
  428. package/src/shade/renderer/water/surface/lod/chunk_water_lod_cell.d.ts +17 -0
  429. package/src/shade/renderer/water/surface/lod/chunk_water_lod_cell.d.ts.map +1 -0
  430. package/src/shade/renderer/water/surface/lod/chunk_water_lod_cell.js +246 -0
  431. package/src/shade/renderer/water/surface/lod/shader_water_lod.d.ts +118 -0
  432. package/src/shade/renderer/water/surface/lod/shader_water_lod.d.ts.map +1 -0
  433. package/src/shade/renderer/water/surface/lod/shader_water_lod.js +727 -0
  434. package/src/shade/renderer/water/surface/particles/GPUWaterParticles.d.ts +60 -0
  435. package/src/shade/renderer/water/surface/particles/GPUWaterParticles.d.ts.map +1 -0
  436. package/src/shade/renderer/water/surface/particles/GPUWaterParticles.js +228 -0
  437. package/src/shade/renderer/water/surface/particles/WATER_PARTICLE_STRUCT.d.ts +17 -0
  438. package/src/shade/renderer/water/surface/particles/WATER_PARTICLE_STRUCT.d.ts.map +1 -0
  439. package/src/shade/renderer/water/surface/particles/WATER_PARTICLE_STRUCT.js +49 -0
  440. package/src/shade/renderer/water/surface/particles/chunk_water_particle.d.ts +22 -0
  441. package/src/shade/renderer/water/surface/particles/chunk_water_particle.d.ts.map +1 -0
  442. package/src/shade/renderer/water/surface/particles/chunk_water_particle.js +143 -0
  443. package/src/shade/renderer/water/surface/particles/chunk_water_particle_step.d.ts +15 -0
  444. package/src/shade/renderer/water/surface/particles/chunk_water_particle_step.d.ts.map +1 -0
  445. package/src/shade/renderer/water/surface/particles/chunk_water_particle_step.js +121 -0
  446. package/src/shade/renderer/water/surface/particles/shader_water_particles.d.ts +83 -0
  447. package/src/shade/renderer/water/surface/particles/shader_water_particles.d.ts.map +1 -0
  448. package/src/shade/renderer/water/surface/particles/shader_water_particles.js +502 -0
  449. package/src/shade/renderer/water/surface/shader_water_cull.d.ts +42 -0
  450. package/src/shade/renderer/water/surface/shader_water_cull.d.ts.map +1 -0
  451. package/src/shade/renderer/water/surface/shader_water_cull.js +269 -0
  452. package/src/shade/renderer/water/surface/shader_water_waves_combine.d.ts +15 -0
  453. package/src/shade/renderer/water/surface/shader_water_waves_combine.d.ts.map +1 -0
  454. package/src/shade/renderer/water/surface/shader_water_waves_combine.js +73 -0
  455. package/src/shade/renderer/water/surface/shader_water_waves_derive.d.ts +11 -0
  456. package/src/shade/renderer/water/surface/shader_water_waves_derive.d.ts.map +1 -0
  457. package/src/shade/renderer/water/surface/shader_water_waves_derive.js +78 -0
  458. package/src/shade/renderer/water/surface/spectrum/GPUWaterSpectrum.d.ts +35 -0
  459. package/src/shade/renderer/water/surface/spectrum/GPUWaterSpectrum.d.ts.map +1 -0
  460. package/src/shade/renderer/water/surface/spectrum/GPUWaterSpectrum.js +103 -0
  461. package/src/shade/renderer/water/surface/spectrum/WATER_BAND_STATE.d.ts +22 -0
  462. package/src/shade/renderer/water/surface/spectrum/WATER_BAND_STATE.d.ts.map +1 -0
  463. package/src/shade/renderer/water/surface/spectrum/WATER_BAND_STATE.js +57 -0
  464. package/src/shade/renderer/water/surface/spectrum/WATER_SPECTRUM.d.ts +22 -0
  465. package/src/shade/renderer/water/surface/spectrum/WATER_SPECTRUM.d.ts.map +1 -0
  466. package/src/shade/renderer/water/surface/spectrum/WATER_SPECTRUM.js +25 -0
  467. package/src/shade/renderer/water/surface/spectrum/chunk_water_jonswap.d.ts +14 -0
  468. package/src/shade/renderer/water/surface/spectrum/chunk_water_jonswap.d.ts.map +1 -0
  469. package/src/shade/renderer/water/surface/spectrum/chunk_water_jonswap.js +48 -0
  470. package/src/shade/renderer/water/surface/spectrum/chunk_water_spectrum.d.ts +23 -0
  471. package/src/shade/renderer/water/surface/spectrum/chunk_water_spectrum.d.ts.map +1 -0
  472. package/src/shade/renderer/water/surface/spectrum/chunk_water_spectrum.js +169 -0
  473. package/src/shade/renderer/water/surface/spectrum/shader_water_spectrum.d.ts +26 -0
  474. package/src/shade/renderer/water/surface/spectrum/shader_water_spectrum.d.ts.map +1 -0
  475. package/src/shade/renderer/water/surface/spectrum/shader_water_spectrum.js +161 -0
  476. package/src/shade/wgsl/emulator/WGSLJavaScriptCompiler.d.ts.map +1 -1
  477. package/src/shade/wgsl/emulator/WGSLJavaScriptCompiler.js +18 -6
  478. package/src/shade/wgsl/emulator/WGSLLanguageCore.d.ts.map +1 -1
  479. package/src/shade/wgsl/emulator/WGSLLanguageCore.js +11 -3
  480. package/src/core/geom/2d/polygon/polygon2_triangulate.corpus.d.ts +0 -28
  481. package/src/core/geom/2d/polygon/polygon2_triangulate.corpus.d.ts.map +0 -1
  482. package/src/core/geom/2d/polygon/polygon2_triangulate.corpus.js +0 -86
  483. package/src/engine/ecs/ik/IKConstraint.d.ts +0 -52
  484. package/src/engine/ecs/ik/IKConstraint.d.ts.map +0 -1
  485. package/src/engine/ecs/ik/IKConstraint.js +0 -95
  486. package/src/engine/ecs/ik/IKProblem.d.ts +0 -45
  487. package/src/engine/ecs/ik/IKProblem.d.ts.map +0 -1
  488. package/src/engine/ecs/ik/IKProblem.js +0 -58
  489. package/src/engine/ecs/ik/IKSolver.d.ts +0 -8
  490. package/src/engine/ecs/ik/IKSolver.d.ts.map +0 -1
  491. package/src/engine/ecs/ik/IKSolver.js +0 -9
  492. package/src/engine/ecs/ik/InverseKinematics.d.ts +0 -48
  493. package/src/engine/ecs/ik/InverseKinematics.d.ts.map +0 -1
  494. package/src/engine/ecs/ik/InverseKinematics.js +0 -119
  495. package/src/engine/ecs/ik/InverseKinematicsSerializationAdapter.d.ts +0 -19
  496. package/src/engine/ecs/ik/InverseKinematicsSerializationAdapter.d.ts.map +0 -1
  497. package/src/engine/ecs/ik/InverseKinematicsSerializationAdapter.js +0 -72
  498. package/src/engine/ecs/ik/InverseKinematicsSystem.d.ts +0 -54
  499. package/src/engine/ecs/ik/InverseKinematicsSystem.d.ts.map +0 -1
  500. package/src/engine/ecs/ik/InverseKinematicsSystem.js +0 -212
  501. package/src/engine/ecs/ik/OneBoneSurfaceAlignmentSolver.d.ts +0 -8
  502. package/src/engine/ecs/ik/OneBoneSurfaceAlignmentSolver.d.ts.map +0 -1
  503. package/src/engine/ecs/ik/OneBoneSurfaceAlignmentSolver.js +0 -153
  504. package/src/engine/ecs/ik/TwoBoneInverseKinematicsSolver.d.ts +0 -5
  505. package/src/engine/ecs/ik/TwoBoneInverseKinematicsSolver.d.ts.map +0 -1
  506. package/src/engine/ecs/ik/TwoBoneInverseKinematicsSolver.js +0 -120
  507. package/src/engine/ecs/ik/ik_bone_chain.d.ts +0 -64
  508. package/src/engine/ecs/ik/ik_bone_chain.d.ts.map +0 -1
  509. package/src/engine/ecs/ik/ik_bone_chain.js +0 -142
  510. package/src/engine/ecs/ik/ik_probe_terrain_contact.d.ts +0 -42
  511. package/src/engine/ecs/ik/ik_probe_terrain_contact.d.ts.map +0 -1
  512. package/src/engine/ecs/ik/ik_probe_terrain_contact.js +0 -123
  513. package/src/engine/ecs/ik/ik_write_local_rotation.d.ts +0 -18
  514. package/src/engine/ecs/ik/ik_write_local_rotation.d.ts.map +0 -1
  515. package/src/engine/ecs/ik/ik_write_local_rotation.js +0 -32
  516. package/src/engine/ecs/storage/binary/object-v2/serializerTestHarness.d.ts +0 -29
  517. package/src/engine/ecs/storage/binary/object-v2/serializerTestHarness.d.ts.map +0 -1
  518. package/src/engine/ecs/storage/binary/object-v2/serializerTestHarness.js +0 -44
  519. package/src/shade/renderer/water/medium/shader_water_bodies_derive.d.ts +0 -4
  520. package/src/shade/renderer/water/medium/shader_water_bodies_derive.d.ts.map +0 -1
  521. package/src/shade/renderer/water/medium/shader_water_bodies_derive.js +0 -32
  522. package/src/shade/renderer/water/surface/GPUWaterWaveSimulation.d.ts +0 -25
  523. package/src/shade/renderer/water/surface/GPUWaterWaveSimulation.d.ts.map +0 -1
  524. package/src/shade/renderer/water/surface/GPUWaterWaveSimulation.js +0 -128
  525. package/src/shade/renderer/water/surface/chunk_water_tessellation.d.ts +0 -9
  526. package/src/shade/renderer/water/surface/chunk_water_tessellation.d.ts.map +0 -1
  527. package/src/shade/renderer/water/surface/chunk_water_tessellation.js +0 -144
  528. package/src/shade/renderer/water/surface/chunk_water_wave.d.ts +0 -13
  529. package/src/shade/renderer/water/surface/chunk_water_wave.d.ts.map +0 -1
  530. package/src/shade/renderer/water/surface/chunk_water_wave.js +0 -40
  531. package/src/shade/renderer/water/surface/shader_water_tiles.d.ts +0 -4
  532. package/src/shade/renderer/water/surface/shader_water_tiles.d.ts.map +0 -1
  533. package/src/shade/renderer/water/surface/shader_water_tiles.js +0 -123
  534. package/src/shade/renderer/water/surface/shader_water_wave_batch.d.ts +0 -6
  535. package/src/shade/renderer/water/surface/shader_water_wave_batch.d.ts.map +0 -1
  536. package/src/shade/renderer/water/surface/shader_water_wave_batch.js +0 -85
  537. package/src/shade/renderer/water/surface/shader_water_wave_domain.d.ts +0 -6
  538. package/src/shade/renderer/water/surface/shader_water_wave_domain.d.ts.map +0 -1
  539. package/src/shade/renderer/water/surface/shader_water_wave_domain.js +0 -83
@@ -1,101 +1,101 @@
1
- /**
2
- * @typedef {import("./Signal.js").default} Signal
3
- */
4
-
5
- /**
6
- * Utility class for managing connection between listeners to signals
7
- */
8
- export class SignalBinding {
9
- /**
10
- * State flag
11
- * @type {boolean}
12
- */
13
- #linked = false;
14
-
15
- get linked() {
16
- return this.#linked;
17
- }
18
-
19
- /**
20
- *
21
- * @param {Signal} signal
22
- * @param {function} handler
23
- * @param {*} [context] will be passed as thisArg to the handler
24
- * @constructor
25
- */
26
- constructor(signal, handler, context) {
27
- if (typeof handler !== "function") {
28
- throw new TypeError(`handler must be a function, instead was '${typeof handler}'`);
29
- }
30
-
31
- if (typeof signal !== "object") {
32
- throw new TypeError(`signal must be of an object, instead was '${typeof signal}'`)
33
- }
34
-
35
- if (typeof signal.add !== "function") {
36
- throw new TypeError(`signal.add must be a function, instead was '${typeof signal.add}'`);
37
- }
38
-
39
- /**
40
- * Binding signal
41
- * @type {Signal}
42
- */
43
- this.signal = signal;
44
-
45
- /**
46
- * Signal handler to be attached to the signal
47
- * @type {Function}
48
- */
49
- this.handler = handler;
50
-
51
- /**
52
- *
53
- * @type {*}
54
- */
55
- this.context = context;
56
-
57
- }
58
-
59
- /**
60
- * Attaches handler to the signal
61
- * Idempotent
62
- */
63
- link() {
64
- if (this.#linked) {
65
- return;
66
- }
67
-
68
- this.#linked = true;
69
- this.signal.add(this.handler, this.context);
70
- }
71
-
72
- /**
73
- * Detaches handler from the signal
74
- * Idempotent
75
- */
76
- unlink() {
77
- if (!this.#linked) {
78
- return;
79
- }
80
-
81
- this.#linked = false;
82
- this.signal.remove(this.handler, this.context);
83
- }
84
-
85
- /**
86
- * Creates a {@link SignalBinding} and links it immediately. Utility method
87
- * @param {Signal} signal
88
- * @param {function} handler
89
- * @param {*} [context]
90
- * @return {SignalBinding}
91
- */
92
- static bind(
93
- signal, handler, context
94
- ) {
95
- const r = new SignalBinding(signal, handler, context);
96
-
97
- r.link();
98
-
99
- return r;
100
- }
101
- }
1
+ /**
2
+ * @typedef {import("./Signal.js").default} Signal
3
+ */
4
+
5
+ /**
6
+ * Utility class for managing connection between listeners to signals
7
+ */
8
+ export class SignalBinding {
9
+ /**
10
+ * State flag
11
+ * @type {boolean}
12
+ */
13
+ #linked = false;
14
+
15
+ get linked() {
16
+ return this.#linked;
17
+ }
18
+
19
+ /**
20
+ *
21
+ * @param {Signal} signal
22
+ * @param {function} handler
23
+ * @param {*} [context] will be passed as thisArg to the handler
24
+ * @constructor
25
+ */
26
+ constructor(signal, handler, context) {
27
+ if (typeof handler !== "function") {
28
+ throw new TypeError(`handler must be a function, instead was '${typeof handler}'`);
29
+ }
30
+
31
+ if (typeof signal !== "object") {
32
+ throw new TypeError(`signal must be of an object, instead was '${typeof signal}'`)
33
+ }
34
+
35
+ if (typeof signal.add !== "function") {
36
+ throw new TypeError(`signal.add must be a function, instead was '${typeof signal.add}'`);
37
+ }
38
+
39
+ /**
40
+ * Binding signal
41
+ * @type {Signal}
42
+ */
43
+ this.signal = signal;
44
+
45
+ /**
46
+ * Signal handler to be attached to the signal
47
+ * @type {Function}
48
+ */
49
+ this.handler = handler;
50
+
51
+ /**
52
+ *
53
+ * @type {*}
54
+ */
55
+ this.context = context;
56
+
57
+ }
58
+
59
+ /**
60
+ * Attaches handler to the signal
61
+ * Idempotent
62
+ */
63
+ link() {
64
+ if (this.#linked) {
65
+ return;
66
+ }
67
+
68
+ this.signal.add(this.handler, this.context);
69
+ this.#linked = true;
70
+ }
71
+
72
+ /**
73
+ * Detaches handler from the signal
74
+ * Idempotent
75
+ */
76
+ unlink() {
77
+ if (!this.#linked) {
78
+ return;
79
+ }
80
+
81
+ this.#linked = false;
82
+ this.signal.remove(this.handler, this.context);
83
+ }
84
+
85
+ /**
86
+ * Creates a {@link SignalBinding} and links it immediately. Utility method
87
+ * @param {Signal} signal
88
+ * @param {function} handler
89
+ * @param {*} [context]
90
+ * @return {SignalBinding}
91
+ */
92
+ static bind(
93
+ signal, handler, context
94
+ ) {
95
+ const r = new SignalBinding(signal, handler, context);
96
+
97
+ r.link();
98
+
99
+ return r;
100
+ }
101
+ }
@@ -1,13 +1,13 @@
1
- /**
2
- *
3
- * @param {function} f
4
- * @returns {string}
5
- */
6
- export function extractFunctionBody(f) {
7
-
8
- const entire = f.toString();
9
-
10
- const body = entire.slice(entire.indexOf("{") + 1, entire.lastIndexOf("}")).trim();
11
-
12
- return body;
13
- }
1
+ /**
2
+ *
3
+ * @param {function} f
4
+ * @returns {string}
5
+ */
6
+ export function extractFunctionBody(f) {
7
+
8
+ const entire = f.toString();
9
+
10
+ const body = entire.slice(entire.indexOf("{") + 1, entire.lastIndexOf("}")).trim();
11
+
12
+ return body;
13
+ }
@@ -1 +1 @@
1
- {"version":3,"file":"objectsEqual.d.ts","sourceRoot":"","sources":["../../../../src/core/function/objectsEqual.js"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,8CAFa,OAAO,CAUnB"}
1
+ {"version":3,"file":"objectsEqual.d.ts","sourceRoot":"","sources":["../../../../src/core/function/objectsEqual.js"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,8CAFa,OAAO,CAWnB"}
@@ -1,15 +1,16 @@
1
- /**
2
- *
3
- * @param {Object} a
4
- * @param {Object} b
5
- * @returns {boolean}
6
- */
7
- export function objectsEqual(a, b) {
8
- return a === b
9
- || (
10
- typeof a === "object" // guard against undefined values
11
- && a !== null // typeof null === "object", so null must be excluded explicitly
12
- && typeof a.equals === "function" // check for equals method
13
- && a.equals(b)
14
- );
1
+ /**
2
+ *
3
+ * @param {Object} a
4
+ * @param {Object} b
5
+ * @returns {boolean}
6
+ */
7
+ export function objectsEqual(a, b) {
8
+ return a === b
9
+ || (
10
+ typeof a === "object" // guard against undefined values
11
+ && a !== null // typeof null === "object", so null must be excluded explicitly
12
+ && b !== null && b !== undefined
13
+ && typeof a.equals === "function" // check for equals method
14
+ && a.equals(b)
15
+ );
15
16
  }
@@ -1 +1 @@
1
- {"version":3,"file":"frustum3_compute_closest_point.d.ts","sourceRoot":"","sources":["../../../../../../src/core/geom/3d/frustum/frustum3_compute_closest_point.js"],"names":[],"mappings":"AA+BA;;;;;;;;;;;;;;;GAeG;AACH,uDAPW,OAAO,UACP,SAAS,YACT,MAAM,YACN,MAAM,YACN,MAAM,GACJ,OAAO,CA8HnB;oBA1KmB,kBAAkB"}
1
+ {"version":3,"file":"frustum3_compute_closest_point.d.ts","sourceRoot":"","sources":["../../../../../../src/core/geom/3d/frustum/frustum3_compute_closest_point.js"],"names":[],"mappings":"AAuBA;;;;;;;;;;;;;;;GAeG;AACH,uDAPW,OAAO,UACP,SAAS,YACT,MAAM,YACN,MAAM,YACN,MAAM,GACJ,OAAO,CAyKnB;oBA7MmB,kBAAkB"}
@@ -1,172 +1,207 @@
1
- import { v3_distance_above_plane } from "../../vec3/v3_distance_above_plane.js";
2
- import Vector3 from "../../Vector3.js";
3
- import { plane3_compute_3_plane_intersection } from "../plane/plane3_compute_3_plane_intersection.js";
4
- import { plane3_compute_intersection } from "../plane/plane3_compute_intersection.js";
5
- import { plane3_project_point } from "../plane/plane3_project_point.js";
6
- import { ray3_compute_closest_point } from "../ray/ray3_compute_closest_point.js";
7
-
8
- /**
9
- * Indices into the caller's plane list, for the planes the target lies outside of.
10
- * @type {number[]}
11
- */
12
- const scratch_outer_planes = [];
13
-
14
- const scratch_v3_0 = new Vector3();
15
-
16
- const scratch_v3_1 = new Vector3();
17
-
18
- /**
19
- *
20
- * @type {number[]}
21
- */
22
- const scratch_v3_array = [];
23
-
24
- /**
25
- * How many projection rounds the four-or-more-planes fallback takes before it settles for where it
26
- * has got to. Bounded rather than convergent: the loop must not be able to spin on a degenerate
27
- * frustum.
28
- * @type {number}
29
- */
30
- const CLAMP_ITERATION_LIMIT = 32;
31
-
32
- /**
33
- * The point inside a convex frustum nearest to a target point, and whether the target was already
34
- * inside it.
35
- *
36
- * **A plane is a `Vector4`**: `x, y, z` its normal and `w` its constant, inside where
37
- * `dot(normal, p) + w` is non-negative. That is the same four numbers every frustum query in the
38
- * tree reads and what `camera_active_frustum` publishes; it used to be a three `Plane`, whose
39
- * `normal`/`constant` pair is the same thing wearing an object (X15d).
40
- *
41
- * @param {Vector3} result
42
- * @param {Vector4[]} planes
43
- * @param {number} target_x
44
- * @param {number} target_y
45
- * @param {number} target_z
46
- * @returns {boolean} if point is inside the frustum - true, false otherwise
47
- */
48
- export function frustum3_compute_closest_point(result, planes, target_x, target_y, target_z) {
49
- let j;
50
-
51
- let outside_plane_count = 0;
52
-
53
- const plane_count = planes.length;
54
-
55
- for (j = 0; j < plane_count; j++) {
56
-
57
- const plane = planes[j];
58
-
59
- const distance = v3_distance_above_plane(
60
- target_x, target_y, target_z,
61
- plane.x, plane.y, plane.z, plane.w
62
- );
63
-
64
- if (distance < 0) {
65
-
66
- scratch_outer_planes[outside_plane_count] = j;
67
-
68
- outside_plane_count++;
69
-
70
- }
71
-
72
- }
73
-
74
- if (outside_plane_count === 0) {
75
- result.set(target_x, target_y, target_z);
76
-
77
- return true;
78
- }
79
-
80
- // point is outside the frustum
81
-
82
- if (outside_plane_count === 1) {
83
- const plane_0 = planes[scratch_outer_planes[0]];
84
-
85
- // point lies outside exactly one plane
86
- plane3_project_point(result, target_x, target_y, target_z, plane_0.x, plane_0.y, plane_0.z, plane_0.w);
87
- } else if (outside_plane_count === 2) {
88
- // outside two planes, nearest point lies on the intersection line of two planes
89
-
90
- const plane_0 = planes[scratch_outer_planes[0]];
91
- const plane_1 = planes[scratch_outer_planes[1]];
92
-
93
- const intersection_exists = plane3_compute_intersection(
94
- scratch_v3_0, scratch_v3_1,
95
- plane_0.x, plane_0.y, plane_0.z, plane_0.w,
96
- plane_1.x, plane_1.y, plane_1.z, plane_1.w
97
- );
98
-
99
- if (!intersection_exists) {
100
- throw new Error('Planes are parallel and do not intersect, likely an invalid frustum');
101
- }
102
-
103
- ray3_compute_closest_point(result,
104
- scratch_v3_0.x, scratch_v3_0.y, scratch_v3_0.z,
105
- scratch_v3_1.x, scratch_v3_1.y, scratch_v3_1.z,
106
- target_x, target_y, target_z
107
- );
108
- } else if (outside_plane_count === 3) {
109
- // outside 3 planes, nearest point is intersect of 3 planes
110
- const plane_0 = planes[scratch_outer_planes[0]];
111
- const plane_1 = planes[scratch_outer_planes[1]];
112
- const plane_2 = planes[scratch_outer_planes[2]];
113
-
114
- plane3_compute_3_plane_intersection(
115
- scratch_v3_array, 0,
116
- plane_0.x, plane_0.y, plane_0.z, plane_0.w,
117
- plane_1.x, plane_1.y, plane_1.z, plane_1.w,
118
- plane_2.x, plane_2.y, plane_2.z, plane_2.w
119
- );
120
-
121
- result.fromArray(scratch_v3_array, 0)
122
- } else {
123
- // Four or more violated planes has no closed form here, and a perspective frustum reaches
124
- // that easily: its side planes all pass through the apex, so any point behind the camera is
125
- // outside near, left, right, top and bottom at once. Falling out of the chain left `result`
126
- // holding whatever the caller's vector had — with a reused scratch, the *previous* query's
127
- // answer, which reads as a plausibly placed point rather than as a failure.
128
- //
129
- // Walk the point back in by repeatedly projecting it onto whichever plane it violates
130
- // most. For a convex body that converges into the intersection; it is not guaranteed to be
131
- // the exact nearest point, but it is inside, and it is written.
132
- let px = target_x;
133
- let py = target_y;
134
- let pz = target_z;
135
-
136
- for (let iteration = 0; iteration < CLAMP_ITERATION_LIMIT; iteration++) {
137
- let worst_plane = -1;
138
- let worst_distance = 0;
139
-
140
- for (j = 0; j < plane_count; j++) {
141
- const plane = planes[j];
142
-
143
- const distance = v3_distance_above_plane(
144
- px, py, pz,
145
- plane.x, plane.y, plane.z, plane.w
146
- );
147
-
148
- if (distance < worst_distance) {
149
- worst_distance = distance;
150
- worst_plane = j;
151
- }
152
- }
153
-
154
- if (worst_plane === -1) {
155
- // inside every plane
156
- break;
157
- }
158
-
159
- const plane = planes[worst_plane];
160
-
161
- plane3_project_point(scratch_v3_0, px, py, pz, plane.x, plane.y, plane.z, plane.w);
162
-
163
- px = scratch_v3_0.x;
164
- py = scratch_v3_0.y;
165
- pz = scratch_v3_0.z;
166
- }
167
-
168
- result.set(px, py, pz);
169
- }
170
-
171
- return false;
172
- }
1
+ import { v3_distance_above_plane } from "../../vec3/v3_distance_above_plane.js";
2
+ import Vector3 from "../../Vector3.js";
3
+ import { plane3_compute_intersection } from "../plane/plane3_compute_intersection.js";
4
+ import { plane3_project_point } from "../plane/plane3_project_point.js";
5
+
6
+ /**
7
+ * Indices into the caller's plane list, for the planes the target lies outside of.
8
+ * @type {number[]}
9
+ */
10
+ const scratch_outer_planes = [];
11
+
12
+ const scratch_v3_0 = new Vector3();
13
+
14
+ const scratch_v3_1 = new Vector3();
15
+
16
+ /**
17
+ * How many projection rounds the degenerate-edge fallback takes before it settles for where it
18
+ * has got to. Bounded rather than convergent: the loop must not be able to spin on a degenerate
19
+ * frustum.
20
+ * @type {number}
21
+ */
22
+ const CLAMP_ITERATION_LIMIT = 32;
23
+
24
+ /**
25
+ * The point inside a convex frustum nearest to a target point, and whether the target was already
26
+ * inside it.
27
+ *
28
+ * **A plane is a `Vector4`**: `x, y, z` its normal and `w` its constant, inside where
29
+ * `dot(normal, p) + w` is non-negative. That is the same four numbers every frustum query in the
30
+ * tree reads and what `camera_active_frustum` publishes; it used to be a three `Plane`, whose
31
+ * `normal`/`constant` pair is the same thing wearing an object (X15d).
32
+ *
33
+ * @param {Vector3} result
34
+ * @param {Vector4[]} planes
35
+ * @param {number} target_x
36
+ * @param {number} target_y
37
+ * @param {number} target_z
38
+ * @returns {boolean} if point is inside the frustum - true, false otherwise
39
+ */
40
+ export function frustum3_compute_closest_point(result, planes, target_x, target_y, target_z) {
41
+ let j;
42
+
43
+ let outside_plane_count = 0;
44
+
45
+ const plane_count = planes.length;
46
+
47
+ for (j = 0; j < plane_count; j++) {
48
+
49
+ const plane = planes[j];
50
+
51
+ const distance = v3_distance_above_plane(
52
+ target_x, target_y, target_z,
53
+ plane.x, plane.y, plane.z, plane.w
54
+ );
55
+
56
+ if (distance < 0) {
57
+
58
+ scratch_outer_planes[outside_plane_count] = j;
59
+
60
+ outside_plane_count++;
61
+
62
+ }
63
+
64
+ }
65
+
66
+ if (outside_plane_count === 0) {
67
+ result.set(target_x, target_y, target_z);
68
+
69
+ return true;
70
+ }
71
+
72
+ // point is outside the frustum
73
+
74
+ // Several violated planes need not all meet at the nearest point. A feasible face projection
75
+ // attains that halfspace's distance lower bound, so it is also nearest to the whole frustum.
76
+ for (let candidate = 0; candidate < outside_plane_count; candidate++) {
77
+ const face = planes[scratch_outer_planes[candidate]];
78
+ // Stored Float32 normals are only approximately unit length.
79
+ const normal_length_squared = face.x * face.x + face.y * face.y + face.z * face.z;
80
+ const offset = -v3_distance_above_plane(target_x, target_y, target_z, face.x, face.y, face.z, face.w)
81
+ / normal_length_squared;
82
+ scratch_v3_0.set(target_x + face.x * offset, target_y + face.y * offset, target_z + face.z * offset);
83
+
84
+ let inside = true;
85
+ for (j = 0; j < plane_count; j++) {
86
+ if (j === scratch_outer_planes[candidate]) {
87
+ // The projection lies on this face; recomputing it can produce roundoff below zero.
88
+ continue;
89
+ }
90
+ const plane = planes[j];
91
+ if (v3_distance_above_plane(
92
+ scratch_v3_0.x, scratch_v3_0.y, scratch_v3_0.z,
93
+ plane.x, plane.y, plane.z, plane.w
94
+ ) < 0) {
95
+ inside = false;
96
+ break;
97
+ }
98
+ }
99
+
100
+ if (inside) {
101
+ result.copy(scratch_v3_0);
102
+ return false;
103
+ }
104
+ }
105
+
106
+ // If no face projection is feasible, the closest point is on an edge or corner.
107
+ // At least one active plane was initially violated; clip its intersection lines to the frustum.
108
+ let best_distance_squared = Infinity;
109
+ let best_x = 0, best_y = 0, best_z = 0;
110
+ for (let candidate = 0; candidate < outside_plane_count; candidate++) {
111
+ const face_index = scratch_outer_planes[candidate];
112
+ const face = planes[face_index];
113
+ for (let edge_index = 0; edge_index < plane_count; edge_index++) {
114
+ if (edge_index === face_index) continue;
115
+ const edge_plane = planes[edge_index];
116
+ if (edge_index < face_index && v3_distance_above_plane(
117
+ target_x, target_y, target_z,
118
+ edge_plane.x, edge_plane.y, edge_plane.z, edge_plane.w
119
+ ) < 0) continue;
120
+ if (!plane3_compute_intersection(
121
+ scratch_v3_0, scratch_v3_1,
122
+ face.x, face.y, face.z, face.w,
123
+ edge_plane.x, edge_plane.y, edge_plane.z, edge_plane.w
124
+ )) continue;
125
+
126
+ const ox = scratch_v3_0.x, oy = scratch_v3_0.y, oz = scratch_v3_0.z;
127
+ const dx = scratch_v3_1.x, dy = scratch_v3_1.y, dz = scratch_v3_1.z;
128
+ let lower = -Infinity;
129
+ let upper = Infinity;
130
+ for (j = 0; j < plane_count; j++) {
131
+ if (j === face_index || j === edge_index) continue;
132
+ const plane = planes[j];
133
+ const along = plane.x * dx + plane.y * dy + plane.z * dz;
134
+ const at_origin = v3_distance_above_plane(ox, oy, oz, plane.x, plane.y, plane.z, plane.w);
135
+ if (along > 0) {
136
+ lower = Math.max(lower, -at_origin / along);
137
+ } else if (along < 0) {
138
+ upper = Math.min(upper, -at_origin / along);
139
+ } else if (at_origin < 0) {
140
+ lower = Infinity;
141
+ upper = -Infinity;
142
+ break;
143
+ }
144
+ }
145
+ if (lower > upper) continue;
146
+
147
+ const direction_length_squared = dx * dx + dy * dy + dz * dz;
148
+ const target_parameter = ((target_x - ox) * dx + (target_y - oy) * dy + (target_z - oz) * dz)
149
+ / direction_length_squared;
150
+ const parameter = Math.max(lower, Math.min(upper, target_parameter));
151
+ const px = ox + dx * parameter, py = oy + dy * parameter, pz = oz + dz * parameter;
152
+ const tx = px - target_x, ty = py - target_y, tz = pz - target_z;
153
+ const distance_squared = tx * tx + ty * ty + tz * tz;
154
+ if (distance_squared < best_distance_squared) {
155
+ best_distance_squared = distance_squared;
156
+ best_x = px;
157
+ best_y = py;
158
+ best_z = pz;
159
+ }
160
+ }
161
+ }
162
+ if (best_distance_squared < Infinity) {
163
+ result.set(best_x, best_y, best_z);
164
+ return false;
165
+ }
166
+
167
+ // Retain the bounded projection fallback if no usable clipped edge was obtained.
168
+ let px = target_x;
169
+ let py = target_y;
170
+ let pz = target_z;
171
+
172
+ for (let iteration = 0; iteration < CLAMP_ITERATION_LIMIT; iteration++) {
173
+ let worst_plane = -1;
174
+ let worst_distance = 0;
175
+
176
+ for (j = 0; j < plane_count; j++) {
177
+ const plane = planes[j];
178
+
179
+ const distance = v3_distance_above_plane(
180
+ px, py, pz,
181
+ plane.x, plane.y, plane.z, plane.w
182
+ );
183
+
184
+ if (distance < worst_distance) {
185
+ worst_distance = distance;
186
+ worst_plane = j;
187
+ }
188
+ }
189
+
190
+ if (worst_plane === -1) {
191
+ // inside every plane
192
+ break;
193
+ }
194
+
195
+ const plane = planes[worst_plane];
196
+
197
+ plane3_project_point(scratch_v3_0, px, py, pz, plane.x, plane.y, plane.z, plane.w);
198
+
199
+ px = scratch_v3_0.x;
200
+ py = scratch_v3_0.y;
201
+ pz = scratch_v3_0.z;
202
+ }
203
+
204
+ result.set(px, py, pz);
205
+
206
+ return false;
207
+ }