@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.
- package/build/bundle-worker-image-decoder.js +1 -1
- package/build/bundle-worker-terrain.js +1 -1
- package/editor/selection/editor_pick.d.ts.map +1 -1
- package/editor/selection/editor_pick.js +2 -1
- package/editor/tools/TransformToolV2.d.ts.map +1 -1
- package/editor/tools/TransformToolV2.js +7 -1
- package/editor/tools/engine/ToolEngine.d.ts.map +1 -1
- package/editor/tools/engine/ToolEngine.js +10 -0
- package/editor/tools/v2/TransformControls.d.ts.map +1 -1
- package/editor/tools/v2/TransformControls.js +7 -20
- package/editor/tools/v2/handle/gizmo_drag_plane.d.ts.map +1 -1
- package/editor/tools/v2/handle/gizmo_drag_plane.js +4 -0
- package/editor/view/ecs/EntityEditor.d.ts.map +1 -1
- package/editor/view/ecs/EntityEditor.js +3 -1
- package/editor/view/node-graph/NodeGraphView.d.ts.map +1 -1
- package/editor/view/node-graph/NodeGraphView.js +28 -12
- package/package.json +1 -1
- package/samples/engine/first-scene/index.html +4 -1
- package/samples/engine/first-scene/main.js +14 -9
- package/src/core/binary/utf8/utf8_decode.js +3 -3
- package/src/core/bvh2/binary/2/bvh32_query_user_data_ray.d.ts.map +1 -1
- package/src/core/bvh2/binary/2/bvh32_query_user_data_ray.js +112 -113
- package/src/core/bvh2/bvh3/ebvh_nodes_sort_sah_local4.js +2 -2
- package/src/core/cache/wtinylfu/benchmark/CacheWTinylfu.bench.md +14 -14
- package/src/core/collection/RingBuffer.d.ts.map +1 -1
- package/src/core/collection/RingBuffer.js +4 -0
- package/src/core/collection/array/array_contains_duplicates.d.ts.map +1 -1
- package/src/core/collection/array/array_contains_duplicates.js +2 -1
- package/src/core/collection/array/array_copy.d.ts.map +1 -1
- package/src/core/collection/array/array_copy.js +23 -0
- package/src/core/collection/array/typed/sparse_typed_array_hash.d.ts +2 -2
- package/src/core/collection/array/typed/sparse_typed_array_hash.d.ts.map +1 -1
- package/src/core/collection/array/typed/sparse_typed_array_hash.js +9 -8
- package/src/core/collection/array/typed/uint16_array_hash.d.ts +2 -2
- package/src/core/collection/array/typed/uint16_array_hash.js +4 -4
- package/src/core/collection/array/typed/uint8_array_hash.d.ts +2 -2
- package/src/core/collection/array/typed/uint8_array_hash.js +4 -4
- package/src/core/collection/array/weightedRandomFromArray.d.ts +1 -0
- package/src/core/collection/array/weightedRandomFromArray.d.ts.map +1 -1
- package/src/core/collection/array/weightedRandomFromArray.js +9 -1
- package/src/core/collection/heap/BinaryHeap.d.ts.map +1 -1
- package/src/core/collection/heap/BinaryHeap.js +4 -0
- package/src/core/collection/list/List.d.ts.map +1 -1
- package/src/core/collection/list/List.js +4 -2
- package/src/core/collection/set/ArraySet.js +1 -1
- package/src/core/collection/set/HashSet.d.ts +1 -1
- package/src/core/collection/set/HashSet.d.ts.map +1 -1
- package/src/core/collection/set/HashSet.js +4 -2
- package/src/core/debug/matchers/IsEqual.js +1 -1
- package/src/core/debug/matchers/IsIterableContaining.d.ts.map +1 -1
- package/src/core/debug/matchers/IsIterableContaining.js +61 -74
- package/src/core/events/signal/SignalBinding.js +101 -101
- package/src/core/function/extractFunctionBody.js +13 -13
- package/src/core/function/objectsEqual.d.ts.map +1 -1
- package/src/core/function/objectsEqual.js +15 -14
- package/src/core/geom/3d/frustum/frustum3_compute_closest_point.d.ts.map +1 -1
- package/src/core/geom/3d/frustum/frustum3_compute_closest_point.js +207 -172
- package/src/core/geom/3d/gjk/gjk_epa_penetration.d.ts.map +1 -1
- package/src/core/geom/3d/gjk/gjk_epa_penetration.js +5 -4
- package/src/core/geom/3d/line/line3_compute_segment_point_distance_eikonal.d.ts.map +1 -1
- package/src/core/geom/3d/line/line3_compute_segment_point_distance_eikonal.js +8 -2
- package/src/core/geom/3d/triangle/tri3_ray_intersection.d.ts +20 -0
- package/src/core/geom/3d/triangle/tri3_ray_intersection.d.ts.map +1 -1
- package/src/core/geom/3d/triangle/tri3_ray_intersection.js +182 -0
- package/src/core/math/noise/curl_noise_3dt.d.ts.map +1 -1
- package/src/core/math/noise/curl_noise_3dt.js +20 -10
- package/src/core/math/noise/sdnoise.d.ts +16 -5
- package/src/core/math/noise/sdnoise.d.ts.map +1 -1
- package/src/core/math/noise/sdnoise.js +43 -9
- package/src/core/math/spline/spline3_hermite_nearest_point.d.ts +16 -1
- package/src/core/math/spline/spline3_hermite_nearest_point.d.ts.map +1 -1
- package/src/core/math/spline/spline3_hermite_nearest_point.js +44 -3
- package/src/engine/Engine.d.ts.map +1 -1
- package/src/engine/Engine.js +6 -2
- package/src/engine/control/first-person/FirstPersonPlayerController.d.ts +9 -0
- package/src/engine/control/first-person/FirstPersonPlayerController.d.ts.map +1 -1
- package/src/engine/control/first-person/FirstPersonPlayerControllerConfig.d.ts +26 -0
- package/src/engine/control/first-person/FirstPersonPlayerControllerConfig.d.ts.map +1 -1
- package/src/engine/control/first-person/FirstPersonPlayerControllerConfig.js +2 -0
- package/src/engine/control/first-person/abilities/AbilitySet.d.ts.map +1 -1
- package/src/engine/control/first-person/abilities/AbilitySet.js +9 -0
- package/src/engine/control/first-person/abilities/LedgeGrab.d.ts.map +1 -1
- package/src/engine/control/first-person/abilities/LedgeGrab.js +6 -0
- package/src/engine/control/first-person/abilities/Slide.d.ts.map +1 -1
- package/src/engine/control/first-person/abilities/Slide.js +1 -0
- package/src/engine/control/first-person/abilities/WallRun.d.ts +4 -1
- package/src/engine/control/first-person/abilities/WallRun.d.ts.map +1 -1
- package/src/engine/control/first-person/abilities/WallRun.js +13 -1
- package/src/engine/control/first-person/mastery/SlideInitiationTimingEvaluator.d.ts +1 -1
- package/src/engine/control/first-person/mastery/SlideInitiationTimingEvaluator.d.ts.map +1 -1
- package/src/engine/control/first-person/mastery/SlideInitiationTimingEvaluator.js +6 -5
- package/src/engine/control/first-person/mastery/StrideTimingJumpEvaluator.d.ts +3 -3
- package/src/engine/control/first-person/mastery/StrideTimingJumpEvaluator.d.ts.map +1 -1
- package/src/engine/control/first-person/mastery/StrideTimingJumpEvaluator.js +9 -8
- package/src/engine/control/first-person/sensors/FirstPersonSensorsSystem.d.ts.map +1 -1
- package/src/engine/control/first-person/sensors/FirstPersonSensorsSystem.js +13 -4
- package/src/engine/ecs/EntityManager.d.ts.map +1 -1
- package/src/engine/ecs/EntityManager.js +18 -15
- package/src/engine/ecs/dynamic_actions/rules/DynamicRuleDescription.d.ts.map +1 -1
- package/src/engine/ecs/dynamic_actions/rules/DynamicRuleDescription.js +2 -1
- package/src/engine/ecs/dynamic_actions/rules/DynamicRuleDescriptionTable.d.ts.map +1 -1
- package/src/engine/ecs/dynamic_actions/rules/DynamicRuleDescriptionTable.js +1 -0
- package/src/engine/ecs/fow/FogOfWarRevealerSystem.d.ts.map +1 -1
- package/src/engine/ecs/fow/FogOfWarRevealerSystem.js +3 -0
- package/src/engine/ecs/parent/EntityNode.js +3 -3
- package/src/engine/ecs/speaker/VoiceSystem.d.ts.map +1 -1
- package/src/engine/ecs/speaker/VoiceSystem.js +4 -0
- package/src/engine/ecs/storage/BinaryBufferDeSerializer.js +5 -5
- package/src/engine/ecs/storage/binary/BinarySerializationRegistry.d.ts.map +1 -1
- package/src/engine/ecs/storage/binary/BinarySerializationRegistry.js +3 -2
- package/src/engine/ecs/storage/binary/object/BinaryObjectSerializationAdapter2.js +1 -1
- package/src/engine/ecs/storage/binary/object-v2/BinaryObjectDeSerializer.d.ts.map +1 -1
- package/src/engine/ecs/storage/binary/object-v2/BinaryObjectDeSerializer.js +8 -1
- package/src/engine/ecs/storage/populateEngineSerializationRegistry.d.ts.map +1 -1
- package/src/engine/ecs/storage/populateEngineSerializationRegistry.js +8 -0
- package/src/engine/ecs/terrain/ecs/cling/ClingToTerrainSystem.d.ts.map +1 -1
- package/src/engine/ecs/terrain/ecs/cling/ClingToTerrainSystem.js +5 -2
- package/src/engine/ecs/terrain/ecs/layers/TerrainLayers.d.ts.map +1 -1
- package/src/engine/ecs/terrain/ecs/layers/TerrainLayers.js +3 -0
- package/src/engine/ecs/terrain/ecs/splat/SplatMapping.d.ts.map +1 -1
- package/src/engine/ecs/terrain/ecs/splat/SplatMapping.js +1 -0
- package/src/engine/ecs/terrain/overlay/TerrainOverlay.js +1 -1
- package/src/engine/ecs/terrain/tiles/TerrainTile.d.ts.map +1 -1
- package/src/engine/ecs/terrain/tiles/TerrainTile.js +13 -1
- package/src/engine/ecs/terrain/tiles/TerrainTileManager.d.ts.map +1 -1
- package/src/engine/ecs/terrain/tiles/TerrainTileManager.js +1 -0
- package/src/engine/graphics/ecs/light/LightSerializationAdapter.d.ts.map +1 -1
- package/src/engine/graphics/ecs/light/LightSerializationAdapter.js +13 -1
- package/src/engine/graphics/ecs/light/LightSerializationUpgrader_0_1.d.ts +5 -0
- package/src/engine/graphics/ecs/light/LightSerializationUpgrader_0_1.d.ts.map +1 -0
- package/src/engine/graphics/ecs/light/LightSerializationUpgrader_0_1.js +27 -0
- package/src/engine/graphics/ecs/water/Water.d.ts +11 -0
- package/src/engine/graphics/ecs/water/Water.d.ts.map +1 -1
- package/src/engine/graphics/ecs/water/Water.js +17 -0
- package/src/engine/graphics/ecs/water/WaterSerializationAdapter.d.ts.map +1 -1
- package/src/engine/graphics/ecs/water/WaterSerializationAdapter.js +3 -1
- package/src/engine/graphics/ecs/water/WaterSerializationUpgrader_4_5.d.ts +9 -0
- package/src/engine/graphics/ecs/water/WaterSerializationUpgrader_4_5.d.ts.map +1 -0
- package/src/engine/graphics/ecs/water/WaterSerializationUpgrader_4_5.js +24 -0
- package/src/engine/graphics/ecs/water/WaterWaves.d.ts +30 -9
- package/src/engine/graphics/ecs/water/WaterWaves.d.ts.map +1 -1
- package/src/engine/graphics/ecs/water/WaterWaves.js +41 -9
- package/src/engine/graphics/ecs/water/WaterWavesSerializationAdapter.d.ts.map +1 -1
- package/src/engine/graphics/ecs/water/WaterWavesSerializationAdapter.js +30 -26
- package/src/engine/graphics/ecs/water/WaterWavesSerializationUpgrader_0_1.d.ts +6 -0
- package/src/engine/graphics/ecs/water/WaterWavesSerializationUpgrader_0_1.d.ts.map +1 -0
- package/src/engine/graphics/ecs/water/WaterWavesSerializationUpgrader_0_1.js +22 -0
- package/src/engine/graphics/geometry/buffered/query/bvh32_geometry_raycast.d.ts.map +1 -1
- package/src/engine/graphics/geometry/buffered/query/bvh32_geometry_raycast.js +3 -5
- package/src/engine/graphics/texture/3d/scs3d_sample_linear3.d.ts +20 -0
- package/src/engine/graphics/texture/3d/scs3d_sample_linear3.d.ts.map +1 -1
- package/src/engine/graphics/texture/3d/scs3d_sample_linear3.js +36 -0
- package/src/engine/graphics3/WaterSystem.d.ts +12 -3
- package/src/engine/graphics3/WaterSystem.d.ts.map +1 -1
- package/src/engine/graphics3/WaterSystem.js +78 -46
- package/src/engine/input/devices/PointerDevice.d.ts.map +1 -1
- package/src/engine/input/devices/PointerDevice.js +29 -4
- package/src/engine/intelligence/behavior/selector/WeightedRandomBehavior.d.ts +1 -0
- package/src/engine/intelligence/behavior/selector/WeightedRandomBehavior.d.ts.map +1 -1
- package/src/engine/intelligence/behavior/selector/WeightedRandomBehavior.js +14 -3
- package/src/engine/physics/fluid/ecs/FluidObstacleSystem.d.ts +4 -4
- package/src/engine/physics/fluid/solver/v3_grid_advect_maccormack_velocity.d.ts.map +1 -1
- package/src/engine/physics/fluid/solver/v3_grid_advect_maccormack_velocity.js +12 -3
- package/src/engine/physics/fluid/solver/v3_grid_advect_sl_velocity.d.ts.map +1 -1
- package/src/engine/physics/fluid/solver/v3_grid_advect_sl_velocity.js +8 -2
- package/src/engine/physics/fluid/solver/v3_grid_sample_scalar_masked.d.ts +19 -0
- package/src/engine/physics/fluid/solver/v3_grid_sample_scalar_masked.d.ts.map +1 -1
- package/src/engine/physics/fluid/solver/v3_grid_sample_scalar_masked.js +41 -2
- package/src/engine/physics/fluid/solver/v3_mac_advect_scalar.d.ts.map +1 -1
- package/src/engine/physics/fluid/solver/v3_mac_advect_scalar.js +9 -3
- package/src/engine/physics/fluid/solver/v3_mac_advect_sl_velocity.d.ts.map +1 -1
- package/src/engine/physics/fluid/solver/v3_mac_advect_sl_velocity.js +26 -10
- package/src/engine/sound/sopra/definition/clip/RandomContainerAudioClip.d.ts +3 -6
- package/src/engine/sound/sopra/definition/clip/RandomContainerAudioClip.d.ts.map +1 -1
- package/src/engine/sound/sopra/definition/clip/RandomContainerAudioClip.js +22 -9
- package/src/engine/ui/DraggableAspect.d.ts +5 -1
- package/src/engine/ui/DraggableAspect.d.ts.map +1 -1
- package/src/engine/ui/DraggableAspect.js +61 -4
- package/src/format/image/avif/heif/ItemProperty.d.ts +1 -1
- package/src/format/image/avif/heif/ItemProperty.js +1 -1
- package/src/format/image/png/chunk/png_chunk_decode_iTXt.d.ts.map +1 -1
- package/src/format/image/png/chunk/png_chunk_decode_iTXt.js +17 -6
- package/src/shade/device/mock/SoftwareGPUDevice.d.ts +2 -4
- package/src/shade/device/mock/SoftwareGPUDevice.d.ts.map +1 -1
- package/src/shade/device/mock/SoftwareGPUDevice.js +20 -13
- package/src/shade/playground/skinned_blas_refit/sweep_views.d.ts.map +1 -1
- package/src/shade/playground/skinned_blas_refit/sweep_views.js +2 -1
- package/src/shade/playground/water_refraction/README.md +10 -11
- package/src/shade/playground/water_refraction/main.js +9 -8
- package/src/shade/playground/water_refraction/world.js +1 -1
- package/src/shade/playground/water_surface/README.md +43 -0
- package/src/shade/playground/water_surface/index.html +30 -0
- package/src/shade/playground/water_surface/main.d.ts +2 -0
- package/src/shade/playground/water_surface/main.d.ts.map +1 -0
- package/src/shade/playground/water_surface/main.js +154 -0
- package/src/shade/playground/water_surface/world.d.ts +44 -0
- package/src/shade/playground/water_surface/world.d.ts.map +1 -0
- package/src/shade/playground/water_surface/world.js +160 -0
- package/src/shade/renderer/animation/skinning/GPUMeshSkinningContext.d.ts.map +1 -1
- package/src/shade/renderer/animation/skinning/GPUMeshSkinningContext.js +5 -0
- package/src/shade/renderer/binding/BufferBinding.js +2 -2
- package/src/shade/renderer/buffer/table/GPUTypedTable.d.ts.map +1 -1
- package/src/shade/renderer/buffer/table/GPUTypedTable.js +5 -3
- package/src/shade/renderer/buffer/table/GPUTypedTableDescriptor.d.ts +10 -3
- package/src/shade/renderer/buffer/table/GPUTypedTableDescriptor.d.ts.map +1 -1
- package/src/shade/renderer/buffer/table/GPUTypedTableDescriptor.js +17 -9
- package/src/shade/renderer/camera/orbital/OrbitalCameraInput.d.ts +3 -0
- package/src/shade/renderer/camera/orbital/OrbitalCameraInput.d.ts.map +1 -1
- package/src/shade/renderer/camera/orbital/OrbitalCameraInput.js +16 -0
- package/src/shade/renderer/camera/orbital/OrbitalCameraRig.d.ts +2 -0
- package/src/shade/renderer/camera/orbital/OrbitalCameraRig.d.ts.map +1 -1
- package/src/shade/renderer/camera/orbital/OrbitalCameraRig.js +11 -0
- package/src/shade/renderer/geometry/meshlet/build/meshoptimizer/geometry_to_meshlets_meshoptimizer.d.ts +1 -1
- package/src/shade/renderer/geometry/meshlet/build/meshoptimizer/geometry_to_meshlets_meshoptimizer.d.ts.map +1 -1
- package/src/shade/renderer/geometry/meshlet/build/meshoptimizer/geometry_to_meshlets_meshoptimizer.js +9 -3
- package/src/shade/renderer/geometry/util/geometry_simplify_redundant_topology.d.ts.map +1 -1
- package/src/shade/renderer/geometry/util/geometry_simplify_redundant_topology.js +2 -2
- package/src/shade/renderer/geometry/virtual/format/vgeo_validate_container.d.ts.map +1 -1
- package/src/shade/renderer/geometry/virtual/format/vgeo_validate_container.js +85 -0
- package/src/shade/renderer/geometry/virtual/runtime/GPUVirtualGeometryRuntime.d.ts.map +1 -1
- package/src/shade/renderer/geometry/virtual/runtime/GPUVirtualGeometryRuntime.js +12 -6
- package/src/shade/renderer/geometry/virtual/runtime/VGeoPageFetcher.d.ts.map +1 -1
- package/src/shade/renderer/geometry/virtual/runtime/VGeoPageFetcher.js +7 -0
- package/src/shade/renderer/geometry/virtual/runtime/VGeoRuntimeTables.d.ts.map +1 -1
- package/src/shade/renderer/geometry/virtual/runtime/VGeoRuntimeTables.js +3 -1
- package/src/shade/renderer/loader/gltf/tiny-gltf.d.ts +1 -1
- package/src/shade/renderer/scene/SCENE_DATABASE_SPEC.js +2 -1
- package/src/shade/renderer/shader/chunk/math/fft/chunk_fft128_inverse.d.ts +13 -0
- package/src/shade/renderer/shader/chunk/math/fft/chunk_fft128_inverse.d.ts.map +1 -0
- package/src/shade/renderer/shader/chunk/math/fft/chunk_fft128_inverse.js +42 -0
- package/src/shade/renderer/shader/chunk/math/fft/chunk_fft128x4_inverse_workgroup.d.ts +15 -0
- package/src/shade/renderer/shader/chunk/math/fft/chunk_fft128x4_inverse_workgroup.d.ts.map +1 -0
- package/src/shade/renderer/shader/chunk/math/fft/chunk_fft128x4_inverse_workgroup.js +39 -0
- package/src/shade/renderer/shader/resource/ShaderResourceSetDescriptor.d.ts.map +1 -1
- package/src/shade/renderer/shader/resource/ShaderResourceSetDescriptor.js +2 -0
- package/src/shade/renderer/water/GPUWaterRenderer.d.ts +15 -0
- package/src/shade/renderer/water/GPUWaterRenderer.d.ts.map +1 -1
- package/src/shade/renderer/water/GPUWaterRenderer.js +110 -30
- package/src/shade/renderer/water/medium/GPUWaterBodies.d.ts +16 -8
- package/src/shade/renderer/water/medium/GPUWaterBodies.d.ts.map +1 -1
- package/src/shade/renderer/water/medium/GPUWaterBodies.js +31 -26
- package/src/shade/renderer/water/medium/shader_water_meshlets.d.ts +0 -1
- package/src/shade/renderer/water/medium/shader_water_meshlets.d.ts.map +1 -1
- package/src/shade/renderer/water/medium/shader_water_meshlets.js +1 -39
- package/src/shade/renderer/water/shader_water.d.ts +0 -1
- package/src/shade/renderer/water/shader_water.d.ts.map +1 -1
- package/src/shade/renderer/water/shader_water.js +201 -72
- package/src/shade/renderer/water/surface/GPUWaterSurface.d.ts +70 -0
- package/src/shade/renderer/water/surface/GPUWaterSurface.d.ts.map +1 -0
- package/src/shade/renderer/water/surface/GPUWaterSurface.js +199 -0
- package/src/shade/renderer/water/surface/WATER_WAVE_RECORD_STRUCT.d.ts +5 -2
- package/src/shade/renderer/water/surface/WATER_WAVE_RECORD_STRUCT.d.ts.map +1 -1
- package/src/shade/renderer/water/surface/WATER_WAVE_RECORD_STRUCT.js +32 -12
- package/src/shade/renderer/water/surface/chunk_water_surface_sample.d.ts +22 -0
- package/src/shade/renderer/water/surface/chunk_water_surface_sample.d.ts.map +1 -0
- package/src/shade/renderer/water/surface/chunk_water_surface_sample.js +217 -0
- package/src/shade/renderer/water/surface/graph_water_tessellation.d.ts +65 -11
- package/src/shade/renderer/water/surface/graph_water_tessellation.d.ts.map +1 -1
- package/src/shade/renderer/water/surface/graph_water_tessellation.js +163 -28
- package/src/shade/renderer/water/surface/lod/WATER_LOD.d.ts +51 -0
- package/src/shade/renderer/water/surface/lod/WATER_LOD.d.ts.map +1 -0
- package/src/shade/renderer/water/surface/lod/WATER_LOD.js +95 -0
- package/src/shade/renderer/water/surface/lod/chunk_water_lod.d.ts +10 -0
- package/src/shade/renderer/water/surface/lod/chunk_water_lod.d.ts.map +1 -0
- package/src/shade/renderer/water/surface/lod/chunk_water_lod.js +127 -0
- package/src/shade/renderer/water/surface/lod/chunk_water_lod_cell.d.ts +17 -0
- package/src/shade/renderer/water/surface/lod/chunk_water_lod_cell.d.ts.map +1 -0
- package/src/shade/renderer/water/surface/lod/chunk_water_lod_cell.js +246 -0
- package/src/shade/renderer/water/surface/lod/shader_water_lod.d.ts +118 -0
- package/src/shade/renderer/water/surface/lod/shader_water_lod.d.ts.map +1 -0
- package/src/shade/renderer/water/surface/lod/shader_water_lod.js +727 -0
- package/src/shade/renderer/water/surface/particles/GPUWaterParticles.d.ts +60 -0
- package/src/shade/renderer/water/surface/particles/GPUWaterParticles.d.ts.map +1 -0
- package/src/shade/renderer/water/surface/particles/GPUWaterParticles.js +228 -0
- package/src/shade/renderer/water/surface/particles/WATER_PARTICLE_STRUCT.d.ts +17 -0
- package/src/shade/renderer/water/surface/particles/WATER_PARTICLE_STRUCT.d.ts.map +1 -0
- package/src/shade/renderer/water/surface/particles/WATER_PARTICLE_STRUCT.js +49 -0
- package/src/shade/renderer/water/surface/particles/chunk_water_particle.d.ts +22 -0
- package/src/shade/renderer/water/surface/particles/chunk_water_particle.d.ts.map +1 -0
- package/src/shade/renderer/water/surface/particles/chunk_water_particle.js +143 -0
- package/src/shade/renderer/water/surface/particles/chunk_water_particle_step.d.ts +15 -0
- package/src/shade/renderer/water/surface/particles/chunk_water_particle_step.d.ts.map +1 -0
- package/src/shade/renderer/water/surface/particles/chunk_water_particle_step.js +121 -0
- package/src/shade/renderer/water/surface/particles/shader_water_particles.d.ts +83 -0
- package/src/shade/renderer/water/surface/particles/shader_water_particles.d.ts.map +1 -0
- package/src/shade/renderer/water/surface/particles/shader_water_particles.js +502 -0
- package/src/shade/renderer/water/surface/shader_water_cull.d.ts +42 -0
- package/src/shade/renderer/water/surface/shader_water_cull.d.ts.map +1 -0
- package/src/shade/renderer/water/surface/shader_water_cull.js +269 -0
- package/src/shade/renderer/water/surface/shader_water_waves_combine.d.ts +15 -0
- package/src/shade/renderer/water/surface/shader_water_waves_combine.d.ts.map +1 -0
- package/src/shade/renderer/water/surface/shader_water_waves_combine.js +73 -0
- package/src/shade/renderer/water/surface/shader_water_waves_derive.d.ts +11 -0
- package/src/shade/renderer/water/surface/shader_water_waves_derive.d.ts.map +1 -0
- package/src/shade/renderer/water/surface/shader_water_waves_derive.js +78 -0
- package/src/shade/renderer/water/surface/spectrum/GPUWaterSpectrum.d.ts +35 -0
- package/src/shade/renderer/water/surface/spectrum/GPUWaterSpectrum.d.ts.map +1 -0
- package/src/shade/renderer/water/surface/spectrum/GPUWaterSpectrum.js +103 -0
- package/src/shade/renderer/water/surface/spectrum/WATER_BAND_STATE.d.ts +22 -0
- package/src/shade/renderer/water/surface/spectrum/WATER_BAND_STATE.d.ts.map +1 -0
- package/src/shade/renderer/water/surface/spectrum/WATER_BAND_STATE.js +57 -0
- package/src/shade/renderer/water/surface/spectrum/WATER_SPECTRUM.d.ts +22 -0
- package/src/shade/renderer/water/surface/spectrum/WATER_SPECTRUM.d.ts.map +1 -0
- package/src/shade/renderer/water/surface/spectrum/WATER_SPECTRUM.js +25 -0
- package/src/shade/renderer/water/surface/spectrum/chunk_water_jonswap.d.ts +14 -0
- package/src/shade/renderer/water/surface/spectrum/chunk_water_jonswap.d.ts.map +1 -0
- package/src/shade/renderer/water/surface/spectrum/chunk_water_jonswap.js +48 -0
- package/src/shade/renderer/water/surface/spectrum/chunk_water_spectrum.d.ts +23 -0
- package/src/shade/renderer/water/surface/spectrum/chunk_water_spectrum.d.ts.map +1 -0
- package/src/shade/renderer/water/surface/spectrum/chunk_water_spectrum.js +169 -0
- package/src/shade/renderer/water/surface/spectrum/shader_water_spectrum.d.ts +26 -0
- package/src/shade/renderer/water/surface/spectrum/shader_water_spectrum.d.ts.map +1 -0
- package/src/shade/renderer/water/surface/spectrum/shader_water_spectrum.js +161 -0
- package/src/shade/wgsl/emulator/WGSLJavaScriptCompiler.d.ts.map +1 -1
- package/src/shade/wgsl/emulator/WGSLJavaScriptCompiler.js +18 -6
- package/src/shade/wgsl/emulator/WGSLLanguageCore.d.ts.map +1 -1
- package/src/shade/wgsl/emulator/WGSLLanguageCore.js +11 -3
- package/src/core/geom/2d/polygon/polygon2_triangulate.corpus.d.ts +0 -28
- package/src/core/geom/2d/polygon/polygon2_triangulate.corpus.d.ts.map +0 -1
- package/src/core/geom/2d/polygon/polygon2_triangulate.corpus.js +0 -86
- package/src/engine/ecs/storage/binary/object-v2/serializerTestHarness.d.ts +0 -29
- package/src/engine/ecs/storage/binary/object-v2/serializerTestHarness.d.ts.map +0 -1
- package/src/engine/ecs/storage/binary/object-v2/serializerTestHarness.js +0 -44
- package/src/shade/renderer/water/medium/shader_water_bodies_derive.d.ts +0 -4
- package/src/shade/renderer/water/medium/shader_water_bodies_derive.d.ts.map +0 -1
- package/src/shade/renderer/water/medium/shader_water_bodies_derive.js +0 -32
- package/src/shade/renderer/water/surface/GPUWaterWaveSimulation.d.ts +0 -25
- package/src/shade/renderer/water/surface/GPUWaterWaveSimulation.d.ts.map +0 -1
- package/src/shade/renderer/water/surface/GPUWaterWaveSimulation.js +0 -128
- package/src/shade/renderer/water/surface/chunk_water_tessellation.d.ts +0 -9
- package/src/shade/renderer/water/surface/chunk_water_tessellation.d.ts.map +0 -1
- package/src/shade/renderer/water/surface/chunk_water_tessellation.js +0 -144
- package/src/shade/renderer/water/surface/chunk_water_wave.d.ts +0 -13
- package/src/shade/renderer/water/surface/chunk_water_wave.d.ts.map +0 -1
- package/src/shade/renderer/water/surface/chunk_water_wave.js +0 -40
- package/src/shade/renderer/water/surface/shader_water_tiles.d.ts +0 -4
- package/src/shade/renderer/water/surface/shader_water_tiles.d.ts.map +0 -1
- package/src/shade/renderer/water/surface/shader_water_tiles.js +0 -123
- package/src/shade/renderer/water/surface/shader_water_wave_batch.d.ts +0 -6
- package/src/shade/renderer/water/surface/shader_water_wave_batch.d.ts.map +0 -1
- package/src/shade/renderer/water/surface/shader_water_wave_batch.js +0 -85
- package/src/shade/renderer/water/surface/shader_water_wave_domain.d.ts +0 -6
- package/src/shade/renderer/water/surface/shader_water_wave_domain.d.ts.map +0 -1
- 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":"
|
|
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
|
|
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,
|
|
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)
|
|
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":"
|
|
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 {
|
|
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
|
-
|
|
18
|
-
|
|
19
|
-
|
|
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[
|
|
22
|
-
const _y = p_x0[
|
|
23
|
-
const _z = p_y0[
|
|
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
|
-
*
|
|
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;
|
|
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
|
-
|
|
409
|
-
|
|
410
|
-
*
|
|
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
|
-
|
|
652
|
-
|
|
653
|
-
|
|
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
|
-
*
|
|
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":"
|
|
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
|
-
*
|
|
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
|
-
|
|
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,
|
|
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"}
|
package/src/engine/Engine.js
CHANGED
|
@@ -770,12 +770,14 @@ class Engine {
|
|
|
770
770
|
? knowledge.load(this.assetManager, this.executor)
|
|
771
771
|
: Promise.resolve();
|
|
772
772
|
|
|
773
|
-
|
|
773
|
+
const startupPromises = [
|
|
774
774
|
soundStarted.then(promiseEntityManager),
|
|
775
775
|
knowledgeLoaded,
|
|
776
776
|
this.gui.startup(this),
|
|
777
777
|
this.plugins.startup()
|
|
778
|
-
]
|
|
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
|
|
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,
|