@codexo/exojs 0.8.0 → 0.8.3
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 +390 -208
- package/README.md +19 -19
- package/dist/esm/animation/Easing.js +13 -21
- package/dist/esm/animation/Easing.js.map +1 -1
- package/dist/esm/animation/Tween.d.ts +3 -3
- package/dist/esm/animation/Tween.js +7 -5
- package/dist/esm/animation/Tween.js.map +1 -1
- package/dist/esm/animation/TweenManager.js +1 -1
- package/dist/esm/animation/TweenManager.js.map +1 -1
- package/dist/esm/animation/types.js.map +1 -1
- package/dist/esm/audio/AbstractMedia.d.ts +1 -1
- package/dist/esm/audio/AbstractMedia.js +1 -1
- package/dist/esm/audio/AbstractMedia.js.map +1 -1
- package/dist/esm/audio/AudioAnalyser.d.ts +37 -1
- package/dist/esm/audio/AudioAnalyser.js +150 -2
- package/dist/esm/audio/AudioAnalyser.js.map +1 -1
- package/dist/esm/audio/AudioBus.d.ts +1 -1
- package/dist/esm/audio/AudioBus.js.map +1 -1
- package/dist/esm/audio/AudioFilter.js +3 -1
- package/dist/esm/audio/AudioFilter.js.map +1 -1
- package/dist/esm/audio/AudioListener.d.ts +1 -1
- package/dist/esm/audio/AudioListener.js +5 -3
- package/dist/esm/audio/AudioListener.js.map +1 -1
- package/dist/esm/audio/AudioManager.js.map +1 -1
- package/dist/esm/audio/BeatDetector.d.ts +66 -4
- package/dist/esm/audio/BeatDetector.js +145 -44
- package/dist/esm/audio/BeatDetector.js.map +1 -1
- package/dist/esm/audio/Envelope.d.ts +1 -1
- package/dist/esm/audio/Envelope.js +2 -2
- package/dist/esm/audio/Envelope.js.map +1 -1
- package/dist/esm/audio/Music.d.ts +1 -1
- package/dist/esm/audio/Music.js +1 -1
- package/dist/esm/audio/Music.js.map +1 -1
- package/dist/esm/audio/OscillatorSound.d.ts +2 -2
- package/dist/esm/audio/OscillatorSound.js.map +1 -1
- package/dist/esm/audio/Sound.d.ts +40 -2
- package/dist/esm/audio/Sound.js +69 -9
- package/dist/esm/audio/Sound.js.map +1 -1
- package/dist/esm/audio/audio-context.js +1 -1
- package/dist/esm/audio/audio-context.js.map +1 -1
- package/dist/esm/audio/crossFade.js +1 -1
- package/dist/esm/audio/crossFade.js.map +1 -1
- package/dist/esm/audio/dsp/mel.d.ts +2 -2
- package/dist/esm/audio/dsp/mel.js +70 -0
- package/dist/esm/audio/dsp/mel.js.map +1 -0
- package/dist/esm/audio/dsp/tempogram.d.ts +2 -2
- package/dist/esm/audio/filters/ChorusFilter.js +12 -4
- package/dist/esm/audio/filters/ChorusFilter.js.map +1 -1
- package/dist/esm/audio/filters/CompressorFilter.d.ts +9 -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.js.map +1 -1
- package/dist/esm/audio/filters/DuckingFilter.d.ts +1 -1
- package/dist/esm/audio/filters/DuckingFilter.js +13 -5
- package/dist/esm/audio/filters/DuckingFilter.js.map +1 -1
- package/dist/esm/audio/filters/EqualizerFilter.js.map +1 -1
- package/dist/esm/audio/filters/GranularFilter.js +30 -14
- package/dist/esm/audio/filters/GranularFilter.js.map +1 -1
- package/dist/esm/audio/filters/HighpassFilter.js.map +1 -1
- package/dist/esm/audio/filters/LowpassFilter.js.map +1 -1
- package/dist/esm/audio/filters/PitchShiftFilter.js +14 -10
- package/dist/esm/audio/filters/PitchShiftFilter.js.map +1 -1
- package/dist/esm/audio/filters/ReverbFilter.js.map +1 -1
- package/dist/esm/audio/filters/VocoderFilter.d.ts +2 -2
- package/dist/esm/audio/filters/VocoderFilter.js +20 -12
- package/dist/esm/audio/filters/VocoderFilter.js.map +1 -1
- package/dist/esm/audio/filters/WorkletFilter.js +5 -6
- package/dist/esm/audio/filters/WorkletFilter.js.map +1 -1
- package/dist/esm/audio/filters/index.d.ts +7 -7
- package/dist/esm/audio/index.d.ts +9 -9
- package/dist/esm/audio/worklet/registerWorklet.js +7 -3
- package/dist/esm/audio/worklet/registerWorklet.js.map +1 -1
- package/dist/esm/core/Application.d.ts +13 -13
- package/dist/esm/core/Application.js +24 -16
- package/dist/esm/core/Application.js.map +1 -1
- package/dist/esm/core/Bounds.d.ts +1 -1
- package/dist/esm/core/Bounds.js +1 -3
- package/dist/esm/core/Bounds.js.map +1 -1
- package/dist/esm/core/Clock.js +1 -1
- package/dist/esm/core/Clock.js.map +1 -1
- package/dist/esm/core/Color.js +2 -5
- package/dist/esm/core/Color.js.map +1 -1
- package/dist/esm/core/Scene.d.ts +10 -10
- package/dist/esm/core/Scene.js +1 -1
- package/dist/esm/core/Scene.js.map +1 -1
- package/dist/esm/core/SceneManager.d.ts +4 -4
- package/dist/esm/core/SceneManager.js +39 -33
- package/dist/esm/core/SceneManager.js.map +1 -1
- package/dist/esm/core/SceneNode.d.ts +8 -8
- package/dist/esm/core/SceneNode.js +39 -29
- package/dist/esm/core/SceneNode.js.map +1 -1
- package/dist/esm/core/Signal.d.ts +3 -3
- package/dist/esm/core/Signal.js +3 -3
- package/dist/esm/core/Signal.js.map +1 -1
- package/dist/esm/core/Time.js +6 -6
- package/dist/esm/core/Time.js.map +1 -1
- package/dist/esm/core/Timer.d.ts +1 -1
- package/dist/esm/core/Timer.js +1 -1
- package/dist/esm/core/Timer.js.map +1 -1
- package/dist/esm/core/capabilities.js +2 -4
- package/dist/esm/core/capabilities.js.map +1 -1
- package/dist/esm/core/index.d.ts +2 -2
- package/dist/esm/core/utils.d.ts +4 -4
- package/dist/esm/core/utils.js +10 -10
- package/dist/esm/core/utils.js.map +1 -1
- package/dist/esm/debug/BoundingBoxesLayer.d.ts +3 -3
- package/dist/esm/debug/BoundingBoxesLayer.js +6 -13
- package/dist/esm/debug/BoundingBoxesLayer.js.map +1 -1
- package/dist/esm/debug/DebugLayer.d.ts +1 -1
- package/dist/esm/debug/DebugLayer.js.map +1 -1
- package/dist/esm/debug/DebugOverlay.d.ts +2 -2
- package/dist/esm/debug/DebugOverlay.js +2 -2
- package/dist/esm/debug/DebugOverlay.js.map +1 -1
- package/dist/esm/debug/HitTestLayer.d.ts +3 -3
- package/dist/esm/debug/HitTestLayer.js +3 -10
- package/dist/esm/debug/HitTestLayer.js.map +1 -1
- package/dist/esm/debug/PerformanceLayer.d.ts +2 -2
- package/dist/esm/debug/PerformanceLayer.js +6 -6
- package/dist/esm/debug/PerformanceLayer.js.map +1 -1
- package/dist/esm/debug/PointerStackLayer.d.ts +3 -3
- package/dist/esm/debug/PointerStackLayer.js +3 -3
- package/dist/esm/debug/PointerStackLayer.js.map +1 -1
- package/dist/esm/debug/RenderPassInspectorLayer.d.ts +71 -0
- package/dist/esm/debug/RenderPassInspectorLayer.js +201 -0
- package/dist/esm/debug/RenderPassInspectorLayer.js.map +1 -0
- package/dist/esm/debug/index.d.ts +4 -3
- package/dist/esm/debug/index.js +4 -3
- package/dist/esm/debug/index.js.map +1 -1
- package/dist/esm/index.d.ts +1 -1
- package/dist/esm/index.js +101 -98
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/input/ArcadeStickGamepadMapping.js.map +1 -1
- package/dist/esm/input/GameCubeGamepadMapping.d.ts +1 -1
- package/dist/esm/input/GameCubeGamepadMapping.js +1 -1
- package/dist/esm/input/GameCubeGamepadMapping.js.map +1 -1
- package/dist/esm/input/Gamepad.d.ts +7 -7
- package/dist/esm/input/Gamepad.js +10 -6
- package/dist/esm/input/Gamepad.js.map +1 -1
- package/dist/esm/input/GamepadAxis.js +1 -1
- package/dist/esm/input/GamepadAxis.js.map +1 -1
- package/dist/esm/input/GamepadButton.js +1 -1
- package/dist/esm/input/GamepadButton.js.map +1 -1
- package/dist/esm/input/GamepadDefinitions.d.ts +4 -4
- package/dist/esm/input/GamepadDefinitions.js +12 -14
- package/dist/esm/input/GamepadDefinitions.js.map +1 -1
- package/dist/esm/input/GamepadMapping.d.ts +5 -5
- package/dist/esm/input/GamepadMapping.js.map +1 -1
- package/dist/esm/input/GamepadPromptLayouts.d.ts +2 -2
- package/dist/esm/input/GamepadPromptLayouts.js +8 -8
- package/dist/esm/input/GamepadPromptLayouts.js.map +1 -1
- package/dist/esm/input/GenericDualAnalogGamepadMapping.js.map +1 -1
- package/dist/esm/input/GestureRecognizer.d.ts +1 -1
- package/dist/esm/input/GestureRecognizer.js.map +1 -1
- package/dist/esm/input/InputBinding.d.ts +3 -3
- package/dist/esm/input/InputBinding.js.map +1 -1
- package/dist/esm/input/InputManager.d.ts +9 -9
- package/dist/esm/input/InputManager.js +25 -16
- package/dist/esm/input/InputManager.js.map +1 -1
- package/dist/esm/input/InteractionEvent.d.ts +1 -1
- package/dist/esm/input/InteractionEvent.js.map +1 -1
- package/dist/esm/input/InteractionManager.d.ts +2 -2
- package/dist/esm/input/InteractionManager.js +25 -16
- package/dist/esm/input/InteractionManager.js.map +1 -1
- package/dist/esm/input/JoyConLeftGamepadMapping.js.map +1 -1
- package/dist/esm/input/JoyConRightGamepadMapping.js.map +1 -1
- package/dist/esm/input/PlayStationGamepadMapping.d.ts +1 -1
- package/dist/esm/input/PlayStationGamepadMapping.js +1 -1
- package/dist/esm/input/PlayStationGamepadMapping.js.map +1 -1
- package/dist/esm/input/Pointer.d.ts +2 -2
- package/dist/esm/input/Pointer.js +6 -6
- package/dist/esm/input/Pointer.js.map +1 -1
- package/dist/esm/input/SteamControllerGamepadMapping.d.ts +1 -1
- package/dist/esm/input/SteamControllerGamepadMapping.js +1 -1
- package/dist/esm/input/SteamControllerGamepadMapping.js.map +1 -1
- package/dist/esm/input/SteamDeckGamepadMapping.js.map +1 -1
- package/dist/esm/input/SwitchProGamepadMapping.d.ts +1 -1
- package/dist/esm/input/SwitchProGamepadMapping.js +1 -1
- package/dist/esm/input/SwitchProGamepadMapping.js.map +1 -1
- package/dist/esm/input/XboxGamepadMapping.d.ts +1 -1
- package/dist/esm/input/XboxGamepadMapping.js +1 -1
- package/dist/esm/input/XboxGamepadMapping.js.map +1 -1
- package/dist/esm/input/index.d.ts +16 -16
- package/dist/esm/input/interaction-hooks.js.map +1 -1
- package/dist/esm/input/types.js.map +1 -1
- package/dist/esm/math/AbstractVector.js +8 -9
- package/dist/esm/math/AbstractVector.js.map +1 -1
- package/dist/esm/math/Circle.d.ts +5 -5
- package/dist/esm/math/Circle.js +33 -21
- package/dist/esm/math/Circle.js.map +1 -1
- package/dist/esm/math/Collision.d.ts +2 -2
- package/dist/esm/math/Collision.js.map +1 -1
- package/dist/esm/math/Ellipse.d.ts +5 -5
- package/dist/esm/math/Ellipse.js +28 -19
- package/dist/esm/math/Ellipse.js.map +1 -1
- package/dist/esm/math/Flags.d.ts +4 -4
- package/dist/esm/math/Flags.js.map +1 -1
- package/dist/esm/math/Interval.js.map +1 -1
- package/dist/esm/math/Line.d.ts +5 -5
- package/dist/esm/math/Line.js +23 -15
- package/dist/esm/math/Line.js.map +1 -1
- package/dist/esm/math/Matrix.js +14 -16
- package/dist/esm/math/Matrix.js.map +1 -1
- package/dist/esm/math/ObservableSize.js.map +1 -1
- package/dist/esm/math/ObservableVector.d.ts +1 -1
- package/dist/esm/math/ObservableVector.js.map +1 -1
- package/dist/esm/math/PolarVector.js.map +1 -1
- package/dist/esm/math/Polygon.d.ts +11 -11
- package/dist/esm/math/Polygon.js +37 -26
- package/dist/esm/math/Polygon.js.map +1 -1
- package/dist/esm/math/PolygonLike.d.ts +1 -1
- package/dist/esm/math/Quadtree.js +2 -8
- package/dist/esm/math/Quadtree.js.map +1 -1
- package/dist/esm/math/Random.js +5 -5
- package/dist/esm/math/Random.js.map +1 -1
- package/dist/esm/math/Rectangle.d.ts +4 -4
- package/dist/esm/math/Rectangle.js +59 -41
- package/dist/esm/math/Rectangle.js.map +1 -1
- package/dist/esm/math/Segment.d.ts +1 -1
- package/dist/esm/math/Segment.js +4 -4
- package/dist/esm/math/Segment.js.map +1 -1
- package/dist/esm/math/ShapeLike.d.ts +1 -1
- package/dist/esm/math/Size.js +1 -2
- package/dist/esm/math/Size.js.map +1 -1
- package/dist/esm/math/Vector.d.ts +4 -4
- package/dist/esm/math/Vector.js +19 -13
- package/dist/esm/math/Vector.js.map +1 -1
- package/dist/esm/math/collision-detection.d.ts +3 -3
- package/dist/esm/math/collision-detection.js +49 -49
- package/dist/esm/math/collision-detection.js.map +1 -1
- package/dist/esm/math/collision-primitives.d.ts +8 -8
- package/dist/esm/math/collision-primitives.js +27 -33
- package/dist/esm/math/collision-primitives.js.map +1 -1
- package/dist/esm/math/geometry.d.ts +3 -3
- package/dist/esm/math/geometry.js +55 -48
- package/dist/esm/math/geometry.js.map +1 -1
- package/dist/esm/math/index.d.ts +16 -16
- package/dist/esm/math/swept-collision.d.ts +3 -3
- package/dist/esm/math/swept-collision.js +5 -8
- package/dist/esm/math/swept-collision.js.map +1 -1
- package/dist/esm/math/triangulate.js +34 -24
- package/dist/esm/math/triangulate.js.map +1 -1
- package/dist/esm/math/utils.d.ts +2 -2
- package/dist/esm/math/utils.js +7 -7
- package/dist/esm/math/utils.js.map +1 -1
- package/dist/esm/particles/ParticleSystem.d.ts +9 -9
- package/dist/esm/particles/ParticleSystem.js +29 -29
- package/dist/esm/particles/ParticleSystem.js.map +1 -1
- package/dist/esm/particles/distributions/BoxArea.js.map +1 -1
- package/dist/esm/particles/distributions/CircleArea.js.map +1 -1
- package/dist/esm/particles/distributions/ConeDirection.js.map +1 -1
- package/dist/esm/particles/distributions/Constant.js.map +1 -1
- package/dist/esm/particles/distributions/Curve.d.ts +1 -1
- package/dist/esm/particles/distributions/Curve.js.map +1 -1
- package/dist/esm/particles/distributions/Gradient.d.ts +1 -1
- package/dist/esm/particles/distributions/Gradient.js +1 -1
- package/dist/esm/particles/distributions/Gradient.js.map +1 -1
- package/dist/esm/particles/distributions/LineSegment.js.map +1 -1
- package/dist/esm/particles/distributions/Range.js.map +1 -1
- package/dist/esm/particles/distributions/VectorRange.js.map +1 -1
- package/dist/esm/particles/distributions/index.d.ts +9 -9
- package/dist/esm/particles/gpu/ParticleGpuState.d.ts +3 -3
- package/dist/esm/particles/gpu/ParticleGpuState.js +48 -21
- package/dist/esm/particles/gpu/ParticleGpuState.js.map +1 -1
- package/dist/esm/particles/index.d.ts +1 -1
- package/dist/esm/particles/modules/AlphaFadeOverLifetime.d.ts +2 -2
- package/dist/esm/particles/modules/AlphaFadeOverLifetime.js.map +1 -1
- package/dist/esm/particles/modules/ApplyForce.d.ts +1 -1
- package/dist/esm/particles/modules/ApplyForce.js.map +1 -1
- package/dist/esm/particles/modules/AttractToPoint.d.ts +1 -1
- package/dist/esm/particles/modules/AttractToPoint.js.map +1 -1
- package/dist/esm/particles/modules/BurstSpawn.d.ts +4 -4
- package/dist/esm/particles/modules/BurstSpawn.js +2 -2
- package/dist/esm/particles/modules/BurstSpawn.js.map +1 -1
- package/dist/esm/particles/modules/ColorOverLifetime.d.ts +2 -2
- package/dist/esm/particles/modules/ColorOverLifetime.js +1 -1
- package/dist/esm/particles/modules/ColorOverLifetime.js.map +1 -1
- package/dist/esm/particles/modules/ColorOverSpeed.d.ts +2 -2
- package/dist/esm/particles/modules/ColorOverSpeed.js +1 -1
- package/dist/esm/particles/modules/ColorOverSpeed.js.map +1 -1
- package/dist/esm/particles/modules/DeathModule.js.map +1 -1
- package/dist/esm/particles/modules/Drag.d.ts +1 -1
- package/dist/esm/particles/modules/Drag.js +1 -3
- package/dist/esm/particles/modules/Drag.js.map +1 -1
- package/dist/esm/particles/modules/OrbitalForce.d.ts +1 -1
- package/dist/esm/particles/modules/OrbitalForce.js.map +1 -1
- package/dist/esm/particles/modules/RateSpawn.d.ts +3 -3
- package/dist/esm/particles/modules/RateSpawn.js +2 -2
- package/dist/esm/particles/modules/RateSpawn.js.map +1 -1
- package/dist/esm/particles/modules/RepelFromPoint.d.ts +1 -1
- package/dist/esm/particles/modules/RepelFromPoint.js.map +1 -1
- package/dist/esm/particles/modules/RotateOverLifetime.d.ts +1 -1
- package/dist/esm/particles/modules/RotateOverLifetime.js +1 -3
- package/dist/esm/particles/modules/RotateOverLifetime.js.map +1 -1
- package/dist/esm/particles/modules/ScaleOverLifetime.d.ts +2 -2
- package/dist/esm/particles/modules/ScaleOverLifetime.js.map +1 -1
- package/dist/esm/particles/modules/SpawnModule.js.map +1 -1
- package/dist/esm/particles/modules/SpawnOnDeath.d.ts +1 -1
- package/dist/esm/particles/modules/SpawnOnDeath.js.map +1 -1
- package/dist/esm/particles/modules/Turbulence.d.ts +1 -1
- package/dist/esm/particles/modules/Turbulence.js.map +1 -1
- package/dist/esm/particles/modules/UpdateModule.js.map +1 -1
- package/dist/esm/particles/modules/VelocityOverLifetime.d.ts +2 -2
- package/dist/esm/particles/modules/VelocityOverLifetime.js.map +1 -1
- package/dist/esm/particles/modules/WgslContribution.d.ts +3 -3
- package/dist/esm/particles/modules/WgslContribution.js.map +1 -1
- package/dist/esm/particles/modules/index.d.ts +17 -17
- package/dist/esm/rendering/CallbackRenderPass.js.map +1 -1
- package/dist/esm/rendering/Container.d.ts +2 -2
- package/dist/esm/rendering/Container.js +10 -11
- package/dist/esm/rendering/Container.js.map +1 -1
- package/dist/esm/rendering/Drawable.js.map +1 -1
- package/dist/esm/rendering/RenderBackend.d.ts +6 -6
- package/dist/esm/rendering/RenderBackendType.js.map +1 -1
- package/dist/esm/rendering/RenderNode.d.ts +10 -10
- package/dist/esm/rendering/RenderNode.js +31 -31
- package/dist/esm/rendering/RenderNode.js.map +1 -1
- package/dist/esm/rendering/RenderStats.js.map +1 -1
- package/dist/esm/rendering/RenderTarget.d.ts +2 -2
- package/dist/esm/rendering/RenderTarget.js +5 -5
- package/dist/esm/rendering/RenderTarget.js.map +1 -1
- package/dist/esm/rendering/RenderTargetPass.d.ts +3 -3
- package/dist/esm/rendering/RenderTargetPass.js.map +1 -1
- package/dist/esm/rendering/Renderer.d.ts +2 -2
- package/dist/esm/rendering/RendererRegistry.d.ts +3 -3
- package/dist/esm/rendering/RendererRegistry.js +2 -3
- package/dist/esm/rendering/RendererRegistry.js.map +1 -1
- package/dist/esm/rendering/View.d.ts +3 -3
- package/dist/esm/rendering/View.js +17 -20
- package/dist/esm/rendering/View.js.map +1 -1
- package/dist/esm/rendering/filters/BlurFilter.d.ts +1 -1
- package/dist/esm/rendering/filters/BlurFilter.js +4 -9
- package/dist/esm/rendering/filters/BlurFilter.js.map +1 -1
- package/dist/esm/rendering/filters/ColorFilter.d.ts +1 -1
- package/dist/esm/rendering/filters/ColorFilter.js +3 -9
- package/dist/esm/rendering/filters/ColorFilter.js.map +1 -1
- package/dist/esm/rendering/filters/Filter.d.ts +1 -1
- package/dist/esm/rendering/filters/Filter.js.map +1 -1
- package/dist/esm/rendering/filters/LutFilter.d.ts +87 -0
- package/dist/esm/rendering/filters/LutFilter.js +261 -0
- package/dist/esm/rendering/filters/LutFilter.js.map +1 -0
- package/dist/esm/rendering/filters/WebGl2ShaderFilter.d.ts +2 -2
- package/dist/esm/rendering/filters/WebGl2ShaderFilter.js +7 -14
- package/dist/esm/rendering/filters/WebGl2ShaderFilter.js.map +1 -1
- package/dist/esm/rendering/filters/WebGpuShaderFilter.d.ts +1 -1
- package/dist/esm/rendering/filters/WebGpuShaderFilter.js +16 -11
- package/dist/esm/rendering/filters/WebGpuShaderFilter.js.map +1 -1
- package/dist/esm/rendering/index.d.ts +30 -27
- package/dist/esm/rendering/mesh/Mesh.d.ts +6 -1
- package/dist/esm/rendering/mesh/Mesh.js +3 -1
- package/dist/esm/rendering/mesh/Mesh.js.map +1 -1
- package/dist/esm/rendering/mesh/MeshShader.d.ts +183 -0
- package/dist/esm/rendering/mesh/MeshShader.js +231 -0
- package/dist/esm/rendering/mesh/MeshShader.js.map +1 -0
- package/dist/esm/rendering/primitives/Graphics.d.ts +3 -3
- package/dist/esm/rendering/primitives/Graphics.js +12 -12
- package/dist/esm/rendering/primitives/Graphics.js.map +1 -1
- package/dist/esm/rendering/shader/Shader.js.map +1 -1
- package/dist/esm/rendering/shader/ShaderAttribute.js.map +1 -1
- package/dist/esm/rendering/shader/ShaderUniform.js.map +1 -1
- package/dist/esm/rendering/shader/upgradeFragmentShaderToGl300.js +6 -8
- package/dist/esm/rendering/shader/upgradeFragmentShaderToGl300.js.map +1 -1
- package/dist/esm/rendering/sprite/AnimatedSprite.d.ts +3 -3
- package/dist/esm/rendering/sprite/AnimatedSprite.js.map +1 -1
- package/dist/esm/rendering/sprite/Sprite.d.ts +4 -4
- package/dist/esm/rendering/sprite/Sprite.js +51 -35
- package/dist/esm/rendering/sprite/Sprite.js.map +1 -1
- package/dist/esm/rendering/sprite/Spritesheet.d.ts +5 -9
- package/dist/esm/rendering/sprite/Spritesheet.js +1 -1
- package/dist/esm/rendering/sprite/Spritesheet.js.map +1 -1
- package/dist/esm/rendering/text/DynamicGlyphAtlas.js +3 -9
- package/dist/esm/rendering/text/DynamicGlyphAtlas.js.map +1 -1
- package/dist/esm/rendering/text/Text.js +9 -9
- package/dist/esm/rendering/text/Text.js.map +1 -1
- package/dist/esm/rendering/text/TextLayout.d.ts +2 -2
- package/dist/esm/rendering/text/TextLayout.js.map +1 -1
- package/dist/esm/rendering/text/TextStyle.js.map +1 -1
- package/dist/esm/rendering/text/atlas-singleton.js.map +1 -1
- package/dist/esm/rendering/texture/DataTexture.d.ts +115 -0
- package/dist/esm/rendering/texture/DataTexture.js +173 -0
- package/dist/esm/rendering/texture/DataTexture.js.map +1 -0
- package/dist/esm/rendering/texture/RenderTexture.d.ts +1 -1
- package/dist/esm/rendering/texture/RenderTexture.js +4 -1
- package/dist/esm/rendering/texture/RenderTexture.js.map +1 -1
- package/dist/esm/rendering/texture/Sampler.js.map +1 -1
- package/dist/esm/rendering/texture/Texture.d.ts +2 -2
- package/dist/esm/rendering/texture/Texture.js +8 -5
- package/dist/esm/rendering/texture/Texture.js.map +1 -1
- package/dist/esm/rendering/types.js.map +1 -1
- package/dist/esm/rendering/utils.js.map +1 -1
- package/dist/esm/rendering/video/Video.d.ts +3 -3
- package/dist/esm/rendering/video/Video.js +7 -6
- package/dist/esm/rendering/video/Video.js.map +1 -1
- package/dist/esm/rendering/webgl2/AbstractWebGl2BatchedRenderer.d.ts +6 -6
- package/dist/esm/rendering/webgl2/AbstractWebGl2BatchedRenderer.js +7 -10
- package/dist/esm/rendering/webgl2/AbstractWebGl2BatchedRenderer.js.map +1 -1
- package/dist/esm/rendering/webgl2/AbstractWebGl2Renderer.d.ts +1 -1
- package/dist/esm/rendering/webgl2/AbstractWebGl2Renderer.js +1 -2
- package/dist/esm/rendering/webgl2/AbstractWebGl2Renderer.js.map +1 -1
- package/dist/esm/rendering/webgl2/WebGl2Backend.d.ts +11 -11
- package/dist/esm/rendering/webgl2/WebGl2Backend.js +61 -22
- package/dist/esm/rendering/webgl2/WebGl2Backend.js.map +1 -1
- package/dist/esm/rendering/webgl2/WebGl2MaskCompositor.d.ts +2 -2
- package/dist/esm/rendering/webgl2/WebGl2MaskCompositor.js +6 -8
- package/dist/esm/rendering/webgl2/WebGl2MaskCompositor.js.map +1 -1
- package/dist/esm/rendering/webgl2/WebGl2MeshRenderer.d.ts +7 -4
- package/dist/esm/rendering/webgl2/WebGl2MeshRenderer.js +121 -43
- package/dist/esm/rendering/webgl2/WebGl2MeshRenderer.js.map +1 -1
- package/dist/esm/rendering/webgl2/WebGl2ParticleRenderer.d.ts +1 -1
- package/dist/esm/rendering/webgl2/WebGl2ParticleRenderer.js +10 -18
- package/dist/esm/rendering/webgl2/WebGl2ParticleRenderer.js.map +1 -1
- package/dist/esm/rendering/webgl2/WebGl2RenderBuffer.d.ts +1 -1
- package/dist/esm/rendering/webgl2/WebGl2RenderBuffer.js.map +1 -1
- package/dist/esm/rendering/webgl2/WebGl2ShaderBlock.js.map +1 -1
- package/dist/esm/rendering/webgl2/WebGl2ShaderMappings.js.map +1 -1
- package/dist/esm/rendering/webgl2/WebGl2ShaderProgram.js +54 -22
- package/dist/esm/rendering/webgl2/WebGl2ShaderProgram.js.map +1 -1
- package/dist/esm/rendering/webgl2/WebGl2SpriteRenderer.d.ts +1 -1
- package/dist/esm/rendering/webgl2/WebGl2SpriteRenderer.js +11 -14
- package/dist/esm/rendering/webgl2/WebGl2SpriteRenderer.js.map +1 -1
- package/dist/esm/rendering/webgl2/WebGl2VertexArrayObject.d.ts +1 -1
- package/dist/esm/rendering/webgl2/WebGl2VertexArrayObject.js.map +1 -1
- package/dist/esm/rendering/webgpu/AbstractWebGpuRenderer.d.ts +1 -1
- package/dist/esm/rendering/webgpu/AbstractWebGpuRenderer.js +1 -2
- package/dist/esm/rendering/webgpu/AbstractWebGpuRenderer.js.map +1 -1
- package/dist/esm/rendering/webgpu/WebGpuBackend.d.ts +8 -7
- package/dist/esm/rendering/webgpu/WebGpuBackend.js +104 -37
- package/dist/esm/rendering/webgpu/WebGpuBackend.js.map +1 -1
- package/dist/esm/rendering/webgpu/WebGpuBlendState.js.map +1 -1
- package/dist/esm/rendering/webgpu/WebGpuMaskCompositor.d.ts +2 -2
- package/dist/esm/rendering/webgpu/WebGpuMaskCompositor.js +3 -4
- package/dist/esm/rendering/webgpu/WebGpuMaskCompositor.js.map +1 -1
- package/dist/esm/rendering/webgpu/WebGpuMeshRenderer.d.ts +15 -2
- package/dist/esm/rendering/webgpu/WebGpuMeshRenderer.js +657 -102
- package/dist/esm/rendering/webgpu/WebGpuMeshRenderer.js.map +1 -1
- package/dist/esm/rendering/webgpu/WebGpuParticleRenderer.d.ts +1 -1
- package/dist/esm/rendering/webgpu/WebGpuParticleRenderer.js +100 -56
- package/dist/esm/rendering/webgpu/WebGpuParticleRenderer.js.map +1 -1
- package/dist/esm/rendering/webgpu/WebGpuSpriteRenderer.d.ts +2 -2
- package/dist/esm/rendering/webgpu/WebGpuSpriteRenderer.js +45 -45
- package/dist/esm/rendering/webgpu/WebGpuSpriteRenderer.js.map +1 -1
- package/dist/esm/rendering/webgpu/compute/WebGpuComputePipeline.d.ts +1 -1
- package/dist/esm/rendering/webgpu/compute/index.d.ts +2 -2
- package/dist/esm/resources/AbstractAssetFactory.d.ts +1 -1
- package/dist/esm/resources/AbstractAssetFactory.js.map +1 -1
- package/dist/esm/resources/AssetManifest.d.ts +1 -1
- package/dist/esm/resources/AssetManifest.js +2 -2
- package/dist/esm/resources/AssetManifest.js.map +1 -1
- package/dist/esm/resources/CacheFirstStrategy.d.ts +2 -2
- package/dist/esm/resources/CacheFirstStrategy.js.map +1 -1
- package/dist/esm/resources/CacheStrategy.d.ts +1 -1
- package/dist/esm/resources/FactoryRegistry.d.ts +1 -1
- package/dist/esm/resources/FactoryRegistry.js +2 -3
- package/dist/esm/resources/FactoryRegistry.js.map +1 -1
- package/dist/esm/resources/IndexedDbDatabase.d.ts +1 -1
- package/dist/esm/resources/IndexedDbDatabase.js +11 -14
- package/dist/esm/resources/IndexedDbDatabase.js.map +1 -1
- package/dist/esm/resources/IndexedDbStore.d.ts +1 -1
- package/dist/esm/resources/IndexedDbStore.js +2 -7
- package/dist/esm/resources/IndexedDbStore.js.map +1 -1
- package/dist/esm/resources/Loader.d.ts +9 -9
- package/dist/esm/resources/Loader.js +48 -35
- package/dist/esm/resources/Loader.js.map +1 -1
- package/dist/esm/resources/NetworkOnlyStrategy.d.ts +2 -2
- package/dist/esm/resources/NetworkOnlyStrategy.js.map +1 -1
- package/dist/esm/resources/factories/BinaryFactory.js.map +1 -1
- package/dist/esm/resources/factories/FontFactory.js +1 -1
- package/dist/esm/resources/factories/FontFactory.js.map +1 -1
- package/dist/esm/resources/factories/ImageFactory.js +4 -4
- package/dist/esm/resources/factories/ImageFactory.js.map +1 -1
- package/dist/esm/resources/factories/JsonFactory.d.ts +1 -1
- package/dist/esm/resources/factories/JsonFactory.js +1 -1
- package/dist/esm/resources/factories/JsonFactory.js.map +1 -1
- package/dist/esm/resources/factories/MusicFactory.d.ts +1 -1
- package/dist/esm/resources/factories/MusicFactory.js +4 -4
- package/dist/esm/resources/factories/MusicFactory.js.map +1 -1
- package/dist/esm/resources/factories/SoundFactory.d.ts +1 -1
- package/dist/esm/resources/factories/SoundFactory.js +3 -3
- package/dist/esm/resources/factories/SoundFactory.js.map +1 -1
- package/dist/esm/resources/factories/SvgFactory.js +3 -3
- package/dist/esm/resources/factories/SvgFactory.js.map +1 -1
- package/dist/esm/resources/factories/TextFactory.js +1 -1
- package/dist/esm/resources/factories/TextFactory.js.map +1 -1
- package/dist/esm/resources/factories/TextureFactory.d.ts +1 -1
- package/dist/esm/resources/factories/TextureFactory.js +3 -3
- package/dist/esm/resources/factories/TextureFactory.js.map +1 -1
- package/dist/esm/resources/factories/VideoFactory.d.ts +2 -2
- package/dist/esm/resources/factories/VideoFactory.js +5 -5
- package/dist/esm/resources/factories/VideoFactory.js.map +1 -1
- package/dist/esm/resources/factories/VttFactory.d.ts +2 -2
- package/dist/esm/resources/factories/VttFactory.js +6 -6
- package/dist/esm/resources/factories/VttFactory.js.map +1 -1
- package/dist/esm/resources/factories/WasmFactory.js.map +1 -1
- package/dist/esm/resources/index.d.ts +11 -11
- package/dist/esm/resources/utils.js +30 -25
- package/dist/esm/resources/utils.js.map +1 -1
- package/dist/exo.esm.js +26260 -24256
- package/dist/exo.esm.js.map +1 -1
- package/package.json +15 -4
package/README.md
CHANGED
|
@@ -40,38 +40,38 @@ CommonJS `require()` usage is not part of the supported contract for this pre-1.
|
|
|
40
40
|
import { Application, Scene, Graphics, Color, type RenderBackend } from '@codexo/exojs';
|
|
41
41
|
|
|
42
42
|
class HelloScene extends Scene {
|
|
43
|
-
|
|
43
|
+
private readonly box = new Graphics();
|
|
44
44
|
|
|
45
|
-
|
|
46
|
-
|
|
45
|
+
public constructor() {
|
|
46
|
+
super();
|
|
47
47
|
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
48
|
+
this.box.fillColor = Color.white;
|
|
49
|
+
this.box.drawRectangle(-32, -32, 64, 64);
|
|
50
|
+
this.box.setPosition(400, 300);
|
|
51
51
|
|
|
52
|
-
|
|
53
|
-
|
|
52
|
+
this.addChild(this.box);
|
|
53
|
+
}
|
|
54
54
|
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
55
|
+
public override update(delta: import('@codexo/exojs').Time): void {
|
|
56
|
+
this.box.rotation += delta.seconds * 45;
|
|
57
|
+
}
|
|
58
58
|
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
59
|
+
public override draw(backend: RenderBackend): void {
|
|
60
|
+
this.root.render(backend);
|
|
61
|
+
}
|
|
62
62
|
}
|
|
63
63
|
|
|
64
64
|
const canvas = document.querySelector('canvas');
|
|
65
65
|
|
|
66
66
|
if (!canvas) {
|
|
67
|
-
|
|
67
|
+
throw new Error('Missing <canvas> element.');
|
|
68
68
|
}
|
|
69
69
|
|
|
70
70
|
const app = new Application({
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
71
|
+
canvas,
|
|
72
|
+
width: 800,
|
|
73
|
+
height: 600,
|
|
74
|
+
clearColor: Color.cornflowerBlue,
|
|
75
75
|
});
|
|
76
76
|
|
|
77
77
|
await app.start(new HelloScene());
|
|
@@ -29,35 +29,31 @@ class Ease {
|
|
|
29
29
|
static linear = (t) => t;
|
|
30
30
|
static quadIn = (t) => t * t;
|
|
31
31
|
static quadOut = (t) => t * (2 - t);
|
|
32
|
-
static quadInOut = (t) => t < 0.5 ? 2 * t * t : -1 + (4 - 2 * t) * t;
|
|
32
|
+
static quadInOut = (t) => (t < 0.5 ? 2 * t * t : -1 + (4 - 2 * t) * t);
|
|
33
33
|
static cubicIn = (t) => t * t * t;
|
|
34
|
-
static cubicOut = (t) =>
|
|
35
|
-
static cubicInOut = (t) => t < 0.5 ? 4 * t * t * t : 1 - Math.pow(-2 * t + 2, 3) / 2;
|
|
34
|
+
static cubicOut = (t) => --t * t * t + 1;
|
|
35
|
+
static cubicInOut = (t) => (t < 0.5 ? 4 * t * t * t : 1 - Math.pow(-2 * t + 2, 3) / 2);
|
|
36
36
|
static quartIn = (t) => t * t * t * t;
|
|
37
|
-
static quartOut = (t) => 1 -
|
|
38
|
-
static quartInOut = (t) => t < 0.5 ? 8 * t * t * t * t : 1 - Math.pow(-2 * t + 2, 4) / 2;
|
|
37
|
+
static quartOut = (t) => 1 - --t * t * t * t;
|
|
38
|
+
static quartInOut = (t) => (t < 0.5 ? 8 * t * t * t * t : 1 - Math.pow(-2 * t + 2, 4) / 2);
|
|
39
39
|
static quintIn = (t) => t * t * t * t * t;
|
|
40
|
-
static quintOut = (t) => 1 +
|
|
41
|
-
static quintInOut = (t) => t < 0.5 ? 16 * t * t * t * t * t : 1 - Math.pow(-2 * t + 2, 5) / 2;
|
|
40
|
+
static quintOut = (t) => 1 + --t * t * t * t * t;
|
|
41
|
+
static quintInOut = (t) => (t < 0.5 ? 16 * t * t * t * t * t : 1 - Math.pow(-2 * t + 2, 5) / 2);
|
|
42
42
|
static sineIn = (t) => 1 - Math.cos((t * Math.PI) / 2);
|
|
43
43
|
static sineOut = (t) => Math.sin((t * Math.PI) / 2);
|
|
44
44
|
static sineInOut = (t) => -(Math.cos(Math.PI * t) - 1) / 2;
|
|
45
|
-
static expoIn = (t) => t === 0 ? 0 : Math.pow(2, 10 * t - 10);
|
|
46
|
-
static expoOut = (t) => t === 1 ? 1 : 1 - Math.pow(2, -10 * t);
|
|
45
|
+
static expoIn = (t) => (t === 0 ? 0 : Math.pow(2, 10 * t - 10));
|
|
46
|
+
static expoOut = (t) => (t === 1 ? 1 : 1 - Math.pow(2, -10 * t));
|
|
47
47
|
static expoInOut = (t) => {
|
|
48
48
|
if (t === 0)
|
|
49
49
|
return 0;
|
|
50
50
|
if (t === 1)
|
|
51
51
|
return 1;
|
|
52
|
-
return t < 0.5
|
|
53
|
-
? Math.pow(2, 20 * t - 10) / 2
|
|
54
|
-
: (2 - Math.pow(2, -20 * t + 10)) / 2;
|
|
52
|
+
return t < 0.5 ? Math.pow(2, 20 * t - 10) / 2 : (2 - Math.pow(2, -20 * t + 10)) / 2;
|
|
55
53
|
};
|
|
56
54
|
static circIn = (t) => 1 - Math.sqrt(1 - Math.pow(t, 2));
|
|
57
55
|
static circOut = (t) => Math.sqrt(1 - Math.pow(t - 1, 2));
|
|
58
|
-
static circInOut = (t) => t < 0.5
|
|
59
|
-
? (1 - Math.sqrt(1 - Math.pow(2 * t, 2))) / 2
|
|
60
|
-
: (Math.sqrt(1 - Math.pow(-2 * t + 2, 2)) + 1) / 2;
|
|
56
|
+
static circInOut = (t) => t < 0.5 ? (1 - Math.sqrt(1 - Math.pow(2 * t, 2))) / 2 : (Math.sqrt(1 - Math.pow(-2 * t + 2, 2)) + 1) / 2;
|
|
61
57
|
static backIn = (t) => {
|
|
62
58
|
const c1 = 1.70158;
|
|
63
59
|
const c3 = c1 + 1;
|
|
@@ -71,15 +67,11 @@ class Ease {
|
|
|
71
67
|
static backInOut = (t) => {
|
|
72
68
|
const c1 = 1.70158;
|
|
73
69
|
const c2 = c1 * 1.525;
|
|
74
|
-
return t < 0.5
|
|
75
|
-
? (Math.pow(2 * t, 2) * ((c2 + 1) * 2 * t - c2)) / 2
|
|
76
|
-
: (Math.pow(2 * t - 2, 2) * ((c2 + 1) * (2 * t - 2) + c2) + 2) / 2;
|
|
70
|
+
return t < 0.5 ? (Math.pow(2 * t, 2) * ((c2 + 1) * 2 * t - c2)) / 2 : (Math.pow(2 * t - 2, 2) * ((c2 + 1) * (2 * t - 2) + c2) + 2) / 2;
|
|
77
71
|
};
|
|
78
72
|
static bounceOut = bounceOutFn;
|
|
79
73
|
static bounceIn = (t) => 1 - bounceOutFn(1 - t);
|
|
80
|
-
static bounceInOut = (t) => t < 0.5
|
|
81
|
-
? (1 - bounceOutFn(1 - 2 * t)) / 2
|
|
82
|
-
: (1 + bounceOutFn(2 * t - 1)) / 2;
|
|
74
|
+
static bounceInOut = (t) => (t < 0.5 ? (1 - bounceOutFn(1 - 2 * t)) / 2 : (1 + bounceOutFn(2 * t - 1)) / 2);
|
|
83
75
|
static elasticIn = (t) => {
|
|
84
76
|
if (t === 0)
|
|
85
77
|
return 0;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Easing.js","sources":["../../../../src/animation/Easing.ts"],"sourcesContent":[null],"names":[],"mappings":"AAEA,MAAM,WAAW,GAAG,CAAC,CAAS,KAAY;
|
|
1
|
+
{"version":3,"file":"Easing.js","sources":["../../../../src/animation/Easing.ts"],"sourcesContent":[null],"names":[],"mappings":"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"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { TweenState } from './types';
|
|
2
|
-
import type { EasingFunction, TweenLifecycleCallback, TweenUpdateCallback } from './types';
|
|
3
1
|
import type { TweenManager } from './TweenManager';
|
|
2
|
+
import type { EasingFunction, TweenLifecycleCallback, TweenUpdateCallback } from './types';
|
|
3
|
+
import { TweenState } from './types';
|
|
4
4
|
/**
|
|
5
5
|
* Animates numeric properties of `target` from their current value to a
|
|
6
6
|
* configured end value over a duration in seconds. Supports easing, delay,
|
|
@@ -74,7 +74,7 @@ export declare class Tween<T extends object = object> {
|
|
|
74
74
|
/** Delay in seconds before the tween begins interpolating. Default 0. */
|
|
75
75
|
delay(seconds: number): this;
|
|
76
76
|
/** Easing function applied to the normalized time. Default Ease.linear. */
|
|
77
|
-
easing(
|
|
77
|
+
easing(easingFunction: EasingFunction): this;
|
|
78
78
|
/**
|
|
79
79
|
* Number of additional repeat cycles. -1 = infinite. Default 0 (runs once).
|
|
80
80
|
*
|
|
@@ -94,8 +94,8 @@ class Tween {
|
|
|
94
94
|
return this;
|
|
95
95
|
}
|
|
96
96
|
/** Easing function applied to the normalized time. Default Ease.linear. */
|
|
97
|
-
easing(
|
|
98
|
-
this._easing =
|
|
97
|
+
easing(easingFunction) {
|
|
98
|
+
this._easing = easingFunction;
|
|
99
99
|
return this;
|
|
100
100
|
}
|
|
101
101
|
/**
|
|
@@ -291,8 +291,7 @@ class Tween {
|
|
|
291
291
|
for (const key of keys) {
|
|
292
292
|
const val = this._target[key];
|
|
293
293
|
if (typeof val !== 'number') {
|
|
294
|
-
console.warn(`Tween: property "${String(key)}" is not a number on target ` +
|
|
295
|
-
`(got ${typeof val}). It will be skipped.`);
|
|
294
|
+
console.warn(`Tween: property "${String(key)}" is not a number on target ` + `(got ${typeof val}). It will be skipped.`);
|
|
296
295
|
continue;
|
|
297
296
|
}
|
|
298
297
|
snap[String(key)] = val;
|
|
@@ -306,9 +305,12 @@ class Tween {
|
|
|
306
305
|
const t = this._direction === 1 ? rawT : 1 - rawT;
|
|
307
306
|
const easedT = this._easing(t);
|
|
308
307
|
const keys = Object.keys(this._startValues);
|
|
308
|
+
const properties = this._properties;
|
|
309
309
|
for (const key of keys) {
|
|
310
310
|
const start = this._startValues[key];
|
|
311
|
-
const end =
|
|
311
|
+
const end = properties[key];
|
|
312
|
+
if (end === undefined)
|
|
313
|
+
continue;
|
|
312
314
|
this._target[key] = start + (end - start) * easedT;
|
|
313
315
|
}
|
|
314
316
|
this._onUpdate?.(easedT);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Tween.js","sources":["../../../../src/animation/Tween.ts"],"sourcesContent":[null],"names":[],"mappings":";;;AAKA;;;;;;;;;;;;;;;;;;;;;;;;;;;AA2BG;MACU,KAAK,CAAA;
|
|
1
|
+
{"version":3,"file":"Tween.js","sources":["../../../../src/animation/Tween.ts"],"sourcesContent":[null],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TweenManager.js","sources":["../../../../src/animation/TweenManager.ts"],"sourcesContent":[null],"names":[],"mappings":";;AAEA;;;;;;;;;AASG;MACU,YAAY,CAAA;
|
|
1
|
+
{"version":3,"file":"TweenManager.js","sources":["../../../../src/animation/TweenManager.ts"],"sourcesContent":[null],"names":[],"mappings":";;AAEA;;;;;;;;;AASG;MACU,YAAY,CAAA;IACf,OAAO,GAAY,EAAE;IACrB,UAAU,GAAG,KAAK;AAE1B;;;AAGG;AACI,IAAA,MAAM,CAAmB,MAAS,EAAA;AACvC,QAAA,MAAM,KAAK,GAAG,IAAI,KAAK,CAAC,MAAM,CAAC;AAC/B,QAAA,KAAK,CAAC,cAAc,CAAC,IAAI,CAAC;AAC1B,QAAA,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC;AAExB,QAAA,OAAO,KAAK;IACd;AAEA;;;AAGG;AACI,IAAA,GAAG,CAAC,KAAY,EAAA;AACrB,QAAA,KAAK,CAAC,cAAc,CAAC,IAAI,CAAC;QAE1B,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE;AACjC,YAAA,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC;QAC1B;AAEA,QAAA,OAAO,IAAI;IACb;;AAGO,IAAA,MAAM,CAAC,KAAY,EAAA;QACxB,MAAM,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC;AAEzC,QAAA,IAAI,KAAK,KAAK,EAAE,EAAE;YAChB,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC;QAC/B;AAEA,QAAA,OAAO,IAAI;IACb;AAEA;;;;AAIG;AACI,IAAA,MAAM,CAAC,YAAoB,EAAA;QAChC,IAAI,IAAI,CAAC,UAAU;AAAE,YAAA,OAAO,IAAI;QAEhC,MAAM,QAAQ,GAAG,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC;AAElC,QAAA,KAAK,MAAM,KAAK,IAAI,QAAQ,EAAE;AAC5B,YAAA,KAAK,CAAC,MAAM,CAAC,YAAY,CAAC;QAC5B;AAEA,QAAA,OAAO,IAAI;IACb;AAEA;;;AAGG;IACI,KAAK,GAAA;AACV,QAAA,IAAI,CAAC,OAAO,GAAG,EAAE;AAEjB,QAAA,OAAO,IAAI;IACb;;IAGO,OAAO,GAAA;QACZ,IAAI,CAAC,KAAK,EAAE;AACZ,QAAA,IAAI,CAAC,UAAU,GAAG,IAAI;IACxB;AACD;;;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.js","sources":["../../../../src/animation/types.ts"],"sourcesContent":[null],"names":[],"mappings":"AAEA;;;;;AAKG;IACS;AAAZ,CAAA,UAAY,UAAU,EAAA;
|
|
1
|
+
{"version":3,"file":"types.js","sources":["../../../../src/animation/types.ts"],"sourcesContent":[null],"names":[],"mappings":"AAEA;;;;;AAKG;IACS;AAAZ,CAAA,UAAY,UAAU,EAAA;AACpB,IAAA,UAAA,CAAA,MAAA,CAAA,GAAA,MAAa;AACb,IAAA,UAAA,CAAA,QAAA,CAAA,GAAA,QAAiB;AACjB,IAAA,UAAA,CAAA,QAAA,CAAA,GAAA,QAAiB;AACjB,IAAA,UAAA,CAAA,UAAA,CAAA,GAAA,UAAqB;AACrB,IAAA,UAAA,CAAA,SAAA,CAAA,GAAA,SAAmB;AACrB,CAAC,EANW,UAAU,KAAV,UAAU,GAAA,EAAA,CAAA,CAAA;;;;"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
+
import type { AudioBus } from '@/audio/AudioBus';
|
|
1
2
|
import type { Media } from '@/audio/Media';
|
|
2
3
|
import { Signal } from '@/core/Signal';
|
|
3
4
|
import type { PlaybackOptions } from '@/core/types';
|
|
4
|
-
import type { AudioBus } from '@/audio/AudioBus';
|
|
5
5
|
/** Initial state passed to the {@link AbstractMedia} constructor by subclasses. */
|
|
6
6
|
export interface AbstractMediaInitialState extends Omit<PlaybackOptions, 'time'> {
|
|
7
7
|
duration: number;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AbstractMedia.js","sources":["../../../../src/audio/AbstractMedia.ts"],"sourcesContent":[null],"names":[],"mappings":";;AAUA;;;;;;;;;AASG;MACmB,aAAa,CAAA;
|
|
1
|
+
{"version":3,"file":"AbstractMedia.js","sources":["../../../../src/audio/AbstractMedia.ts"],"sourcesContent":[null],"names":[],"mappings":"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"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import type { AudioBus } from '@/audio/AudioBus';
|
|
2
|
-
import type { Sound } from '@/audio/Sound';
|
|
3
2
|
import type { Music } from '@/audio/Music';
|
|
3
|
+
import type { Sound } from '@/audio/Sound';
|
|
4
4
|
export type AudioAnalyserSource = AudioBus | Sound | Music | MediaStream | AudioNode | null;
|
|
5
5
|
/** Construction options for {@link AudioAnalyser}. */
|
|
6
6
|
export interface AudioAnalyserOptions {
|
|
@@ -12,6 +12,21 @@ export interface AudioAnalyserOptions {
|
|
|
12
12
|
minDecibels?: number;
|
|
13
13
|
/** Maximum dBFS rendered by the byte-domain spectrum getters. Default -30. */
|
|
14
14
|
maxDecibels?: number;
|
|
15
|
+
/**
|
|
16
|
+
* Optional initial source. Equivalent to `analyser.source = value` after
|
|
17
|
+
* construction; provided for ergonomic one-shot construction. The setter
|
|
18
|
+
* remains usable for runtime source switches.
|
|
19
|
+
*/
|
|
20
|
+
source?: AudioAnalyserSource;
|
|
21
|
+
}
|
|
22
|
+
/** Mapping options for {@link AudioAnalyser.getSpectrumMel} and {@link AudioAnalyser.getSpectrumLog}. */
|
|
23
|
+
export interface SpectrumMappingOptions {
|
|
24
|
+
/** Number of output bands. Default 32. */
|
|
25
|
+
bands?: number;
|
|
26
|
+
/** Lower frequency bound in Hz. Default 20. */
|
|
27
|
+
fMin?: number;
|
|
28
|
+
/** Upper frequency bound in Hz. Default 20000 (clamped to nyquist at runtime). */
|
|
29
|
+
fMax?: number;
|
|
15
30
|
}
|
|
16
31
|
/**
|
|
17
32
|
* Lightweight visualisation analyser backed by a Web Audio AnalyserNode.
|
|
@@ -32,6 +47,8 @@ export declare class AudioAnalyser {
|
|
|
32
47
|
private _floatSpectrum;
|
|
33
48
|
private _byteWaveform;
|
|
34
49
|
private _floatWaveform;
|
|
50
|
+
private _melCache;
|
|
51
|
+
private _logCache;
|
|
35
52
|
/**
|
|
36
53
|
* Create an `AudioAnalyser` with the given options. The underlying
|
|
37
54
|
* `AnalyserNode` is created immediately if the `AudioContext` is already
|
|
@@ -75,12 +92,31 @@ export declare class AudioAnalyser {
|
|
|
75
92
|
};
|
|
76
93
|
/** Return overall RMS energy across all bins, normalised 0..1. */
|
|
77
94
|
getRms(): number;
|
|
95
|
+
/**
|
|
96
|
+
* Mel-scaled spectrum, byte domain (0..255). Output length = `bands`.
|
|
97
|
+
* Each output bin is a triangular-weighted sum of the linear FFT bins
|
|
98
|
+
* underneath it, mel-spaced from `fMin` to `fMax`.
|
|
99
|
+
*/
|
|
100
|
+
getSpectrumMel(into?: Uint8Array<ArrayBuffer>, options?: SpectrumMappingOptions): Uint8Array<ArrayBuffer>;
|
|
101
|
+
/** Mel-scaled spectrum, float domain (dBFS values). Output length = `bands`. */
|
|
102
|
+
getSpectrumMelFloat(into?: Float32Array<ArrayBuffer>, options?: SpectrumMappingOptions): Float32Array<ArrayBuffer>;
|
|
103
|
+
/**
|
|
104
|
+
* Log-scaled spectrum, byte domain (0..255). Output length = `bands`.
|
|
105
|
+
* Bins are spaced so each output covers an equal fraction of the
|
|
106
|
+
* `log2(fMax / fMin)` octave range — useful when you want a
|
|
107
|
+
* frequency-axis visualization where each octave gets the same width.
|
|
108
|
+
*/
|
|
109
|
+
getSpectrumLog(into?: Uint8Array<ArrayBuffer>, options?: SpectrumMappingOptions): Uint8Array<ArrayBuffer>;
|
|
110
|
+
/** Log-scaled spectrum, float domain (dBFS values). Output length = `bands`. */
|
|
111
|
+
getSpectrumLogFloat(into?: Float32Array<ArrayBuffer>, options?: SpectrumMappingOptions): Float32Array<ArrayBuffer>;
|
|
78
112
|
/**
|
|
79
113
|
* Disconnect the analyser tap, release the internal `AnalyserNode`, and
|
|
80
114
|
* cancel any pending setup callbacks. Call when the analyser is no longer
|
|
81
115
|
* needed to avoid memory leaks.
|
|
82
116
|
*/
|
|
83
117
|
destroy(): void;
|
|
118
|
+
private _getMelFilterbank;
|
|
119
|
+
private _getLogRanges;
|
|
84
120
|
private _setupAnalyser;
|
|
85
121
|
private _connectSource;
|
|
86
122
|
private _resolveToAudioNode;
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { isAudioContextReady, getAudioContext, onAudioContextReady } from './audio-context.js';
|
|
2
|
+
import { buildMelFilterbank } from './dsp/mel.js';
|
|
2
3
|
|
|
3
4
|
/**
|
|
4
5
|
* Lightweight visualisation analyser backed by a Web Audio AnalyserNode.
|
|
@@ -20,6 +21,10 @@ class AudioAnalyser {
|
|
|
20
21
|
_floatSpectrum;
|
|
21
22
|
_byteWaveform;
|
|
22
23
|
_floatWaveform;
|
|
24
|
+
// Cached mel/log filterbanks. Key: `${bands}|${fMin}|${fMax}|${fftSize}`.
|
|
25
|
+
// Filterbank construction is non-trivial; caching avoids per-frame allocation.
|
|
26
|
+
_melCache = new Map();
|
|
27
|
+
_logCache = new Map();
|
|
23
28
|
/**
|
|
24
29
|
* Create an `AudioAnalyser` with the given options. The underlying
|
|
25
30
|
* `AnalyserNode` is created immediately if the `AudioContext` is already
|
|
@@ -31,6 +36,7 @@ class AudioAnalyser {
|
|
|
31
36
|
smoothingTimeConstant: options?.smoothingTimeConstant ?? 0.8,
|
|
32
37
|
minDecibels: options?.minDecibels ?? -100,
|
|
33
38
|
maxDecibels: options?.maxDecibels ?? -30,
|
|
39
|
+
source: options?.source ?? null,
|
|
34
40
|
};
|
|
35
41
|
const binCount = this._options.fftSize >> 1;
|
|
36
42
|
this._byteSpectrum = new Uint8Array(binCount);
|
|
@@ -43,6 +49,9 @@ class AudioAnalyser {
|
|
|
43
49
|
else {
|
|
44
50
|
onAudioContextReady.once(this._setupAnalyser, this);
|
|
45
51
|
}
|
|
52
|
+
if (options?.source !== undefined && options.source !== null) {
|
|
53
|
+
this.source = options.source;
|
|
54
|
+
}
|
|
46
55
|
}
|
|
47
56
|
// -----------------------------------------------------------------------
|
|
48
57
|
// Source setter
|
|
@@ -169,8 +178,8 @@ class AudioAnalyser {
|
|
|
169
178
|
const ctx = getAudioContext();
|
|
170
179
|
const nyquist = ctx.sampleRate / 2;
|
|
171
180
|
const binCount = this.frequencyBinCount;
|
|
172
|
-
const fromBin = Math.max(0, Math.min(binCount - 1, Math.round(fromHz / nyquist * binCount)));
|
|
173
|
-
const toBin = Math.max(0, Math.min(binCount - 1, Math.round(toHz / nyquist * binCount)));
|
|
181
|
+
const fromBin = Math.max(0, Math.min(binCount - 1, Math.round((fromHz / nyquist) * binCount)));
|
|
182
|
+
const toBin = Math.max(0, Math.min(binCount - 1, Math.round((toHz / nyquist) * binCount)));
|
|
174
183
|
const lo = Math.min(fromBin, toBin);
|
|
175
184
|
const hi = Math.max(fromBin, toBin);
|
|
176
185
|
const spectrum = this.getSpectrum();
|
|
@@ -198,6 +207,81 @@ class AudioAnalyser {
|
|
|
198
207
|
return this.getBandEnergy(0, nyquist);
|
|
199
208
|
}
|
|
200
209
|
// -----------------------------------------------------------------------
|
|
210
|
+
// Spectrum mapping (mel / log scaling)
|
|
211
|
+
//
|
|
212
|
+
// The raw FFT bins from AnalyserNode are linearly distributed across
|
|
213
|
+
// 0..nyquist, which gives bass a few bins and treble hundreds. For
|
|
214
|
+
// visualisations you typically want perceptually-weighted spacing.
|
|
215
|
+
//
|
|
216
|
+
// Both `getSpectrumMel` and `getSpectrumLog` operate on the byte-domain
|
|
217
|
+
// spectrum (0..255) and produce byte output by default. The float
|
|
218
|
+
// variants operate on dBFS values and produce float output.
|
|
219
|
+
//
|
|
220
|
+
// Filterbanks are cached on the analyser; they only rebuild when fftSize
|
|
221
|
+
// or the (bands, fMin, fMax) parameters change.
|
|
222
|
+
// -----------------------------------------------------------------------
|
|
223
|
+
/**
|
|
224
|
+
* Mel-scaled spectrum, byte domain (0..255). Output length = `bands`.
|
|
225
|
+
* Each output bin is a triangular-weighted sum of the linear FFT bins
|
|
226
|
+
* underneath it, mel-spaced from `fMin` to `fMax`.
|
|
227
|
+
*/
|
|
228
|
+
getSpectrumMel(into, options) {
|
|
229
|
+
const bandCount = options?.bands ?? 32;
|
|
230
|
+
const out = into ?? new Uint8Array(bandCount);
|
|
231
|
+
const filterbank = this._getMelFilterbank(bandCount, options?.fMin ?? 20, options?.fMax ?? 20000);
|
|
232
|
+
if (!this._analyser || filterbank === null) {
|
|
233
|
+
out.fill(0);
|
|
234
|
+
return out;
|
|
235
|
+
}
|
|
236
|
+
this._analyser.getByteFrequencyData(this._byteSpectrum);
|
|
237
|
+
applyFilterbank(this._byteSpectrum, filterbank, out);
|
|
238
|
+
return out;
|
|
239
|
+
}
|
|
240
|
+
/** Mel-scaled spectrum, float domain (dBFS values). Output length = `bands`. */
|
|
241
|
+
getSpectrumMelFloat(into, options) {
|
|
242
|
+
const bandCount = options?.bands ?? 32;
|
|
243
|
+
const out = into ?? new Float32Array(bandCount);
|
|
244
|
+
const filterbank = this._getMelFilterbank(bandCount, options?.fMin ?? 20, options?.fMax ?? 20000);
|
|
245
|
+
if (!this._analyser || filterbank === null) {
|
|
246
|
+
out.fill(0);
|
|
247
|
+
return out;
|
|
248
|
+
}
|
|
249
|
+
this._analyser.getFloatFrequencyData(this._floatSpectrum);
|
|
250
|
+
applyFilterbank(this._floatSpectrum, filterbank, out);
|
|
251
|
+
return out;
|
|
252
|
+
}
|
|
253
|
+
/**
|
|
254
|
+
* Log-scaled spectrum, byte domain (0..255). Output length = `bands`.
|
|
255
|
+
* Bins are spaced so each output covers an equal fraction of the
|
|
256
|
+
* `log2(fMax / fMin)` octave range — useful when you want a
|
|
257
|
+
* frequency-axis visualization where each octave gets the same width.
|
|
258
|
+
*/
|
|
259
|
+
getSpectrumLog(into, options) {
|
|
260
|
+
const bandCount = options?.bands ?? 32;
|
|
261
|
+
const out = into ?? new Uint8Array(bandCount);
|
|
262
|
+
const ranges = this._getLogRanges(bandCount, options?.fMin ?? 20, options?.fMax ?? 20000);
|
|
263
|
+
if (!this._analyser || ranges === null) {
|
|
264
|
+
out.fill(0);
|
|
265
|
+
return out;
|
|
266
|
+
}
|
|
267
|
+
this._analyser.getByteFrequencyData(this._byteSpectrum);
|
|
268
|
+
applyLogRanges(this._byteSpectrum, ranges, out);
|
|
269
|
+
return out;
|
|
270
|
+
}
|
|
271
|
+
/** Log-scaled spectrum, float domain (dBFS values). Output length = `bands`. */
|
|
272
|
+
getSpectrumLogFloat(into, options) {
|
|
273
|
+
const bandCount = options?.bands ?? 32;
|
|
274
|
+
const out = into ?? new Float32Array(bandCount);
|
|
275
|
+
const ranges = this._getLogRanges(bandCount, options?.fMin ?? 20, options?.fMax ?? 20000);
|
|
276
|
+
if (!this._analyser || ranges === null) {
|
|
277
|
+
out.fill(0);
|
|
278
|
+
return out;
|
|
279
|
+
}
|
|
280
|
+
this._analyser.getFloatFrequencyData(this._floatSpectrum);
|
|
281
|
+
applyLogRanges(this._floatSpectrum, ranges, out);
|
|
282
|
+
return out;
|
|
283
|
+
}
|
|
284
|
+
// -----------------------------------------------------------------------
|
|
201
285
|
// Lifecycle
|
|
202
286
|
// -----------------------------------------------------------------------
|
|
203
287
|
/**
|
|
@@ -215,6 +299,34 @@ class AudioAnalyser {
|
|
|
215
299
|
// -----------------------------------------------------------------------
|
|
216
300
|
// Private helpers
|
|
217
301
|
// -----------------------------------------------------------------------
|
|
302
|
+
_getMelFilterbank(bands, fMin, fMax) {
|
|
303
|
+
if (!this._analyser)
|
|
304
|
+
return null;
|
|
305
|
+
const ctx = getAudioContext();
|
|
306
|
+
const fftSize = this._options.fftSize;
|
|
307
|
+
const clampedFmax = Math.min(fMax, ctx.sampleRate / 2);
|
|
308
|
+
const key = `${bands}|${fMin}|${clampedFmax}|${fftSize}`;
|
|
309
|
+
let cached = this._melCache.get(key);
|
|
310
|
+
if (cached === undefined) {
|
|
311
|
+
cached = buildMelFilterbank(bands, fMin, clampedFmax, fftSize, ctx.sampleRate);
|
|
312
|
+
this._melCache.set(key, cached);
|
|
313
|
+
}
|
|
314
|
+
return cached;
|
|
315
|
+
}
|
|
316
|
+
_getLogRanges(bands, fMin, fMax) {
|
|
317
|
+
if (!this._analyser)
|
|
318
|
+
return null;
|
|
319
|
+
const ctx = getAudioContext();
|
|
320
|
+
const fftSize = this._options.fftSize;
|
|
321
|
+
const clampedFmax = Math.min(fMax, ctx.sampleRate / 2);
|
|
322
|
+
const key = `${bands}|${fMin}|${clampedFmax}|${fftSize}`;
|
|
323
|
+
let cached = this._logCache.get(key);
|
|
324
|
+
if (cached === undefined) {
|
|
325
|
+
cached = buildLogRanges(bands, fMin, clampedFmax, fftSize, ctx.sampleRate);
|
|
326
|
+
this._logCache.set(key, cached);
|
|
327
|
+
}
|
|
328
|
+
return cached;
|
|
329
|
+
}
|
|
218
330
|
_setupAnalyser(audioContext) {
|
|
219
331
|
const node = audioContext.createAnalyser();
|
|
220
332
|
node.fftSize = this._options.fftSize;
|
|
@@ -305,6 +417,42 @@ class AudioAnalyser {
|
|
|
305
417
|
}
|
|
306
418
|
}
|
|
307
419
|
}
|
|
420
|
+
function buildLogRanges(bandCount, fMin, fMax, fftSize, sampleRate) {
|
|
421
|
+
const binCount = fftSize >> 1;
|
|
422
|
+
const nyquist = sampleRate / 2;
|
|
423
|
+
const logMin = Math.log(fMin);
|
|
424
|
+
const logMax = Math.log(fMax);
|
|
425
|
+
const ranges = [];
|
|
426
|
+
for (let b = 0; b < bandCount; b++) {
|
|
427
|
+
const lowHz = Math.exp(logMin + ((logMax - logMin) * b) / bandCount);
|
|
428
|
+
const highHz = Math.exp(logMin + ((logMax - logMin) * (b + 1)) / bandCount);
|
|
429
|
+
const startBin = Math.max(0, Math.min(binCount - 1, Math.floor((lowHz / nyquist) * binCount)));
|
|
430
|
+
const endBin = Math.max(startBin, Math.min(binCount - 1, Math.ceil((highHz / nyquist) * binCount) - 1));
|
|
431
|
+
ranges.push({ startBin, endBin });
|
|
432
|
+
}
|
|
433
|
+
return ranges;
|
|
434
|
+
}
|
|
435
|
+
function applyFilterbank(spectrum, bands, out) {
|
|
436
|
+
for (let b = 0; b < bands.length; b++) {
|
|
437
|
+
const { startBin, weights } = bands[b];
|
|
438
|
+
let sum = 0;
|
|
439
|
+
for (let i = 0; i < weights.length; i++) {
|
|
440
|
+
sum += spectrum[startBin + i] * weights[i];
|
|
441
|
+
}
|
|
442
|
+
out[b] = sum;
|
|
443
|
+
}
|
|
444
|
+
}
|
|
445
|
+
function applyLogRanges(spectrum, ranges, out) {
|
|
446
|
+
for (let b = 0; b < ranges.length; b++) {
|
|
447
|
+
const { startBin, endBin } = ranges[b];
|
|
448
|
+
let sum = 0;
|
|
449
|
+
const count = endBin - startBin + 1;
|
|
450
|
+
for (let i = startBin; i <= endBin; i++) {
|
|
451
|
+
sum += spectrum[i];
|
|
452
|
+
}
|
|
453
|
+
out[b] = sum / count;
|
|
454
|
+
}
|
|
455
|
+
}
|
|
308
456
|
|
|
309
457
|
export { AudioAnalyser };
|
|
310
458
|
//# sourceMappingURL=AudioAnalyser.js.map
|