@woosh/meep-engine 3.41.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 (344) 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/triangle/tri3_ray_intersection.d.ts +20 -0
  63. package/src/core/geom/3d/triangle/tri3_ray_intersection.d.ts.map +1 -1
  64. package/src/core/geom/3d/triangle/tri3_ray_intersection.js +182 -0
  65. package/src/core/math/noise/curl_noise_3dt.d.ts.map +1 -1
  66. package/src/core/math/noise/curl_noise_3dt.js +20 -10
  67. package/src/core/math/noise/sdnoise.d.ts +16 -5
  68. package/src/core/math/noise/sdnoise.d.ts.map +1 -1
  69. package/src/core/math/noise/sdnoise.js +43 -9
  70. package/src/core/math/spline/spline3_hermite_nearest_point.d.ts +16 -1
  71. package/src/core/math/spline/spline3_hermite_nearest_point.d.ts.map +1 -1
  72. package/src/core/math/spline/spline3_hermite_nearest_point.js +44 -3
  73. package/src/engine/Engine.d.ts.map +1 -1
  74. package/src/engine/Engine.js +6 -2
  75. package/src/engine/control/first-person/FirstPersonPlayerController.d.ts +9 -0
  76. package/src/engine/control/first-person/FirstPersonPlayerController.d.ts.map +1 -1
  77. package/src/engine/control/first-person/FirstPersonPlayerControllerConfig.d.ts +26 -0
  78. package/src/engine/control/first-person/FirstPersonPlayerControllerConfig.d.ts.map +1 -1
  79. package/src/engine/control/first-person/FirstPersonPlayerControllerConfig.js +2 -0
  80. package/src/engine/control/first-person/abilities/AbilitySet.d.ts.map +1 -1
  81. package/src/engine/control/first-person/abilities/AbilitySet.js +9 -0
  82. package/src/engine/control/first-person/abilities/LedgeGrab.d.ts.map +1 -1
  83. package/src/engine/control/first-person/abilities/LedgeGrab.js +6 -0
  84. package/src/engine/control/first-person/abilities/Slide.d.ts.map +1 -1
  85. package/src/engine/control/first-person/abilities/Slide.js +1 -0
  86. package/src/engine/control/first-person/abilities/WallRun.d.ts +4 -1
  87. package/src/engine/control/first-person/abilities/WallRun.d.ts.map +1 -1
  88. package/src/engine/control/first-person/abilities/WallRun.js +13 -1
  89. package/src/engine/control/first-person/mastery/SlideInitiationTimingEvaluator.d.ts +1 -1
  90. package/src/engine/control/first-person/mastery/SlideInitiationTimingEvaluator.d.ts.map +1 -1
  91. package/src/engine/control/first-person/mastery/SlideInitiationTimingEvaluator.js +6 -5
  92. package/src/engine/control/first-person/mastery/StrideTimingJumpEvaluator.d.ts +3 -3
  93. package/src/engine/control/first-person/mastery/StrideTimingJumpEvaluator.d.ts.map +1 -1
  94. package/src/engine/control/first-person/mastery/StrideTimingJumpEvaluator.js +9 -8
  95. package/src/engine/control/first-person/sensors/FirstPersonSensorsSystem.d.ts.map +1 -1
  96. package/src/engine/control/first-person/sensors/FirstPersonSensorsSystem.js +13 -4
  97. package/src/engine/ecs/EntityManager.d.ts.map +1 -1
  98. package/src/engine/ecs/EntityManager.js +18 -15
  99. package/src/engine/ecs/dynamic_actions/rules/DynamicRuleDescription.d.ts.map +1 -1
  100. package/src/engine/ecs/dynamic_actions/rules/DynamicRuleDescription.js +2 -1
  101. package/src/engine/ecs/dynamic_actions/rules/DynamicRuleDescriptionTable.d.ts.map +1 -1
  102. package/src/engine/ecs/dynamic_actions/rules/DynamicRuleDescriptionTable.js +1 -0
  103. package/src/engine/ecs/fow/FogOfWarRevealerSystem.d.ts.map +1 -1
  104. package/src/engine/ecs/fow/FogOfWarRevealerSystem.js +3 -0
  105. package/src/engine/ecs/parent/EntityNode.js +3 -3
  106. package/src/engine/ecs/speaker/VoiceSystem.d.ts.map +1 -1
  107. package/src/engine/ecs/speaker/VoiceSystem.js +4 -0
  108. package/src/engine/ecs/storage/BinaryBufferDeSerializer.js +5 -5
  109. package/src/engine/ecs/storage/binary/BinarySerializationRegistry.d.ts.map +1 -1
  110. package/src/engine/ecs/storage/binary/BinarySerializationRegistry.js +3 -2
  111. package/src/engine/ecs/storage/binary/object/BinaryObjectSerializationAdapter2.js +1 -1
  112. package/src/engine/ecs/storage/binary/object-v2/BinaryObjectDeSerializer.d.ts.map +1 -1
  113. package/src/engine/ecs/storage/binary/object-v2/BinaryObjectDeSerializer.js +8 -1
  114. package/src/engine/ecs/storage/populateEngineSerializationRegistry.d.ts.map +1 -1
  115. package/src/engine/ecs/storage/populateEngineSerializationRegistry.js +8 -0
  116. package/src/engine/ecs/terrain/ecs/cling/ClingToTerrainSystem.d.ts.map +1 -1
  117. package/src/engine/ecs/terrain/ecs/cling/ClingToTerrainSystem.js +5 -2
  118. package/src/engine/ecs/terrain/ecs/layers/TerrainLayers.d.ts.map +1 -1
  119. package/src/engine/ecs/terrain/ecs/layers/TerrainLayers.js +3 -0
  120. package/src/engine/ecs/terrain/ecs/splat/SplatMapping.d.ts.map +1 -1
  121. package/src/engine/ecs/terrain/ecs/splat/SplatMapping.js +1 -0
  122. package/src/engine/ecs/terrain/overlay/TerrainOverlay.js +1 -1
  123. package/src/engine/ecs/terrain/tiles/TerrainTile.d.ts.map +1 -1
  124. package/src/engine/ecs/terrain/tiles/TerrainTile.js +13 -1
  125. package/src/engine/ecs/terrain/tiles/TerrainTileManager.d.ts.map +1 -1
  126. package/src/engine/ecs/terrain/tiles/TerrainTileManager.js +1 -0
  127. package/src/engine/graphics/ecs/light/LightSerializationAdapter.d.ts.map +1 -1
  128. package/src/engine/graphics/ecs/light/LightSerializationAdapter.js +13 -1
  129. package/src/engine/graphics/ecs/light/LightSerializationUpgrader_0_1.d.ts +5 -0
  130. package/src/engine/graphics/ecs/light/LightSerializationUpgrader_0_1.d.ts.map +1 -0
  131. package/src/engine/graphics/ecs/light/LightSerializationUpgrader_0_1.js +27 -0
  132. package/src/engine/graphics/ecs/water/Water.d.ts +11 -0
  133. package/src/engine/graphics/ecs/water/Water.d.ts.map +1 -1
  134. package/src/engine/graphics/ecs/water/Water.js +17 -0
  135. package/src/engine/graphics/ecs/water/WaterSerializationAdapter.d.ts.map +1 -1
  136. package/src/engine/graphics/ecs/water/WaterSerializationAdapter.js +3 -1
  137. package/src/engine/graphics/ecs/water/WaterSerializationUpgrader_4_5.d.ts +9 -0
  138. package/src/engine/graphics/ecs/water/WaterSerializationUpgrader_4_5.d.ts.map +1 -0
  139. package/src/engine/graphics/ecs/water/WaterSerializationUpgrader_4_5.js +24 -0
  140. package/src/engine/graphics/ecs/water/WaterWaves.d.ts +30 -9
  141. package/src/engine/graphics/ecs/water/WaterWaves.d.ts.map +1 -1
  142. package/src/engine/graphics/ecs/water/WaterWaves.js +41 -9
  143. package/src/engine/graphics/ecs/water/WaterWavesSerializationAdapter.d.ts.map +1 -1
  144. package/src/engine/graphics/ecs/water/WaterWavesSerializationAdapter.js +30 -26
  145. package/src/engine/graphics/ecs/water/WaterWavesSerializationUpgrader_0_1.d.ts +6 -0
  146. package/src/engine/graphics/ecs/water/WaterWavesSerializationUpgrader_0_1.d.ts.map +1 -0
  147. package/src/engine/graphics/ecs/water/WaterWavesSerializationUpgrader_0_1.js +22 -0
  148. package/src/engine/graphics/geometry/buffered/query/bvh32_geometry_raycast.d.ts.map +1 -1
  149. package/src/engine/graphics/geometry/buffered/query/bvh32_geometry_raycast.js +3 -5
  150. package/src/engine/graphics/texture/3d/scs3d_sample_linear3.d.ts +20 -0
  151. package/src/engine/graphics/texture/3d/scs3d_sample_linear3.d.ts.map +1 -1
  152. package/src/engine/graphics/texture/3d/scs3d_sample_linear3.js +36 -0
  153. package/src/engine/graphics3/WaterSystem.d.ts +12 -3
  154. package/src/engine/graphics3/WaterSystem.d.ts.map +1 -1
  155. package/src/engine/graphics3/WaterSystem.js +78 -46
  156. package/src/engine/input/devices/PointerDevice.d.ts.map +1 -1
  157. package/src/engine/input/devices/PointerDevice.js +29 -4
  158. package/src/engine/intelligence/behavior/selector/WeightedRandomBehavior.d.ts +1 -0
  159. package/src/engine/intelligence/behavior/selector/WeightedRandomBehavior.d.ts.map +1 -1
  160. package/src/engine/intelligence/behavior/selector/WeightedRandomBehavior.js +14 -3
  161. package/src/engine/physics/fluid/ecs/FluidObstacleSystem.d.ts +4 -4
  162. package/src/engine/physics/fluid/solver/v3_grid_advect_maccormack_velocity.d.ts.map +1 -1
  163. package/src/engine/physics/fluid/solver/v3_grid_advect_maccormack_velocity.js +12 -3
  164. package/src/engine/physics/fluid/solver/v3_grid_advect_sl_velocity.d.ts.map +1 -1
  165. package/src/engine/physics/fluid/solver/v3_grid_advect_sl_velocity.js +8 -2
  166. package/src/engine/physics/fluid/solver/v3_grid_sample_scalar_masked.d.ts +19 -0
  167. package/src/engine/physics/fluid/solver/v3_grid_sample_scalar_masked.d.ts.map +1 -1
  168. package/src/engine/physics/fluid/solver/v3_grid_sample_scalar_masked.js +41 -2
  169. package/src/engine/physics/fluid/solver/v3_mac_advect_scalar.d.ts.map +1 -1
  170. package/src/engine/physics/fluid/solver/v3_mac_advect_scalar.js +9 -3
  171. package/src/engine/physics/fluid/solver/v3_mac_advect_sl_velocity.d.ts.map +1 -1
  172. package/src/engine/physics/fluid/solver/v3_mac_advect_sl_velocity.js +26 -10
  173. package/src/engine/sound/sopra/definition/clip/RandomContainerAudioClip.d.ts +3 -6
  174. package/src/engine/sound/sopra/definition/clip/RandomContainerAudioClip.d.ts.map +1 -1
  175. package/src/engine/sound/sopra/definition/clip/RandomContainerAudioClip.js +22 -9
  176. package/src/engine/ui/DraggableAspect.d.ts +5 -1
  177. package/src/engine/ui/DraggableAspect.d.ts.map +1 -1
  178. package/src/engine/ui/DraggableAspect.js +61 -4
  179. package/src/format/image/avif/heif/ItemProperty.d.ts +1 -1
  180. package/src/format/image/avif/heif/ItemProperty.js +1 -1
  181. package/src/format/image/png/chunk/png_chunk_decode_iTXt.d.ts.map +1 -1
  182. package/src/format/image/png/chunk/png_chunk_decode_iTXt.js +17 -6
  183. package/src/shade/device/mock/SoftwareGPUDevice.d.ts +2 -4
  184. package/src/shade/device/mock/SoftwareGPUDevice.d.ts.map +1 -1
  185. package/src/shade/device/mock/SoftwareGPUDevice.js +20 -13
  186. package/src/shade/playground/skinned_blas_refit/sweep_views.d.ts.map +1 -1
  187. package/src/shade/playground/skinned_blas_refit/sweep_views.js +2 -1
  188. package/src/shade/playground/water_refraction/README.md +10 -11
  189. package/src/shade/playground/water_refraction/main.js +9 -8
  190. package/src/shade/playground/water_refraction/world.js +1 -1
  191. package/src/shade/playground/water_surface/README.md +43 -0
  192. package/src/shade/playground/water_surface/index.html +30 -0
  193. package/src/shade/playground/water_surface/main.d.ts +2 -0
  194. package/src/shade/playground/water_surface/main.d.ts.map +1 -0
  195. package/src/shade/playground/water_surface/main.js +154 -0
  196. package/src/shade/playground/water_surface/world.d.ts +44 -0
  197. package/src/shade/playground/water_surface/world.d.ts.map +1 -0
  198. package/src/shade/playground/water_surface/world.js +160 -0
  199. package/src/shade/renderer/animation/skinning/GPUMeshSkinningContext.d.ts.map +1 -1
  200. package/src/shade/renderer/animation/skinning/GPUMeshSkinningContext.js +5 -0
  201. package/src/shade/renderer/binding/BufferBinding.js +2 -2
  202. package/src/shade/renderer/buffer/table/GPUTypedTable.d.ts.map +1 -1
  203. package/src/shade/renderer/buffer/table/GPUTypedTable.js +5 -3
  204. package/src/shade/renderer/buffer/table/GPUTypedTableDescriptor.d.ts +10 -3
  205. package/src/shade/renderer/buffer/table/GPUTypedTableDescriptor.d.ts.map +1 -1
  206. package/src/shade/renderer/buffer/table/GPUTypedTableDescriptor.js +17 -9
  207. package/src/shade/renderer/camera/orbital/OrbitalCameraInput.d.ts +3 -0
  208. package/src/shade/renderer/camera/orbital/OrbitalCameraInput.d.ts.map +1 -1
  209. package/src/shade/renderer/camera/orbital/OrbitalCameraInput.js +16 -0
  210. package/src/shade/renderer/camera/orbital/OrbitalCameraRig.d.ts +2 -0
  211. package/src/shade/renderer/camera/orbital/OrbitalCameraRig.d.ts.map +1 -1
  212. package/src/shade/renderer/camera/orbital/OrbitalCameraRig.js +11 -0
  213. package/src/shade/renderer/geometry/meshlet/build/meshoptimizer/geometry_to_meshlets_meshoptimizer.d.ts +1 -1
  214. package/src/shade/renderer/geometry/meshlet/build/meshoptimizer/geometry_to_meshlets_meshoptimizer.d.ts.map +1 -1
  215. package/src/shade/renderer/geometry/meshlet/build/meshoptimizer/geometry_to_meshlets_meshoptimizer.js +9 -3
  216. package/src/shade/renderer/geometry/util/geometry_simplify_redundant_topology.d.ts.map +1 -1
  217. package/src/shade/renderer/geometry/util/geometry_simplify_redundant_topology.js +2 -2
  218. package/src/shade/renderer/geometry/virtual/format/vgeo_validate_container.d.ts.map +1 -1
  219. package/src/shade/renderer/geometry/virtual/format/vgeo_validate_container.js +85 -0
  220. package/src/shade/renderer/geometry/virtual/runtime/GPUVirtualGeometryRuntime.d.ts.map +1 -1
  221. package/src/shade/renderer/geometry/virtual/runtime/GPUVirtualGeometryRuntime.js +12 -6
  222. package/src/shade/renderer/geometry/virtual/runtime/VGeoPageFetcher.d.ts.map +1 -1
  223. package/src/shade/renderer/geometry/virtual/runtime/VGeoPageFetcher.js +7 -0
  224. package/src/shade/renderer/geometry/virtual/runtime/VGeoRuntimeTables.d.ts.map +1 -1
  225. package/src/shade/renderer/geometry/virtual/runtime/VGeoRuntimeTables.js +3 -1
  226. package/src/shade/renderer/loader/gltf/tiny-gltf.d.ts +1 -1
  227. package/src/shade/renderer/scene/SCENE_DATABASE_SPEC.js +2 -1
  228. package/src/shade/renderer/shader/chunk/math/fft/chunk_fft128_inverse.d.ts +13 -0
  229. package/src/shade/renderer/shader/chunk/math/fft/chunk_fft128_inverse.d.ts.map +1 -0
  230. package/src/shade/renderer/shader/chunk/math/fft/chunk_fft128_inverse.js +42 -0
  231. package/src/shade/renderer/shader/chunk/math/fft/chunk_fft128x4_inverse_workgroup.d.ts +15 -0
  232. package/src/shade/renderer/shader/chunk/math/fft/chunk_fft128x4_inverse_workgroup.d.ts.map +1 -0
  233. package/src/shade/renderer/shader/chunk/math/fft/chunk_fft128x4_inverse_workgroup.js +39 -0
  234. package/src/shade/renderer/shader/resource/ShaderResourceSetDescriptor.d.ts.map +1 -1
  235. package/src/shade/renderer/shader/resource/ShaderResourceSetDescriptor.js +2 -0
  236. package/src/shade/renderer/water/GPUWaterRenderer.d.ts +15 -0
  237. package/src/shade/renderer/water/GPUWaterRenderer.d.ts.map +1 -1
  238. package/src/shade/renderer/water/GPUWaterRenderer.js +110 -30
  239. package/src/shade/renderer/water/medium/GPUWaterBodies.d.ts +16 -8
  240. package/src/shade/renderer/water/medium/GPUWaterBodies.d.ts.map +1 -1
  241. package/src/shade/renderer/water/medium/GPUWaterBodies.js +31 -26
  242. package/src/shade/renderer/water/medium/shader_water_meshlets.d.ts +0 -1
  243. package/src/shade/renderer/water/medium/shader_water_meshlets.d.ts.map +1 -1
  244. package/src/shade/renderer/water/medium/shader_water_meshlets.js +1 -39
  245. package/src/shade/renderer/water/shader_water.d.ts +0 -1
  246. package/src/shade/renderer/water/shader_water.d.ts.map +1 -1
  247. package/src/shade/renderer/water/shader_water.js +201 -72
  248. package/src/shade/renderer/water/surface/GPUWaterSurface.d.ts +70 -0
  249. package/src/shade/renderer/water/surface/GPUWaterSurface.d.ts.map +1 -0
  250. package/src/shade/renderer/water/surface/GPUWaterSurface.js +199 -0
  251. package/src/shade/renderer/water/surface/WATER_WAVE_RECORD_STRUCT.d.ts +5 -2
  252. package/src/shade/renderer/water/surface/WATER_WAVE_RECORD_STRUCT.d.ts.map +1 -1
  253. package/src/shade/renderer/water/surface/WATER_WAVE_RECORD_STRUCT.js +32 -12
  254. package/src/shade/renderer/water/surface/chunk_water_surface_sample.d.ts +22 -0
  255. package/src/shade/renderer/water/surface/chunk_water_surface_sample.d.ts.map +1 -0
  256. package/src/shade/renderer/water/surface/chunk_water_surface_sample.js +217 -0
  257. package/src/shade/renderer/water/surface/graph_water_tessellation.d.ts +65 -11
  258. package/src/shade/renderer/water/surface/graph_water_tessellation.d.ts.map +1 -1
  259. package/src/shade/renderer/water/surface/graph_water_tessellation.js +163 -28
  260. package/src/shade/renderer/water/surface/lod/WATER_LOD.d.ts +51 -0
  261. package/src/shade/renderer/water/surface/lod/WATER_LOD.d.ts.map +1 -0
  262. package/src/shade/renderer/water/surface/lod/WATER_LOD.js +95 -0
  263. package/src/shade/renderer/water/surface/lod/chunk_water_lod.d.ts +10 -0
  264. package/src/shade/renderer/water/surface/lod/chunk_water_lod.d.ts.map +1 -0
  265. package/src/shade/renderer/water/surface/lod/chunk_water_lod.js +127 -0
  266. package/src/shade/renderer/water/surface/lod/chunk_water_lod_cell.d.ts +17 -0
  267. package/src/shade/renderer/water/surface/lod/chunk_water_lod_cell.d.ts.map +1 -0
  268. package/src/shade/renderer/water/surface/lod/chunk_water_lod_cell.js +246 -0
  269. package/src/shade/renderer/water/surface/lod/shader_water_lod.d.ts +118 -0
  270. package/src/shade/renderer/water/surface/lod/shader_water_lod.d.ts.map +1 -0
  271. package/src/shade/renderer/water/surface/lod/shader_water_lod.js +727 -0
  272. package/src/shade/renderer/water/surface/particles/GPUWaterParticles.d.ts +60 -0
  273. package/src/shade/renderer/water/surface/particles/GPUWaterParticles.d.ts.map +1 -0
  274. package/src/shade/renderer/water/surface/particles/GPUWaterParticles.js +228 -0
  275. package/src/shade/renderer/water/surface/particles/WATER_PARTICLE_STRUCT.d.ts +17 -0
  276. package/src/shade/renderer/water/surface/particles/WATER_PARTICLE_STRUCT.d.ts.map +1 -0
  277. package/src/shade/renderer/water/surface/particles/WATER_PARTICLE_STRUCT.js +49 -0
  278. package/src/shade/renderer/water/surface/particles/chunk_water_particle.d.ts +22 -0
  279. package/src/shade/renderer/water/surface/particles/chunk_water_particle.d.ts.map +1 -0
  280. package/src/shade/renderer/water/surface/particles/chunk_water_particle.js +143 -0
  281. package/src/shade/renderer/water/surface/particles/chunk_water_particle_step.d.ts +15 -0
  282. package/src/shade/renderer/water/surface/particles/chunk_water_particle_step.d.ts.map +1 -0
  283. package/src/shade/renderer/water/surface/particles/chunk_water_particle_step.js +121 -0
  284. package/src/shade/renderer/water/surface/particles/shader_water_particles.d.ts +83 -0
  285. package/src/shade/renderer/water/surface/particles/shader_water_particles.d.ts.map +1 -0
  286. package/src/shade/renderer/water/surface/particles/shader_water_particles.js +502 -0
  287. package/src/shade/renderer/water/surface/shader_water_cull.d.ts +42 -0
  288. package/src/shade/renderer/water/surface/shader_water_cull.d.ts.map +1 -0
  289. package/src/shade/renderer/water/surface/shader_water_cull.js +269 -0
  290. package/src/shade/renderer/water/surface/shader_water_waves_combine.d.ts +15 -0
  291. package/src/shade/renderer/water/surface/shader_water_waves_combine.d.ts.map +1 -0
  292. package/src/shade/renderer/water/surface/shader_water_waves_combine.js +73 -0
  293. package/src/shade/renderer/water/surface/shader_water_waves_derive.d.ts +11 -0
  294. package/src/shade/renderer/water/surface/shader_water_waves_derive.d.ts.map +1 -0
  295. package/src/shade/renderer/water/surface/shader_water_waves_derive.js +78 -0
  296. package/src/shade/renderer/water/surface/spectrum/GPUWaterSpectrum.d.ts +35 -0
  297. package/src/shade/renderer/water/surface/spectrum/GPUWaterSpectrum.d.ts.map +1 -0
  298. package/src/shade/renderer/water/surface/spectrum/GPUWaterSpectrum.js +103 -0
  299. package/src/shade/renderer/water/surface/spectrum/WATER_BAND_STATE.d.ts +22 -0
  300. package/src/shade/renderer/water/surface/spectrum/WATER_BAND_STATE.d.ts.map +1 -0
  301. package/src/shade/renderer/water/surface/spectrum/WATER_BAND_STATE.js +57 -0
  302. package/src/shade/renderer/water/surface/spectrum/WATER_SPECTRUM.d.ts +22 -0
  303. package/src/shade/renderer/water/surface/spectrum/WATER_SPECTRUM.d.ts.map +1 -0
  304. package/src/shade/renderer/water/surface/spectrum/WATER_SPECTRUM.js +25 -0
  305. package/src/shade/renderer/water/surface/spectrum/chunk_water_jonswap.d.ts +14 -0
  306. package/src/shade/renderer/water/surface/spectrum/chunk_water_jonswap.d.ts.map +1 -0
  307. package/src/shade/renderer/water/surface/spectrum/chunk_water_jonswap.js +48 -0
  308. package/src/shade/renderer/water/surface/spectrum/chunk_water_spectrum.d.ts +23 -0
  309. package/src/shade/renderer/water/surface/spectrum/chunk_water_spectrum.d.ts.map +1 -0
  310. package/src/shade/renderer/water/surface/spectrum/chunk_water_spectrum.js +169 -0
  311. package/src/shade/renderer/water/surface/spectrum/shader_water_spectrum.d.ts +26 -0
  312. package/src/shade/renderer/water/surface/spectrum/shader_water_spectrum.d.ts.map +1 -0
  313. package/src/shade/renderer/water/surface/spectrum/shader_water_spectrum.js +161 -0
  314. package/src/shade/wgsl/emulator/WGSLJavaScriptCompiler.d.ts.map +1 -1
  315. package/src/shade/wgsl/emulator/WGSLJavaScriptCompiler.js +18 -6
  316. package/src/shade/wgsl/emulator/WGSLLanguageCore.d.ts.map +1 -1
  317. package/src/shade/wgsl/emulator/WGSLLanguageCore.js +11 -3
  318. package/src/core/geom/2d/polygon/polygon2_triangulate.corpus.d.ts +0 -28
  319. package/src/core/geom/2d/polygon/polygon2_triangulate.corpus.d.ts.map +0 -1
  320. package/src/core/geom/2d/polygon/polygon2_triangulate.corpus.js +0 -86
  321. package/src/engine/ecs/storage/binary/object-v2/serializerTestHarness.d.ts +0 -29
  322. package/src/engine/ecs/storage/binary/object-v2/serializerTestHarness.d.ts.map +0 -1
  323. package/src/engine/ecs/storage/binary/object-v2/serializerTestHarness.js +0 -44
  324. package/src/shade/renderer/water/medium/shader_water_bodies_derive.d.ts +0 -4
  325. package/src/shade/renderer/water/medium/shader_water_bodies_derive.d.ts.map +0 -1
  326. package/src/shade/renderer/water/medium/shader_water_bodies_derive.js +0 -32
  327. package/src/shade/renderer/water/surface/GPUWaterWaveSimulation.d.ts +0 -25
  328. package/src/shade/renderer/water/surface/GPUWaterWaveSimulation.d.ts.map +0 -1
  329. package/src/shade/renderer/water/surface/GPUWaterWaveSimulation.js +0 -128
  330. package/src/shade/renderer/water/surface/chunk_water_tessellation.d.ts +0 -9
  331. package/src/shade/renderer/water/surface/chunk_water_tessellation.d.ts.map +0 -1
  332. package/src/shade/renderer/water/surface/chunk_water_tessellation.js +0 -144
  333. package/src/shade/renderer/water/surface/chunk_water_wave.d.ts +0 -13
  334. package/src/shade/renderer/water/surface/chunk_water_wave.d.ts.map +0 -1
  335. package/src/shade/renderer/water/surface/chunk_water_wave.js +0 -40
  336. package/src/shade/renderer/water/surface/shader_water_tiles.d.ts +0 -4
  337. package/src/shade/renderer/water/surface/shader_water_tiles.d.ts.map +0 -1
  338. package/src/shade/renderer/water/surface/shader_water_tiles.js +0 -123
  339. package/src/shade/renderer/water/surface/shader_water_wave_batch.d.ts +0 -6
  340. package/src/shade/renderer/water/surface/shader_water_wave_batch.d.ts.map +0 -1
  341. package/src/shade/renderer/water/surface/shader_water_wave_batch.js +0 -85
  342. package/src/shade/renderer/water/surface/shader_water_wave_domain.d.ts +0 -6
  343. package/src/shade/renderer/water/surface/shader_water_wave_domain.d.ts.map +0 -1
  344. package/src/shade/renderer/water/surface/shader_water_wave_domain.js +0 -83
@@ -1 +1 @@
1
- {"version":3,"file":"gjk_epa_penetration.d.ts","sourceRoot":"","sources":["../../../../../../src/core/geom/3d/gjk/gjk_epa_penetration.js"],"names":[],"mappings":"AAkkBA;;;;;;;;;;;;;;;;GAgBG;AACH,yCATW,YAAY,GAAC,MAAM,EAAE,KACrB,eAAe,KACf,eAAe,GACb,MAAM,CA0BlB;AA7DD;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,4BAFU,MAAM,CAEgB;;;;;;;8BAzdnB;IAAE,OAAO,SAAW,YAAY,QAAE,MAAM,QAAE,CAAC,YAAY,GAAC,MAAM,EAAE,CAAC,QAAE,MAAM,KAAG,IAAI,CAAA;CAAE"}
1
+ {"version":3,"file":"gjk_epa_penetration.d.ts","sourceRoot":"","sources":["../../../../../../src/core/geom/3d/gjk/gjk_epa_penetration.js"],"names":[],"mappings":"AAmkBA;;;;;;;;;;;;;;;;GAgBG;AACH,yCATW,YAAY,GAAC,MAAM,EAAE,KACrB,eAAe,KACf,eAAe,GACb,MAAM,CA0BlB;AA7DD;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,4BAFU,MAAM,CAEgB;;;;;;;8BA1dnB;IAAE,OAAO,SAAW,YAAY,QAAE,MAAM,QAAE,CAAC,YAAY,GAAC,MAAM,EAAE,CAAC,QAAE,MAAM,KAAG,IAAI,CAAA;CAAE"}
@@ -533,9 +533,6 @@ function epa(A, B, out) {
533
533
  // Degenerate: no face survived. Report no usable axis (the caller treats a
534
534
  // non-positive depth as a miss) rather than reading a stale face and
535
535
  // throwing out of the narrowphase step.
536
- out[0] = 0;
537
- out[1] = 0;
538
- out[2] = 0;
539
536
  return 0;
540
537
  }
541
538
 
@@ -545,11 +542,15 @@ function epa(A, B, out) {
545
542
  best = f;
546
543
  }
547
544
  }
545
+ const depth = FACE_DIST[best];
546
+ if (!(depth > 0) || !Number.isFinite(depth)) {
547
+ return 0;
548
+ }
548
549
  const bn = best * 3;
549
550
  out[0] = FACE_N[bn];
550
551
  out[1] = FACE_N[bn + 1];
551
552
  out[2] = FACE_N[bn + 2];
552
- return FACE_DIST[best];
553
+ return depth;
553
554
  }
554
555
 
555
556
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"line3_compute_segment_point_distance_eikonal.d.ts","sourceRoot":"","sources":["../../../../../../src/core/geom/3d/line/line3_compute_segment_point_distance_eikonal.js"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AACH,iEAbW,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,GACJ,MAAM,CAkFlB"}
1
+ {"version":3,"file":"line3_compute_segment_point_distance_eikonal.d.ts","sourceRoot":"","sources":["../../../../../../src/core/geom/3d/line/line3_compute_segment_point_distance_eikonal.js"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AACH,iEAbW,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,GACJ,MAAM,CAwFlB"}
@@ -26,7 +26,13 @@ export function line3_compute_segment_point_distance_eikonal(
26
26
  const ab_z = z1 - z0;
27
27
  const L = Math.hypot(ab_x, ab_y, ab_z);
28
28
 
29
- if (L < 1e-9) return Math.min(d0, d1);
29
+ if (L < 1e-9) {
30
+ // A point-like edge still leaves the distance from its endpoints to the target.
31
+ return Math.min(
32
+ d0 + Math.hypot(px - x0, py - y0, pz - z0),
33
+ d1 + Math.hypot(px - x1, py - y1, pz - z1)
34
+ );
35
+ }
30
36
 
31
37
  // Vector AC
32
38
  const ac_x = px - x0;
@@ -93,4 +99,4 @@ export function line3_compute_segment_point_distance_eikonal(
93
99
  const dist_to_v1 = Math.hypot(px - x1, py - y1, pz - z1);
94
100
  return Math.min(d0 + dist_to_v0, d1 + dist_to_v1);
95
101
  }
96
- }
102
+ }
@@ -20,4 +20,24 @@
20
20
  * @returns {boolean}
21
21
  */
22
22
  export function tri3_ray_intersection(result: SurfacePoint3, origin_x: number, origin_y: number, origin_z: number, direction_x: number, direction_y: number, direction_z: number, ax: number, ay: number, az: number, bx: number, by: number, bz: number, cx: number, cy: number, cz: number): boolean;
23
+ /**
24
+ * Ray-triangle intersection with vertices read from a packed triangle,
25
+ * [ax, ay, az, bx, by, bz, cx, cy, cz] at triangle_offset.
26
+ *
27
+ * All nine coordinates are read before validation or output writes so output
28
+ * callbacks can mutate the source without changing this intersection.
29
+ * The arithmetic and output order match tri3_ray_intersection.
30
+ *
31
+ * @param {import("../SurfacePoint3.js").SurfacePoint3} result
32
+ * @param {number} origin_x
33
+ * @param {number} origin_y
34
+ * @param {number} origin_z
35
+ * @param {number} direction_x
36
+ * @param {number} direction_y
37
+ * @param {number} direction_z
38
+ * @param {ArrayLike<number>|number[]|Float32Array|Float64Array} triangle
39
+ * @param {number} [triangle_offset=0]
40
+ * @returns {boolean}
41
+ */
42
+ export function tri3_ray_intersection_triangle_array(result: import("../SurfacePoint3.js").SurfacePoint3, origin_x: number, origin_y: number, origin_z: number, direction_x: number, direction_y: number, direction_z: number, triangle: ArrayLike<number> | number[] | Float32Array | Float64Array, triangle_offset?: number): boolean;
23
43
  //# sourceMappingURL=tri3_ray_intersection.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"tri3_ray_intersection.d.ts","sourceRoot":"","sources":["../../../../../../src/core/geom/3d/triangle/tri3_ray_intersection.js"],"names":[],"mappings":"AAGA;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,uEAjBW,MAAM,YACN,MAAM,YACN,MAAM,eACN,MAAM,eACN,MAAM,eACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,GACJ,OAAO,CAoJnB"}
1
+ {"version":3,"file":"tri3_ray_intersection.d.ts","sourceRoot":"","sources":["../../../../../../src/core/geom/3d/triangle/tri3_ray_intersection.js"],"names":[],"mappings":"AAGA;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,uEAjBW,MAAM,YACN,MAAM,YACN,MAAM,eACN,MAAM,eACN,MAAM,eACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,GACJ,OAAO,CAoJnB;AAGD;;;;;;;;;;;;;;;;;;GAkBG;AACH,6DAXW,OAAO,qBAAqB,EAAE,aAAa,YAC3C,MAAM,YACN,MAAM,YACN,MAAM,eACN,MAAM,eACN,MAAM,eACN,MAAM,YACN,UAAU,MAAM,CAAC,GAAC,MAAM,EAAE,GAAC,YAAY,GAAC,YAAY,oBACpD,MAAM,GACJ,OAAO,CAmKnB"}
@@ -170,3 +170,185 @@ export function tri3_ray_intersection(
170
170
  return true;
171
171
  }
172
172
 
173
+
174
+ /**
175
+ * Ray-triangle intersection with vertices read from a packed triangle,
176
+ * [ax, ay, az, bx, by, bz, cx, cy, cz] at triangle_offset.
177
+ *
178
+ * All nine coordinates are read before validation or output writes so output
179
+ * callbacks can mutate the source without changing this intersection.
180
+ * The arithmetic and output order match tri3_ray_intersection.
181
+ *
182
+ * @param {import("../SurfacePoint3.js").SurfacePoint3} result
183
+ * @param {number} origin_x
184
+ * @param {number} origin_y
185
+ * @param {number} origin_z
186
+ * @param {number} direction_x
187
+ * @param {number} direction_y
188
+ * @param {number} direction_z
189
+ * @param {ArrayLike<number>|number[]|Float32Array|Float64Array} triangle
190
+ * @param {number} [triangle_offset=0]
191
+ * @returns {boolean}
192
+ */
193
+ export function tri3_ray_intersection_triangle_array(
194
+ result,
195
+ origin_x, origin_y, origin_z,
196
+ direction_x, direction_y, direction_z,
197
+ triangle, triangle_offset = 0
198
+ ) {
199
+ const ax = triangle[triangle_offset];
200
+ const ay = triangle[triangle_offset + 1];
201
+ const az = triangle[triangle_offset + 2];
202
+ const bx = triangle[triangle_offset + 3];
203
+ const by = triangle[triangle_offset + 4];
204
+ const bz = triangle[triangle_offset + 5];
205
+ const cx = triangle[triangle_offset + 6];
206
+ const cy = triangle[triangle_offset + 7];
207
+ const cz = triangle[triangle_offset + 8];
208
+
209
+ // Finite primitive numbers keep the valid path unboxed. The fallback
210
+ // preserves the scalar form's validation order and diagnostic messages.
211
+ if (!(Number.isFinite(ax) && Number.isFinite(ay) && Number.isFinite(az)
212
+ && Number.isFinite(bx) && Number.isFinite(by) && Number.isFinite(bz)
213
+ && Number.isFinite(cx) && Number.isFinite(cy) && Number.isFinite(cz))) {
214
+ assert.isNumber(ax, 'ax');
215
+ assert.isNumber(ay, 'ay');
216
+ assert.isNumber(az, 'az');
217
+
218
+ assert.isNumber(bx, 'bx');
219
+ assert.isNumber(by, 'by');
220
+ assert.isNumber(bz, 'bz');
221
+
222
+ assert.isNumber(cx, 'cx');
223
+ assert.isNumber(cy, 'cy');
224
+ assert.isNumber(cz, 'cz');
225
+
226
+ // nan checks
227
+ assert.notNaN(ax, 'ax');
228
+ assert.notNaN(ay, 'ay');
229
+ assert.notNaN(az, 'az');
230
+
231
+ assert.notNaN(bx, 'bx');
232
+ assert.notNaN(by, 'by');
233
+ assert.notNaN(bz, 'bz');
234
+
235
+ assert.notNaN(cx, 'cx');
236
+ assert.notNaN(cy, 'cy');
237
+ assert.notNaN(cz, 'cz');
238
+
239
+ // finate number check
240
+ assert.isFinite(ax, 'ax');
241
+ assert.isFinite(ay, 'ay');
242
+ assert.isFinite(az, 'az');
243
+
244
+ assert.isFinite(bx, 'bx');
245
+ assert.isFinite(by, 'by');
246
+ assert.isFinite(bz, 'bz');
247
+
248
+ assert.isFinite(cx, 'cx');
249
+ assert.isFinite(cy, 'cy');
250
+ assert.isFinite(cz, 'cz');
251
+
252
+
253
+ }
254
+
255
+ // edge1 = a - b
256
+ const edge1_x = bx - ax;
257
+ const edge1_y = by - ay;
258
+ const edge1_z = bz - az;
259
+
260
+ // edge2 = c - a
261
+ const edge2_x = cx - ax;
262
+ const edge2_y = cy - ay;
263
+ const edge2_z = cz - az;
264
+
265
+ // Compute triangle normal
266
+
267
+ // normal = edge1 x edge2
268
+ const normal_x = edge1_y * edge2_z - edge1_z * edge2_y;
269
+ const normal_y = edge1_z * edge2_x - edge1_x * edge2_z;
270
+ const normal_z = edge1_x * edge2_y - edge1_y * edge2_x
271
+
272
+ let DdN = v3_dot(direction_x, direction_y, direction_z, normal_x, normal_y, normal_z);
273
+ let sign = 1;
274
+
275
+ if (DdN === 0) {
276
+ // ray and the triangle normal are orthogonal, means that the ray can not pass penetrate triangle
277
+ return false;
278
+ } else if (DdN < 0) {
279
+ sign = -1;
280
+ DdN = -DdN;
281
+ }
282
+
283
+ // diff = origin - a
284
+ const diff_x = origin_x - ax;
285
+ const diff_y = origin_y - ay;
286
+ const diff_z = origin_z - az;
287
+
288
+ // edge3 = diff x edge2
289
+ const edge3_x = diff_y * edge2_z - diff_z * edge2_y;
290
+ const edge3_y = diff_z * edge2_x - diff_x * edge2_z;
291
+ const edge3_z = diff_x * edge2_y - diff_y * edge2_x;
292
+
293
+ // DdQxE2 = sign * ( direction . edge3)
294
+ const DdQxE2 = sign * v3_dot(direction_x, direction_y, direction_z, edge3_x, edge3_y, edge3_z);
295
+
296
+ if (DdQxE2 < 0) {
297
+ // b1 < 0, no intersection
298
+ return false;
299
+ }
300
+
301
+ const edge4_x = edge1_y * diff_z - edge1_z * diff_y;
302
+ const edge4_y = edge1_z * diff_x - edge1_x * diff_z;
303
+ const edge4_z = edge1_x * diff_y - edge1_y * diff_x;
304
+
305
+ const DdE1xQ = sign * v3_dot(direction_x, direction_y, direction_z, edge4_x, edge4_y, edge4_z);
306
+
307
+ if (DdE1xQ < 0) {
308
+ // b2 < 0, no intersection
309
+ return false;
310
+ }
311
+
312
+ if (DdQxE2 + DdE1xQ > DdN) {
313
+ // b1+b2 > 1, no intersection
314
+ return false;
315
+ }
316
+
317
+ // Line intersects triangle, check if ray does.
318
+ const QdN = -sign * v3_dot(diff_x, diff_y, diff_z, normal_x, normal_y, normal_z);
319
+
320
+ if (QdN < 0) {
321
+ // t < 0, no intersection
322
+ return false;
323
+
324
+ }
325
+
326
+ // Ray intersects triangle.
327
+ const t = QdN / DdN;
328
+
329
+ // `normal_x/y/z` is the raw `edge1 x edge2`, whose length is twice the triangle's area - it was
330
+ // written straight into `SurfacePoint3.normal`, which is documented as a surface normal and is
331
+ // a unit vector out of every other producer in the tree.
332
+ //
333
+ // NOTE: normalised but NOT turned to meet the ray, unlike `tri3_raycast`. This normal keeps the
334
+ // winding's facing on purpose: `StaticSceneBVH.raycast_nearest` derives `geometric_back_face`
335
+ // from `dot(normal, direction)`, and a normal pre-flipped toward the ray would report every hit
336
+ // as front-facing.
337
+ const normal_length = Math.sqrt(normal_x * normal_x + normal_y * normal_y + normal_z * normal_z);
338
+
339
+ const inv_normal_length = 1 / normal_length;
340
+
341
+ result.normal.set(
342
+ normal_x * inv_normal_length,
343
+ normal_y * inv_normal_length,
344
+ normal_z * inv_normal_length
345
+ );
346
+
347
+ result.position.set(
348
+ direction_x * t + origin_x,
349
+ direction_y * t + origin_y,
350
+ direction_z * t + origin_z,
351
+ );
352
+
353
+ return true;
354
+ }
@@ -1 +1 @@
1
- {"version":3,"file":"curl_noise_3dt.d.ts","sourceRoot":"","sources":["../../../../../src/core/math/noise/curl_noise_3dt.js"],"names":[],"mappings":"AAMA;;;;;;;GAOG;AACH,uCANW,MAAM,EAAE,KACR,MAAM,KACN,MAAM,KACN,MAAM,KACN,MAAM,QAehB"}
1
+ {"version":3,"file":"curl_noise_3dt.d.ts","sourceRoot":"","sources":["../../../../../src/core/math/noise/curl_noise_3dt.js"],"names":[],"mappings":"AAOA;;;;;;;GAOG;AACH,uCANW,MAAM,EAAE,KACR,MAAM,KACN,MAAM,KACN,MAAM,KACN,MAAM,QAwBhB"}
@@ -1,8 +1,9 @@
1
- import { sdnoise3 } from "./sdnoise.js";
1
+ import { sdnoise3_array } from "./sdnoise.js";
2
2
 
3
- const p_x0 = [];
4
- const p_y0 = [];
5
- const p_z0 = [];
3
+ const p_x0 = new Float64Array(4);
4
+ const p_y0 = new Float64Array(4);
5
+ const p_z0 = new Float64Array(4);
6
+ const sample_position = new Float64Array(3);
6
7
 
7
8
  /**
8
9
  *
@@ -14,13 +15,22 @@ const p_z0 = [];
14
15
  */
15
16
  export function curl_noise_3dt(result, x, y, z, w) {
16
17
 
17
- sdnoise3(p_x0, x + w, y, z);
18
- sdnoise3(p_y0, x + 31.341, y - 43.23 + w, z + 12.34);
19
- sdnoise3(p_z0, x - 231.141, y + 124.123, z - 54.4341 + w);
18
+ sample_position[0] = x + w;
19
+ sample_position[1] = y;
20
+ sample_position[2] = z;
21
+ sdnoise3_array(p_x0, 0, sample_position, 0);
22
+ sample_position[0] = x + 31.341;
23
+ sample_position[1] = y - 43.23 + w;
24
+ sample_position[2] = z + 12.34;
25
+ sdnoise3_array(p_y0, 0, sample_position, 0);
26
+ sample_position[0] = x - 231.141;
27
+ sample_position[1] = y + 124.123;
28
+ sample_position[2] = z - 54.4341 + w;
29
+ sdnoise3_array(p_z0, 0, sample_position, 0);
20
30
 
21
- const _x = p_z0[1] - p_y0[2];
22
- const _y = p_x0[2] - p_z0[0];
23
- const _z = p_y0[0] - p_x0[1];
31
+ const _x = p_z0[2] - p_y0[3];
32
+ const _y = p_x0[3] - p_z0[1];
33
+ const _z = p_y0[1] - p_x0[2];
24
34
 
25
35
  result[0] = _x;
26
36
  result[1] = _y;
@@ -17,17 +17,28 @@ export function sdnoise1(derivatives: number[], x: number): number;
17
17
  * @returns {number}
18
18
  */
19
19
  export function sdnoise2(derivatives: number[], x: number, y: number): number;
20
- /** 3D simplex noise with derivatives.
21
- * If the last tthree arguments are not null, the analytic derivative
22
- * (the 3D gradient of the scalar noise field) is also calculated.
20
+ /** 3D simplex noise with its analytic gradient, written into derivatives[0..2].
21
+ * Scalar facade over {@link sdnoise3_array}; returns the noise value.
23
22
  *
23
+ * @param {number[]|Float32Array|Float64Array} derivatives
24
24
  * @param {number} x
25
25
  * @param {number} y
26
26
  * @param {number} z
27
- * @param {number[]} derivatives
28
27
  * @returns {number}
29
28
  */
30
- export function sdnoise3(derivatives: number[], x: number, y: number, z: number): number;
29
+ export function sdnoise3(derivatives: number[] | Float32Array | Float64Array, x: number, y: number, z: number): number;
30
+ /**
31
+ * 3D simplex noise and its analytic gradient, with packed coordinates.
32
+ * Writes [noise, dx, dy, dz] at out_offset and returns nothing. Coordinates
33
+ * are read before output stores, so input and output may overlap.
34
+ *
35
+ * @param {number[]|Float32Array|Float64Array} out
36
+ * @param {number} out_offset
37
+ * @param {ArrayLike<number>} position
38
+ * @param {number} position_offset
39
+ * @returns {void}
40
+ */
41
+ export function sdnoise3_array(out: number[] | Float32Array | Float64Array, out_offset: number, position: ArrayLike<number>, position_offset: number): void;
31
42
  /**
32
43
  * 4D simplex noise with derivatives.
33
44
  * If the last four arguments are not null, the analytic derivative
@@ -1 +1 @@
1
- {"version":3,"file":"sdnoise.d.ts","sourceRoot":"","sources":["../../../../../src/core/math/noise/sdnoise.js"],"names":[],"mappings":"AA6LA;;;;;;;GAOG;AACH,sCAHW,MAAM,EAAE,KADR,MAAM,GAEJ,MAAM,CAsDlB;AAUD;;;;;;;;GAQG;AACH,sCAHW,MAAM,EAAE,KAFR,MAAM,KACN,MAAM,GAEJ,MAAM,CAmIlB;AAUD;;;;;;;;;GASG;AACH,sCAHW,MAAM,EAAE,KAHR,MAAM,KACN,MAAM,KACN,MAAM,GAEJ,MAAM,CAgPlB;AAMD;;;;;;;;;;GAUG;AACH,sCAPW,MAAM,EAAE,KACR,MAAM,KACN,MAAM,KACN,MAAM,KACN,MAAM,GACJ,MAAM,CAgSlB"}
1
+ {"version":3,"file":"sdnoise.d.ts","sourceRoot":"","sources":["../../../../../src/core/math/noise/sdnoise.js"],"names":[],"mappings":"AA6LA;;;;;;;GAOG;AACH,sCAHW,MAAM,EAAE,KADR,MAAM,GAEJ,MAAM,CAsDlB;AAUD;;;;;;;;GAQG;AACH,sCAHW,MAAM,EAAE,KAFR,MAAM,KACN,MAAM,GAEJ,MAAM,CAmIlB;AAaD;;;;;;;;GAQG;AACH,sCANW,MAAM,EAAE,GAAC,YAAY,GAAC,YAAY,KAClC,MAAM,KACN,MAAM,KACN,MAAM,GACJ,MAAM,CAmBlB;AAED;;;;;;;;;;GAUG;AACH,oCANW,MAAM,EAAE,GAAC,YAAY,GAAC,YAAY,cAClC,MAAM,YACN,UAAU,MAAM,CAAC,mBACjB,MAAM,GACJ,IAAI,CAkPhB;AAMD;;;;;;;;;;GAUG;AACH,sCAPW,MAAM,EAAE,KACR,MAAM,KACN,MAAM,KACN,MAAM,KACN,MAAM,GACJ,MAAM,CAgSlB"}
@@ -404,18 +404,53 @@ export function sdnoise2(derivatives, x, y) {
404
404
  const F3 = 0.3333333333333333;
405
405
  const G3 = 0.16666666666666666;
406
406
 
407
+ const scalar_position = new Float64Array(3);
408
+ const scalar_noise_gradient = new Float64Array(4);
407
409
 
408
- /** 3D simplex noise with derivatives.
409
- * If the last tthree arguments are not null, the analytic derivative
410
- * (the 3D gradient of the scalar noise field) is also calculated.
410
+
411
+ /** 3D simplex noise with its analytic gradient, written into derivatives[0..2].
412
+ * Scalar facade over {@link sdnoise3_array}; returns the noise value.
411
413
  *
414
+ * @param {number[]|Float32Array|Float64Array} derivatives
412
415
  * @param {number} x
413
416
  * @param {number} y
414
417
  * @param {number} z
415
- * @param {number[]} derivatives
416
418
  * @returns {number}
417
419
  */
418
420
  export function sdnoise3(derivatives, x, y, z) {
421
+ scalar_position[0] = x;
422
+ scalar_position[1] = y;
423
+ scalar_position[2] = z;
424
+ sdnoise3_array(scalar_noise_gradient, 0, scalar_position, 0);
425
+
426
+ // A destination setter may start another sample and overwrite our scratch.
427
+ // Capture every lane before the first externally observable store.
428
+ const noise = scalar_noise_gradient[0];
429
+ const dx = scalar_noise_gradient[1];
430
+ const dy = scalar_noise_gradient[2];
431
+ const dz = scalar_noise_gradient[3];
432
+
433
+ derivatives[0] = dx;
434
+ derivatives[1] = dy;
435
+ derivatives[2] = dz;
436
+ return noise;
437
+ }
438
+
439
+ /**
440
+ * 3D simplex noise and its analytic gradient, with packed coordinates.
441
+ * Writes [noise, dx, dy, dz] at out_offset and returns nothing. Coordinates
442
+ * are read before output stores, so input and output may overlap.
443
+ *
444
+ * @param {number[]|Float32Array|Float64Array} out
445
+ * @param {number} out_offset
446
+ * @param {ArrayLike<number>} position
447
+ * @param {number} position_offset
448
+ * @returns {void}
449
+ */
450
+ export function sdnoise3_array(out, out_offset, position, position_offset) {
451
+ const x = position[position_offset];
452
+ const y = position[position_offset + 1];
453
+ const z = position[position_offset + 2];
419
454
  let n0, n1, n2, n3; /* Noise contributions from the four simplex corners */
420
455
  let gx0, gy0, gz0, gx1, gy1, gz1; /* Gradients at simplex corners */
421
456
  let gx2, gy2, gz2, gx3, gy3, gz3;
@@ -648,11 +683,10 @@ export function sdnoise3(derivatives, x, y, z) {
648
683
  dnoise_dy *= 28.0;
649
684
  dnoise_dz *= 28.0;
650
685
 
651
- derivatives[0] = dnoise_dx;
652
- derivatives[1] = dnoise_dy;
653
- derivatives[2] = dnoise_dz;
654
-
655
- return noise;
686
+ out[out_offset] = noise;
687
+ out[out_offset + 1] = dnoise_dx;
688
+ out[out_offset + 2] = dnoise_dy;
689
+ out[out_offset + 3] = dnoise_dz;
656
690
  }
657
691
 
658
692
  // The skewing and unskewing factors are hairy again for the 4D case
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * Finds the parameter 't' of the nearest point on a 1D Hermite spline
3
3
  * function graph to a reference point. The curve is defined by (t, p(t)).
4
- * This version is optimized to avoid allocations.
4
+ * Scalar facade over {@link spline3_hermite_nearest_point_array}.
5
5
  *
6
6
  * @param {number} ref_t - The 't' coordinate of the reference point.
7
7
  * @param {number} ref_p - The 'p' coordinate of the reference point.
@@ -12,4 +12,19 @@
12
12
  * @returns {number} The parameter 't' of the nearest point. This value is always in [0..1] range
13
13
  */
14
14
  export function spline3_hermite_nearest_point(ref_t: number, ref_p: number, p0: number, p1: number, m0: number, m1: number): number;
15
+ /**
16
+ * Finds the nearest parameter on a 1D Hermite spline using packed inputs and
17
+ * writes it into `out[out_offset]`. The reference is `[ref_t, ref_p]` and the
18
+ * spline is `[p0, p1, m0, m1]`. All inputs are read before the output store,
19
+ * so the destination may overlap either input.
20
+ *
21
+ * @param {number[]|Float32Array|Float64Array} out
22
+ * @param {number} out_offset
23
+ * @param {ArrayLike<number>} reference
24
+ * @param {number} reference_offset
25
+ * @param {ArrayLike<number>} spline
26
+ * @param {number} spline_offset
27
+ * @returns {void}
28
+ */
29
+ export function spline3_hermite_nearest_point_array(out: number[] | Float32Array | Float64Array, out_offset: number, reference: ArrayLike<number>, reference_offset: number, spline: ArrayLike<number>, spline_offset: number): void;
15
30
  //# sourceMappingURL=spline3_hermite_nearest_point.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"spline3_hermite_nearest_point.d.ts","sourceRoot":"","sources":["../../../../../src/core/math/spline/spline3_hermite_nearest_point.js"],"names":[],"mappings":"AAyBA;;;;;;;;;;;;GAYG;AACH,qDARW,MAAM,SACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,GACJ,MAAM,CAyFlB"}
1
+ {"version":3,"file":"spline3_hermite_nearest_point.d.ts","sourceRoot":"","sources":["../../../../../src/core/math/spline/spline3_hermite_nearest_point.js"],"names":[],"mappings":"AA6BA;;;;;;;;;;;;GAYG;AACH,qDARW,MAAM,SACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,GACJ,MAAM,CAgBlB;AAED;;;;;;;;;;;;;GAaG;AACH,yDARW,MAAM,EAAE,GAAC,YAAY,GAAC,YAAY,cAClC,MAAM,aACN,UAAU,MAAM,CAAC,oBACjB,MAAM,UACN,UAAU,MAAM,CAAC,iBACjB,MAAM,GACJ,IAAI,CAgGhB"}
@@ -20,13 +20,17 @@ function polyval(p, t, size) {
20
20
  const quintic_coeffs = new Float32Array(6);
21
21
  const quartic_coeffs = new Float32Array(5);
22
22
 
23
+ const scalar_reference = new Float64Array(2);
24
+ const scalar_spline = new Float64Array(4);
25
+ const scalar_result = new Float64Array(1);
26
+
23
27
  const NEWTON_STEPS = 3;
24
28
  const START_ROOT_COUNT = 5;
25
29
 
26
30
  /**
27
31
  * Finds the parameter 't' of the nearest point on a 1D Hermite spline
28
32
  * function graph to a reference point. The curve is defined by (t, p(t)).
29
- * This version is optimized to avoid allocations.
33
+ * Scalar facade over {@link spline3_hermite_nearest_point_array}.
30
34
  *
31
35
  * @param {number} ref_t - The 't' coordinate of the reference point.
32
36
  * @param {number} ref_p - The 'p' coordinate of the reference point.
@@ -40,6 +44,43 @@ export function spline3_hermite_nearest_point(
40
44
  ref_t, ref_p,
41
45
  p0, p1, m0, m1
42
46
  ) {
47
+ scalar_reference[0] = ref_t;
48
+ scalar_reference[1] = ref_p;
49
+ scalar_spline[0] = p0;
50
+ scalar_spline[1] = p1;
51
+ scalar_spline[2] = m0;
52
+ scalar_spline[3] = m1;
53
+
54
+ spline3_hermite_nearest_point_array(scalar_result, 0, scalar_reference, 0, scalar_spline, 0);
55
+
56
+ return scalar_result[0];
57
+ }
58
+
59
+ /**
60
+ * Finds the nearest parameter on a 1D Hermite spline using packed inputs and
61
+ * writes it into `out[out_offset]`. The reference is `[ref_t, ref_p]` and the
62
+ * spline is `[p0, p1, m0, m1]`. All inputs are read before the output store,
63
+ * so the destination may overlap either input.
64
+ *
65
+ * @param {number[]|Float32Array|Float64Array} out
66
+ * @param {number} out_offset
67
+ * @param {ArrayLike<number>} reference
68
+ * @param {number} reference_offset
69
+ * @param {ArrayLike<number>} spline
70
+ * @param {number} spline_offset
71
+ * @returns {void}
72
+ */
73
+ export function spline3_hermite_nearest_point_array(
74
+ out, out_offset,
75
+ reference, reference_offset,
76
+ spline, spline_offset
77
+ ) {
78
+ const ref_t = reference[reference_offset];
79
+ const ref_p = reference[reference_offset + 1];
80
+ const p0 = spline[spline_offset];
81
+ const p1 = spline[spline_offset + 1];
82
+ const m0 = spline[spline_offset + 2];
83
+ const m1 = spline[spline_offset + 3];
43
84
 
44
85
  // 1. Calculate polynomial coefficients A, B, C for p(t)
45
86
  const A = 2 * p0 - 2 * p1 + m0 + m1;
@@ -122,5 +163,5 @@ export function spline3_hermite_nearest_point(
122
163
  }
123
164
  }
124
165
 
125
- return best_t;
126
- }
166
+ out[out_offset] = best_t;
167
+ }
@@ -1 +1 @@
1
- {"version":3,"file":"Engine.d.ts","sourceRoot":"","sources":["../../../src/engine/Engine.js"],"names":[],"mappings":";6BAqCa,OAAO,8BAA8B,EAAE,cAAc;AAwClE;IAiGI;;;;;;;;;OASG;IACH,sBARW,cAAc;QAEU,aAAa,GAArC,aAAa;QACK,cAAc,GAAhC,OAAO;QACW,WAAW,GAA7B,OAAO;QACW,KAAK,GAAvB,OAAO;OAiPjB;IAtSD;;;OAGG;IACH,UAFU,cAAc,GAAC,IAAI,CAEb;IAEhB;;;OAGG;IACH,OAFU,WAAW,GAAC,IAAI,CAEb;IAEb,qBAA4B;IAE5B;;;;;;;;;OASG;IACH,0BAFU,uBAAuB,CAEe;IAEhD;;;OAGG;IACH,kBAFU,mBAAmB,CAEO;IAEpC;;;;OAIG;IACH,iBAFU,MAAM,CAEM;IAEtB;;;;OAIG;IACH,mBAFU,kBAAkB,CAEa;IAoBrC;;;OAGG;IACH,UAFU,cAAc,CAEA;IAKxB;;;OAGG;IACH,aAFU,gBAAgB,CAEe;IAGzC,yCAAkE;IAK9D,6BAAkC;IAMtC;;;OAGG;IACH,cAFU,aAAa,MAAM,CAAC,CAK5B;IAEF,8CAiCE;IAgCF;;;OAGG;IACH,SAFU,WAAW,CAEoB;IAEzC;;;OAGG;IACH,oCAA0C;IAE1C;;;OAGG;IACH,sCAFU,2BAA2B,CAE+B;IAEpE,yBAAoC;IAGpC;;OAEG;IACH,aAAkB;IAElB;;;OAGG;IACH,SAFU,OAAO,CAEwB;IAGzC,2BAAsC;IAuCtC;;;OAGG;IACH,KAFU,SAAS,CAEO;IAE1B;;;OAGG;IACH,uBAFU,YAAY,CAEqD;IAI3E;;;;;MAKC;IA8BD;;;OAGG;IACH,kBAFU,OAAO,CAEW;IAwIhC,wBAgCC;IApBG,oBAAwB;IAsB5B,2BA8CC;IAED,oBAiBC;IAED;;;OAGG;IACH,+CAUC;IAED,eAkDC;IAED;;;OAGG;IACH,sBAuGC;IAqBD;;OAEG;IACH,sBAgEC;IAED,aAEC;IAED;;OAEG;IACH,4BAOC;IAIL;;;OAGG;IACH,mBAFU,OAAO,CAEQ;;CAPxB;+BAl5B8B,+BAA+B;wBAWtC,wBAAwB;0BArBtB,0CAA0C;wCAeN,iDAAiD;oCAG3E,iCAAiC;mBAElD,wBAAwB;+BAtBZ,gDAAgD;iCAO9C,+CAA+C;8BAGlD,wBAAwB;6BALzB,yBAAyB;uCAIf,6DAA6D;4BAUxE,0BAA0B;+BArBvB,iCAAiC;4CAapB,qDAAqD;AAgBjG;;GAEG;AAGH;IACI,gDAA2D;IAC3D,0BAAkC;IAClC,iCAAyC;CAC5C;6BAvC4B,sCAAsC;sBA4B7C,mBAAmB;yBAJhB,yBAAyB;8BALpB,kCAAkC;2BADrC,mCAAmC;8BAFhC,kCAAkC;8BAClC,kCAAkC;sBAb1C,+BAA+B;+BAKtB,qCAAqC;4BAPxC,kCAAkC;oBAH1C,yBAAyB"}
1
+ {"version":3,"file":"Engine.d.ts","sourceRoot":"","sources":["../../../src/engine/Engine.js"],"names":[],"mappings":";6BAqCa,OAAO,8BAA8B,EAAE,cAAc;AAwClE;IAiGI;;;;;;;;;OASG;IACH,sBARW,cAAc;QAEU,aAAa,GAArC,aAAa;QACK,cAAc,GAAhC,OAAO;QACW,WAAW,GAA7B,OAAO;QACW,KAAK,GAAvB,OAAO;OAiPjB;IAtSD;;;OAGG;IACH,UAFU,cAAc,GAAC,IAAI,CAEb;IAEhB;;;OAGG;IACH,OAFU,WAAW,GAAC,IAAI,CAEb;IAEb,qBAA4B;IAE5B;;;;;;;;;OASG;IACH,0BAFU,uBAAuB,CAEe;IAEhD;;;OAGG;IACH,kBAFU,mBAAmB,CAEO;IAEpC;;;;OAIG;IACH,iBAFU,MAAM,CAEM;IAEtB;;;;OAIG;IACH,mBAFU,kBAAkB,CAEa;IAoBrC;;;OAGG;IACH,UAFU,cAAc,CAEA;IAKxB;;;OAGG;IACH,aAFU,gBAAgB,CAEe;IAGzC,yCAAkE;IAK9D,6BAAkC;IAMtC;;;OAGG;IACH,cAFU,aAAa,MAAM,CAAC,CAK5B;IAEF,8CAiCE;IAgCF;;;OAGG;IACH,SAFU,WAAW,CAEoB;IAEzC;;;OAGG;IACH,oCAA0C;IAE1C;;;OAGG;IACH,sCAFU,2BAA2B,CAE+B;IAEpE,yBAAoC;IAGpC;;OAEG;IACH,aAAkB;IAElB;;;OAGG;IACH,SAFU,OAAO,CAEwB;IAGzC,2BAAsC;IAuCtC;;;OAGG;IACH,KAFU,SAAS,CAEO;IAE1B;;;OAGG;IACH,uBAFU,YAAY,CAEqD;IAI3E;;;;;MAKC;IA8BD;;;OAGG;IACH,kBAFU,OAAO,CAEW;IAwIhC,wBAgCC;IApBG,oBAAwB;IAsB5B,2BA8CC;IAED,oBAiBC;IAED;;;OAGG;IACH,+CAUC;IAED,eAkDC;IAED;;;OAGG;IACH,sBA2GC;IAqBD;;OAEG;IACH,sBAgEC;IAED,aAEC;IAED;;OAEG;IACH,4BAOC;IAIL;;;OAGG;IACH,mBAFU,OAAO,CAEQ;;CAPxB;+BAt5B8B,+BAA+B;wBAWtC,wBAAwB;0BArBtB,0CAA0C;wCAeN,iDAAiD;oCAG3E,iCAAiC;mBAElD,wBAAwB;+BAtBZ,gDAAgD;iCAO9C,+CAA+C;8BAGlD,wBAAwB;6BALzB,yBAAyB;uCAIf,6DAA6D;4BAUxE,0BAA0B;+BArBvB,iCAAiC;4CAapB,qDAAqD;AAgBjG;;GAEG;AAGH;IACI,gDAA2D;IAC3D,0BAAkC;IAClC,iCAAyC;CAC5C;6BAvC4B,sCAAsC;sBA4B7C,mBAAmB;yBAJhB,yBAAyB;8BALpB,kCAAkC;2BADrC,mCAAmC;8BAFhC,kCAAkC;8BAClC,kCAAkC;sBAb1C,+BAA+B;+BAKtB,qCAAqC;4BAPxC,kCAAkC;oBAH1C,yBAAyB"}
@@ -770,12 +770,14 @@ class Engine {
770
770
  ? knowledge.load(this.assetManager, this.executor)
771
771
  : Promise.resolve();
772
772
 
773
- return Promise.all([
773
+ const startupPromises = [
774
774
  soundStarted.then(promiseEntityManager),
775
775
  knowledgeLoaded,
776
776
  this.gui.startup(this),
777
777
  this.plugins.startup()
778
- ]).then(async () => {
778
+ ];
779
+
780
+ return Promise.all(startupPromises).then(async () => {
779
781
 
780
782
  this.#last_frame_timestamp = performance.now();
781
783
 
@@ -804,6 +806,8 @@ class Engine {
804
806
  logger.info('engine started');
805
807
  }, async (e) => {
806
808
  logger.error(`Engine Failed to start: ${e}`);
809
+ // Each branch must settle before its resources can safely be released.
810
+ await Promise.allSettled(startupPromises);
807
811
 
808
812
  // Unwind what did come up. Before the Promise.all this method has already acquired the
809
813
  // GPU device, started the asset manager, subscribed the sound engine to pointer and
@@ -134,6 +134,15 @@ export class FirstPersonPlayerController {
134
134
  upFactor: number;
135
135
  nearWallMaxDistance: number;
136
136
  };
137
+ scrambleUp: {
138
+ baseJumpForce: number;
139
+ momentumForcePerSpeed: number;
140
+ maxJumpForce: number;
141
+ decel: number;
142
+ hugSpeed: number;
143
+ maxDuration: number;
144
+ kickOutwardImpulse: number;
145
+ };
137
146
  slide: {
138
147
  minEntrySpeed: number;
139
148
  endSpeed: number;
@@ -1 +1 @@
1
- {"version":3,"file":"FirstPersonPlayerController.d.ts","sourceRoot":"","sources":["../../../../../src/engine/control/first-person/FirstPersonPlayerController.js"],"names":[],"mappings":"AA8HA;;;;;;;;;;GAUG;AACH;IACI,wBAAgD;IAEhD,0CAAiD;IACjD,0BAAiC;IACjC,wBAA+B;IAC/B,sBAA6B;IAC7B,4BAAmC;IAEnC;;;;;;OAMG;IACH,SAFU,UAAU,CAEO;IAE3B;;;;;OAKG;IACH,WAFU,UAAU,CAES;IAE7B;;;;;;OAMG;IACH,WAFU,MAAM,CAED;IAEf;;;;;;;;;;;;;;;qCA7FA,+EAA+E;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;MA+F9E;IAED,0BAIC;IAED;;OAEG;IACH,YAFW,2BAA2B,QAKrC;IAED,qCAIC;IAED,4BAGC;IAED,eAGC;CACJ;;;;;kDAzMiD,wCAAwC;AAK1F;;;;;;;;GAQG;AACH;IACI,oEAAoE;IACpE,MADyD,OAAO,CACvC;IAEzB;;;;OAIG;IACH,MAFU,OAAO,CAEQ;IAEzB,mEAAmE;IACnE,MADwD,OAAO,CAClD;IAEb,0EAA0E;IAC1E,QAD+D,OAAO,CACvD;IAEf,qEAAqE;IACrE,QAD0D,OAAO,CAClD;CAClB;AAED;;;GAGG;AACH;IACI,kBAAgB;IAChB,0BAAsB;IAEtB,4EAA4E;IAC5E,sBAAoC;IACpC,gBAAkB;IAElB,cAAU;IACV,4DAA4D;IAC5D,wBAAoB;IACpB,yEAAyE;IACzE,uBAAgD;IAEhD,sBAAkB;IAClB,qBAAiB;IACjB,qBAAiB;IAEjB,4BAAwB;IACxB,4BAA2B;IAC3B,2BAA0B;IAC1B,2EAA2E;IAC3E,qBAAoB;IAEpB,iBAAa;IACb,oBAAgB;IAChB,qBAAiB;IACjB,yBAAqB;IAErB,oBAAgB;IAChB,kBAAc;IACd,kDAAkD;IAClD,iBAAa;IAEb,kBAAiB;IAEjB,+EAA+E;IAC/E,uBAAsB;IACtB,6EAA6E;IAC7E,sBAAqB;IAErB;;;;;;;OAOG;IACH,SAFU,MAAM,CAEmB;IAEnC,oBAAgB;CACnB;gCAzFkF,2BAA2B;AA2F9G;;;GAGG;AACH;IACI,uDAAuD;IACvD,mBAA0B;IAC1B,yEAAyE;IACzE,oBAA2B;IAC3B,kBAAkB;IAClB,mBAA0B;IAC1B,6BAA6B;IAC7B,sBAA6B;IAC7B,iDAAiD;IACjD,eAAsB;IACtB,sBAA6B;IAC7B,qBAA4B;IAC5B,sBAA6B;IAC7B,qBAA4B;IAC5B,2EAA2E;IAC3E,mBAA0B;IAC1B,2EAA2E;IAC3E,oBAA2B;IAC3B,6DAA6D;IAC7D,oBAA2B;IAC3B,+DAA+D;IAC/D,uBAA8B;CACjC;2BAvH0B,yBAAyB;2BAFzB,2BAA2B;uCAG6B,2BAA2B;0CAA3B,2BAA2B;oBAL1F,+BAA+B;oBAC/B,+BAA+B;mBAFhC,uCAAuC"}
1
+ {"version":3,"file":"FirstPersonPlayerController.d.ts","sourceRoot":"","sources":["../../../../../src/engine/control/first-person/FirstPersonPlayerController.js"],"names":[],"mappings":"AA8HA;;;;;;;;;;GAUG;AACH;IACI,wBAAgD;IAEhD,0CAAiD;IACjD,0BAAiC;IACjC,wBAA+B;IAC/B,sBAA6B;IAC7B,4BAAmC;IAEnC;;;;;;OAMG;IACH,SAFU,UAAU,CAEO;IAE3B;;;;;OAKG;IACH,WAFU,UAAU,CAES;IAE7B;;;;;;OAMG;IACH,WAFU,MAAM,CAED;IAEf;;;;;;;;;;;;;;;qCA7FA,+EAA+E;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;MA+F9E;IAED,0BAIC;IAED;;OAEG;IACH,YAFW,2BAA2B,QAKrC;IAED,qCAIC;IAED,4BAGC;IAED,eAGC;CACJ;;;;;kDAzMiD,wCAAwC;AAK1F;;;;;;;;GAQG;AACH;IACI,oEAAoE;IACpE,MADyD,OAAO,CACvC;IAEzB;;;;OAIG;IACH,MAFU,OAAO,CAEQ;IAEzB,mEAAmE;IACnE,MADwD,OAAO,CAClD;IAEb,0EAA0E;IAC1E,QAD+D,OAAO,CACvD;IAEf,qEAAqE;IACrE,QAD0D,OAAO,CAClD;CAClB;AAED;;;GAGG;AACH;IACI,kBAAgB;IAChB,0BAAsB;IAEtB,4EAA4E;IAC5E,sBAAoC;IACpC,gBAAkB;IAElB,cAAU;IACV,4DAA4D;IAC5D,wBAAoB;IACpB,yEAAyE;IACzE,uBAAgD;IAEhD,sBAAkB;IAClB,qBAAiB;IACjB,qBAAiB;IAEjB,4BAAwB;IACxB,4BAA2B;IAC3B,2BAA0B;IAC1B,2EAA2E;IAC3E,qBAAoB;IAEpB,iBAAa;IACb,oBAAgB;IAChB,qBAAiB;IACjB,yBAAqB;IAErB,oBAAgB;IAChB,kBAAc;IACd,kDAAkD;IAClD,iBAAa;IAEb,kBAAiB;IAEjB,+EAA+E;IAC/E,uBAAsB;IACtB,6EAA6E;IAC7E,sBAAqB;IAErB;;;;;;;OAOG;IACH,SAFU,MAAM,CAEmB;IAEnC,oBAAgB;CACnB;gCAzFkF,2BAA2B;AA2F9G;;;GAGG;AACH;IACI,uDAAuD;IACvD,mBAA0B;IAC1B,yEAAyE;IACzE,oBAA2B;IAC3B,kBAAkB;IAClB,mBAA0B;IAC1B,6BAA6B;IAC7B,sBAA6B;IAC7B,iDAAiD;IACjD,eAAsB;IACtB,sBAA6B;IAC7B,qBAA4B;IAC5B,sBAA6B;IAC7B,qBAA4B;IAC5B,2EAA2E;IAC3E,mBAA0B;IAC1B,2EAA2E;IAC3E,oBAA2B;IAC3B,6DAA6D;IAC7D,oBAA2B;IAC3B,+DAA+D;IAC/D,uBAA8B;CACjC;2BAvH0B,yBAAyB;2BAFzB,2BAA2B;uCAG6B,2BAA2B;0CAA3B,2BAA2B;oBAL1F,+BAA+B;oBAC/B,+BAA+B;mBAFhC,uCAAuC"}
@@ -797,6 +797,32 @@ export class FirstPersonPlayerControllerConfig {
797
797
  * is allowed (when not already wall-running). */
798
798
  nearWallMaxDistance: number;
799
799
  };
800
+ scrambleUp: {
801
+ /** Standstill push-off force (N) — a scramble jumped with no run-up. At
802
+ * the default 80 kg body + 0.45 m push-off this launches ~5 m/s (~0.9 m
803
+ * up the wall at the default decel). */
804
+ baseJumpForce: number;
805
+ /** Force (N) added per m/s of horizontal approach speed at the jump —
806
+ * the running-start reward, in the same physical currency as the base. */
807
+ momentumForcePerSpeed: number;
808
+ /** Cap on the push-off force (N) — a full sprint run-up tops out here
809
+ * (~9 m/s launch, ~2.9 m climb at the default body + decel). */
810
+ maxJumpForce: number;
811
+ /** Upward deceleration (m/s²) — strong, so the climb is a SHORT burst:
812
+ * apex ≈ launchVy²/(2·decel) m high, reached in launchVy/decel s. */
813
+ decel: number;
814
+ /** Small into-wall speed (m/s) holding the body against the face as it
815
+ * climbs (the mover clips the penetration). */
816
+ hugSpeed: number;
817
+ /** Safety cap on scramble duration (s) — releases even if the apex
818
+ * somehow isn't reached. */
819
+ maxDuration: number;
820
+ /** Wall-kick (jump during the scramble): outward impulse (m/s along the
821
+ * wall normal). The kick's UPWARD launch is not tuned here — it uses the
822
+ * body's full jump push-off force (`runtime.jumpForce`), so a wall-kick
823
+ * rises like a max-height jump. */
824
+ kickOutwardImpulse: number;
825
+ };
800
826
  slide: {
801
827
  /**
802
828
  * Required horizontal speed to start a slide. Below this,