@woosh/meep-engine 2.155.0 → 2.156.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/README.md +1 -1
- package/build/bundle-worker-image-decoder.js +1 -1
- package/build/bundle-worker-terrain.js +1 -1
- package/editor/view/ecs/ComponentControlView.d.ts +0 -9
- package/editor/view/ecs/ComponentControlView.js +2 -98
- package/package.json +1 -1
- package/src/core/binary/32BitEncoder.js +1 -1
- package/src/core/binary/to_half_float_uint16.js +3 -3
- package/src/core/bvh2/bvh3/ebvh_build_hierarchy_radix.d.ts.map +1 -1
- package/src/core/bvh2/bvh3/ebvh_build_hierarchy_radix.js +275 -253
- package/src/core/cache/Cache.d.ts.map +1 -1
- package/src/core/cache/Cache.js +7 -0
- package/src/core/cache/FrequencySketch.d.ts.map +1 -1
- package/src/core/cache/FrequencySketch.js +8 -4
- package/src/core/clipboard/obtainClipBoard.d.ts +6 -0
- package/src/core/clipboard/obtainClipBoard.d.ts.map +1 -0
- package/src/core/clipboard/obtainClipBoard.js +29 -0
- package/src/core/clipboard/safeClipboardReadText.d.ts +6 -0
- package/src/core/clipboard/safeClipboardReadText.d.ts.map +1 -0
- package/src/core/clipboard/safeClipboardReadText.js +55 -0
- package/src/core/clipboard/safeClipboardWriteText.d.ts +8 -0
- package/src/core/clipboard/safeClipboardWriteText.d.ts.map +1 -0
- package/src/core/clipboard/safeClipboardWriteText.js +23 -0
- package/src/core/collection/array/array_quick_sort_by_lookup_map.js +1 -1
- package/src/core/collection/array/array_set_diff_sorting.d.ts.map +1 -1
- package/src/core/collection/array/array_set_diff_sorting.js +4 -1
- package/src/core/collection/array/array_shuffle.d.ts.map +1 -1
- package/src/core/collection/array/array_shuffle.js +30 -27
- package/src/core/collection/array/binarySearchLowIndex.d.ts.map +1 -1
- package/src/core/collection/array/binarySearchLowIndex.js +4 -3
- package/src/core/collection/array/typed/array_buffer_hash.js +1 -1
- package/src/core/collection/array/typed/is_typed_array_equals.d.ts.map +1 -1
- package/src/core/collection/array/typed/is_typed_array_equals.js +12 -2
- package/src/core/collection/heap/BinaryHeap.d.ts.map +1 -1
- package/src/core/collection/heap/BinaryHeap.js +12 -2
- package/src/core/collection/queue/Deque.d.ts.map +1 -1
- package/src/core/collection/queue/Deque.js +10 -8
- package/src/core/collection/table/RowFirstTable.d.ts.map +1 -1
- package/src/core/collection/table/RowFirstTable.js +4 -2
- package/src/core/collection/table/RowFirstTableSpec.js +2 -2
- package/src/core/color/operations/color_lerp.d.ts.map +1 -1
- package/src/core/color/operations/color_lerp.js +10 -3
- package/src/core/color/rgb2uint32.js +1 -1
- package/src/core/color/rgbe9995_to_rgb.js +1 -1
- package/src/core/function/objectsEqual.d.ts.map +1 -1
- package/src/core/function/objectsEqual.js +2 -1
- package/src/core/geom/2d/aabb/AABB2.d.ts.map +1 -1
- package/src/core/geom/2d/aabb/AABB2.js +12 -11
- package/src/core/geom/2d/convex-hull/convex_hull_jarvis_2d.d.ts.map +1 -1
- package/src/core/geom/2d/convex-hull/convex_hull_jarvis_2d.js +30 -4
- package/src/core/geom/2d/convex-hull/fixed_convex_hull_relaxation.d.ts.map +1 -1
- package/src/core/geom/2d/convex-hull/fixed_convex_hull_relaxation.js +6 -2
- package/src/core/geom/2d/hash-grid/SpatialHashGrid.d.ts.map +1 -1
- package/src/core/geom/2d/hash-grid/SpatialHashGrid.js +388 -386
- package/src/core/geom/2d/hash-grid/shg_query_elements_line.d.ts.map +1 -1
- package/src/core/geom/2d/hash-grid/shg_query_elements_line.js +8 -3
- package/src/core/geom/2d/quad-tree/QuadTreeDatum.d.ts.map +1 -1
- package/src/core/geom/2d/quad-tree/QuadTreeDatum.js +9 -1
- package/src/core/geom/2d/quad-tree/qt_query_data_nearest_to_point.d.ts +3 -1
- package/src/core/geom/2d/quad-tree/qt_query_data_nearest_to_point.d.ts.map +1 -1
- package/src/core/geom/2d/quad-tree/qt_query_data_nearest_to_point.js +3 -1
- package/src/core/geom/2d/quad-tree-binary/QuadTree.js +714 -714
- package/src/core/geom/2d/r-tree/StaticR2Tree.d.ts.map +1 -1
- package/src/core/geom/2d/r-tree/StaticR2Tree.js +5 -4
- package/src/core/geom/3d/aabb/aabb3_detailed_volume_intersection.d.ts.map +1 -1
- package/src/core/geom/3d/aabb/aabb3_detailed_volume_intersection.js +33 -29
- package/src/core/geom/3d/aabb/aabb3_near_distance_to_intersection_ray_segment.d.ts.map +1 -1
- package/src/core/geom/3d/aabb/aabb3_near_distance_to_intersection_ray_segment.js +3 -1
- package/src/core/geom/3d/aabb/aabb3_signed_distance_to_aabb3.d.ts.map +1 -1
- package/src/core/geom/3d/aabb/aabb3_signed_distance_to_aabb3.js +10 -7
- package/src/core/geom/3d/aabb/aabb3_transformed_compute_plane_side.d.ts.map +1 -1
- package/src/core/geom/3d/aabb/aabb3_transformed_compute_plane_side.js +30 -9
- package/src/core/geom/3d/aabb/compute_aabb_from_points.js +3 -3
- package/src/core/geom/3d/box/box3_raycast.d.ts +37 -0
- package/src/core/geom/3d/box/box3_raycast.d.ts.map +1 -0
- package/src/core/geom/3d/box/box3_raycast.js +81 -0
- package/src/core/geom/3d/capsule/capsule_raycast.d.ts +35 -0
- package/src/core/geom/3d/capsule/capsule_raycast.d.ts.map +1 -0
- package/src/core/geom/3d/capsule/capsule_raycast.js +93 -0
- package/src/core/geom/3d/cone/compute_bounding_cone_of_2_cones.d.ts.map +1 -1
- package/src/core/geom/3d/cone/compute_bounding_cone_of_2_cones.js +4 -0
- package/src/core/geom/3d/frustum/frustum3_computeNearestPointToPoint.js +1 -1
- 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 +3 -2
- package/src/core/geom/3d/mat4/decompose_matrix_4_array.d.ts.map +1 -1
- package/src/core/geom/3d/mat4/decompose_matrix_4_array.js +12 -2
- package/src/core/geom/3d/mat4/eulerAnglesFromMatrix.js +2 -2
- package/src/core/geom/3d/mat4/m4_multiply_alphatensor.d.ts +1 -1
- package/src/core/geom/3d/mat4/m4_multiply_alphatensor.d.ts.map +1 -1
- package/src/core/geom/3d/mat4/m4_multiply_alphatensor.js +19 -13
- package/src/core/geom/3d/octahedra/octahedral_direction_to_uv.d.ts.map +1 -1
- package/src/core/geom/3d/octahedra/octahedral_direction_to_uv.js +3 -2
- package/src/core/geom/3d/plane/plane3_compute_plane_intersection.js +3 -2
- package/src/core/geom/3d/shape/MeshShape3D.d.ts.map +1 -1
- package/src/core/geom/3d/shape/MeshShape3D.js +7 -0
- package/src/core/geom/3d/shape/UnionShape3D.d.ts.map +1 -1
- package/src/core/geom/3d/shape/UnionShape3D.js +3 -2
- package/src/core/geom/3d/shape/util/shape3d_voxelize_to_grid.d.ts.map +1 -1
- package/src/core/geom/3d/shape/util/shape3d_voxelize_to_grid.js +153 -148
- package/src/core/geom/3d/sphere/harmonics/sh3_dering_optimize_positive.d.ts.map +1 -1
- package/src/core/geom/3d/sphere/harmonics/sh3_dering_optimize_positive.js +7 -0
- package/src/core/geom/3d/sphere/harmonics/sh3_sample_by_direction.d.ts.map +1 -1
- package/src/core/geom/3d/sphere/harmonics/sh3_sample_by_direction.js +13 -10
- package/src/core/geom/3d/sphere/sphere_projected_sphere_radius_sqr.d.ts +1 -1
- package/src/core/geom/3d/sphere/sphere_projected_sphere_radius_sqr.js +2 -2
- package/src/core/geom/3d/sphere/sphere_raycast.d.ts +33 -0
- package/src/core/geom/3d/sphere/sphere_raycast.d.ts.map +1 -0
- package/src/core/geom/3d/sphere/sphere_raycast.js +47 -0
- package/src/core/geom/3d/tetrahedra/tetrahedral_mesh_tet_get_neighbours.d.ts +24 -0
- package/src/core/geom/3d/tetrahedra/tetrahedral_mesh_tet_get_neighbours.d.ts.map +1 -0
- package/src/core/geom/3d/tetrahedra/tetrahedral_mesh_tet_get_neighbours.js +39 -0
- package/src/core/geom/3d/tetrahedra/triangle/trace_triangular_depth_map.d.ts.map +1 -1
- package/src/core/geom/3d/tetrahedra/triangle/trace_triangular_depth_map.js +4 -2
- package/src/core/geom/3d/topology/bounds/computeTriangleClusterNormalBoundingCone.js +3 -3
- package/src/core/geom/3d/topology/simplify/decimate_edge_collapse_snap.js +1 -1
- package/src/core/geom/3d/topology/tm_vertex_compute_normal.d.ts.map +1 -1
- package/src/core/geom/3d/topology/tm_vertex_compute_normal.js +4 -2
- package/src/core/geom/3d/util/make_justified_point_grid.d.ts.map +1 -1
- package/src/core/geom/3d/util/make_justified_point_grid.js +18 -10
- package/src/core/geom/ConicRay.d.ts.map +1 -1
- package/src/core/geom/ConicRay.js +11 -13
- package/src/core/geom/packing/max-rect/removeRedundantBoxes.d.ts.map +1 -1
- package/src/core/geom/packing/max-rect/removeRedundantBoxes.js +19 -4
- package/src/core/geom/vec3/v3_orthonormal_matrix_from_normal.d.ts.map +1 -0
- package/src/{engine/graphics/sh3/path_tracer/sampling → core/geom/vec3}/v3_orthonormal_matrix_from_normal.js +1 -1
- package/src/core/graph/coloring/colorizeGraph.js +2 -2
- package/src/core/graph/csr/CSRGraph.d.ts.map +1 -1
- package/src/core/graph/csr/CSRGraph.js +325 -319
- package/src/core/graph/layout/CircleLayout.d.ts.map +1 -1
- package/src/core/graph/layout/CircleLayout.js +8 -6
- package/src/core/graph/metis/native/refine/compute_kway_params.d.ts.map +1 -1
- package/src/core/graph/metis/native/refine/compute_kway_params.js +139 -138
- package/src/core/graph/mn_graph_coarsen.d.ts.map +1 -1
- package/src/core/graph/mn_graph_coarsen.js +4 -2
- package/src/core/graph/v2/NodeContainer.js +7 -7
- package/src/core/localization/LocalizationEngine.js +1 -1
- package/src/core/math/bell_membership_function.d.ts.map +1 -1
- package/src/core/math/bell_membership_function.js +3 -1
- package/src/core/math/complex/complex_add.d.ts +4 -4
- package/src/core/math/complex/complex_add.d.ts.map +1 -1
- package/src/core/math/complex/complex_add.js +3 -3
- package/src/core/math/complex/complex_div.d.ts +4 -4
- package/src/core/math/complex/complex_div.d.ts.map +1 -1
- package/src/core/math/complex/complex_div.js +3 -3
- package/src/core/math/complex/complex_mul.d.ts +4 -4
- package/src/core/math/complex/complex_mul.d.ts.map +1 -1
- package/src/core/math/complex/complex_mul.js +3 -3
- package/src/core/math/complex/complex_sub.d.ts +4 -4
- package/src/core/math/complex/complex_sub.d.ts.map +1 -1
- package/src/core/math/complex/complex_sub.js +3 -3
- package/src/core/math/idct_1d.d.ts +4 -4
- package/src/core/math/idct_1d.d.ts.map +1 -1
- package/src/core/math/idct_1d.js +3 -3
- package/src/core/math/noise/create_simplex_noise_2d.d.ts.map +1 -1
- package/src/core/math/noise/create_simplex_noise_2d.js +4 -2
- package/src/core/math/noise/sdnoise.d.ts.map +1 -1
- package/src/core/math/noise/sdnoise.js +12 -9
- package/src/core/math/physics/mie/compute_bhmie_optical_properties.d.ts.map +1 -1
- package/src/core/math/physics/mie/compute_bhmie_optical_properties.js +94 -50
- package/src/core/math/physics/mie/lorenz_mie_coefs.d.ts +3 -6
- package/src/core/math/physics/mie/lorenz_mie_coefs.d.ts.map +1 -1
- package/src/core/math/physics/mie/lorenz_mie_coefs.js +180 -157
- package/src/core/math/physics/mie/mie_ab_to_optical_properties.d.ts +3 -4
- package/src/core/math/physics/mie/mie_ab_to_optical_properties.d.ts.map +1 -1
- package/src/core/math/physics/mie/mie_ab_to_optical_properties.js +47 -21
- package/src/core/math/random/randomIntegerBetween.d.ts.map +1 -1
- package/src/core/math/random/randomIntegerBetween.js +4 -1
- package/src/core/math/solveCubic.d.ts.map +1 -1
- package/src/core/math/solveCubic.js +95 -82
- package/src/core/math/spline/computeCatmullRomSplineUniformDistance.d.ts.map +1 -1
- package/src/core/math/spline/computeCatmullRomSplineUniformDistance.js +13 -0
- package/src/core/math/statistics/softmax.js +1 -1
- package/src/core/model/node-graph/visual/NodeGraphVisualData.d.ts +1 -0
- package/src/core/model/node-graph/visual/NodeGraphVisualData.d.ts.map +1 -1
- package/src/core/model/node-graph/visual/NodeGraphVisualData.js +2 -1
- package/src/core/model/node-graph/visual/NodeVisualData.js +1 -1
- package/src/core/model/object/ImmutableObjectPool.d.ts +7 -0
- package/src/core/model/object/ImmutableObjectPool.d.ts.map +1 -1
- package/src/core/model/object/ImmutableObjectPool.js +20 -10
- package/src/core/model/reactive/evaluation/MultiPredicateEvaluator.d.ts.map +1 -1
- package/src/core/model/reactive/evaluation/MultiPredicateEvaluator.js +39 -2
- package/src/core/model/reactive/model/terminal/ReactiveReference.d.ts.map +1 -1
- package/src/core/model/reactive/model/terminal/ReactiveReference.js +2 -0
- package/src/core/parser/simple/readHexToken.d.ts.map +1 -1
- package/src/core/parser/simple/readHexToken.js +6 -0
- package/src/core/primitives/numbers/number_pretty_print.d.ts.map +1 -1
- package/src/core/primitives/numbers/number_pretty_print.js +4 -1
- package/src/core/primitives/strings/string_jaro_winkler.js +1 -1
- package/src/core/process/CompositeProcess.js +1 -1
- package/src/core/process/action/AsynchronousDelayAction.d.ts.map +1 -1
- package/src/core/process/action/AsynchronousDelayAction.js +3 -0
- package/src/core/process/executor/ConcurrentExecutor.d.ts.map +1 -1
- package/src/core/process/executor/ConcurrentExecutor.js +3 -2
- package/src/core/process/task/util/randomCountTask.d.ts.map +1 -1
- package/src/core/process/task/util/randomCountTask.js +3 -1
- package/src/core/process/undo/ActionProcessor.d.ts.map +1 -1
- package/src/core/process/undo/ActionProcessor.js +5 -3
- package/src/core/process/worker/WorkerBuilder.js +3 -3
- package/src/engine/animation/curve/AnimationCurve.d.ts.map +1 -1
- package/src/engine/animation/curve/AnimationCurve.js +4 -2
- package/src/engine/control/first-person/DESIGN.md +1 -1
- package/src/engine/control/first-person/FirstPersonMotionPhase.d.ts +55 -0
- package/src/engine/control/first-person/FirstPersonMotionPhase.d.ts.map +1 -0
- package/src/engine/control/first-person/FirstPersonMotionPhase.js +134 -0
- package/src/engine/control/first-person/FirstPersonPlayerController.d.ts +23 -2
- package/src/engine/control/first-person/FirstPersonPlayerController.d.ts.map +1 -1
- package/src/engine/control/first-person/FirstPersonPlayerController.js +1 -1
- package/src/engine/control/first-person/FirstPersonPlayerControllerConfig.d.ts +168 -0
- package/src/engine/control/first-person/FirstPersonPlayerControllerConfig.d.ts.map +1 -1
- package/src/engine/control/first-person/FirstPersonPlayerControllerConfig.js +115 -0
- package/src/engine/control/first-person/FirstPersonPlayerControllerSystem.d.ts +71 -0
- package/src/engine/control/first-person/FirstPersonPlayerControllerSystem.d.ts.map +1 -1
- package/src/engine/control/first-person/FirstPersonPlayerControllerSystem.js +255 -55
- package/src/engine/control/first-person/abilities/LedgeGrab.d.ts +82 -43
- package/src/engine/control/first-person/abilities/LedgeGrab.d.ts.map +1 -1
- package/src/engine/control/first-person/abilities/LedgeGrab.js +405 -213
- package/src/engine/control/first-person/abilities/Mantle.d.ts +6 -0
- package/src/engine/control/first-person/abilities/Mantle.d.ts.map +1 -1
- package/src/engine/control/first-person/abilities/Mantle.js +104 -45
- package/src/engine/control/first-person/abilities/ScrambleUp.d.ts +61 -0
- package/src/engine/control/first-person/abilities/ScrambleUp.d.ts.map +1 -0
- package/src/engine/control/first-person/abilities/ScrambleUp.js +182 -0
- package/src/engine/control/first-person/math/jumpDynamics.d.ts +84 -0
- package/src/engine/control/first-person/math/jumpDynamics.d.ts.map +1 -0
- package/src/engine/control/first-person/math/jumpDynamics.js +108 -0
- package/src/engine/control/first-person/prototype_first_person_controller.js +45 -1
- package/src/engine/graphics/camera/testClippingPlaneComputation.js +1 -1
- package/src/engine/graphics/ecs/path/tube/prototypeAnimatedPathMask.js +1 -1
- package/src/engine/graphics/particles/particular/engine/utils/volume/prototypeParticleVolume.js +1 -1
- package/src/engine/graphics/render/buffer/buffers/prototypeNormalFrameBuffer.js +1 -1
- package/src/engine/graphics/render/forward_plus/plugin/ptototypeFPPlugin.js +1 -1
- package/src/engine/graphics/render/visibility/hiz/prototypeHiZ.js +1 -1
- package/src/engine/graphics/sh3/path_tracer/texture/sample_material.js +1 -1
- package/src/engine/graphics/shadows/testShadowMapRendering.js +1 -1
- package/src/engine/physics/CONSTRAINT_SOLVER_BENCH_LOG.md +208 -0
- package/src/engine/physics/CONSTRAINT_SOLVER_IMPROVEMENTS_PLAN.md +364 -0
- package/src/engine/physics/PLAN.md +6 -5
- package/src/engine/physics/constraint/solve_constraints.d.ts +4 -1
- package/src/engine/physics/constraint/solve_constraints.d.ts.map +1 -1
- package/src/engine/physics/constraint/solve_constraints.js +147 -33
- package/src/engine/physics/ecs/PhysicsSystem.d.ts.map +1 -1
- package/src/engine/physics/ecs/PhysicsSystem.js +1750 -1747
- package/src/engine/physics/fluid/ecs/FluidSystem.d.ts +3 -3
- package/src/engine/physics/gjk/gjk_epa_penetration.d.ts.map +1 -1
- package/src/engine/physics/gjk/gjk_epa_penetration.js +5 -9
- package/src/engine/physics/narrowphase/convex_convex_manifold.d.ts.map +1 -1
- package/src/engine/physics/narrowphase/convex_convex_manifold.js +22 -25
- package/src/engine/physics/narrowphase/convex_decomposition.d.ts +32 -13
- package/src/engine/physics/narrowphase/convex_decomposition.d.ts.map +1 -1
- package/src/engine/physics/narrowphase/convex_decomposition.js +61 -65
- package/src/engine/physics/narrowphase/mesh_convex_hull.d.ts.map +1 -1
- package/src/engine/physics/narrowphase/mesh_convex_hull.js +13 -8
- package/src/engine/physics/narrowphase/refine_ray_concave.d.ts.map +1 -1
- package/src/engine/physics/narrowphase/refine_ray_concave.js +5 -3
- package/src/engine/physics/narrowphase/refine_ray_hit.d.ts.map +1 -1
- package/src/engine/physics/narrowphase/refine_ray_hit.js +81 -78
- package/src/engine/sound/SoundEngine.d.ts.map +1 -1
- package/src/engine/sound/SoundEngine.js +28 -0
- package/src/engine/sound/dB2Volume.d.ts +1 -1
- package/src/engine/sound/dB2Volume.d.ts.map +1 -1
- package/src/engine/sound/dB2Volume.js +1 -1
- package/src/engine/sound/ecs/SoundController.d.ts +4 -0
- package/src/engine/sound/ecs/SoundController.d.ts.map +1 -1
- package/src/engine/sound/ecs/SoundController.js +4 -0
- package/src/engine/sound/ecs/SoundControllerSystem.d.ts +5 -0
- package/src/engine/sound/ecs/SoundControllerSystem.d.ts.map +1 -1
- package/src/engine/sound/ecs/SoundControllerSystem.js +5 -0
- package/src/engine/sound/ecs/audio/AudioEmitter.d.ts +69 -0
- package/src/engine/sound/ecs/audio/AudioEmitter.d.ts.map +1 -0
- package/src/engine/sound/ecs/audio/AudioEmitter.js +83 -0
- package/src/engine/sound/ecs/audio/AudioEmitterSystem.d.ts +97 -0
- package/src/engine/sound/ecs/audio/AudioEmitterSystem.d.ts.map +1 -0
- package/src/engine/sound/ecs/audio/AudioEmitterSystem.js +238 -0
- package/src/engine/sound/ecs/audio/LiveEmitterSet.d.ts +90 -0
- package/src/engine/sound/ecs/audio/LiveEmitterSet.d.ts.map +1 -0
- package/src/engine/sound/ecs/audio/LiveEmitterSet.js +324 -0
- package/src/engine/sound/ecs/audio/SpatialAudioIndex.d.ts +59 -0
- package/src/engine/sound/ecs/audio/SpatialAudioIndex.d.ts.map +1 -0
- package/src/engine/sound/ecs/audio/SpatialAudioIndex.js +140 -0
- package/src/engine/sound/ecs/emitter/SoundEmitter.d.ts +16 -65
- package/src/engine/sound/ecs/emitter/SoundEmitter.d.ts.map +1 -1
- package/src/engine/sound/ecs/emitter/SoundEmitter.js +19 -224
- package/src/engine/sound/ecs/emitter/SoundEmitterComponentContext.d.ts +26 -29
- package/src/engine/sound/ecs/emitter/SoundEmitterComponentContext.d.ts.map +1 -1
- package/src/engine/sound/ecs/emitter/SoundEmitterComponentContext.js +168 -135
- package/src/engine/sound/ecs/emitter/SoundEmitterSystem.d.ts +36 -59
- package/src/engine/sound/ecs/emitter/SoundEmitterSystem.d.ts.map +1 -1
- package/src/engine/sound/ecs/emitter/SoundEmitterSystem.js +154 -390
- package/src/engine/sound/ecs/emitter/SoundTrack.d.ts +20 -23
- package/src/engine/sound/ecs/emitter/SoundTrack.d.ts.map +1 -1
- package/src/engine/sound/ecs/emitter/SoundTrack.js +34 -152
- package/src/engine/sound/sopra/IMPLEMENTATION_PLAN.md +993 -0
- package/src/engine/sound/sopra/README.md +643 -7
- package/src/engine/sound/sopra/SopraEngine.d.ts +229 -0
- package/src/engine/sound/sopra/SopraEngine.d.ts.map +1 -0
- package/src/engine/sound/sopra/SopraEngine.js +423 -0
- package/src/engine/sound/sopra/asset/AssetManagerBufferProvider.d.ts +26 -0
- package/src/engine/sound/sopra/asset/AssetManagerBufferProvider.d.ts.map +1 -0
- package/src/engine/sound/sopra/asset/AssetManagerBufferProvider.js +71 -0
- package/src/engine/sound/sopra/asset/BufferProvider.d.ts +24 -0
- package/src/engine/sound/sopra/asset/BufferProvider.d.ts.map +1 -0
- package/src/engine/sound/sopra/asset/BufferProvider.js +29 -0
- package/src/engine/sound/sopra/asset/StubBufferProvider.d.ts +31 -0
- package/src/engine/sound/sopra/asset/StubBufferProvider.d.ts.map +1 -0
- package/src/engine/sound/sopra/asset/StubBufferProvider.js +58 -0
- package/src/engine/sound/sopra/definition/BusDefinition.d.ts +83 -0
- package/src/engine/sound/sopra/definition/BusDefinition.d.ts.map +1 -0
- package/src/engine/sound/sopra/definition/BusDefinition.js +142 -0
- package/src/engine/sound/sopra/definition/BusDefinitionSerializationAdapter.d.ts +17 -0
- package/src/engine/sound/sopra/definition/BusDefinitionSerializationAdapter.d.ts.map +1 -0
- package/src/engine/sound/sopra/definition/BusDefinitionSerializationAdapter.js +54 -0
- package/src/engine/sound/sopra/definition/DuckingRule.d.ts +71 -0
- package/src/engine/sound/sopra/definition/DuckingRule.d.ts.map +1 -0
- package/src/engine/sound/sopra/definition/DuckingRule.js +106 -0
- package/src/engine/sound/sopra/definition/DuckingRuleSerializationAdapter.d.ts +18 -0
- package/src/engine/sound/sopra/definition/DuckingRuleSerializationAdapter.d.ts.map +1 -0
- package/src/engine/sound/sopra/definition/DuckingRuleSerializationAdapter.js +31 -0
- package/src/engine/sound/sopra/definition/EventDescription.d.ts +132 -0
- package/src/engine/sound/sopra/definition/EventDescription.d.ts.map +1 -0
- package/src/engine/sound/sopra/definition/EventDescription.js +259 -0
- package/src/engine/sound/sopra/definition/EventDescriptionSerializationAdapter.d.ts +17 -0
- package/src/engine/sound/sopra/definition/EventDescriptionSerializationAdapter.d.ts.map +1 -0
- package/src/engine/sound/sopra/definition/EventDescriptionSerializationAdapter.js +71 -0
- package/src/engine/sound/sopra/definition/MixerSnapshot.d.ts +51 -0
- package/src/engine/sound/sopra/definition/MixerSnapshot.d.ts.map +1 -0
- package/src/engine/sound/sopra/definition/MixerSnapshot.js +83 -0
- package/src/engine/sound/sopra/definition/MixerSnapshotSerializationAdapter.d.ts +18 -0
- package/src/engine/sound/sopra/definition/MixerSnapshotSerializationAdapter.d.ts.map +1 -0
- package/src/engine/sound/sopra/definition/MixerSnapshotSerializationAdapter.js +39 -0
- package/src/engine/sound/sopra/definition/ParameterDefinition.d.ts +72 -0
- package/src/engine/sound/sopra/definition/ParameterDefinition.d.ts.map +1 -0
- package/src/engine/sound/sopra/definition/ParameterDefinition.js +117 -0
- package/src/engine/sound/sopra/definition/ParameterDefinitionSerializationAdapter.d.ts +18 -0
- package/src/engine/sound/sopra/definition/ParameterDefinitionSerializationAdapter.d.ts.map +1 -0
- package/src/engine/sound/sopra/definition/ParameterDefinitionSerializationAdapter.js +31 -0
- package/src/engine/sound/sopra/definition/SopraPanningModel.d.ts +14 -0
- package/src/engine/sound/sopra/definition/SopraPanningModel.d.ts.map +1 -0
- package/src/engine/sound/sopra/definition/SopraPanningModel.js +20 -0
- package/src/engine/sound/sopra/definition/VoiceStealMode.d.ts +10 -0
- package/src/engine/sound/sopra/definition/VoiceStealMode.d.ts.map +1 -0
- package/src/engine/sound/sopra/definition/VoiceStealMode.js +18 -0
- package/src/engine/sound/sopra/definition/clip/AbstractAudioClip.d.ts +93 -0
- package/src/engine/sound/sopra/definition/clip/AbstractAudioClip.d.ts.map +1 -0
- package/src/engine/sound/sopra/definition/clip/AbstractAudioClip.js +109 -0
- package/src/engine/sound/sopra/definition/clip/BlendContainerAudioClip.d.ts +80 -0
- package/src/engine/sound/sopra/definition/clip/BlendContainerAudioClip.d.ts.map +1 -0
- package/src/engine/sound/sopra/definition/clip/BlendContainerAudioClip.js +181 -0
- package/src/engine/sound/sopra/definition/clip/BlendContainerAudioClipSerializationAdapter.d.ts +17 -0
- package/src/engine/sound/sopra/definition/clip/BlendContainerAudioClipSerializationAdapter.d.ts.map +1 -0
- package/src/engine/sound/sopra/definition/clip/BlendContainerAudioClipSerializationAdapter.js +74 -0
- package/src/engine/sound/sopra/definition/clip/ContainerAudioClip.d.ts +34 -0
- package/src/engine/sound/sopra/definition/clip/ContainerAudioClip.d.ts.map +1 -0
- package/src/engine/sound/sopra/definition/clip/ContainerAudioClip.js +100 -0
- package/src/engine/sound/sopra/definition/clip/RandomContainerAudioClip.d.ts +101 -0
- package/src/engine/sound/sopra/definition/clip/RandomContainerAudioClip.d.ts.map +1 -0
- package/src/engine/sound/sopra/definition/clip/RandomContainerAudioClip.js +230 -0
- package/src/engine/sound/sopra/definition/clip/RandomContainerAudioClipSerializationAdapter.d.ts +17 -0
- package/src/engine/sound/sopra/definition/clip/RandomContainerAudioClipSerializationAdapter.d.ts.map +1 -0
- package/src/engine/sound/sopra/definition/clip/RandomContainerAudioClipSerializationAdapter.js +54 -0
- package/src/engine/sound/sopra/definition/clip/SampleAudioClip.d.ts +103 -0
- package/src/engine/sound/sopra/definition/clip/SampleAudioClip.d.ts.map +1 -0
- package/src/engine/sound/sopra/definition/clip/SampleAudioClip.js +191 -0
- package/src/engine/sound/sopra/definition/clip/SampleAudioClipSerializationAdapter.d.ts +18 -0
- package/src/engine/sound/sopra/definition/clip/SampleAudioClipSerializationAdapter.d.ts.map +1 -0
- package/src/engine/sound/sopra/definition/clip/SampleAudioClipSerializationAdapter.js +39 -0
- package/src/engine/sound/sopra/definition/clip/SequenceContainerAudioClip.d.ts +40 -0
- package/src/engine/sound/sopra/definition/clip/SequenceContainerAudioClip.d.ts.map +1 -0
- package/src/engine/sound/sopra/definition/clip/SequenceContainerAudioClip.js +91 -0
- package/src/engine/sound/sopra/definition/clip/SequenceContainerAudioClipSerializationAdapter.d.ts +17 -0
- package/src/engine/sound/sopra/definition/clip/SequenceContainerAudioClipSerializationAdapter.d.ts.map +1 -0
- package/src/engine/sound/sopra/definition/clip/SequenceContainerAudioClipSerializationAdapter.js +42 -0
- package/src/engine/sound/sopra/definition/clip/SilenceAudioClip.d.ts +44 -0
- package/src/engine/sound/sopra/definition/clip/SilenceAudioClip.d.ts.map +1 -0
- package/src/engine/sound/sopra/definition/clip/SilenceAudioClip.js +77 -0
- package/src/engine/sound/sopra/definition/clip/SilenceAudioClipSerializationAdapter.d.ts +18 -0
- package/src/engine/sound/sopra/definition/clip/SilenceAudioClipSerializationAdapter.d.ts.map +1 -0
- package/src/engine/sound/sopra/definition/clip/SilenceAudioClipSerializationAdapter.js +27 -0
- package/src/engine/sound/sopra/definition/clip/SwitchContainerAudioClip.d.ts +65 -0
- package/src/engine/sound/sopra/definition/clip/SwitchContainerAudioClip.d.ts.map +1 -0
- package/src/engine/sound/sopra/definition/clip/SwitchContainerAudioClip.js +131 -0
- package/src/engine/sound/sopra/definition/clip/SwitchContainerAudioClipSerializationAdapter.d.ts +17 -0
- package/src/engine/sound/sopra/definition/clip/SwitchContainerAudioClipSerializationAdapter.d.ts.map +1 -0
- package/src/engine/sound/sopra/definition/clip/SwitchContainerAudioClipSerializationAdapter.js +41 -0
- package/src/engine/sound/sopra/definition/effect/AbstractAudioEffect.d.ts +24 -0
- package/src/engine/sound/sopra/definition/effect/AbstractAudioEffect.d.ts.map +1 -0
- package/src/engine/sound/sopra/definition/effect/AbstractAudioEffect.js +24 -0
- package/src/engine/sound/sopra/definition/effect/CompressorEffect.d.ts +70 -0
- package/src/engine/sound/sopra/definition/effect/CompressorEffect.d.ts.map +1 -0
- package/src/engine/sound/sopra/definition/effect/CompressorEffect.js +120 -0
- package/src/engine/sound/sopra/definition/effect/CompressorEffectSerializationAdapter.d.ts +18 -0
- package/src/engine/sound/sopra/definition/effect/CompressorEffectSerializationAdapter.d.ts.map +1 -0
- package/src/engine/sound/sopra/definition/effect/CompressorEffectSerializationAdapter.js +31 -0
- package/src/engine/sound/sopra/definition/effect/EqEffect.d.ts +74 -0
- package/src/engine/sound/sopra/definition/effect/EqEffect.d.ts.map +1 -0
- package/src/engine/sound/sopra/definition/effect/EqEffect.js +128 -0
- package/src/engine/sound/sopra/definition/effect/EqEffectSerializationAdapter.d.ts +18 -0
- package/src/engine/sound/sopra/definition/effect/EqEffectSerializationAdapter.d.ts.map +1 -0
- package/src/engine/sound/sopra/definition/effect/EqEffectSerializationAdapter.js +29 -0
- package/src/engine/sound/sopra/definition/effect/ReverbEffect.d.ts +49 -0
- package/src/engine/sound/sopra/definition/effect/ReverbEffect.d.ts.map +1 -0
- package/src/engine/sound/sopra/definition/effect/ReverbEffect.js +101 -0
- package/src/engine/sound/sopra/definition/effect/ReverbEffectSerializationAdapter.d.ts +18 -0
- package/src/engine/sound/sopra/definition/effect/ReverbEffectSerializationAdapter.d.ts.map +1 -0
- package/src/engine/sound/sopra/definition/effect/ReverbEffectSerializationAdapter.js +25 -0
- package/src/engine/sound/sopra/legacy/soundEmitterToEventDescription.d.ts +31 -0
- package/src/engine/sound/sopra/legacy/soundEmitterToEventDescription.d.ts.map +1 -0
- package/src/engine/sound/sopra/legacy/soundEmitterToEventDescription.js +106 -0
- package/src/engine/sound/sopra/runtime/BusGraph.d.ts +79 -0
- package/src/engine/sound/sopra/runtime/BusGraph.d.ts.map +1 -0
- package/src/engine/sound/sopra/runtime/BusGraph.js +227 -0
- package/src/engine/sound/sopra/runtime/EventInstance.d.ts +144 -0
- package/src/engine/sound/sopra/runtime/EventInstance.d.ts.map +1 -0
- package/src/engine/sound/sopra/runtime/EventInstance.js +579 -0
- package/src/engine/sound/sopra/runtime/ParameterStore.d.ts +42 -0
- package/src/engine/sound/sopra/runtime/ParameterStore.d.ts.map +1 -0
- package/src/engine/sound/sopra/runtime/ParameterStore.js +98 -0
- package/src/engine/sound/sopra/runtime/SopraPlaybackContext.d.ts +42 -0
- package/src/engine/sound/sopra/runtime/SopraPlaybackContext.d.ts.map +1 -0
- package/src/engine/sound/sopra/runtime/SopraPlaybackContext.js +68 -0
- package/src/engine/sound/sopra/runtime/Voice.d.ts +67 -0
- package/src/engine/sound/sopra/runtime/Voice.d.ts.map +1 -0
- package/src/engine/sound/sopra/runtime/Voice.js +145 -0
- package/src/engine/sound/sopra/runtime/VoiceManager.d.ts +38 -0
- package/src/engine/sound/sopra/runtime/VoiceManager.d.ts.map +1 -0
- package/src/engine/sound/sopra/runtime/VoiceManager.js +136 -0
- package/src/engine/sound/sopra/runtime/VoicePool.d.ts +12 -0
- package/src/engine/sound/sopra/runtime/VoicePool.d.ts.map +1 -0
- package/src/engine/sound/sopra/runtime/VoicePool.js +17 -0
- package/src/engine/sound/sopra/serialization/populateSopraSerializationRegistry.d.ts +11 -0
- package/src/engine/sound/sopra/serialization/populateSopraSerializationRegistry.d.ts.map +1 -0
- package/src/engine/sound/sopra/serialization/populateSopraSerializationRegistry.js +42 -0
- package/src/engine/sound/sopra/serialization/sopraJSON.d.ts +33 -0
- package/src/engine/sound/sopra/serialization/sopraJSON.d.ts.map +1 -0
- package/src/engine/sound/sopra/serialization/sopraJSON.js +99 -0
- package/src/engine/sound/sopra/serialization/sopraSerializationHarness.d.ts +27 -0
- package/src/engine/sound/sopra/serialization/sopraSerializationHarness.d.ts.map +1 -0
- package/src/engine/sound/sopra/serialization/sopraSerializationHarness.js +49 -0
- package/src/engine/sound/sopra/util/MockAudioContext.d.ts +74 -0
- package/src/engine/sound/sopra/util/MockAudioContext.d.ts.map +1 -0
- package/src/engine/sound/sopra/util/MockAudioContext.js +215 -0
- package/src/engine/sound/sopra/util/buildAttenuationCurve.d.ts +15 -0
- package/src/engine/sound/sopra/util/buildAttenuationCurve.d.ts.map +1 -0
- package/src/engine/sound/sopra/util/buildAttenuationCurve.js +40 -0
- package/src/engine/sound/sopra/util/fadeOutAndStop.d.ts +34 -0
- package/src/engine/sound/sopra/util/fadeOutAndStop.d.ts.map +1 -0
- package/src/engine/sound/sopra/util/fadeOutAndStop.js +60 -0
- package/src/engine/sound/volume2dB.d.ts +1 -1
- package/src/engine/sound/volume2dB.d.ts.map +1 -1
- package/src/engine/sound/volume2dB.js +1 -1
- package/src/engine/graphics/sh3/path_tracer/sampling/v3_orthonormal_matrix_from_normal.d.ts.map +0 -1
- package/src/engine/physics/narrowphase/ray_shapes.d.ts +0 -66
- package/src/engine/physics/narrowphase/ray_shapes.d.ts.map +0 -1
- package/src/engine/physics/narrowphase/ray_shapes.js +0 -187
- package/src/engine/sound/ecs/emitter/SoundEmitterChannel.d.ts +0 -23
- package/src/engine/sound/ecs/emitter/SoundEmitterChannel.d.ts.map +0 -1
- package/src/engine/sound/ecs/emitter/SoundEmitterChannel.js +0 -32
- package/src/engine/sound/ecs/emitter/SoundTrackNodes.d.ts +0 -18
- package/src/engine/sound/ecs/emitter/SoundTrackNodes.d.ts.map +0 -1
- package/src/engine/sound/ecs/emitter/SoundTrackNodes.js +0 -18
- package/src/engine/sound/sopra/AbstractAudioClip.d.ts +0 -26
- package/src/engine/sound/sopra/AbstractAudioClip.d.ts.map +0 -1
- package/src/engine/sound/sopra/AbstractAudioClip.js +0 -29
- package/src/engine/sound/sopra/ContainerAudioClip.d.ts +0 -12
- package/src/engine/sound/sopra/ContainerAudioClip.d.ts.map +0 -1
- package/src/engine/sound/sopra/ContainerAudioClip.js +0 -13
- package/src/engine/sound/sopra/RandomContainerAudioClip.d.ts +0 -12
- package/src/engine/sound/sopra/RandomContainerAudioClip.d.ts.map +0 -1
- package/src/engine/sound/sopra/RandomContainerAudioClip.js +0 -15
- package/src/engine/sound/sopra/SequenceContainerAudioClip.d.ts +0 -7
- package/src/engine/sound/sopra/SequenceContainerAudioClip.d.ts.map +0 -1
- package/src/engine/sound/sopra/SequenceContainerAudioClip.js +0 -8
- package/src/engine/sound/sopra/SilenceAudioClip.d.ts +0 -13
- package/src/engine/sound/sopra/SilenceAudioClip.d.ts.map +0 -1
- package/src/engine/sound/sopra/SilenceAudioClip.js +0 -15
- /package/src/{engine/graphics/sh3/path_tracer/sampling → core/geom/vec3}/v3_orthonormal_matrix_from_normal.d.ts +0 -0
|
@@ -1,78 +1,81 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
*
|
|
10
|
-
*
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
const
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
*
|
|
23
|
-
*
|
|
24
|
-
*
|
|
25
|
-
* rotation
|
|
26
|
-
*
|
|
27
|
-
*
|
|
28
|
-
*
|
|
29
|
-
*
|
|
30
|
-
*
|
|
31
|
-
*
|
|
32
|
-
* @
|
|
33
|
-
*
|
|
34
|
-
*
|
|
35
|
-
* @param {
|
|
36
|
-
* @param {
|
|
37
|
-
* @param {number}
|
|
38
|
-
* @param {
|
|
39
|
-
*
|
|
40
|
-
* @
|
|
41
|
-
*
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
1
|
+
import { box3_raycast } from "../../../core/geom/3d/box/box3_raycast.js";
|
|
2
|
+
import { capsule_raycast } from "../../../core/geom/3d/capsule/capsule_raycast.js";
|
|
3
|
+
import { sphere_raycast } from "../../../core/geom/3d/sphere/sphere_raycast.js";
|
|
4
|
+
import { v3_quat3_apply } from "../../../core/geom/vec3/v3_quat3_apply.js";
|
|
5
|
+
import { v3_quat3_apply_inverse } from "../../../core/geom/vec3/v3_quat3_apply_inverse.js";
|
|
6
|
+
import { refine_ray_concave } from "./refine_ray_concave.js";
|
|
7
|
+
|
|
8
|
+
/**
|
|
9
|
+
* Sentinel returned by {@link refine_ray_hit} for a shape it has no exact ray
|
|
10
|
+
* test for (composite / arbitrary convex). The caller should keep the
|
|
11
|
+
* broadphase AABB result for that leaf rather than treat it as a miss.
|
|
12
|
+
* Distinct from `Infinity` (a refined miss) and any finite hit distance.
|
|
13
|
+
* @type {number}
|
|
14
|
+
*/
|
|
15
|
+
export const RAY_REFINE_UNSUPPORTED = -1;
|
|
16
|
+
|
|
17
|
+
const lo = new Float64Array(3); // ray origin in shape-local frame
|
|
18
|
+
const ld = new Float64Array(3); // ray direction in shape-local frame
|
|
19
|
+
const ln = new Float64Array(3); // surface normal in shape-local frame
|
|
20
|
+
|
|
21
|
+
/**
|
|
22
|
+
* Refine a broadphase ray hit against a body's true shape geometry.
|
|
23
|
+
*
|
|
24
|
+
* Transforms the world ray into the shape's local frame once (rotate by the
|
|
25
|
+
* inverse body rotation — a unit direction stays unit, so the hit distance is
|
|
26
|
+
* preserved), runs the matching canonical primitive ({@link ray_shapes}), and
|
|
27
|
+
* rotates the returned local normal back to world. Spheres are
|
|
28
|
+
* rotation-invariant, so they only need the translation.
|
|
29
|
+
*
|
|
30
|
+
* Handles the convex primitives (sphere / box / capsule). Concave shapes
|
|
31
|
+
* (mesh / heightmap) and arbitrary composite convex shapes return
|
|
32
|
+
* {@link RAY_REFINE_UNSUPPORTED} — the concave path is wired in separately, and
|
|
33
|
+
* composites fall back to the broadphase AABB hit (no regression).
|
|
34
|
+
*
|
|
35
|
+
* @param {AbstractShape3D} shape
|
|
36
|
+
* @param {{x:number,y:number,z:number}} position body world position
|
|
37
|
+
* @param {ArrayLike<number>} rotation body world rotation quaternion (x,y,z,w)
|
|
38
|
+
* @param {number} ox @param {number} oy @param {number} oz ray origin (world)
|
|
39
|
+
* @param {number} dx @param {number} dy @param {number} dz ray dir (world, unit)
|
|
40
|
+
* @param {number} tMax
|
|
41
|
+
* @param {Float64Array|Vector3} outNormal world surface normal, written on a
|
|
42
|
+
* finite hit
|
|
43
|
+
* @returns {number} hit distance, `Infinity` on a refined miss, or
|
|
44
|
+
* {@link RAY_REFINE_UNSUPPORTED} when the shape has no exact ray test here
|
|
45
|
+
*/
|
|
46
|
+
export function refine_ray_hit(shape, position, rotation, ox, oy, oz, dx, dy, dz, tMax, outNormal) {
|
|
47
|
+
if (shape.isSphereShape3D === true) {
|
|
48
|
+
// Rotation-invariant: translate into the sphere's frame; the local
|
|
49
|
+
// normal is already the world normal.
|
|
50
|
+
return sphere_raycast(outNormal, 0, ox - position.x, oy - position.y, oz - position.z, dx, dy, dz, tMax, shape.radius);
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
if (shape.isBoxShape3D === true || shape.isCapsuleShape3D === true) {
|
|
54
|
+
const qx = rotation[0], qy = rotation[1], qz = rotation[2], qw = rotation[3];
|
|
55
|
+
// World → local: rotate by the inverse (conjugate) body rotation.
|
|
56
|
+
v3_quat3_apply_inverse(lo, 0, ox - position.x, oy - position.y, oz - position.z, qx, qy, qz, qw);
|
|
57
|
+
v3_quat3_apply_inverse(ld, 0, dx, dy, dz, qx, qy, qz, qw);
|
|
58
|
+
|
|
59
|
+
let t;
|
|
60
|
+
if (shape.isBoxShape3D === true) {
|
|
61
|
+
const h = shape.half_extents;
|
|
62
|
+
t = box3_raycast(ln, 0, lo[0], lo[1], lo[2], ld[0], ld[1], ld[2], tMax, h.x, h.y, h.z);
|
|
63
|
+
} else {
|
|
64
|
+
t = capsule_raycast(ln, 0, lo[0], lo[1], lo[2], ld[0], ld[1], ld[2], tMax, shape.radius, shape.height * 0.5);
|
|
65
|
+
}
|
|
66
|
+
if (t === Infinity) return Infinity;
|
|
67
|
+
|
|
68
|
+
// Local normal → world: rotate by the body rotation.
|
|
69
|
+
v3_quat3_apply(outNormal, 0, ln[0], ln[1], ln[2], qx, qy, qz, qw);
|
|
70
|
+
return t;
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
// Concave (mesh / heightmap): triangle decomposition.
|
|
74
|
+
if (shape.is_convex === false) {
|
|
75
|
+
return refine_ray_concave(shape, position, rotation, ox, oy, oz, dx, dy, dz, tMax, outNormal);
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
// Arbitrary composite convex (TransformedShape3D / UnionShape3D / …):
|
|
79
|
+
// no exact ray test yet — caller falls back to the broadphase AABB hit.
|
|
80
|
+
return RAY_REFINE_UNSUPPORTED;
|
|
81
|
+
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SoundEngine.d.ts","sourceRoot":"","sources":["../../../../src/engine/sound/SoundEngine.js"],"names":[],"mappings":";
|
|
1
|
+
{"version":3,"file":"SoundEngine.d.ts","sourceRoot":"","sources":["../../../../src/engine/sound/SoundEngine.js"],"names":[],"mappings":";AAEA;;;;GAIG;AACH;IAkBwB,sBAWd;IAUF,sBAA2B;IAI3B;;;;OAIG;IACH,OAFU,WAAW,GAAC,IAAI,CAET;IAerB;;;;;;;;;;OAUG;IACH,6CAFa,WAAW,CAQvB;IAED;;;OAGG;IACH,kBAFY,MAAM,CAIjB;IAED;;;;OAIG;IACH,iBAFa,QAAQ,IAAI,CAAC,CAMzB;IAED;;;OAGG;IACH,SAFa,QAAQ,GAAG,CAAC,CAWxB;CACJ;4BA1H2B,wBAAwB"}
|
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
import { SopraEngine } from "./sopra/SopraEngine.js";
|
|
2
|
+
|
|
1
3
|
/**
|
|
2
4
|
*
|
|
3
5
|
* @author Alex Goldring
|
|
@@ -46,6 +48,13 @@ class SoundEngine {
|
|
|
46
48
|
gainNode.connect(compressor);
|
|
47
49
|
compressor.connect(context.destination);
|
|
48
50
|
|
|
51
|
+
/**
|
|
52
|
+
* The sopra (FMOD/Wwise-style) engine, created and owned here once the AssetManager-backed
|
|
53
|
+
* buffer provider is available (see {@link createSopra}, called from SoundEmitterSystem).
|
|
54
|
+
* @type {SopraEngine|null}
|
|
55
|
+
*/
|
|
56
|
+
this.sopra = null;
|
|
57
|
+
|
|
49
58
|
// master channel
|
|
50
59
|
Object.defineProperties(this, {
|
|
51
60
|
volume: {
|
|
@@ -59,6 +68,25 @@ class SoundEngine {
|
|
|
59
68
|
});
|
|
60
69
|
}
|
|
61
70
|
|
|
71
|
+
/**
|
|
72
|
+
* Create and own the sopra engine, built on this SoundEngine's existing AudioContext + master
|
|
73
|
+
* destination (never a second context). Wired in by the sound systems, which supply an
|
|
74
|
+
* AssetManager-backed buffer provider.
|
|
75
|
+
*
|
|
76
|
+
* Idempotent: the SopraEngine is a singleton on the SoundEngine, so the first caller creates it and
|
|
77
|
+
* later callers reuse it (the `bufferProvider` of later calls is ignored). This lets multiple
|
|
78
|
+
* systems — e.g. the legacy SoundEmitterSystem and the native AudioEmitterSystem — share one engine.
|
|
79
|
+
* @param {BufferProvider} bufferProvider
|
|
80
|
+
* @returns {SopraEngine}
|
|
81
|
+
*/
|
|
82
|
+
createSopra(bufferProvider) {
|
|
83
|
+
if (this.sopra === null) {
|
|
84
|
+
this.sopra = new SopraEngine(this.context, this.destination, bufferProvider);
|
|
85
|
+
}
|
|
86
|
+
|
|
87
|
+
return this.sopra;
|
|
88
|
+
}
|
|
89
|
+
|
|
62
90
|
/**
|
|
63
91
|
*
|
|
64
92
|
* @return {number}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dB2Volume.d.ts","sourceRoot":"","sources":["../../../../src/engine/sound/dB2Volume.js"],"names":[],"mappings":"AAAA;;;;GAIG;AACH
|
|
1
|
+
{"version":3,"file":"dB2Volume.d.ts","sourceRoot":"","sources":["../../../../src/engine/sound/dB2Volume.js"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,8BAHW,MAAM,GACJ,MAAM,CAIlB"}
|
|
@@ -16,6 +16,10 @@ export class SoundControllerSerializationAdapter extends BinaryClassSerializatio
|
|
|
16
16
|
*/
|
|
17
17
|
deserialize(buffer: BinaryBuffer, value: SoundController): void;
|
|
18
18
|
}
|
|
19
|
+
/**
|
|
20
|
+
* @deprecated Legacy sound controller — superseded by the native audio path ({@link AudioEmitter} and
|
|
21
|
+
* the forthcoming `AudioEventTrigger`). Retained for existing callers during the strangler migration.
|
|
22
|
+
*/
|
|
19
23
|
declare class SoundController {
|
|
20
24
|
/**
|
|
21
25
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SoundController.d.ts","sourceRoot":"","sources":["../../../../../src/engine/sound/ecs/SoundController.js"],"names":[],"mappings":";
|
|
1
|
+
{"version":3,"file":"SoundController.d.ts","sourceRoot":"","sources":["../../../../../src/engine/sound/ecs/SoundController.js"],"names":[],"mappings":";AAsJA;;IACI,8BAAwB;IACxB,gBAAY;IAEZ;;;;OAIG;IACH,uCAFW,eAAe,QAIzB;IAED;;;;OAIG;IACH,yCAFW,eAAe,QAIzB;CACJ;AAvDD;;;GAGG;AACH;IACI;;;;OAIG;IACH,0BAKC;IAJG,iBAAuB;IAM3B,0BAEC;IAED,cAEC;CACJ;;;;;gDA3I+C,6DAA6D;iBAD5F,uCAAuC;AAGxD;IAEQ;;;OAGG;IACH,QAFU,MAAM,MAAM,CAAC,CAEP;IAChB;;;OAGG;IACH,YAFU,SAAO,IAAI,CAEC;IACtB;;;OAGG;IACH,WAFU,SAAO,IAAI,CAEA;IACrB;;;OAGG;IACH,MAFU,OAAO,CAEA;IACjB;;;OAGG;IACH,QAFU,MAAM,CAED;IACf;;;OAGG;IACH,SAFU,SAAO,IAAI,CAEF;IAGvB;;;;;;;MASC;IAED,0BAyBC;IAxBG,SAAmB;IA0BvB;;;OAGG;IACH,2CAcC;IAED;;;OAGG;IACH,6CAcC;CACJ"}
|
|
@@ -114,6 +114,10 @@ class Rule {
|
|
|
114
114
|
}
|
|
115
115
|
}
|
|
116
116
|
|
|
117
|
+
/**
|
|
118
|
+
* @deprecated Legacy sound controller — superseded by the native audio path ({@link AudioEmitter} and
|
|
119
|
+
* the forthcoming `AudioEventTrigger`). Retained for existing callers during the strangler migration.
|
|
120
|
+
*/
|
|
117
121
|
class SoundController {
|
|
118
122
|
/**
|
|
119
123
|
*
|
|
@@ -1,4 +1,9 @@
|
|
|
1
1
|
export default SoundControllerSystem;
|
|
2
|
+
/**
|
|
3
|
+
* @deprecated Legacy sound-controller system — superseded by the native audio path
|
|
4
|
+
* ({@link AudioEmitterSystem} and the forthcoming `AudioEventTrigger`). Retained for existing callers
|
|
5
|
+
* during the strangler migration.
|
|
6
|
+
*/
|
|
2
7
|
declare class SoundControllerSystem extends System<any, any, any, any, any> {
|
|
3
8
|
constructor();
|
|
4
9
|
dependencies: (typeof SoundController)[];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SoundControllerSystem.d.ts","sourceRoot":"","sources":["../../../../../src/engine/sound/ecs/SoundControllerSystem.js"],"names":[],"mappings":";AAyBA;IACI,cAUC;IARG,yCAAqC;IAGrC,oEAEC;IAED,gBAAkB;IAGtB;;;;OAIG;IACH,gBAHW,eAAe,UACf,MAAM,QAsDhB;IAED,0CAUC;CACJ;
|
|
1
|
+
{"version":3,"file":"SoundControllerSystem.d.ts","sourceRoot":"","sources":["../../../../../src/engine/sound/ecs/SoundControllerSystem.js"],"names":[],"mappings":";AAyBA;;;;GAIG;AACH;IACI,cAUC;IARG,yCAAqC;IAGrC,oEAEC;IAED,gBAAkB;IAGtB;;;;OAIG;IACH,gBAHW,eAAe,UACf,MAAM,QAsDhB;IAED,0CAUC;CACJ;uBA/GsB,qBAAqB;4BAGhB,sBAAsB;6BAFrB,2BAA2B;4CAFZ,oDAAoD"}
|
|
@@ -23,6 +23,11 @@ function pickTackFromRule(rule) {
|
|
|
23
23
|
return tracks[index];
|
|
24
24
|
}
|
|
25
25
|
|
|
26
|
+
/**
|
|
27
|
+
* @deprecated Legacy sound-controller system — superseded by the native audio path
|
|
28
|
+
* ({@link AudioEmitterSystem} and the forthcoming `AudioEventTrigger`). Retained for existing callers
|
|
29
|
+
* during the strangler migration.
|
|
30
|
+
*/
|
|
26
31
|
class SoundControllerSystem extends System {
|
|
27
32
|
constructor() {
|
|
28
33
|
super();
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Native ECS sound component (the user-facing replacement for the legacy `SoundEmitter`). Unlike
|
|
3
|
+
* `SoundEmitter` — which holds a list of tracks that get *translated* into sopra events — an
|
|
4
|
+
* `AudioEmitter` OWNS its authored sopra {@link EventDescription} directly (full clip graph: samples /
|
|
5
|
+
* sequence / random / switch / blend; effects; bus routing; 3D / attenuation; voice config). It is the
|
|
6
|
+
* ECS-native data container the engine's data model makes possible (no FMOD-style global bank needed).
|
|
7
|
+
*
|
|
8
|
+
* Played + spatialised by {@link AudioEmitterSystem}; the entity's {@link Transform} supplies position.
|
|
9
|
+
*/
|
|
10
|
+
export class AudioEmitter {
|
|
11
|
+
/**
|
|
12
|
+
* @param {*} json
|
|
13
|
+
* @returns {AudioEmitter}
|
|
14
|
+
*/
|
|
15
|
+
static fromJSON(json: any): AudioEmitter;
|
|
16
|
+
/**
|
|
17
|
+
* The authored event this emitter plays.
|
|
18
|
+
* @type {EventDescription}
|
|
19
|
+
*/
|
|
20
|
+
event: EventDescription;
|
|
21
|
+
/**
|
|
22
|
+
* Live volume multiplier applied on top of the event's own gain (carried by the instance gain).
|
|
23
|
+
* @type {Vector1}
|
|
24
|
+
*/
|
|
25
|
+
volume: Vector1;
|
|
26
|
+
/**
|
|
27
|
+
* Play automatically when the component links to an entity (e.g. looping ambience). A finite event
|
|
28
|
+
* self-releases when it finishes; a looping event persists until unlink.
|
|
29
|
+
* @type {boolean}
|
|
30
|
+
*/
|
|
31
|
+
autoplay: boolean;
|
|
32
|
+
/**
|
|
33
|
+
* @param {AudioEmitter} other
|
|
34
|
+
* @returns {boolean}
|
|
35
|
+
*/
|
|
36
|
+
equals(other: AudioEmitter): boolean;
|
|
37
|
+
hash(): number;
|
|
38
|
+
toJSON(): {
|
|
39
|
+
event: {
|
|
40
|
+
label: string;
|
|
41
|
+
rootClip: {
|
|
42
|
+
type: string;
|
|
43
|
+
data: any;
|
|
44
|
+
};
|
|
45
|
+
busId: string;
|
|
46
|
+
gainDb: number;
|
|
47
|
+
is3D: boolean;
|
|
48
|
+
panningModel: number;
|
|
49
|
+
distanceMin: number;
|
|
50
|
+
distanceMax: number;
|
|
51
|
+
attenuation: {
|
|
52
|
+
keys: any[];
|
|
53
|
+
};
|
|
54
|
+
maxInstances: number;
|
|
55
|
+
priority: number;
|
|
56
|
+
stealMode: number;
|
|
57
|
+
virtualThresholdDb: number;
|
|
58
|
+
};
|
|
59
|
+
volume: number;
|
|
60
|
+
autoplay: boolean;
|
|
61
|
+
};
|
|
62
|
+
fromJSON(json: any): void;
|
|
63
|
+
}
|
|
64
|
+
export namespace AudioEmitter {
|
|
65
|
+
let typeName: string;
|
|
66
|
+
}
|
|
67
|
+
import { EventDescription } from "../../sopra/definition/EventDescription.js";
|
|
68
|
+
import Vector1 from "../../../../core/geom/Vector1.js";
|
|
69
|
+
//# sourceMappingURL=AudioEmitter.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"AudioEmitter.d.ts","sourceRoot":"","sources":["../../../../../../src/engine/sound/ecs/audio/AudioEmitter.js"],"names":[],"mappings":"AAKA;;;;;;;;GAQG;AACH;IAyDI;;;OAGG;IACH,4BAFa,YAAY,CAMxB;IA/DD;;;OAGG;IACH,OAFU,gBAAgB,CAEK;IAE/B;;;OAGG;IACH,QAFU,OAAO,CAEO;IAExB;;;;OAIG;IACH,UAFU,OAAO,CAED;IAEhB;;;OAGG;IACH,cAHW,YAAY,GACV,OAAO,CAMnB;IAED,eAMC;IAED;;;;;;;;;;;;;;;;;;;;;;;MAMC;IAED,0BAQC;CAWJ;;;;iCA7EgC,4CAA4C;oBAFzD,kCAAkC"}
|
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
import { combine_hash } from "../../../../core/collection/array/combine_hash.js";
|
|
2
|
+
import Vector1 from "../../../../core/geom/Vector1.js";
|
|
3
|
+
import { computeHashFloat } from "../../../../core/primitives/numbers/computeHashFloat.js";
|
|
4
|
+
import { EventDescription } from "../../sopra/definition/EventDescription.js";
|
|
5
|
+
|
|
6
|
+
/**
|
|
7
|
+
* Native ECS sound component (the user-facing replacement for the legacy `SoundEmitter`). Unlike
|
|
8
|
+
* `SoundEmitter` — which holds a list of tracks that get *translated* into sopra events — an
|
|
9
|
+
* `AudioEmitter` OWNS its authored sopra {@link EventDescription} directly (full clip graph: samples /
|
|
10
|
+
* sequence / random / switch / blend; effects; bus routing; 3D / attenuation; voice config). It is the
|
|
11
|
+
* ECS-native data container the engine's data model makes possible (no FMOD-style global bank needed).
|
|
12
|
+
*
|
|
13
|
+
* Played + spatialised by {@link AudioEmitterSystem}; the entity's {@link Transform} supplies position.
|
|
14
|
+
*/
|
|
15
|
+
export class AudioEmitter {
|
|
16
|
+
|
|
17
|
+
/**
|
|
18
|
+
* The authored event this emitter plays.
|
|
19
|
+
* @type {EventDescription}
|
|
20
|
+
*/
|
|
21
|
+
event = new EventDescription();
|
|
22
|
+
|
|
23
|
+
/**
|
|
24
|
+
* Live volume multiplier applied on top of the event's own gain (carried by the instance gain).
|
|
25
|
+
* @type {Vector1}
|
|
26
|
+
*/
|
|
27
|
+
volume = new Vector1(1);
|
|
28
|
+
|
|
29
|
+
/**
|
|
30
|
+
* Play automatically when the component links to an entity (e.g. looping ambience). A finite event
|
|
31
|
+
* self-releases when it finishes; a looping event persists until unlink.
|
|
32
|
+
* @type {boolean}
|
|
33
|
+
*/
|
|
34
|
+
autoplay = true;
|
|
35
|
+
|
|
36
|
+
/**
|
|
37
|
+
* @param {AudioEmitter} other
|
|
38
|
+
* @returns {boolean}
|
|
39
|
+
*/
|
|
40
|
+
equals(other) {
|
|
41
|
+
return this.autoplay === other.autoplay
|
|
42
|
+
&& this.volume.getValue() === other.volume.getValue()
|
|
43
|
+
&& this.event.equals(other.event);
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
hash() {
|
|
47
|
+
return combine_hash(
|
|
48
|
+
this.event.hash(),
|
|
49
|
+
this.autoplay ? 1 : 0,
|
|
50
|
+
computeHashFloat(this.volume.getValue())
|
|
51
|
+
);
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
toJSON() {
|
|
55
|
+
return {
|
|
56
|
+
event: this.event.toJSON(),
|
|
57
|
+
volume: this.volume.toJSON(),
|
|
58
|
+
autoplay: this.autoplay
|
|
59
|
+
};
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
fromJSON(json) {
|
|
63
|
+
if (json.event !== undefined) {
|
|
64
|
+
this.event.fromJSON(json.event);
|
|
65
|
+
}
|
|
66
|
+
if (json.volume !== undefined) {
|
|
67
|
+
this.volume.fromJSON(json.volume);
|
|
68
|
+
}
|
|
69
|
+
this.autoplay = json.autoplay !== undefined ? json.autoplay : true;
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
/**
|
|
73
|
+
* @param {*} json
|
|
74
|
+
* @returns {AudioEmitter}
|
|
75
|
+
*/
|
|
76
|
+
static fromJSON(json) {
|
|
77
|
+
const r = new AudioEmitter();
|
|
78
|
+
r.fromJSON(json);
|
|
79
|
+
return r;
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
|
|
83
|
+
AudioEmitter.typeName = "AudioEmitter";
|
|
@@ -0,0 +1,97 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Drives {@link AudioEmitter} components through the shared sopra engine — the native counterpart to
|
|
3
|
+
* the legacy `SoundEmitterSystem`. Each emitter owns its {@link EventDescription} directly (no track
|
|
4
|
+
* translation); the entity's {@link Transform} feeds position; `volume` changes plumb to the instance
|
|
5
|
+
* gain. Each frame it forwards the listener pose, refreshes the spatial live set, and ticks sopra.
|
|
6
|
+
*
|
|
7
|
+
* **Two play paths**, chosen once at {@link link} (routing is fixed for the lifetime of the link —
|
|
8
|
+
* mutating `autoplay`/`is3D` afterward does nothing without an unlink/relink):
|
|
9
|
+
* - **Spatially managed** (`autoplay && is3D && looping`): registered with a {@link LiveEmitterSet} and
|
|
10
|
+
* left *dormant* until a refresh promotes the nearest in-range emitters up to a global voice budget —
|
|
11
|
+
* this is what lets the system carry far more emitters than can sound at once (the 100k-bird case). A
|
|
12
|
+
* dormant emitter costs only a BVH leaf; no instance, no nodes, no per-frame work. NOTE: for a crowd
|
|
13
|
+
* of content-equal managed events to all sound, their `maxInstances` must be ≥ the live budget — they
|
|
14
|
+
* share one sopra polyphony bucket (keyed by event content), so a lower cap gates the budget. Only
|
|
15
|
+
* *looping* events are managed: the live set models a persistent source whose phase is reconstructed
|
|
16
|
+
* on (re-)promotion — meaningless for a finite one-shot, and a dead one-shot would otherwise keep
|
|
17
|
+
* re-promoting and occupying a budget slot — so finite events take the direct path.
|
|
18
|
+
* - **Direct** (any other `autoplay` event — 2D sounds, or finite 3D one-shots): played immediately on
|
|
19
|
+
* link, stopped on unlink. 2D sounds (music, ambience beds) have nothing to cull by distance; a finite
|
|
20
|
+
* 3D one-shot still spatializes (its instance attenuates by position) and self-releases when it ends.
|
|
21
|
+
*
|
|
22
|
+
* Non-autoplay emitters are inert: neither played nor registered, awaiting a future explicit trigger.
|
|
23
|
+
*
|
|
24
|
+
* Shares the single {@link SopraEngine} owned by {@link SoundEngine} (created on demand, idempotent),
|
|
25
|
+
* so it coexists with the legacy `SoundEmitterSystem` during the strangler migration.
|
|
26
|
+
*/
|
|
27
|
+
export class AudioEmitterSystem extends System<any, any, any, any, any> {
|
|
28
|
+
/**
|
|
29
|
+
* @param {AssetManager} assetManager
|
|
30
|
+
* @param {SoundEngine} soundEngine owns the AudioContext + master destination + sopra engine
|
|
31
|
+
* @param {{budget?:number, liveStickiness?:number, fadeOutSeconds?:number}} [liveEmitterSetOptions]
|
|
32
|
+
* forwarded to the {@link LiveEmitterSet} that manages 3D emitters
|
|
33
|
+
*/
|
|
34
|
+
constructor(assetManager: AssetManager, soundEngine: SoundEngine, liveEmitterSetOptions?: {
|
|
35
|
+
budget?: number;
|
|
36
|
+
liveStickiness?: number;
|
|
37
|
+
fadeOutSeconds?: number;
|
|
38
|
+
});
|
|
39
|
+
dependencies: (typeof Transform | typeof AudioEmitter)[];
|
|
40
|
+
/**
|
|
41
|
+
* @type {SoundEngine}
|
|
42
|
+
*/
|
|
43
|
+
soundEngine: SoundEngine;
|
|
44
|
+
/**
|
|
45
|
+
* @type {AudioContext}
|
|
46
|
+
*/
|
|
47
|
+
webAudioContext: AudioContext;
|
|
48
|
+
/**
|
|
49
|
+
* @type {AssetManager}
|
|
50
|
+
*/
|
|
51
|
+
assetManager: AssetManager;
|
|
52
|
+
/**
|
|
53
|
+
* The shared sopra engine (idempotent create — reused if the legacy system already made it).
|
|
54
|
+
* @type {SopraEngine}
|
|
55
|
+
*/
|
|
56
|
+
sopra: SopraEngine;
|
|
57
|
+
/**
|
|
58
|
+
* Spatial lifecycle for 3D ("managed") emitters: BVH cull → promote nearest-in-range up to the
|
|
59
|
+
* budget, demote the rest. 2D emitters bypass this and play directly.
|
|
60
|
+
* @type {LiveEmitterSet}
|
|
61
|
+
*/
|
|
62
|
+
liveSet: LiveEmitterSet;
|
|
63
|
+
/**
|
|
64
|
+
* Per-entity records: { emitter, transform, managed, instance, onVolume }. For a managed (3D)
|
|
65
|
+
* emitter the playing instance lives in {@link liveSet} (record.instance stays null); for a
|
|
66
|
+
* direct (2D) emitter it is held here.
|
|
67
|
+
* @type {object[]}
|
|
68
|
+
*/
|
|
69
|
+
data: object[];
|
|
70
|
+
/**
|
|
71
|
+
* @param {AudioEmitter} emitter
|
|
72
|
+
* @param {Transform} transform
|
|
73
|
+
* @param {number} entity
|
|
74
|
+
*/
|
|
75
|
+
link(emitter: AudioEmitter, transform: Transform, entity: number): void;
|
|
76
|
+
/**
|
|
77
|
+
* @param {AudioEmitter} emitter
|
|
78
|
+
* @param {Transform} transform
|
|
79
|
+
* @param {number} entity
|
|
80
|
+
*/
|
|
81
|
+
unlink(emitter: AudioEmitter, transform: Transform, entity: number): void;
|
|
82
|
+
/**
|
|
83
|
+
* The currently-playing instance for an entity, or null. For a managed (3D) emitter this is the live
|
|
84
|
+
* instance only while it is promoted (null while dormant or out of range); for a direct (2D) emitter
|
|
85
|
+
* it is the instance held since link.
|
|
86
|
+
* @param {number} entity
|
|
87
|
+
* @returns {EventInstance|null}
|
|
88
|
+
*/
|
|
89
|
+
instanceFor(entity: number): EventInstance | null;
|
|
90
|
+
update(timeDelta: any): void;
|
|
91
|
+
#private;
|
|
92
|
+
}
|
|
93
|
+
import { System } from "../../../ecs/System.js";
|
|
94
|
+
import { Transform } from "../../../ecs/transform/Transform.js";
|
|
95
|
+
import { AudioEmitter } from "./AudioEmitter.js";
|
|
96
|
+
import { LiveEmitterSet } from "./LiveEmitterSet.js";
|
|
97
|
+
//# sourceMappingURL=AudioEmitterSystem.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"AudioEmitterSystem.d.ts","sourceRoot":"","sources":["../../../../../../src/engine/sound/ecs/audio/AudioEmitterSystem.js"],"names":[],"mappings":"AAWA;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH;IACI;;;;;OAKG;IACH,0FAHW;QAAC,MAAM,CAAC,EAAC,MAAM,CAAC;QAAC,cAAc,CAAC,EAAC,MAAM,CAAC;QAAC,cAAc,CAAC,EAAC,MAAM,CAAA;KAAC,EAiD1E;IA3CG,yDAA6C;IAE7C;;OAEG;IACH,yBAA8B;IAE9B;;OAEG;IACH,iBAFU,YAAY,CAEoB;IAE1C;;OAEG;IACH,2BAAgC;IAQhC;;;OAGG;IACH,mBAAkF;IAElF;;;;OAIG;IACH,SAFU,cAAc,CAE4C;IAEpE;;;;;OAKG;IACH,MAFU,MAAM,EAAE,CAEJ;IAGlB;;;;OAIG;IACH,cAJW,YAAY,aACZ,SAAS,UACT,MAAM,QAuBhB;IAED;;;;OAIG;IACH,gBAJW,YAAY,aACZ,SAAS,UACT,MAAM,QAmBhB;IAED;;;;;;OAMG;IACH,oBAHW,MAAM,GACJ,gBAAc,IAAI,CAe9B;IAuCD,6BAiCC;;CACJ;uBA3OsB,wBAAwB;0BACrB,qCAAqC;6BAKlC,mBAAmB;+BACjB,qBAAqB"}
|