@woosh/meep-engine 3.45.0 → 3.47.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/build/bundle-worker-terrain.js +1 -1
- package/editor/actions/concrete/TransformModifyAction.d.ts.map +1 -1
- package/editor/actions/concrete/TransformModifyAction.js +10 -2
- package/editor/ecs/component/FieldDescriptor.js +15 -0
- package/editor/ecs/component/createObjectEditor.js +41 -12
- package/editor/ecs/component/editors/ecs/Transform64Editor.d.ts.map +1 -1
- package/editor/ecs/component/editors/ecs/Transform64Editor.js +77 -70
- package/editor/tools/TransformToolV2.d.ts.map +1 -1
- package/editor/tools/TransformToolV2.js +4 -0
- package/editor/tools/v2/TransformControls.d.ts.map +1 -1
- package/editor/tools/v2/TransformControls.js +7 -0
- package/editor/view/ecs/EntityEditor.d.ts.map +1 -1
- package/editor/view/ecs/EntityEditor.js +4 -2
- package/package.json +1 -1
- package/src/core/assert.d.ts.map +1 -1
- package/src/core/assert.js +5 -1
- package/src/core/binary/hash/XXH128Hash.d.ts +1 -37
- package/src/core/binary/hash/XXH128Hash.d.ts.map +1 -1
- package/src/core/binary/hash/XXH128Hash.js +4 -55
- package/src/core/binary/hash/XXH3_SECRET.d.ts +1 -12
- package/src/core/binary/hash/XXH3_SECRET.d.ts.map +1 -1
- package/src/core/binary/hash/XXH3_SECRET.js +4 -25
- package/src/core/binary/hash/crc32.d.ts +1 -15
- package/src/core/binary/hash/crc32.d.ts.map +1 -1
- package/src/core/binary/hash/crc32.js +4 -96
- package/src/core/binary/hash/xxh3_128.d.ts +1 -9
- package/src/core/binary/hash/xxh3_128.d.ts.map +1 -1
- package/src/core/binary/hash/xxh3_128.js +4 -341
- package/src/core/binary/hash/xxh3_64.d.ts +1 -8
- package/src/core/binary/hash/xxh3_64.d.ts.map +1 -1
- package/src/core/binary/hash/xxh3_64.js +4 -241
- package/src/core/binary/hash/xxh3_common.d.ts +1 -223
- package/src/core/binary/hash/xxh3_common.d.ts.map +1 -1
- package/src/core/binary/hash/xxh3_common.js +90 -476
- package/src/core/collection/array/array_insert_at.d.ts +16 -0
- package/src/core/collection/array/array_insert_at.d.ts.map +1 -0
- package/src/core/collection/array/array_insert_at.js +32 -0
- package/src/core/collection/array/array_remove_at.d.ts +15 -0
- package/src/core/collection/array/array_remove_at.d.ts.map +1 -0
- package/src/core/collection/array/array_remove_at.js +30 -0
- package/src/core/collection/array/combine_hash.d.ts +6 -0
- package/src/core/collection/array/combine_hash.d.ts.map +1 -1
- package/src/core/collection/array/combine_hash.js +6 -0
- package/src/core/function/FunctionCompiler.js +2 -2
- package/src/core/geom/3d/mat4/m4_multiply.d.ts +3 -0
- package/src/core/geom/3d/mat4/m4_multiply.d.ts.map +1 -1
- package/src/core/geom/3d/mat4/m4_multiply.js +3 -0
- package/src/core/geom/3d/mat4/m4_multiply_f64.d.ts +30 -0
- package/src/core/geom/3d/mat4/m4_multiply_f64.d.ts.map +1 -0
- package/src/core/geom/3d/mat4/m4_multiply_f64.js +106 -0
- package/src/core/geom/3d/quaternion/quat3_look_rotation.d.ts +37 -0
- package/src/core/geom/3d/quaternion/quat3_look_rotation.d.ts.map +1 -0
- package/src/core/geom/3d/quaternion/quat3_look_rotation.js +172 -0
- package/src/core/geom/ConicRay.js +2 -2
- package/src/core/geom/Quaternion.d.ts +1 -0
- package/src/core/geom/Quaternion.d.ts.map +1 -1
- package/src/core/geom/Quaternion.js +12 -48
- package/src/core/geom/Vector4.d.ts.map +1 -1
- package/src/core/geom/Vector4.js +8 -5
- package/src/core/math/hash/XXH128Hash.d.ts +38 -0
- package/src/core/math/hash/XXH128Hash.d.ts.map +1 -0
- package/src/core/math/hash/XXH128Hash.js +55 -0
- package/src/core/math/hash/XXH3_SECRET.d.ts +13 -0
- package/src/core/math/hash/XXH3_SECRET.d.ts.map +1 -0
- package/src/core/math/hash/XXH3_SECRET.js +25 -0
- package/src/core/math/hash/crc32.d.ts +16 -0
- package/src/core/math/hash/crc32.d.ts.map +1 -0
- package/src/core/math/hash/crc32.js +96 -0
- package/src/core/math/hash/xxh3_128.d.ts +10 -0
- package/src/core/math/hash/xxh3_128.d.ts.map +1 -0
- package/src/core/math/hash/xxh3_128.js +341 -0
- package/src/core/math/hash/xxh3_64.d.ts +9 -0
- package/src/core/math/hash/xxh3_64.d.ts.map +1 -0
- package/src/core/math/hash/xxh3_64.js +241 -0
- package/src/core/math/hash/xxh3_common.d.ts +224 -0
- package/src/core/math/hash/xxh3_common.d.ts.map +1 -0
- package/src/core/math/hash/xxh3_common.js +476 -0
- package/src/core/math/lookup/ParameterLookupTable.js +2 -2
- package/src/core/model/node-graph/node/NodeInstancePortReference.js +2 -2
- package/src/core/model/reactive/model/ReactiveBinaryExpression.js +2 -2
- package/src/core/model/reactive/model/terminal/ReactiveReference.js +2 -2
- package/src/engine/Engine.d.ts.map +1 -1
- package/src/engine/Engine.js +9 -4
- package/src/engine/asset/AssetDescription.js +2 -2
- package/src/engine/ecs/animation/Animation.js +2 -2
- package/src/engine/ecs/animation/AnimationClip.d.ts.map +1 -1
- package/src/engine/ecs/animation/AnimationClip.js +7 -5
- package/src/engine/ecs/gui/GUIElement.d.ts.map +1 -1
- package/src/engine/ecs/gui/GUIElement.js +7 -5
- package/src/engine/ecs/gui/hud/HeadsUpDisplay.js +2 -2
- package/src/engine/ecs/gui/position/ViewportPosition.d.ts.map +1 -1
- package/src/engine/ecs/gui/position/ViewportPosition.js +11 -7
- package/src/engine/ecs/storage/populateEngineSerializationRegistry.d.ts.map +1 -1
- package/src/engine/ecs/storage/populateEngineSerializationRegistry.js +10 -0
- package/src/engine/ecs/transform/Transform64.d.ts +1 -1
- package/src/engine/ecs/transform/Transform64.d.ts.map +1 -1
- package/src/engine/ecs/transform/Transform64.js +5 -4
- package/src/engine/ecs/transform/t64_look_rotation.d.ts +4 -4
- package/src/engine/ecs/transform/t64_look_rotation.d.ts.map +1 -1
- package/src/engine/ecs/transform/t64_look_rotation.js +7 -18
- package/src/engine/graphics/ecs/animation/animator/AnimationClip.d.ts.map +1 -1
- package/src/engine/graphics/ecs/animation/animator/AnimationClip.js +8 -5
- package/src/engine/graphics/ecs/animation/animator/AnimationClipDefinition.js +2 -2
- package/src/engine/graphics/ecs/animation/animator/AnimationNotification.js +2 -2
- package/src/engine/graphics/ecs/animation/animator/AnimationNotificationDefinition.js +2 -2
- package/src/engine/graphics/ecs/animation/animator/graph/definition/AnimationGraphDefinition.js +2 -2
- package/src/engine/graphics/ecs/animation/animator/graph/definition/AnimationStateDefinition.js +2 -2
- package/src/engine/graphics/ecs/animation/animator/graph/definition/AnimationTransitionDefinition.d.ts.map +1 -1
- package/src/engine/graphics/ecs/animation/animator/graph/definition/AnimationTransitionDefinition.js +8 -5
- package/src/engine/graphics/ecs/camera/topdown/TopDownCameraControllerSystem.d.ts.map +1 -1
- package/src/engine/graphics/ecs/camera/topdown/TopDownCameraControllerSystem.js +30 -1
- package/src/engine/graphics/ecs/decal/v2/Decal.d.ts.map +1 -1
- package/src/engine/graphics/ecs/decal/v2/Decal.js +9 -8
- package/src/engine/graphics/render/frame_graph/resource/TextureResourceDescriptor.d.ts.map +1 -1
- package/src/engine/graphics/render/frame_graph/resource/TextureResourceDescriptor.js +9 -6
- package/src/engine/graphics3/GPUParticleEmitterSystem.d.ts +6 -0
- package/src/engine/graphics3/GPUParticleEmitterSystem.d.ts.map +1 -1
- package/src/engine/graphics3/GPUParticleEmitterSystem.js +72 -29
- package/src/engine/graphics3/ParticipatingMedia.js +204 -204
- package/src/engine/graphics3/animation/AnimationClips.d.ts +5 -0
- package/src/engine/graphics3/animation/AnimationClips.d.ts.map +1 -1
- package/src/engine/graphics3/animation/AnimationClips.js +5 -0
- package/src/engine/grid/obstacle/GridObstacle.js +2 -2
- package/src/engine/input/devices/KeyboardDevice.d.ts +1 -0
- package/src/engine/input/devices/KeyboardDevice.d.ts.map +1 -1
- package/src/engine/input/devices/KeyboardDevice.js +7 -6
- package/src/engine/intelligence/behavior/selector/WeightedElement.js +2 -2
- package/src/engine/interpolation/Interpolated.js +2 -2
- package/src/engine/navigation/ecs/path_following/PathFollowingSystem.d.ts.map +1 -1
- package/src/engine/navigation/ecs/path_following/PathFollowingSystem.js +15 -2
- package/src/engine/network/CONGESTION_CONTROL.md +9 -9
- package/src/engine/network/MESSAGE_TRANSPORT.md +364 -0
- package/src/engine/network/NetworkSession.d.ts +31 -11
- package/src/engine/network/NetworkSession.d.ts.map +1 -1
- package/src/engine/network/NetworkSession.js +453 -286
- package/src/engine/network/README.md +77 -27
- package/src/engine/network/SMOOTHNESS_DESIGN.md +13 -5
- package/src/engine/network/diagnostics/BandwidthMeter.d.ts +1 -1
- package/src/engine/network/diagnostics/BandwidthMeter.js +1 -1
- package/src/engine/network/orchestrator/HostJoin.d.ts +111 -0
- package/src/engine/network/orchestrator/HostJoin.d.ts.map +1 -0
- package/src/engine/network/orchestrator/HostJoin.js +271 -0
- package/src/engine/network/orchestrator/NetworkPeer.d.ts +151 -112
- package/src/engine/network/orchestrator/NetworkPeer.d.ts.map +1 -1
- package/src/engine/network/orchestrator/NetworkPeer.js +450 -499
- package/src/engine/network/orchestrator/PendingSlices.d.ts +30 -0
- package/src/engine/network/orchestrator/PendingSlices.d.ts.map +1 -0
- package/src/engine/network/orchestrator/PendingSlices.js +83 -0
- package/src/engine/network/orchestrator/ReliableFrames.d.ts +34 -0
- package/src/engine/network/orchestrator/ReliableFrames.d.ts.map +1 -0
- package/src/engine/network/orchestrator/ReliableFrames.js +96 -0
- package/src/engine/network/orchestrator/ServerAuthoritativeClient.d.ts +77 -10
- package/src/engine/network/orchestrator/ServerAuthoritativeClient.d.ts.map +1 -1
- package/src/engine/network/orchestrator/ServerAuthoritativeClient.js +236 -61
- package/src/engine/network/orchestrator/ServerAuthoritativeServer.d.ts +20 -6
- package/src/engine/network/orchestrator/ServerAuthoritativeServer.d.ts.map +1 -1
- package/src/engine/network/orchestrator/ServerAuthoritativeServer.js +33 -8
- package/src/engine/network/replication/Replicator.d.ts.map +1 -1
- package/src/engine/network/replication/Replicator.js +7 -1
- package/src/engine/network/sim/ActionLog.d.ts +32 -5
- package/src/engine/network/sim/ActionLog.d.ts.map +1 -1
- package/src/engine/network/sim/ActionLog.js +47 -5
- package/src/engine/network/sim/SimActionExecutor.d.ts +42 -2
- package/src/engine/network/sim/SimActionExecutor.d.ts.map +1 -1
- package/src/engine/network/sim/SimActionExecutor.js +100 -4
- package/src/engine/network/sim/Snapshotter.d.ts +12 -0
- package/src/engine/network/sim/Snapshotter.d.ts.map +1 -1
- package/src/engine/network/sim/Snapshotter.js +43 -0
- package/src/engine/network/state/Baseline.d.ts +1 -1
- package/src/engine/network/state/Baseline.js +1 -1
- package/src/engine/network/state/FrameBufferRing.d.ts +25 -6
- package/src/engine/network/state/FrameBufferRing.d.ts.map +1 -1
- package/src/engine/network/state/FrameBufferRing.js +51 -6
- package/src/engine/network/state/InputRing.d.ts +4 -0
- package/src/engine/network/state/InputRing.d.ts.map +1 -1
- package/src/engine/network/state/InputRing.js +7 -0
- package/src/engine/network/transport/DeferredTransport.d.ts.map +1 -1
- package/src/engine/network/transport/DeferredTransport.js +1 -0
- package/src/engine/network/transport/LoopbackTransport.d.ts.map +1 -1
- package/src/engine/network/transport/LoopbackTransport.js +4 -2
- package/src/engine/network/transport/Transport.d.ts +7 -0
- package/src/engine/network/transport/Transport.d.ts.map +1 -1
- package/src/engine/network/transport/Transport.js +8 -0
- package/src/engine/network/transport/adapters/NodeUDPTransport.d.ts.map +1 -1
- package/src/engine/network/transport/adapters/NodeUDPTransport.js +20 -5
- package/src/engine/network/transport/adapters/WebRTCDataChannelTransport.d.ts.map +1 -1
- package/src/engine/network/transport/adapters/WebRTCDataChannelTransport.js +8 -0
- package/src/engine/network/transport/adapters/WebTransportTransport.d.ts.map +1 -1
- package/src/engine/network/transport/adapters/WebTransportTransport.js +6 -0
- package/src/engine/network/transport/connection/Connection.d.ts +191 -0
- package/src/engine/network/transport/connection/Connection.d.ts.map +1 -0
- package/src/engine/network/transport/connection/Connection.js +1262 -0
- package/src/engine/network/transport/connection/RangeSet.d.ts +94 -0
- package/src/engine/network/transport/connection/RangeSet.d.ts.map +1 -0
- package/src/engine/network/transport/connection/RangeSet.js +260 -0
- package/src/engine/network/transport/connection/RxStream.d.ts +48 -0
- package/src/engine/network/transport/connection/RxStream.d.ts.map +1 -0
- package/src/engine/network/transport/connection/RxStream.js +211 -0
- package/src/engine/network/transport/connection/TxStream.d.ts +90 -0
- package/src/engine/network/transport/connection/TxStream.d.ts.map +1 -0
- package/src/engine/network/transport/connection/TxStream.js +243 -0
- package/src/engine/network/transport/connection/bytes_copy.d.ts +17 -0
- package/src/engine/network/transport/connection/bytes_copy.d.ts.map +1 -0
- package/src/engine/network/transport/connection/bytes_copy.js +34 -0
- package/src/engine/network/transport/connection/varint.d.ts +46 -0
- package/src/engine/network/transport/connection/varint.d.ts.map +1 -0
- package/src/engine/network/transport/connection/varint.js +107 -0
- package/src/engine/physics/cloth/ecs/Cloth.d.ts.map +1 -1
- package/src/engine/physics/cloth/ecs/Cloth.js +7 -5
- package/src/engine/physics/cloth/ecs/ClothCollider.d.ts.map +1 -1
- package/src/engine/physics/cloth/ecs/ClothCollider.js +7 -5
- package/src/engine/physics/cloth/ecs/ClothDynamics.d.ts.map +1 -1
- package/src/engine/physics/cloth/ecs/ClothDynamics.js +20 -11
- package/src/engine/physics/fluid/FluidField.d.ts.map +1 -1
- package/src/engine/physics/fluid/FluidField.js +7 -5
- package/src/engine/physics/fluid/ecs/FluidComponent.d.ts.map +1 -1
- package/src/engine/physics/fluid/ecs/FluidComponent.js +19 -11
- package/src/engine/physics/fluid/ecs/FluidObstacleSystem.d.ts +4 -4
- package/src/engine/physics/fluid/effector/AbstractFluidEffector.d.ts +2 -2
- package/src/engine/physics/fluid/effector/AbstractFluidEffector.js +2 -2
- package/src/engine/physics/fluid/effector/GlobalFluidEffector.d.ts.map +1 -1
- package/src/engine/physics/fluid/effector/GlobalFluidEffector.js +11 -7
- package/src/engine/physics/fluid/effector/ImpulseFluidEffector.d.ts.map +1 -1
- package/src/engine/physics/fluid/effector/ImpulseFluidEffector.js +11 -7
- package/src/engine/physics/fluid/effector/WakeFluidEffector.d.ts.map +1 -1
- package/src/engine/physics/fluid/effector/WakeFluidEffector.js +16 -9
- package/src/engine/sound/ecs/audio/AudioEmitter.d.ts +38 -7
- package/src/engine/sound/ecs/audio/AudioEmitter.d.ts.map +1 -1
- package/src/engine/sound/ecs/audio/AudioEmitter.js +47 -14
- package/src/engine/sound/ecs/audio/AudioEmitterSerializationAdapter.d.ts.map +1 -1
- package/src/engine/sound/ecs/audio/AudioEmitterSerializationAdapter.js +5 -1
- package/src/engine/sound/ecs/audio/AudioEmitterSerializationUpgrader_0_1.d.ts +18 -0
- package/src/engine/sound/ecs/audio/AudioEmitterSerializationUpgrader_0_1.d.ts.map +1 -0
- package/src/engine/sound/ecs/audio/AudioEmitterSerializationUpgrader_0_1.js +48 -0
- package/src/engine/sound/ecs/audio/AudioEmitterSystem.d.ts +12 -2
- package/src/engine/sound/ecs/audio/AudioEmitterSystem.d.ts.map +1 -1
- package/src/engine/sound/ecs/audio/AudioEmitterSystem.js +173 -9
- package/src/engine/sound/ecs/audio/LiveEmitterSet.d.ts +9 -3
- package/src/engine/sound/ecs/audio/LiveEmitterSet.d.ts.map +1 -1
- package/src/engine/sound/ecs/audio/LiveEmitterSet.js +28 -8
- package/src/engine/sound/ecs/trigger/AudioEventTrigger.d.ts +8 -0
- package/src/engine/sound/ecs/trigger/AudioEventTrigger.d.ts.map +1 -1
- package/src/engine/sound/ecs/trigger/AudioEventTrigger.js +192 -191
- package/src/engine/sound/ecs/trigger/AudioEventTriggerSerializationAdapter.d.ts.map +1 -1
- package/src/engine/sound/ecs/trigger/AudioEventTriggerSerializationAdapter.js +5 -1
- package/src/engine/sound/ecs/trigger/AudioEventTriggerSerializationUpgrader_0_1.d.ts +18 -0
- package/src/engine/sound/ecs/trigger/AudioEventTriggerSerializationUpgrader_0_1.d.ts.map +1 -0
- package/src/engine/sound/ecs/trigger/AudioEventTriggerSerializationUpgrader_0_1.js +51 -0
- package/src/engine/sound/ecs/trigger/AudioEventTriggerSystem.d.ts.map +1 -1
- package/src/engine/sound/ecs/trigger/AudioEventTriggerSystem.js +15 -1
- package/src/engine/sound/simulation/core/AcousticMedium.js +2 -2
- package/src/engine/sound/simulation/definition/AcousticDirectivity.js +2 -2
- package/src/engine/sound/simulation/definition/AcousticMaterial.d.ts.map +1 -1
- package/src/engine/sound/simulation/definition/AcousticMaterial.js +11 -7
- package/src/engine/sound/sopra/README.md +768 -644
- package/src/engine/sound/sopra/SopraEngine.d.ts +104 -8
- package/src/engine/sound/sopra/SopraEngine.d.ts.map +1 -1
- package/src/engine/sound/sopra/SopraEngine.js +327 -12
- package/src/engine/sound/sopra/definition/BusDefinition.d.ts.map +1 -1
- package/src/engine/sound/sopra/definition/BusDefinition.js +5 -4
- package/src/engine/sound/sopra/definition/DuckingRule.d.ts.map +1 -1
- package/src/engine/sound/sopra/definition/DuckingRule.js +7 -5
- package/src/engine/sound/sopra/definition/EventDescription.d.ts +28 -2
- package/src/engine/sound/sopra/definition/EventDescription.d.ts.map +1 -1
- package/src/engine/sound/sopra/definition/EventDescription.js +77 -17
- package/src/engine/sound/sopra/definition/EventDescriptionSerializationAdapter.d.ts +10 -0
- package/src/engine/sound/sopra/definition/EventDescriptionSerializationAdapter.d.ts.map +1 -1
- package/src/engine/sound/sopra/definition/EventDescriptionSerializationAdapter.js +77 -55
- package/src/engine/sound/sopra/definition/EventDescriptionSerializationUpgrader_0_1.d.ts +31 -0
- package/src/engine/sound/sopra/definition/EventDescriptionSerializationUpgrader_0_1.d.ts.map +1 -0
- package/src/engine/sound/sopra/definition/EventDescriptionSerializationUpgrader_0_1.js +75 -0
- package/src/engine/sound/sopra/definition/MixerSnapshot.js +2 -2
- package/src/engine/sound/sopra/definition/ParameterDefinition.d.ts.map +1 -1
- package/src/engine/sound/sopra/definition/ParameterDefinition.js +7 -5
- package/src/engine/sound/sopra/definition/clip/AbstractAudioClip.js +2 -2
- package/src/engine/sound/sopra/definition/clip/BlendContainerAudioClip.d.ts.map +1 -1
- package/src/engine/sound/sopra/definition/clip/BlendContainerAudioClip.js +4 -3
- package/src/engine/sound/sopra/definition/clip/ContainerAudioClip.js +2 -2
- package/src/engine/sound/sopra/definition/clip/RandomContainerAudioClip.js +3 -3
- package/src/engine/sound/sopra/definition/clip/SampleAudioClip.d.ts.map +1 -1
- package/src/engine/sound/sopra/definition/clip/SampleAudioClip.js +16 -9
- package/src/engine/sound/sopra/definition/clip/SilenceAudioClip.js +2 -2
- package/src/engine/sound/sopra/definition/clip/SwitchContainerAudioClip.d.ts +1 -1
- package/src/engine/sound/sopra/definition/clip/SwitchContainerAudioClip.d.ts.map +1 -1
- package/src/engine/sound/sopra/definition/clip/SwitchContainerAudioClip.js +2 -2
- package/src/engine/sound/sopra/definition/effect/AbstractAudioEffect.d.ts +38 -9
- package/src/engine/sound/sopra/definition/effect/AbstractAudioEffect.d.ts.map +1 -1
- package/src/engine/sound/sopra/definition/effect/AbstractAudioEffect.js +34 -5
- package/src/engine/sound/sopra/definition/effect/CompressorEffect.d.ts +7 -2
- package/src/engine/sound/sopra/definition/effect/CompressorEffect.d.ts.map +1 -1
- package/src/engine/sound/sopra/definition/effect/CompressorEffect.js +137 -120
- package/src/engine/sound/sopra/definition/effect/EqEffect.d.ts +3 -1
- package/src/engine/sound/sopra/definition/effect/EqEffect.d.ts.map +1 -1
- package/src/engine/sound/sopra/definition/effect/EqEffect.js +146 -128
- package/src/engine/sound/sopra/definition/effect/ReverbEffect.d.ts +1 -0
- package/src/engine/sound/sopra/definition/effect/ReverbEffect.d.ts.map +1 -1
- package/src/engine/sound/sopra/definition/effect/ReverbEffect.js +8 -3
- package/src/engine/sound/sopra/legacy/SoundEmitter.d.ts.map +1 -1
- package/src/engine/sound/sopra/legacy/SoundEmitter.js +357 -352
- package/src/engine/sound/sopra/legacy/SoundTrack.d.ts.map +1 -1
- package/src/engine/sound/sopra/legacy/SoundTrack.js +281 -278
- package/src/engine/sound/sopra/runtime/BusGraph.d.ts +44 -2
- package/src/engine/sound/sopra/runtime/BusGraph.d.ts.map +1 -1
- package/src/engine/sound/sopra/runtime/BusGraph.js +83 -43
- package/src/engine/sound/sopra/runtime/EffectChain.d.ts +96 -0
- package/src/engine/sound/sopra/runtime/EffectChain.d.ts.map +1 -0
- package/src/engine/sound/sopra/runtime/EffectChain.js +286 -0
- package/src/engine/sound/sopra/runtime/EffectParamOverrides.d.ts +123 -0
- package/src/engine/sound/sopra/runtime/EffectParamOverrides.d.ts.map +1 -0
- package/src/engine/sound/sopra/runtime/EffectParamOverrides.js +320 -0
- package/src/engine/sound/sopra/runtime/EventInstance.d.ts +55 -5
- package/src/engine/sound/sopra/runtime/EventInstance.d.ts.map +1 -1
- package/src/engine/sound/sopra/runtime/EventInstance.js +201 -26
- package/src/engine/sound/sopra/serialization/populateSopraSerializationRegistry.d.ts +2 -1
- package/src/engine/sound/sopra/serialization/populateSopraSerializationRegistry.d.ts.map +1 -1
- package/src/engine/sound/sopra/serialization/populateSopraSerializationRegistry.js +6 -1
- package/src/engine/sound/sopra/serialization/sopraSerializationHarness.d.ts +15 -0
- package/src/engine/sound/sopra/serialization/sopraSerializationHarness.d.ts.map +1 -1
- package/src/engine/sound/sopra/serialization/sopraSerializationHarness.js +32 -0
- package/src/engine/sound/sopra/util/MockAudioContext.d.ts.map +1 -1
- package/src/engine/sound/sopra/util/MockAudioContext.js +3 -0
- package/src/engine/sound/sopra/util/fadeOutAndStop.d.ts +13 -3
- package/src/engine/sound/sopra/util/fadeOutAndStop.d.ts.map +1 -1
- package/src/engine/sound/sopra/util/fadeOutAndStop.js +25 -13
- package/src/format/image/png/PNGReader.js +644 -644
- package/src/format/image/png/crc32.d.ts +1 -1
- package/src/format/image/png/crc32.js +7 -8
- package/src/shade/RENDERER_CONTRACT.md +6 -3
- package/src/shade/descriptor/binding/BindGroupLayoutDescriptor.js +2 -2
- package/src/shade/descriptor/binding/BindGroupLayoutEntry.d.ts.map +1 -1
- package/src/shade/descriptor/binding/BindGroupLayoutEntry.js +12 -8
- package/src/shade/descriptor/binding/StorageTextureBindingLayout.js +2 -2
- package/src/shade/descriptor/binding/TextureBindingLayout.js +2 -2
- package/src/shade/descriptor/blend/BlendComponent.js +2 -2
- package/src/shade/descriptor/pipeline/PipelineDescriptorBase.js +2 -2
- package/src/shade/descriptor/pipeline/PipelineLayoutDescriptor.js +2 -2
- package/src/shade/descriptor/pipeline/ProgrammableStage.js +2 -2
- package/src/shade/descriptor/pipeline/compute/ComputePipelineDescriptor.js +2 -2
- package/src/shade/descriptor/pipeline/render/ColorTargetState.js +2 -2
- package/src/shade/descriptor/pipeline/render/FragmentState.js +2 -2
- package/src/shade/descriptor/pipeline/render/PrimitiveState.js +2 -2
- package/src/shade/descriptor/pipeline/render/RenderPipelineDescriptor.d.ts.map +1 -1
- package/src/shade/descriptor/pipeline/render/RenderPipelineDescriptor.js +8 -5
- package/src/shade/descriptor/pipeline/render/VertexAttribute.js +2 -2
- package/src/shade/descriptor/texture/SamplerDescriptor.d.ts.map +1 -1
- package/src/shade/descriptor/texture/SamplerDescriptor.js +20 -12
- package/src/shade/descriptor/texture/TextureDescriptor.d.ts.map +1 -1
- package/src/shade/descriptor/texture/TextureDescriptor.js +11 -7
- package/src/shade/device/SHADE_DEVICE_FLOOR.d.ts +24 -0
- package/src/shade/device/SHADE_DEVICE_FLOOR.d.ts.map +1 -0
- package/src/shade/device/SHADE_DEVICE_FLOOR.js +34 -0
- package/src/shade/device/ShadeDeviceFailure.d.ts +12 -5
- package/src/shade/device/ShadeDeviceFailure.d.ts.map +1 -1
- package/src/shade/device/ShadeDeviceFailure.js +17 -8
- package/src/shade/device/ShadeDeviceFailureReason.d.ts +1 -1
- package/src/shade/device/ShadeDeviceFailureReason.js +2 -2
- package/src/shade/device/graph/BufferResourceDescriptor.d.ts.map +1 -1
- package/src/shade/device/graph/BufferResourceDescriptor.js +196 -193
- package/src/shade/device/graph/TextureResourceDescriptor.d.ts.map +1 -1
- package/src/shade/device/graph/TextureResourceDescriptor.js +178 -173
- package/src/shade/device/shade_device_floor_unmet.d.ts +13 -0
- package/src/shade/device/shade_device_floor_unmet.d.ts.map +1 -0
- package/src/shade/device/shade_device_floor_unmet.js +32 -0
- package/src/shade/device/timing/profile/sgpt_read_header.js +1 -1
- package/src/shade/device/timing/profile/sgpt_read_records.js +1 -1
- package/src/shade/device/timing/profile/sgpt_write_header.js +1 -1
- package/src/shade/device/timing/profile/sgpt_write_record.js +1 -1
- package/src/shade/renderer/Renderer.d.ts +2 -0
- package/src/shade/renderer/Renderer.d.ts.map +1 -1
- package/src/shade/renderer/Renderer.js +29 -55
- package/src/shade/renderer/binding/BufferBinding.js +2 -2
- package/src/shade/renderer/buffer/GPUBufferAllocator.d.ts.map +1 -1
- package/src/shade/renderer/buffer/GPUBufferAllocator.js +9 -0
- package/src/shade/renderer/buffer/buffer_pool_ops.d.ts +21 -12
- package/src/shade/renderer/buffer/buffer_pool_ops.d.ts.map +1 -1
- package/src/shade/renderer/buffer/buffer_pool_ops.js +18 -19
- package/src/shade/renderer/camera/Camera.js +2 -2
- package/src/shade/renderer/geometry/Attribute.js +2 -2
- package/src/shade/renderer/geometry/Geometry.js +2 -2
- package/src/shade/renderer/geometry/geometry_deduplicate_vertices.js +2 -2
- package/src/shade/renderer/geometry/meshlet/MeshletBatch.js +2 -2
- package/src/shade/renderer/geometry/virtual/format/checksum/vgeo_compute_asset_id.js +13 -13
- package/src/shade/renderer/geometry/virtual/format/checksum/vgeo_compute_directory_block_checksum.js +41 -41
- package/src/shade/renderer/geometry/virtual/format/checksum/vgeo_compute_frame_checksum.js +41 -41
- package/src/shade/renderer/geometry/virtual/format/checksum/vgeo_compute_header_checksum.js +25 -25
- package/src/shade/renderer/gpu_primitive/test/gpu_test.d.ts.map +1 -1
- package/src/shade/renderer/gpu_primitive/test/gpu_test.js +8 -11
- package/src/shade/renderer/loader/gltf/tiny-gltf.d.ts +1 -1
- package/src/shade/renderer/material/StandardShadeMaterial.d.ts.map +1 -1
- package/src/shade/renderer/material/StandardShadeMaterial.js +13 -8
- package/src/shade/renderer/pool/TransientResourcePool.d.ts +24 -0
- package/src/shade/renderer/pool/TransientResourcePool.d.ts.map +1 -1
- package/src/shade/renderer/pool/TransientResourcePool.js +41 -10
- package/src/shade/renderer/scene/optimization/geometry/internal/triangle_fingerprint_stream.d.ts.map +1 -1
- package/src/shade/renderer/scene/optimization/geometry/internal/triangle_fingerprint_stream.js +14 -5
- package/src/shade/renderer/scene/optimization/sampler2d_from_image_bitmap.js +1 -1
- package/src/shade/renderer/shader/ComputeShader.d.ts.map +1 -1
- package/src/shade/renderer/shader/ComputeShader.js +18 -2
- package/src/shade/renderer/shader/ImageShader.d.ts.map +1 -1
- package/src/shade/renderer/shader/ImageShader.js +230 -218
- package/src/shade/renderer/shader/type/WGSLStructField.js +2 -2
- package/src/shade/renderer/shader/type/WebGPUArray.js +2 -2
- package/src/shade/renderer/shader/type/WebGPUStruct.d.ts.map +1 -1
- package/src/shade/renderer/shader/type/WebGPUStruct.js +9 -6
- package/src/shade/renderer/texture/ShadeTexture.d.ts.map +1 -1
- package/src/shade/renderer/texture/ShadeTexture.js +17 -10
- package/src/shade/renderer/texture/mipmaps/WebGPUMipmapGenerator.js +2 -2
- package/src/shade/renderer/water/surface/chunk_water_surface_sample.d.ts +4 -4
- package/src/shade/renderer/water/surface/chunk_water_surface_sample.js +6 -6
- package/src/shade/renderer/water/surface/particles/GPUWaterParticles.d.ts.map +1 -1
- package/src/shade/renderer/water/surface/particles/GPUWaterParticles.js +46 -55
- package/src/shade/renderer/water/surface/particles/WATER_PARTICLE_STRUCT.d.ts +3 -3
- package/src/shade/renderer/water/surface/particles/WATER_PARTICLE_STRUCT.d.ts.map +1 -1
- package/src/shade/renderer/water/surface/particles/WATER_PARTICLE_STRUCT.js +14 -4
- package/src/shade/renderer/water/surface/particles/chunk_water_particle.d.ts +10 -1
- package/src/shade/renderer/water/surface/particles/chunk_water_particle.d.ts.map +1 -1
- package/src/shade/renderer/water/surface/particles/chunk_water_particle.js +82 -40
- package/src/shade/renderer/water/surface/particles/chunk_water_particle_step.d.ts +4 -1
- package/src/shade/renderer/water/surface/particles/chunk_water_particle_step.d.ts.map +1 -1
- package/src/shade/renderer/water/surface/particles/chunk_water_particle_step.js +8 -4
- package/src/shade/renderer/water/surface/particles/shader_water_particles.d.ts +98 -86
- package/src/shade/renderer/water/surface/particles/shader_water_particles.d.ts.map +1 -1
- package/src/shade/renderer/water/surface/particles/shader_water_particles.js +440 -298
- package/src/view/common/HTMLElementCacheKey.d.ts.map +1 -1
- package/src/view/common/HTMLElementCacheKey.js +4 -3
- package/src/view/graphics/GraphicsContextFailureView.d.ts +1 -2
- package/src/view/graphics/GraphicsContextFailureView.d.ts.map +1 -1
- package/src/view/graphics/GraphicsContextFailureView.js +1 -2
- package/src/view/minimap/MinimapMarker.js +2 -2
- package/src/engine/network/transport/Channel.js +0 -336
- package/src/engine/network/transport/ReliableCommandPipeline.js +0 -335
- package/src/engine/network/transport/fragments/FragmentAssembler.js +0 -350
- package/src/engine/network/transport/fragments/FragmentRetention.js +0 -191
- package/src/engine/network/transport/fragments/fragment_send.js +0 -157
- package/src/engine/network/transport/fragments/packet_size.js +0 -107
|
@@ -11,7 +11,7 @@ export class EventDescription {
|
|
|
11
11
|
* @param {Partial<EventDescription>} [options]
|
|
12
12
|
* @returns {EventDescription}
|
|
13
13
|
*/
|
|
14
|
-
static from(label: string, rootClip: AbstractAudioClip, { busId, gainDb, is3D, panningModel, distanceMin, distanceMax, attenuation, maxInstances, priority, stealMode, virtualThresholdDb }?: Partial<EventDescription>): EventDescription;
|
|
14
|
+
static from(label: string, rootClip: AbstractAudioClip, { busId, gainDb, is3D, panningModel, distanceMin, distanceMax, attenuation, maxInstances, priority, stealMode, virtualThresholdDb, effects }?: Partial<EventDescription>): EventDescription;
|
|
15
15
|
/**
|
|
16
16
|
* Human-readable label (need not be unique).
|
|
17
17
|
* @type {string}
|
|
@@ -76,6 +76,21 @@ export class EventDescription {
|
|
|
76
76
|
* @type {number}
|
|
77
77
|
*/
|
|
78
78
|
virtualThresholdDb: number;
|
|
79
|
+
/**
|
|
80
|
+
* Insert effects every instance of this event plays through, in order — the event's own DSP, as a
|
|
81
|
+
* bus has its own ({@link BusDefinition.effects}). Each instance builds its own copy, ahead of its
|
|
82
|
+
* fader: `voices → effects[0] → … → effects[n] → instance gain → (3D chain) → bus`.
|
|
83
|
+
*
|
|
84
|
+
* Because the copy is per instance, so is its control: one play of an event can be filtered or
|
|
85
|
+
* compressed independently of every other play of it, through {@link EventInstance#setEffectParam}.
|
|
86
|
+
* Empty (the default) builds nothing.
|
|
87
|
+
*
|
|
88
|
+
* Part of {@link equals} and {@link hash}, like every authored field — so never edit an effect's fields
|
|
89
|
+
* in place on a description that is playing: the `VoiceManager` files live instances under the hash, and
|
|
90
|
+
* a moved field loses them. Move a playing effect through its instance.
|
|
91
|
+
* @type {AbstractAudioEffect[]}
|
|
92
|
+
*/
|
|
93
|
+
effects: AbstractAudioEffect[];
|
|
79
94
|
/**
|
|
80
95
|
*
|
|
81
96
|
* @param {EventDescription} other
|
|
@@ -94,6 +109,11 @@ export class EventDescription {
|
|
|
94
109
|
label: string;
|
|
95
110
|
rootClip: {
|
|
96
111
|
type: string;
|
|
112
|
+
/**
|
|
113
|
+
* The triggerable unit (FMOD EventDescription / Wwise Actor-Mixer object). Immutable authored data;
|
|
114
|
+
* playing it spawns a transient {@link EventInstance}. Held as data (e.g. by an `AudioEmitter`) and
|
|
115
|
+
* passed directly to {@link SopraEngine.playEvent} / `playOneShot`.
|
|
116
|
+
*/
|
|
97
117
|
data: any;
|
|
98
118
|
};
|
|
99
119
|
busId: string;
|
|
@@ -109,8 +129,12 @@ export class EventDescription {
|
|
|
109
129
|
priority: number;
|
|
110
130
|
stealMode: number;
|
|
111
131
|
virtualThresholdDb: number;
|
|
132
|
+
effects: {
|
|
133
|
+
type: string;
|
|
134
|
+
data: any;
|
|
135
|
+
}[];
|
|
112
136
|
};
|
|
113
|
-
fromJSON({ label, rootClip, busId, gainDb, is3D, panningModel, distanceMin, distanceMax, attenuation, maxInstances, priority, stealMode, virtualThresholdDb }: {
|
|
137
|
+
fromJSON({ label, rootClip, busId, gainDb, is3D, panningModel, distanceMin, distanceMax, attenuation, maxInstances, priority, stealMode, virtualThresholdDb, effects }: {
|
|
114
138
|
label?: string;
|
|
115
139
|
rootClip: any;
|
|
116
140
|
busId?: string;
|
|
@@ -124,12 +148,14 @@ export class EventDescription {
|
|
|
124
148
|
priority?: number;
|
|
125
149
|
stealMode?: number;
|
|
126
150
|
virtualThresholdDb?: number;
|
|
151
|
+
effects?: any[];
|
|
127
152
|
}): void;
|
|
128
153
|
}
|
|
129
154
|
export namespace EventDescription {
|
|
130
155
|
let typeName: string;
|
|
131
156
|
}
|
|
132
157
|
export type AbstractAudioClip = import("./clip/AbstractAudioClip.js").AbstractAudioClip;
|
|
158
|
+
export type AbstractAudioEffect = import("./effect/AbstractAudioEffect.js").AbstractAudioEffect;
|
|
133
159
|
import { SopraPanningModel } from "./SopraPanningModel.js";
|
|
134
160
|
import { AnimationCurve } from "../../../animation/curve/AnimationCurve.js";
|
|
135
161
|
import { VoiceStealMode } from "./VoiceStealMode.js";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"EventDescription.d.ts","sourceRoot":"","sources":["../../../../../../src/engine/sound/sopra/definition/EventDescription.js"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"EventDescription.d.ts","sourceRoot":"","sources":["../../../../../../src/engine/sound/sopra/definition/EventDescription.js"],"names":[],"mappings":"AA4BA;;;;GAIG;AACH;IA+FI;;;;;;OAMG;IACH,mBALW,MAAM,YACN,iBAAiB,iJACjB,QAAQ,gBAAgB,CAAC,GACvB,gBAAgB,CAkC5B;IApID;;;OAGG;IACH,OAFU,MAAM,CAEL;IAEX;;;OAGG;IACH,UAFU,iBAAiB,CAEO;IAElC;;;OAGG;IACH,OAFU,MAAM,CAEE;IAElB;;;OAGG;IACH,QAFU,MAAM,CAEL;IAEX;;;OAGG;IACH,MAFU,OAAO,CAEJ;IAEb;;;OAGG;IACH,cAFU,iBAAiB,GAAC,MAAM,CAEI;IAEtC;;OAEG;IACH,aAFU,MAAM,CAEA;IAEhB;;;OAGG;IACH,aAFU,MAAM,CAEI;IAEpB;;;OAGG;IACH,aAFU,cAAc,CAEW;IAEnC;;;OAGG;IACH,cAFU,MAAM,CAEE;IAElB;;;OAGG;IACH,UAFU,MAAM,CAEH;IAEb;;;OAGG;IACH,WAFU,cAAc,GAAC,MAAM,CAEG;IAElC;;;OAGG;IACH,oBAFU,MAAM,CAES;IAEzB;;;;;;;;;;;;;OAaG;IACH,SAFU,mBAAmB,EAAE,CAElB;IA2Cb;;;;OAIG;IACH,cAHW,gBAAgB,GACd,OAAO,CA4BnB;IAED;;;;;OAKG;IACH,QAFa,MAAM,CAoClB;IAED,0BAmBC;IAED;;;;YA7OJ;;;;eAIG;;;;;;;;;;;;;;;;;;;;MA0PE;IAED;;;;;;;;;;;;;;;aAsCC;CACJ;;;;gCAnTY,OAAO,6BAA6B,EAAE,iBAAiB;kCACvD,OAAO,iCAAiC,EAAE,mBAAmB;kCALxC,wBAAwB;+BAR3B,4CAA4C;+BAS5C,qBAAqB"}
|
|
@@ -1,14 +1,21 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { hash_mix2 } from "../../../../core/math/hash/hash_mix2.js";
|
|
2
|
+
import { hash_mix3 } from "../../../../core/math/hash/hash_mix3.js";
|
|
2
3
|
import { computeHashFloat } from "../../../../core/primitives/numbers/computeHashFloat.js";
|
|
3
4
|
import { computeStringHash } from "../../../../core/primitives/strings/computeStringHash.js";
|
|
4
5
|
import { AnimationCurve } from "../../../animation/curve/AnimationCurve.js";
|
|
5
|
-
import {
|
|
6
|
+
import {
|
|
7
|
+
deserializeAudioClipFromJSON,
|
|
8
|
+
deserializeAudioEffectFromJSON,
|
|
9
|
+
serializeAudioClipToJSON,
|
|
10
|
+
serializeAudioEffectToJSON
|
|
11
|
+
} from "../serialization/sopraJSON.js";
|
|
6
12
|
import { SilenceAudioClip } from "./clip/SilenceAudioClip.js";
|
|
7
13
|
import { SopraPanningModel } from "./SopraPanningModel.js";
|
|
8
14
|
import { VoiceStealMode } from "./VoiceStealMode.js";
|
|
9
15
|
|
|
10
16
|
/**
|
|
11
17
|
* @typedef {import("./clip/AbstractAudioClip.js").AbstractAudioClip} AbstractAudioClip
|
|
18
|
+
* @typedef {import("./effect/AbstractAudioEffect.js").AbstractAudioEffect} AbstractAudioEffect
|
|
12
19
|
*/
|
|
13
20
|
|
|
14
21
|
/**
|
|
@@ -103,6 +110,22 @@ export class EventDescription {
|
|
|
103
110
|
*/
|
|
104
111
|
virtualThresholdDb = -60;
|
|
105
112
|
|
|
113
|
+
/**
|
|
114
|
+
* Insert effects every instance of this event plays through, in order — the event's own DSP, as a
|
|
115
|
+
* bus has its own ({@link BusDefinition.effects}). Each instance builds its own copy, ahead of its
|
|
116
|
+
* fader: `voices → effects[0] → … → effects[n] → instance gain → (3D chain) → bus`.
|
|
117
|
+
*
|
|
118
|
+
* Because the copy is per instance, so is its control: one play of an event can be filtered or
|
|
119
|
+
* compressed independently of every other play of it, through {@link EventInstance#setEffectParam}.
|
|
120
|
+
* Empty (the default) builds nothing.
|
|
121
|
+
*
|
|
122
|
+
* Part of {@link equals} and {@link hash}, like every authored field — so never edit an effect's fields
|
|
123
|
+
* in place on a description that is playing: the `VoiceManager` files live instances under the hash, and
|
|
124
|
+
* a moved field loses them. Move a playing effect through its instance.
|
|
125
|
+
* @type {AbstractAudioEffect[]}
|
|
126
|
+
*/
|
|
127
|
+
effects = [];
|
|
128
|
+
|
|
106
129
|
/**
|
|
107
130
|
*
|
|
108
131
|
* @param {string} label
|
|
@@ -121,7 +144,8 @@ export class EventDescription {
|
|
|
121
144
|
maxInstances = 32,
|
|
122
145
|
priority = 0,
|
|
123
146
|
stealMode = VoiceStealMode.Oldest,
|
|
124
|
-
virtualThresholdDb = -60
|
|
147
|
+
virtualThresholdDb = -60,
|
|
148
|
+
effects = []
|
|
125
149
|
} = {}) {
|
|
126
150
|
const r = new EventDescription();
|
|
127
151
|
|
|
@@ -138,6 +162,7 @@ export class EventDescription {
|
|
|
138
162
|
r.priority = priority;
|
|
139
163
|
r.stealMode = stealMode;
|
|
140
164
|
r.virtualThresholdDb = virtualThresholdDb;
|
|
165
|
+
r.effects = effects;
|
|
141
166
|
|
|
142
167
|
return r;
|
|
143
168
|
}
|
|
@@ -148,6 +173,18 @@ export class EventDescription {
|
|
|
148
173
|
* @returns {boolean}
|
|
149
174
|
*/
|
|
150
175
|
equals(other) {
|
|
176
|
+
const effects = this.effects;
|
|
177
|
+
|
|
178
|
+
if (effects.length !== other.effects.length) {
|
|
179
|
+
return false;
|
|
180
|
+
}
|
|
181
|
+
|
|
182
|
+
for (let i = 0; i < effects.length; i++) {
|
|
183
|
+
if (!effects[i].equals(other.effects[i])) {
|
|
184
|
+
return false;
|
|
185
|
+
}
|
|
186
|
+
}
|
|
187
|
+
|
|
151
188
|
return this.label === other.label
|
|
152
189
|
&& this.busId === other.busId
|
|
153
190
|
&& this.gainDb === other.gainDb
|
|
@@ -170,21 +207,39 @@ export class EventDescription {
|
|
|
170
207
|
* @returns {number}
|
|
171
208
|
*/
|
|
172
209
|
hash() {
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
210
|
+
let h = hash_mix3(
|
|
211
|
+
hash_mix3(
|
|
212
|
+
hash_mix3(
|
|
213
|
+
hash_mix3(
|
|
214
|
+
hash_mix3(
|
|
215
|
+
hash_mix3(
|
|
216
|
+
computeStringHash(this.label),
|
|
217
|
+
computeStringHash(this.busId),
|
|
218
|
+
computeHashFloat(this.gainDb)
|
|
219
|
+
),
|
|
220
|
+
this.is3D ? 1 : 0,
|
|
221
|
+
this.panningModel
|
|
222
|
+
),
|
|
223
|
+
computeHashFloat(this.distanceMin),
|
|
224
|
+
computeHashFloat(this.distanceMax)
|
|
225
|
+
),
|
|
226
|
+
this.maxInstances,
|
|
227
|
+
computeHashFloat(this.priority)
|
|
228
|
+
),
|
|
229
|
+
this.stealMode,
|
|
230
|
+
computeHashFloat(this.virtualThresholdDb)
|
|
231
|
+
),
|
|
185
232
|
this.attenuation.hash(),
|
|
186
233
|
this.rootClip.hash()
|
|
187
234
|
);
|
|
235
|
+
|
|
236
|
+
const effects = this.effects;
|
|
237
|
+
|
|
238
|
+
for (let i = 0; i < effects.length; i++) {
|
|
239
|
+
h = hash_mix2(h, effects[i].hash());
|
|
240
|
+
}
|
|
241
|
+
|
|
242
|
+
return h;
|
|
188
243
|
}
|
|
189
244
|
|
|
190
245
|
clone() {
|
|
@@ -203,6 +258,7 @@ export class EventDescription {
|
|
|
203
258
|
r.priority = this.priority;
|
|
204
259
|
r.stealMode = this.stealMode;
|
|
205
260
|
r.virtualThresholdDb = this.virtualThresholdDb;
|
|
261
|
+
r.effects = this.effects.map(e => e.clone());
|
|
206
262
|
|
|
207
263
|
return r;
|
|
208
264
|
}
|
|
@@ -221,7 +277,8 @@ export class EventDescription {
|
|
|
221
277
|
maxInstances: this.maxInstances,
|
|
222
278
|
priority: this.priority,
|
|
223
279
|
stealMode: this.stealMode,
|
|
224
|
-
virtualThresholdDb: this.virtualThresholdDb
|
|
280
|
+
virtualThresholdDb: this.virtualThresholdDb,
|
|
281
|
+
effects: this.effects.map(serializeAudioEffectToJSON)
|
|
225
282
|
};
|
|
226
283
|
}
|
|
227
284
|
|
|
@@ -238,7 +295,9 @@ export class EventDescription {
|
|
|
238
295
|
maxInstances = 32,
|
|
239
296
|
priority = 0,
|
|
240
297
|
stealMode = VoiceStealMode.Oldest,
|
|
241
|
-
virtualThresholdDb = -60
|
|
298
|
+
virtualThresholdDb = -60,
|
|
299
|
+
// absent from JSON written before events carried inserts
|
|
300
|
+
effects = []
|
|
242
301
|
}) {
|
|
243
302
|
this.label = label;
|
|
244
303
|
this.rootClip = rootClip === undefined ? new SilenceAudioClip() : deserializeAudioClipFromJSON(rootClip);
|
|
@@ -260,6 +319,7 @@ export class EventDescription {
|
|
|
260
319
|
this.priority = priority;
|
|
261
320
|
this.stealMode = stealMode;
|
|
262
321
|
this.virtualThresholdDb = virtualThresholdDb;
|
|
322
|
+
this.effects = effects.map(deserializeAudioEffectFromJSON);
|
|
263
323
|
}
|
|
264
324
|
}
|
|
265
325
|
|
|
@@ -1,3 +1,13 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Format history:
|
|
3
|
+
* - 0: every field but the inserts.
|
|
4
|
+
* - 1: {@link EventDescription.effects} appended, as a count and then each effect by type
|
|
5
|
+
* (upgrade: `EventDescriptionSerializationUpgrader_0_1`).
|
|
6
|
+
*
|
|
7
|
+
* ⚠ The record is also EMBEDDED, without its own version tag, by the `AudioEmitter` and
|
|
8
|
+
* `AudioEventTrigger` component adapters, so a change here is a change to their formats too: bump them
|
|
9
|
+
* with it, and have their upgraders run the embedded record through this class's upgrader for the same step.
|
|
10
|
+
*/
|
|
1
11
|
export class EventDescriptionSerializationAdapter extends ObjectBasedClassSerializationAdapter {
|
|
2
12
|
klass: typeof EventDescription;
|
|
3
13
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"EventDescriptionSerializationAdapter.d.ts","sourceRoot":"","sources":["../../../../../../src/engine/sound/sopra/definition/EventDescriptionSerializationAdapter.js"],"names":[],"mappings":"AAOA;IACI,+BAAyB;IAGzB;;;OAGG;IACH,uCAFW,gBAAgB,
|
|
1
|
+
{"version":3,"file":"EventDescriptionSerializationAdapter.d.ts","sourceRoot":"","sources":["../../../../../../src/engine/sound/sopra/definition/EventDescriptionSerializationAdapter.js"],"names":[],"mappings":"AAOA;;;;;;;;;GASG;AACH;IACI,+BAAyB;IAGzB;;;OAGG;IACH,uCAFW,gBAAgB,QAwB1B;IAED;;;OAGG;IACH,yCAFW,gBAAgB,QAwB1B;CACJ;qDAxEoD,4EAA4E;iCAChG,uBAAuB"}
|
|
@@ -1,55 +1,77 @@
|
|
|
1
|
-
import {
|
|
2
|
-
deserialize_animation_curve,
|
|
3
|
-
serialize_animation_curve
|
|
4
|
-
} from "../../../animation/curve/animation_curve_binary_codec.js";
|
|
5
|
-
import { ObjectBasedClassSerializationAdapter } from "../../../ecs/storage/binary/object/ObjectBasedClassSerializationAdapter.js";
|
|
6
|
-
import { EventDescription } from "./EventDescription.js";
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
buffer.
|
|
30
|
-
buffer.
|
|
31
|
-
buffer.
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
value.
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
1
|
+
import {
|
|
2
|
+
deserialize_animation_curve,
|
|
3
|
+
serialize_animation_curve
|
|
4
|
+
} from "../../../animation/curve/animation_curve_binary_codec.js";
|
|
5
|
+
import { ObjectBasedClassSerializationAdapter } from "../../../ecs/storage/binary/object/ObjectBasedClassSerializationAdapter.js";
|
|
6
|
+
import { EventDescription } from "./EventDescription.js";
|
|
7
|
+
|
|
8
|
+
/**
|
|
9
|
+
* Format history:
|
|
10
|
+
* - 0: every field but the inserts.
|
|
11
|
+
* - 1: {@link EventDescription.effects} appended, as a count and then each effect by type
|
|
12
|
+
* (upgrade: `EventDescriptionSerializationUpgrader_0_1`).
|
|
13
|
+
*
|
|
14
|
+
* ⚠ The record is also EMBEDDED, without its own version tag, by the `AudioEmitter` and
|
|
15
|
+
* `AudioEventTrigger` component adapters, so a change here is a change to their formats too: bump them
|
|
16
|
+
* with it, and have their upgraders run the embedded record through this class's upgrader for the same step.
|
|
17
|
+
*/
|
|
18
|
+
export class EventDescriptionSerializationAdapter extends ObjectBasedClassSerializationAdapter {
|
|
19
|
+
klass = EventDescription;
|
|
20
|
+
version = 1;
|
|
21
|
+
|
|
22
|
+
/**
|
|
23
|
+
* @param {BinaryBuffer} buffer
|
|
24
|
+
* @param {EventDescription} value
|
|
25
|
+
*/
|
|
26
|
+
serialize(buffer, value) {
|
|
27
|
+
buffer.writeUTF8String(value.label);
|
|
28
|
+
this.objectAdapter.serialize(buffer, value.rootClip);
|
|
29
|
+
buffer.writeUTF8String(value.busId);
|
|
30
|
+
buffer.writeFloat32(value.gainDb);
|
|
31
|
+
buffer.writeUint8(value.is3D ? 1 : 0);
|
|
32
|
+
buffer.writeUint8(value.panningModel);
|
|
33
|
+
buffer.writeFloat32(value.distanceMin);
|
|
34
|
+
buffer.writeFloat32(value.distanceMax);
|
|
35
|
+
|
|
36
|
+
serialize_animation_curve(buffer, value.attenuation);
|
|
37
|
+
|
|
38
|
+
buffer.writeUintVar(value.maxInstances);
|
|
39
|
+
buffer.writeFloat32(value.priority);
|
|
40
|
+
buffer.writeUint8(value.stealMode);
|
|
41
|
+
buffer.writeFloat32(value.virtualThresholdDb);
|
|
42
|
+
|
|
43
|
+
const effects = value.effects;
|
|
44
|
+
buffer.writeUintVar(effects.length);
|
|
45
|
+
for (let i = 0; i < effects.length; i++) {
|
|
46
|
+
this.objectAdapter.serialize(buffer, effects[i]);
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
/**
|
|
51
|
+
* @param {BinaryBuffer} buffer
|
|
52
|
+
* @param {EventDescription} value
|
|
53
|
+
*/
|
|
54
|
+
deserialize(buffer, value) {
|
|
55
|
+
value.label = buffer.readUTF8String();
|
|
56
|
+
value.rootClip = this.objectAdapter.deserialize(buffer);
|
|
57
|
+
value.busId = buffer.readUTF8String();
|
|
58
|
+
value.gainDb = buffer.readFloat32();
|
|
59
|
+
value.is3D = buffer.readUint8() !== 0;
|
|
60
|
+
value.panningModel = buffer.readUint8();
|
|
61
|
+
value.distanceMin = buffer.readFloat32();
|
|
62
|
+
value.distanceMax = buffer.readFloat32();
|
|
63
|
+
|
|
64
|
+
value.attenuation = deserialize_animation_curve(buffer);
|
|
65
|
+
|
|
66
|
+
value.maxInstances = buffer.readUintVar();
|
|
67
|
+
value.priority = buffer.readFloat32();
|
|
68
|
+
value.stealMode = buffer.readUint8();
|
|
69
|
+
value.virtualThresholdDb = buffer.readFloat32();
|
|
70
|
+
|
|
71
|
+
const effectCount = buffer.readUintVar();
|
|
72
|
+
value.effects = [];
|
|
73
|
+
for (let i = 0; i < effectCount; i++) {
|
|
74
|
+
value.effects.push(this.objectAdapter.deserialize(buffer));
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @typedef {import("../../../ecs/storage/binary/BinarySerializationRegistry.js").BinarySerializationRegistry} BinarySerializationRegistry
|
|
3
|
+
*/
|
|
4
|
+
/**
|
|
5
|
+
* Version 0 → 1: an event gains its insert effects (`EventDescription.effects`), written after every other
|
|
6
|
+
* field. A version-0 record had none, so it upgrades to itself followed by an empty list.
|
|
7
|
+
*
|
|
8
|
+
* Field by field, as every upgrader must: `source` and `target` need not share an encoding (the dataset
|
|
9
|
+
* stream dictionary-encodes its strings, the upgrade buffers do not), so bytes are never copied raw. The
|
|
10
|
+
* version-0 layout is frozen here rather than borrowed from the current adapter, so a later format change
|
|
11
|
+
* cannot alter what this step produces.
|
|
12
|
+
*
|
|
13
|
+
* The one field that is not a flat value is the root clip, a polymorphic tree whose length is not known
|
|
14
|
+
* until it is read. It is read through the object adapter (which upgrades it, if it was saved at an older
|
|
15
|
+
* clip format) and written back at its current format under its own type-and-version header — clip formats
|
|
16
|
+
* are versioned by that header, independently of this record's.
|
|
17
|
+
*
|
|
18
|
+
* Also the upgrade of the record wherever a component EMBEDS it untagged (`AudioEmitter`,
|
|
19
|
+
* `AudioEventTrigger`): their upgraders hand the embedded span to {@link upgrade}, which consumes exactly
|
|
20
|
+
* one record from `source`.
|
|
21
|
+
*/
|
|
22
|
+
export class EventDescriptionSerializationUpgrader_0_1 extends BinaryClassUpgrader {
|
|
23
|
+
/**
|
|
24
|
+
* @param {BinarySerializationRegistry} registry where the event's clip types are registered
|
|
25
|
+
*/
|
|
26
|
+
constructor(registry: BinarySerializationRegistry);
|
|
27
|
+
#private;
|
|
28
|
+
}
|
|
29
|
+
export type BinarySerializationRegistry = import("../../../ecs/storage/binary/BinarySerializationRegistry.js").BinarySerializationRegistry;
|
|
30
|
+
import { BinaryClassUpgrader } from "../../../ecs/storage/binary/BinaryClassUpgrader.js";
|
|
31
|
+
//# sourceMappingURL=EventDescriptionSerializationUpgrader_0_1.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"EventDescriptionSerializationUpgrader_0_1.d.ts","sourceRoot":"","sources":["../../../../../../src/engine/sound/sopra/definition/EventDescriptionSerializationUpgrader_0_1.js"],"names":[],"mappings":"AAIA;;GAEG;AAEH;;;;;;;;;;;;;;;;;GAiBG;AACH;IASI;;OAEG;IACH,sBAFW,2BAA2B,EAMrC;;CAgCJ;0CArEY,OAAO,4DAA4D,EAAE,2BAA2B;oCAJzE,oDAAoD"}
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
import { BinaryBuffer } from "../../../../core/binary/BinaryBuffer.js";
|
|
2
|
+
import { BinaryClassUpgrader } from "../../../ecs/storage/binary/BinaryClassUpgrader.js";
|
|
3
|
+
import { BinaryObjectSerializationAdapter } from "../../../ecs/storage/binary/object/BinaryObjectSerializationAdapter.js";
|
|
4
|
+
|
|
5
|
+
/**
|
|
6
|
+
* @typedef {import("../../../ecs/storage/binary/BinarySerializationRegistry.js").BinarySerializationRegistry} BinarySerializationRegistry
|
|
7
|
+
*/
|
|
8
|
+
|
|
9
|
+
/**
|
|
10
|
+
* Version 0 → 1: an event gains its insert effects (`EventDescription.effects`), written after every other
|
|
11
|
+
* field. A version-0 record had none, so it upgrades to itself followed by an empty list.
|
|
12
|
+
*
|
|
13
|
+
* Field by field, as every upgrader must: `source` and `target` need not share an encoding (the dataset
|
|
14
|
+
* stream dictionary-encodes its strings, the upgrade buffers do not), so bytes are never copied raw. The
|
|
15
|
+
* version-0 layout is frozen here rather than borrowed from the current adapter, so a later format change
|
|
16
|
+
* cannot alter what this step produces.
|
|
17
|
+
*
|
|
18
|
+
* The one field that is not a flat value is the root clip, a polymorphic tree whose length is not known
|
|
19
|
+
* until it is read. It is read through the object adapter (which upgrades it, if it was saved at an older
|
|
20
|
+
* clip format) and written back at its current format under its own type-and-version header — clip formats
|
|
21
|
+
* are versioned by that header, independently of this record's.
|
|
22
|
+
*
|
|
23
|
+
* Also the upgrade of the record wherever a component EMBEDS it untagged (`AudioEmitter`,
|
|
24
|
+
* `AudioEventTrigger`): their upgraders hand the embedded span to {@link upgrade}, which consumes exactly
|
|
25
|
+
* one record from `source`.
|
|
26
|
+
*/
|
|
27
|
+
export class EventDescriptionSerializationUpgrader_0_1 extends BinaryClassUpgrader {
|
|
28
|
+
__startVersion = 0;
|
|
29
|
+
__targetVersion = 1;
|
|
30
|
+
|
|
31
|
+
/**
|
|
32
|
+
* @type {BinaryObjectSerializationAdapter}
|
|
33
|
+
*/
|
|
34
|
+
#objects = new BinaryObjectSerializationAdapter();
|
|
35
|
+
|
|
36
|
+
/**
|
|
37
|
+
* @param {BinarySerializationRegistry} registry where the event's clip types are registered
|
|
38
|
+
*/
|
|
39
|
+
constructor(registry) {
|
|
40
|
+
super();
|
|
41
|
+
|
|
42
|
+
this.#objects.initialize(registry);
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
/**
|
|
46
|
+
* @param {BinaryBuffer} source
|
|
47
|
+
* @param {BinaryBuffer} target
|
|
48
|
+
*/
|
|
49
|
+
upgrade(source, target) {
|
|
50
|
+
BinaryBuffer.copyUTF8String(source, target); // label
|
|
51
|
+
|
|
52
|
+
this.#objects.serialize(target, this.#objects.deserialize(source)); // rootClip
|
|
53
|
+
|
|
54
|
+
BinaryBuffer.copyUTF8String(source, target); // busId
|
|
55
|
+
BinaryBuffer.copyFloat32(source, target); // gainDb
|
|
56
|
+
BinaryBuffer.copyUint8(source, target); // is3D
|
|
57
|
+
BinaryBuffer.copyUint8(source, target); // panningModel
|
|
58
|
+
BinaryBuffer.copyFloat32(source, target); // distanceMin
|
|
59
|
+
BinaryBuffer.copyFloat32(source, target); // distanceMax
|
|
60
|
+
|
|
61
|
+
// attenuation: key count, then time / value / inTangent / outTangent per key
|
|
62
|
+
const keyCount = BinaryBuffer.copyUintVar(source, target);
|
|
63
|
+
for (let i = 0; i < keyCount * 4; i++) {
|
|
64
|
+
BinaryBuffer.copyFloat32(source, target);
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
BinaryBuffer.copyUintVar(source, target); // maxInstances
|
|
68
|
+
BinaryBuffer.copyFloat32(source, target); // priority
|
|
69
|
+
BinaryBuffer.copyUint8(source, target); // stealMode
|
|
70
|
+
BinaryBuffer.copyFloat32(source, target); // virtualThresholdDb
|
|
71
|
+
|
|
72
|
+
// new in 1: no inserts
|
|
73
|
+
target.writeUintVar(0);
|
|
74
|
+
}
|
|
75
|
+
}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { hash_mix3 } from "../../../../core/math/hash/hash_mix3.js";
|
|
2
2
|
import { computeHashFloat } from "../../../../core/primitives/numbers/computeHashFloat.js";
|
|
3
3
|
import { computeStringHash } from "../../../../core/primitives/strings/computeStringHash.js";
|
|
4
4
|
|
|
@@ -57,7 +57,7 @@ export class MixerSnapshot {
|
|
|
57
57
|
let h = computeStringHash(this.id);
|
|
58
58
|
|
|
59
59
|
for (let i = 0; i < this.buses.length; i++) {
|
|
60
|
-
h =
|
|
60
|
+
h = hash_mix3(h, computeStringHash(this.buses[i].busId), computeHashFloat(this.buses[i].gainDb));
|
|
61
61
|
}
|
|
62
62
|
|
|
63
63
|
return h;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ParameterDefinition.d.ts","sourceRoot":"","sources":["../../../../../../src/engine/sound/sopra/definition/ParameterDefinition.js"],"names":[],"mappings":";;;6BAMU,MAAM;;;;;AAOhB;;;GAGG;AACH;IA2BI;;;;;OAKG;IACH,kBAJW,MAAM,sCACN;QAAC,GAAG,CAAC,EAAC,MAAM,CAAC;QAAC,GAAG,CAAC,EAAC,MAAM,CAAC;QAAC,YAAY,CAAC,EAAC,MAAM,CAAC;QAAC,KAAK,CAAC,EAAC,cAAc,GAAC,MAAM,CAAA;KAAC,GAC5E,mBAAmB,CAY/B;IAzCD;;OAEG;IACH,MAFU,MAAM,CAEN;IAEV;;OAEG;IACH,KAFU,MAAM,CAER;IAER;;OAEG;IACH,KAFU,MAAM,CAER;IAER;;OAEG;IACH,cAFU,MAAM,CAEC;IAEjB;;OAEG;IACH,OAFU,cAAc,GAAC,MAAM,CAED;IAoB9B;;;;OAIG;IACH,cAHW,mBAAmB,GACjB,OAAO,CAQnB;IAED,
|
|
1
|
+
{"version":3,"file":"ParameterDefinition.d.ts","sourceRoot":"","sources":["../../../../../../src/engine/sound/sopra/definition/ParameterDefinition.js"],"names":[],"mappings":";;;6BAMU,MAAM;;;;;AAOhB;;;GAGG;AACH;IA2BI;;;;;OAKG;IACH,kBAJW,MAAM,sCACN;QAAC,GAAG,CAAC,EAAC,MAAM,CAAC;QAAC,GAAG,CAAC,EAAC,MAAM,CAAC;QAAC,YAAY,CAAC,EAAC,MAAM,CAAC;QAAC,KAAK,CAAC,EAAC,cAAc,GAAC,MAAM,CAAA;KAAC,GAC5E,mBAAmB,CAY/B;IAzCD;;OAEG;IACH,MAFU,MAAM,CAEN;IAEV;;OAEG;IACH,KAFU,MAAM,CAER;IAER;;OAEG;IACH,KAFU,MAAM,CAER;IAER;;OAEG;IACH,cAFU,MAAM,CAEC;IAEjB;;OAEG;IACH,OAFU,cAAc,GAAC,MAAM,CAED;IAoB9B;;;;OAIG;IACH,cAHW,mBAAmB,GACjB,OAAO,CAQnB;IAED,eAUC;IAED,6BAUC;IAED;;;;;;MAQC;IAED;;;;;;aAMC;CACJ"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { hash_mix3 } from "../../../../core/math/hash/hash_mix3.js";
|
|
2
2
|
import { computeHashFloat } from "../../../../core/primitives/numbers/computeHashFloat.js";
|
|
3
3
|
import { computeStringHash } from "../../../../core/primitives/strings/computeStringHash.js";
|
|
4
4
|
|
|
@@ -74,10 +74,12 @@ export class ParameterDefinition {
|
|
|
74
74
|
}
|
|
75
75
|
|
|
76
76
|
hash() {
|
|
77
|
-
return
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
77
|
+
return hash_mix3(
|
|
78
|
+
hash_mix3(
|
|
79
|
+
computeStringHash(this.name),
|
|
80
|
+
computeHashFloat(this.min),
|
|
81
|
+
computeHashFloat(this.max)
|
|
82
|
+
),
|
|
81
83
|
computeHashFloat(this.defaultValue),
|
|
82
84
|
this.scope
|
|
83
85
|
);
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { hash_mix2 } from "../../../../../core/math/hash/hash_mix2.js";
|
|
2
2
|
import { computeHashFloat } from "../../../../../core/primitives/numbers/computeHashFloat.js";
|
|
3
3
|
|
|
4
4
|
/**
|
|
@@ -57,7 +57,7 @@ export class AbstractAudioClip {
|
|
|
57
57
|
* @returns {number}
|
|
58
58
|
*/
|
|
59
59
|
hash() {
|
|
60
|
-
return
|
|
60
|
+
return hash_mix2(
|
|
61
61
|
computeHashFloat(this.gain),
|
|
62
62
|
computeHashFloat(this.pitch)
|
|
63
63
|
);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BlendContainerAudioClip.d.ts","sourceRoot":"","sources":["../../../../../../../src/engine/sound/sopra/definition/clip/BlendContainerAudioClip.js"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"BlendContainerAudioClip.d.ts","sourceRoot":"","sources":["../../../../../../../src/engine/sound/sopra/definition/clip/BlendContainerAudioClip.js"],"names":[],"mappings":"AASA;;;;;;;;GAQG;AACH;IAqBI;;;;OAIG;IACH,uBAJW,mBAAmB,wCACnB;QAAC,SAAS,CAAC,EAAC,MAAM,CAAC;QAAC,YAAY,CAAC,EAAC,MAAM,CAAC;QAAC,MAAM,CAAC,EAAC,cAAc,EAAE,CAAA;KAAC,GACjE,uBAAuB,CAWnC;IAjCD;;;OAGG;IACH,WAFU,MAAM,CAED;IAEf;;;OAGG;IACH,cAFU,MAAM,CAEC;IAEjB;;;;OAIG;IACH,QAFU,cAAc,EAAE,CAEd;IAkCZ;;;;;;;;;MA+BC;IAED;;;OAGG;IACH,cAHW,uBAAuB,GACrB,OAAO,CAkBnB;IAqBD,iCAaC;IAED;;;;;;;;;;;;MASC;IAED;;;;;;;aAWC;;CACJ;;;;mCAjLkC,yBAAyB;+BAF7B,+CAA+C"}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { hash_mix2 } from "../../../../../core/math/hash/hash_mix2.js";
|
|
2
|
+
import { hash_mix3 } from "../../../../../core/math/hash/hash_mix3.js";
|
|
2
3
|
import { computeHashFloat } from "../../../../../core/primitives/numbers/computeHashFloat.js";
|
|
3
4
|
import { computeStringHash } from "../../../../../core/primitives/strings/computeStringHash.js";
|
|
4
5
|
import { AnimationCurve } from "../../../../animation/curve/AnimationCurve.js";
|
|
@@ -127,7 +128,7 @@ export class BlendContainerAudioClip extends ContainerAudioClip {
|
|
|
127
128
|
// super.hash() already folds gain/pitch + children; only this class's own fields go on top.
|
|
128
129
|
// `blends` MUST be folded here — `equals` compares the curves element-wise, so leaving them out
|
|
129
130
|
// made two containers differing only in their blend curves compare unequal yet hash identically.
|
|
130
|
-
let h =
|
|
131
|
+
let h = hash_mix3(
|
|
131
132
|
super.hash(),
|
|
132
133
|
computeStringHash(this.parameter),
|
|
133
134
|
computeHashFloat(this.defaultValue)
|
|
@@ -136,7 +137,7 @@ export class BlendContainerAudioClip extends ContainerAudioClip {
|
|
|
136
137
|
const blends = this.blends;
|
|
137
138
|
|
|
138
139
|
for (let i = 0; i < blends.length; i++) {
|
|
139
|
-
h =
|
|
140
|
+
h = hash_mix2(h, blends[i].hash());
|
|
140
141
|
}
|
|
141
142
|
|
|
142
143
|
return h;
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { assert } from "../../../../../core/assert.js";
|
|
2
|
-
import {
|
|
2
|
+
import { hash_mix2 } from "../../../../../core/math/hash/hash_mix2.js";
|
|
3
3
|
import { AbstractAudioClip } from "./AbstractAudioClip.js";
|
|
4
4
|
|
|
5
5
|
/**
|
|
@@ -120,7 +120,7 @@ export class ContainerAudioClip extends AbstractAudioClip {
|
|
|
120
120
|
const children = this.children;
|
|
121
121
|
|
|
122
122
|
for (let i = 0; i < children.length; i++) {
|
|
123
|
-
h =
|
|
123
|
+
h = hash_mix2(h, children[i].hash());
|
|
124
124
|
}
|
|
125
125
|
|
|
126
126
|
return h;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { hash_mix2 } from "../../../../../core/math/hash/hash_mix2.js";
|
|
2
2
|
import { weightedRandomFromArray } from "../../../../../core/collection/array/weightedRandomFromArray.js";
|
|
3
3
|
import { computeHashFloat } from "../../../../../core/primitives/numbers/computeHashFloat.js";
|
|
4
4
|
import { ContainerAudioClip } from "./ContainerAudioClip.js";
|
|
@@ -126,11 +126,11 @@ export class RandomContainerAudioClip extends ContainerAudioClip {
|
|
|
126
126
|
|
|
127
127
|
hash() {
|
|
128
128
|
// super.hash() already folds gain/pitch + children; only this class's own fields go on top
|
|
129
|
-
let h =
|
|
129
|
+
let h = hash_mix2(super.hash(), this.avoid_repeating_last);
|
|
130
130
|
|
|
131
131
|
const weights = this.weights;
|
|
132
132
|
for (let i = 0; i < weights.length; i++) {
|
|
133
|
-
h =
|
|
133
|
+
h = hash_mix2(h, computeHashFloat(weights[i]));
|
|
134
134
|
}
|
|
135
135
|
|
|
136
136
|
return h;
|