@woosh/meep-engine 3.16.0 → 3.17.1
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 +8 -72
- package/editor/particles/effect/ParticleEffectDocument.d.ts +21 -6
- package/editor/particles/effect/ParticleEffectDocument.d.ts.map +1 -1
- package/editor/particles/effect/ParticleEffectDocument.js +38 -17
- package/editor/view/node-graph/NodeGraphClipboard.d.ts +186 -0
- package/editor/view/node-graph/NodeGraphClipboard.d.ts.map +1 -0
- package/editor/view/node-graph/NodeGraphClipboard.js +231 -0
- package/editor/view/node-graph/NodeGraphEditorView.d.ts +59 -1
- package/editor/view/node-graph/NodeGraphEditorView.d.ts.map +1 -1
- package/editor/view/node-graph/NodeGraphEditorView.js +248 -5
- package/editor/view/node-graph/NodeGraphView.d.ts.map +1 -1
- package/editor/view/node-graph/NodeGraphView.js +84 -8
- package/editor/view/node-graph/actions/connection_bind_actions.d.ts +23 -0
- package/editor/view/node-graph/actions/connection_bind_actions.d.ts.map +1 -0
- package/editor/view/node-graph/actions/connection_bind_actions.js +39 -0
- package/editor/view/particles/effect/ParticleCodeEditorView.d.ts.map +1 -1
- package/editor/view/particles/effect/ParticleCodeEditorView.js +4 -3
- package/editor/view/particles/effect/ParticleCurveEditorView.d.ts +20 -0
- package/editor/view/particles/effect/ParticleCurveEditorView.d.ts.map +1 -0
- package/editor/view/particles/effect/ParticleCurveEditorView.js +574 -0
- package/editor/view/particles/effect/ParticleEmitterInspectorView.d.ts.map +1 -1
- package/editor/view/particles/effect/ParticleEmitterInspectorView.js +27 -1
- package/editor/view/particles/effect/ParticleGradientEditorView.d.ts +24 -0
- package/editor/view/particles/effect/ParticleGradientEditorView.d.ts.map +1 -0
- package/editor/view/particles/effect/ParticleGradientEditorView.js +472 -0
- package/editor/view/particles/effect/ParticleGraphEditorView.d.ts +5 -0
- package/editor/view/particles/effect/ParticleGraphEditorView.d.ts.map +1 -1
- package/editor/view/particles/effect/ParticleGraphEditorView.js +61 -31
- package/editor/view/particles/effect/ParticleNodeParametersView.d.ts.map +1 -1
- package/editor/view/particles/effect/ParticleNodeParametersView.js +33 -0
- package/editor/view/particles/effect/particle-editor.css +123 -35
- package/package.json +1 -1
- package/src/core/binary/allocator/OffsetAllocator.d.ts +25 -16
- package/src/core/binary/allocator/OffsetAllocator.d.ts.map +1 -1
- package/src/core/binary/allocator/OffsetAllocator.js +10 -1
- package/src/core/collection/array/typed/float32_array_hash.d.ts +21 -0
- package/src/core/collection/array/typed/float32_array_hash.d.ts.map +1 -0
- package/src/core/collection/array/typed/float32_array_hash.js +38 -0
- package/src/core/graph/csr/CSRGraph.d.ts +8 -1
- package/src/core/graph/csr/CSRGraph.d.ts.map +1 -1
- package/src/core/graph/csr/CSRGraph.js +14 -6
- package/src/core/model/node-graph/visual/layout/LayoutProblem.d.ts +24 -0
- package/src/core/model/node-graph/visual/layout/LayoutProblem.d.ts.map +1 -1
- package/src/core/model/node-graph/visual/layout/LayoutProblem.js +27 -0
- package/src/core/model/node-graph/visual/layout/NodeGraphLayoutOptions.d.ts +26 -0
- package/src/core/model/node-graph/visual/layout/NodeGraphLayoutOptions.d.ts.map +1 -1
- package/src/core/model/node-graph/visual/layout/NodeGraphLayoutOptions.js +28 -0
- package/src/core/model/node-graph/visual/layout/RouteGrid.d.ts +92 -3
- package/src/core/model/node-graph/visual/layout/RouteGrid.d.ts.map +1 -1
- package/src/core/model/node-graph/visual/layout/RouteGrid.js +405 -242
- package/src/core/model/node-graph/visual/layout/RouteSearch.d.ts +50 -5
- package/src/core/model/node-graph/visual/layout/RouteSearch.d.ts.map +1 -1
- package/src/core/model/node-graph/visual/layout/RouteSearch.js +160 -24
- package/src/core/model/node-graph/visual/layout/RouteSet.d.ts +7 -0
- package/src/core/model/node-graph/visual/layout/RouteSet.d.ts.map +1 -1
- package/src/core/model/node-graph/visual/layout/RouteSet.js +8 -0
- package/src/core/model/node-graph/visual/layout/layout_assign_coordinates.js +9 -3
- package/src/core/model/node-graph/visual/layout/layout_build_problem.d.ts.map +1 -1
- package/src/core/model/node-graph/visual/layout/layout_build_problem.js +7 -0
- package/src/core/model/node-graph/visual/layout/layout_insert_lanes.d.ts +9 -3
- package/src/core/model/node-graph/visual/layout/layout_insert_lanes.d.ts.map +1 -1
- package/src/core/model/node-graph/visual/layout/layout_insert_lanes.js +17 -3
- package/src/core/model/node-graph/visual/layout/layout_node_graph.d.ts +9 -6
- package/src/core/model/node-graph/visual/layout/layout_node_graph.d.ts.map +1 -1
- package/src/core/model/node-graph/visual/layout/layout_node_graph.js +49 -7
- package/src/core/model/node-graph/visual/layout/layout_order_layers.d.ts +11 -1
- package/src/core/model/node-graph/visual/layout/layout_order_layers.d.ts.map +1 -1
- package/src/core/model/node-graph/visual/layout/layout_order_layers.js +135 -16
- package/src/core/model/node-graph/visual/layout/route_connections.d.ts +29 -0
- package/src/core/model/node-graph/visual/layout/route_connections.d.ts.map +1 -1
- package/src/core/model/node-graph/visual/layout/route_connections.js +716 -309
- package/src/core/model/node-graph/visual/layout/route_grid_build.d.ts +3 -2
- package/src/core/model/node-graph/visual/layout/route_grid_build.d.ts.map +1 -1
- package/src/core/model/node-graph/visual/layout/route_grid_build.js +7 -15
- package/src/core/model/node-graph/visual/layout/route_nudge.d.ts +6 -0
- package/src/core/model/node-graph/visual/layout/route_nudge.d.ts.map +1 -1
- package/src/core/model/node-graph/visual/layout/route_nudge.js +42 -13
- package/src/engine/animation/AnimationUtils.js +246 -246
- package/src/engine/animation/Animations.js +74 -74
- package/src/engine/control/first-person/FirstPersonPlayerControllerSystem.js +2078 -2078
- package/src/engine/ecs/EventType.d.ts +0 -1
- package/src/engine/ecs/EventType.js +1 -26
- package/src/engine/ecs/ik/ik_write_local_rotation.d.ts +1 -1
- package/src/engine/ecs/ik/ik_write_local_rotation.d.ts.map +1 -1
- package/src/engine/ecs/ik/ik_write_local_rotation.js +3 -7
- package/src/engine/ecs/parent/EntityNode.d.ts.map +1 -1
- package/src/engine/ecs/parent/EntityNode.js +4 -9
- package/src/engine/ecs/terrain/ecs/cling/ClingToTerrainSystem.d.ts.map +1 -1
- package/src/engine/ecs/terrain/ecs/cling/ClingToTerrainSystem.js +360 -364
- package/src/engine/ecs/transform/TRANSFORM64_EVENT_CHANGE.d.ts +41 -0
- package/src/engine/ecs/transform/TRANSFORM64_EVENT_CHANGE.d.ts.map +1 -0
- package/src/engine/ecs/transform/TRANSFORM64_EVENT_CHANGE.js +40 -0
- package/src/engine/ecs/transform/TRANSFORM64_MIGRATION_PLAN_2026_09_04.md +8 -0
- package/src/engine/ecs/transform/t64_announce_change.d.ts +10 -7
- package/src/engine/ecs/transform/t64_announce_change.d.ts.map +1 -1
- package/src/engine/ecs/transform/t64_announce_change.js +12 -12
- package/src/engine/ecs/transform/t64_set_rotation_axis_angle.d.ts +25 -0
- package/src/engine/ecs/transform/t64_set_rotation_axis_angle.d.ts.map +1 -0
- package/src/engine/ecs/transform/t64_set_rotation_axis_angle.js +45 -0
- package/src/engine/ecs/transform-attachment/TRANSFORM_ATTACHMENT_EVENT_CHANGE.d.ts +30 -0
- package/src/engine/ecs/transform-attachment/TRANSFORM_ATTACHMENT_EVENT_CHANGE.d.ts.map +1 -0
- package/src/engine/ecs/transform-attachment/TRANSFORM_ATTACHMENT_EVENT_CHANGE.js +29 -0
- package/src/engine/ecs/transform-attachment/TransformAttachmentSystem.d.ts.map +1 -1
- package/src/engine/ecs/transform-attachment/TransformAttachmentSystem.js +13 -21
- package/src/engine/graphics/ecs/sprite/SpriteSystemPE.d.ts.map +1 -1
- package/src/engine/graphics/ecs/sprite/SpriteSystemPE.js +4 -8
- package/src/engine/graphics3/LightSystem.d.ts.map +1 -1
- package/src/engine/graphics3/LightSystem.js +4 -8
- package/src/engine/graphics3/MeshSystem.d.ts.map +1 -1
- package/src/engine/graphics3/MeshSystem.js +9 -19
- package/src/engine/graphics3/ParticleEmitterSystem.d.ts.map +1 -1
- package/src/engine/graphics3/ParticleEmitterSystem.js +4 -8
- package/src/engine/graphics3/ShadedGeometrySystem.d.ts.map +1 -1
- package/src/engine/graphics3/ShadedGeometrySystem.js +4 -10
- package/src/engine/grid/transform2grid/Transform2GridPositionSystem.d.ts +1 -1
- package/src/engine/grid/transform2grid/Transform2GridPositionSystem.d.ts.map +1 -1
- package/src/engine/grid/transform2grid/Transform2GridPositionSystem.js +4 -8
- package/src/engine/intelligence/behavior/ecs/OrbitingBehavior.js +218 -218
- package/src/engine/physics/ecs/PhysicsSystem.d.ts.map +1 -1
- package/src/engine/physics/ecs/PhysicsSystem.js +2 -5
- package/src/engine/sound/ecs/SoundListenerSystem.d.ts.map +1 -1
- package/src/engine/sound/ecs/SoundListenerSystem.js +6 -8
- package/src/engine/sound/simulation/AcousticSimulator.d.ts +11 -8
- package/src/engine/sound/simulation/AcousticSimulator.d.ts.map +1 -1
- package/src/engine/sound/simulation/AcousticSimulator.js +45 -36
- package/src/engine/sound/simulation/README.md +2 -2
- package/src/engine/sound/simulation/core/OcclusionSolver.d.ts.map +1 -1
- package/src/engine/sound/simulation/core/VolumeField.d.ts +9 -9
- package/src/engine/sound/simulation/core/VolumeField.d.ts.map +1 -1
- package/src/engine/sound/simulation/core/VolumeField.js +29 -13
- package/src/engine/sound/simulation/core/acoustic_occlusion_solve.d.ts +31 -0
- package/src/engine/sound/simulation/core/acoustic_occlusion_solve.d.ts.map +1 -0
- package/src/engine/sound/simulation/core/acoustic_occlusion_solve.js +134 -0
- package/src/engine/sound/simulation/ecs/AcousticSimulationSystem.d.ts +0 -4
- package/src/engine/sound/simulation/ecs/AcousticSimulationSystem.d.ts.map +1 -1
- package/src/engine/sound/simulation/ecs/AcousticSimulationSystem.js +5 -11
- package/src/shade/playground/particle_editor/README.md +43 -2
- package/src/shade/playground/particle_system/particle_prototype.d.ts.map +1 -1
- package/src/shade/playground/particle_system/particle_prototype.js +4 -5
- package/src/shade/playground/particle_system/particle_scene.js +4 -4
- package/src/shade/playground/volumetrics_froxel/main.d.ts.map +1 -1
- package/src/shade/playground/volumetrics_froxel/main.js +6 -1
- package/src/shade/renderer/Renderer.d.ts.map +1 -1
- package/src/shade/renderer/Renderer.js +13 -1
- package/src/shade/renderer/particles/DESIGN.md +104 -19
- package/src/shade/renderer/particles/GPUParticleSystem.d.ts +64 -50
- package/src/shade/renderer/particles/GPUParticleSystem.d.ts.map +1 -1
- package/src/shade/renderer/particles/GPUParticleSystem.js +176 -78
- package/src/shade/renderer/particles/ParticleConstants.d.ts +59 -23
- package/src/shade/renderer/particles/ParticleConstants.d.ts.map +1 -1
- package/src/shade/renderer/particles/ParticleConstants.js +66 -23
- package/src/shade/renderer/particles/ParticleRenderMode.d.ts +19 -0
- package/src/shade/renderer/particles/ParticleRenderMode.d.ts.map +1 -0
- package/src/shade/renderer/particles/ParticleRenderMode.js +33 -0
- package/src/shade/renderer/particles/data/PARTICLE_EMITTER_STRUCT.d.ts.map +1 -1
- package/src/shade/renderer/particles/data/PARTICLE_EMITTER_STRUCT.js +167 -166
- package/src/shade/renderer/particles/data/particle_emitter_record.d.ts +37 -0
- package/src/shade/renderer/particles/data/particle_emitter_record.d.ts.map +1 -0
- package/src/shade/renderer/particles/data/particle_emitter_record.js +109 -0
- package/src/shade/renderer/particles/graph/ParticleGroupBuilder.d.ts +3 -3
- package/src/shade/renderer/particles/graph/ParticleGroupBuilder.js +303 -303
- package/src/shade/renderer/particles/graph/ParticleNodeDescription.d.ts +18 -0
- package/src/shade/renderer/particles/graph/ParticleNodeDescription.d.ts.map +1 -1
- package/src/shade/renderer/particles/graph/ParticleNodeDescription.js +152 -133
- package/src/shade/renderer/particles/graph/ParticleNodeRegistry.d.ts +0 -11
- package/src/shade/renderer/particles/graph/ParticleNodeRegistry.d.ts.map +1 -1
- package/src/shade/renderer/particles/graph/ParticleNodeRegistry.js +720 -621
- package/src/shade/renderer/particles/graph/compile_particle_graph.d.ts.map +1 -1
- package/src/shade/renderer/particles/graph/compile_particle_graph.js +8 -3
- package/src/shade/renderer/particles/graph/flatten_particle_graph.d.ts.map +1 -1
- package/src/shade/renderer/particles/graph/flatten_particle_graph.js +244 -213
- package/src/shade/renderer/particles/graph/groups/particle_builtin_groups.d.ts.map +1 -1
- package/src/shade/renderer/particles/graph/groups/particle_builtin_groups.js +6 -0
- package/src/shade/renderer/particles/graph/groups/particle_groups_geometry.d.ts.map +1 -1
- package/src/shade/renderer/particles/graph/groups/particle_groups_geometry.js +294 -319
- package/src/shade/renderer/particles/graph/groups/particle_groups_noise.d.ts.map +1 -1
- package/src/shade/renderer/particles/graph/groups/particle_groups_noise.js +524 -517
- package/src/shade/renderer/particles/graph/groups/particle_groups_psrdnoise.d.ts +22 -0
- package/src/shade/renderer/particles/graph/groups/particle_groups_psrdnoise.d.ts.map +1 -0
- package/src/shade/renderer/particles/graph/groups/particle_groups_psrdnoise.js +517 -0
- package/src/shade/renderer/particles/graph/groups/simplex_reference.d.ts.map +1 -1
- package/src/shade/renderer/particles/graph/groups/simplex_reference.js +185 -159
- package/src/shade/renderer/particles/graph/make_particle_group.d.ts.map +1 -1
- package/src/shade/renderer/particles/graph/make_particle_group.js +2 -20
- package/src/shade/renderer/particles/graph/particle_compare_ops.d.ts +17 -0
- package/src/shade/renderer/particles/graph/particle_compare_ops.d.ts.map +1 -0
- package/src/shade/renderer/particles/graph/particle_compare_ops.js +22 -0
- package/src/shade/renderer/particles/graph/particle_graph_diagnostic.d.ts +28 -8
- package/src/shade/renderer/particles/graph/particle_graph_diagnostic.d.ts.map +1 -1
- package/src/shade/renderer/particles/graph/particle_graph_diagnostic.js +49 -25
- package/src/shade/renderer/particles/graph/particle_node_parameters.d.ts +40 -0
- package/src/shade/renderer/particles/graph/particle_node_parameters.d.ts.map +1 -1
- package/src/shade/renderer/particles/graph/particle_node_parameters.js +312 -234
- package/src/shade/renderer/particles/graph/particle_node_presentation.d.ts.map +1 -1
- package/src/shade/renderer/particles/graph/particle_node_presentation.js +59 -3
- package/src/shade/renderer/particles/graph/particle_ramp.d.ts +230 -0
- package/src/shade/renderer/particles/graph/particle_ramp.d.ts.map +1 -0
- package/src/shade/renderer/particles/graph/particle_ramp.js +403 -0
- package/src/shade/renderer/particles/graph/validate_particle_graph.d.ts +7 -1
- package/src/shade/renderer/particles/graph/validate_particle_graph.d.ts.map +1 -1
- package/src/shade/renderer/particles/graph/validate_particle_graph.js +66 -10
- package/src/shade/renderer/particles/graph_particles.d.ts +23 -69
- package/src/shade/renderer/particles/graph_particles.d.ts.map +1 -1
- package/src/shade/renderer/particles/graph_particles.js +105 -262
- package/src/shade/renderer/particles/graph_particles_avboit.d.ts.map +1 -1
- package/src/shade/renderer/particles/graph_particles_avboit.js +3 -2
- package/src/shade/renderer/particles/graph_particles_billboard.d.ts +37 -0
- package/src/shade/renderer/particles/graph_particles_billboard.d.ts.map +1 -0
- package/src/shade/renderer/particles/graph_particles_billboard.js +93 -0
- package/src/shade/renderer/particles/isa/InstructionStream.d.ts +51 -22
- package/src/shade/renderer/particles/isa/InstructionStream.d.ts.map +1 -1
- package/src/shade/renderer/particles/isa/InstructionStream.js +98 -38
- package/src/shade/renderer/particles/isa/ParticleProgram.d.ts +49 -8
- package/src/shade/renderer/particles/isa/ParticleProgram.d.ts.map +1 -1
- package/src/shade/renderer/particles/isa/ParticleProgram.js +95 -150
- package/src/shade/renderer/particles/isa/ParticleVMISA.d.ts +306 -64
- package/src/shade/renderer/particles/isa/ParticleVMISA.d.ts.map +1 -1
- package/src/shade/renderer/particles/isa/ParticleVMISA.js +505 -136
- package/src/shade/renderer/particles/isa/particle_assembly.d.ts +36 -12
- package/src/shade/renderer/particles/isa/particle_assembly.d.ts.map +1 -1
- package/src/shade/renderer/particles/isa/particle_assembly.js +354 -139
- package/src/shade/renderer/particles/isa/validate_particle_program.d.ts +9 -0
- package/src/shade/renderer/particles/isa/validate_particle_program.d.ts.map +1 -0
- package/src/shade/renderer/particles/isa/validate_particle_program.js +128 -0
- package/src/shade/renderer/particles/layout/ParticleLayout.d.ts +23 -0
- package/src/shade/renderer/particles/layout/ParticleLayout.d.ts.map +1 -1
- package/src/shade/renderer/particles/layout/ParticleLayout.js +68 -0
- package/src/shade/renderer/particles/optimizer/dag/optimize_particle_program_vector.d.ts +77 -0
- package/src/shade/renderer/particles/optimizer/dag/optimize_particle_program_vector.d.ts.map +1 -0
- package/src/shade/renderer/particles/optimizer/dag/optimize_particle_program_vector.js +219 -0
- package/src/shade/renderer/particles/optimizer/dag/particle_vector_extract.d.ts +83 -0
- package/src/shade/renderer/particles/optimizer/dag/particle_vector_extract.d.ts.map +1 -0
- package/src/shade/renderer/particles/optimizer/dag/particle_vector_extract.js +283 -0
- package/src/shade/renderer/particles/optimizer/dag/particle_vector_graph.d.ts +133 -0
- package/src/shade/renderer/particles/optimizer/dag/particle_vector_graph.d.ts.map +1 -0
- package/src/shade/renderer/particles/optimizer/dag/particle_vector_graph.js +334 -0
- package/src/shade/renderer/particles/optimizer/dag/particle_vector_groups.d.ts +117 -0
- package/src/shade/renderer/particles/optimizer/dag/particle_vector_groups.d.ts.map +1 -0
- package/src/shade/renderer/particles/optimizer/dag/particle_vector_groups.js +70 -0
- package/src/shade/renderer/particles/optimizer/dag/particle_vector_lift.d.ts +97 -0
- package/src/shade/renderer/particles/optimizer/dag/particle_vector_lift.d.ts.map +1 -0
- package/src/shade/renderer/particles/optimizer/dag/particle_vector_lift.js +462 -0
- package/src/shade/renderer/particles/optimizer/dag/particle_vector_lower.d.ts +116 -0
- package/src/shade/renderer/particles/optimizer/dag/particle_vector_lower.d.ts.map +1 -0
- package/src/shade/renderer/particles/optimizer/dag/particle_vector_lower.js +687 -0
- package/src/shade/renderer/particles/optimizer/dag/particle_vector_pack.d.ts +57 -0
- package/src/shade/renderer/particles/optimizer/dag/particle_vector_pack.d.ts.map +1 -0
- package/src/shade/renderer/particles/optimizer/dag/particle_vector_pack.js +860 -0
- package/src/shade/renderer/particles/optimizer/dag/particle_vector_rules.d.ts +115 -0
- package/src/shade/renderer/particles/optimizer/dag/particle_vector_rules.d.ts.map +1 -0
- package/src/shade/renderer/particles/optimizer/dag/particle_vector_rules.js +264 -0
- package/src/shade/renderer/particles/optimizer/optimize_particle_program.d.ts +81 -42
- package/src/shade/renderer/particles/optimizer/optimize_particle_program.d.ts.map +1 -1
- package/src/shade/renderer/particles/optimizer/optimize_particle_program.js +477 -478
- package/src/shade/renderer/particles/optimizer/particle_integer_bounds.d.ts +100 -0
- package/src/shade/renderer/particles/optimizer/particle_integer_bounds.d.ts.map +1 -0
- package/src/shade/renderer/particles/optimizer/particle_integer_bounds.js +236 -0
- package/src/shade/renderer/particles/optimizer/particle_program_analysis.d.ts +139 -59
- package/src/shade/renderer/particles/optimizer/particle_program_analysis.d.ts.map +1 -1
- package/src/shade/renderer/particles/optimizer/particle_program_analysis.js +764 -647
- package/src/shade/renderer/particles/optimizer/particle_program_equivalence.d.ts +40 -7
- package/src/shade/renderer/particles/optimizer/particle_program_equivalence.d.ts.map +1 -1
- package/src/shade/renderer/particles/optimizer/particle_program_equivalence.js +376 -213
- package/src/shade/renderer/particles/optimizer/particle_program_fuzz.d.ts +30 -3
- package/src/shade/renderer/particles/optimizer/particle_program_fuzz.d.ts.map +1 -1
- package/src/shade/renderer/particles/optimizer/particle_program_fuzz.js +337 -223
- package/src/shade/renderer/particles/optimizer/particle_vm_semantics.d.ts +24 -38
- package/src/shade/renderer/particles/optimizer/particle_vm_semantics.d.ts.map +1 -1
- package/src/shade/renderer/particles/optimizer/particle_vm_semantics.js +166 -206
- package/src/shade/renderer/particles/optimizer/pass_allocate_registers.d.ts +99 -0
- package/src/shade/renderer/particles/optimizer/pass_allocate_registers.d.ts.map +1 -0
- package/src/shade/renderer/particles/optimizer/pass_allocate_registers.js +313 -0
- package/src/shade/renderer/particles/optimizer/pass_dedup_constants.d.ts +3 -2
- package/src/shade/renderer/particles/optimizer/pass_dedup_constants.d.ts.map +1 -1
- package/src/shade/renderer/particles/optimizer/pass_dedup_constants.js +198 -197
- package/src/shade/renderer/particles/optimizer/pass_eliminate_dead_code.d.ts.map +1 -1
- package/src/shade/renderer/particles/optimizer/pass_fold_constants.d.ts +19 -0
- package/src/shade/renderer/particles/optimizer/pass_fold_constants.d.ts.map +1 -1
- package/src/shade/renderer/particles/optimizer/pass_fold_constants.js +678 -561
- package/src/shade/renderer/particles/optimizer/pass_inline_constants.d.ts +22 -0
- package/src/shade/renderer/particles/optimizer/pass_inline_constants.d.ts.map +1 -0
- package/src/shade/renderer/particles/optimizer/pass_inline_constants.js +221 -0
- package/src/shade/renderer/particles/optimizer/pass_narrow_widths.d.ts.map +1 -1
- package/src/shade/renderer/particles/optimizer/pass_narrow_widths.js +63 -72
- package/src/shade/renderer/particles/optimizer/pass_pack_registers.d.ts.map +1 -1
- package/src/shade/renderer/particles/optimizer/pass_pack_registers.js +87 -86
- package/src/shade/renderer/particles/optimizer/pass_peephole.d.ts.map +1 -1
- package/src/shade/renderer/particles/optimizer/pass_peephole.js +392 -271
- package/src/shade/renderer/particles/optimizer/pass_propagate_copies.d.ts.map +1 -1
- package/src/shade/renderer/particles/optimizer/pass_propagate_copies.js +361 -268
- package/src/shade/renderer/particles/optimizer/pass_schedule.d.ts +4 -0
- package/src/shade/renderer/particles/optimizer/pass_schedule.d.ts.map +1 -0
- package/src/shade/renderer/particles/optimizer/pass_schedule.js +244 -0
- package/src/shade/renderer/particles/optimizer/pass_share_subexpressions.d.ts.map +1 -1
- package/src/shade/renderer/particles/optimizer/pass_share_subexpressions.js +154 -151
- package/src/shade/renderer/particles/particle_test_fixtures.d.ts +20 -0
- package/src/shade/renderer/particles/particle_test_fixtures.d.ts.map +1 -1
- package/src/shade/renderer/particles/particle_test_fixtures.js +229 -203
- package/src/shade/renderer/particles/runtime/EmitterRegistry.d.ts +99 -25
- package/src/shade/renderer/particles/runtime/EmitterRegistry.d.ts.map +1 -1
- package/src/shade/renderer/particles/runtime/EmitterRegistry.js +438 -286
- package/src/shade/renderer/particles/runtime/GPUParticleEmitterContext.d.ts +109 -0
- package/src/shade/renderer/particles/runtime/GPUParticleEmitterContext.d.ts.map +1 -0
- package/src/shade/renderer/particles/runtime/GPUParticleEmitterContext.js +127 -0
- package/src/shade/renderer/particles/runtime/ParticleEmitter.d.ts +87 -102
- package/src/shade/renderer/particles/runtime/ParticleEmitter.d.ts.map +1 -1
- package/src/shade/renderer/particles/runtime/ParticleEmitter.js +184 -163
- package/src/shade/renderer/particles/runtime/ProgramHeap.d.ts +130 -0
- package/src/shade/renderer/particles/runtime/ProgramHeap.d.ts.map +1 -0
- package/src/shade/renderer/particles/runtime/ProgramHeap.js +595 -0
- package/src/shade/renderer/particles/runtime/ProgramPlacement.d.ts +91 -0
- package/src/shade/renderer/particles/runtime/ProgramPlacement.d.ts.map +1 -0
- package/src/shade/renderer/particles/runtime/ProgramPlacement.js +106 -0
- package/src/shade/renderer/particles/runtime/create_particle_effect.d.ts +5 -2
- package/src/shade/renderer/particles/runtime/create_particle_effect.d.ts.map +1 -1
- package/src/shade/renderer/particles/runtime/create_particle_effect.js +22 -19
- package/src/shade/renderer/particles/shaders/chunk_particle_emit_step.d.ts +28 -0
- package/src/shade/renderer/particles/shaders/chunk_particle_emit_step.d.ts.map +1 -0
- package/src/shade/renderer/particles/shaders/chunk_particle_emit_step.js +136 -0
- package/src/shade/renderer/particles/shaders/chunk_particle_simulate_step.d.ts +35 -0
- package/src/shade/renderer/particles/shaders/chunk_particle_simulate_step.d.ts.map +1 -0
- package/src/shade/renderer/particles/shaders/chunk_particle_simulate_step.js +133 -0
- package/src/shade/renderer/particles/shaders/shader_particle_emit.d.ts +18 -9
- package/src/shade/renderer/particles/shaders/shader_particle_emit.d.ts.map +1 -1
- package/src/shade/renderer/particles/shaders/shader_particle_emit.js +20 -80
- package/src/shade/renderer/particles/shaders/shader_particle_emit_wide.d.ts +33 -0
- package/src/shade/renderer/particles/shaders/shader_particle_emit_wide.d.ts.map +1 -0
- package/src/shade/renderer/particles/shaders/shader_particle_emit_wide.js +114 -0
- package/src/shade/renderer/particles/shaders/shader_particle_simulate.d.ts +8 -0
- package/src/shade/renderer/particles/shaders/shader_particle_simulate.d.ts.map +1 -1
- package/src/shade/renderer/particles/shaders/shader_particle_simulate.js +33 -101
- package/src/shade/renderer/particles/shaders/shader_particle_simulate_wide.d.ts +45 -0
- package/src/shade/renderer/particles/shaders/shader_particle_simulate_wide.d.ts.map +1 -0
- package/src/shade/renderer/particles/shaders/shader_particle_simulate_wide.js +123 -0
- package/src/shade/renderer/particles/sort/graph_particle_sort.d.ts +51 -0
- package/src/shade/renderer/particles/sort/graph_particle_sort.d.ts.map +1 -0
- package/src/shade/renderer/particles/sort/graph_particle_sort.js +120 -0
- package/src/shade/renderer/particles/vm/PARTICLE_VM_CONTEXT_STRUCT.d.ts +6 -0
- package/src/shade/renderer/particles/vm/PARTICLE_VM_CONTEXT_STRUCT.d.ts.map +1 -0
- package/src/shade/renderer/particles/vm/PARTICLE_VM_CONTEXT_STRUCT.js +16 -0
- package/src/shade/renderer/particles/vm/ParticleVMReference.d.ts +4 -1
- package/src/shade/renderer/particles/vm/ParticleVMReference.d.ts.map +1 -1
- package/src/shade/renderer/particles/vm/ParticleVMReference.js +261 -140
- package/src/shade/renderer/particles/vm/chunk_particle_vm.d.ts.map +1 -1
- package/src/shade/renderer/particles/vm/chunk_particle_vm.js +217 -255
- package/src/shade/renderer/particles/vm/chunk_particle_vm_registers_fast.d.ts +43 -0
- package/src/shade/renderer/particles/vm/chunk_particle_vm_registers_fast.d.ts.map +1 -0
- package/src/shade/renderer/particles/vm/chunk_particle_vm_registers_fast.js +55 -0
- package/src/shade/renderer/particles/vm/chunk_particle_vm_registers_wide.d.ts +62 -0
- package/src/shade/renderer/particles/vm/chunk_particle_vm_registers_wide.d.ts.map +1 -0
- package/src/shade/renderer/particles/vm/chunk_particle_vm_registers_wide.js +86 -0
- package/src/shade/renderer/shader/chunk/math/chunk_mod_v3f.d.ts +22 -0
- package/src/shade/renderer/shader/chunk/math/chunk_mod_v3f.d.ts.map +1 -0
- package/src/shade/renderer/shader/chunk/math/chunk_mod_v3f.js +32 -0
- package/src/shade/renderer/shader/chunk/math/chunk_mod_v4f.d.ts +9 -0
- package/src/shade/renderer/shader/chunk/math/chunk_mod_v4f.d.ts.map +1 -0
- package/src/shade/renderer/shader/chunk/math/chunk_mod_v4f.js +19 -0
- package/src/shade/renderer/shader/chunk/noise/psrdnoise/README.md +65 -0
- package/src/shade/renderer/shader/chunk/noise/psrdnoise/chunk_psrdnoise2.d.ts +24 -0
- package/src/shade/renderer/shader/chunk/noise/psrdnoise/chunk_psrdnoise2.d.ts.map +1 -0
- package/src/shade/renderer/shader/chunk/noise/psrdnoise/chunk_psrdnoise2.js +83 -0
- package/src/shade/renderer/shader/chunk/noise/psrdnoise/chunk_psrdnoise2_hash.d.ts +25 -0
- package/src/shade/renderer/shader/chunk/noise/psrdnoise/chunk_psrdnoise2_hash.d.ts.map +1 -0
- package/src/shade/renderer/shader/chunk/noise/psrdnoise/chunk_psrdnoise2_hash.js +42 -0
- package/src/shade/renderer/shader/chunk/noise/psrdnoise/chunk_psrdnoise2_kernel.d.ts +31 -0
- package/src/shade/renderer/shader/chunk/noise/psrdnoise/chunk_psrdnoise2_kernel.d.ts.map +1 -0
- package/src/shade/renderer/shader/chunk/noise/psrdnoise/chunk_psrdnoise2_kernel.js +80 -0
- package/src/shade/renderer/shader/chunk/noise/psrdnoise/chunk_psrdnoise3.d.ts +26 -0
- package/src/shade/renderer/shader/chunk/noise/psrdnoise/chunk_psrdnoise3.d.ts.map +1 -0
- package/src/shade/renderer/shader/chunk/noise/psrdnoise/chunk_psrdnoise3.js +109 -0
- package/src/shade/renderer/shader/chunk/noise/psrdnoise/chunk_psrdnoise3_kernel.d.ts +38 -0
- package/src/shade/renderer/shader/chunk/noise/psrdnoise/chunk_psrdnoise3_kernel.d.ts.map +1 -0
- package/src/shade/renderer/shader/chunk/noise/psrdnoise/chunk_psrdnoise3_kernel.js +129 -0
- package/src/shade/renderer/shader/chunk/noise/psrdnoise/chunk_psrdnoise3_permute.d.ts +21 -0
- package/src/shade/renderer/shader/chunk/noise/psrdnoise/chunk_psrdnoise3_permute.d.ts.map +1 -0
- package/src/shade/renderer/shader/chunk/noise/psrdnoise/chunk_psrdnoise3_permute.js +35 -0
- package/src/shade/renderer/shader/chunk/noise/psrdnoise/chunk_psrdnoise3_skew.d.ts +19 -0
- package/src/shade/renderer/shader/chunk/noise/psrdnoise/chunk_psrdnoise3_skew.d.ts.map +1 -0
- package/src/shade/renderer/shader/chunk/noise/psrdnoise/chunk_psrdnoise3_skew.js +28 -0
- package/src/shade/renderer/shader/chunk/noise/psrdnoise/chunk_psrdnoise3_unskew.d.ts +13 -0
- package/src/shade/renderer/shader/chunk/noise/psrdnoise/chunk_psrdnoise3_unskew.d.ts.map +1 -0
- package/src/shade/renderer/shader/chunk/noise/psrdnoise/chunk_psrdnoise3_unskew.js +22 -0
- package/src/shade/renderer/shader/chunk/noise/psrdnoise/chunk_srdnoise2.d.ts +22 -0
- package/src/shade/renderer/shader/chunk/noise/psrdnoise/chunk_srdnoise2.d.ts.map +1 -0
- package/src/shade/renderer/shader/chunk/noise/psrdnoise/chunk_srdnoise2.js +59 -0
- package/src/shade/renderer/shader/chunk/noise/psrdnoise/chunk_srdnoise3.d.ts +23 -0
- package/src/shade/renderer/shader/chunk/noise/psrdnoise/chunk_srdnoise3.d.ts.map +1 -0
- package/src/shade/renderer/shader/chunk/noise/psrdnoise/chunk_srdnoise3.js +74 -0
- package/src/shade/renderer/volumetrics/ParticipatingMediaVolume.d.ts +7 -0
- package/src/shade/renderer/volumetrics/ParticipatingMediaVolume.d.ts.map +1 -1
- package/src/shade/renderer/volumetrics/ParticipatingMediaVolume.js +7 -0
- package/src/shade/wgsl/emulator/ComputeShaderEmulator.d.ts +34 -1
- package/src/shade/wgsl/emulator/ComputeShaderEmulator.d.ts.map +1 -1
- package/src/shade/wgsl/emulator/ComputeShaderEmulator.js +41 -1
- package/src/shade/wgsl/emulator/WGSLJavaScriptCompiler.d.ts +3 -2
- package/src/shade/wgsl/emulator/WGSLJavaScriptCompiler.d.ts.map +1 -1
- package/src/shade/wgsl/emulator/WGSLJavaScriptCompiler.js +49 -10
- package/src/view/minimap/dom/MinimapCameraView.d.ts.map +1 -1
- package/src/view/minimap/dom/MinimapCameraView.js +4 -9
- package/src/core/model/node-graph/visual/layout/BoxLayoutSpec.d.ts +0 -15
- package/src/core/model/node-graph/visual/layout/BoxLayoutSpec.d.ts.map +0 -1
- package/src/core/model/node-graph/visual/layout/ConnectedBoxLayouter.d.ts +0 -45
- package/src/core/model/node-graph/visual/layout/ConnectedBoxLayouter.d.ts.map +0 -1
- package/src/core/model/node-graph/visual/layout/ConnectionEndpointLayoutSpec.d.ts +0 -24
- package/src/core/model/node-graph/visual/layout/ConnectionEndpointLayoutSpec.d.ts.map +0 -1
- package/src/core/model/node-graph/visual/layout/ConnectionLayoutSpec.d.ts +0 -19
- package/src/core/model/node-graph/visual/layout/ConnectionLayoutSpec.d.ts.map +0 -1
- package/src/engine/ecs/transform/__probe.d.ts +0 -4
- package/src/engine/ecs/transform/__probe.d.ts.map +0 -1
- package/src/engine/ecs/util/hideEntityGracefully.d.ts +0 -9
- package/src/engine/ecs/util/hideEntityGracefully.d.ts.map +0 -1
- package/src/engine/sound/simulation/core/OcclusionSolver.js +0 -112
- package/src/shade/renderer/buffer/table/gpu_database_emulator_image.d.ts +0 -27
- package/src/shade/renderer/buffer/table/gpu_database_emulator_image.d.ts.map +0 -1
- package/src/shade/renderer/particles/cull/chunk_particle_cull.d.ts +0 -14
- package/src/shade/renderer/particles/cull/chunk_particle_cull.d.ts.map +0 -1
- package/src/shade/renderer/particles/data/PARTICLE_EMITTER_LAYOUT.d.ts +0 -156
- package/src/shade/renderer/particles/data/PARTICLE_EMITTER_LAYOUT.d.ts.map +0 -1
- package/src/shade/renderer/particles/runtime/Emitter.d.ts +0 -219
- package/src/shade/renderer/particles/runtime/Emitter.d.ts.map +0 -1
- package/src/shade/renderer/particles/runtime/ParticleSpawnScheduler.d.ts +0 -77
- package/src/shade/renderer/particles/runtime/ParticleSpawnScheduler.d.ts.map +0 -1
- package/src/shade/renderer/particles/runtime/ProgramArena.d.ts +0 -89
- package/src/shade/renderer/particles/runtime/ProgramArena.d.ts.map +0 -1
- package/src/shade/renderer/particles/runtime/ProgramArena.js +0 -155
- package/src/shade/renderer/particles/runtime/emitter_database_image.d.ts +0 -15
- package/src/shade/renderer/particles/runtime/emitter_database_image.d.ts.map +0 -1
- package/src/shade/renderer/particles/runtime/spawn_request_encoding.d.ts +0 -34
- package/src/shade/renderer/particles/runtime/spawn_request_encoding.d.ts.map +0 -1
- package/src/shade/renderer/particles/shaders/chunk_particle_context.d.ts +0 -32
- package/src/shade/renderer/particles/shaders/chunk_particle_context.d.ts.map +0 -1
|
@@ -5,7 +5,7 @@ import Name from "../ecs/name/Name.js";
|
|
|
5
5
|
import { System } from "../ecs/System.js";
|
|
6
6
|
import { Transform64 } from "../ecs/transform/Transform64.js";
|
|
7
7
|
import { ShadedGeometry } from "../graphics/ecs/mesh-v2/ShadedGeometry.js";
|
|
8
|
-
import {
|
|
8
|
+
import { TRANSFORM64_EVENT_CHANGE } from "../ecs/transform/TRANSFORM64_EVENT_CHANGE.js";
|
|
9
9
|
|
|
10
10
|
/**
|
|
11
11
|
* Puts one primitive into Shade's scene, and keeps it where the entity says.
|
|
@@ -103,17 +103,11 @@ export class ShadedGeometrySystem extends System {
|
|
|
103
103
|
// One dataset listener replaces the three sub-object signals a Transform used to carry.
|
|
104
104
|
// Coarser - it wakes on any change to the transform rather than on a named channel - and
|
|
105
105
|
// that is the trade: the placement reads the whole transform anyway.
|
|
106
|
-
const on_transform_changed = event => {
|
|
107
|
-
if (event.klass === Transform64) {
|
|
108
|
-
place();
|
|
109
|
-
}
|
|
110
|
-
};
|
|
111
|
-
|
|
112
106
|
this.entityManager.dataset.addEntityEventListener(
|
|
113
|
-
entity,
|
|
107
|
+
entity, TRANSFORM64_EVENT_CHANGE, place
|
|
114
108
|
);
|
|
115
109
|
|
|
116
|
-
this.#entries.set(entity, { node, bindings, on_transform_changed });
|
|
110
|
+
this.#entries.set(entity, { node, bindings, on_transform_changed: place });
|
|
117
111
|
|
|
118
112
|
// the component carries its own row, so anything holding the component can ask where the
|
|
119
113
|
// primitive ended up without going through this system
|
|
@@ -169,7 +163,7 @@ export class ShadedGeometrySystem extends System {
|
|
|
169
163
|
|
|
170
164
|
if (entry.on_transform_changed !== undefined) {
|
|
171
165
|
this.entityManager.dataset.removeEntityEventListener(
|
|
172
|
-
entity,
|
|
166
|
+
entity, TRANSFORM64_EVENT_CHANGE, entry.on_transform_changed
|
|
173
167
|
);
|
|
174
168
|
}
|
|
175
169
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Transform2GridPositionSystem.d.ts","sourceRoot":"","sources":["../../../../../src/engine/grid/transform2grid/Transform2GridPositionSystem.js"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"Transform2GridPositionSystem.d.ts","sourceRoot":"","sources":["../../../../../src/engine/grid/transform2grid/Transform2GridPositionSystem.js"],"names":[],"mappings":"AA+FA;;IACI,2FAAmE;IACnE,oEAEE;IAEF;;;OAGG;IACH,MAFU,YAAY,EAAE,CAEd;IAEV;;;;;;OAMG;IACH,gBALW,sBAAsB,aACtB,WAAW,MACX,YAAY,UACZ,MAAM,QAehB;IAED;;;;;;OAMG;IACH,kBALW,sBAAsB,aACtB,WAAW,MACX,YAAY,UACZ,MAAM,QAYhB;CACJ;uBAnJsB,qBAAqB;4BAGhB,oCAAoC;yBADvC,6BAA6B;uCADf,6BAA6B;4CAMxB,oDAAoD;AAMhG;IACI;;;OAGG;IACH,WAFU,WAAW,CAEJ;IAEjB;;;OAGG;IACH,UAFU,YAAY,CAEN;IAEhB;;;OAGG;IACH,WAFU,sBAAsB,CAEf;IAEjB;;;OAGG;IACH,4BAAW;IAEX,cAgCC;IAGD,aAOC;IALG,iCAA8C;IAOlD,eAUC;CACJ"}
|
|
@@ -7,7 +7,7 @@ import { Transform2GridPositionMode } from "./Transform2GridPositionMode.js";
|
|
|
7
7
|
import { obtainTerrain } from "../../ecs/terrain/util/obtainTerrain.js";
|
|
8
8
|
import { ResourceAccessSpecification } from "../../../core/model/ResourceAccessSpecification.js";
|
|
9
9
|
import { ResourceAccessKind } from "../../../core/model/ResourceAccessKind.js";
|
|
10
|
-
import {
|
|
10
|
+
import { TRANSFORM64_EVENT_CHANGE } from "../../ecs/transform/TRANSFORM64_EVENT_CHANGE.js";
|
|
11
11
|
|
|
12
12
|
const v2 = new Vector2();
|
|
13
13
|
|
|
@@ -73,14 +73,10 @@ class Synchronizer {
|
|
|
73
73
|
|
|
74
74
|
link() {
|
|
75
75
|
// the transform announces through the dataset now, so the synchroniser listens there
|
|
76
|
-
this.on_transform_changed =
|
|
77
|
-
if (event.klass === Transform64) {
|
|
78
|
-
this.write();
|
|
79
|
-
}
|
|
80
|
-
};
|
|
76
|
+
this.on_transform_changed = () => this.write();
|
|
81
77
|
|
|
82
78
|
this.ecd.addEntityEventListener(
|
|
83
|
-
this.entity,
|
|
79
|
+
this.entity, TRANSFORM64_EVENT_CHANGE, this.on_transform_changed
|
|
84
80
|
);
|
|
85
81
|
}
|
|
86
82
|
|
|
@@ -90,7 +86,7 @@ class Synchronizer {
|
|
|
90
86
|
}
|
|
91
87
|
|
|
92
88
|
this.ecd.removeEntityEventListener(
|
|
93
|
-
this.entity,
|
|
89
|
+
this.entity, TRANSFORM64_EVENT_CHANGE, this.on_transform_changed
|
|
94
90
|
);
|
|
95
91
|
|
|
96
92
|
this.on_transform_changed = null;
|
|
@@ -1,218 +1,218 @@
|
|
|
1
|
-
import { assert } from "../../../../core/assert.js";
|
|
2
|
-
import Quaternion from "../../../../core/geom/Quaternion.js";
|
|
3
|
-
import Vector3 from "../../../../core/geom/Vector3.js";
|
|
4
|
-
import { lerp } from "../../../../core/math/lerp.js";
|
|
5
|
-
import { Transform64 } from "../../../ecs/transform/Transform64.js";
|
|
6
|
-
import { BehaviorStatus } from "../BehaviorStatus.js";
|
|
7
|
-
import { EntityBehavior } from "./EntityBehavior.js";
|
|
8
|
-
import { t64_announce_change } from "../../../ecs/transform/t64_announce_change.js";
|
|
9
|
-
|
|
10
|
-
/**
|
|
11
|
-
* The orientation being composed for whichever entity is orbiting right now.
|
|
12
|
-
*
|
|
13
|
-
* @type {Quaternion}
|
|
14
|
-
*/
|
|
15
|
-
const scratch_rotation = new Quaternion();
|
|
16
|
-
|
|
17
|
-
export class OrbitingBehavior extends EntityBehavior {
|
|
18
|
-
|
|
19
|
-
/**
|
|
20
|
-
* Radians per second.
|
|
21
|
-
* Can be negative for counter-clockwise rotation.
|
|
22
|
-
* @type {number}
|
|
23
|
-
*/
|
|
24
|
-
rate = Math.PI;
|
|
25
|
-
|
|
26
|
-
/**
|
|
27
|
-
*
|
|
28
|
-
* @type {number}
|
|
29
|
-
*/
|
|
30
|
-
radius = 1;
|
|
31
|
-
|
|
32
|
-
/**
|
|
33
|
-
* Initial offset in radians
|
|
34
|
-
* @type {number}
|
|
35
|
-
*/
|
|
36
|
-
phase = 0;
|
|
37
|
-
|
|
38
|
-
/**
|
|
39
|
-
*
|
|
40
|
-
* @type {number}
|
|
41
|
-
*/
|
|
42
|
-
angle = 0;
|
|
43
|
-
|
|
44
|
-
/**
|
|
45
|
-
* Offset from the origin
|
|
46
|
-
* @type {Vector3}
|
|
47
|
-
*/
|
|
48
|
-
offset = new Vector3();
|
|
49
|
-
|
|
50
|
-
/**
|
|
51
|
-
*
|
|
52
|
-
* @type {number}
|
|
53
|
-
*/
|
|
54
|
-
parent = -1;
|
|
55
|
-
|
|
56
|
-
/**
|
|
57
|
-
*
|
|
58
|
-
* @type {number}
|
|
59
|
-
*/
|
|
60
|
-
easing = 1;
|
|
61
|
-
|
|
62
|
-
orientation = new Quaternion();
|
|
63
|
-
|
|
64
|
-
/**
|
|
65
|
-
*
|
|
66
|
-
* @type {Vector3}
|
|
67
|
-
*/
|
|
68
|
-
center = new Vector3();
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
/**
|
|
72
|
-
*
|
|
73
|
-
* @type {Quaternion}
|
|
74
|
-
*/
|
|
75
|
-
lookRotation = new Quaternion();
|
|
76
|
-
|
|
77
|
-
/**
|
|
78
|
-
*
|
|
79
|
-
* @param {Vector3} [center]
|
|
80
|
-
* @param {number} [radius]
|
|
81
|
-
* @param {number} [rate]
|
|
82
|
-
* @returns {OrbitingBehavior}
|
|
83
|
-
*/
|
|
84
|
-
static from({
|
|
85
|
-
center = Vector3.zero,
|
|
86
|
-
radius = 1,
|
|
87
|
-
rate = 1
|
|
88
|
-
}) {
|
|
89
|
-
|
|
90
|
-
assert.defined(center, 'center')
|
|
91
|
-
assert.isNumber(radius, 'radius')
|
|
92
|
-
assert.isNumber(rate, 'rate')
|
|
93
|
-
|
|
94
|
-
const r = new OrbitingBehavior();
|
|
95
|
-
|
|
96
|
-
r.offset.copy(center);
|
|
97
|
-
r.radius = radius;
|
|
98
|
-
r.rate = rate;
|
|
99
|
-
|
|
100
|
-
return r;
|
|
101
|
-
}
|
|
102
|
-
|
|
103
|
-
initialize(context) {
|
|
104
|
-
super.initialize(context);
|
|
105
|
-
|
|
106
|
-
const easing = this.easing;
|
|
107
|
-
|
|
108
|
-
this.easing = 1;
|
|
109
|
-
|
|
110
|
-
this.tick(0);
|
|
111
|
-
|
|
112
|
-
this.easing = easing;
|
|
113
|
-
}
|
|
114
|
-
|
|
115
|
-
tick(timeDelta) {
|
|
116
|
-
|
|
117
|
-
const angleDelta = timeDelta * this.rate;
|
|
118
|
-
|
|
119
|
-
this.angle += angleDelta;
|
|
120
|
-
|
|
121
|
-
const entity = this.context.entity;
|
|
122
|
-
const ecd = this.context.ecd;
|
|
123
|
-
|
|
124
|
-
/**
|
|
125
|
-
*
|
|
126
|
-
* @type {Transform64}
|
|
127
|
-
*/
|
|
128
|
-
const transform = ecd.getComponent(entity, Transform64);
|
|
129
|
-
|
|
130
|
-
if (transform === undefined) {
|
|
131
|
-
return BehaviorStatus.Failed;
|
|
132
|
-
}
|
|
133
|
-
|
|
134
|
-
const a = this.angle + this.phase;
|
|
135
|
-
|
|
136
|
-
const cos = Math.cos(a);
|
|
137
|
-
const sin = Math.sin(a);
|
|
138
|
-
|
|
139
|
-
let center_x = this.offset.x;
|
|
140
|
-
let center_y = this.offset.y;
|
|
141
|
-
let center_z = this.offset.z;
|
|
142
|
-
|
|
143
|
-
const r = this.radius;
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
let x = r * cos;
|
|
147
|
-
let y = 0;
|
|
148
|
-
let z = r * sin;
|
|
149
|
-
|
|
150
|
-
const q = this.orientation;
|
|
151
|
-
|
|
152
|
-
//transform point into quaternion
|
|
153
|
-
const qx = q.x, qy = q.y, qz = q.z, qw = q.w;
|
|
154
|
-
|
|
155
|
-
// calculate quat * vector
|
|
156
|
-
|
|
157
|
-
var ix = qw * x + qy * z;
|
|
158
|
-
var iy = qz * x - qx * z;
|
|
159
|
-
var iz = qw * z - qy * x;
|
|
160
|
-
var iw = -qx * x - qz * z;
|
|
161
|
-
|
|
162
|
-
// calculate result * inverse quat
|
|
163
|
-
|
|
164
|
-
x = ix * qw + iw * -qx + iy * -qz - iz * -qy;
|
|
165
|
-
y = iy * qw + iw * -qy + iz * -qx - ix * -qz;
|
|
166
|
-
z = iz * qw + iw * -qz + ix * -qy - iy * -qx;
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
if (this.parent !== -1 && ecd.entityExists(this.parent)) {
|
|
170
|
-
|
|
171
|
-
const parentTransform = ecd.getComponent(this.parent, Transform64);
|
|
172
|
-
|
|
173
|
-
center_x += parentTransform.translation_x;
|
|
174
|
-
center_y += parentTransform.translation_y;
|
|
175
|
-
center_z += parentTransform.translation_z;
|
|
176
|
-
|
|
177
|
-
x *= parentTransform.scale_x;
|
|
178
|
-
y *= parentTransform.scale_y;
|
|
179
|
-
z *= parentTransform.scale_z;
|
|
180
|
-
}
|
|
181
|
-
|
|
182
|
-
center_x = lerp(this.center.x, center_x, this.easing);
|
|
183
|
-
center_y = lerp(this.center.y, center_y, this.easing);
|
|
184
|
-
center_z = lerp(this.center.z, center_z, this.easing);
|
|
185
|
-
|
|
186
|
-
this.center.set(center_x, center_y, center_z);
|
|
187
|
-
|
|
188
|
-
const _x = center_x + x;
|
|
189
|
-
const _y = center_y + y;
|
|
190
|
-
const _z = center_z + z;
|
|
191
|
-
|
|
192
|
-
const old_x = transform.translation_x;
|
|
193
|
-
const old_y = transform.translation_y;
|
|
194
|
-
const old_z = transform.translation_z;
|
|
195
|
-
|
|
196
|
-
if (old_x !== _x || old_y !== _y || old_z !== _z) {
|
|
197
|
-
|
|
198
|
-
// the composition runs in a quaternion; the component holds four numbers, not one
|
|
199
|
-
scratch_rotation._lookRotation(_x - old_x, _y - old_y, _z - old_z, 0, 1, 0);
|
|
200
|
-
scratch_rotation.multiply(this.lookRotation);
|
|
201
|
-
|
|
202
|
-
transform.setRotation(
|
|
203
|
-
scratch_rotation.x, scratch_rotation.y,
|
|
204
|
-
scratch_rotation.z, scratch_rotation.w
|
|
205
|
-
);
|
|
206
|
-
|
|
207
|
-
}
|
|
208
|
-
|
|
209
|
-
transform.setTranslation(_x, _y, _z);
|
|
210
|
-
|
|
211
|
-
// the rotation write above left the matrix describing the previous orientation
|
|
212
|
-
transform.updateMatrix();
|
|
213
|
-
|
|
214
|
-
t64_announce_change(ecd, entity
|
|
215
|
-
|
|
216
|
-
return BehaviorStatus.Running;
|
|
217
|
-
}
|
|
218
|
-
}
|
|
1
|
+
import { assert } from "../../../../core/assert.js";
|
|
2
|
+
import Quaternion from "../../../../core/geom/Quaternion.js";
|
|
3
|
+
import Vector3 from "../../../../core/geom/Vector3.js";
|
|
4
|
+
import { lerp } from "../../../../core/math/lerp.js";
|
|
5
|
+
import { Transform64 } from "../../../ecs/transform/Transform64.js";
|
|
6
|
+
import { BehaviorStatus } from "../BehaviorStatus.js";
|
|
7
|
+
import { EntityBehavior } from "./EntityBehavior.js";
|
|
8
|
+
import { t64_announce_change } from "../../../ecs/transform/t64_announce_change.js";
|
|
9
|
+
|
|
10
|
+
/**
|
|
11
|
+
* The orientation being composed for whichever entity is orbiting right now.
|
|
12
|
+
*
|
|
13
|
+
* @type {Quaternion}
|
|
14
|
+
*/
|
|
15
|
+
const scratch_rotation = new Quaternion();
|
|
16
|
+
|
|
17
|
+
export class OrbitingBehavior extends EntityBehavior {
|
|
18
|
+
|
|
19
|
+
/**
|
|
20
|
+
* Radians per second.
|
|
21
|
+
* Can be negative for counter-clockwise rotation.
|
|
22
|
+
* @type {number}
|
|
23
|
+
*/
|
|
24
|
+
rate = Math.PI;
|
|
25
|
+
|
|
26
|
+
/**
|
|
27
|
+
*
|
|
28
|
+
* @type {number}
|
|
29
|
+
*/
|
|
30
|
+
radius = 1;
|
|
31
|
+
|
|
32
|
+
/**
|
|
33
|
+
* Initial offset in radians
|
|
34
|
+
* @type {number}
|
|
35
|
+
*/
|
|
36
|
+
phase = 0;
|
|
37
|
+
|
|
38
|
+
/**
|
|
39
|
+
*
|
|
40
|
+
* @type {number}
|
|
41
|
+
*/
|
|
42
|
+
angle = 0;
|
|
43
|
+
|
|
44
|
+
/**
|
|
45
|
+
* Offset from the origin
|
|
46
|
+
* @type {Vector3}
|
|
47
|
+
*/
|
|
48
|
+
offset = new Vector3();
|
|
49
|
+
|
|
50
|
+
/**
|
|
51
|
+
*
|
|
52
|
+
* @type {number}
|
|
53
|
+
*/
|
|
54
|
+
parent = -1;
|
|
55
|
+
|
|
56
|
+
/**
|
|
57
|
+
*
|
|
58
|
+
* @type {number}
|
|
59
|
+
*/
|
|
60
|
+
easing = 1;
|
|
61
|
+
|
|
62
|
+
orientation = new Quaternion();
|
|
63
|
+
|
|
64
|
+
/**
|
|
65
|
+
*
|
|
66
|
+
* @type {Vector3}
|
|
67
|
+
*/
|
|
68
|
+
center = new Vector3();
|
|
69
|
+
|
|
70
|
+
|
|
71
|
+
/**
|
|
72
|
+
*
|
|
73
|
+
* @type {Quaternion}
|
|
74
|
+
*/
|
|
75
|
+
lookRotation = new Quaternion();
|
|
76
|
+
|
|
77
|
+
/**
|
|
78
|
+
*
|
|
79
|
+
* @param {Vector3} [center]
|
|
80
|
+
* @param {number} [radius]
|
|
81
|
+
* @param {number} [rate]
|
|
82
|
+
* @returns {OrbitingBehavior}
|
|
83
|
+
*/
|
|
84
|
+
static from({
|
|
85
|
+
center = Vector3.zero,
|
|
86
|
+
radius = 1,
|
|
87
|
+
rate = 1
|
|
88
|
+
}) {
|
|
89
|
+
|
|
90
|
+
assert.defined(center, 'center')
|
|
91
|
+
assert.isNumber(radius, 'radius')
|
|
92
|
+
assert.isNumber(rate, 'rate')
|
|
93
|
+
|
|
94
|
+
const r = new OrbitingBehavior();
|
|
95
|
+
|
|
96
|
+
r.offset.copy(center);
|
|
97
|
+
r.radius = radius;
|
|
98
|
+
r.rate = rate;
|
|
99
|
+
|
|
100
|
+
return r;
|
|
101
|
+
}
|
|
102
|
+
|
|
103
|
+
initialize(context) {
|
|
104
|
+
super.initialize(context);
|
|
105
|
+
|
|
106
|
+
const easing = this.easing;
|
|
107
|
+
|
|
108
|
+
this.easing = 1;
|
|
109
|
+
|
|
110
|
+
this.tick(0);
|
|
111
|
+
|
|
112
|
+
this.easing = easing;
|
|
113
|
+
}
|
|
114
|
+
|
|
115
|
+
tick(timeDelta) {
|
|
116
|
+
|
|
117
|
+
const angleDelta = timeDelta * this.rate;
|
|
118
|
+
|
|
119
|
+
this.angle += angleDelta;
|
|
120
|
+
|
|
121
|
+
const entity = this.context.entity;
|
|
122
|
+
const ecd = this.context.ecd;
|
|
123
|
+
|
|
124
|
+
/**
|
|
125
|
+
*
|
|
126
|
+
* @type {Transform64}
|
|
127
|
+
*/
|
|
128
|
+
const transform = ecd.getComponent(entity, Transform64);
|
|
129
|
+
|
|
130
|
+
if (transform === undefined) {
|
|
131
|
+
return BehaviorStatus.Failed;
|
|
132
|
+
}
|
|
133
|
+
|
|
134
|
+
const a = this.angle + this.phase;
|
|
135
|
+
|
|
136
|
+
const cos = Math.cos(a);
|
|
137
|
+
const sin = Math.sin(a);
|
|
138
|
+
|
|
139
|
+
let center_x = this.offset.x;
|
|
140
|
+
let center_y = this.offset.y;
|
|
141
|
+
let center_z = this.offset.z;
|
|
142
|
+
|
|
143
|
+
const r = this.radius;
|
|
144
|
+
|
|
145
|
+
|
|
146
|
+
let x = r * cos;
|
|
147
|
+
let y = 0;
|
|
148
|
+
let z = r * sin;
|
|
149
|
+
|
|
150
|
+
const q = this.orientation;
|
|
151
|
+
|
|
152
|
+
//transform point into quaternion
|
|
153
|
+
const qx = q.x, qy = q.y, qz = q.z, qw = q.w;
|
|
154
|
+
|
|
155
|
+
// calculate quat * vector
|
|
156
|
+
|
|
157
|
+
var ix = qw * x + qy * z;
|
|
158
|
+
var iy = qz * x - qx * z;
|
|
159
|
+
var iz = qw * z - qy * x;
|
|
160
|
+
var iw = -qx * x - qz * z;
|
|
161
|
+
|
|
162
|
+
// calculate result * inverse quat
|
|
163
|
+
|
|
164
|
+
x = ix * qw + iw * -qx + iy * -qz - iz * -qy;
|
|
165
|
+
y = iy * qw + iw * -qy + iz * -qx - ix * -qz;
|
|
166
|
+
z = iz * qw + iw * -qz + ix * -qy - iy * -qx;
|
|
167
|
+
|
|
168
|
+
|
|
169
|
+
if (this.parent !== -1 && ecd.entityExists(this.parent)) {
|
|
170
|
+
|
|
171
|
+
const parentTransform = ecd.getComponent(this.parent, Transform64);
|
|
172
|
+
|
|
173
|
+
center_x += parentTransform.translation_x;
|
|
174
|
+
center_y += parentTransform.translation_y;
|
|
175
|
+
center_z += parentTransform.translation_z;
|
|
176
|
+
|
|
177
|
+
x *= parentTransform.scale_x;
|
|
178
|
+
y *= parentTransform.scale_y;
|
|
179
|
+
z *= parentTransform.scale_z;
|
|
180
|
+
}
|
|
181
|
+
|
|
182
|
+
center_x = lerp(this.center.x, center_x, this.easing);
|
|
183
|
+
center_y = lerp(this.center.y, center_y, this.easing);
|
|
184
|
+
center_z = lerp(this.center.z, center_z, this.easing);
|
|
185
|
+
|
|
186
|
+
this.center.set(center_x, center_y, center_z);
|
|
187
|
+
|
|
188
|
+
const _x = center_x + x;
|
|
189
|
+
const _y = center_y + y;
|
|
190
|
+
const _z = center_z + z;
|
|
191
|
+
|
|
192
|
+
const old_x = transform.translation_x;
|
|
193
|
+
const old_y = transform.translation_y;
|
|
194
|
+
const old_z = transform.translation_z;
|
|
195
|
+
|
|
196
|
+
if (old_x !== _x || old_y !== _y || old_z !== _z) {
|
|
197
|
+
|
|
198
|
+
// the composition runs in a quaternion; the component holds four numbers, not one
|
|
199
|
+
scratch_rotation._lookRotation(_x - old_x, _y - old_y, _z - old_z, 0, 1, 0);
|
|
200
|
+
scratch_rotation.multiply(this.lookRotation);
|
|
201
|
+
|
|
202
|
+
transform.setRotation(
|
|
203
|
+
scratch_rotation.x, scratch_rotation.y,
|
|
204
|
+
scratch_rotation.z, scratch_rotation.w
|
|
205
|
+
);
|
|
206
|
+
|
|
207
|
+
}
|
|
208
|
+
|
|
209
|
+
transform.setTranslation(_x, _y, _z);
|
|
210
|
+
|
|
211
|
+
// the rotation write above left the matrix describing the previous orientation
|
|
212
|
+
transform.updateMatrix();
|
|
213
|
+
|
|
214
|
+
t64_announce_change(ecd, entity);
|
|
215
|
+
|
|
216
|
+
return BehaviorStatus.Running;
|
|
217
|
+
}
|
|
218
|
+
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PhysicsSystem.d.ts","sourceRoot":"","sources":["../../../../../src/engine/physics/ecs/PhysicsSystem.js"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"PhysicsSystem.d.ts","sourceRoot":"","sources":["../../../../../src/engine/physics/ecs/PhysicsSystem.js"],"names":[],"mappings":"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"}
|
|
@@ -49,7 +49,7 @@ import { PhysicsEvents } from "./PhysicsEvents.js";
|
|
|
49
49
|
import { RIGID_BODY_UNALLOCATED, RigidBody } from "./RigidBody.js";
|
|
50
50
|
import { RigidBodyFlags } from "./RigidBodyFlags.js";
|
|
51
51
|
import { SleepState } from "./SleepState.js";
|
|
52
|
-
import {
|
|
52
|
+
import { t64_announce_change } from "../../ecs/transform/t64_announce_change.js";
|
|
53
53
|
|
|
54
54
|
/**
|
|
55
55
|
* Scratch for {@link applyImpulseAt}'s angular delta calculation.
|
|
@@ -2269,10 +2269,7 @@ export class PhysicsSystem extends System {
|
|
|
2269
2269
|
const entity = storage.entity_at(idx);
|
|
2270
2270
|
|
|
2271
2271
|
if (entity >= 0) {
|
|
2272
|
-
ecd
|
|
2273
|
-
klass: Transform64,
|
|
2274
|
-
instance: transforms[idx]
|
|
2275
|
-
});
|
|
2272
|
+
t64_announce_change(ecd, entity);
|
|
2276
2273
|
}
|
|
2277
2274
|
}
|
|
2278
2275
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SoundListenerSystem.d.ts","sourceRoot":"","sources":["../../../../../src/engine/sound/ecs/SoundListenerSystem.js"],"names":[],"mappings":";
|
|
1
|
+
{"version":3,"file":"SoundListenerSystem.d.ts","sourceRoot":"","sources":["../../../../../src/engine/sound/ecs/SoundListenerSystem.js"],"names":[],"mappings":";AAoIA;IAOI;;;;OAIG;IACH,qBAHW,YAAY,EAiBtB;IAzBD;;;OAGG;IACH,MAFU,OAAO,EAAE,CAET;IAaN,4DAAgD;IAEhD,qEAEC;IAGD,8BAA8B;IAGlC,wDAaC;IAED,0DAUC;CACJ;uBAlLsB,qBAAqB;AAoB5C;IACI;;;OAGG;IACH,UAFU,aAAa,CAEP;IAEhB;;;OAGG;IACH,WAFU,WAAW,CAEJ;IAEjB;;;OAGG;IACH,cAFU,YAAY,CAEF;IAEpB;;OAEG;IACH,KAFU,yBAAuB,IAAI,CAE1B;IAEX;;OAEG;IACH,QAFU,MAAM,CAEJ;IAEZ;;OAEG;IACH,wBAFU,uBAAY,IAAI,CAEI;IAE9B,aAaC;IAED,eAUC;IAED,uBAuBC;IAED,uBAeC;CACJ;4BAzH2B,oCAAoC;0BACtC,oBAAoB;4CANF,oDAAoD"}
|
|
@@ -5,7 +5,7 @@ import { ResourceAccessKind } from "../../../core/model/ResourceAccessKind.js";
|
|
|
5
5
|
import { ResourceAccessSpecification } from "../../../core/model/ResourceAccessSpecification.js";
|
|
6
6
|
import { browserInfo } from "../../browserInfo.js";
|
|
7
7
|
import Quaternion from "../../../core/geom/Quaternion.js";
|
|
8
|
-
import {
|
|
8
|
+
import { TRANSFORM64_EVENT_CHANGE } from "../../ecs/transform/TRANSFORM64_EVENT_CHANGE.js";
|
|
9
9
|
import { System } from '../../ecs/System.js';
|
|
10
10
|
import { Transform64 } from '../../ecs/transform/Transform64.js';
|
|
11
11
|
import SoundListener from './SoundListener.js';
|
|
@@ -62,15 +62,13 @@ class Context {
|
|
|
62
62
|
|
|
63
63
|
link() {
|
|
64
64
|
// one listener for the pair, because the component announces itself whole
|
|
65
|
-
this.__on_transform_changed =
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
this.updateRotation();
|
|
69
|
-
}
|
|
65
|
+
this.__on_transform_changed = () => {
|
|
66
|
+
this.updatePosition();
|
|
67
|
+
this.updateRotation();
|
|
70
68
|
};
|
|
71
69
|
|
|
72
70
|
this.ecd.addEntityEventListener(
|
|
73
|
-
this.entity,
|
|
71
|
+
this.entity, TRANSFORM64_EVENT_CHANGE, this.__on_transform_changed
|
|
74
72
|
);
|
|
75
73
|
|
|
76
74
|
this.updatePosition();
|
|
@@ -83,7 +81,7 @@ class Context {
|
|
|
83
81
|
}
|
|
84
82
|
|
|
85
83
|
this.ecd.removeEntityEventListener(
|
|
86
|
-
this.entity,
|
|
84
|
+
this.entity, TRANSFORM64_EVENT_CHANGE, this.__on_transform_changed
|
|
87
85
|
);
|
|
88
86
|
|
|
89
87
|
this.__on_transform_changed = null;
|
|
@@ -103,22 +103,26 @@ export class AcousticSimulator {
|
|
|
103
103
|
setProbeField(field: AcousticProbeField | null): void;
|
|
104
104
|
/**
|
|
105
105
|
* Compute the full acoustic solution for a source at `source`, given `listener`, into `out`.
|
|
106
|
-
*
|
|
107
|
-
*
|
|
108
|
-
* @
|
|
106
|
+
*
|
|
107
|
+
* Both positions are read BY INDEX rather than through `.x/.y/.z`: they are live views over
|
|
108
|
+
* {@link Transform64} buffers (plain `Float64Array`s, no component accessors). A {@link Vector3}
|
|
109
|
+
* is a `Float64Array` subclass whose `[0..2]` alias `x/y/z`, so indexing reads both shapes.
|
|
110
|
+
* @param {number[]|Float32Array|Float64Array} listener listener world position, 3 elements
|
|
111
|
+
* @param {number[]|Float32Array|Float64Array} source source world position, 3 elements
|
|
112
|
+
* @param {number} source_radius apparent radius of the source (per-source; 0 = point source). For
|
|
109
113
|
* volumetric (fractional) occlusion.
|
|
110
114
|
* @param {AcousticSourceState} state per-source temporal accumulation (mutated)
|
|
111
115
|
* @param {AcousticSolution} out
|
|
112
116
|
*/
|
|
113
|
-
solveFor(listener:
|
|
117
|
+
solveFor(listener: number[] | Float32Array | Float64Array, source: number[] | Float32Array | Float64Array, source_radius: number, state: AcousticSourceState, out: AcousticSolution): void;
|
|
114
118
|
/**
|
|
115
119
|
* Solve + push the result to every live instance. Each instance must expose a `position` (Vector3)
|
|
116
120
|
* and `setAcoustic(solution)`. Called once per frame by the `AudioEmitterSystem`, between the live-set
|
|
117
121
|
* refresh and the sopra tick.
|
|
118
|
-
* @param {EventInstance[]}
|
|
119
|
-
* @param {
|
|
122
|
+
* @param {EventInstance[]} live_instances bounded set (≤ voice budget)
|
|
123
|
+
* @param {number[]|Float32Array|Float64Array} listener listener world position, 3 elements
|
|
120
124
|
*/
|
|
121
|
-
apply(
|
|
125
|
+
apply(live_instances: EventInstance[], listener: number[] | Float32Array | Float64Array): void;
|
|
122
126
|
/**
|
|
123
127
|
* Drop a live instance's accumulated state (call when the instance ends).
|
|
124
128
|
* @param {EventInstance} instance
|
|
@@ -128,7 +132,6 @@ export class AcousticSimulator {
|
|
|
128
132
|
}
|
|
129
133
|
import { AcousticMedium } from "./core/AcousticMedium.js";
|
|
130
134
|
import { AcousticOccluderIndex } from "./core/AcousticOccluderIndex.js";
|
|
131
|
-
import { Vector3 } from "../../../core/geom/Vector3.js";
|
|
132
135
|
import { AcousticSourceState } from "./core/AcousticSourceState.js";
|
|
133
136
|
import { AcousticSolution } from "./core/AcousticSolution.js";
|
|
134
137
|
//# sourceMappingURL=AcousticSimulator.d.ts.map
|