@codexo/exojs 0.7.11 → 0.7.13
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 +442 -0
- package/dist/esm/animation/Tween.d.ts +60 -1
- package/dist/esm/animation/Tween.js +60 -1
- package/dist/esm/animation/Tween.js.map +1 -1
- package/dist/esm/animation/TweenManager.d.ts +10 -0
- package/dist/esm/animation/TweenManager.js +10 -0
- package/dist/esm/animation/TweenManager.js.map +1 -1
- package/dist/esm/animation/types.d.ts +15 -0
- package/dist/esm/animation/types.js +6 -0
- package/dist/esm/animation/types.js.map +1 -1
- package/dist/esm/audio/AbstractMedia.d.ts +11 -0
- package/dist/esm/audio/AbstractMedia.js +10 -0
- package/dist/esm/audio/AbstractMedia.js.map +1 -1
- package/dist/esm/audio/AudioAnalyser.d.ts +21 -0
- package/dist/esm/audio/AudioAnalyser.js +16 -0
- package/dist/esm/audio/AudioAnalyser.js.map +1 -1
- package/dist/esm/audio/AudioBus.d.ts +37 -0
- package/dist/esm/audio/AudioBus.js +36 -0
- package/dist/esm/audio/AudioBus.js.map +1 -1
- package/dist/esm/audio/AudioFilter.d.ts +7 -0
- package/dist/esm/audio/AudioFilter.js +6 -0
- package/dist/esm/audio/AudioFilter.js.map +1 -1
- package/dist/esm/audio/AudioListener.d.ts +19 -0
- package/dist/esm/audio/AudioListener.js +11 -0
- package/dist/esm/audio/AudioListener.js.map +1 -1
- package/dist/esm/audio/AudioManager.d.ts +37 -0
- package/dist/esm/audio/AudioManager.js +37 -0
- package/dist/esm/audio/AudioManager.js.map +1 -1
- package/dist/esm/audio/BeatDetector.d.ts +21 -0
- package/dist/esm/audio/BeatDetector.js +21 -0
- package/dist/esm/audio/BeatDetector.js.map +1 -1
- package/dist/esm/audio/Media.d.ts +11 -0
- package/dist/esm/audio/Music.d.ts +12 -0
- package/dist/esm/audio/Music.js +12 -0
- package/dist/esm/audio/Music.js.map +1 -1
- package/dist/esm/audio/Sound.d.ts +25 -0
- package/dist/esm/audio/Sound.js +18 -0
- package/dist/esm/audio/Sound.js.map +1 -1
- package/dist/esm/audio/audio-context.d.ts +48 -0
- package/dist/esm/audio/audio-context.js +48 -5
- package/dist/esm/audio/audio-context.js.map +1 -1
- package/dist/esm/audio/filters/ChorusFilter.d.ts +5 -0
- package/dist/esm/audio/filters/ChorusFilter.js +4 -0
- package/dist/esm/audio/filters/ChorusFilter.js.map +1 -1
- package/dist/esm/audio/filters/CompressorFilter.d.ts +12 -0
- package/dist/esm/audio/filters/CompressorFilter.js +11 -0
- package/dist/esm/audio/filters/CompressorFilter.js.map +1 -1
- package/dist/esm/audio/filters/DelayFilter.d.ts +11 -0
- package/dist/esm/audio/filters/DelayFilter.js +10 -0
- package/dist/esm/audio/filters/DelayFilter.js.map +1 -1
- package/dist/esm/audio/filters/DuckingFilter.d.ts +13 -0
- package/dist/esm/audio/filters/DuckingFilter.js +12 -0
- package/dist/esm/audio/filters/DuckingFilter.js.map +1 -1
- package/dist/esm/audio/filters/EqualizerFilter.d.ts +20 -0
- package/dist/esm/audio/filters/EqualizerFilter.js +40 -0
- package/dist/esm/audio/filters/EqualizerFilter.js.map +1 -1
- package/dist/esm/audio/filters/GranularFilter.d.ts +6 -0
- package/dist/esm/audio/filters/GranularFilter.js +6 -0
- package/dist/esm/audio/filters/GranularFilter.js.map +1 -1
- package/dist/esm/audio/filters/HighpassFilter.d.ts +10 -0
- package/dist/esm/audio/filters/HighpassFilter.js +9 -0
- package/dist/esm/audio/filters/HighpassFilter.js.map +1 -1
- package/dist/esm/audio/filters/LowpassFilter.d.ts +10 -0
- package/dist/esm/audio/filters/LowpassFilter.js +9 -0
- package/dist/esm/audio/filters/LowpassFilter.js.map +1 -1
- package/dist/esm/audio/filters/PitchShiftFilter.d.ts +2 -0
- package/dist/esm/audio/filters/PitchShiftFilter.js +2 -0
- package/dist/esm/audio/filters/PitchShiftFilter.js.map +1 -1
- package/dist/esm/audio/filters/ReverbFilter.d.ts +12 -0
- package/dist/esm/audio/filters/ReverbFilter.js +11 -0
- package/dist/esm/audio/filters/ReverbFilter.js.map +1 -1
- package/dist/esm/audio/filters/VocoderFilter.d.ts +11 -0
- package/dist/esm/audio/filters/VocoderFilter.js +11 -0
- package/dist/esm/audio/filters/VocoderFilter.js.map +1 -1
- package/dist/esm/audio/filters/WorkletFilter.d.ts +6 -1
- package/dist/esm/audio/filters/WorkletFilter.js +6 -1
- package/dist/esm/audio/filters/WorkletFilter.js.map +1 -1
- package/dist/esm/core/Application.d.ts +66 -1
- package/dist/esm/core/Application.js +68 -6
- 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 +76 -0
- package/dist/esm/core/Scene.js +83 -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 +51 -2
- package/dist/esm/core/SceneManager.js.map +1 -1
- package/dist/esm/core/SceneNode.d.ts +31 -0
- package/dist/esm/core/SceneNode.js +31 -0
- package/dist/esm/core/SceneNode.js.map +1 -1
- package/dist/esm/core/Signal.d.ts +44 -0
- package/dist/esm/core/Signal.js +39 -0
- package/dist/esm/core/Signal.js.map +1 -1
- package/dist/esm/core/Time.d.ts +21 -0
- package/dist/esm/core/Time.js +21 -0
- package/dist/esm/core/Time.js.map +1 -1
- package/dist/esm/core/Timer.d.ts +7 -0
- package/dist/esm/core/Timer.js +7 -0
- package/dist/esm/core/Timer.js.map +1 -1
- package/dist/esm/core/capabilities.d.ts +12 -0
- package/dist/esm/core/capabilities.js +12 -0
- package/dist/esm/core/capabilities.js.map +1 -1
- package/dist/esm/core/types.d.ts +37 -0
- package/dist/esm/core/utils.d.ts +48 -0
- package/dist/esm/core/utils.js +48 -0
- package/dist/esm/core/utils.js.map +1 -1
- package/dist/esm/debug/BoundingBoxesLayer.d.ts +8 -0
- package/dist/esm/debug/BoundingBoxesLayer.js +8 -0
- package/dist/esm/debug/BoundingBoxesLayer.js.map +1 -1
- package/dist/esm/debug/DebugLayer.d.ts +16 -3
- package/dist/esm/debug/DebugLayer.js +11 -3
- package/dist/esm/debug/DebugLayer.js.map +1 -1
- package/dist/esm/debug/DebugOverlay.d.ts +11 -0
- package/dist/esm/debug/DebugOverlay.js +8 -2
- package/dist/esm/debug/DebugOverlay.js.map +1 -1
- package/dist/esm/debug/HitTestLayer.d.ts +9 -0
- package/dist/esm/debug/HitTestLayer.js +9 -0
- package/dist/esm/debug/HitTestLayer.js.map +1 -1
- package/dist/esm/debug/PerformanceLayer.d.ts +17 -1
- package/dist/esm/debug/PerformanceLayer.js +18 -0
- package/dist/esm/debug/PerformanceLayer.js.map +1 -1
- package/dist/esm/debug/PointerStackLayer.d.ts +8 -0
- package/dist/esm/debug/PointerStackLayer.js +11 -3
- package/dist/esm/debug/PointerStackLayer.js.map +1 -1
- package/dist/esm/index.js +6 -5
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/input/ArcadeStickGamepadMapping.d.ts +7 -0
- package/dist/esm/input/ArcadeStickGamepadMapping.js +25 -19
- 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 +181 -31
- package/dist/esm/input/Gamepad.js +307 -108
- package/dist/esm/input/Gamepad.js.map +1 -1
- package/dist/esm/input/GamepadAxis.d.ts +120 -0
- package/dist/esm/input/GamepadAxis.js +106 -0
- package/dist/esm/input/GamepadAxis.js.map +1 -0
- package/dist/esm/input/GamepadButton.d.ts +110 -0
- package/dist/esm/input/GamepadButton.js +99 -0
- package/dist/esm/input/GamepadButton.js.map +1 -0
- package/dist/esm/input/GamepadDefinitions.d.ts +64 -1
- package/dist/esm/input/GamepadDefinitions.js +44 -1
- package/dist/esm/input/GamepadDefinitions.js.map +1 -1
- package/dist/esm/input/GamepadMapping.d.ts +42 -8
- package/dist/esm/input/GamepadMapping.js +46 -5
- package/dist/esm/input/GamepadMapping.js.map +1 -1
- package/dist/esm/input/GamepadPromptLayouts.d.ts +35 -2
- package/dist/esm/input/GamepadPromptLayouts.js +43 -18
- package/dist/esm/input/GamepadPromptLayouts.js.map +1 -1
- package/dist/esm/input/GenericDualAnalogGamepadMapping.d.ts +13 -0
- package/dist/esm/input/GenericDualAnalogGamepadMapping.js +62 -43
- 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/InputBinding.d.ts +74 -0
- package/dist/esm/input/InputBinding.js +100 -0
- package/dist/esm/input/InputBinding.js.map +1 -0
- package/dist/esm/input/InputManager.d.ts +100 -21
- package/dist/esm/input/InputManager.js +248 -90
- package/dist/esm/input/InputManager.js.map +1 -1
- package/dist/esm/input/InteractionEvent.d.ts +13 -0
- package/dist/esm/input/InteractionEvent.js +8 -0
- package/dist/esm/input/InteractionEvent.js.map +1 -1
- package/dist/esm/input/InteractionManager.d.ts +34 -5
- package/dist/esm/input/InteractionManager.js +46 -17
- package/dist/esm/input/InteractionManager.js.map +1 -1
- package/dist/esm/input/JoyConLeftGamepadMapping.d.ts +17 -3
- package/dist/esm/input/JoyConLeftGamepadMapping.js +42 -3
- package/dist/esm/input/JoyConLeftGamepadMapping.js.map +1 -1
- package/dist/esm/input/JoyConRightGamepadMapping.d.ts +17 -3
- package/dist/esm/input/JoyConRightGamepadMapping.js +38 -3
- 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 +106 -71
- package/dist/esm/input/Pointer.js +93 -71
- 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/SteamDeckGamepadMapping.d.ts +18 -0
- package/dist/esm/input/SteamDeckGamepadMapping.js +76 -0
- package/dist/esm/input/SteamDeckGamepadMapping.js.map +1 -0
- 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 +7 -4
- package/dist/esm/input/types.d.ts +17 -73
- package/dist/esm/input/types.js +18 -77
- package/dist/esm/input/types.js.map +1 -1
- package/dist/esm/math/AbstractVector.d.ts +83 -0
- package/dist/esm/math/AbstractVector.js +83 -0
- package/dist/esm/math/AbstractVector.js.map +1 -1
- package/dist/esm/math/Circle.d.ts +32 -0
- package/dist/esm/math/Circle.js +34 -2
- package/dist/esm/math/Circle.js.map +1 -1
- package/dist/esm/math/CircleLike.d.ts +1 -0
- package/dist/esm/math/Collision.d.ts +39 -0
- package/dist/esm/math/Collision.js +5 -0
- package/dist/esm/math/Collision.js.map +1 -1
- package/dist/esm/math/Ellipse.d.ts +11 -0
- package/dist/esm/math/Ellipse.js +18 -2
- package/dist/esm/math/Ellipse.js.map +1 -1
- package/dist/esm/math/EllipseLike.d.ts +3 -0
- package/dist/esm/math/Flags.d.ts +31 -0
- package/dist/esm/math/Flags.js +31 -0
- package/dist/esm/math/Flags.js.map +1 -1
- package/dist/esm/math/Interval.d.ts +15 -0
- package/dist/esm/math/Interval.js +15 -0
- package/dist/esm/math/Interval.js.map +1 -1
- package/dist/esm/math/Line.d.ts +17 -1
- package/dist/esm/math/Line.js +17 -1
- package/dist/esm/math/Line.js.map +1 -1
- package/dist/esm/math/LineLike.d.ts +1 -0
- package/dist/esm/math/Matrix.d.ts +44 -3
- package/dist/esm/math/Matrix.js +44 -3
- package/dist/esm/math/Matrix.js.map +1 -1
- package/dist/esm/math/ObservableSize.d.ts +7 -0
- package/dist/esm/math/ObservableSize.js +7 -0
- package/dist/esm/math/ObservableSize.js.map +1 -1
- package/dist/esm/math/ObservableVector.d.ts +9 -0
- package/dist/esm/math/ObservableVector.js +9 -0
- package/dist/esm/math/ObservableVector.js.map +1 -1
- package/dist/esm/math/PointLike.d.ts +1 -0
- package/dist/esm/math/PolarVector.d.ts +15 -0
- package/dist/esm/math/PolarVector.js +16 -1
- package/dist/esm/math/PolarVector.js.map +1 -1
- package/dist/esm/math/Polygon.d.ts +20 -0
- package/dist/esm/math/Polygon.js +20 -0
- package/dist/esm/math/Polygon.js.map +1 -1
- package/dist/esm/math/PolygonLike.d.ts +4 -0
- package/dist/esm/math/Quadtree.d.ts +40 -3
- package/dist/esm/math/Quadtree.js +39 -3
- package/dist/esm/math/Quadtree.js.map +1 -1
- package/dist/esm/math/Random.d.ts +25 -0
- package/dist/esm/math/Random.js +25 -0
- package/dist/esm/math/Random.js.map +1 -1
- package/dist/esm/math/Rectangle.d.ts +15 -0
- package/dist/esm/math/Rectangle.js +17 -2
- package/dist/esm/math/Rectangle.js.map +1 -1
- package/dist/esm/math/RectangleLike.d.ts +1 -0
- package/dist/esm/math/Segment.d.ts +7 -0
- package/dist/esm/math/Segment.js +7 -0
- package/dist/esm/math/Segment.js.map +1 -1
- package/dist/esm/math/ShapeLike.d.ts +6 -0
- package/dist/esm/math/Size.d.ts +9 -0
- package/dist/esm/math/Size.js +9 -0
- package/dist/esm/math/Size.js.map +1 -1
- package/dist/esm/math/Vector.d.ts +16 -0
- package/dist/esm/math/Vector.js +16 -0
- package/dist/esm/math/Vector.js.map +1 -1
- package/dist/esm/math/collision-detection.d.ts +47 -1
- package/dist/esm/math/collision-detection.js +228 -17
- package/dist/esm/math/collision-detection.js.map +1 -1
- package/dist/esm/math/collision-primitives.d.ts +23 -0
- package/dist/esm/math/collision-primitives.js +23 -0
- package/dist/esm/math/collision-primitives.js.map +1 -1
- package/dist/esm/math/geometry.d.ts +42 -0
- package/dist/esm/math/geometry.js +37 -0
- package/dist/esm/math/geometry.js.map +1 -1
- package/dist/esm/math/utils.d.ts +41 -0
- package/dist/esm/math/utils.js +41 -0
- package/dist/esm/math/utils.js.map +1 -1
- package/dist/esm/particles/Particle.d.ts +37 -0
- package/dist/esm/particles/Particle.js +37 -0
- package/dist/esm/particles/Particle.js.map +1 -1
- package/dist/esm/particles/ParticleProperties.d.ts +15 -0
- package/dist/esm/particles/ParticleSystem.d.ts +69 -0
- package/dist/esm/particles/ParticleSystem.js +69 -0
- package/dist/esm/particles/ParticleSystem.js.map +1 -1
- package/dist/esm/particles/affectors/ColorAffector.d.ts +13 -0
- package/dist/esm/particles/affectors/ColorAffector.js +13 -0
- package/dist/esm/particles/affectors/ColorAffector.js.map +1 -1
- package/dist/esm/particles/affectors/ForceAffector.d.ts +11 -0
- package/dist/esm/particles/affectors/ForceAffector.js +11 -0
- package/dist/esm/particles/affectors/ForceAffector.js.map +1 -1
- package/dist/esm/particles/affectors/ParticleAffector.d.ts +13 -0
- package/dist/esm/particles/affectors/ScaleAffector.d.ts +10 -0
- package/dist/esm/particles/affectors/ScaleAffector.js +10 -0
- package/dist/esm/particles/affectors/ScaleAffector.js.map +1 -1
- package/dist/esm/particles/affectors/TorqueAffector.d.ts +11 -0
- package/dist/esm/particles/affectors/TorqueAffector.js +11 -0
- package/dist/esm/particles/affectors/TorqueAffector.js.map +1 -1
- package/dist/esm/particles/emitters/ParticleEmitter.d.ts +13 -0
- package/dist/esm/particles/emitters/ParticleOptions.d.ts +16 -0
- package/dist/esm/particles/emitters/ParticleOptions.js +16 -0
- package/dist/esm/particles/emitters/ParticleOptions.js.map +1 -1
- package/dist/esm/particles/emitters/UniversalEmitter.d.ts +23 -0
- package/dist/esm/particles/emitters/UniversalEmitter.js +23 -0
- package/dist/esm/particles/emitters/UniversalEmitter.js.map +1 -1
- package/dist/esm/rendering/CallbackRenderPass.d.ts +12 -0
- package/dist/esm/rendering/CallbackRenderPass.js +12 -0
- package/dist/esm/rendering/CallbackRenderPass.js.map +1 -1
- package/dist/esm/rendering/Container.d.ts +43 -0
- package/dist/esm/rendering/Container.js +43 -0
- package/dist/esm/rendering/Container.js.map +1 -1
- package/dist/esm/rendering/Drawable.d.ts +22 -0
- package/dist/esm/rendering/Drawable.js +22 -0
- package/dist/esm/rendering/Drawable.js.map +1 -1
- package/dist/esm/rendering/RenderBackend.d.ts +13 -0
- package/dist/esm/rendering/RenderBackendType.d.ts +4 -0
- package/dist/esm/rendering/RenderBackendType.js +4 -0
- package/dist/esm/rendering/RenderBackendType.js.map +1 -1
- package/dist/esm/rendering/RenderNode.d.ts +18 -0
- package/dist/esm/rendering/RenderNode.js +18 -0
- package/dist/esm/rendering/RenderNode.js.map +1 -1
- package/dist/esm/rendering/RenderPass.d.ts +8 -0
- package/dist/esm/rendering/RenderStats.d.ts +19 -0
- package/dist/esm/rendering/RenderStats.js +7 -0
- package/dist/esm/rendering/RenderStats.js.map +1 -1
- package/dist/esm/rendering/RenderTarget.d.ts +17 -0
- package/dist/esm/rendering/RenderTarget.js +17 -0
- package/dist/esm/rendering/RenderTarget.js.map +1 -1
- package/dist/esm/rendering/RenderTargetPass.d.ts +11 -0
- package/dist/esm/rendering/RenderTargetPass.js +7 -0
- package/dist/esm/rendering/RenderTargetPass.js.map +1 -1
- package/dist/esm/rendering/Renderer.d.ts +15 -0
- package/dist/esm/rendering/RendererRegistry.d.ts +7 -0
- package/dist/esm/rendering/RendererRegistry.js +7 -0
- package/dist/esm/rendering/RendererRegistry.js.map +1 -1
- package/dist/esm/rendering/View.d.ts +67 -2
- package/dist/esm/rendering/View.js +57 -0
- package/dist/esm/rendering/View.js.map +1 -1
- package/dist/esm/rendering/filters/BlurFilter.d.ts +9 -0
- package/dist/esm/rendering/filters/BlurFilter.js +8 -0
- package/dist/esm/rendering/filters/BlurFilter.js.map +1 -1
- package/dist/esm/rendering/filters/ColorFilter.d.ts +7 -0
- package/dist/esm/rendering/filters/ColorFilter.js +7 -0
- package/dist/esm/rendering/filters/ColorFilter.js.map +1 -1
- package/dist/esm/rendering/filters/Filter.d.ts +23 -0
- package/dist/esm/rendering/filters/Filter.js +20 -0
- package/dist/esm/rendering/filters/Filter.js.map +1 -1
- package/dist/esm/rendering/filters/WebGl2ShaderFilter.d.ts +5 -0
- package/dist/esm/rendering/filters/WebGl2ShaderFilter.js +5 -0
- package/dist/esm/rendering/filters/WebGl2ShaderFilter.js.map +1 -1
- package/dist/esm/rendering/filters/WebGpuShaderFilter.d.ts +5 -0
- package/dist/esm/rendering/filters/WebGpuShaderFilter.js +5 -0
- package/dist/esm/rendering/filters/WebGpuShaderFilter.js.map +1 -1
- package/dist/esm/rendering/mesh/Mesh.d.ts +2 -0
- package/dist/esm/rendering/mesh/Mesh.js +2 -0
- package/dist/esm/rendering/mesh/Mesh.js.map +1 -1
- package/dist/esm/rendering/primitives/Graphics.d.ts +34 -0
- package/dist/esm/rendering/primitives/Graphics.js +34 -0
- package/dist/esm/rendering/primitives/Graphics.js.map +1 -1
- package/dist/esm/rendering/shader/Shader.d.ts +36 -0
- package/dist/esm/rendering/shader/Shader.js +26 -0
- package/dist/esm/rendering/shader/Shader.js.map +1 -1
- package/dist/esm/rendering/shader/ShaderAttribute.d.ts +13 -0
- package/dist/esm/rendering/shader/ShaderAttribute.js +13 -0
- package/dist/esm/rendering/shader/ShaderAttribute.js.map +1 -1
- package/dist/esm/rendering/shader/ShaderUniform.d.ts +27 -0
- package/dist/esm/rendering/shader/ShaderUniform.js +28 -1
- package/dist/esm/rendering/shader/ShaderUniform.js.map +1 -1
- package/dist/esm/rendering/sprite/AnimatedSprite.d.ts +38 -0
- package/dist/esm/rendering/sprite/AnimatedSprite.js +36 -0
- package/dist/esm/rendering/sprite/AnimatedSprite.js.map +1 -1
- package/dist/esm/rendering/sprite/Sprite.d.ts +56 -0
- package/dist/esm/rendering/sprite/Sprite.js +56 -0
- package/dist/esm/rendering/sprite/Sprite.js.map +1 -1
- package/dist/esm/rendering/sprite/Spritesheet.d.ts +25 -0
- package/dist/esm/rendering/sprite/Spritesheet.js +20 -0
- package/dist/esm/rendering/sprite/Spritesheet.js.map +1 -1
- package/dist/esm/rendering/text/Text.d.ts +2 -0
- package/dist/esm/rendering/text/Text.js +2 -0
- package/dist/esm/rendering/text/Text.js.map +1 -1
- package/dist/esm/rendering/text/TextStyle.d.ts +29 -0
- package/dist/esm/rendering/text/TextStyle.js +24 -0
- package/dist/esm/rendering/text/TextStyle.js.map +1 -1
- package/dist/esm/rendering/text/types.d.ts +1 -0
- package/dist/esm/rendering/texture/RenderTexture.d.ts +16 -0
- package/dist/esm/rendering/texture/RenderTexture.js +16 -0
- package/dist/esm/rendering/texture/RenderTexture.js.map +1 -1
- package/dist/esm/rendering/texture/Sampler.d.ts +23 -0
- package/dist/esm/rendering/texture/Sampler.js +13 -0
- package/dist/esm/rendering/texture/Sampler.js.map +1 -1
- package/dist/esm/rendering/texture/Texture.d.ts +30 -0
- package/dist/esm/rendering/texture/Texture.js +30 -0
- package/dist/esm/rendering/texture/Texture.js.map +1 -1
- package/dist/esm/rendering/types.d.ts +29 -0
- package/dist/esm/rendering/types.js +29 -0
- package/dist/esm/rendering/types.js.map +1 -1
- package/dist/esm/rendering/utils.d.ts +20 -0
- package/dist/esm/rendering/utils.js +10 -0
- package/dist/esm/rendering/utils.js.map +1 -1
- package/dist/esm/rendering/video/Video.d.ts +35 -1
- package/dist/esm/rendering/video/Video.js +36 -2
- package/dist/esm/rendering/video/Video.js.map +1 -1
- package/dist/esm/rendering/webgl2/AbstractWebGl2BatchedRenderer.d.ts +7 -0
- package/dist/esm/rendering/webgl2/AbstractWebGl2BatchedRenderer.js +7 -0
- package/dist/esm/rendering/webgl2/AbstractWebGl2BatchedRenderer.js.map +1 -1
- package/dist/esm/rendering/webgl2/WebGl2Backend.d.ts +13 -0
- package/dist/esm/rendering/webgl2/WebGl2Backend.js +13 -0
- package/dist/esm/rendering/webgl2/WebGl2Backend.js.map +1 -1
- package/dist/esm/rendering/webgl2/WebGl2RenderBuffer.d.ts +8 -0
- package/dist/esm/rendering/webgl2/WebGl2RenderBuffer.js +8 -0
- package/dist/esm/rendering/webgl2/WebGl2RenderBuffer.js.map +1 -1
- package/dist/esm/rendering/webgpu/WebGpuBackend.d.ts +35 -0
- package/dist/esm/rendering/webgpu/WebGpuBackend.js +135 -5
- package/dist/esm/rendering/webgpu/WebGpuBackend.js.map +1 -1
- package/dist/esm/resources/AbstractAssetFactory.d.ts +20 -0
- package/dist/esm/resources/AbstractAssetFactory.js +20 -0
- package/dist/esm/resources/AbstractAssetFactory.js.map +1 -1
- package/dist/esm/resources/AssetFactory.d.ts +26 -0
- package/dist/esm/resources/AssetManifest.d.ts +45 -0
- package/dist/esm/resources/AssetManifest.js +25 -0
- package/dist/esm/resources/AssetManifest.js.map +1 -1
- package/dist/esm/resources/CacheFirstStrategy.d.ts +15 -0
- package/dist/esm/resources/CacheFirstStrategy.js +19 -4
- 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 +28 -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 +172 -0
- package/dist/esm/resources/Loader.js +129 -37
- package/dist/esm/resources/Loader.js.map +1 -1
- package/dist/esm/resources/NetworkOnlyStrategy.d.ts +11 -0
- package/dist/esm/resources/NetworkOnlyStrategy.js +16 -3
- 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 +26 -2
- 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 +27 -2
- 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 +104 -3
- 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 +4673 -745
- package/dist/exo.esm.js.map +1 -1
- package/package.json +8 -8
- package/dist/esm/input/GamepadChannels.d.ts +0 -39
- package/dist/esm/input/GamepadChannels.js +0 -45
- package/dist/esm/input/GamepadChannels.js.map +0 -1
- package/dist/esm/input/GamepadControl.d.ts +0 -15
- package/dist/esm/input/GamepadControl.js +0 -29
- package/dist/esm/input/GamepadControl.js.map +0 -1
- package/dist/esm/input/Input.d.ts +0 -28
- package/dist/esm/input/Input.js +0 -68
- package/dist/esm/input/Input.js.map +0 -1
|
@@ -1,5 +1,7 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
1
|
+
/**
|
|
2
|
+
* Discriminant tag identifying which device family a {@link GamepadMapping} belongs to.
|
|
3
|
+
* Used to select the correct mapping at runtime when a gamepad connects.
|
|
4
|
+
*/
|
|
3
5
|
var GamepadMappingFamily;
|
|
4
6
|
(function (GamepadMappingFamily) {
|
|
5
7
|
GamepadMappingFamily["GenericDualAnalog"] = "genericDualAnalog";
|
|
@@ -10,22 +12,61 @@ var GamepadMappingFamily;
|
|
|
10
12
|
GamepadMappingFamily["JoyConRight"] = "joyConRight";
|
|
11
13
|
GamepadMappingFamily["GameCube"] = "gameCube";
|
|
12
14
|
GamepadMappingFamily["SteamController"] = "steamController";
|
|
15
|
+
GamepadMappingFamily["SteamDeck"] = "steamDeck";
|
|
13
16
|
GamepadMappingFamily["ArcadeStick"] = "arcadeStick";
|
|
14
17
|
})(GamepadMappingFamily || (GamepadMappingFamily = {}));
|
|
18
|
+
/**
|
|
19
|
+
* Abstract translation layer between the browser's raw {@link https://developer.mozilla.org/en-US/docs/Web/API/Gamepad Gamepad API}
|
|
20
|
+
* indices and ExoJS-canonical channel buffers.
|
|
21
|
+
*
|
|
22
|
+
* Each concrete subclass encodes one device family's button/axis layout as
|
|
23
|
+
* ordered arrays of {@link GamepadButton} / {@link GamepadAxis} instances.
|
|
24
|
+
* The engine selects the appropriate mapping when a gamepad connects and
|
|
25
|
+
* uses it to route raw values to the correct input channels every frame.
|
|
26
|
+
*/
|
|
15
27
|
class GamepadMapping {
|
|
28
|
+
/** Ordered list of buttons, indexed by the Gamepad API button index. */
|
|
16
29
|
buttons;
|
|
30
|
+
/** Ordered list of axes, indexed by the Gamepad API axis index. */
|
|
17
31
|
axes;
|
|
18
32
|
constructor(buttons, axes) {
|
|
19
33
|
this.buttons = buttons;
|
|
20
34
|
this.axes = axes;
|
|
21
35
|
}
|
|
36
|
+
/**
|
|
37
|
+
* Returns `true` when this mapping declares at least one button or axis
|
|
38
|
+
* control that writes to `channel`. Use to detect device-specific
|
|
39
|
+
* capabilities at runtime — e.g. before binding an input to a
|
|
40
|
+
* right-stick channel that may not exist on a single Joy-Con.
|
|
41
|
+
*
|
|
42
|
+
* @example
|
|
43
|
+
* ```ts
|
|
44
|
+
* if (gamepad.mapping?.hasChannel(GamepadAxis.RightStickX)) {
|
|
45
|
+
* pad.onActive(GamepadAxis.RightStickX, (v) => crosshair.x += v * 8);
|
|
46
|
+
* }
|
|
47
|
+
* ```
|
|
48
|
+
*/
|
|
49
|
+
hasChannel(channel) {
|
|
50
|
+
for (const button of this.buttons) {
|
|
51
|
+
if (button.channel === channel) {
|
|
52
|
+
return true;
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
for (const axis of this.axes) {
|
|
56
|
+
if (axis.channel === channel) {
|
|
57
|
+
return true;
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
return false;
|
|
61
|
+
}
|
|
62
|
+
/**
|
|
63
|
+
* Releases all button and axis control references held by this mapping.
|
|
64
|
+
* Call when the associated gamepad disconnects to allow garbage collection.
|
|
65
|
+
*/
|
|
22
66
|
destroy() {
|
|
23
67
|
this.buttons.length = 0;
|
|
24
68
|
this.axes.length = 0;
|
|
25
69
|
}
|
|
26
|
-
static createControls(definitions) {
|
|
27
|
-
return definitions.map(([index, channel, options]) => new GamepadControl(index, channel, options));
|
|
28
|
-
}
|
|
29
70
|
}
|
|
30
71
|
|
|
31
72
|
export { GamepadMapping, GamepadMappingFamily };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"GamepadMapping.js","sources":["../../../../src/input/GamepadMapping.ts"],"sourcesContent":[null],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"GamepadMapping.js","sources":["../../../../src/input/GamepadMapping.ts"],"sourcesContent":[null],"names":[],"mappings":"AAKA;;;AAGG;IACS;AAAZ,CAAA,UAAY,oBAAoB,EAAA;AAC5B,IAAA,oBAAA,CAAA,mBAAA,CAAA,GAAA,mBAAuC;AACvC,IAAA,oBAAA,CAAA,MAAA,CAAA,GAAA,MAAa;AACb,IAAA,oBAAA,CAAA,aAAA,CAAA,GAAA,aAA2B;AAC3B,IAAA,oBAAA,CAAA,WAAA,CAAA,GAAA,WAAuB;AACvB,IAAA,oBAAA,CAAA,YAAA,CAAA,GAAA,YAAyB;AACzB,IAAA,oBAAA,CAAA,aAAA,CAAA,GAAA,aAA2B;AAC3B,IAAA,oBAAA,CAAA,UAAA,CAAA,GAAA,UAAqB;AACrB,IAAA,oBAAA,CAAA,iBAAA,CAAA,GAAA,iBAAmC;AACnC,IAAA,oBAAA,CAAA,WAAA,CAAA,GAAA,WAAuB;AACvB,IAAA,oBAAA,CAAA,aAAA,CAAA,GAAA,aAA2B;AAC/B,CAAC,EAXW,oBAAoB,KAApB,oBAAoB,GAAA,EAAA,CAAA,CAAA;AAahC;;;;;;;;AAQG;MACmB,cAAc,CAAA;;AAKhB,IAAA,OAAO;;AAGP,IAAA,IAAI;IAEpB,WAAA,CAAsB,OAAqC,EAAE,IAAgC,EAAA;AACzF,QAAA,IAAI,CAAC,OAAO,GAAG,OAAO;AACtB,QAAA,IAAI,CAAC,IAAI,GAAG,IAAI;IACpB;AAEA;;;;;;;;;;;;AAYG;AACI,IAAA,UAAU,CAAC,OAAkD,EAAA;AAChE,QAAA,KAAK,MAAM,MAAM,IAAI,IAAI,CAAC,OAAO,EAAE;AAC/B,YAAA,IAAI,MAAM,CAAC,OAAO,KAAK,OAAO,EAAE;AAC5B,gBAAA,OAAO,IAAI;YACf;QACJ;AAEA,QAAA,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,IAAI,EAAE;AAC1B,YAAA,IAAI,IAAI,CAAC,OAAO,KAAK,OAAO,EAAE;AAC1B,gBAAA,OAAO,IAAI;YACf;QACJ;AAEA,QAAA,OAAO,KAAK;IAChB;AAEA;;;AAGG;IACI,OAAO,GAAA;AACT,QAAA,IAAI,CAAC,OAAgC,CAAC,MAAM,GAAG,CAAC;AAChD,QAAA,IAAI,CAAC,IAA2B,CAAC,MAAM,GAAG,CAAC;IAChD;AACH;;;;"}
|
|
@@ -1,9 +1,42 @@
|
|
|
1
|
-
import { GamepadChannel } from './GamepadChannels';
|
|
2
1
|
import { GamepadMappingFamily } from './GamepadMapping';
|
|
2
|
+
import type { GamepadButtonChannel } from './GamepadButton';
|
|
3
|
+
/**
|
|
4
|
+
* Named controls that can appear in an in-game prompt or button-hint UI.
|
|
5
|
+
*
|
|
6
|
+
* Intentionally a subset of {@link GamepadButton} channels — covers the
|
|
7
|
+
* controls a typical prompt overlay needs to label, including the composite
|
|
8
|
+
* `'DPad'` token which has no single channel equivalent. The names retain
|
|
9
|
+
* a `'Button'` prefix on the face cluster for compatibility with prompt
|
|
10
|
+
* artwork file names.
|
|
11
|
+
*/
|
|
3
12
|
export type GamepadPromptControl = 'DPad' | 'DPadUp' | 'DPadDown' | 'DPadLeft' | 'DPadRight' | 'ButtonNorth' | 'ButtonWest' | 'ButtonEast' | 'ButtonSouth' | 'LeftShoulder' | 'RightShoulder' | 'LeftTrigger' | 'RightTrigger' | 'Select' | 'Start' | 'LeftStick' | 'RightStick';
|
|
13
|
+
/**
|
|
14
|
+
* Static utility that drives in-game controller-prompt UI.
|
|
15
|
+
*
|
|
16
|
+
* Provides the canonical set of prompt controls, their normalised [x, y] positions
|
|
17
|
+
* on a generic controller silhouette, device-family label strings (e.g. "A" for
|
|
18
|
+
* Xbox, "Cross" for PlayStation, "B" for Switch), and the mapping from prompt
|
|
19
|
+
* control names to {@link GamepadButton} channel values.
|
|
20
|
+
*/
|
|
4
21
|
export declare class GamepadPromptLayouts {
|
|
22
|
+
/** Complete ordered list of every {@link GamepadPromptControl} token. */
|
|
5
23
|
static readonly controls: Array<GamepadPromptControl>;
|
|
24
|
+
/**
|
|
25
|
+
* Returns the normalised [x, y] position of `control` on a generic controller
|
|
26
|
+
* silhouette, where (0, 0) is the top-left and (1, 1) the bottom-right.
|
|
27
|
+
* Falls back to [0.5, 0.5] (centre) when the control has no registered position.
|
|
28
|
+
*/
|
|
6
29
|
static getControlPosition(control: GamepadPromptControl): readonly [number, number];
|
|
30
|
+
/**
|
|
31
|
+
* Returns the label map for the given device family, e.g. `{ ButtonSouth → "A" }`
|
|
32
|
+
* for Xbox or `{ ButtonSouth → "Cross" }` for PlayStation.
|
|
33
|
+
* Falls back to generic labels when `family` has no registered label set.
|
|
34
|
+
*/
|
|
7
35
|
static getControlLabels(family: GamepadMappingFamily): ReadonlyMap<GamepadPromptControl, string>;
|
|
8
|
-
|
|
36
|
+
/**
|
|
37
|
+
* Returns the static mapping from each {@link GamepadPromptControl} to its
|
|
38
|
+
* corresponding {@link GamepadButton} channel. The composite `'DPad'`
|
|
39
|
+
* control has no channel entry and is absent from the returned map.
|
|
40
|
+
*/
|
|
41
|
+
static getControlChannelMap(): ReadonlyMap<GamepadPromptControl, GamepadButtonChannel>;
|
|
9
42
|
}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { GamepadButton } from './GamepadButton.js';
|
|
2
2
|
import { GamepadMappingFamily } from './GamepadMapping.js';
|
|
3
3
|
|
|
4
4
|
const basePositions = new Map([
|
|
@@ -21,22 +21,22 @@ const basePositions = new Map([
|
|
|
21
21
|
['RightStick', [0.62, 0.66]],
|
|
22
22
|
]);
|
|
23
23
|
const channelMap = new Map([
|
|
24
|
-
['ButtonNorth',
|
|
25
|
-
['ButtonWest',
|
|
26
|
-
['ButtonEast',
|
|
27
|
-
['ButtonSouth',
|
|
28
|
-
['LeftShoulder',
|
|
29
|
-
['RightShoulder',
|
|
30
|
-
['LeftTrigger',
|
|
31
|
-
['RightTrigger',
|
|
32
|
-
['Select',
|
|
33
|
-
['Start',
|
|
34
|
-
['LeftStick',
|
|
35
|
-
['RightStick',
|
|
36
|
-
['DPadUp',
|
|
37
|
-
['DPadDown',
|
|
38
|
-
['DPadLeft',
|
|
39
|
-
['DPadRight',
|
|
24
|
+
['ButtonNorth', GamepadButton.North],
|
|
25
|
+
['ButtonWest', GamepadButton.West],
|
|
26
|
+
['ButtonEast', GamepadButton.East],
|
|
27
|
+
['ButtonSouth', GamepadButton.South],
|
|
28
|
+
['LeftShoulder', GamepadButton.LeftShoulder],
|
|
29
|
+
['RightShoulder', GamepadButton.RightShoulder],
|
|
30
|
+
['LeftTrigger', GamepadButton.LeftTrigger],
|
|
31
|
+
['RightTrigger', GamepadButton.RightTrigger],
|
|
32
|
+
['Select', GamepadButton.Select],
|
|
33
|
+
['Start', GamepadButton.Start],
|
|
34
|
+
['LeftStick', GamepadButton.LeftStick],
|
|
35
|
+
['RightStick', GamepadButton.RightStick],
|
|
36
|
+
['DPadUp', GamepadButton.DPadUp],
|
|
37
|
+
['DPadDown', GamepadButton.DPadDown],
|
|
38
|
+
['DPadLeft', GamepadButton.DPadLeft],
|
|
39
|
+
['DPadRight', GamepadButton.DPadRight],
|
|
40
40
|
]);
|
|
41
41
|
const genericLabels = new Map([
|
|
42
42
|
['ButtonNorth', 'North'],
|
|
@@ -103,9 +103,19 @@ const promptLabelsByFamily = new Map([
|
|
|
103
103
|
[GamepadMappingFamily.JoyConRight, switchLabels],
|
|
104
104
|
[GamepadMappingFamily.GameCube, genericLabels],
|
|
105
105
|
[GamepadMappingFamily.SteamController, genericLabels],
|
|
106
|
+
[GamepadMappingFamily.SteamDeck, genericLabels],
|
|
106
107
|
[GamepadMappingFamily.ArcadeStick, genericLabels],
|
|
107
108
|
]);
|
|
109
|
+
/**
|
|
110
|
+
* Static utility that drives in-game controller-prompt UI.
|
|
111
|
+
*
|
|
112
|
+
* Provides the canonical set of prompt controls, their normalised [x, y] positions
|
|
113
|
+
* on a generic controller silhouette, device-family label strings (e.g. "A" for
|
|
114
|
+
* Xbox, "Cross" for PlayStation, "B" for Switch), and the mapping from prompt
|
|
115
|
+
* control names to {@link GamepadButton} channel values.
|
|
116
|
+
*/
|
|
108
117
|
class GamepadPromptLayouts {
|
|
118
|
+
/** Complete ordered list of every {@link GamepadPromptControl} token. */
|
|
109
119
|
static controls = [
|
|
110
120
|
'DPad',
|
|
111
121
|
'DPadUp',
|
|
@@ -125,13 +135,28 @@ class GamepadPromptLayouts {
|
|
|
125
135
|
'LeftStick',
|
|
126
136
|
'RightStick',
|
|
127
137
|
];
|
|
138
|
+
/**
|
|
139
|
+
* Returns the normalised [x, y] position of `control` on a generic controller
|
|
140
|
+
* silhouette, where (0, 0) is the top-left and (1, 1) the bottom-right.
|
|
141
|
+
* Falls back to [0.5, 0.5] (centre) when the control has no registered position.
|
|
142
|
+
*/
|
|
128
143
|
static getControlPosition(control) {
|
|
129
144
|
return basePositions.get(control) ?? [0.5, 0.5];
|
|
130
145
|
}
|
|
146
|
+
/**
|
|
147
|
+
* Returns the label map for the given device family, e.g. `{ ButtonSouth → "A" }`
|
|
148
|
+
* for Xbox or `{ ButtonSouth → "Cross" }` for PlayStation.
|
|
149
|
+
* Falls back to generic labels when `family` has no registered label set.
|
|
150
|
+
*/
|
|
131
151
|
static getControlLabels(family) {
|
|
132
152
|
return promptLabelsByFamily.get(family) ?? genericLabels;
|
|
133
153
|
}
|
|
134
|
-
|
|
154
|
+
/**
|
|
155
|
+
* Returns the static mapping from each {@link GamepadPromptControl} to its
|
|
156
|
+
* corresponding {@link GamepadButton} channel. The composite `'DPad'`
|
|
157
|
+
* control has no channel entry and is absent from the returned map.
|
|
158
|
+
*/
|
|
159
|
+
static getControlChannelMap() {
|
|
135
160
|
return channelMap;
|
|
136
161
|
}
|
|
137
162
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"GamepadPromptLayouts.js","sources":["../../../../src/input/GamepadPromptLayouts.ts"],"sourcesContent":[null],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"GamepadPromptLayouts.js","sources":["../../../../src/input/GamepadPromptLayouts.ts"],"sourcesContent":[null],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,17 @@
|
|
|
1
1
|
import { GamepadMapping, GamepadMappingFamily } from './GamepadMapping';
|
|
2
|
+
/**
|
|
3
|
+
* Baseline mapping for dual-analog controllers that follow the standard
|
|
4
|
+
* W3C Gamepad API layout (axes 0–3 for both sticks, axes 4–7 auxiliary).
|
|
5
|
+
*
|
|
6
|
+
* Each signed stick axis is exposed three ways for ergonomic binding:
|
|
7
|
+
* - Two direction-split, non-negative channels (e.g. `LeftStickLeft` /
|
|
8
|
+
* `LeftStickRight`) for "buttons-style" subscriptions.
|
|
9
|
+
* - One signed aggregate channel (e.g. `LeftStickX`) for direct -1..1
|
|
10
|
+
* consumption — useful for movement or aiming.
|
|
11
|
+
*
|
|
12
|
+
* Device-specific subclasses (Xbox, PlayStation, Switch Pro, etc.) inherit
|
|
13
|
+
* this layout and override only {@link GamepadMapping.family}.
|
|
14
|
+
*/
|
|
2
15
|
export declare class GenericDualAnalogGamepadMapping extends GamepadMapping {
|
|
3
16
|
readonly family: GamepadMappingFamily;
|
|
4
17
|
constructor();
|
|
@@ -1,51 +1,70 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { GamepadAxis } from './GamepadAxis.js';
|
|
2
|
+
import { GamepadButton } from './GamepadButton.js';
|
|
2
3
|
import { GamepadMapping, GamepadMappingFamily } from './GamepadMapping.js';
|
|
3
4
|
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
[12, GamepadChannel.DPadUp],
|
|
18
|
-
[13, GamepadChannel.DPadDown],
|
|
19
|
-
[14, GamepadChannel.DPadLeft],
|
|
20
|
-
[15, GamepadChannel.DPadRight],
|
|
21
|
-
[16, GamepadChannel.Guide],
|
|
22
|
-
[17, GamepadChannel.Share],
|
|
23
|
-
[18, GamepadChannel.Capture],
|
|
24
|
-
[19, GamepadChannel.Touchpad],
|
|
25
|
-
[20, GamepadChannel.Paddle1],
|
|
26
|
-
];
|
|
27
|
-
const genericDualAnalogAxisDefinitions = [
|
|
28
|
-
[0, GamepadChannel.LeftStickLeft, { invert: true }],
|
|
29
|
-
[0, GamepadChannel.LeftStickRight],
|
|
30
|
-
[1, GamepadChannel.LeftStickUp, { invert: true }],
|
|
31
|
-
[1, GamepadChannel.LeftStickDown],
|
|
32
|
-
[2, GamepadChannel.RightStickLeft, { invert: true }],
|
|
33
|
-
[2, GamepadChannel.RightStickRight],
|
|
34
|
-
[3, GamepadChannel.RightStickUp, { invert: true }],
|
|
35
|
-
[3, GamepadChannel.RightStickDown],
|
|
36
|
-
[4, GamepadChannel.AuxiliaryAxis0Negative, { invert: true }],
|
|
37
|
-
[4, GamepadChannel.AuxiliaryAxis0Positive],
|
|
38
|
-
[5, GamepadChannel.AuxiliaryAxis1Negative, { invert: true }],
|
|
39
|
-
[5, GamepadChannel.AuxiliaryAxis1Positive],
|
|
40
|
-
[6, GamepadChannel.AuxiliaryAxis2Negative, { invert: true }],
|
|
41
|
-
[6, GamepadChannel.AuxiliaryAxis2Positive],
|
|
42
|
-
[7, GamepadChannel.AuxiliaryAxis3Negative, { invert: true }],
|
|
43
|
-
[7, GamepadChannel.AuxiliaryAxis3Positive],
|
|
44
|
-
];
|
|
5
|
+
/**
|
|
6
|
+
* Baseline mapping for dual-analog controllers that follow the standard
|
|
7
|
+
* W3C Gamepad API layout (axes 0–3 for both sticks, axes 4–7 auxiliary).
|
|
8
|
+
*
|
|
9
|
+
* Each signed stick axis is exposed three ways for ergonomic binding:
|
|
10
|
+
* - Two direction-split, non-negative channels (e.g. `LeftStickLeft` /
|
|
11
|
+
* `LeftStickRight`) for "buttons-style" subscriptions.
|
|
12
|
+
* - One signed aggregate channel (e.g. `LeftStickX`) for direct -1..1
|
|
13
|
+
* consumption — useful for movement or aiming.
|
|
14
|
+
*
|
|
15
|
+
* Device-specific subclasses (Xbox, PlayStation, Switch Pro, etc.) inherit
|
|
16
|
+
* this layout and override only {@link GamepadMapping.family}.
|
|
17
|
+
*/
|
|
45
18
|
class GenericDualAnalogGamepadMapping extends GamepadMapping {
|
|
46
19
|
family = GamepadMappingFamily.GenericDualAnalog;
|
|
47
20
|
constructor() {
|
|
48
|
-
super(
|
|
21
|
+
super([
|
|
22
|
+
new GamepadButton(0, GamepadButton.South),
|
|
23
|
+
new GamepadButton(1, GamepadButton.East),
|
|
24
|
+
new GamepadButton(2, GamepadButton.West),
|
|
25
|
+
new GamepadButton(3, GamepadButton.North),
|
|
26
|
+
new GamepadButton(4, GamepadButton.LeftShoulder),
|
|
27
|
+
new GamepadButton(5, GamepadButton.RightShoulder),
|
|
28
|
+
new GamepadButton(6, GamepadButton.LeftTrigger),
|
|
29
|
+
new GamepadButton(7, GamepadButton.RightTrigger),
|
|
30
|
+
new GamepadButton(8, GamepadButton.Select),
|
|
31
|
+
new GamepadButton(9, GamepadButton.Start),
|
|
32
|
+
new GamepadButton(10, GamepadButton.LeftStick),
|
|
33
|
+
new GamepadButton(11, GamepadButton.RightStick),
|
|
34
|
+
new GamepadButton(12, GamepadButton.DPadUp),
|
|
35
|
+
new GamepadButton(13, GamepadButton.DPadDown),
|
|
36
|
+
new GamepadButton(14, GamepadButton.DPadLeft),
|
|
37
|
+
new GamepadButton(15, GamepadButton.DPadRight),
|
|
38
|
+
new GamepadButton(16, GamepadButton.Guide),
|
|
39
|
+
new GamepadButton(17, GamepadButton.Share),
|
|
40
|
+
new GamepadButton(18, GamepadButton.Capture),
|
|
41
|
+
new GamepadButton(19, GamepadButton.Touchpad),
|
|
42
|
+
new GamepadButton(20, GamepadButton.Paddle1),
|
|
43
|
+
], [
|
|
44
|
+
// Direction-split (0..1).
|
|
45
|
+
new GamepadAxis(0, GamepadAxis.LeftStickLeft, { invert: true }),
|
|
46
|
+
new GamepadAxis(0, GamepadAxis.LeftStickRight),
|
|
47
|
+
new GamepadAxis(1, GamepadAxis.LeftStickUp, { invert: true }),
|
|
48
|
+
new GamepadAxis(1, GamepadAxis.LeftStickDown),
|
|
49
|
+
new GamepadAxis(2, GamepadAxis.RightStickLeft, { invert: true }),
|
|
50
|
+
new GamepadAxis(2, GamepadAxis.RightStickRight),
|
|
51
|
+
new GamepadAxis(3, GamepadAxis.RightStickUp, { invert: true }),
|
|
52
|
+
new GamepadAxis(3, GamepadAxis.RightStickDown),
|
|
53
|
+
// Aggregate signed channels (-1..1).
|
|
54
|
+
new GamepadAxis(0, GamepadAxis.LeftStickX, { bipolar: true }),
|
|
55
|
+
new GamepadAxis(1, GamepadAxis.LeftStickY, { bipolar: true }),
|
|
56
|
+
new GamepadAxis(2, GamepadAxis.RightStickX, { bipolar: true }),
|
|
57
|
+
new GamepadAxis(3, GamepadAxis.RightStickY, { bipolar: true }),
|
|
58
|
+
// Auxiliary axes (4 bipolar physical axes split into 8 half-channels).
|
|
59
|
+
new GamepadAxis(4, GamepadAxis.AuxiliaryAxis0Negative, { invert: true }),
|
|
60
|
+
new GamepadAxis(4, GamepadAxis.AuxiliaryAxis0Positive),
|
|
61
|
+
new GamepadAxis(5, GamepadAxis.AuxiliaryAxis1Negative, { invert: true }),
|
|
62
|
+
new GamepadAxis(5, GamepadAxis.AuxiliaryAxis1Positive),
|
|
63
|
+
new GamepadAxis(6, GamepadAxis.AuxiliaryAxis2Negative, { invert: true }),
|
|
64
|
+
new GamepadAxis(6, GamepadAxis.AuxiliaryAxis2Positive),
|
|
65
|
+
new GamepadAxis(7, GamepadAxis.AuxiliaryAxis3Negative, { invert: true }),
|
|
66
|
+
new GamepadAxis(7, GamepadAxis.AuxiliaryAxis3Positive),
|
|
67
|
+
]);
|
|
49
68
|
}
|
|
50
69
|
}
|
|
51
70
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"GenericDualAnalogGamepadMapping.js","sources":["../../../../src/input/GenericDualAnalogGamepadMapping.ts"],"sourcesContent":[null],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"GenericDualAnalogGamepadMapping.js","sources":["../../../../src/input/GenericDualAnalogGamepadMapping.ts"],"sourcesContent":[null],"names":[],"mappings":"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"}
|
|
@@ -2,8 +2,17 @@ import { Vector } from '@/math/Vector';
|
|
|
2
2
|
import type { Signal } from '@/core/Signal';
|
|
3
3
|
import type { Pointer } from './Pointer';
|
|
4
4
|
/**
|
|
5
|
-
* Internal gesture recognizer
|
|
6
|
-
*
|
|
5
|
+
* Internal multi-touch gesture recognizer used by {@link InputManager}.
|
|
6
|
+
* Tracks active touch pointers, derives pinch/rotate deltas from the two
|
|
7
|
+
* primary touches, and fires long-press signals when a single pointer is
|
|
8
|
+
* held still for {@link longPressMs} (500 ms). Long-press cancels if the
|
|
9
|
+
* pointer moves beyond `distanceThreshold` pixels from the down position.
|
|
10
|
+
*
|
|
11
|
+
* The associated Signals (`onPinch`, `onRotate`, `onLongPress`) are owned
|
|
12
|
+
* by {@link InputManager} and re-exposed there as part of the public API;
|
|
13
|
+
* the recognizer just dispatches into them.
|
|
14
|
+
*
|
|
15
|
+
* @internal
|
|
7
16
|
*/
|
|
8
17
|
export declare class GestureRecognizer {
|
|
9
18
|
readonly onPinch: Signal<[scale: number, center: Vector]>;
|
|
@@ -3,8 +3,17 @@ import { Vector } from '../math/Vector.js';
|
|
|
3
3
|
/** Long-press threshold in milliseconds. */
|
|
4
4
|
const longPressMs = 500;
|
|
5
5
|
/**
|
|
6
|
-
* Internal gesture recognizer
|
|
7
|
-
*
|
|
6
|
+
* Internal multi-touch gesture recognizer used by {@link InputManager}.
|
|
7
|
+
* Tracks active touch pointers, derives pinch/rotate deltas from the two
|
|
8
|
+
* primary touches, and fires long-press signals when a single pointer is
|
|
9
|
+
* held still for {@link longPressMs} (500 ms). Long-press cancels if the
|
|
10
|
+
* pointer moves beyond `distanceThreshold` pixels from the down position.
|
|
11
|
+
*
|
|
12
|
+
* The associated Signals (`onPinch`, `onRotate`, `onLongPress`) are owned
|
|
13
|
+
* by {@link InputManager} and re-exposed there as part of the public API;
|
|
14
|
+
* the recognizer just dispatches into them.
|
|
15
|
+
*
|
|
16
|
+
* @internal
|
|
8
17
|
*/
|
|
9
18
|
class GestureRecognizer {
|
|
10
19
|
onPinch;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"GestureRecognizer.js","sources":["../../../../src/input/GestureRecognizer.ts"],"sourcesContent":[null],"names":[],"mappings":";;AAKA;AACA,MAAM,WAAW,GAAG,GAAG;AAUvB
|
|
1
|
+
{"version":3,"file":"GestureRecognizer.js","sources":["../../../../src/input/GestureRecognizer.ts"],"sourcesContent":[null],"names":[],"mappings":";;AAKA;AACA,MAAM,WAAW,GAAG,GAAG;AAUvB;;;;;;;;;;;;AAYG;MACU,iBAAiB,CAAA;AACV,IAAA,OAAO;AACP,IAAA,QAAQ;AACR,IAAA,WAAW;AAEV,IAAA,iBAAiB;;AAGjB,IAAA,aAAa,GAAyB,IAAI,GAAG,EAAE;;AAG/C,IAAA,gBAAgB,GAAgC,IAAI,GAAG,EAAE;;IAGlE,YAAY,GAAG,EAAE;IACjB,SAAS,GAAG,CAAC;;AAGJ,IAAA,SAAS,GAAG,IAAI,MAAM,EAAE;AAEzC,IAAA,WAAA,CACI,iBAAyB,EACzB,OAAgD,EAChD,QAAsD,EACtD,WAAuC,EAAA;AAEvC,QAAA,IAAI,CAAC,iBAAiB,GAAG,iBAAiB;AAC1C,QAAA,IAAI,CAAC,OAAO,GAAG,OAAO;AACtB,QAAA,IAAI,CAAC,QAAQ,GAAG,QAAQ;AACxB,QAAA,IAAI,CAAC,WAAW,GAAG,WAAW;IAClC;AAEO,IAAA,aAAa,CAAC,OAAgB,EAAA;AACjC,QAAA,IAAI,OAAO,CAAC,IAAI,KAAK,OAAO,EAAE;YAC1B,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,EAAE,OAAO,CAAC;YAC3C,IAAI,CAAC,sBAAsB,EAAE;QACjC;;AAGA,QAAA,MAAM,OAAO,GAAG,UAAU,CAAC,MAAK;YAC5B,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC;AACxC,YAAA,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,OAAO,CAAC;QACtC,CAAC,EAAE,WAAW,CAAC;QAEf,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,EAAE;YAClC,SAAS,EAAE,OAAO,CAAC,EAAE;YACrB,OAAO;YACP,OAAO;YACP,MAAM,EAAE,OAAO,CAAC,CAAC;YACjB,MAAM,EAAE,OAAO,CAAC,CAAC;AACpB,SAAA,CAAC;IACN;IAEO,aAAa,CAAC,OAAgB,EAAE,iBAAyB,EAAA;;AAE5D,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC;QAEnD,IAAI,KAAK,EAAE;YACP,MAAM,EAAE,GAAG,OAAO,CAAC,CAAC,GAAG,KAAK,CAAC,MAAM;YACnC,MAAM,EAAE,GAAG,OAAO,CAAC,CAAC,GAAG,KAAK,CAAC,MAAM;AAEnC,YAAA,IAAI,IAAI,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,GAAG,iBAAiB,EAAE;AAClD,gBAAA,YAAY,CAAC,KAAK,CAAC,OAAO,CAAC;gBAC3B,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC;YAC5C;QACJ;AAEA,QAAA,IAAI,OAAO,CAAC,IAAI,KAAK,OAAO,EAAE;YAC1B;QACJ;;;QAIA,IAAI,IAAI,CAAC,aAAa,CAAC,IAAI,GAAG,CAAC,EAAE;YAC7B;QACJ;QAEA,IAAI,CAAC,wBAAwB,EAAE;IACnC;AAEO,IAAA,WAAW,CAAC,OAAgB,EAAA;AAC/B,QAAA,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,EAAE,CAAC;IACrC;AAEO,IAAA,cAAc,CAAC,OAAgB,EAAA;AAClC,QAAA,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,EAAE,CAAC;AAEjC,QAAA,IAAI,OAAO,CAAC,IAAI,KAAK,OAAO,EAAE;YAC1B,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC;YACrC,IAAI,CAAC,sBAAsB,EAAE;QACjC;IACJ;AAEO,IAAA,eAAe,CAAC,OAAgB,EAAA;AACnC,QAAA,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,EAAE,CAAC;AAEjC,QAAA,IAAI,OAAO,CAAC,IAAI,KAAK,OAAO,EAAE;YAC1B,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC;YACrC,IAAI,CAAC,sBAAsB,EAAE;QACjC;IACJ;IAEO,OAAO,GAAA;QACV,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,gBAAgB,CAAC,MAAM,EAAE,EAAE;AAChD,YAAA,YAAY,CAAC,KAAK,CAAC,OAAO,CAAC;QAC/B;AAEA,QAAA,IAAI,CAAC,gBAAgB,CAAC,KAAK,EAAE;AAC7B,QAAA,IAAI,CAAC,aAAa,CAAC,KAAK,EAAE;AAC1B,QAAA,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE;IAC5B;AAEQ,IAAA,gBAAgB,CAAC,SAAiB,EAAA;QACtC,MAAM,KAAK,GAAG,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,SAAS,CAAC;QAElD,IAAI,KAAK,EAAE;AACP,YAAA,YAAY,CAAC,KAAK,CAAC,OAAO,CAAC;AAC3B,YAAA,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,SAAS,CAAC;QAC3C;IACJ;IAEQ,sBAAsB,GAAA;AAC1B,QAAA,IAAI,CAAC,YAAY,GAAG,EAAE;AACtB,QAAA,IAAI,CAAC,SAAS,GAAG,CAAC;IACtB;IAEQ,wBAAwB,GAAA;QAC5B,MAAM,IAAI,GAAG,IAAI,CAAC,aAAa,CAAC,MAAM,EAAE;QACxC,MAAM,EAAE,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC,KAAgB;QACvC,MAAM,EAAE,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC,KAAgB;QAEvC,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC;QACtB,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC;AACtB,QAAA,MAAM,eAAe,GAAG,IAAI,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC;QACpD,MAAM,YAAY,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,EAAE,EAAE,CAAC;AAEvC,QAAA,MAAM,OAAO,GAAG,CAAC,EAAE,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,IAAI,CAAC;AACjC,QAAA,MAAM,OAAO,GAAG,CAAC,EAAE,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,IAAI,CAAC;QAEjC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,OAAO,EAAE,OAAO,CAAC;AAEpC,QAAA,IAAI,IAAI,CAAC,YAAY,GAAG,CAAC,EAAE;AACvB,YAAA,MAAM,KAAK,GAAG,eAAe,GAAG,IAAI,CAAC,YAAY;;YAGjD,IAAI,IAAI,CAAC,GAAG,CAAC,KAAK,GAAG,CAAC,CAAC,GAAG,MAAM,EAAE;gBAC9B,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,KAAK,EAAE,IAAI,CAAC,SAAS,CAAC;YAChD;AAEA,YAAA,MAAM,UAAU,GAAG,YAAY,GAAG,IAAI,CAAC,SAAS;YAEhD,IAAI,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,GAAG,MAAM,EAAE;gBAC/B,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,UAAU,EAAE,IAAI,CAAC,SAAS,CAAC;YACtD;QACJ;AAEA,QAAA,IAAI,CAAC,YAAY,GAAG,eAAe;AACnC,QAAA,IAAI,CAAC,SAAS,GAAG,YAAY;IACjC;AACH;;;;"}
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
import { Signal } from '@/core/Signal';
|
|
2
|
+
import type { Keyboard } from '@/input/types';
|
|
3
|
+
import type { GamepadButtonChannel } from './GamepadButton';
|
|
4
|
+
import type { GamepadAxisChannel } from './GamepadAxis';
|
|
5
|
+
/** Channel a single {@link InputBinding} can subscribe to. */
|
|
6
|
+
export type InputChannel = GamepadButtonChannel | GamepadAxisChannel | Keyboard;
|
|
7
|
+
/** Construction options shared by every binding factory method. */
|
|
8
|
+
export interface InputBindingOptions {
|
|
9
|
+
/**
|
|
10
|
+
* Tap-window for {@link InputBinding.onTrigger} in milliseconds. The
|
|
11
|
+
* trigger fires when the input is released within this window after
|
|
12
|
+
* activation. Defaults to {@link InputBinding.defaultTriggerThreshold}
|
|
13
|
+
* (300 ms).
|
|
14
|
+
*/
|
|
15
|
+
threshold?: number;
|
|
16
|
+
/**
|
|
17
|
+
* Pin this binding to a specific gamepad slot (0..3). Channel offsets
|
|
18
|
+
* are resolved at construction time. When unset, gamepad channels read
|
|
19
|
+
* from slot 0 (the primary pad).
|
|
20
|
+
*/
|
|
21
|
+
gamepadSlot?: 0 | 1 | 2 | 3;
|
|
22
|
+
}
|
|
23
|
+
interface InternalChannelDetacher {
|
|
24
|
+
detach(binding: InputBinding): void;
|
|
25
|
+
}
|
|
26
|
+
/**
|
|
27
|
+
* One subscription to one or more input channels. Tracks active state, fires
|
|
28
|
+
* the {@link onStart} / {@link onActive} / {@link onStop} / {@link onTrigger}
|
|
29
|
+
* Signals each frame, and registers itself with whichever owner created it
|
|
30
|
+
* (typically an {@link InputManager}, {@link Gamepad}, or scene-bound
|
|
31
|
+
* proxy).
|
|
32
|
+
*
|
|
33
|
+
* Construct via the owner's `onStart` / `onActive` / `onStop` /
|
|
34
|
+
* `onTrigger` factory methods rather than `new InputBinding(...)` directly.
|
|
35
|
+
*
|
|
36
|
+
* Lifecycle: a binding lives until {@link unbind} is called, the owner
|
|
37
|
+
* disposes it, or — for scene-bound bindings — the scene unloads.
|
|
38
|
+
*
|
|
39
|
+
* @internal
|
|
40
|
+
*/
|
|
41
|
+
export declare class InputBinding {
|
|
42
|
+
/**
|
|
43
|
+
* Default tap-window for `onTrigger`. Override per binding via the
|
|
44
|
+
* `threshold` option. Mutating this static affects only newly created
|
|
45
|
+
* bindings.
|
|
46
|
+
*/
|
|
47
|
+
static defaultTriggerThreshold: number;
|
|
48
|
+
readonly channels: ReadonlyArray<number>;
|
|
49
|
+
readonly onStart: Signal<[number]>;
|
|
50
|
+
readonly onActive: Signal<[number]>;
|
|
51
|
+
readonly onStop: Signal<[number]>;
|
|
52
|
+
readonly onTrigger: Signal<[number]>;
|
|
53
|
+
private readonly _triggerTimer;
|
|
54
|
+
private readonly _detacher;
|
|
55
|
+
private _value;
|
|
56
|
+
private _unbound;
|
|
57
|
+
constructor(channels: ReadonlyArray<number>, options?: InputBindingOptions, detacher?: InternalChannelDetacher | null);
|
|
58
|
+
/** Last value sampled this frame. 0 when inactive. */
|
|
59
|
+
get value(): number;
|
|
60
|
+
/** `true` when the last sampled value exceeded the channel's threshold. */
|
|
61
|
+
get active(): boolean;
|
|
62
|
+
/**
|
|
63
|
+
* Read the latest values from the unified channel buffer and dispatch
|
|
64
|
+
* the appropriate Signals. Called once per frame by the owning manager.
|
|
65
|
+
*
|
|
66
|
+
* @internal
|
|
67
|
+
*/
|
|
68
|
+
update(channels: Float32Array): void;
|
|
69
|
+
/**
|
|
70
|
+
* Detach this binding from its owner and release its Signals. Idempotent.
|
|
71
|
+
*/
|
|
72
|
+
unbind(): void;
|
|
73
|
+
}
|
|
74
|
+
export {};
|
|
@@ -0,0 +1,100 @@
|
|
|
1
|
+
import { Signal } from '../core/Signal.js';
|
|
2
|
+
import { Timer } from '../core/Timer.js';
|
|
3
|
+
import { milliseconds } from '../core/utils.js';
|
|
4
|
+
|
|
5
|
+
/**
|
|
6
|
+
* One subscription to one or more input channels. Tracks active state, fires
|
|
7
|
+
* the {@link onStart} / {@link onActive} / {@link onStop} / {@link onTrigger}
|
|
8
|
+
* Signals each frame, and registers itself with whichever owner created it
|
|
9
|
+
* (typically an {@link InputManager}, {@link Gamepad}, or scene-bound
|
|
10
|
+
* proxy).
|
|
11
|
+
*
|
|
12
|
+
* Construct via the owner's `onStart` / `onActive` / `onStop` /
|
|
13
|
+
* `onTrigger` factory methods rather than `new InputBinding(...)` directly.
|
|
14
|
+
*
|
|
15
|
+
* Lifecycle: a binding lives until {@link unbind} is called, the owner
|
|
16
|
+
* disposes it, or — for scene-bound bindings — the scene unloads.
|
|
17
|
+
*
|
|
18
|
+
* @internal
|
|
19
|
+
*/
|
|
20
|
+
class InputBinding {
|
|
21
|
+
/**
|
|
22
|
+
* Default tap-window for `onTrigger`. Override per binding via the
|
|
23
|
+
* `threshold` option. Mutating this static affects only newly created
|
|
24
|
+
* bindings.
|
|
25
|
+
*/
|
|
26
|
+
static defaultTriggerThreshold = 300;
|
|
27
|
+
channels;
|
|
28
|
+
onStart = new Signal();
|
|
29
|
+
onActive = new Signal();
|
|
30
|
+
onStop = new Signal();
|
|
31
|
+
onTrigger = new Signal();
|
|
32
|
+
_triggerTimer;
|
|
33
|
+
_detacher;
|
|
34
|
+
_value = 0;
|
|
35
|
+
_unbound = false;
|
|
36
|
+
constructor(channels, options = {}, detacher = null) {
|
|
37
|
+
this.channels = channels;
|
|
38
|
+
this._triggerTimer = new Timer(milliseconds(options.threshold ?? InputBinding.defaultTriggerThreshold));
|
|
39
|
+
this._detacher = detacher;
|
|
40
|
+
}
|
|
41
|
+
/** Last value sampled this frame. 0 when inactive. */
|
|
42
|
+
get value() {
|
|
43
|
+
return this._value;
|
|
44
|
+
}
|
|
45
|
+
/** `true` when the last sampled value exceeded the channel's threshold. */
|
|
46
|
+
get active() {
|
|
47
|
+
return this._value > 0;
|
|
48
|
+
}
|
|
49
|
+
/**
|
|
50
|
+
* Read the latest values from the unified channel buffer and dispatch
|
|
51
|
+
* the appropriate Signals. Called once per frame by the owning manager.
|
|
52
|
+
*
|
|
53
|
+
* @internal
|
|
54
|
+
*/
|
|
55
|
+
update(channels) {
|
|
56
|
+
if (this._unbound) {
|
|
57
|
+
return;
|
|
58
|
+
}
|
|
59
|
+
let value = 0;
|
|
60
|
+
for (const channel of this.channels) {
|
|
61
|
+
const sample = channels[channel];
|
|
62
|
+
if (Math.abs(sample) > Math.abs(value)) {
|
|
63
|
+
value = sample;
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
this._value = value;
|
|
67
|
+
if (value !== 0) {
|
|
68
|
+
if (!this._triggerTimer.running) {
|
|
69
|
+
this._triggerTimer.restart();
|
|
70
|
+
this.onStart.dispatch(value);
|
|
71
|
+
}
|
|
72
|
+
this.onActive.dispatch(value);
|
|
73
|
+
}
|
|
74
|
+
else if (this._triggerTimer.running) {
|
|
75
|
+
this.onStop.dispatch(0);
|
|
76
|
+
if (!this._triggerTimer.expired) {
|
|
77
|
+
this.onTrigger.dispatch(0);
|
|
78
|
+
}
|
|
79
|
+
this._triggerTimer.stop();
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
/**
|
|
83
|
+
* Detach this binding from its owner and release its Signals. Idempotent.
|
|
84
|
+
*/
|
|
85
|
+
unbind() {
|
|
86
|
+
if (this._unbound) {
|
|
87
|
+
return;
|
|
88
|
+
}
|
|
89
|
+
this._unbound = true;
|
|
90
|
+
this._detacher?.detach(this);
|
|
91
|
+
this._triggerTimer.destroy();
|
|
92
|
+
this.onStart.destroy();
|
|
93
|
+
this.onActive.destroy();
|
|
94
|
+
this.onStop.destroy();
|
|
95
|
+
this.onTrigger.destroy();
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
|
|
99
|
+
export { InputBinding };
|
|
100
|
+
//# sourceMappingURL=InputBinding.js.map
|