@codexo/exojs 0.6.12 → 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 +1424 -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 +29 -0
- package/dist/esm/audio/AbstractMedia.js +76 -0
- package/dist/esm/audio/AbstractMedia.js.map +1 -1
- package/dist/esm/audio/AudioAnalyser.d.ts +83 -23
- package/dist/esm/audio/AudioAnalyser.js +277 -57
- package/dist/esm/audio/AudioAnalyser.js.map +1 -1
- package/dist/esm/audio/AudioBus.d.ts +82 -0
- package/dist/esm/audio/AudioBus.js +255 -0
- package/dist/esm/audio/AudioBus.js.map +1 -0
- package/dist/esm/audio/AudioFilter.d.ts +16 -0
- package/dist/esm/audio/AudioFilter.js +13 -0
- package/dist/esm/audio/AudioFilter.js.map +1 -0
- package/dist/esm/audio/AudioListener.d.ts +39 -0
- package/dist/esm/audio/AudioListener.js +97 -0
- package/dist/esm/audio/AudioListener.js.map +1 -0
- package/dist/esm/audio/AudioManager.d.ts +68 -0
- package/dist/esm/audio/AudioManager.js +139 -0
- package/dist/esm/audio/AudioManager.js.map +1 -0
- package/dist/esm/audio/BeatDetector.d.ts +142 -0
- package/dist/esm/audio/BeatDetector.js +957 -0
- package/dist/esm/audio/BeatDetector.js.map +1 -0
- package/dist/esm/audio/Envelope.d.ts +44 -0
- package/dist/esm/audio/Envelope.js +60 -0
- package/dist/esm/audio/Envelope.js.map +1 -0
- package/dist/esm/audio/Media.d.ts +11 -0
- package/dist/esm/audio/Music.d.ts +20 -0
- package/dist/esm/audio/Music.js +45 -4
- package/dist/esm/audio/Music.js.map +1 -1
- package/dist/esm/audio/OscillatorSound.d.ts +98 -0
- package/dist/esm/audio/OscillatorSound.js +342 -0
- package/dist/esm/audio/OscillatorSound.js.map +1 -0
- package/dist/esm/audio/Sound.d.ts +119 -9
- package/dist/esm/audio/Sound.js +301 -117
- 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/crossFade.d.ts +19 -0
- package/dist/esm/audio/crossFade.js +26 -0
- package/dist/esm/audio/crossFade.js.map +1 -0
- package/dist/esm/audio/dsp/fft.d.ts +22 -0
- package/dist/esm/audio/dsp/mel.d.ts +43 -0
- package/dist/esm/audio/dsp/tempogram.d.ts +51 -0
- package/dist/esm/audio/filters/ChorusFilter.d.ts +52 -0
- package/dist/esm/audio/filters/ChorusFilter.js +143 -0
- package/dist/esm/audio/filters/ChorusFilter.js.map +1 -0
- package/dist/esm/audio/filters/CompressorFilter.d.ts +43 -0
- package/dist/esm/audio/filters/CompressorFilter.js +108 -0
- package/dist/esm/audio/filters/CompressorFilter.js.map +1 -0
- package/dist/esm/audio/filters/DelayFilter.d.ts +34 -0
- package/dist/esm/audio/filters/DelayFilter.js +110 -0
- package/dist/esm/audio/filters/DelayFilter.js.map +1 -0
- package/dist/esm/audio/filters/DuckingFilter.d.ts +44 -0
- package/dist/esm/audio/filters/DuckingFilter.js +164 -0
- package/dist/esm/audio/filters/DuckingFilter.js.map +1 -0
- package/dist/esm/audio/filters/EqualizerFilter.d.ts +49 -0
- package/dist/esm/audio/filters/EqualizerFilter.js +134 -0
- package/dist/esm/audio/filters/EqualizerFilter.js.map +1 -0
- package/dist/esm/audio/filters/GranularFilter.d.ts +62 -0
- package/dist/esm/audio/filters/GranularFilter.js +176 -0
- package/dist/esm/audio/filters/GranularFilter.js.map +1 -0
- package/dist/esm/audio/filters/HighpassFilter.d.ts +29 -0
- package/dist/esm/audio/filters/HighpassFilter.js +71 -0
- package/dist/esm/audio/filters/HighpassFilter.js.map +1 -0
- package/dist/esm/audio/filters/LowpassFilter.d.ts +29 -0
- package/dist/esm/audio/filters/LowpassFilter.js +71 -0
- package/dist/esm/audio/filters/LowpassFilter.js.map +1 -0
- package/dist/esm/audio/filters/PitchShiftFilter.d.ts +44 -0
- package/dist/esm/audio/filters/PitchShiftFilter.js +132 -0
- package/dist/esm/audio/filters/PitchShiftFilter.js.map +1 -0
- package/dist/esm/audio/filters/ReverbFilter.d.ts +36 -0
- package/dist/esm/audio/filters/ReverbFilter.js +118 -0
- package/dist/esm/audio/filters/ReverbFilter.js.map +1 -0
- package/dist/esm/audio/filters/VocoderFilter.d.ts +49 -0
- package/dist/esm/audio/filters/VocoderFilter.js +174 -0
- package/dist/esm/audio/filters/VocoderFilter.js.map +1 -0
- package/dist/esm/audio/filters/WorkletFilter.d.ts +51 -0
- package/dist/esm/audio/filters/WorkletFilter.js +106 -0
- package/dist/esm/audio/filters/WorkletFilter.js.map +1 -0
- package/dist/esm/audio/filters/index.d.ts +12 -0
- package/dist/esm/audio/index.d.ts +15 -1
- package/dist/esm/audio/worklet/registerWorklet.d.ts +10 -0
- package/dist/esm/audio/worklet/registerWorklet.js +44 -0
- package/dist/esm/audio/worklet/registerWorklet.js.map +1 -0
- package/dist/esm/core/Application.d.ts +82 -0
- package/dist/esm/core/Application.js +137 -2
- 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 +40 -1
- package/dist/esm/core/SceneNode.js +75 -6
- 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 +22 -1
- 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/index.d.ts +0 -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 +26 -0
- package/dist/esm/debug/BoundingBoxesLayer.js +136 -0
- package/dist/esm/debug/BoundingBoxesLayer.js.map +1 -0
- package/dist/esm/debug/DebugLayer.d.ts +42 -0
- package/dist/esm/debug/DebugLayer.js +34 -0
- package/dist/esm/debug/DebugLayer.js.map +1 -0
- package/dist/esm/debug/DebugOverlay.d.ts +59 -0
- package/dist/esm/debug/DebugOverlay.js +123 -0
- package/dist/esm/debug/DebugOverlay.js.map +1 -0
- package/dist/esm/debug/HitTestLayer.d.ts +32 -0
- package/dist/esm/debug/HitTestLayer.js +118 -0
- package/dist/esm/debug/HitTestLayer.js.map +1 -0
- package/dist/esm/debug/PerformanceLayer.d.ts +37 -0
- package/dist/esm/debug/PerformanceLayer.js +193 -0
- package/dist/esm/debug/PerformanceLayer.js.map +1 -0
- package/dist/esm/debug/PointerStackLayer.d.ts +31 -0
- package/dist/esm/debug/PointerStackLayer.js +160 -0
- package/dist/esm/debug/PointerStackLayer.js.map +1 -0
- package/dist/esm/debug/index.d.ts +6 -0
- package/dist/esm/debug/index.js +7 -0
- package/dist/esm/debug/index.js.map +1 -0
- package/dist/esm/index.js +30 -4
- package/dist/esm/index.js.map +1 -1
- 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 +43 -0
- package/dist/esm/input/InputManager.js +68 -5
- package/dist/esm/input/InputManager.js.map +1 -1
- package/dist/esm/input/InteractionEvent.d.ts +31 -0
- package/dist/esm/input/InteractionEvent.js +37 -0
- package/dist/esm/input/InteractionEvent.js.map +1 -0
- package/dist/esm/input/InteractionManager.d.ts +163 -0
- package/dist/esm/input/InteractionManager.js +575 -0
- package/dist/esm/input/InteractionManager.js.map +1 -0
- 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/index.d.ts +2 -0
- package/dist/esm/input/interaction-hooks.d.ts +34 -0
- package/dist/esm/input/interaction-hooks.js +35 -0
- package/dist/esm/input/interaction-hooks.js.map +1 -0
- 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 +44 -2
- package/dist/esm/math/Circle.js +116 -16
- 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 +16 -1
- 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 +11 -2
- package/dist/esm/math/ObservableVector.js +13 -2
- 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 +35 -1
- package/dist/esm/math/Polygon.js +78 -6
- 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 +84 -0
- package/dist/esm/math/Quadtree.js +204 -0
- package/dist/esm/math/Quadtree.js.map +1 -0
- package/dist/esm/math/Random.d.ts +25 -0
- package/dist/esm/math/Random.js +26 -1
- 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 +10 -1
- package/dist/esm/math/Size.js.map +1 -1
- package/dist/esm/math/Vector.d.ts +16 -0
- package/dist/esm/math/Vector.js +17 -1
- 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 +231 -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/index.d.ts +1 -0
- 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 +70 -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 +12 -1
- 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 +44 -0
- package/dist/esm/rendering/Container.js +62 -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 +45 -0
- package/dist/esm/rendering/RenderNode.js +62 -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 +73 -6
- package/dist/esm/rendering/View.js +69 -2
- 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 +114 -0
- package/dist/esm/rendering/filters/WebGl2ShaderFilter.js +273 -0
- package/dist/esm/rendering/filters/WebGl2ShaderFilter.js.map +1 -0
- package/dist/esm/rendering/filters/WebGpuShaderFilter.d.ts +116 -0
- package/dist/esm/rendering/filters/WebGpuShaderFilter.js +402 -0
- package/dist/esm/rendering/filters/WebGpuShaderFilter.js.map +1 -0
- package/dist/esm/rendering/index.d.ts +3 -0
- package/dist/esm/rendering/mesh/Mesh.d.ts +2 -0
- package/dist/esm/rendering/mesh/Mesh.js +3 -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/shader/upgradeFragmentShaderToGl300.d.ts +34 -0
- package/dist/esm/rendering/shader/upgradeFragmentShaderToGl300.js +60 -0
- package/dist/esm/rendering/shader/upgradeFragmentShaderToGl300.js.map +1 -0
- 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 +62 -1
- package/dist/esm/rendering/sprite/Sprite.js +97 -19
- 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 +39 -1
- package/dist/esm/rendering/video/Video.js +68 -6
- 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 +17 -4
- package/dist/esm/rendering/webgl2/WebGl2Backend.js +20 -16
- 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 +45 -8
- package/dist/esm/rendering/webgpu/WebGpuBackend.js +160 -40
- 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 +11182 -2538
- package/dist/exo.esm.js.map +1 -1
- package/package.json +20 -9
- package/dist/esm/core/Quadtree.d.ts +0 -20
- package/dist/esm/core/Quadtree.js +0 -86
- package/dist/esm/core/Quadtree.js.map +0 -1
|
@@ -0,0 +1,575 @@
|
|
|
1
|
+
import { Container } from '../rendering/Container.js';
|
|
2
|
+
import { InteractionEvent } from './InteractionEvent.js';
|
|
3
|
+
import { Rectangle } from '../math/Rectangle.js';
|
|
4
|
+
import { Quadtree } from '../math/Quadtree.js';
|
|
5
|
+
import { _setCurrentInteractionManager } from './interaction-hooks.js';
|
|
6
|
+
|
|
7
|
+
// ---------------------------------------------------------------------------
|
|
8
|
+
// Internal types
|
|
9
|
+
// ---------------------------------------------------------------------------
|
|
10
|
+
var PointerEventFlag;
|
|
11
|
+
(function (PointerEventFlag) {
|
|
12
|
+
PointerEventFlag[PointerEventFlag["None"] = 0] = "None";
|
|
13
|
+
PointerEventFlag[PointerEventFlag["Down"] = 1] = "Down";
|
|
14
|
+
PointerEventFlag[PointerEventFlag["Move"] = 2] = "Move";
|
|
15
|
+
PointerEventFlag[PointerEventFlag["Up"] = 4] = "Up";
|
|
16
|
+
PointerEventFlag[PointerEventFlag["Tap"] = 8] = "Tap";
|
|
17
|
+
PointerEventFlag[PointerEventFlag["Cancel"] = 16] = "Cancel";
|
|
18
|
+
PointerEventFlag[PointerEventFlag["Leave"] = 32] = "Leave";
|
|
19
|
+
})(PointerEventFlag || (PointerEventFlag = {}));
|
|
20
|
+
// ---------------------------------------------------------------------------
|
|
21
|
+
/**
|
|
22
|
+
* Routes pointer events from the {@link InputManager} to interactive
|
|
23
|
+
* scene-graph nodes via DOM-style event bubbling. Maintains a persistent
|
|
24
|
+
* quadtree spatial index of interactive {@link RenderNode}s for hit-testing
|
|
25
|
+
* and updates it incrementally — nodes notify the manager via the
|
|
26
|
+
* `_notify*` hooks when they enter/leave the scene, change interactivity,
|
|
27
|
+
* or move (causing bounds to dirty).
|
|
28
|
+
*
|
|
29
|
+
* Dispatches {@link InteractionEvent}s of every type in
|
|
30
|
+
* {@link InteractionEventType}: `pointerdown` / `pointerup` /
|
|
31
|
+
* `pointermove` / `pointerover` / `pointerout` / `pointertap` /
|
|
32
|
+
* `dragstart` / `drag` / `dragend`. Drag events are derived from
|
|
33
|
+
* threshold-based pointer movement after a `pointerdown`.
|
|
34
|
+
*
|
|
35
|
+
* Constructed automatically by {@link Application}; you do not instantiate
|
|
36
|
+
* this class yourself.
|
|
37
|
+
*/
|
|
38
|
+
class InteractionManager {
|
|
39
|
+
_app;
|
|
40
|
+
// Persistent quadtree — null when no interactive nodes are present.
|
|
41
|
+
_quadtree = null;
|
|
42
|
+
// All currently-tracked interactive RenderNodes.
|
|
43
|
+
_interactiveNodes = new Set();
|
|
44
|
+
// Nodes whose quadtree entry is stale (bounds changed since last insert).
|
|
45
|
+
_staleNodes = new Set();
|
|
46
|
+
// Items stored in the quadtree, keyed by node for fast removal.
|
|
47
|
+
_quadtreeItems = new Map();
|
|
48
|
+
// Running insertion-order counter used to break hit-test ties.
|
|
49
|
+
_quadtreeOrderCounter = 0;
|
|
50
|
+
_quadtreeQueryBuffer = [];
|
|
51
|
+
/** Maps pointerId → the deepest interactive RenderNode that pointer is currently over. */
|
|
52
|
+
_lastHit = new Map();
|
|
53
|
+
/** Pending per-pointer event queues, filled by signal handlers each frame. */
|
|
54
|
+
_pending = new Map();
|
|
55
|
+
/** Active pointer captures set up by drag-start. Maps pointerId → the captured node. */
|
|
56
|
+
_capturedPointers = new Map();
|
|
57
|
+
/** Active drag states. Maps pointerId → drag metadata. */
|
|
58
|
+
_drags = new Map();
|
|
59
|
+
/** Whether any pointer enqueued events since the last update(). */
|
|
60
|
+
_dirty = false;
|
|
61
|
+
_onPointerDownHandler;
|
|
62
|
+
_onPointerMoveHandler;
|
|
63
|
+
_onPointerUpHandler;
|
|
64
|
+
_onPointerTapHandler;
|
|
65
|
+
_onPointerCancelHandler;
|
|
66
|
+
_onPointerLeaveHandler;
|
|
67
|
+
constructor(app) {
|
|
68
|
+
this._app = app;
|
|
69
|
+
// Register as the active singleton so RenderNode / Container / SceneNode hooks
|
|
70
|
+
// can reach the manager without holding an explicit reference.
|
|
71
|
+
_setCurrentInteractionManager(this);
|
|
72
|
+
this._onPointerDownHandler = this._handlePointerDown.bind(this);
|
|
73
|
+
this._onPointerMoveHandler = this._handlePointerMove.bind(this);
|
|
74
|
+
this._onPointerUpHandler = this._handlePointerUp.bind(this);
|
|
75
|
+
this._onPointerTapHandler = this._handlePointerTap.bind(this);
|
|
76
|
+
this._onPointerCancelHandler = this._handlePointerCancel.bind(this);
|
|
77
|
+
this._onPointerLeaveHandler = this._handlePointerLeave.bind(this);
|
|
78
|
+
app.inputManager.onPointerDown.add(this._onPointerDownHandler);
|
|
79
|
+
app.inputManager.onPointerMove.add(this._onPointerMoveHandler);
|
|
80
|
+
app.inputManager.onPointerUp.add(this._onPointerUpHandler);
|
|
81
|
+
app.inputManager.onPointerTap.add(this._onPointerTapHandler);
|
|
82
|
+
app.inputManager.onPointerCancel.add(this._onPointerCancelHandler);
|
|
83
|
+
app.inputManager.onPointerLeave.add(this._onPointerLeaveHandler);
|
|
84
|
+
}
|
|
85
|
+
/**
|
|
86
|
+
* Returns the RenderNode currently hovered by the given pointer, or null.
|
|
87
|
+
* If pointerId is omitted, returns the hovered node for the first pointer
|
|
88
|
+
* in iteration order (typically the primary mouse pointer).
|
|
89
|
+
*/
|
|
90
|
+
/**
|
|
91
|
+
* Return the deepest interactive node currently under the given pointer,
|
|
92
|
+
* or under any active pointer when `pointerId` is omitted (the first
|
|
93
|
+
* pointer with a hit wins). `null` when no pointer is hovering an
|
|
94
|
+
* interactive node.
|
|
95
|
+
*/
|
|
96
|
+
getHoveredNode(pointerId) {
|
|
97
|
+
if (pointerId !== undefined) {
|
|
98
|
+
return this._lastHit.get(pointerId) ?? null;
|
|
99
|
+
}
|
|
100
|
+
const firstEntry = this._lastHit.values().next();
|
|
101
|
+
return firstEntry.done ? null : firstEntry.value;
|
|
102
|
+
}
|
|
103
|
+
/**
|
|
104
|
+
* Returns all currently captured RenderNodes (nodes that have an active
|
|
105
|
+
* drag / pointer-capture in progress). Used by debug layers.
|
|
106
|
+
*/
|
|
107
|
+
/**
|
|
108
|
+
* Snapshot of nodes that currently have pointer-capture (a pointer
|
|
109
|
+
* pressed inside them and is being dragged). Used internally for drag
|
|
110
|
+
* routing; exposed read-only for diagnostic / debug consumers.
|
|
111
|
+
*/
|
|
112
|
+
getCapturedNodes() {
|
|
113
|
+
return Array.from(this._capturedPointers.values());
|
|
114
|
+
}
|
|
115
|
+
/**
|
|
116
|
+
* Returns the internal quadtree used for spatial hit-testing, or null when
|
|
117
|
+
* no interactive nodes are present. Used by {@link HitTestLayer} to render
|
|
118
|
+
* the quadtree partitioning during development. Not part of the stable
|
|
119
|
+
* public API — friend-class access only.
|
|
120
|
+
*
|
|
121
|
+
* @internal
|
|
122
|
+
*/
|
|
123
|
+
_getDebugQuadtree() {
|
|
124
|
+
return this._quadtree;
|
|
125
|
+
}
|
|
126
|
+
destroy() {
|
|
127
|
+
this._app.inputManager.onPointerDown.remove(this._onPointerDownHandler);
|
|
128
|
+
this._app.inputManager.onPointerMove.remove(this._onPointerMoveHandler);
|
|
129
|
+
this._app.inputManager.onPointerUp.remove(this._onPointerUpHandler);
|
|
130
|
+
this._app.inputManager.onPointerTap.remove(this._onPointerTapHandler);
|
|
131
|
+
this._app.inputManager.onPointerCancel.remove(this._onPointerCancelHandler);
|
|
132
|
+
this._app.inputManager.onPointerLeave.remove(this._onPointerLeaveHandler);
|
|
133
|
+
this._lastHit.clear();
|
|
134
|
+
this._pending.clear();
|
|
135
|
+
this._capturedPointers.clear();
|
|
136
|
+
this._drags.clear();
|
|
137
|
+
this._interactiveNodes.clear();
|
|
138
|
+
this._staleNodes.clear();
|
|
139
|
+
this._quadtreeItems.clear();
|
|
140
|
+
this._dirty = false;
|
|
141
|
+
if (this._quadtree !== null) {
|
|
142
|
+
this._quadtree.destroy();
|
|
143
|
+
this._quadtree = null;
|
|
144
|
+
}
|
|
145
|
+
_setCurrentInteractionManager(null);
|
|
146
|
+
}
|
|
147
|
+
/**
|
|
148
|
+
* Process all pending pointer events accumulated since the last frame.
|
|
149
|
+
* Must be called once per frame from {@link Application.update}, after
|
|
150
|
+
* `inputManager.update()` has run (so signals are already dispatched and
|
|
151
|
+
* queued here) and before game-state updates so that user listeners on
|
|
152
|
+
* `onPointerDown` etc. fire before per-frame logic mutates state.
|
|
153
|
+
*
|
|
154
|
+
* The dirty flag ensures this is a no-op on frames with no pointer
|
|
155
|
+
* activity; every signal handler that enqueues an event sets `_dirty =
|
|
156
|
+
* true`, and `update()` clears it at the top before draining the queue.
|
|
157
|
+
*/
|
|
158
|
+
update() {
|
|
159
|
+
if (!this._dirty)
|
|
160
|
+
return;
|
|
161
|
+
this._dirty = false;
|
|
162
|
+
this._flushStaleEntries();
|
|
163
|
+
for (const queue of this._pending.values()) {
|
|
164
|
+
this._processQueue(queue);
|
|
165
|
+
}
|
|
166
|
+
this._pending.clear();
|
|
167
|
+
this._updateCursor();
|
|
168
|
+
}
|
|
169
|
+
// ---------------------------------------------------------------------------
|
|
170
|
+
// Hooks called by RenderNode / Container / SceneNode
|
|
171
|
+
// These are prefixed _ to signal "internal-but-public".
|
|
172
|
+
// ---------------------------------------------------------------------------
|
|
173
|
+
/**
|
|
174
|
+
* Called when a subtree rooted at `node` has been added to the scene.
|
|
175
|
+
* Walks the subtree and registers any interactive nodes found.
|
|
176
|
+
*
|
|
177
|
+
* @internal
|
|
178
|
+
*/
|
|
179
|
+
_notifyNodeAdded(node) {
|
|
180
|
+
this._walkSubtree(node, (n) => {
|
|
181
|
+
if (n.interactive) {
|
|
182
|
+
this._registerNode(n);
|
|
183
|
+
}
|
|
184
|
+
});
|
|
185
|
+
}
|
|
186
|
+
/**
|
|
187
|
+
* Called when a subtree rooted at `node` is about to be removed from the
|
|
188
|
+
* scene. Walks the subtree and unregisters any interactive nodes found.
|
|
189
|
+
*
|
|
190
|
+
* @internal
|
|
191
|
+
*/
|
|
192
|
+
_notifyNodeRemoved(node) {
|
|
193
|
+
this._walkSubtree(node, (n) => {
|
|
194
|
+
if (this._interactiveNodes.has(n)) {
|
|
195
|
+
this._unregisterNode(n);
|
|
196
|
+
}
|
|
197
|
+
});
|
|
198
|
+
}
|
|
199
|
+
/**
|
|
200
|
+
* Called when a node's `interactive` property changes.
|
|
201
|
+
*
|
|
202
|
+
* @internal
|
|
203
|
+
*/
|
|
204
|
+
_notifyInteractiveChanged(node, becameInteractive) {
|
|
205
|
+
if (becameInteractive) {
|
|
206
|
+
this._registerNode(node);
|
|
207
|
+
}
|
|
208
|
+
else {
|
|
209
|
+
this._unregisterNode(node);
|
|
210
|
+
}
|
|
211
|
+
}
|
|
212
|
+
/**
|
|
213
|
+
* Called when a node's world transform / bounds are invalidated. If the
|
|
214
|
+
* node is currently tracked as interactive, mark it stale so its quadtree
|
|
215
|
+
* entry is refreshed on the next query.
|
|
216
|
+
*
|
|
217
|
+
* @internal
|
|
218
|
+
*/
|
|
219
|
+
_notifyBoundsInvalidated(node) {
|
|
220
|
+
if (this._interactiveNodes.has(node)) {
|
|
221
|
+
this._staleNodes.add(node);
|
|
222
|
+
}
|
|
223
|
+
}
|
|
224
|
+
// ---------------------------------------------------------------------------
|
|
225
|
+
// Signal handlers — only enqueue flags, never hit-test
|
|
226
|
+
// ---------------------------------------------------------------------------
|
|
227
|
+
_handlePointerDown(pointer) {
|
|
228
|
+
this._enqueue(pointer, PointerEventFlag.Down);
|
|
229
|
+
}
|
|
230
|
+
_handlePointerMove(pointer) {
|
|
231
|
+
this._enqueue(pointer, PointerEventFlag.Move);
|
|
232
|
+
}
|
|
233
|
+
_handlePointerUp(pointer) {
|
|
234
|
+
this._enqueue(pointer, PointerEventFlag.Up);
|
|
235
|
+
}
|
|
236
|
+
_handlePointerTap(pointer) {
|
|
237
|
+
this._enqueue(pointer, PointerEventFlag.Tap);
|
|
238
|
+
}
|
|
239
|
+
_handlePointerCancel(pointer) {
|
|
240
|
+
this._enqueue(pointer, PointerEventFlag.Cancel);
|
|
241
|
+
}
|
|
242
|
+
_handlePointerLeave(pointer) {
|
|
243
|
+
this._enqueue(pointer, PointerEventFlag.Leave);
|
|
244
|
+
}
|
|
245
|
+
_enqueue(pointer, flag) {
|
|
246
|
+
let q = this._pending.get(pointer.id);
|
|
247
|
+
if (!q) {
|
|
248
|
+
q = { pointer, events: 0 };
|
|
249
|
+
this._pending.set(pointer.id, q);
|
|
250
|
+
}
|
|
251
|
+
else {
|
|
252
|
+
// Refresh to latest pointer ref (same object usually, but be defensive).
|
|
253
|
+
q.pointer = pointer;
|
|
254
|
+
}
|
|
255
|
+
q.events |= flag;
|
|
256
|
+
this._dirty = true;
|
|
257
|
+
}
|
|
258
|
+
// ---------------------------------------------------------------------------
|
|
259
|
+
// Per-frame queue processing
|
|
260
|
+
// ---------------------------------------------------------------------------
|
|
261
|
+
_processQueue(queue) {
|
|
262
|
+
const { pointer, events } = queue;
|
|
263
|
+
const { id, x, y } = pointer;
|
|
264
|
+
// Determine the hit node. Captured pointers short-circuit hit-testing.
|
|
265
|
+
const captured = this._capturedPointers.get(id) ?? null;
|
|
266
|
+
const hit = captured !== null ? captured : this._hitTest(x, y);
|
|
267
|
+
// --- Over / Out transitions ---
|
|
268
|
+
// Skip while a drag is active for this pointer — the dragged node
|
|
269
|
+
// stays "hovered" by definition and we don't want spurious events.
|
|
270
|
+
const drag = this._drags.get(id) ?? null;
|
|
271
|
+
const last = this._lastHit.get(id) ?? null;
|
|
272
|
+
const isExitEvent = (events & (PointerEventFlag.Cancel | PointerEventFlag.Leave)) !== 0;
|
|
273
|
+
if (captured === null && hit !== last && !isExitEvent) {
|
|
274
|
+
if (last !== null) {
|
|
275
|
+
this._dispatchBubble(new InteractionEvent('pointerout', last, pointer, x, y));
|
|
276
|
+
}
|
|
277
|
+
if (hit !== null) {
|
|
278
|
+
this._dispatchBubble(new InteractionEvent('pointerover', hit, pointer, x, y));
|
|
279
|
+
}
|
|
280
|
+
this._setLastHit(id, hit);
|
|
281
|
+
}
|
|
282
|
+
// --- Down ---
|
|
283
|
+
if ((events & PointerEventFlag.Down) !== 0) {
|
|
284
|
+
if (hit !== null) {
|
|
285
|
+
this._dispatchBubble(new InteractionEvent('pointerdown', hit, pointer, x, y));
|
|
286
|
+
// Start drag if node is draggable and no existing drag for this pointer.
|
|
287
|
+
if (hit.draggable && !this._drags.has(id)) {
|
|
288
|
+
const offsetX = hit.position.x - x;
|
|
289
|
+
const offsetY = hit.position.y - y;
|
|
290
|
+
this._drags.set(id, { pointerId: id, node: hit, offsetX, offsetY });
|
|
291
|
+
this._capturedPointers.set(id, hit);
|
|
292
|
+
try {
|
|
293
|
+
this._app.canvas.setPointerCapture(id);
|
|
294
|
+
}
|
|
295
|
+
catch {
|
|
296
|
+
// Best-effort — jsdom and some browsers may not support this.
|
|
297
|
+
}
|
|
298
|
+
this._dispatchDirect(new InteractionEvent('dragstart', hit, pointer, x, y), hit.onDragStart);
|
|
299
|
+
}
|
|
300
|
+
}
|
|
301
|
+
}
|
|
302
|
+
// --- Move ---
|
|
303
|
+
if ((events & PointerEventFlag.Move) !== 0) {
|
|
304
|
+
if (drag !== null) {
|
|
305
|
+
// Auto-position the dragged node, preserving the grab offset.
|
|
306
|
+
drag.node.position.x = x + drag.offsetX;
|
|
307
|
+
drag.node.position.y = y + drag.offsetY;
|
|
308
|
+
}
|
|
309
|
+
if (hit !== null) {
|
|
310
|
+
this._dispatchBubble(new InteractionEvent('pointermove', hit, pointer, x, y));
|
|
311
|
+
}
|
|
312
|
+
if (drag !== null) {
|
|
313
|
+
this._dispatchDirect(new InteractionEvent('drag', drag.node, pointer, x, y), drag.node.onDrag);
|
|
314
|
+
}
|
|
315
|
+
}
|
|
316
|
+
// --- Up ---
|
|
317
|
+
if ((events & PointerEventFlag.Up) !== 0) {
|
|
318
|
+
if (hit !== null) {
|
|
319
|
+
this._dispatchBubble(new InteractionEvent('pointerup', hit, pointer, x, y));
|
|
320
|
+
}
|
|
321
|
+
if (drag !== null) {
|
|
322
|
+
this._dispatchDirect(new InteractionEvent('dragend', drag.node, pointer, x, y), drag.node.onDragEnd);
|
|
323
|
+
this._endDrag(id);
|
|
324
|
+
}
|
|
325
|
+
}
|
|
326
|
+
// --- Tap ---
|
|
327
|
+
if ((events & PointerEventFlag.Tap) !== 0) {
|
|
328
|
+
if (hit !== null) {
|
|
329
|
+
this._dispatchBubble(new InteractionEvent('pointertap', hit, pointer, x, y));
|
|
330
|
+
}
|
|
331
|
+
}
|
|
332
|
+
// --- Cancel / Leave ---
|
|
333
|
+
if (isExitEvent) {
|
|
334
|
+
if (drag !== null) {
|
|
335
|
+
this._dispatchDirect(new InteractionEvent('dragend', drag.node, pointer, x, y), drag.node.onDragEnd);
|
|
336
|
+
this._endDrag(id);
|
|
337
|
+
}
|
|
338
|
+
else if (last !== null) {
|
|
339
|
+
this._dispatchBubble(new InteractionEvent('pointerout', last, pointer, x, y));
|
|
340
|
+
}
|
|
341
|
+
this._lastHit.delete(id);
|
|
342
|
+
}
|
|
343
|
+
}
|
|
344
|
+
_endDrag(pointerId) {
|
|
345
|
+
this._drags.delete(pointerId);
|
|
346
|
+
this._capturedPointers.delete(pointerId);
|
|
347
|
+
try {
|
|
348
|
+
this._app.canvas.releasePointerCapture(pointerId);
|
|
349
|
+
}
|
|
350
|
+
catch {
|
|
351
|
+
// Releasing an already-released pointer throws in some browsers; swallow it.
|
|
352
|
+
}
|
|
353
|
+
}
|
|
354
|
+
// ---------------------------------------------------------------------------
|
|
355
|
+
// Hit-testing
|
|
356
|
+
// ---------------------------------------------------------------------------
|
|
357
|
+
_hitTest(x, y) {
|
|
358
|
+
if (this._quadtree !== null) {
|
|
359
|
+
return this._hitTestIndexed(x, y);
|
|
360
|
+
}
|
|
361
|
+
const root = this._app.sceneManager.scene?.root;
|
|
362
|
+
if (!root) {
|
|
363
|
+
return null;
|
|
364
|
+
}
|
|
365
|
+
return this._hitTestNode(root, x, y);
|
|
366
|
+
}
|
|
367
|
+
_hitTestIndexed(x, y) {
|
|
368
|
+
const candidates = this._quadtreeQueryBuffer;
|
|
369
|
+
candidates.length = 0;
|
|
370
|
+
this._quadtree.queryPoint(x, y, candidates);
|
|
371
|
+
let bestOrder = -1;
|
|
372
|
+
let bestNode = null;
|
|
373
|
+
for (const candidate of candidates) {
|
|
374
|
+
const indexed = candidate.payload;
|
|
375
|
+
if (indexed.order > bestOrder && indexed.node.contains(x, y)) {
|
|
376
|
+
bestOrder = indexed.order;
|
|
377
|
+
bestNode = indexed.node;
|
|
378
|
+
}
|
|
379
|
+
}
|
|
380
|
+
return bestNode;
|
|
381
|
+
}
|
|
382
|
+
// Walk children in REVERSE order (top z-order first). Recurse into Container children even
|
|
383
|
+
// when the container itself isn't interactive (so children can be hit through a non-interactive parent).
|
|
384
|
+
// Return the FIRST (deepest, top-most) interactive node whose contains(x, y) returns true.
|
|
385
|
+
_hitTestNode(node, x, y) {
|
|
386
|
+
if (!node.visible) {
|
|
387
|
+
return null;
|
|
388
|
+
}
|
|
389
|
+
if (node instanceof Container) {
|
|
390
|
+
const children = node.children;
|
|
391
|
+
for (let i = children.length - 1; i >= 0; i--) {
|
|
392
|
+
const hit = this._hitTestNode(children[i], x, y);
|
|
393
|
+
if (hit) {
|
|
394
|
+
return hit;
|
|
395
|
+
}
|
|
396
|
+
}
|
|
397
|
+
}
|
|
398
|
+
if (node.interactive && node.contains(x, y)) {
|
|
399
|
+
return node;
|
|
400
|
+
}
|
|
401
|
+
return null;
|
|
402
|
+
}
|
|
403
|
+
// ---------------------------------------------------------------------------
|
|
404
|
+
// Persistent spatial index management
|
|
405
|
+
// ---------------------------------------------------------------------------
|
|
406
|
+
/**
|
|
407
|
+
* Register an interactive node: add it to the tracking set, create the
|
|
408
|
+
* quadtree if this is the first interactive node, and insert the node.
|
|
409
|
+
*/
|
|
410
|
+
_registerNode(node) {
|
|
411
|
+
if (this._interactiveNodes.has(node)) {
|
|
412
|
+
return;
|
|
413
|
+
}
|
|
414
|
+
this._interactiveNodes.add(node);
|
|
415
|
+
// Lazy-init the quadtree on the first interactive node.
|
|
416
|
+
if (this._quadtree === null) {
|
|
417
|
+
this._quadtree = this._createQuadtree();
|
|
418
|
+
}
|
|
419
|
+
this._insertNode(node);
|
|
420
|
+
}
|
|
421
|
+
/**
|
|
422
|
+
* Unregister an interactive node: remove from the quadtree and tracking
|
|
423
|
+
* set. Dispose the quadtree when it becomes empty.
|
|
424
|
+
*/
|
|
425
|
+
_unregisterNode(node) {
|
|
426
|
+
if (!this._interactiveNodes.has(node)) {
|
|
427
|
+
return;
|
|
428
|
+
}
|
|
429
|
+
this._interactiveNodes.delete(node);
|
|
430
|
+
this._staleNodes.delete(node);
|
|
431
|
+
const item = this._quadtreeItems.get(node);
|
|
432
|
+
if (item !== undefined && this._quadtree !== null) {
|
|
433
|
+
this._quadtree.remove(item);
|
|
434
|
+
}
|
|
435
|
+
this._quadtreeItems.delete(node);
|
|
436
|
+
if (this._interactiveNodes.size === 0 && this._quadtree !== null) {
|
|
437
|
+
this._quadtree.destroy();
|
|
438
|
+
this._quadtree = null;
|
|
439
|
+
this._quadtreeOrderCounter = 0;
|
|
440
|
+
}
|
|
441
|
+
}
|
|
442
|
+
/**
|
|
443
|
+
* Insert a single node into the quadtree (or mark it stale to be inserted
|
|
444
|
+
* at next flush if the quadtree is not yet ready).
|
|
445
|
+
*/
|
|
446
|
+
_insertNode(node) {
|
|
447
|
+
if (this._quadtree === null) {
|
|
448
|
+
return;
|
|
449
|
+
}
|
|
450
|
+
const bounds = node.getBounds();
|
|
451
|
+
const item = {
|
|
452
|
+
bounds: new Rectangle(bounds.x, bounds.y, bounds.width, bounds.height),
|
|
453
|
+
payload: { node, order: this._quadtreeOrderCounter++ },
|
|
454
|
+
};
|
|
455
|
+
this._quadtree.insert(item);
|
|
456
|
+
this._quadtreeItems.set(node, item);
|
|
457
|
+
}
|
|
458
|
+
/**
|
|
459
|
+
* Flush stale entries: remove each stale node's old quadtree entry and
|
|
460
|
+
* re-insert it with fresh bounds. Called at the start of update().
|
|
461
|
+
*/
|
|
462
|
+
_flushStaleEntries() {
|
|
463
|
+
if (this._quadtree === null || this._staleNodes.size === 0) {
|
|
464
|
+
return;
|
|
465
|
+
}
|
|
466
|
+
for (const node of this._staleNodes) {
|
|
467
|
+
const oldItem = this._quadtreeItems.get(node);
|
|
468
|
+
if (oldItem !== undefined) {
|
|
469
|
+
this._quadtree.remove(oldItem);
|
|
470
|
+
oldItem.bounds.destroy();
|
|
471
|
+
}
|
|
472
|
+
this._quadtreeItems.delete(node);
|
|
473
|
+
// Re-insert with current bounds.
|
|
474
|
+
const bounds = node.getBounds();
|
|
475
|
+
const newItem = {
|
|
476
|
+
bounds: new Rectangle(bounds.x, bounds.y, bounds.width, bounds.height),
|
|
477
|
+
payload: { node, order: oldItem?.payload.order ?? this._quadtreeOrderCounter++ },
|
|
478
|
+
};
|
|
479
|
+
this._quadtree.insert(newItem);
|
|
480
|
+
this._quadtreeItems.set(node, newItem);
|
|
481
|
+
}
|
|
482
|
+
this._staleNodes.clear();
|
|
483
|
+
}
|
|
484
|
+
/** Build a fresh Quadtree sized to encompass the canvas + current scene root. */
|
|
485
|
+
_createQuadtree() {
|
|
486
|
+
const canvas = this._app.canvas;
|
|
487
|
+
const bounds = new Rectangle(0, 0, canvas.width || 800, canvas.height || 600);
|
|
488
|
+
const root = this._app.sceneManager.scene?.root;
|
|
489
|
+
if (root) {
|
|
490
|
+
const rootBounds = root.getBounds();
|
|
491
|
+
const minX = Math.min(bounds.left, rootBounds.left);
|
|
492
|
+
const minY = Math.min(bounds.top, rootBounds.top);
|
|
493
|
+
const maxX = Math.max(bounds.right, rootBounds.right);
|
|
494
|
+
const maxY = Math.max(bounds.bottom, rootBounds.bottom);
|
|
495
|
+
bounds.set(minX, minY, maxX - minX, maxY - minY);
|
|
496
|
+
}
|
|
497
|
+
return new Quadtree(bounds);
|
|
498
|
+
}
|
|
499
|
+
/** Walk a subtree, calling `callback` for every RenderNode (including root). */
|
|
500
|
+
_walkSubtree(node, callback) {
|
|
501
|
+
callback(node);
|
|
502
|
+
if (node instanceof Container) {
|
|
503
|
+
for (const child of node.children) {
|
|
504
|
+
this._walkSubtree(child, callback);
|
|
505
|
+
}
|
|
506
|
+
}
|
|
507
|
+
}
|
|
508
|
+
// ---------------------------------------------------------------------------
|
|
509
|
+
// Dispatch helpers
|
|
510
|
+
// ---------------------------------------------------------------------------
|
|
511
|
+
_dispatchBubble(event) {
|
|
512
|
+
let current = event.target;
|
|
513
|
+
while (current !== null && !event.propagationStopped) {
|
|
514
|
+
event.currentTarget = current;
|
|
515
|
+
const signal = this._signalFor(event.type, current);
|
|
516
|
+
signal.dispatch(event);
|
|
517
|
+
if (event.propagationStopped) {
|
|
518
|
+
break;
|
|
519
|
+
}
|
|
520
|
+
// Walk up to interactive ancestor only (parent must opt in to receive bubble).
|
|
521
|
+
const parent = current.parentNode;
|
|
522
|
+
current = (parent !== null && parent.interactive) ? parent : null;
|
|
523
|
+
}
|
|
524
|
+
}
|
|
525
|
+
/** Dispatch an event directly on a single node without bubbling. */
|
|
526
|
+
_dispatchDirect(event, signal) {
|
|
527
|
+
event.currentTarget = event.target;
|
|
528
|
+
signal.dispatch(event);
|
|
529
|
+
}
|
|
530
|
+
_signalFor(type, node) {
|
|
531
|
+
switch (type) {
|
|
532
|
+
case 'pointerdown': return node.onPointerDown;
|
|
533
|
+
case 'pointerup': return node.onPointerUp;
|
|
534
|
+
case 'pointermove': return node.onPointerMove;
|
|
535
|
+
case 'pointerover': return node.onPointerOver;
|
|
536
|
+
case 'pointerout': return node.onPointerOut;
|
|
537
|
+
case 'pointertap': return node.onPointerTap;
|
|
538
|
+
case 'dragstart': return node.onDragStart;
|
|
539
|
+
case 'drag': return node.onDrag;
|
|
540
|
+
case 'dragend': return node.onDragEnd;
|
|
541
|
+
}
|
|
542
|
+
}
|
|
543
|
+
// ---------------------------------------------------------------------------
|
|
544
|
+
// Cursor
|
|
545
|
+
// ---------------------------------------------------------------------------
|
|
546
|
+
_setLastHit(id, node) {
|
|
547
|
+
if (node !== null) {
|
|
548
|
+
this._lastHit.set(id, node);
|
|
549
|
+
}
|
|
550
|
+
else {
|
|
551
|
+
this._lastHit.delete(id);
|
|
552
|
+
}
|
|
553
|
+
}
|
|
554
|
+
_updateCursor() {
|
|
555
|
+
let cursor = null;
|
|
556
|
+
for (const node of this._lastHit.values()) {
|
|
557
|
+
let n = node;
|
|
558
|
+
while (n !== null) {
|
|
559
|
+
if (n.cursor !== null) {
|
|
560
|
+
cursor = n.cursor;
|
|
561
|
+
break;
|
|
562
|
+
}
|
|
563
|
+
const p = n.parentNode;
|
|
564
|
+
n = p;
|
|
565
|
+
}
|
|
566
|
+
if (cursor !== null) {
|
|
567
|
+
break;
|
|
568
|
+
}
|
|
569
|
+
}
|
|
570
|
+
this._app.canvas.style.cursor = cursor ?? '';
|
|
571
|
+
}
|
|
572
|
+
}
|
|
573
|
+
|
|
574
|
+
export { InteractionManager };
|
|
575
|
+
//# sourceMappingURL=InteractionManager.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"InteractionManager.js","sources":["../../../../src/input/InteractionManager.ts"],"sourcesContent":[null],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,14 @@
|
|
|
1
1
|
import { GenericDualAnalogGamepadMapping } from './GenericDualAnalogGamepadMapping';
|
|
2
2
|
import { GamepadMappingFamily } from './GamepadMapping';
|
|
3
|
+
/**
|
|
4
|
+
* Mapping for the Nintendo Switch Joy-Con (L) held horizontally or used as
|
|
5
|
+
* a standalone controller.
|
|
6
|
+
*
|
|
7
|
+
* Inherits the {@link GenericDualAnalogGamepadMapping} layout. Because the
|
|
8
|
+
* Joy-Con Left has only one physical stick, right-stick channels will never
|
|
9
|
+
* receive input when this mapping is active. The SL/SR shoulder buttons are
|
|
10
|
+
* surfaced through the standard LeftShoulder/RightShoulder channels.
|
|
11
|
+
*/
|
|
3
12
|
export declare class JoyConLeftGamepadMapping extends GenericDualAnalogGamepadMapping {
|
|
4
13
|
readonly family = GamepadMappingFamily.JoyConLeft;
|
|
5
14
|
}
|
|
@@ -1,6 +1,15 @@
|
|
|
1
1
|
import { GenericDualAnalogGamepadMapping } from './GenericDualAnalogGamepadMapping.js';
|
|
2
2
|
import { GamepadMappingFamily } from './GamepadMapping.js';
|
|
3
3
|
|
|
4
|
+
/**
|
|
5
|
+
* Mapping for the Nintendo Switch Joy-Con (L) held horizontally or used as
|
|
6
|
+
* a standalone controller.
|
|
7
|
+
*
|
|
8
|
+
* Inherits the {@link GenericDualAnalogGamepadMapping} layout. Because the
|
|
9
|
+
* Joy-Con Left has only one physical stick, right-stick channels will never
|
|
10
|
+
* receive input when this mapping is active. The SL/SR shoulder buttons are
|
|
11
|
+
* surfaced through the standard LeftShoulder/RightShoulder channels.
|
|
12
|
+
*/
|
|
4
13
|
class JoyConLeftGamepadMapping extends GenericDualAnalogGamepadMapping {
|
|
5
14
|
family = GamepadMappingFamily.JoyConLeft;
|
|
6
15
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"JoyConLeftGamepadMapping.js","sources":["../../../../src/input/JoyConLeftGamepadMapping.ts"],"sourcesContent":[null],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"JoyConLeftGamepadMapping.js","sources":["../../../../src/input/JoyConLeftGamepadMapping.ts"],"sourcesContent":[null],"names":[],"mappings":";;;AAGA;;;;;;;;AAQG;AACG,MAAO,wBAAyB,SAAQ,+BAA+B,CAAA;AAChD,IAAA,MAAM,GAAG,oBAAoB,CAAC,UAAU;AACpE;;;;"}
|
|
@@ -1,5 +1,14 @@
|
|
|
1
1
|
import { GenericDualAnalogGamepadMapping } from './GenericDualAnalogGamepadMapping';
|
|
2
2
|
import { GamepadMappingFamily } from './GamepadMapping';
|
|
3
|
+
/**
|
|
4
|
+
* Mapping for the Nintendo Switch Joy-Con (R) held horizontally or used as
|
|
5
|
+
* a standalone controller.
|
|
6
|
+
*
|
|
7
|
+
* Inherits the {@link GenericDualAnalogGamepadMapping} layout. Because the
|
|
8
|
+
* Joy-Con Right has only one physical stick, left-stick channels will never
|
|
9
|
+
* receive input when this mapping is active. The SL/SR shoulder buttons are
|
|
10
|
+
* surfaced through the standard LeftShoulder/RightShoulder channels.
|
|
11
|
+
*/
|
|
3
12
|
export declare class JoyConRightGamepadMapping extends GenericDualAnalogGamepadMapping {
|
|
4
13
|
readonly family = GamepadMappingFamily.JoyConRight;
|
|
5
14
|
}
|
|
@@ -1,6 +1,15 @@
|
|
|
1
1
|
import { GenericDualAnalogGamepadMapping } from './GenericDualAnalogGamepadMapping.js';
|
|
2
2
|
import { GamepadMappingFamily } from './GamepadMapping.js';
|
|
3
3
|
|
|
4
|
+
/**
|
|
5
|
+
* Mapping for the Nintendo Switch Joy-Con (R) held horizontally or used as
|
|
6
|
+
* a standalone controller.
|
|
7
|
+
*
|
|
8
|
+
* Inherits the {@link GenericDualAnalogGamepadMapping} layout. Because the
|
|
9
|
+
* Joy-Con Right has only one physical stick, left-stick channels will never
|
|
10
|
+
* receive input when this mapping is active. The SL/SR shoulder buttons are
|
|
11
|
+
* surfaced through the standard LeftShoulder/RightShoulder channels.
|
|
12
|
+
*/
|
|
4
13
|
class JoyConRightGamepadMapping extends GenericDualAnalogGamepadMapping {
|
|
5
14
|
family = GamepadMappingFamily.JoyConRight;
|
|
6
15
|
}
|