@codexo/exojs 0.7.11 → 0.7.12
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +108 -0
- package/dist/esm/animation/Tween.d.ts +60 -1
- package/dist/esm/animation/Tween.js +60 -1
- package/dist/esm/animation/Tween.js.map +1 -1
- package/dist/esm/animation/TweenManager.d.ts +10 -0
- package/dist/esm/animation/TweenManager.js +10 -0
- package/dist/esm/animation/TweenManager.js.map +1 -1
- package/dist/esm/animation/types.d.ts +15 -0
- package/dist/esm/animation/types.js +6 -0
- package/dist/esm/animation/types.js.map +1 -1
- package/dist/esm/audio/AbstractMedia.d.ts +11 -0
- package/dist/esm/audio/AbstractMedia.js +10 -0
- package/dist/esm/audio/AbstractMedia.js.map +1 -1
- package/dist/esm/audio/AudioAnalyser.d.ts +21 -0
- package/dist/esm/audio/AudioAnalyser.js +16 -0
- package/dist/esm/audio/AudioAnalyser.js.map +1 -1
- package/dist/esm/audio/AudioBus.d.ts +37 -0
- package/dist/esm/audio/AudioBus.js +36 -0
- package/dist/esm/audio/AudioBus.js.map +1 -1
- package/dist/esm/audio/AudioFilter.d.ts +7 -0
- package/dist/esm/audio/AudioFilter.js +6 -0
- package/dist/esm/audio/AudioFilter.js.map +1 -1
- package/dist/esm/audio/AudioListener.d.ts +19 -0
- package/dist/esm/audio/AudioListener.js +11 -0
- package/dist/esm/audio/AudioListener.js.map +1 -1
- package/dist/esm/audio/AudioManager.d.ts +37 -0
- package/dist/esm/audio/AudioManager.js +37 -0
- package/dist/esm/audio/AudioManager.js.map +1 -1
- package/dist/esm/audio/BeatDetector.d.ts +21 -0
- package/dist/esm/audio/BeatDetector.js +21 -0
- package/dist/esm/audio/BeatDetector.js.map +1 -1
- package/dist/esm/audio/Media.d.ts +11 -0
- package/dist/esm/audio/Music.d.ts +12 -0
- package/dist/esm/audio/Music.js +12 -0
- package/dist/esm/audio/Music.js.map +1 -1
- package/dist/esm/audio/Sound.d.ts +25 -0
- package/dist/esm/audio/Sound.js +18 -0
- package/dist/esm/audio/Sound.js.map +1 -1
- package/dist/esm/audio/audio-context.d.ts +48 -0
- package/dist/esm/audio/audio-context.js +48 -5
- package/dist/esm/audio/audio-context.js.map +1 -1
- package/dist/esm/audio/filters/ChorusFilter.d.ts +5 -0
- package/dist/esm/audio/filters/ChorusFilter.js +4 -0
- package/dist/esm/audio/filters/ChorusFilter.js.map +1 -1
- package/dist/esm/audio/filters/CompressorFilter.d.ts +12 -0
- package/dist/esm/audio/filters/CompressorFilter.js +11 -0
- package/dist/esm/audio/filters/CompressorFilter.js.map +1 -1
- package/dist/esm/audio/filters/DelayFilter.d.ts +11 -0
- package/dist/esm/audio/filters/DelayFilter.js +10 -0
- package/dist/esm/audio/filters/DelayFilter.js.map +1 -1
- package/dist/esm/audio/filters/DuckingFilter.d.ts +13 -0
- package/dist/esm/audio/filters/DuckingFilter.js +12 -0
- package/dist/esm/audio/filters/DuckingFilter.js.map +1 -1
- package/dist/esm/audio/filters/EqualizerFilter.d.ts +20 -0
- package/dist/esm/audio/filters/EqualizerFilter.js +40 -0
- package/dist/esm/audio/filters/EqualizerFilter.js.map +1 -1
- package/dist/esm/audio/filters/GranularFilter.d.ts +6 -0
- package/dist/esm/audio/filters/GranularFilter.js +6 -0
- package/dist/esm/audio/filters/GranularFilter.js.map +1 -1
- package/dist/esm/audio/filters/HighpassFilter.d.ts +10 -0
- package/dist/esm/audio/filters/HighpassFilter.js +9 -0
- package/dist/esm/audio/filters/HighpassFilter.js.map +1 -1
- package/dist/esm/audio/filters/LowpassFilter.d.ts +10 -0
- package/dist/esm/audio/filters/LowpassFilter.js +9 -0
- package/dist/esm/audio/filters/LowpassFilter.js.map +1 -1
- package/dist/esm/audio/filters/PitchShiftFilter.d.ts +2 -0
- package/dist/esm/audio/filters/PitchShiftFilter.js +2 -0
- package/dist/esm/audio/filters/PitchShiftFilter.js.map +1 -1
- package/dist/esm/audio/filters/ReverbFilter.d.ts +12 -0
- package/dist/esm/audio/filters/ReverbFilter.js +11 -0
- package/dist/esm/audio/filters/ReverbFilter.js.map +1 -1
- package/dist/esm/audio/filters/VocoderFilter.d.ts +11 -0
- package/dist/esm/audio/filters/VocoderFilter.js +11 -0
- package/dist/esm/audio/filters/VocoderFilter.js.map +1 -1
- package/dist/esm/audio/filters/WorkletFilter.d.ts +6 -1
- package/dist/esm/audio/filters/WorkletFilter.js +6 -1
- package/dist/esm/audio/filters/WorkletFilter.js.map +1 -1
- package/dist/esm/core/Application.d.ts +63 -0
- package/dist/esm/core/Application.js +61 -0
- package/dist/esm/core/Application.js.map +1 -1
- package/dist/esm/core/Bounds.d.ts +23 -0
- package/dist/esm/core/Bounds.js +23 -0
- package/dist/esm/core/Bounds.js.map +1 -1
- package/dist/esm/core/Clock.d.ts +21 -0
- package/dist/esm/core/Clock.js +21 -0
- package/dist/esm/core/Clock.js.map +1 -1
- package/dist/esm/core/Color.d.ts +35 -0
- package/dist/esm/core/Color.js +35 -0
- package/dist/esm/core/Color.js.map +1 -1
- package/dist/esm/core/Scene.d.ts +46 -0
- package/dist/esm/core/Scene.js +27 -0
- package/dist/esm/core/Scene.js.map +1 -1
- package/dist/esm/core/SceneManager.d.ts +62 -0
- package/dist/esm/core/SceneManager.js +49 -0
- package/dist/esm/core/SceneManager.js.map +1 -1
- package/dist/esm/core/SceneNode.d.ts +31 -0
- package/dist/esm/core/SceneNode.js +31 -0
- package/dist/esm/core/SceneNode.js.map +1 -1
- package/dist/esm/core/Signal.d.ts +44 -0
- package/dist/esm/core/Signal.js +39 -0
- package/dist/esm/core/Signal.js.map +1 -1
- package/dist/esm/core/Time.d.ts +21 -0
- package/dist/esm/core/Time.js +21 -0
- package/dist/esm/core/Time.js.map +1 -1
- package/dist/esm/core/Timer.d.ts +7 -0
- package/dist/esm/core/Timer.js +7 -0
- package/dist/esm/core/Timer.js.map +1 -1
- package/dist/esm/core/capabilities.d.ts +12 -0
- package/dist/esm/core/capabilities.js +12 -0
- package/dist/esm/core/capabilities.js.map +1 -1
- package/dist/esm/core/types.d.ts +37 -0
- package/dist/esm/core/utils.d.ts +48 -0
- package/dist/esm/core/utils.js +48 -0
- package/dist/esm/core/utils.js.map +1 -1
- package/dist/esm/debug/BoundingBoxesLayer.d.ts +8 -0
- package/dist/esm/debug/BoundingBoxesLayer.js +8 -0
- package/dist/esm/debug/BoundingBoxesLayer.js.map +1 -1
- package/dist/esm/debug/DebugLayer.d.ts +16 -3
- package/dist/esm/debug/DebugLayer.js +11 -3
- package/dist/esm/debug/DebugLayer.js.map +1 -1
- package/dist/esm/debug/DebugOverlay.d.ts +11 -0
- package/dist/esm/debug/DebugOverlay.js +6 -0
- package/dist/esm/debug/DebugOverlay.js.map +1 -1
- package/dist/esm/debug/HitTestLayer.d.ts +9 -0
- package/dist/esm/debug/HitTestLayer.js +9 -0
- package/dist/esm/debug/HitTestLayer.js.map +1 -1
- package/dist/esm/debug/PerformanceLayer.d.ts +17 -1
- package/dist/esm/debug/PerformanceLayer.js +18 -0
- package/dist/esm/debug/PerformanceLayer.js.map +1 -1
- package/dist/esm/debug/PointerStackLayer.d.ts +8 -0
- package/dist/esm/debug/PointerStackLayer.js +10 -2
- package/dist/esm/debug/PointerStackLayer.js.map +1 -1
- package/dist/esm/index.js +2 -2
- package/dist/esm/input/ArcadeStickGamepadMapping.d.ts +7 -0
- package/dist/esm/input/ArcadeStickGamepadMapping.js +7 -0
- package/dist/esm/input/ArcadeStickGamepadMapping.js.map +1 -1
- package/dist/esm/input/GameCubeGamepadMapping.d.ts +9 -0
- package/dist/esm/input/GameCubeGamepadMapping.js +9 -0
- package/dist/esm/input/GameCubeGamepadMapping.js.map +1 -1
- package/dist/esm/input/Gamepad.d.ts +48 -0
- package/dist/esm/input/Gamepad.js +43 -0
- package/dist/esm/input/Gamepad.js.map +1 -1
- package/dist/esm/input/GamepadChannels.d.ts +8 -0
- package/dist/esm/input/GamepadChannels.js +8 -0
- package/dist/esm/input/GamepadChannels.js.map +1 -1
- package/dist/esm/input/GamepadControl.d.ts +18 -0
- package/dist/esm/input/GamepadControl.js +13 -0
- package/dist/esm/input/GamepadControl.js.map +1 -1
- package/dist/esm/input/GamepadDefinitions.d.ts +64 -1
- package/dist/esm/input/GamepadDefinitions.js +40 -1
- package/dist/esm/input/GamepadDefinitions.js.map +1 -1
- package/dist/esm/input/GamepadMapping.d.ts +32 -2
- package/dist/esm/input/GamepadMapping.js +24 -0
- package/dist/esm/input/GamepadMapping.js.map +1 -1
- package/dist/esm/input/GamepadPromptLayouts.d.ts +32 -1
- package/dist/esm/input/GamepadPromptLayouts.js +25 -1
- package/dist/esm/input/GamepadPromptLayouts.js.map +1 -1
- package/dist/esm/input/GenericDualAnalogGamepadMapping.d.ts +10 -0
- package/dist/esm/input/GenericDualAnalogGamepadMapping.js +10 -0
- package/dist/esm/input/GenericDualAnalogGamepadMapping.js.map +1 -1
- package/dist/esm/input/GestureRecognizer.d.ts +11 -2
- package/dist/esm/input/GestureRecognizer.js +11 -2
- package/dist/esm/input/GestureRecognizer.js.map +1 -1
- package/dist/esm/input/Input.d.ts +24 -0
- package/dist/esm/input/Input.js +22 -0
- package/dist/esm/input/Input.js.map +1 -1
- package/dist/esm/input/InputManager.d.ts +33 -0
- package/dist/esm/input/InputManager.js +33 -0
- package/dist/esm/input/InputManager.js.map +1 -1
- package/dist/esm/input/InteractionEvent.d.ts +13 -0
- package/dist/esm/input/InteractionEvent.js +8 -0
- package/dist/esm/input/InteractionEvent.js.map +1 -1
- package/dist/esm/input/InteractionManager.d.ts +33 -4
- package/dist/esm/input/InteractionManager.js +33 -4
- package/dist/esm/input/InteractionManager.js.map +1 -1
- package/dist/esm/input/JoyConLeftGamepadMapping.d.ts +9 -0
- package/dist/esm/input/JoyConLeftGamepadMapping.js +9 -0
- package/dist/esm/input/JoyConLeftGamepadMapping.js.map +1 -1
- package/dist/esm/input/JoyConRightGamepadMapping.d.ts +9 -0
- package/dist/esm/input/JoyConRightGamepadMapping.js +9 -0
- package/dist/esm/input/JoyConRightGamepadMapping.js.map +1 -1
- package/dist/esm/input/PlayStationGamepadMapping.d.ts +8 -0
- package/dist/esm/input/PlayStationGamepadMapping.js +8 -0
- package/dist/esm/input/PlayStationGamepadMapping.js.map +1 -1
- package/dist/esm/input/Pointer.d.ts +22 -0
- package/dist/esm/input/Pointer.js +22 -0
- package/dist/esm/input/Pointer.js.map +1 -1
- package/dist/esm/input/SteamControllerGamepadMapping.d.ts +8 -0
- package/dist/esm/input/SteamControllerGamepadMapping.js +8 -0
- package/dist/esm/input/SteamControllerGamepadMapping.js.map +1 -1
- package/dist/esm/input/SwitchProGamepadMapping.d.ts +9 -0
- package/dist/esm/input/SwitchProGamepadMapping.js +9 -0
- package/dist/esm/input/SwitchProGamepadMapping.js.map +1 -1
- package/dist/esm/input/XboxGamepadMapping.d.ts +8 -0
- package/dist/esm/input/XboxGamepadMapping.js +8 -0
- package/dist/esm/input/XboxGamepadMapping.js.map +1 -1
- package/dist/esm/input/types.d.ts +20 -0
- package/dist/esm/input/types.js +20 -0
- package/dist/esm/input/types.js.map +1 -1
- package/dist/esm/math/AbstractVector.d.ts +83 -0
- package/dist/esm/math/AbstractVector.js +83 -0
- package/dist/esm/math/AbstractVector.js.map +1 -1
- package/dist/esm/math/Circle.d.ts +32 -0
- package/dist/esm/math/Circle.js +34 -2
- package/dist/esm/math/Circle.js.map +1 -1
- package/dist/esm/math/CircleLike.d.ts +1 -0
- package/dist/esm/math/Collision.d.ts +39 -0
- package/dist/esm/math/Collision.js +5 -0
- package/dist/esm/math/Collision.js.map +1 -1
- package/dist/esm/math/Ellipse.d.ts +11 -0
- package/dist/esm/math/Ellipse.js +18 -2
- package/dist/esm/math/Ellipse.js.map +1 -1
- package/dist/esm/math/EllipseLike.d.ts +3 -0
- package/dist/esm/math/Flags.d.ts +31 -0
- package/dist/esm/math/Flags.js +31 -0
- package/dist/esm/math/Flags.js.map +1 -1
- package/dist/esm/math/Interval.d.ts +15 -0
- package/dist/esm/math/Interval.js +15 -0
- package/dist/esm/math/Interval.js.map +1 -1
- package/dist/esm/math/Line.d.ts +17 -1
- package/dist/esm/math/Line.js +17 -1
- package/dist/esm/math/Line.js.map +1 -1
- package/dist/esm/math/LineLike.d.ts +1 -0
- package/dist/esm/math/Matrix.d.ts +44 -3
- package/dist/esm/math/Matrix.js +44 -3
- package/dist/esm/math/Matrix.js.map +1 -1
- package/dist/esm/math/ObservableSize.d.ts +7 -0
- package/dist/esm/math/ObservableSize.js +7 -0
- package/dist/esm/math/ObservableSize.js.map +1 -1
- package/dist/esm/math/ObservableVector.d.ts +9 -0
- package/dist/esm/math/ObservableVector.js +9 -0
- package/dist/esm/math/ObservableVector.js.map +1 -1
- package/dist/esm/math/PointLike.d.ts +1 -0
- package/dist/esm/math/PolarVector.d.ts +15 -0
- package/dist/esm/math/PolarVector.js +16 -1
- package/dist/esm/math/PolarVector.js.map +1 -1
- package/dist/esm/math/Polygon.d.ts +20 -0
- package/dist/esm/math/Polygon.js +20 -0
- package/dist/esm/math/Polygon.js.map +1 -1
- package/dist/esm/math/PolygonLike.d.ts +4 -0
- package/dist/esm/math/Quadtree.d.ts +40 -3
- package/dist/esm/math/Quadtree.js +39 -3
- package/dist/esm/math/Quadtree.js.map +1 -1
- package/dist/esm/math/Random.d.ts +25 -0
- package/dist/esm/math/Random.js +25 -0
- package/dist/esm/math/Random.js.map +1 -1
- package/dist/esm/math/Rectangle.d.ts +15 -0
- package/dist/esm/math/Rectangle.js +17 -2
- package/dist/esm/math/Rectangle.js.map +1 -1
- package/dist/esm/math/RectangleLike.d.ts +1 -0
- package/dist/esm/math/Segment.d.ts +7 -0
- package/dist/esm/math/Segment.js +7 -0
- package/dist/esm/math/Segment.js.map +1 -1
- package/dist/esm/math/ShapeLike.d.ts +6 -0
- package/dist/esm/math/Size.d.ts +9 -0
- package/dist/esm/math/Size.js +9 -0
- package/dist/esm/math/Size.js.map +1 -1
- package/dist/esm/math/Vector.d.ts +16 -0
- package/dist/esm/math/Vector.js +16 -0
- package/dist/esm/math/Vector.js.map +1 -1
- package/dist/esm/math/collision-detection.d.ts +47 -1
- package/dist/esm/math/collision-detection.js +228 -17
- package/dist/esm/math/collision-detection.js.map +1 -1
- package/dist/esm/math/collision-primitives.d.ts +23 -0
- package/dist/esm/math/collision-primitives.js +23 -0
- package/dist/esm/math/collision-primitives.js.map +1 -1
- package/dist/esm/math/geometry.d.ts +42 -0
- package/dist/esm/math/geometry.js +37 -0
- package/dist/esm/math/geometry.js.map +1 -1
- package/dist/esm/math/utils.d.ts +41 -0
- package/dist/esm/math/utils.js +41 -0
- package/dist/esm/math/utils.js.map +1 -1
- package/dist/esm/particles/Particle.d.ts +37 -0
- package/dist/esm/particles/Particle.js +37 -0
- package/dist/esm/particles/Particle.js.map +1 -1
- package/dist/esm/particles/ParticleProperties.d.ts +15 -0
- package/dist/esm/particles/ParticleSystem.d.ts +69 -0
- package/dist/esm/particles/ParticleSystem.js +69 -0
- package/dist/esm/particles/ParticleSystem.js.map +1 -1
- package/dist/esm/particles/affectors/ColorAffector.d.ts +13 -0
- package/dist/esm/particles/affectors/ColorAffector.js +13 -0
- package/dist/esm/particles/affectors/ColorAffector.js.map +1 -1
- package/dist/esm/particles/affectors/ForceAffector.d.ts +11 -0
- package/dist/esm/particles/affectors/ForceAffector.js +11 -0
- package/dist/esm/particles/affectors/ForceAffector.js.map +1 -1
- package/dist/esm/particles/affectors/ParticleAffector.d.ts +13 -0
- package/dist/esm/particles/affectors/ScaleAffector.d.ts +10 -0
- package/dist/esm/particles/affectors/ScaleAffector.js +10 -0
- package/dist/esm/particles/affectors/ScaleAffector.js.map +1 -1
- package/dist/esm/particles/affectors/TorqueAffector.d.ts +11 -0
- package/dist/esm/particles/affectors/TorqueAffector.js +11 -0
- package/dist/esm/particles/affectors/TorqueAffector.js.map +1 -1
- package/dist/esm/particles/emitters/ParticleEmitter.d.ts +13 -0
- package/dist/esm/particles/emitters/ParticleOptions.d.ts +16 -0
- package/dist/esm/particles/emitters/ParticleOptions.js +16 -0
- package/dist/esm/particles/emitters/ParticleOptions.js.map +1 -1
- package/dist/esm/particles/emitters/UniversalEmitter.d.ts +23 -0
- package/dist/esm/particles/emitters/UniversalEmitter.js +23 -0
- package/dist/esm/particles/emitters/UniversalEmitter.js.map +1 -1
- package/dist/esm/rendering/CallbackRenderPass.d.ts +12 -0
- package/dist/esm/rendering/CallbackRenderPass.js +12 -0
- package/dist/esm/rendering/CallbackRenderPass.js.map +1 -1
- package/dist/esm/rendering/Container.d.ts +43 -0
- package/dist/esm/rendering/Container.js +43 -0
- package/dist/esm/rendering/Container.js.map +1 -1
- package/dist/esm/rendering/Drawable.d.ts +22 -0
- package/dist/esm/rendering/Drawable.js +22 -0
- package/dist/esm/rendering/Drawable.js.map +1 -1
- package/dist/esm/rendering/RenderBackend.d.ts +13 -0
- package/dist/esm/rendering/RenderBackendType.d.ts +4 -0
- package/dist/esm/rendering/RenderBackendType.js +4 -0
- package/dist/esm/rendering/RenderBackendType.js.map +1 -1
- package/dist/esm/rendering/RenderNode.d.ts +18 -0
- package/dist/esm/rendering/RenderNode.js +18 -0
- package/dist/esm/rendering/RenderNode.js.map +1 -1
- package/dist/esm/rendering/RenderPass.d.ts +8 -0
- package/dist/esm/rendering/RenderStats.d.ts +19 -0
- package/dist/esm/rendering/RenderStats.js +7 -0
- package/dist/esm/rendering/RenderStats.js.map +1 -1
- package/dist/esm/rendering/RenderTarget.d.ts +17 -0
- package/dist/esm/rendering/RenderTarget.js +17 -0
- package/dist/esm/rendering/RenderTarget.js.map +1 -1
- package/dist/esm/rendering/RenderTargetPass.d.ts +11 -0
- package/dist/esm/rendering/RenderTargetPass.js +7 -0
- package/dist/esm/rendering/RenderTargetPass.js.map +1 -1
- package/dist/esm/rendering/Renderer.d.ts +15 -0
- package/dist/esm/rendering/RendererRegistry.d.ts +7 -0
- package/dist/esm/rendering/RendererRegistry.js +7 -0
- package/dist/esm/rendering/RendererRegistry.js.map +1 -1
- package/dist/esm/rendering/View.d.ts +67 -2
- package/dist/esm/rendering/View.js +57 -0
- package/dist/esm/rendering/View.js.map +1 -1
- package/dist/esm/rendering/filters/BlurFilter.d.ts +9 -0
- package/dist/esm/rendering/filters/BlurFilter.js +8 -0
- package/dist/esm/rendering/filters/BlurFilter.js.map +1 -1
- package/dist/esm/rendering/filters/ColorFilter.d.ts +7 -0
- package/dist/esm/rendering/filters/ColorFilter.js +7 -0
- package/dist/esm/rendering/filters/ColorFilter.js.map +1 -1
- package/dist/esm/rendering/filters/Filter.d.ts +23 -0
- package/dist/esm/rendering/filters/Filter.js +20 -0
- package/dist/esm/rendering/filters/Filter.js.map +1 -1
- package/dist/esm/rendering/filters/WebGl2ShaderFilter.d.ts +5 -0
- package/dist/esm/rendering/filters/WebGl2ShaderFilter.js +5 -0
- package/dist/esm/rendering/filters/WebGl2ShaderFilter.js.map +1 -1
- package/dist/esm/rendering/filters/WebGpuShaderFilter.d.ts +5 -0
- package/dist/esm/rendering/filters/WebGpuShaderFilter.js +5 -0
- package/dist/esm/rendering/filters/WebGpuShaderFilter.js.map +1 -1
- package/dist/esm/rendering/mesh/Mesh.d.ts +2 -0
- package/dist/esm/rendering/mesh/Mesh.js +2 -0
- package/dist/esm/rendering/mesh/Mesh.js.map +1 -1
- package/dist/esm/rendering/primitives/Graphics.d.ts +34 -0
- package/dist/esm/rendering/primitives/Graphics.js +34 -0
- package/dist/esm/rendering/primitives/Graphics.js.map +1 -1
- package/dist/esm/rendering/shader/Shader.d.ts +36 -0
- package/dist/esm/rendering/shader/Shader.js +26 -0
- package/dist/esm/rendering/shader/Shader.js.map +1 -1
- package/dist/esm/rendering/shader/ShaderAttribute.d.ts +13 -0
- package/dist/esm/rendering/shader/ShaderAttribute.js +13 -0
- package/dist/esm/rendering/shader/ShaderAttribute.js.map +1 -1
- package/dist/esm/rendering/shader/ShaderUniform.d.ts +27 -0
- package/dist/esm/rendering/shader/ShaderUniform.js +28 -1
- package/dist/esm/rendering/shader/ShaderUniform.js.map +1 -1
- package/dist/esm/rendering/sprite/AnimatedSprite.d.ts +38 -0
- package/dist/esm/rendering/sprite/AnimatedSprite.js +36 -0
- package/dist/esm/rendering/sprite/AnimatedSprite.js.map +1 -1
- package/dist/esm/rendering/sprite/Sprite.d.ts +56 -0
- package/dist/esm/rendering/sprite/Sprite.js +56 -0
- package/dist/esm/rendering/sprite/Sprite.js.map +1 -1
- package/dist/esm/rendering/sprite/Spritesheet.d.ts +25 -0
- package/dist/esm/rendering/sprite/Spritesheet.js +20 -0
- package/dist/esm/rendering/sprite/Spritesheet.js.map +1 -1
- package/dist/esm/rendering/text/Text.d.ts +2 -0
- package/dist/esm/rendering/text/Text.js +2 -0
- package/dist/esm/rendering/text/Text.js.map +1 -1
- package/dist/esm/rendering/text/TextStyle.d.ts +29 -0
- package/dist/esm/rendering/text/TextStyle.js +24 -0
- package/dist/esm/rendering/text/TextStyle.js.map +1 -1
- package/dist/esm/rendering/text/types.d.ts +1 -0
- package/dist/esm/rendering/texture/RenderTexture.d.ts +16 -0
- package/dist/esm/rendering/texture/RenderTexture.js +16 -0
- package/dist/esm/rendering/texture/RenderTexture.js.map +1 -1
- package/dist/esm/rendering/texture/Sampler.d.ts +23 -0
- package/dist/esm/rendering/texture/Sampler.js +13 -0
- package/dist/esm/rendering/texture/Sampler.js.map +1 -1
- package/dist/esm/rendering/texture/Texture.d.ts +30 -0
- package/dist/esm/rendering/texture/Texture.js +30 -0
- package/dist/esm/rendering/texture/Texture.js.map +1 -1
- package/dist/esm/rendering/types.d.ts +29 -0
- package/dist/esm/rendering/types.js +29 -0
- package/dist/esm/rendering/types.js.map +1 -1
- package/dist/esm/rendering/utils.d.ts +20 -0
- package/dist/esm/rendering/utils.js +10 -0
- package/dist/esm/rendering/utils.js.map +1 -1
- package/dist/esm/rendering/video/Video.d.ts +35 -1
- package/dist/esm/rendering/video/Video.js +36 -2
- package/dist/esm/rendering/video/Video.js.map +1 -1
- package/dist/esm/rendering/webgl2/AbstractWebGl2BatchedRenderer.d.ts +7 -0
- package/dist/esm/rendering/webgl2/AbstractWebGl2BatchedRenderer.js +7 -0
- package/dist/esm/rendering/webgl2/AbstractWebGl2BatchedRenderer.js.map +1 -1
- package/dist/esm/rendering/webgl2/WebGl2Backend.d.ts +13 -0
- package/dist/esm/rendering/webgl2/WebGl2Backend.js +13 -0
- package/dist/esm/rendering/webgl2/WebGl2Backend.js.map +1 -1
- package/dist/esm/rendering/webgl2/WebGl2RenderBuffer.d.ts +8 -0
- package/dist/esm/rendering/webgl2/WebGl2RenderBuffer.js +8 -0
- package/dist/esm/rendering/webgl2/WebGl2RenderBuffer.js.map +1 -1
- package/dist/esm/rendering/webgpu/WebGpuBackend.d.ts +35 -0
- package/dist/esm/rendering/webgpu/WebGpuBackend.js +135 -5
- package/dist/esm/rendering/webgpu/WebGpuBackend.js.map +1 -1
- package/dist/esm/resources/AbstractAssetFactory.d.ts +20 -0
- package/dist/esm/resources/AbstractAssetFactory.js +20 -0
- package/dist/esm/resources/AbstractAssetFactory.js.map +1 -1
- package/dist/esm/resources/AssetFactory.d.ts +26 -0
- package/dist/esm/resources/AssetManifest.d.ts +45 -0
- package/dist/esm/resources/AssetManifest.js +25 -0
- package/dist/esm/resources/AssetManifest.js.map +1 -1
- package/dist/esm/resources/CacheFirstStrategy.d.ts +12 -0
- package/dist/esm/resources/CacheFirstStrategy.js +12 -0
- package/dist/esm/resources/CacheFirstStrategy.js.map +1 -1
- package/dist/esm/resources/CacheStore.d.ts +23 -0
- package/dist/esm/resources/CacheStrategy.d.ts +20 -0
- package/dist/esm/resources/Database.d.ts +45 -0
- package/dist/esm/resources/FactoryRegistry.d.ts +28 -0
- package/dist/esm/resources/FactoryRegistry.js +24 -0
- package/dist/esm/resources/FactoryRegistry.js.map +1 -1
- package/dist/esm/resources/IndexedDbDatabase.d.ts +22 -1
- package/dist/esm/resources/IndexedDbDatabase.js +21 -0
- package/dist/esm/resources/IndexedDbDatabase.js.map +1 -1
- package/dist/esm/resources/IndexedDbStore.d.ts +20 -0
- package/dist/esm/resources/IndexedDbStore.js +12 -0
- package/dist/esm/resources/IndexedDbStore.js.map +1 -1
- package/dist/esm/resources/Loader.d.ts +167 -0
- package/dist/esm/resources/Loader.js +110 -0
- package/dist/esm/resources/Loader.js.map +1 -1
- package/dist/esm/resources/NetworkOnlyStrategy.d.ts +8 -0
- package/dist/esm/resources/NetworkOnlyStrategy.js +8 -0
- package/dist/esm/resources/NetworkOnlyStrategy.js.map +1 -1
- package/dist/esm/resources/factories/BinaryFactory.d.ts +13 -0
- package/dist/esm/resources/factories/BinaryFactory.js +13 -0
- package/dist/esm/resources/factories/BinaryFactory.js.map +1 -1
- package/dist/esm/resources/factories/FontFactory.d.ts +37 -0
- package/dist/esm/resources/factories/FontFactory.js +26 -0
- package/dist/esm/resources/factories/FontFactory.js.map +1 -1
- package/dist/esm/resources/factories/ImageFactory.d.ts +24 -0
- package/dist/esm/resources/factories/ImageFactory.js +19 -0
- package/dist/esm/resources/factories/ImageFactory.js.map +1 -1
- package/dist/esm/resources/factories/JsonFactory.d.ts +13 -0
- package/dist/esm/resources/factories/JsonFactory.js +13 -0
- package/dist/esm/resources/factories/JsonFactory.js.map +1 -1
- package/dist/esm/resources/factories/MusicFactory.d.ts +36 -0
- package/dist/esm/resources/factories/MusicFactory.js +44 -4
- package/dist/esm/resources/factories/MusicFactory.js.map +1 -1
- package/dist/esm/resources/factories/SoundFactory.d.ts +29 -0
- package/dist/esm/resources/factories/SoundFactory.js +18 -0
- package/dist/esm/resources/factories/SoundFactory.js.map +1 -1
- package/dist/esm/resources/factories/SvgFactory.d.ts +19 -0
- package/dist/esm/resources/factories/SvgFactory.js +19 -0
- package/dist/esm/resources/factories/SvgFactory.js.map +1 -1
- package/dist/esm/resources/factories/TextFactory.d.ts +11 -0
- package/dist/esm/resources/factories/TextFactory.js +11 -0
- package/dist/esm/resources/factories/TextFactory.js.map +1 -1
- package/dist/esm/resources/factories/TextureFactory.d.ts +25 -0
- package/dist/esm/resources/factories/TextureFactory.js +20 -0
- package/dist/esm/resources/factories/TextureFactory.js.map +1 -1
- package/dist/esm/resources/factories/VideoFactory.d.ts +37 -0
- package/dist/esm/resources/factories/VideoFactory.js +48 -5
- package/dist/esm/resources/factories/VideoFactory.js.map +1 -1
- package/dist/esm/resources/factories/VttFactory.d.ts +18 -0
- package/dist/esm/resources/factories/VttFactory.js +24 -0
- package/dist/esm/resources/factories/VttFactory.js.map +1 -1
- package/dist/esm/resources/factories/WasmFactory.d.ts +16 -0
- package/dist/esm/resources/factories/WasmFactory.js +16 -0
- package/dist/esm/resources/factories/WasmFactory.js.map +1 -1
- package/dist/esm/resources/utils.d.ts +10 -0
- package/dist/esm/resources/utils.js +10 -0
- package/dist/esm/resources/utils.js.map +1 -1
- package/dist/exo.esm.js +3392 -59
- package/dist/exo.esm.js.map +1 -1
- package/package.json +7 -8
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import type { AudioFilter } from './AudioFilter';
|
|
2
|
+
/** Construction options for {@link AudioBus}. */
|
|
2
3
|
export interface AudioBusOptions {
|
|
3
4
|
parent?: AudioBus | null;
|
|
4
5
|
volume?: number;
|
|
@@ -6,6 +7,26 @@ export interface AudioBusOptions {
|
|
|
6
7
|
pan?: number;
|
|
7
8
|
filters?: ReadonlyArray<AudioFilter>;
|
|
8
9
|
}
|
|
10
|
+
/**
|
|
11
|
+
* Hierarchical mixer node in the engine's audio routing graph. Each bus
|
|
12
|
+
* owns three Web Audio nodes (input gain, optional filter chain, stereo
|
|
13
|
+
* pan, output gain) and routes its output into its parent's input — the
|
|
14
|
+
* root bus connects to the destination.
|
|
15
|
+
*
|
|
16
|
+
* The three engine-built-in busses are constructed by {@link AudioManager}:
|
|
17
|
+
* `master` (root), `music` (child of master), `sound` (child of master).
|
|
18
|
+
* User code creates additional busses via `new AudioBus(name, { parent })`
|
|
19
|
+
* and registers them via {@link AudioManager.registerBus}.
|
|
20
|
+
*
|
|
21
|
+
* Volume is in 0..2 (1 = unity), pan is -1..1, mute is a boolean override.
|
|
22
|
+
* {@link AudioBus.fadeIn} / {@link AudioBus.fadeOut} produce smooth ramps
|
|
23
|
+
* over the output gain. Filter changes via {@link AudioBus.addFilter} /
|
|
24
|
+
* {@link AudioBus.removeFilter} rebuild the chain in place.
|
|
25
|
+
*
|
|
26
|
+
* Setup is deferred until the global `AudioContext` is unlocked
|
|
27
|
+
* (browser autoplay policy); operations that need live nodes are no-ops
|
|
28
|
+
* until that happens.
|
|
29
|
+
*/
|
|
9
30
|
export declare class AudioBus {
|
|
10
31
|
readonly name: string;
|
|
11
32
|
private _parent;
|
|
@@ -24,9 +45,25 @@ export declare class AudioBus {
|
|
|
24
45
|
get pan(): number;
|
|
25
46
|
set pan(value: number);
|
|
26
47
|
get inputNode(): GainNode | null;
|
|
48
|
+
/**
|
|
49
|
+
* Append a filter to the end of the chain (before the pan stage). The
|
|
50
|
+
* chain is rebuilt in place; existing audio routes through the new
|
|
51
|
+
* filter on the next frame.
|
|
52
|
+
*/
|
|
27
53
|
addFilter(filter: AudioFilter): this;
|
|
54
|
+
/** Remove `filter` from the chain. No-op if not present. Caller still owns + must `destroy()` it. */
|
|
28
55
|
removeFilter(filter: AudioFilter): this;
|
|
56
|
+
/**
|
|
57
|
+
* Linearly ramp the output gain from 0 to the current volume over
|
|
58
|
+
* `durationMs`. Cancels any in-flight ramps on the same gain node.
|
|
59
|
+
*/
|
|
29
60
|
fadeIn(durationMs: number): this;
|
|
61
|
+
/**
|
|
62
|
+
* Linearly ramp the output gain to 0 over `durationMs`. By default
|
|
63
|
+
* mutes the bus once the ramp completes (`stopAfter: true`); pass
|
|
64
|
+
* `stopAfter: false` to let the ramp finish silently while leaving
|
|
65
|
+
* `muted` unchanged.
|
|
66
|
+
*/
|
|
30
67
|
fadeOut(durationMs: number, options?: {
|
|
31
68
|
stopAfter?: boolean;
|
|
32
69
|
}): this;
|
|
@@ -1,6 +1,26 @@
|
|
|
1
1
|
import { clamp } from '../math/utils.js';
|
|
2
2
|
import { isAudioContextReady, getAudioContext, onAudioContextReady } from './audio-context.js';
|
|
3
3
|
|
|
4
|
+
/**
|
|
5
|
+
* Hierarchical mixer node in the engine's audio routing graph. Each bus
|
|
6
|
+
* owns three Web Audio nodes (input gain, optional filter chain, stereo
|
|
7
|
+
* pan, output gain) and routes its output into its parent's input — the
|
|
8
|
+
* root bus connects to the destination.
|
|
9
|
+
*
|
|
10
|
+
* The three engine-built-in busses are constructed by {@link AudioManager}:
|
|
11
|
+
* `master` (root), `music` (child of master), `sound` (child of master).
|
|
12
|
+
* User code creates additional busses via `new AudioBus(name, { parent })`
|
|
13
|
+
* and registers them via {@link AudioManager.registerBus}.
|
|
14
|
+
*
|
|
15
|
+
* Volume is in 0..2 (1 = unity), pan is -1..1, mute is a boolean override.
|
|
16
|
+
* {@link AudioBus.fadeIn} / {@link AudioBus.fadeOut} produce smooth ramps
|
|
17
|
+
* over the output gain. Filter changes via {@link AudioBus.addFilter} /
|
|
18
|
+
* {@link AudioBus.removeFilter} rebuild the chain in place.
|
|
19
|
+
*
|
|
20
|
+
* Setup is deferred until the global `AudioContext` is unlocked
|
|
21
|
+
* (browser autoplay policy); operations that need live nodes are no-ops
|
|
22
|
+
* until that happens.
|
|
23
|
+
*/
|
|
4
24
|
class AudioBus {
|
|
5
25
|
name;
|
|
6
26
|
_parent;
|
|
@@ -66,11 +86,17 @@ class AudioBus {
|
|
|
66
86
|
get inputNode() {
|
|
67
87
|
return this._setup?.inputNode ?? null;
|
|
68
88
|
}
|
|
89
|
+
/**
|
|
90
|
+
* Append a filter to the end of the chain (before the pan stage). The
|
|
91
|
+
* chain is rebuilt in place; existing audio routes through the new
|
|
92
|
+
* filter on the next frame.
|
|
93
|
+
*/
|
|
69
94
|
addFilter(filter) {
|
|
70
95
|
this._filters.push(filter);
|
|
71
96
|
this._rebuildFilterChain();
|
|
72
97
|
return this;
|
|
73
98
|
}
|
|
99
|
+
/** Remove `filter` from the chain. No-op if not present. Caller still owns + must `destroy()` it. */
|
|
74
100
|
removeFilter(filter) {
|
|
75
101
|
const index = this._filters.indexOf(filter);
|
|
76
102
|
if (index !== -1) {
|
|
@@ -79,6 +105,10 @@ class AudioBus {
|
|
|
79
105
|
}
|
|
80
106
|
return this;
|
|
81
107
|
}
|
|
108
|
+
/**
|
|
109
|
+
* Linearly ramp the output gain from 0 to the current volume over
|
|
110
|
+
* `durationMs`. Cancels any in-flight ramps on the same gain node.
|
|
111
|
+
*/
|
|
82
112
|
fadeIn(durationMs) {
|
|
83
113
|
this._clearScheduledStop();
|
|
84
114
|
if (durationMs <= 0 || !this._setup) {
|
|
@@ -92,6 +122,12 @@ class AudioBus {
|
|
|
92
122
|
node.gain.linearRampToValueAtTime(target, ctx.currentTime + durationMs / 1000);
|
|
93
123
|
return this;
|
|
94
124
|
}
|
|
125
|
+
/**
|
|
126
|
+
* Linearly ramp the output gain to 0 over `durationMs`. By default
|
|
127
|
+
* mutes the bus once the ramp completes (`stopAfter: true`); pass
|
|
128
|
+
* `stopAfter: false` to let the ramp finish silently while leaving
|
|
129
|
+
* `muted` unchanged.
|
|
130
|
+
*/
|
|
95
131
|
fadeOut(durationMs, options = {}) {
|
|
96
132
|
const stopAfter = options.stopAfter ?? true;
|
|
97
133
|
this._clearScheduledStop();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AudioBus.js","sources":["../../../../src/audio/AudioBus.ts"],"sourcesContent":[null],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"AudioBus.js","sources":["../../../../src/audio/AudioBus.ts"],"sourcesContent":[null],"names":[],"mappings":"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"}
|
|
@@ -1,3 +1,9 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Abstract base for all audio processing filters in ExoJS. Each filter exposes
|
|
3
|
+
* stable {@link inputNode} and {@link outputNode} AudioNodes that the audio bus
|
|
4
|
+
* connects into the Web Audio graph. Async filters (e.g., worklet-based) expose
|
|
5
|
+
* a {@link ready} promise that resolves once the filter is fully initialized.
|
|
6
|
+
*/
|
|
1
7
|
export declare abstract class AudioFilter {
|
|
2
8
|
/** The node where audio enters this filter. */
|
|
3
9
|
abstract get inputNode(): AudioNode;
|
|
@@ -5,5 +11,6 @@ export declare abstract class AudioFilter {
|
|
|
5
11
|
abstract get outputNode(): AudioNode;
|
|
6
12
|
/** Resolves when the filter is fully initialized. Defaults to immediately-resolved for sync filters. */
|
|
7
13
|
get ready(): Promise<void>;
|
|
14
|
+
/** Disconnects all audio nodes and releases resources. Must be called when the filter is no longer needed. */
|
|
8
15
|
abstract destroy(): void;
|
|
9
16
|
}
|
|
@@ -1,3 +1,9 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Abstract base for all audio processing filters in ExoJS. Each filter exposes
|
|
3
|
+
* stable {@link inputNode} and {@link outputNode} AudioNodes that the audio bus
|
|
4
|
+
* connects into the Web Audio graph. Async filters (e.g., worklet-based) expose
|
|
5
|
+
* a {@link ready} promise that resolves once the filter is fully initialized.
|
|
6
|
+
*/
|
|
1
7
|
class AudioFilter {
|
|
2
8
|
/** Resolves when the filter is fully initialized. Defaults to immediately-resolved for sync filters. */
|
|
3
9
|
get ready() { return Promise.resolve(); }
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AudioFilter.js","sources":["../../../../src/audio/AudioFilter.ts"],"sourcesContent":[null],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"AudioFilter.js","sources":["../../../../src/audio/AudioFilter.ts"],"sourcesContent":[null],"names":[],"mappings":"AAAA;;;;;AAKG;MACmB,WAAW,CAAA;;IAM7B,IAAW,KAAK,KAAoB,OAAO,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC;AAGjE;;;;"}
|
|
@@ -1,10 +1,29 @@
|
|
|
1
1
|
import { Vector } from '@/math/Vector';
|
|
2
2
|
import type { SceneNode } from '@/core/SceneNode';
|
|
3
3
|
import type { View } from '@/rendering/View';
|
|
4
|
+
/**
|
|
5
|
+
* Anything {@link AudioListener.target} can be set to. The listener reads
|
|
6
|
+
* its world-space position from the target each frame:
|
|
7
|
+
* - {@link SceneNode}: uses `getGlobalTransform()` translation
|
|
8
|
+
* - {@link View}: uses `view.center`
|
|
9
|
+
* - Plain `{ x, y }` object: read directly
|
|
10
|
+
* - `null`: no automatic tracking — set `position` manually.
|
|
11
|
+
*/
|
|
4
12
|
export type AudioListenerTarget = SceneNode | View | {
|
|
5
13
|
x: number;
|
|
6
14
|
y: number;
|
|
7
15
|
} | null;
|
|
16
|
+
/**
|
|
17
|
+
* Singleton observer position fed to the Web Audio panner nodes used by
|
|
18
|
+
* spatial sounds. Sets the listener orientation once at setup (forward = -Z,
|
|
19
|
+
* up = +Y for 2D scenes) and updates `positionX/Y/Z` (or legacy
|
|
20
|
+
* `setPosition`) every frame from {@link AudioListener.position} —
|
|
21
|
+
* which is in turn read from {@link AudioListener.target} when one is set.
|
|
22
|
+
*
|
|
23
|
+
* Owned by {@link AudioManager}; one instance per engine. `velocity` is a
|
|
24
|
+
* placeholder for future Doppler support (currently not piped to the Web
|
|
25
|
+
* Audio listener).
|
|
26
|
+
*/
|
|
8
27
|
export declare class AudioListener {
|
|
9
28
|
readonly position: Vector;
|
|
10
29
|
readonly velocity: Vector;
|
|
@@ -1,6 +1,17 @@
|
|
|
1
1
|
import { Vector } from '../math/Vector.js';
|
|
2
2
|
import { isAudioContextReady, getAudioContext, onAudioContextReady } from './audio-context.js';
|
|
3
3
|
|
|
4
|
+
/**
|
|
5
|
+
* Singleton observer position fed to the Web Audio panner nodes used by
|
|
6
|
+
* spatial sounds. Sets the listener orientation once at setup (forward = -Z,
|
|
7
|
+
* up = +Y for 2D scenes) and updates `positionX/Y/Z` (or legacy
|
|
8
|
+
* `setPosition`) every frame from {@link AudioListener.position} —
|
|
9
|
+
* which is in turn read from {@link AudioListener.target} when one is set.
|
|
10
|
+
*
|
|
11
|
+
* Owned by {@link AudioManager}; one instance per engine. `velocity` is a
|
|
12
|
+
* placeholder for future Doppler support (currently not piped to the Web
|
|
13
|
+
* Audio listener).
|
|
14
|
+
*/
|
|
4
15
|
class AudioListener {
|
|
5
16
|
position = new Vector(0, 0);
|
|
6
17
|
velocity = new Vector(0, 0);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AudioListener.js","sources":["../../../../src/audio/AudioListener.ts"],"sourcesContent":[null],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"AudioListener.js","sources":["../../../../src/audio/AudioListener.ts"],"sourcesContent":[null],"names":[],"mappings":"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"}
|
|
@@ -1,6 +1,20 @@
|
|
|
1
1
|
import { AudioBus } from './AudioBus';
|
|
2
2
|
import { AudioListener } from './AudioListener';
|
|
3
3
|
import type { Sound } from './Sound';
|
|
4
|
+
/**
|
|
5
|
+
* Module-level singleton that owns the engine-wide audio mix: three
|
|
6
|
+
* pre-configured {@link AudioBus} instances (`master` ← `music` + `sound`),
|
|
7
|
+
* a single shared {@link AudioListener} for spatial audio, and a registry
|
|
8
|
+
* of any extra busses the user constructs.
|
|
9
|
+
*
|
|
10
|
+
* Access the singleton via {@link getAudioManager} (or `app.audio`). The
|
|
11
|
+
* instance is constructed lazily on first access so client code that does
|
|
12
|
+
* not need audio pays no startup cost.
|
|
13
|
+
*
|
|
14
|
+
* Drives the per-frame `_tick()` on the listener and every spatial sound;
|
|
15
|
+
* propagates visibility-driven mute when {@link AudioManager.muteOnHidden}
|
|
16
|
+
* is enabled.
|
|
17
|
+
*/
|
|
4
18
|
export declare class AudioManager {
|
|
5
19
|
readonly master: AudioBus;
|
|
6
20
|
readonly music: AudioBus;
|
|
@@ -10,6 +24,12 @@ export declare class AudioManager {
|
|
|
10
24
|
private readonly _spatialSounds;
|
|
11
25
|
private _muteOnHidden;
|
|
12
26
|
constructor();
|
|
27
|
+
/**
|
|
28
|
+
* When `true`, the master bus is muted while `document.hidden` is true.
|
|
29
|
+
* Wired to {@link Application.onVisibilityChange} via
|
|
30
|
+
* {@link AudioManager._applyVisibility}; the application calls that
|
|
31
|
+
* hook automatically — set this flag to opt in to the behavior.
|
|
32
|
+
*/
|
|
13
33
|
get muteOnHidden(): boolean;
|
|
14
34
|
set muteOnHidden(value: boolean);
|
|
15
35
|
/** Called once per frame from Application.update(). */
|
|
@@ -20,12 +40,29 @@ export declare class AudioManager {
|
|
|
20
40
|
_unregisterSpatialSound(sound: Sound): void;
|
|
21
41
|
/** Internal: called by Application when visibility changes. */
|
|
22
42
|
_applyVisibility(visible: boolean): void;
|
|
43
|
+
/**
|
|
44
|
+
* Register a user-constructed {@link AudioBus} so it can be looked up by
|
|
45
|
+
* name via {@link AudioManager.getBus}. Throws if a bus with the same
|
|
46
|
+
* name is already registered.
|
|
47
|
+
*/
|
|
23
48
|
registerBus(bus: AudioBus): this;
|
|
49
|
+
/**
|
|
50
|
+
* Unregister and {@link AudioBus.destroy} a previously registered bus.
|
|
51
|
+
* Throws if you attempt to unregister one of the three built-ins
|
|
52
|
+
* (`master`, `music`, `sound`). No-op if the bus is unknown.
|
|
53
|
+
*/
|
|
24
54
|
unregisterBus(bus: AudioBus): this;
|
|
55
|
+
/** Look up a bus by name. Throws if the name is not registered. */
|
|
25
56
|
getBus(name: string): AudioBus;
|
|
57
|
+
/** `true` when a bus with `name` has been registered. */
|
|
26
58
|
hasBus(name: string): boolean;
|
|
27
59
|
destroy(): void;
|
|
28
60
|
}
|
|
61
|
+
/**
|
|
62
|
+
* Lazy accessor for the singleton {@link AudioManager}. Constructs the
|
|
63
|
+
* instance on first call, returns the same instance for every subsequent
|
|
64
|
+
* call. Equivalent to `app.audio`.
|
|
65
|
+
*/
|
|
29
66
|
export declare function getAudioManager(): AudioManager;
|
|
30
67
|
/** For tests: reset the singleton so fresh instances can be created. */
|
|
31
68
|
export declare function _resetAudioManagerForTesting(): void;
|
|
@@ -1,6 +1,20 @@
|
|
|
1
1
|
import { AudioBus } from './AudioBus.js';
|
|
2
2
|
import { AudioListener } from './AudioListener.js';
|
|
3
3
|
|
|
4
|
+
/**
|
|
5
|
+
* Module-level singleton that owns the engine-wide audio mix: three
|
|
6
|
+
* pre-configured {@link AudioBus} instances (`master` ← `music` + `sound`),
|
|
7
|
+
* a single shared {@link AudioListener} for spatial audio, and a registry
|
|
8
|
+
* of any extra busses the user constructs.
|
|
9
|
+
*
|
|
10
|
+
* Access the singleton via {@link getAudioManager} (or `app.audio`). The
|
|
11
|
+
* instance is constructed lazily on first access so client code that does
|
|
12
|
+
* not need audio pays no startup cost.
|
|
13
|
+
*
|
|
14
|
+
* Drives the per-frame `_tick()` on the listener and every spatial sound;
|
|
15
|
+
* propagates visibility-driven mute when {@link AudioManager.muteOnHidden}
|
|
16
|
+
* is enabled.
|
|
17
|
+
*/
|
|
4
18
|
class AudioManager {
|
|
5
19
|
master;
|
|
6
20
|
music;
|
|
@@ -19,6 +33,12 @@ class AudioManager {
|
|
|
19
33
|
this._registered.set('music', this.music);
|
|
20
34
|
this._registered.set('sound', this.sound);
|
|
21
35
|
}
|
|
36
|
+
/**
|
|
37
|
+
* When `true`, the master bus is muted while `document.hidden` is true.
|
|
38
|
+
* Wired to {@link Application.onVisibilityChange} via
|
|
39
|
+
* {@link AudioManager._applyVisibility}; the application calls that
|
|
40
|
+
* hook automatically — set this flag to opt in to the behavior.
|
|
41
|
+
*/
|
|
22
42
|
get muteOnHidden() {
|
|
23
43
|
return this._muteOnHidden;
|
|
24
44
|
}
|
|
@@ -49,6 +69,11 @@ class AudioManager {
|
|
|
49
69
|
this.master.muted = !visible;
|
|
50
70
|
}
|
|
51
71
|
}
|
|
72
|
+
/**
|
|
73
|
+
* Register a user-constructed {@link AudioBus} so it can be looked up by
|
|
74
|
+
* name via {@link AudioManager.getBus}. Throws if a bus with the same
|
|
75
|
+
* name is already registered.
|
|
76
|
+
*/
|
|
52
77
|
registerBus(bus) {
|
|
53
78
|
if (this._registered.has(bus.name)) {
|
|
54
79
|
throw new Error(`Audio bus "${bus.name}" is already registered.`);
|
|
@@ -56,6 +81,11 @@ class AudioManager {
|
|
|
56
81
|
this._registered.set(bus.name, bus);
|
|
57
82
|
return this;
|
|
58
83
|
}
|
|
84
|
+
/**
|
|
85
|
+
* Unregister and {@link AudioBus.destroy} a previously registered bus.
|
|
86
|
+
* Throws if you attempt to unregister one of the three built-ins
|
|
87
|
+
* (`master`, `music`, `sound`). No-op if the bus is unknown.
|
|
88
|
+
*/
|
|
59
89
|
unregisterBus(bus) {
|
|
60
90
|
if (bus === this.master || bus === this.music || bus === this.sound) {
|
|
61
91
|
throw new Error(`Cannot unregister built-in bus "${bus.name}".`);
|
|
@@ -69,6 +99,7 @@ class AudioManager {
|
|
|
69
99
|
bus.destroy();
|
|
70
100
|
return this;
|
|
71
101
|
}
|
|
102
|
+
/** Look up a bus by name. Throws if the name is not registered. */
|
|
72
103
|
getBus(name) {
|
|
73
104
|
const bus = this._registered.get(name);
|
|
74
105
|
if (!bus) {
|
|
@@ -76,6 +107,7 @@ class AudioManager {
|
|
|
76
107
|
}
|
|
77
108
|
return bus;
|
|
78
109
|
}
|
|
110
|
+
/** `true` when a bus with `name` has been registered. */
|
|
79
111
|
hasBus(name) {
|
|
80
112
|
return this._registered.has(name);
|
|
81
113
|
}
|
|
@@ -91,6 +123,11 @@ class AudioManager {
|
|
|
91
123
|
}
|
|
92
124
|
// Module-level singleton (lazy)
|
|
93
125
|
let _manager = null;
|
|
126
|
+
/**
|
|
127
|
+
* Lazy accessor for the singleton {@link AudioManager}. Constructs the
|
|
128
|
+
* instance on first call, returns the same instance for every subsequent
|
|
129
|
+
* call. Equivalent to `app.audio`.
|
|
130
|
+
*/
|
|
94
131
|
function getAudioManager() {
|
|
95
132
|
if (_manager === null) {
|
|
96
133
|
_manager = new AudioManager();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AudioManager.js","sources":["../../../../src/audio/AudioManager.ts"],"sourcesContent":[null],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"AudioManager.js","sources":["../../../../src/audio/AudioManager.ts"],"sourcesContent":[null],"names":[],"mappings":"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"}
|
|
@@ -67,6 +67,27 @@ export interface BandEnergy {
|
|
|
67
67
|
mid: number;
|
|
68
68
|
high: number;
|
|
69
69
|
}
|
|
70
|
+
/**
|
|
71
|
+
* Real-time tempo + beat tracker. Splits work between the audio-rendering
|
|
72
|
+
* thread (an AudioWorklet that runs onset detection, tempogram analysis,
|
|
73
|
+
* and parallel 3/4 and 4/4 posterior estimation) and the main thread (this
|
|
74
|
+
* class — receives beats, fires Signals, handles configuration and source
|
|
75
|
+
* routing).
|
|
76
|
+
*
|
|
77
|
+
* Accepts a wide range of {@link BeatDetectorSource}s — bus, individual
|
|
78
|
+
* sound/music, raw MediaStream, or any AudioNode — and exposes a Signal
|
|
79
|
+
* for each notable event:
|
|
80
|
+
* - {@link BeatDetector.onBeat} — every detected beat
|
|
81
|
+
* - {@link BeatDetector.onDownbeat} — first beat of each bar
|
|
82
|
+
* - {@link BeatDetector.onBarStart} — bar boundary
|
|
83
|
+
* - {@link BeatDetector.onTempoChange} — when the tracked BPM changes
|
|
84
|
+
* - {@link BeatDetector.onBeatPredicted} — look-ahead schedule notice
|
|
85
|
+
*
|
|
86
|
+
* Detection is delayed by `settlingMs` (default 1500 ms) after a new
|
|
87
|
+
* source is attached; this prevents spurious beats during the algorithm's
|
|
88
|
+
* warm-up. Time-signature detection (3/4 vs 4/4) is on by default; lock
|
|
89
|
+
* to 4/4 by setting `enableTimeSignatureDetection: false`.
|
|
90
|
+
*/
|
|
70
91
|
export declare class BeatDetector {
|
|
71
92
|
readonly onBeat: Signal<[BeatInfo]>;
|
|
72
93
|
readonly onTempoChange: Signal<[number, number]>;
|
|
@@ -653,6 +653,27 @@ registerProcessor('${workletName}', BeatDetectorProcessor);
|
|
|
653
653
|
// ---------------------------------------------------------------------------
|
|
654
654
|
// Main-thread BeatDetector class
|
|
655
655
|
// ---------------------------------------------------------------------------
|
|
656
|
+
/**
|
|
657
|
+
* Real-time tempo + beat tracker. Splits work between the audio-rendering
|
|
658
|
+
* thread (an AudioWorklet that runs onset detection, tempogram analysis,
|
|
659
|
+
* and parallel 3/4 and 4/4 posterior estimation) and the main thread (this
|
|
660
|
+
* class — receives beats, fires Signals, handles configuration and source
|
|
661
|
+
* routing).
|
|
662
|
+
*
|
|
663
|
+
* Accepts a wide range of {@link BeatDetectorSource}s — bus, individual
|
|
664
|
+
* sound/music, raw MediaStream, or any AudioNode — and exposes a Signal
|
|
665
|
+
* for each notable event:
|
|
666
|
+
* - {@link BeatDetector.onBeat} — every detected beat
|
|
667
|
+
* - {@link BeatDetector.onDownbeat} — first beat of each bar
|
|
668
|
+
* - {@link BeatDetector.onBarStart} — bar boundary
|
|
669
|
+
* - {@link BeatDetector.onTempoChange} — when the tracked BPM changes
|
|
670
|
+
* - {@link BeatDetector.onBeatPredicted} — look-ahead schedule notice
|
|
671
|
+
*
|
|
672
|
+
* Detection is delayed by `settlingMs` (default 1500 ms) after a new
|
|
673
|
+
* source is attached; this prevents spurious beats during the algorithm's
|
|
674
|
+
* warm-up. Time-signature detection (3/4 vs 4/4) is on by default; lock
|
|
675
|
+
* to 4/4 by setting `enableTimeSignatureDetection: false`.
|
|
676
|
+
*/
|
|
656
677
|
class BeatDetector {
|
|
657
678
|
// ---- Signals ----
|
|
658
679
|
onBeat = new Signal();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BeatDetector.js","sources":["../../../../src/audio/BeatDetector.ts"],"sourcesContent":[null],"names":[],"mappings":";;;;AAoFA;AACA;AACA;AAEA,MAAM,WAAW,GAAG,qBAAqB;AAEzC,MAAM,yBAAyB,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;qBAkoBb,WAAW,CAAA;CAC/B;AAED;AACA;AACA;
|
|
1
|
+
{"version":3,"file":"BeatDetector.js","sources":["../../../../src/audio/BeatDetector.ts"],"sourcesContent":[null],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,15 @@
|
|
|
1
1
|
import type { PlaybackOptions } from '@/core/types';
|
|
2
|
+
/**
|
|
3
|
+
* Common public interface implemented by every playable audio source —
|
|
4
|
+
* {@link Sound}, {@link Music}, {@link OscillatorSound}. Extracted so that
|
|
5
|
+
* code routing audio through generic helpers (fade managers, audio
|
|
6
|
+
* scheduling) can operate against the abstraction rather than the concrete
|
|
7
|
+
* subclass.
|
|
8
|
+
*
|
|
9
|
+
* Mutator methods are dual-API: each `setX(value)` setter has a paired
|
|
10
|
+
* regular property setter, so both `media.volume = 0.5` and
|
|
11
|
+
* `media.setVolume(0.5)` work — pick whichever style fits the call site.
|
|
12
|
+
*/
|
|
2
13
|
export interface Media {
|
|
3
14
|
readonly duration: number;
|
|
4
15
|
readonly progress: number;
|
|
@@ -1,6 +1,18 @@
|
|
|
1
1
|
import type { PlaybackOptions } from '@/core/types';
|
|
2
2
|
import { AbstractMedia } from '@/audio/AbstractMedia';
|
|
3
3
|
import type { AudioBus } from '@/audio/AudioBus';
|
|
4
|
+
/**
|
|
5
|
+
* Streaming long-form audio backed by an `HTMLAudioElement`. Decoded
|
|
6
|
+
* lazily via the browser's media pipeline, so memory cost scales with
|
|
7
|
+
* decode-buffer size rather than total duration. Routes through the
|
|
8
|
+
* engine's `music` bus by default (overridable via the inherited
|
|
9
|
+
* `bus` setter).
|
|
10
|
+
*
|
|
11
|
+
* Use {@link Sound} for short, frequently-triggered clips that benefit
|
|
12
|
+
* from pre-decoded `AudioBuffer` storage and pooled overlapping
|
|
13
|
+
* playback. `Music` is the right choice for background tracks, voice
|
|
14
|
+
* lines, or anything else where a single source per track is enough.
|
|
15
|
+
*/
|
|
4
16
|
export declare class Music extends AbstractMedia {
|
|
5
17
|
private readonly _audioElement;
|
|
6
18
|
private _audioSetup;
|
package/dist/esm/audio/Music.js
CHANGED
|
@@ -3,6 +3,18 @@ import { AbstractMedia } from './AbstractMedia.js';
|
|
|
3
3
|
import { isAudioContextReady, getAudioContext, onAudioContextReady } from './audio-context.js';
|
|
4
4
|
import { getAudioManager } from './AudioManager.js';
|
|
5
5
|
|
|
6
|
+
/**
|
|
7
|
+
* Streaming long-form audio backed by an `HTMLAudioElement`. Decoded
|
|
8
|
+
* lazily via the browser's media pipeline, so memory cost scales with
|
|
9
|
+
* decode-buffer size rather than total duration. Routes through the
|
|
10
|
+
* engine's `music` bus by default (overridable via the inherited
|
|
11
|
+
* `bus` setter).
|
|
12
|
+
*
|
|
13
|
+
* Use {@link Sound} for short, frequently-triggered clips that benefit
|
|
14
|
+
* from pre-decoded `AudioBuffer` storage and pooled overlapping
|
|
15
|
+
* playback. `Music` is the right choice for background tracks, voice
|
|
16
|
+
* lines, or anything else where a single source per track is enough.
|
|
17
|
+
*/
|
|
6
18
|
class Music extends AbstractMedia {
|
|
7
19
|
_audioElement;
|
|
8
20
|
_audioSetup = null;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Music.js","sources":["../../../../src/audio/Music.ts"],"sourcesContent":[null],"names":[],"mappings":";;;;;
|
|
1
|
+
{"version":3,"file":"Music.js","sources":["../../../../src/audio/Music.ts"],"sourcesContent":[null],"names":[],"mappings":"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"}
|