@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
@@ -1,191 +1,192 @@
1
- import { combine_hash } from "../../../../core/collection/array/combine_hash.js";
2
- import { computeStringHash } from "../../../../core/primitives/strings/computeStringHash.js";
3
- import { EventDescription } from "../../sopra/definition/EventDescription.js";
4
-
5
- /**
6
- * One trigger rule: "when this entity receives `startEvent`, play `event`; when it receives
7
- * `stopEvent`, stop what this rule started".
8
- *
9
- * The legacy `SoundController.Rule` carried `tracks[] / loop / volume / channel` alongside its event
10
- * names, and its system did the picking and the routing at trigger time. Here all four collapse into
11
- * the {@link EventDescription} itself — a random pick is a `RandomContainerAudioClip`, looping is the
12
- * clip's own loop flag, volume is `gainDb`, and the channel is `busId`. That is the whole point of the
13
- * native model: what plays is authored data, not a rule the runtime re-interprets on every trigger.
14
- */
15
- export class AudioEventTriggerRule {
16
-
17
- /**
18
- * Entity event name that starts this rule's event. Required — a rule with nothing to start does
19
- * nothing at all.
20
- * @type {string}
21
- */
22
- startEvent = "";
23
-
24
- /**
25
- * Entity event name that stops whatever this rule started, or null for a fire-and-forget rule
26
- * (a one-shot ends on its own; a looping event then lives until the component unlinks).
27
- * @type {string|null}
28
- */
29
- stopEvent = null;
30
-
31
- /**
32
- * The authored event this rule plays. Same data an {@link AudioEmitter} would hold — the difference
33
- * is only in what makes it sound: linking, versus receiving an entity event.
34
- * @type {EventDescription}
35
- */
36
- event = new EventDescription();
37
-
38
- /**
39
- * @param {string} startEvent
40
- * @param {EventDescription} event
41
- * @param {string|null} [stopEvent]
42
- * @returns {AudioEventTriggerRule}
43
- */
44
- static from(startEvent, event, stopEvent = null) {
45
- const r = new AudioEventTriggerRule();
46
-
47
- r.startEvent = startEvent;
48
- r.event = event;
49
- r.stopEvent = stopEvent;
50
-
51
- return r;
52
- }
53
-
54
- /**
55
- * @param {AudioEventTriggerRule} other
56
- * @returns {boolean}
57
- */
58
- equals(other) {
59
- return this.startEvent === other.startEvent
60
- && this.stopEvent === other.stopEvent
61
- && this.event.equals(other.event);
62
- }
63
-
64
- hash() {
65
- return combine_hash(
66
- computeStringHash(this.startEvent),
67
- this.stopEvent === null ? 0 : computeStringHash(this.stopEvent),
68
- this.event.hash()
69
- );
70
- }
71
-
72
- toJSON() {
73
- return {
74
- startEvent: this.startEvent,
75
- stopEvent: this.stopEvent,
76
- event: this.event.toJSON()
77
- };
78
- }
79
-
80
- fromJSON(json) {
81
- this.startEvent = json.startEvent !== undefined ? json.startEvent : "";
82
- this.stopEvent = json.stopEvent !== undefined && json.stopEvent !== null ? json.stopEvent : null;
83
-
84
- this.event = new EventDescription();
85
-
86
- if (json.event !== undefined) {
87
- this.event.fromJSON(json.event);
88
- }
89
- }
90
-
91
- /**
92
- * @param {*} json
93
- * @returns {AudioEventTriggerRule}
94
- */
95
- static fromJSON(json) {
96
- const r = new AudioEventTriggerRule();
97
- r.fromJSON(json);
98
- return r;
99
- }
100
- }
101
-
102
- /**
103
- * Plays authored sopra events in response to entity events — the native replacement for the legacy
104
- * `SoundController`, whose system wrote `SoundTrack`s into the entity's `SoundEmitter` and so could not
105
- * outlive it.
106
- *
107
- * Where an {@link AudioEmitter} sounds because it was linked, an `AudioEventTrigger` sounds because the
108
- * entity received an event: "unit took damage" → a hurt sound. Driven by {@link AudioEventTriggerSystem};
109
- * the entity's {@link Transform} supplies position, exactly as for an emitter.
110
- */
111
- export class AudioEventTrigger {
112
-
113
- /**
114
- * Authored rules, evaluated independently — several may listen to the same event, and each owns the
115
- * instances it started.
116
- *
117
- * Read once when the component links: the system registers one entity-event listener per rule then,
118
- * so mutating this array on a linked component has no effect until it is re-linked (remove and
119
- * re-add the component), which mirrors {@link AudioEmitter.event}.
120
- *
121
- * @type {AudioEventTriggerRule[]}
122
- */
123
- rules = [];
124
-
125
- /**
126
- * @param {AudioEventTriggerRule[]} rules
127
- * @returns {AudioEventTrigger}
128
- */
129
- static from(rules) {
130
- const r = new AudioEventTrigger();
131
-
132
- r.rules = rules;
133
-
134
- return r;
135
- }
136
-
137
- /**
138
- * @param {AudioEventTrigger} other
139
- * @returns {boolean}
140
- */
141
- equals(other) {
142
- const rules = this.rules;
143
- const otherRules = other.rules;
144
-
145
- if (rules.length !== otherRules.length) {
146
- return false;
147
- }
148
-
149
- for (let i = 0; i < rules.length; i++) {
150
- if (!rules[i].equals(otherRules[i])) {
151
- return false;
152
- }
153
- }
154
-
155
- return true;
156
- }
157
-
158
- hash() {
159
- const rules = this.rules;
160
-
161
- let hash = rules.length;
162
-
163
- for (let i = 0; i < rules.length; i++) {
164
- hash = combine_hash(hash, rules[i].hash());
165
- }
166
-
167
- return hash;
168
- }
169
-
170
- toJSON() {
171
- return {
172
- rules: this.rules.map(rule => rule.toJSON())
173
- };
174
- }
175
-
176
- fromJSON(json) {
177
- this.rules = json.rules === undefined ? [] : json.rules.map(AudioEventTriggerRule.fromJSON);
178
- }
179
-
180
- /**
181
- * @param {*} json
182
- * @returns {AudioEventTrigger}
183
- */
184
- static fromJSON(json) {
185
- const r = new AudioEventTrigger();
186
- r.fromJSON(json);
187
- return r;
188
- }
189
- }
190
-
191
- AudioEventTrigger.typeName = "AudioEventTrigger";
1
+ import { hash_mix2 } from "../../../../core/math/hash/hash_mix2.js";
2
+ import { hash_mix3 } from "../../../../core/math/hash/hash_mix3.js";
3
+ import { computeStringHash } from "../../../../core/primitives/strings/computeStringHash.js";
4
+ import { EventDescription } from "../../sopra/definition/EventDescription.js";
5
+
6
+ /**
7
+ * One trigger rule: "when this entity receives `startEvent`, play `event`; when it receives
8
+ * `stopEvent`, stop what this rule started".
9
+ *
10
+ * The legacy `SoundController.Rule` carried `tracks[] / loop / volume / channel` alongside its event
11
+ * names, and its system did the picking and the routing at trigger time. Here all four collapse into
12
+ * the {@link EventDescription} itself — a random pick is a `RandomContainerAudioClip`, looping is the
13
+ * clip's own loop flag, volume is `gainDb`, and the channel is `busId`. That is the whole point of the
14
+ * native model: what plays is authored data, not a rule the runtime re-interprets on every trigger.
15
+ */
16
+ export class AudioEventTriggerRule {
17
+
18
+ /**
19
+ * Entity event name that starts this rule's event. Required — a rule with nothing to start does
20
+ * nothing at all.
21
+ * @type {string}
22
+ */
23
+ startEvent = "";
24
+
25
+ /**
26
+ * Entity event name that stops whatever this rule started, or null for a fire-and-forget rule
27
+ * (a one-shot ends on its own; a looping event then lives until the component unlinks).
28
+ * @type {string|null}
29
+ */
30
+ stopEvent = null;
31
+
32
+ /**
33
+ * The authored event this rule plays. Same data an {@link AudioEmitter} would hold — the difference
34
+ * is only in what makes it sound: linking, versus receiving an entity event.
35
+ * @type {EventDescription}
36
+ */
37
+ event = new EventDescription();
38
+
39
+ /**
40
+ * @param {string} startEvent
41
+ * @param {EventDescription} event
42
+ * @param {string|null} [stopEvent]
43
+ * @returns {AudioEventTriggerRule}
44
+ */
45
+ static from(startEvent, event, stopEvent = null) {
46
+ const r = new AudioEventTriggerRule();
47
+
48
+ r.startEvent = startEvent;
49
+ r.event = event;
50
+ r.stopEvent = stopEvent;
51
+
52
+ return r;
53
+ }
54
+
55
+ /**
56
+ * @param {AudioEventTriggerRule} other
57
+ * @returns {boolean}
58
+ */
59
+ equals(other) {
60
+ return this.startEvent === other.startEvent
61
+ && this.stopEvent === other.stopEvent
62
+ && this.event.equals(other.event);
63
+ }
64
+
65
+ hash() {
66
+ return hash_mix3(
67
+ computeStringHash(this.startEvent),
68
+ this.stopEvent === null ? 0 : computeStringHash(this.stopEvent),
69
+ this.event.hash()
70
+ );
71
+ }
72
+
73
+ toJSON() {
74
+ return {
75
+ startEvent: this.startEvent,
76
+ stopEvent: this.stopEvent,
77
+ event: this.event.toJSON()
78
+ };
79
+ }
80
+
81
+ fromJSON(json) {
82
+ this.startEvent = json.startEvent !== undefined ? json.startEvent : "";
83
+ this.stopEvent = json.stopEvent !== undefined && json.stopEvent !== null ? json.stopEvent : null;
84
+
85
+ this.event = new EventDescription();
86
+
87
+ if (json.event !== undefined) {
88
+ this.event.fromJSON(json.event);
89
+ }
90
+ }
91
+
92
+ /**
93
+ * @param {*} json
94
+ * @returns {AudioEventTriggerRule}
95
+ */
96
+ static fromJSON(json) {
97
+ const r = new AudioEventTriggerRule();
98
+ r.fromJSON(json);
99
+ return r;
100
+ }
101
+ }
102
+
103
+ /**
104
+ * Plays authored sopra events in response to entity events — the native replacement for the legacy
105
+ * `SoundController`, whose system wrote `SoundTrack`s into the entity's `SoundEmitter` and so could not
106
+ * outlive it.
107
+ *
108
+ * Where an {@link AudioEmitter} sounds because it was linked, an `AudioEventTrigger` sounds because the
109
+ * entity received an event: "unit took damage" → a hurt sound. Driven by {@link AudioEventTriggerSystem};
110
+ * the entity's {@link Transform} supplies position, exactly as for an emitter.
111
+ */
112
+ export class AudioEventTrigger {
113
+
114
+ /**
115
+ * Authored rules, evaluated independently — several may listen to the same event, and each owns the
116
+ * instances it started.
117
+ *
118
+ * Read once when the component links: the system registers one entity-event listener per rule then,
119
+ * so mutating this array on a linked component has no effect until it is re-linked (remove and
120
+ * re-add the component), which mirrors {@link AudioEmitter.event}.
121
+ *
122
+ * @type {AudioEventTriggerRule[]}
123
+ */
124
+ rules = [];
125
+
126
+ /**
127
+ * @param {AudioEventTriggerRule[]} rules
128
+ * @returns {AudioEventTrigger}
129
+ */
130
+ static from(rules) {
131
+ const r = new AudioEventTrigger();
132
+
133
+ r.rules = rules;
134
+
135
+ return r;
136
+ }
137
+
138
+ /**
139
+ * @param {AudioEventTrigger} other
140
+ * @returns {boolean}
141
+ */
142
+ equals(other) {
143
+ const rules = this.rules;
144
+ const otherRules = other.rules;
145
+
146
+ if (rules.length !== otherRules.length) {
147
+ return false;
148
+ }
149
+
150
+ for (let i = 0; i < rules.length; i++) {
151
+ if (!rules[i].equals(otherRules[i])) {
152
+ return false;
153
+ }
154
+ }
155
+
156
+ return true;
157
+ }
158
+
159
+ hash() {
160
+ const rules = this.rules;
161
+
162
+ let hash = rules.length;
163
+
164
+ for (let i = 0; i < rules.length; i++) {
165
+ hash = hash_mix2(hash, rules[i].hash());
166
+ }
167
+
168
+ return hash;
169
+ }
170
+
171
+ toJSON() {
172
+ return {
173
+ rules: this.rules.map(rule => rule.toJSON())
174
+ };
175
+ }
176
+
177
+ fromJSON(json) {
178
+ this.rules = json.rules === undefined ? [] : json.rules.map(AudioEventTriggerRule.fromJSON);
179
+ }
180
+
181
+ /**
182
+ * @param {*} json
183
+ * @returns {AudioEventTrigger}
184
+ */
185
+ static fromJSON(json) {
186
+ const r = new AudioEventTrigger();
187
+ r.fromJSON(json);
188
+ return r;
189
+ }
190
+ }
191
+
192
+ AudioEventTrigger.typeName = "AudioEventTrigger";
@@ -1 +1 @@
1
- {"version":3,"file":"AudioEventTriggerSerializationAdapter.d.ts","sourceRoot":"","sources":["../../../../../../src/engine/sound/ecs/trigger/AudioEventTriggerSerializationAdapter.js"],"names":[],"mappings":"AAIA;;;;;;;;;GASG;AACH;;IACI,gCAA0B;IAQ1B;;;OAGG;IACH,mFAEC;IAED;;;OAGG;IACH,uCAFW,iBAAiB,QAuB3B;IAED;;;OAGG;IACH,yCAFW,iBAAiB,QAmB3B;;CACJ;gDAhF+C,gEAAgE;kCAEvD,wBAAwB"}
1
+ {"version":3,"file":"AudioEventTriggerSerializationAdapter.d.ts","sourceRoot":"","sources":["../../../../../../src/engine/sound/ecs/trigger/AudioEventTriggerSerializationAdapter.js"],"names":[],"mappings":"AAIA;;;;;;;;;GASG;AACH;;IACI,gCAA0B;IAY1B;;;OAGG;IACH,mFAEC;IAED;;;OAGG;IACH,uCAFW,iBAAiB,QAuB3B;IAED;;;OAGG;IACH,yCAFW,iBAAiB,QAmB3B;;CACJ;gDApF+C,gEAAgE;kCAEvD,wBAAwB"}
@@ -14,7 +14,11 @@ import { AudioEventTrigger, AudioEventTriggerRule } from "./AudioEventTrigger.js
14
14
  */
15
15
  export class AudioEventTriggerSerializationAdapter extends BinaryClassSerializationAdapter {
16
16
  klass = AudioEventTrigger;
17
- version = 0;
17
+ /**
18
+ * 1: the embedded event record moved to its format 1 (insert effects) — `AudioEventTriggerSerializationUpgrader_0_1`.
19
+ * @type {number}
20
+ */
21
+ version = 1;
18
22
 
19
23
  /**
20
24
  * @type {EventDescriptionSerializationAdapter}
@@ -0,0 +1,18 @@
1
+ /**
2
+ * @typedef {import("../../../ecs/storage/binary/BinarySerializationRegistry.js").BinarySerializationRegistry} BinarySerializationRegistry
3
+ */
4
+ /**
5
+ * Version 0 → 1: each rule's embedded {@link EventDescription} record moved to its own format 1 (insert
6
+ * effects). The record carries no version tag of its own, so the component's version is what says which
7
+ * layout it is in; the rule's other fields are unchanged.
8
+ */
9
+ export class AudioEventTriggerSerializationUpgrader_0_1 extends BinaryClassUpgrader {
10
+ /**
11
+ * @param {BinarySerializationRegistry} registry where the events' clip types are registered
12
+ */
13
+ constructor(registry: BinarySerializationRegistry);
14
+ #private;
15
+ }
16
+ export type BinarySerializationRegistry = import("../../../ecs/storage/binary/BinarySerializationRegistry.js").BinarySerializationRegistry;
17
+ import { BinaryClassUpgrader } from "../../../ecs/storage/binary/BinaryClassUpgrader.js";
18
+ //# sourceMappingURL=AudioEventTriggerSerializationUpgrader_0_1.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AudioEventTriggerSerializationUpgrader_0_1.d.ts","sourceRoot":"","sources":["../../../../../../src/engine/sound/ecs/trigger/AudioEventTriggerSerializationUpgrader_0_1.js"],"names":[],"mappings":"AAMA;;GAEG;AAEH;;;;GAIG;AACH;IASI;;OAEG;IACH,sBAFW,2BAA2B,EAMrC;;CAmBJ;0CA3CY,OAAO,4DAA4D,EAAE,2BAA2B;oCANzE,oDAAoD"}
@@ -0,0 +1,51 @@
1
+ import { BinaryBuffer } from "../../../../core/binary/BinaryBuffer.js";
2
+ import { BinaryClassUpgrader } from "../../../ecs/storage/binary/BinaryClassUpgrader.js";
3
+ import {
4
+ EventDescriptionSerializationUpgrader_0_1
5
+ } from "../../sopra/definition/EventDescriptionSerializationUpgrader_0_1.js";
6
+
7
+ /**
8
+ * @typedef {import("../../../ecs/storage/binary/BinarySerializationRegistry.js").BinarySerializationRegistry} BinarySerializationRegistry
9
+ */
10
+
11
+ /**
12
+ * Version 0 → 1: each rule's embedded {@link EventDescription} record moved to its own format 1 (insert
13
+ * effects). The record carries no version tag of its own, so the component's version is what says which
14
+ * layout it is in; the rule's other fields are unchanged.
15
+ */
16
+ export class AudioEventTriggerSerializationUpgrader_0_1 extends BinaryClassUpgrader {
17
+ __startVersion = 0;
18
+ __targetVersion = 1;
19
+
20
+ /**
21
+ * @type {EventDescriptionSerializationUpgrader_0_1}
22
+ */
23
+ #event;
24
+
25
+ /**
26
+ * @param {BinarySerializationRegistry} registry where the events' clip types are registered
27
+ */
28
+ constructor(registry) {
29
+ super();
30
+
31
+ this.#event = new EventDescriptionSerializationUpgrader_0_1(registry);
32
+ }
33
+
34
+ /**
35
+ * @param {BinaryBuffer} source
36
+ * @param {BinaryBuffer} target
37
+ */
38
+ upgrade(source, target) {
39
+ const count = BinaryBuffer.copyUintVar(source, target);
40
+
41
+ for (let i = 0; i < count; i++) {
42
+ BinaryBuffer.copyUTF8String(source, target); // startEvent
43
+
44
+ if (BinaryBuffer.copyUint8(source, target) !== 0) {
45
+ BinaryBuffer.copyUTF8String(source, target); // stopEvent
46
+ }
47
+
48
+ this.#event.upgrade(source, target);
49
+ }
50
+ }
51
+ }
@@ -1 +1 @@
1
- {"version":3,"file":"AudioEventTriggerSystem.d.ts","sourceRoot":"","sources":["../../../../../../src/engine/sound/ecs/trigger/AudioEventTriggerSystem.js"],"names":[],"mappings":"AAOA;;;;;;;;;;;;GAYG;AACH;IASI;;;OAGG;IACH,kEAwBC;IApCD,gEAAgD;IAEhD;;;OAGG;IACH,MAFU,MAAM,EAAE,CAER;IASN;;OAEG;IACH,yBAA8B;IAE9B;;OAEG;IACH,2BAAgC;IAQhC;;;OAGG;IACH,mBAAkF;IAGtF;;;;OAIG;IACH,cAJW,iBAAiB,aACjB,WAAW,UACX,MAAM,QA6BhB;IAED;;;;OAIG;IACH,gBAJW,iBAAiB,aACjB,WAAW,UACX,MAAM,QAoBhB;IAED;;;;;;;OAOG;IACH,qBAJW,MAAM,gCAEJ,eAAe,CAY3B;;CAgDJ;uBAtLsB,wBAAwB;4BACnB,uCAAuC;kCAEjC,wBAAwB"}
1
+ {"version":3,"file":"AudioEventTriggerSystem.d.ts","sourceRoot":"","sources":["../../../../../../src/engine/sound/ecs/trigger/AudioEventTriggerSystem.js"],"names":[],"mappings":"AAQA;;;;;;;;;;;;GAYG;AACH;IASI;;;OAGG;IACH,kEAwBC;IApCD,gEAAgD;IAEhD;;;OAGG;IACH,MAFU,MAAM,EAAE,CAER;IASN;;OAEG;IACH,yBAA8B;IAE9B;;OAEG;IACH,2BAAgC;IAQhC;;;OAGG;IACH,mBAAkF;IAGtF;;;;OAIG;IACH,cAJW,iBAAiB,aACjB,WAAW,UACX,MAAM,QA0ChB;IAED;;;;OAIG;IACH,gBAJW,iBAAiB,aACjB,WAAW,UACX,MAAM,QAoBhB;IAED;;;;;;;OAOG;IACH,qBAJW,MAAM,gCAEJ,eAAe,CAY3B;;CAgDJ;uBApMsB,wBAAwB;4BACnB,uCAAuC;kCAGjC,wBAAwB"}
@@ -2,6 +2,7 @@ import { GameAssetType } from "../../../asset/GameAssetType.js";
2
2
  import { SoundAssetLoader } from "../../../asset/loaders/SoundAssetLoader.js";
3
3
  import { System } from "../../../ecs/System.js";
4
4
  import { Transform64 } from "../../../ecs/transform/Transform64.js";
5
+ import { TRANSFORM64_EVENT_CHANGE } from "../../../ecs/transform/TRANSFORM64_EVENT_CHANGE.js";
5
6
  import { AssetManagerBufferProvider } from "../../sopra/asset/AssetManagerBufferProvider.js";
6
7
  import { AudioEventTrigger } from "./AudioEventTrigger.js";
7
8
 
@@ -88,6 +89,19 @@ export class AudioEventTriggerSystem extends System {
88
89
  }
89
90
  }
90
91
 
92
+ // Each instance holds the translation's live view and reads it only when told the entity moved,
93
+ // which the transform's announcement is how it is told. Removed in unlink with the rest.
94
+ const onMoved = () => {
95
+ for (const live of record.live.values()) {
96
+ for (const instance of live) {
97
+ instance.moved();
98
+ }
99
+ }
100
+ };
101
+
102
+ dataset.addEntityEventListener(entity, TRANSFORM64_EVENT_CHANGE, onMoved);
103
+ record.listeners.push({ name: TRANSFORM64_EVENT_CHANGE, handler: onMoved });
104
+
91
105
  this.data[entity] = record;
92
106
  }
93
107
 
@@ -151,7 +165,7 @@ export class AudioEventTriggerSystem extends System {
151
165
 
152
166
  const instance = this.sopra.playEvent(event, {
153
167
  busId: event.busId,
154
- // a live view over the transform buffer, so it still tracks the entity as it moves
168
+ // a live view over the transform buffer, read again each time the entity announces a move
155
169
  position: transform.translation,
156
170
  oneShot
157
171
  });
@@ -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
 
4
4
  /**
@@ -80,7 +80,7 @@ export class AcousticMedium {
80
80
  }
81
81
 
82
82
  hash() {
83
- return combine_hash(
83
+ return hash_mix3(
84
84
  computeHashFloat(this.airAbsorption[0]),
85
85
  computeHashFloat(this.airAbsorption[1]),
86
86
  computeHashFloat(this.airAbsorption[2])
@@ -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
  /**
@@ -79,7 +79,7 @@ export class AcousticDirectivity {
79
79
  }
80
80
 
81
81
  hash() {
82
- return combine_hash(
82
+ return hash_mix2(
83
83
  computeHashFloat(this.dipoleWeight),
84
84
  computeHashFloat(this.dipolePower)
85
85
  );
@@ -1 +1 @@
1
- {"version":3,"file":"AcousticMaterial.d.ts","sourceRoot":"","sources":["../../../../../../src/engine/sound/simulation/definition/AcousticMaterial.js"],"names":[],"mappings":"AAGA;;;;;;GAMG;AACH;IA4BI;;;OAGG;IACH,uDAHW;QAAC,UAAU,CAAC,EAAC,MAAM,EAAE,GAAC,YAAY,CAAC;QAAC,UAAU,CAAC,EAAC,MAAM,CAAC;QAAC,YAAY,CAAC,EAAC,MAAM,EAAE,GAAC,YAAY,CAAA;KAAC,GAC1F,gBAAgB,CAsB5B;IAnDD;;;;OAIG;IACH,YAFU,YAAY,CAEyB;IAE/C;;;OAGG;IACH,YAFU,MAAM,CAEC;IAEjB;;;;;;;;;;;OAWG;IACH,cAFU,YAAY,CAEqB;IA4B3C;;;OAGG;IACH,cAHW,gBAAgB,GACd,OAAO,CAUnB;IAED,eAUC;IAED;;OAEG;IACH,SAFa,gBAAgB,CAc5B;IAED;;;;MAMC;IAED;;OAEG;IACH,mDAFW;QAAC,UAAU,EAAC,MAAM,EAAE,CAAC;QAAC,UAAU,EAAC,MAAM,CAAC;QAAC,YAAY,EAAC,MAAM,EAAE,CAAA;KAAC,QAUzE;CACJ"}
1
+ {"version":3,"file":"AcousticMaterial.d.ts","sourceRoot":"","sources":["../../../../../../src/engine/sound/simulation/definition/AcousticMaterial.js"],"names":[],"mappings":"AAGA;;;;;;GAMG;AACH;IA4BI;;;OAGG;IACH,uDAHW;QAAC,UAAU,CAAC,EAAC,MAAM,EAAE,GAAC,YAAY,CAAC;QAAC,UAAU,CAAC,EAAC,MAAM,CAAC;QAAC,YAAY,CAAC,EAAC,MAAM,EAAE,GAAC,YAAY,CAAA;KAAC,GAC1F,gBAAgB,CAsB5B;IAnDD;;;;OAIG;IACH,YAFU,YAAY,CAEyB;IAE/C;;;OAGG;IACH,YAFU,MAAM,CAEC;IAEjB;;;;;;;;;;;OAWG;IACH,cAFU,YAAY,CAEqB;IA4B3C;;;OAGG;IACH,cAHW,gBAAgB,GACd,OAAO,CAUnB;IAED,eAcC;IAED;;OAEG;IACH,SAFa,gBAAgB,CAc5B;IAED;;;;MAMC;IAED;;OAEG;IACH,mDAFW;QAAC,UAAU,EAAC,MAAM,EAAE,CAAC;QAAC,UAAU,EAAC,MAAM,CAAC;QAAC,YAAY,EAAC,MAAM,EAAE,CAAA;KAAC,QAUzE;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
 
4
4
  /**
@@ -77,12 +77,16 @@ export class AcousticMaterial {
77
77
  }
78
78
 
79
79
  hash() {
80
- return combine_hash(
81
- computeHashFloat(this.absorption[0]),
82
- computeHashFloat(this.absorption[1]),
83
- computeHashFloat(this.absorption[2]),
84
- computeHashFloat(this.scattering),
85
- computeHashFloat(this.transmission[0]),
80
+ return hash_mix3(
81
+ hash_mix3(
82
+ hash_mix3(
83
+ computeHashFloat(this.absorption[0]),
84
+ computeHashFloat(this.absorption[1]),
85
+ computeHashFloat(this.absorption[2])
86
+ ),
87
+ computeHashFloat(this.scattering),
88
+ computeHashFloat(this.transmission[0])
89
+ ),
86
90
  computeHashFloat(this.transmission[1]),
87
91
  computeHashFloat(this.transmission[2])
88
92
  );