@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.
Files changed (435) hide show
  1. package/build/bundle-worker-terrain.js +1 -1
  2. package/editor/actions/concrete/TransformModifyAction.d.ts.map +1 -1
  3. package/editor/actions/concrete/TransformModifyAction.js +10 -2
  4. package/editor/ecs/component/FieldDescriptor.js +15 -0
  5. package/editor/ecs/component/createObjectEditor.js +41 -12
  6. package/editor/ecs/component/editors/ecs/Transform64Editor.d.ts.map +1 -1
  7. package/editor/ecs/component/editors/ecs/Transform64Editor.js +77 -70
  8. package/editor/tools/TransformToolV2.d.ts.map +1 -1
  9. package/editor/tools/TransformToolV2.js +4 -0
  10. package/editor/tools/v2/TransformControls.d.ts.map +1 -1
  11. package/editor/tools/v2/TransformControls.js +7 -0
  12. package/editor/view/ecs/EntityEditor.d.ts.map +1 -1
  13. package/editor/view/ecs/EntityEditor.js +4 -2
  14. package/package.json +1 -1
  15. package/src/core/assert.d.ts.map +1 -1
  16. package/src/core/assert.js +5 -1
  17. package/src/core/binary/hash/XXH128Hash.d.ts +1 -37
  18. package/src/core/binary/hash/XXH128Hash.d.ts.map +1 -1
  19. package/src/core/binary/hash/XXH128Hash.js +4 -55
  20. package/src/core/binary/hash/XXH3_SECRET.d.ts +1 -12
  21. package/src/core/binary/hash/XXH3_SECRET.d.ts.map +1 -1
  22. package/src/core/binary/hash/XXH3_SECRET.js +4 -25
  23. package/src/core/binary/hash/crc32.d.ts +1 -15
  24. package/src/core/binary/hash/crc32.d.ts.map +1 -1
  25. package/src/core/binary/hash/crc32.js +4 -96
  26. package/src/core/binary/hash/xxh3_128.d.ts +1 -9
  27. package/src/core/binary/hash/xxh3_128.d.ts.map +1 -1
  28. package/src/core/binary/hash/xxh3_128.js +4 -341
  29. package/src/core/binary/hash/xxh3_64.d.ts +1 -8
  30. package/src/core/binary/hash/xxh3_64.d.ts.map +1 -1
  31. package/src/core/binary/hash/xxh3_64.js +4 -241
  32. package/src/core/binary/hash/xxh3_common.d.ts +1 -223
  33. package/src/core/binary/hash/xxh3_common.d.ts.map +1 -1
  34. package/src/core/binary/hash/xxh3_common.js +90 -476
  35. package/src/core/collection/array/array_insert_at.d.ts +16 -0
  36. package/src/core/collection/array/array_insert_at.d.ts.map +1 -0
  37. package/src/core/collection/array/array_insert_at.js +32 -0
  38. package/src/core/collection/array/array_remove_at.d.ts +15 -0
  39. package/src/core/collection/array/array_remove_at.d.ts.map +1 -0
  40. package/src/core/collection/array/array_remove_at.js +30 -0
  41. package/src/core/collection/array/combine_hash.d.ts +6 -0
  42. package/src/core/collection/array/combine_hash.d.ts.map +1 -1
  43. package/src/core/collection/array/combine_hash.js +6 -0
  44. package/src/core/function/FunctionCompiler.js +2 -2
  45. package/src/core/geom/3d/mat4/m4_multiply.d.ts +3 -0
  46. package/src/core/geom/3d/mat4/m4_multiply.d.ts.map +1 -1
  47. package/src/core/geom/3d/mat4/m4_multiply.js +3 -0
  48. package/src/core/geom/3d/mat4/m4_multiply_f64.d.ts +30 -0
  49. package/src/core/geom/3d/mat4/m4_multiply_f64.d.ts.map +1 -0
  50. package/src/core/geom/3d/mat4/m4_multiply_f64.js +106 -0
  51. package/src/core/geom/3d/quaternion/quat3_look_rotation.d.ts +37 -0
  52. package/src/core/geom/3d/quaternion/quat3_look_rotation.d.ts.map +1 -0
  53. package/src/core/geom/3d/quaternion/quat3_look_rotation.js +172 -0
  54. package/src/core/geom/ConicRay.js +2 -2
  55. package/src/core/geom/Quaternion.d.ts +1 -0
  56. package/src/core/geom/Quaternion.d.ts.map +1 -1
  57. package/src/core/geom/Quaternion.js +12 -48
  58. package/src/core/geom/Vector4.d.ts.map +1 -1
  59. package/src/core/geom/Vector4.js +8 -5
  60. package/src/core/math/hash/XXH128Hash.d.ts +38 -0
  61. package/src/core/math/hash/XXH128Hash.d.ts.map +1 -0
  62. package/src/core/math/hash/XXH128Hash.js +55 -0
  63. package/src/core/math/hash/XXH3_SECRET.d.ts +13 -0
  64. package/src/core/math/hash/XXH3_SECRET.d.ts.map +1 -0
  65. package/src/core/math/hash/XXH3_SECRET.js +25 -0
  66. package/src/core/math/hash/crc32.d.ts +16 -0
  67. package/src/core/math/hash/crc32.d.ts.map +1 -0
  68. package/src/core/math/hash/crc32.js +96 -0
  69. package/src/core/math/hash/xxh3_128.d.ts +10 -0
  70. package/src/core/math/hash/xxh3_128.d.ts.map +1 -0
  71. package/src/core/math/hash/xxh3_128.js +341 -0
  72. package/src/core/math/hash/xxh3_64.d.ts +9 -0
  73. package/src/core/math/hash/xxh3_64.d.ts.map +1 -0
  74. package/src/core/math/hash/xxh3_64.js +241 -0
  75. package/src/core/math/hash/xxh3_common.d.ts +224 -0
  76. package/src/core/math/hash/xxh3_common.d.ts.map +1 -0
  77. package/src/core/math/hash/xxh3_common.js +476 -0
  78. package/src/core/math/lookup/ParameterLookupTable.js +2 -2
  79. package/src/core/model/node-graph/node/NodeInstancePortReference.js +2 -2
  80. package/src/core/model/reactive/model/ReactiveBinaryExpression.js +2 -2
  81. package/src/core/model/reactive/model/terminal/ReactiveReference.js +2 -2
  82. package/src/engine/Engine.d.ts.map +1 -1
  83. package/src/engine/Engine.js +9 -4
  84. package/src/engine/asset/AssetDescription.js +2 -2
  85. package/src/engine/ecs/animation/Animation.js +2 -2
  86. package/src/engine/ecs/animation/AnimationClip.d.ts.map +1 -1
  87. package/src/engine/ecs/animation/AnimationClip.js +7 -5
  88. package/src/engine/ecs/gui/GUIElement.d.ts.map +1 -1
  89. package/src/engine/ecs/gui/GUIElement.js +7 -5
  90. package/src/engine/ecs/gui/hud/HeadsUpDisplay.js +2 -2
  91. package/src/engine/ecs/gui/position/ViewportPosition.d.ts.map +1 -1
  92. package/src/engine/ecs/gui/position/ViewportPosition.js +11 -7
  93. package/src/engine/ecs/storage/populateEngineSerializationRegistry.d.ts.map +1 -1
  94. package/src/engine/ecs/storage/populateEngineSerializationRegistry.js +10 -0
  95. package/src/engine/ecs/transform/Transform64.d.ts +1 -1
  96. package/src/engine/ecs/transform/Transform64.d.ts.map +1 -1
  97. package/src/engine/ecs/transform/Transform64.js +5 -4
  98. package/src/engine/ecs/transform/t64_look_rotation.d.ts +4 -4
  99. package/src/engine/ecs/transform/t64_look_rotation.d.ts.map +1 -1
  100. package/src/engine/ecs/transform/t64_look_rotation.js +7 -18
  101. package/src/engine/graphics/ecs/animation/animator/AnimationClip.d.ts.map +1 -1
  102. package/src/engine/graphics/ecs/animation/animator/AnimationClip.js +8 -5
  103. package/src/engine/graphics/ecs/animation/animator/AnimationClipDefinition.js +2 -2
  104. package/src/engine/graphics/ecs/animation/animator/AnimationNotification.js +2 -2
  105. package/src/engine/graphics/ecs/animation/animator/AnimationNotificationDefinition.js +2 -2
  106. package/src/engine/graphics/ecs/animation/animator/graph/definition/AnimationGraphDefinition.js +2 -2
  107. package/src/engine/graphics/ecs/animation/animator/graph/definition/AnimationStateDefinition.js +2 -2
  108. package/src/engine/graphics/ecs/animation/animator/graph/definition/AnimationTransitionDefinition.d.ts.map +1 -1
  109. package/src/engine/graphics/ecs/animation/animator/graph/definition/AnimationTransitionDefinition.js +8 -5
  110. package/src/engine/graphics/ecs/camera/topdown/TopDownCameraControllerSystem.d.ts.map +1 -1
  111. package/src/engine/graphics/ecs/camera/topdown/TopDownCameraControllerSystem.js +30 -1
  112. package/src/engine/graphics/ecs/decal/v2/Decal.d.ts.map +1 -1
  113. package/src/engine/graphics/ecs/decal/v2/Decal.js +9 -8
  114. package/src/engine/graphics/render/frame_graph/resource/TextureResourceDescriptor.d.ts.map +1 -1
  115. package/src/engine/graphics/render/frame_graph/resource/TextureResourceDescriptor.js +9 -6
  116. package/src/engine/graphics3/GPUParticleEmitterSystem.d.ts +6 -0
  117. package/src/engine/graphics3/GPUParticleEmitterSystem.d.ts.map +1 -1
  118. package/src/engine/graphics3/GPUParticleEmitterSystem.js +72 -29
  119. package/src/engine/graphics3/ParticipatingMedia.js +204 -204
  120. package/src/engine/graphics3/animation/AnimationClips.d.ts +5 -0
  121. package/src/engine/graphics3/animation/AnimationClips.d.ts.map +1 -1
  122. package/src/engine/graphics3/animation/AnimationClips.js +5 -0
  123. package/src/engine/grid/obstacle/GridObstacle.js +2 -2
  124. package/src/engine/input/devices/KeyboardDevice.d.ts +1 -0
  125. package/src/engine/input/devices/KeyboardDevice.d.ts.map +1 -1
  126. package/src/engine/input/devices/KeyboardDevice.js +7 -6
  127. package/src/engine/intelligence/behavior/selector/WeightedElement.js +2 -2
  128. package/src/engine/interpolation/Interpolated.js +2 -2
  129. package/src/engine/navigation/ecs/path_following/PathFollowingSystem.d.ts.map +1 -1
  130. package/src/engine/navigation/ecs/path_following/PathFollowingSystem.js +15 -2
  131. package/src/engine/network/CONGESTION_CONTROL.md +9 -9
  132. package/src/engine/network/MESSAGE_TRANSPORT.md +364 -0
  133. package/src/engine/network/NetworkSession.d.ts +31 -11
  134. package/src/engine/network/NetworkSession.d.ts.map +1 -1
  135. package/src/engine/network/NetworkSession.js +453 -286
  136. package/src/engine/network/README.md +77 -27
  137. package/src/engine/network/SMOOTHNESS_DESIGN.md +13 -5
  138. package/src/engine/network/diagnostics/BandwidthMeter.d.ts +1 -1
  139. package/src/engine/network/diagnostics/BandwidthMeter.js +1 -1
  140. package/src/engine/network/orchestrator/HostJoin.d.ts +111 -0
  141. package/src/engine/network/orchestrator/HostJoin.d.ts.map +1 -0
  142. package/src/engine/network/orchestrator/HostJoin.js +271 -0
  143. package/src/engine/network/orchestrator/NetworkPeer.d.ts +151 -112
  144. package/src/engine/network/orchestrator/NetworkPeer.d.ts.map +1 -1
  145. package/src/engine/network/orchestrator/NetworkPeer.js +450 -499
  146. package/src/engine/network/orchestrator/PendingSlices.d.ts +30 -0
  147. package/src/engine/network/orchestrator/PendingSlices.d.ts.map +1 -0
  148. package/src/engine/network/orchestrator/PendingSlices.js +83 -0
  149. package/src/engine/network/orchestrator/ReliableFrames.d.ts +34 -0
  150. package/src/engine/network/orchestrator/ReliableFrames.d.ts.map +1 -0
  151. package/src/engine/network/orchestrator/ReliableFrames.js +96 -0
  152. package/src/engine/network/orchestrator/ServerAuthoritativeClient.d.ts +77 -10
  153. package/src/engine/network/orchestrator/ServerAuthoritativeClient.d.ts.map +1 -1
  154. package/src/engine/network/orchestrator/ServerAuthoritativeClient.js +236 -61
  155. package/src/engine/network/orchestrator/ServerAuthoritativeServer.d.ts +20 -6
  156. package/src/engine/network/orchestrator/ServerAuthoritativeServer.d.ts.map +1 -1
  157. package/src/engine/network/orchestrator/ServerAuthoritativeServer.js +33 -8
  158. package/src/engine/network/replication/Replicator.d.ts.map +1 -1
  159. package/src/engine/network/replication/Replicator.js +7 -1
  160. package/src/engine/network/sim/ActionLog.d.ts +32 -5
  161. package/src/engine/network/sim/ActionLog.d.ts.map +1 -1
  162. package/src/engine/network/sim/ActionLog.js +47 -5
  163. package/src/engine/network/sim/SimActionExecutor.d.ts +42 -2
  164. package/src/engine/network/sim/SimActionExecutor.d.ts.map +1 -1
  165. package/src/engine/network/sim/SimActionExecutor.js +100 -4
  166. package/src/engine/network/sim/Snapshotter.d.ts +12 -0
  167. package/src/engine/network/sim/Snapshotter.d.ts.map +1 -1
  168. package/src/engine/network/sim/Snapshotter.js +43 -0
  169. package/src/engine/network/state/Baseline.d.ts +1 -1
  170. package/src/engine/network/state/Baseline.js +1 -1
  171. package/src/engine/network/state/FrameBufferRing.d.ts +25 -6
  172. package/src/engine/network/state/FrameBufferRing.d.ts.map +1 -1
  173. package/src/engine/network/state/FrameBufferRing.js +51 -6
  174. package/src/engine/network/state/InputRing.d.ts +4 -0
  175. package/src/engine/network/state/InputRing.d.ts.map +1 -1
  176. package/src/engine/network/state/InputRing.js +7 -0
  177. package/src/engine/network/transport/DeferredTransport.d.ts.map +1 -1
  178. package/src/engine/network/transport/DeferredTransport.js +1 -0
  179. package/src/engine/network/transport/LoopbackTransport.d.ts.map +1 -1
  180. package/src/engine/network/transport/LoopbackTransport.js +4 -2
  181. package/src/engine/network/transport/Transport.d.ts +7 -0
  182. package/src/engine/network/transport/Transport.d.ts.map +1 -1
  183. package/src/engine/network/transport/Transport.js +8 -0
  184. package/src/engine/network/transport/adapters/NodeUDPTransport.d.ts.map +1 -1
  185. package/src/engine/network/transport/adapters/NodeUDPTransport.js +20 -5
  186. package/src/engine/network/transport/adapters/WebRTCDataChannelTransport.d.ts.map +1 -1
  187. package/src/engine/network/transport/adapters/WebRTCDataChannelTransport.js +8 -0
  188. package/src/engine/network/transport/adapters/WebTransportTransport.d.ts.map +1 -1
  189. package/src/engine/network/transport/adapters/WebTransportTransport.js +6 -0
  190. package/src/engine/network/transport/connection/Connection.d.ts +191 -0
  191. package/src/engine/network/transport/connection/Connection.d.ts.map +1 -0
  192. package/src/engine/network/transport/connection/Connection.js +1262 -0
  193. package/src/engine/network/transport/connection/RangeSet.d.ts +94 -0
  194. package/src/engine/network/transport/connection/RangeSet.d.ts.map +1 -0
  195. package/src/engine/network/transport/connection/RangeSet.js +260 -0
  196. package/src/engine/network/transport/connection/RxStream.d.ts +48 -0
  197. package/src/engine/network/transport/connection/RxStream.d.ts.map +1 -0
  198. package/src/engine/network/transport/connection/RxStream.js +211 -0
  199. package/src/engine/network/transport/connection/TxStream.d.ts +90 -0
  200. package/src/engine/network/transport/connection/TxStream.d.ts.map +1 -0
  201. package/src/engine/network/transport/connection/TxStream.js +243 -0
  202. package/src/engine/network/transport/connection/bytes_copy.d.ts +17 -0
  203. package/src/engine/network/transport/connection/bytes_copy.d.ts.map +1 -0
  204. package/src/engine/network/transport/connection/bytes_copy.js +34 -0
  205. package/src/engine/network/transport/connection/varint.d.ts +46 -0
  206. package/src/engine/network/transport/connection/varint.d.ts.map +1 -0
  207. package/src/engine/network/transport/connection/varint.js +107 -0
  208. package/src/engine/physics/cloth/ecs/Cloth.d.ts.map +1 -1
  209. package/src/engine/physics/cloth/ecs/Cloth.js +7 -5
  210. package/src/engine/physics/cloth/ecs/ClothCollider.d.ts.map +1 -1
  211. package/src/engine/physics/cloth/ecs/ClothCollider.js +7 -5
  212. package/src/engine/physics/cloth/ecs/ClothDynamics.d.ts.map +1 -1
  213. package/src/engine/physics/cloth/ecs/ClothDynamics.js +20 -11
  214. package/src/engine/physics/fluid/FluidField.d.ts.map +1 -1
  215. package/src/engine/physics/fluid/FluidField.js +7 -5
  216. package/src/engine/physics/fluid/ecs/FluidComponent.d.ts.map +1 -1
  217. package/src/engine/physics/fluid/ecs/FluidComponent.js +19 -11
  218. package/src/engine/physics/fluid/ecs/FluidObstacleSystem.d.ts +4 -4
  219. package/src/engine/physics/fluid/effector/AbstractFluidEffector.d.ts +2 -2
  220. package/src/engine/physics/fluid/effector/AbstractFluidEffector.js +2 -2
  221. package/src/engine/physics/fluid/effector/GlobalFluidEffector.d.ts.map +1 -1
  222. package/src/engine/physics/fluid/effector/GlobalFluidEffector.js +11 -7
  223. package/src/engine/physics/fluid/effector/ImpulseFluidEffector.d.ts.map +1 -1
  224. package/src/engine/physics/fluid/effector/ImpulseFluidEffector.js +11 -7
  225. package/src/engine/physics/fluid/effector/WakeFluidEffector.d.ts.map +1 -1
  226. package/src/engine/physics/fluid/effector/WakeFluidEffector.js +16 -9
  227. package/src/engine/sound/ecs/audio/AudioEmitter.d.ts +38 -7
  228. package/src/engine/sound/ecs/audio/AudioEmitter.d.ts.map +1 -1
  229. package/src/engine/sound/ecs/audio/AudioEmitter.js +47 -14
  230. package/src/engine/sound/ecs/audio/AudioEmitterSerializationAdapter.d.ts.map +1 -1
  231. package/src/engine/sound/ecs/audio/AudioEmitterSerializationAdapter.js +5 -1
  232. package/src/engine/sound/ecs/audio/AudioEmitterSerializationUpgrader_0_1.d.ts +18 -0
  233. package/src/engine/sound/ecs/audio/AudioEmitterSerializationUpgrader_0_1.d.ts.map +1 -0
  234. package/src/engine/sound/ecs/audio/AudioEmitterSerializationUpgrader_0_1.js +48 -0
  235. package/src/engine/sound/ecs/audio/AudioEmitterSystem.d.ts +12 -2
  236. package/src/engine/sound/ecs/audio/AudioEmitterSystem.d.ts.map +1 -1
  237. package/src/engine/sound/ecs/audio/AudioEmitterSystem.js +173 -9
  238. package/src/engine/sound/ecs/audio/LiveEmitterSet.d.ts +9 -3
  239. package/src/engine/sound/ecs/audio/LiveEmitterSet.d.ts.map +1 -1
  240. package/src/engine/sound/ecs/audio/LiveEmitterSet.js +28 -8
  241. package/src/engine/sound/ecs/trigger/AudioEventTrigger.d.ts +8 -0
  242. package/src/engine/sound/ecs/trigger/AudioEventTrigger.d.ts.map +1 -1
  243. package/src/engine/sound/ecs/trigger/AudioEventTrigger.js +192 -191
  244. package/src/engine/sound/ecs/trigger/AudioEventTriggerSerializationAdapter.d.ts.map +1 -1
  245. package/src/engine/sound/ecs/trigger/AudioEventTriggerSerializationAdapter.js +5 -1
  246. package/src/engine/sound/ecs/trigger/AudioEventTriggerSerializationUpgrader_0_1.d.ts +18 -0
  247. package/src/engine/sound/ecs/trigger/AudioEventTriggerSerializationUpgrader_0_1.d.ts.map +1 -0
  248. package/src/engine/sound/ecs/trigger/AudioEventTriggerSerializationUpgrader_0_1.js +51 -0
  249. package/src/engine/sound/ecs/trigger/AudioEventTriggerSystem.d.ts.map +1 -1
  250. package/src/engine/sound/ecs/trigger/AudioEventTriggerSystem.js +15 -1
  251. package/src/engine/sound/simulation/core/AcousticMedium.js +2 -2
  252. package/src/engine/sound/simulation/definition/AcousticDirectivity.js +2 -2
  253. package/src/engine/sound/simulation/definition/AcousticMaterial.d.ts.map +1 -1
  254. package/src/engine/sound/simulation/definition/AcousticMaterial.js +11 -7
  255. package/src/engine/sound/sopra/README.md +768 -644
  256. package/src/engine/sound/sopra/SopraEngine.d.ts +104 -8
  257. package/src/engine/sound/sopra/SopraEngine.d.ts.map +1 -1
  258. package/src/engine/sound/sopra/SopraEngine.js +327 -12
  259. package/src/engine/sound/sopra/definition/BusDefinition.d.ts.map +1 -1
  260. package/src/engine/sound/sopra/definition/BusDefinition.js +5 -4
  261. package/src/engine/sound/sopra/definition/DuckingRule.d.ts.map +1 -1
  262. package/src/engine/sound/sopra/definition/DuckingRule.js +7 -5
  263. package/src/engine/sound/sopra/definition/EventDescription.d.ts +28 -2
  264. package/src/engine/sound/sopra/definition/EventDescription.d.ts.map +1 -1
  265. package/src/engine/sound/sopra/definition/EventDescription.js +77 -17
  266. package/src/engine/sound/sopra/definition/EventDescriptionSerializationAdapter.d.ts +10 -0
  267. package/src/engine/sound/sopra/definition/EventDescriptionSerializationAdapter.d.ts.map +1 -1
  268. package/src/engine/sound/sopra/definition/EventDescriptionSerializationAdapter.js +77 -55
  269. package/src/engine/sound/sopra/definition/EventDescriptionSerializationUpgrader_0_1.d.ts +31 -0
  270. package/src/engine/sound/sopra/definition/EventDescriptionSerializationUpgrader_0_1.d.ts.map +1 -0
  271. package/src/engine/sound/sopra/definition/EventDescriptionSerializationUpgrader_0_1.js +75 -0
  272. package/src/engine/sound/sopra/definition/MixerSnapshot.js +2 -2
  273. package/src/engine/sound/sopra/definition/ParameterDefinition.d.ts.map +1 -1
  274. package/src/engine/sound/sopra/definition/ParameterDefinition.js +7 -5
  275. package/src/engine/sound/sopra/definition/clip/AbstractAudioClip.js +2 -2
  276. package/src/engine/sound/sopra/definition/clip/BlendContainerAudioClip.d.ts.map +1 -1
  277. package/src/engine/sound/sopra/definition/clip/BlendContainerAudioClip.js +4 -3
  278. package/src/engine/sound/sopra/definition/clip/ContainerAudioClip.js +2 -2
  279. package/src/engine/sound/sopra/definition/clip/RandomContainerAudioClip.js +3 -3
  280. package/src/engine/sound/sopra/definition/clip/SampleAudioClip.d.ts.map +1 -1
  281. package/src/engine/sound/sopra/definition/clip/SampleAudioClip.js +16 -9
  282. package/src/engine/sound/sopra/definition/clip/SilenceAudioClip.js +2 -2
  283. package/src/engine/sound/sopra/definition/clip/SwitchContainerAudioClip.d.ts +1 -1
  284. package/src/engine/sound/sopra/definition/clip/SwitchContainerAudioClip.d.ts.map +1 -1
  285. package/src/engine/sound/sopra/definition/clip/SwitchContainerAudioClip.js +2 -2
  286. package/src/engine/sound/sopra/definition/effect/AbstractAudioEffect.d.ts +38 -9
  287. package/src/engine/sound/sopra/definition/effect/AbstractAudioEffect.d.ts.map +1 -1
  288. package/src/engine/sound/sopra/definition/effect/AbstractAudioEffect.js +34 -5
  289. package/src/engine/sound/sopra/definition/effect/CompressorEffect.d.ts +7 -2
  290. package/src/engine/sound/sopra/definition/effect/CompressorEffect.d.ts.map +1 -1
  291. package/src/engine/sound/sopra/definition/effect/CompressorEffect.js +137 -120
  292. package/src/engine/sound/sopra/definition/effect/EqEffect.d.ts +3 -1
  293. package/src/engine/sound/sopra/definition/effect/EqEffect.d.ts.map +1 -1
  294. package/src/engine/sound/sopra/definition/effect/EqEffect.js +146 -128
  295. package/src/engine/sound/sopra/definition/effect/ReverbEffect.d.ts +1 -0
  296. package/src/engine/sound/sopra/definition/effect/ReverbEffect.d.ts.map +1 -1
  297. package/src/engine/sound/sopra/definition/effect/ReverbEffect.js +8 -3
  298. package/src/engine/sound/sopra/legacy/SoundEmitter.d.ts.map +1 -1
  299. package/src/engine/sound/sopra/legacy/SoundEmitter.js +357 -352
  300. package/src/engine/sound/sopra/legacy/SoundTrack.d.ts.map +1 -1
  301. package/src/engine/sound/sopra/legacy/SoundTrack.js +281 -278
  302. package/src/engine/sound/sopra/runtime/BusGraph.d.ts +44 -2
  303. package/src/engine/sound/sopra/runtime/BusGraph.d.ts.map +1 -1
  304. package/src/engine/sound/sopra/runtime/BusGraph.js +83 -43
  305. package/src/engine/sound/sopra/runtime/EffectChain.d.ts +96 -0
  306. package/src/engine/sound/sopra/runtime/EffectChain.d.ts.map +1 -0
  307. package/src/engine/sound/sopra/runtime/EffectChain.js +286 -0
  308. package/src/engine/sound/sopra/runtime/EffectParamOverrides.d.ts +123 -0
  309. package/src/engine/sound/sopra/runtime/EffectParamOverrides.d.ts.map +1 -0
  310. package/src/engine/sound/sopra/runtime/EffectParamOverrides.js +320 -0
  311. package/src/engine/sound/sopra/runtime/EventInstance.d.ts +55 -5
  312. package/src/engine/sound/sopra/runtime/EventInstance.d.ts.map +1 -1
  313. package/src/engine/sound/sopra/runtime/EventInstance.js +201 -26
  314. package/src/engine/sound/sopra/serialization/populateSopraSerializationRegistry.d.ts +2 -1
  315. package/src/engine/sound/sopra/serialization/populateSopraSerializationRegistry.d.ts.map +1 -1
  316. package/src/engine/sound/sopra/serialization/populateSopraSerializationRegistry.js +6 -1
  317. package/src/engine/sound/sopra/serialization/sopraSerializationHarness.d.ts +15 -0
  318. package/src/engine/sound/sopra/serialization/sopraSerializationHarness.d.ts.map +1 -1
  319. package/src/engine/sound/sopra/serialization/sopraSerializationHarness.js +32 -0
  320. package/src/engine/sound/sopra/util/MockAudioContext.d.ts.map +1 -1
  321. package/src/engine/sound/sopra/util/MockAudioContext.js +3 -0
  322. package/src/engine/sound/sopra/util/fadeOutAndStop.d.ts +13 -3
  323. package/src/engine/sound/sopra/util/fadeOutAndStop.d.ts.map +1 -1
  324. package/src/engine/sound/sopra/util/fadeOutAndStop.js +25 -13
  325. package/src/format/image/png/PNGReader.js +644 -644
  326. package/src/format/image/png/crc32.d.ts +1 -1
  327. package/src/format/image/png/crc32.js +7 -8
  328. package/src/shade/RENDERER_CONTRACT.md +6 -3
  329. package/src/shade/descriptor/binding/BindGroupLayoutDescriptor.js +2 -2
  330. package/src/shade/descriptor/binding/BindGroupLayoutEntry.d.ts.map +1 -1
  331. package/src/shade/descriptor/binding/BindGroupLayoutEntry.js +12 -8
  332. package/src/shade/descriptor/binding/StorageTextureBindingLayout.js +2 -2
  333. package/src/shade/descriptor/binding/TextureBindingLayout.js +2 -2
  334. package/src/shade/descriptor/blend/BlendComponent.js +2 -2
  335. package/src/shade/descriptor/pipeline/PipelineDescriptorBase.js +2 -2
  336. package/src/shade/descriptor/pipeline/PipelineLayoutDescriptor.js +2 -2
  337. package/src/shade/descriptor/pipeline/ProgrammableStage.js +2 -2
  338. package/src/shade/descriptor/pipeline/compute/ComputePipelineDescriptor.js +2 -2
  339. package/src/shade/descriptor/pipeline/render/ColorTargetState.js +2 -2
  340. package/src/shade/descriptor/pipeline/render/FragmentState.js +2 -2
  341. package/src/shade/descriptor/pipeline/render/PrimitiveState.js +2 -2
  342. package/src/shade/descriptor/pipeline/render/RenderPipelineDescriptor.d.ts.map +1 -1
  343. package/src/shade/descriptor/pipeline/render/RenderPipelineDescriptor.js +8 -5
  344. package/src/shade/descriptor/pipeline/render/VertexAttribute.js +2 -2
  345. package/src/shade/descriptor/texture/SamplerDescriptor.d.ts.map +1 -1
  346. package/src/shade/descriptor/texture/SamplerDescriptor.js +20 -12
  347. package/src/shade/descriptor/texture/TextureDescriptor.d.ts.map +1 -1
  348. package/src/shade/descriptor/texture/TextureDescriptor.js +11 -7
  349. package/src/shade/device/SHADE_DEVICE_FLOOR.d.ts +24 -0
  350. package/src/shade/device/SHADE_DEVICE_FLOOR.d.ts.map +1 -0
  351. package/src/shade/device/SHADE_DEVICE_FLOOR.js +34 -0
  352. package/src/shade/device/ShadeDeviceFailure.d.ts +12 -5
  353. package/src/shade/device/ShadeDeviceFailure.d.ts.map +1 -1
  354. package/src/shade/device/ShadeDeviceFailure.js +17 -8
  355. package/src/shade/device/ShadeDeviceFailureReason.d.ts +1 -1
  356. package/src/shade/device/ShadeDeviceFailureReason.js +2 -2
  357. package/src/shade/device/graph/BufferResourceDescriptor.d.ts.map +1 -1
  358. package/src/shade/device/graph/BufferResourceDescriptor.js +196 -193
  359. package/src/shade/device/graph/TextureResourceDescriptor.d.ts.map +1 -1
  360. package/src/shade/device/graph/TextureResourceDescriptor.js +178 -173
  361. package/src/shade/device/shade_device_floor_unmet.d.ts +13 -0
  362. package/src/shade/device/shade_device_floor_unmet.d.ts.map +1 -0
  363. package/src/shade/device/shade_device_floor_unmet.js +32 -0
  364. package/src/shade/device/timing/profile/sgpt_read_header.js +1 -1
  365. package/src/shade/device/timing/profile/sgpt_read_records.js +1 -1
  366. package/src/shade/device/timing/profile/sgpt_write_header.js +1 -1
  367. package/src/shade/device/timing/profile/sgpt_write_record.js +1 -1
  368. package/src/shade/renderer/Renderer.d.ts +2 -0
  369. package/src/shade/renderer/Renderer.d.ts.map +1 -1
  370. package/src/shade/renderer/Renderer.js +29 -55
  371. package/src/shade/renderer/binding/BufferBinding.js +2 -2
  372. package/src/shade/renderer/buffer/GPUBufferAllocator.d.ts.map +1 -1
  373. package/src/shade/renderer/buffer/GPUBufferAllocator.js +9 -0
  374. package/src/shade/renderer/buffer/buffer_pool_ops.d.ts +21 -12
  375. package/src/shade/renderer/buffer/buffer_pool_ops.d.ts.map +1 -1
  376. package/src/shade/renderer/buffer/buffer_pool_ops.js +18 -19
  377. package/src/shade/renderer/camera/Camera.js +2 -2
  378. package/src/shade/renderer/geometry/Attribute.js +2 -2
  379. package/src/shade/renderer/geometry/Geometry.js +2 -2
  380. package/src/shade/renderer/geometry/geometry_deduplicate_vertices.js +2 -2
  381. package/src/shade/renderer/geometry/meshlet/MeshletBatch.js +2 -2
  382. package/src/shade/renderer/geometry/virtual/format/checksum/vgeo_compute_asset_id.js +13 -13
  383. package/src/shade/renderer/geometry/virtual/format/checksum/vgeo_compute_directory_block_checksum.js +41 -41
  384. package/src/shade/renderer/geometry/virtual/format/checksum/vgeo_compute_frame_checksum.js +41 -41
  385. package/src/shade/renderer/geometry/virtual/format/checksum/vgeo_compute_header_checksum.js +25 -25
  386. package/src/shade/renderer/gpu_primitive/test/gpu_test.d.ts.map +1 -1
  387. package/src/shade/renderer/gpu_primitive/test/gpu_test.js +8 -11
  388. package/src/shade/renderer/loader/gltf/tiny-gltf.d.ts +1 -1
  389. package/src/shade/renderer/material/StandardShadeMaterial.d.ts.map +1 -1
  390. package/src/shade/renderer/material/StandardShadeMaterial.js +13 -8
  391. package/src/shade/renderer/pool/TransientResourcePool.d.ts +24 -0
  392. package/src/shade/renderer/pool/TransientResourcePool.d.ts.map +1 -1
  393. package/src/shade/renderer/pool/TransientResourcePool.js +41 -10
  394. package/src/shade/renderer/scene/optimization/geometry/internal/triangle_fingerprint_stream.d.ts.map +1 -1
  395. package/src/shade/renderer/scene/optimization/geometry/internal/triangle_fingerprint_stream.js +14 -5
  396. package/src/shade/renderer/scene/optimization/sampler2d_from_image_bitmap.js +1 -1
  397. package/src/shade/renderer/shader/ComputeShader.d.ts.map +1 -1
  398. package/src/shade/renderer/shader/ComputeShader.js +18 -2
  399. package/src/shade/renderer/shader/ImageShader.d.ts.map +1 -1
  400. package/src/shade/renderer/shader/ImageShader.js +230 -218
  401. package/src/shade/renderer/shader/type/WGSLStructField.js +2 -2
  402. package/src/shade/renderer/shader/type/WebGPUArray.js +2 -2
  403. package/src/shade/renderer/shader/type/WebGPUStruct.d.ts.map +1 -1
  404. package/src/shade/renderer/shader/type/WebGPUStruct.js +9 -6
  405. package/src/shade/renderer/texture/ShadeTexture.d.ts.map +1 -1
  406. package/src/shade/renderer/texture/ShadeTexture.js +17 -10
  407. package/src/shade/renderer/texture/mipmaps/WebGPUMipmapGenerator.js +2 -2
  408. package/src/shade/renderer/water/surface/chunk_water_surface_sample.d.ts +4 -4
  409. package/src/shade/renderer/water/surface/chunk_water_surface_sample.js +6 -6
  410. package/src/shade/renderer/water/surface/particles/GPUWaterParticles.d.ts.map +1 -1
  411. package/src/shade/renderer/water/surface/particles/GPUWaterParticles.js +46 -55
  412. package/src/shade/renderer/water/surface/particles/WATER_PARTICLE_STRUCT.d.ts +3 -3
  413. package/src/shade/renderer/water/surface/particles/WATER_PARTICLE_STRUCT.d.ts.map +1 -1
  414. package/src/shade/renderer/water/surface/particles/WATER_PARTICLE_STRUCT.js +14 -4
  415. package/src/shade/renderer/water/surface/particles/chunk_water_particle.d.ts +10 -1
  416. package/src/shade/renderer/water/surface/particles/chunk_water_particle.d.ts.map +1 -1
  417. package/src/shade/renderer/water/surface/particles/chunk_water_particle.js +82 -40
  418. package/src/shade/renderer/water/surface/particles/chunk_water_particle_step.d.ts +4 -1
  419. package/src/shade/renderer/water/surface/particles/chunk_water_particle_step.d.ts.map +1 -1
  420. package/src/shade/renderer/water/surface/particles/chunk_water_particle_step.js +8 -4
  421. package/src/shade/renderer/water/surface/particles/shader_water_particles.d.ts +98 -86
  422. package/src/shade/renderer/water/surface/particles/shader_water_particles.d.ts.map +1 -1
  423. package/src/shade/renderer/water/surface/particles/shader_water_particles.js +440 -298
  424. package/src/view/common/HTMLElementCacheKey.d.ts.map +1 -1
  425. package/src/view/common/HTMLElementCacheKey.js +4 -3
  426. package/src/view/graphics/GraphicsContextFailureView.d.ts +1 -2
  427. package/src/view/graphics/GraphicsContextFailureView.d.ts.map +1 -1
  428. package/src/view/graphics/GraphicsContextFailureView.js +1 -2
  429. package/src/view/minimap/MinimapMarker.js +2 -2
  430. package/src/engine/network/transport/Channel.js +0 -336
  431. package/src/engine/network/transport/ReliableCommandPipeline.js +0 -335
  432. package/src/engine/network/transport/fragments/FragmentAssembler.js +0 -350
  433. package/src/engine/network/transport/fragments/FragmentRetention.js +0 -191
  434. package/src/engine/network/transport/fragments/fragment_send.js +0 -157
  435. 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":"AAqBA;;;;GAIG;AACH;IA+EI;;;;;;OAMG;IACH,mBALW,MAAM,YACN,iBAAiB,wIACjB,QAAQ,gBAAgB,CAAC,GACvB,gBAAgB,CAgC5B;IAlHD;;;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;IAyCzB;;;;OAIG;IACH,cAHW,gBAAgB,GACd,OAAO,CAgBnB;IAED;;;;;OAKG;IACH,QAFa,MAAM,CAkBlB;IAED,0BAkBC;IAED;;;;;;;;;;;;;;;;;;;MAgBC;IAED;;;;;;;;;;;;;;aAmCC;CACJ;;;;gCA7PY,OAAO,6BAA6B,EAAE,iBAAiB;kCAJlC,wBAAwB;+BAH3B,4CAA4C;+BAI5C,qBAAqB"}
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 { combine_hash } from "../../../../core/collection/array/combine_hash.js";
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 { deserializeAudioClipFromJSON, serializeAudioClipToJSON } from "../serialization/sopraJSON.js";
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
- return combine_hash(
174
- computeStringHash(this.label),
175
- computeStringHash(this.busId),
176
- computeHashFloat(this.gainDb),
177
- this.is3D ? 1 : 0,
178
- this.panningModel,
179
- computeHashFloat(this.distanceMin),
180
- computeHashFloat(this.distanceMax),
181
- this.maxInstances,
182
- computeHashFloat(this.priority),
183
- this.stealMode,
184
- computeHashFloat(this.virtualThresholdDb),
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,QAkB1B;IAED;;;OAGG;IACH,yCAFW,gBAAgB,QAkB1B;CACJ;qDAlDoD,4EAA4E;iCAChG,uBAAuB"}
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
- export class EventDescriptionSerializationAdapter extends ObjectBasedClassSerializationAdapter {
9
- klass = EventDescription;
10
- version = 0;
11
-
12
- /**
13
- * @param {BinaryBuffer} buffer
14
- * @param {EventDescription} value
15
- */
16
- serialize(buffer, value) {
17
- buffer.writeUTF8String(value.label);
18
- this.objectAdapter.serialize(buffer, value.rootClip);
19
- buffer.writeUTF8String(value.busId);
20
- buffer.writeFloat32(value.gainDb);
21
- buffer.writeUint8(value.is3D ? 1 : 0);
22
- buffer.writeUint8(value.panningModel);
23
- buffer.writeFloat32(value.distanceMin);
24
- buffer.writeFloat32(value.distanceMax);
25
-
26
- serialize_animation_curve(buffer, value.attenuation);
27
-
28
- buffer.writeUintVar(value.maxInstances);
29
- buffer.writeFloat32(value.priority);
30
- buffer.writeUint8(value.stealMode);
31
- buffer.writeFloat32(value.virtualThresholdDb);
32
- }
33
-
34
- /**
35
- * @param {BinaryBuffer} buffer
36
- * @param {EventDescription} value
37
- */
38
- deserialize(buffer, value) {
39
- value.label = buffer.readUTF8String();
40
- value.rootClip = this.objectAdapter.deserialize(buffer);
41
- value.busId = buffer.readUTF8String();
42
- value.gainDb = buffer.readFloat32();
43
- value.is3D = buffer.readUint8() !== 0;
44
- value.panningModel = buffer.readUint8();
45
- value.distanceMin = buffer.readFloat32();
46
- value.distanceMax = buffer.readFloat32();
47
-
48
- value.attenuation = deserialize_animation_curve(buffer);
49
-
50
- value.maxInstances = buffer.readUintVar();
51
- value.priority = buffer.readFloat32();
52
- value.stealMode = buffer.readUint8();
53
- value.virtualThresholdDb = buffer.readFloat32();
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 { combine_hash } from "../../../../core/collection/array/combine_hash.js";
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 = combine_hash(h, computeStringHash(this.buses[i].busId), computeHashFloat(this.buses[i].gainDb));
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,eAQC;IAED,6BAUC;IAED;;;;;;MAQC;IAED;;;;;;aAMC;CACJ"}
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 { combine_hash } from "../../../../core/collection/array/combine_hash.js";
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 combine_hash(
78
- computeStringHash(this.name),
79
- computeHashFloat(this.min),
80
- computeHashFloat(this.max),
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 { combine_hash } from "../../../../../core/collection/array/combine_hash.js";
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 combine_hash(
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":"AAQA;;;;;;;;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
+ {"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 { combine_hash } from "../../../../../core/collection/array/combine_hash.js";
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 = combine_hash(
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 = combine_hash(h, blends[i].hash());
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 { combine_hash } from "../../../../../core/collection/array/combine_hash.js";
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 = combine_hash(h, children[i].hash());
123
+ h = hash_mix2(h, children[i].hash());
124
124
  }
125
125
 
126
126
  return h;
@@ -1,4 +1,4 @@
1
- import { combine_hash } from "../../../../../core/collection/array/combine_hash.js";
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 = combine_hash(super.hash(), this.avoid_repeating_last);
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 = combine_hash(h, computeHashFloat(weights[i]));
133
+ h = hash_mix2(h, computeHashFloat(weights[i]));
134
134
  }
135
135
 
136
136
  return h;