@codexo/exojs 0.7.11 → 0.7.12
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +108 -0
- package/dist/esm/animation/Tween.d.ts +60 -1
- package/dist/esm/animation/Tween.js +60 -1
- package/dist/esm/animation/Tween.js.map +1 -1
- package/dist/esm/animation/TweenManager.d.ts +10 -0
- package/dist/esm/animation/TweenManager.js +10 -0
- package/dist/esm/animation/TweenManager.js.map +1 -1
- package/dist/esm/animation/types.d.ts +15 -0
- package/dist/esm/animation/types.js +6 -0
- package/dist/esm/animation/types.js.map +1 -1
- package/dist/esm/audio/AbstractMedia.d.ts +11 -0
- package/dist/esm/audio/AbstractMedia.js +10 -0
- package/dist/esm/audio/AbstractMedia.js.map +1 -1
- package/dist/esm/audio/AudioAnalyser.d.ts +21 -0
- package/dist/esm/audio/AudioAnalyser.js +16 -0
- package/dist/esm/audio/AudioAnalyser.js.map +1 -1
- package/dist/esm/audio/AudioBus.d.ts +37 -0
- package/dist/esm/audio/AudioBus.js +36 -0
- package/dist/esm/audio/AudioBus.js.map +1 -1
- package/dist/esm/audio/AudioFilter.d.ts +7 -0
- package/dist/esm/audio/AudioFilter.js +6 -0
- package/dist/esm/audio/AudioFilter.js.map +1 -1
- package/dist/esm/audio/AudioListener.d.ts +19 -0
- package/dist/esm/audio/AudioListener.js +11 -0
- package/dist/esm/audio/AudioListener.js.map +1 -1
- package/dist/esm/audio/AudioManager.d.ts +37 -0
- package/dist/esm/audio/AudioManager.js +37 -0
- package/dist/esm/audio/AudioManager.js.map +1 -1
- package/dist/esm/audio/BeatDetector.d.ts +21 -0
- package/dist/esm/audio/BeatDetector.js +21 -0
- package/dist/esm/audio/BeatDetector.js.map +1 -1
- package/dist/esm/audio/Media.d.ts +11 -0
- package/dist/esm/audio/Music.d.ts +12 -0
- package/dist/esm/audio/Music.js +12 -0
- package/dist/esm/audio/Music.js.map +1 -1
- package/dist/esm/audio/Sound.d.ts +25 -0
- package/dist/esm/audio/Sound.js +18 -0
- package/dist/esm/audio/Sound.js.map +1 -1
- package/dist/esm/audio/audio-context.d.ts +48 -0
- package/dist/esm/audio/audio-context.js +48 -5
- package/dist/esm/audio/audio-context.js.map +1 -1
- package/dist/esm/audio/filters/ChorusFilter.d.ts +5 -0
- package/dist/esm/audio/filters/ChorusFilter.js +4 -0
- package/dist/esm/audio/filters/ChorusFilter.js.map +1 -1
- package/dist/esm/audio/filters/CompressorFilter.d.ts +12 -0
- package/dist/esm/audio/filters/CompressorFilter.js +11 -0
- package/dist/esm/audio/filters/CompressorFilter.js.map +1 -1
- package/dist/esm/audio/filters/DelayFilter.d.ts +11 -0
- package/dist/esm/audio/filters/DelayFilter.js +10 -0
- package/dist/esm/audio/filters/DelayFilter.js.map +1 -1
- package/dist/esm/audio/filters/DuckingFilter.d.ts +13 -0
- package/dist/esm/audio/filters/DuckingFilter.js +12 -0
- package/dist/esm/audio/filters/DuckingFilter.js.map +1 -1
- package/dist/esm/audio/filters/EqualizerFilter.d.ts +20 -0
- package/dist/esm/audio/filters/EqualizerFilter.js +40 -0
- package/dist/esm/audio/filters/EqualizerFilter.js.map +1 -1
- package/dist/esm/audio/filters/GranularFilter.d.ts +6 -0
- package/dist/esm/audio/filters/GranularFilter.js +6 -0
- package/dist/esm/audio/filters/GranularFilter.js.map +1 -1
- package/dist/esm/audio/filters/HighpassFilter.d.ts +10 -0
- package/dist/esm/audio/filters/HighpassFilter.js +9 -0
- package/dist/esm/audio/filters/HighpassFilter.js.map +1 -1
- package/dist/esm/audio/filters/LowpassFilter.d.ts +10 -0
- package/dist/esm/audio/filters/LowpassFilter.js +9 -0
- package/dist/esm/audio/filters/LowpassFilter.js.map +1 -1
- package/dist/esm/audio/filters/PitchShiftFilter.d.ts +2 -0
- package/dist/esm/audio/filters/PitchShiftFilter.js +2 -0
- package/dist/esm/audio/filters/PitchShiftFilter.js.map +1 -1
- package/dist/esm/audio/filters/ReverbFilter.d.ts +12 -0
- package/dist/esm/audio/filters/ReverbFilter.js +11 -0
- package/dist/esm/audio/filters/ReverbFilter.js.map +1 -1
- package/dist/esm/audio/filters/VocoderFilter.d.ts +11 -0
- package/dist/esm/audio/filters/VocoderFilter.js +11 -0
- package/dist/esm/audio/filters/VocoderFilter.js.map +1 -1
- package/dist/esm/audio/filters/WorkletFilter.d.ts +6 -1
- package/dist/esm/audio/filters/WorkletFilter.js +6 -1
- package/dist/esm/audio/filters/WorkletFilter.js.map +1 -1
- package/dist/esm/core/Application.d.ts +63 -0
- package/dist/esm/core/Application.js +61 -0
- package/dist/esm/core/Application.js.map +1 -1
- package/dist/esm/core/Bounds.d.ts +23 -0
- package/dist/esm/core/Bounds.js +23 -0
- package/dist/esm/core/Bounds.js.map +1 -1
- package/dist/esm/core/Clock.d.ts +21 -0
- package/dist/esm/core/Clock.js +21 -0
- package/dist/esm/core/Clock.js.map +1 -1
- package/dist/esm/core/Color.d.ts +35 -0
- package/dist/esm/core/Color.js +35 -0
- package/dist/esm/core/Color.js.map +1 -1
- package/dist/esm/core/Scene.d.ts +46 -0
- package/dist/esm/core/Scene.js +27 -0
- package/dist/esm/core/Scene.js.map +1 -1
- package/dist/esm/core/SceneManager.d.ts +62 -0
- package/dist/esm/core/SceneManager.js +49 -0
- package/dist/esm/core/SceneManager.js.map +1 -1
- package/dist/esm/core/SceneNode.d.ts +31 -0
- package/dist/esm/core/SceneNode.js +31 -0
- package/dist/esm/core/SceneNode.js.map +1 -1
- package/dist/esm/core/Signal.d.ts +44 -0
- package/dist/esm/core/Signal.js +39 -0
- package/dist/esm/core/Signal.js.map +1 -1
- package/dist/esm/core/Time.d.ts +21 -0
- package/dist/esm/core/Time.js +21 -0
- package/dist/esm/core/Time.js.map +1 -1
- package/dist/esm/core/Timer.d.ts +7 -0
- package/dist/esm/core/Timer.js +7 -0
- package/dist/esm/core/Timer.js.map +1 -1
- package/dist/esm/core/capabilities.d.ts +12 -0
- package/dist/esm/core/capabilities.js +12 -0
- package/dist/esm/core/capabilities.js.map +1 -1
- package/dist/esm/core/types.d.ts +37 -0
- package/dist/esm/core/utils.d.ts +48 -0
- package/dist/esm/core/utils.js +48 -0
- package/dist/esm/core/utils.js.map +1 -1
- package/dist/esm/debug/BoundingBoxesLayer.d.ts +8 -0
- package/dist/esm/debug/BoundingBoxesLayer.js +8 -0
- package/dist/esm/debug/BoundingBoxesLayer.js.map +1 -1
- package/dist/esm/debug/DebugLayer.d.ts +16 -3
- package/dist/esm/debug/DebugLayer.js +11 -3
- package/dist/esm/debug/DebugLayer.js.map +1 -1
- package/dist/esm/debug/DebugOverlay.d.ts +11 -0
- package/dist/esm/debug/DebugOverlay.js +6 -0
- package/dist/esm/debug/DebugOverlay.js.map +1 -1
- package/dist/esm/debug/HitTestLayer.d.ts +9 -0
- package/dist/esm/debug/HitTestLayer.js +9 -0
- package/dist/esm/debug/HitTestLayer.js.map +1 -1
- package/dist/esm/debug/PerformanceLayer.d.ts +17 -1
- package/dist/esm/debug/PerformanceLayer.js +18 -0
- package/dist/esm/debug/PerformanceLayer.js.map +1 -1
- package/dist/esm/debug/PointerStackLayer.d.ts +8 -0
- package/dist/esm/debug/PointerStackLayer.js +10 -2
- package/dist/esm/debug/PointerStackLayer.js.map +1 -1
- package/dist/esm/index.js +2 -2
- package/dist/esm/input/ArcadeStickGamepadMapping.d.ts +7 -0
- package/dist/esm/input/ArcadeStickGamepadMapping.js +7 -0
- package/dist/esm/input/ArcadeStickGamepadMapping.js.map +1 -1
- package/dist/esm/input/GameCubeGamepadMapping.d.ts +9 -0
- package/dist/esm/input/GameCubeGamepadMapping.js +9 -0
- package/dist/esm/input/GameCubeGamepadMapping.js.map +1 -1
- package/dist/esm/input/Gamepad.d.ts +48 -0
- package/dist/esm/input/Gamepad.js +43 -0
- package/dist/esm/input/Gamepad.js.map +1 -1
- package/dist/esm/input/GamepadChannels.d.ts +8 -0
- package/dist/esm/input/GamepadChannels.js +8 -0
- package/dist/esm/input/GamepadChannels.js.map +1 -1
- package/dist/esm/input/GamepadControl.d.ts +18 -0
- package/dist/esm/input/GamepadControl.js +13 -0
- package/dist/esm/input/GamepadControl.js.map +1 -1
- package/dist/esm/input/GamepadDefinitions.d.ts +64 -1
- package/dist/esm/input/GamepadDefinitions.js +40 -1
- package/dist/esm/input/GamepadDefinitions.js.map +1 -1
- package/dist/esm/input/GamepadMapping.d.ts +32 -2
- package/dist/esm/input/GamepadMapping.js +24 -0
- package/dist/esm/input/GamepadMapping.js.map +1 -1
- package/dist/esm/input/GamepadPromptLayouts.d.ts +32 -1
- package/dist/esm/input/GamepadPromptLayouts.js +25 -1
- package/dist/esm/input/GamepadPromptLayouts.js.map +1 -1
- package/dist/esm/input/GenericDualAnalogGamepadMapping.d.ts +10 -0
- package/dist/esm/input/GenericDualAnalogGamepadMapping.js +10 -0
- package/dist/esm/input/GenericDualAnalogGamepadMapping.js.map +1 -1
- package/dist/esm/input/GestureRecognizer.d.ts +11 -2
- package/dist/esm/input/GestureRecognizer.js +11 -2
- package/dist/esm/input/GestureRecognizer.js.map +1 -1
- package/dist/esm/input/Input.d.ts +24 -0
- package/dist/esm/input/Input.js +22 -0
- package/dist/esm/input/Input.js.map +1 -1
- package/dist/esm/input/InputManager.d.ts +33 -0
- package/dist/esm/input/InputManager.js +33 -0
- package/dist/esm/input/InputManager.js.map +1 -1
- package/dist/esm/input/InteractionEvent.d.ts +13 -0
- package/dist/esm/input/InteractionEvent.js +8 -0
- package/dist/esm/input/InteractionEvent.js.map +1 -1
- package/dist/esm/input/InteractionManager.d.ts +33 -4
- package/dist/esm/input/InteractionManager.js +33 -4
- package/dist/esm/input/InteractionManager.js.map +1 -1
- package/dist/esm/input/JoyConLeftGamepadMapping.d.ts +9 -0
- package/dist/esm/input/JoyConLeftGamepadMapping.js +9 -0
- package/dist/esm/input/JoyConLeftGamepadMapping.js.map +1 -1
- package/dist/esm/input/JoyConRightGamepadMapping.d.ts +9 -0
- package/dist/esm/input/JoyConRightGamepadMapping.js +9 -0
- package/dist/esm/input/JoyConRightGamepadMapping.js.map +1 -1
- package/dist/esm/input/PlayStationGamepadMapping.d.ts +8 -0
- package/dist/esm/input/PlayStationGamepadMapping.js +8 -0
- package/dist/esm/input/PlayStationGamepadMapping.js.map +1 -1
- package/dist/esm/input/Pointer.d.ts +22 -0
- package/dist/esm/input/Pointer.js +22 -0
- package/dist/esm/input/Pointer.js.map +1 -1
- package/dist/esm/input/SteamControllerGamepadMapping.d.ts +8 -0
- package/dist/esm/input/SteamControllerGamepadMapping.js +8 -0
- package/dist/esm/input/SteamControllerGamepadMapping.js.map +1 -1
- package/dist/esm/input/SwitchProGamepadMapping.d.ts +9 -0
- package/dist/esm/input/SwitchProGamepadMapping.js +9 -0
- package/dist/esm/input/SwitchProGamepadMapping.js.map +1 -1
- package/dist/esm/input/XboxGamepadMapping.d.ts +8 -0
- package/dist/esm/input/XboxGamepadMapping.js +8 -0
- package/dist/esm/input/XboxGamepadMapping.js.map +1 -1
- package/dist/esm/input/types.d.ts +20 -0
- package/dist/esm/input/types.js +20 -0
- package/dist/esm/input/types.js.map +1 -1
- package/dist/esm/math/AbstractVector.d.ts +83 -0
- package/dist/esm/math/AbstractVector.js +83 -0
- package/dist/esm/math/AbstractVector.js.map +1 -1
- package/dist/esm/math/Circle.d.ts +32 -0
- package/dist/esm/math/Circle.js +34 -2
- package/dist/esm/math/Circle.js.map +1 -1
- package/dist/esm/math/CircleLike.d.ts +1 -0
- package/dist/esm/math/Collision.d.ts +39 -0
- package/dist/esm/math/Collision.js +5 -0
- package/dist/esm/math/Collision.js.map +1 -1
- package/dist/esm/math/Ellipse.d.ts +11 -0
- package/dist/esm/math/Ellipse.js +18 -2
- package/dist/esm/math/Ellipse.js.map +1 -1
- package/dist/esm/math/EllipseLike.d.ts +3 -0
- package/dist/esm/math/Flags.d.ts +31 -0
- package/dist/esm/math/Flags.js +31 -0
- package/dist/esm/math/Flags.js.map +1 -1
- package/dist/esm/math/Interval.d.ts +15 -0
- package/dist/esm/math/Interval.js +15 -0
- package/dist/esm/math/Interval.js.map +1 -1
- package/dist/esm/math/Line.d.ts +17 -1
- package/dist/esm/math/Line.js +17 -1
- package/dist/esm/math/Line.js.map +1 -1
- package/dist/esm/math/LineLike.d.ts +1 -0
- package/dist/esm/math/Matrix.d.ts +44 -3
- package/dist/esm/math/Matrix.js +44 -3
- package/dist/esm/math/Matrix.js.map +1 -1
- package/dist/esm/math/ObservableSize.d.ts +7 -0
- package/dist/esm/math/ObservableSize.js +7 -0
- package/dist/esm/math/ObservableSize.js.map +1 -1
- package/dist/esm/math/ObservableVector.d.ts +9 -0
- package/dist/esm/math/ObservableVector.js +9 -0
- package/dist/esm/math/ObservableVector.js.map +1 -1
- package/dist/esm/math/PointLike.d.ts +1 -0
- package/dist/esm/math/PolarVector.d.ts +15 -0
- package/dist/esm/math/PolarVector.js +16 -1
- package/dist/esm/math/PolarVector.js.map +1 -1
- package/dist/esm/math/Polygon.d.ts +20 -0
- package/dist/esm/math/Polygon.js +20 -0
- package/dist/esm/math/Polygon.js.map +1 -1
- package/dist/esm/math/PolygonLike.d.ts +4 -0
- package/dist/esm/math/Quadtree.d.ts +40 -3
- package/dist/esm/math/Quadtree.js +39 -3
- package/dist/esm/math/Quadtree.js.map +1 -1
- package/dist/esm/math/Random.d.ts +25 -0
- package/dist/esm/math/Random.js +25 -0
- package/dist/esm/math/Random.js.map +1 -1
- package/dist/esm/math/Rectangle.d.ts +15 -0
- package/dist/esm/math/Rectangle.js +17 -2
- package/dist/esm/math/Rectangle.js.map +1 -1
- package/dist/esm/math/RectangleLike.d.ts +1 -0
- package/dist/esm/math/Segment.d.ts +7 -0
- package/dist/esm/math/Segment.js +7 -0
- package/dist/esm/math/Segment.js.map +1 -1
- package/dist/esm/math/ShapeLike.d.ts +6 -0
- package/dist/esm/math/Size.d.ts +9 -0
- package/dist/esm/math/Size.js +9 -0
- package/dist/esm/math/Size.js.map +1 -1
- package/dist/esm/math/Vector.d.ts +16 -0
- package/dist/esm/math/Vector.js +16 -0
- package/dist/esm/math/Vector.js.map +1 -1
- package/dist/esm/math/collision-detection.d.ts +47 -1
- package/dist/esm/math/collision-detection.js +228 -17
- package/dist/esm/math/collision-detection.js.map +1 -1
- package/dist/esm/math/collision-primitives.d.ts +23 -0
- package/dist/esm/math/collision-primitives.js +23 -0
- package/dist/esm/math/collision-primitives.js.map +1 -1
- package/dist/esm/math/geometry.d.ts +42 -0
- package/dist/esm/math/geometry.js +37 -0
- package/dist/esm/math/geometry.js.map +1 -1
- package/dist/esm/math/utils.d.ts +41 -0
- package/dist/esm/math/utils.js +41 -0
- package/dist/esm/math/utils.js.map +1 -1
- package/dist/esm/particles/Particle.d.ts +37 -0
- package/dist/esm/particles/Particle.js +37 -0
- package/dist/esm/particles/Particle.js.map +1 -1
- package/dist/esm/particles/ParticleProperties.d.ts +15 -0
- package/dist/esm/particles/ParticleSystem.d.ts +69 -0
- package/dist/esm/particles/ParticleSystem.js +69 -0
- package/dist/esm/particles/ParticleSystem.js.map +1 -1
- package/dist/esm/particles/affectors/ColorAffector.d.ts +13 -0
- package/dist/esm/particles/affectors/ColorAffector.js +13 -0
- package/dist/esm/particles/affectors/ColorAffector.js.map +1 -1
- package/dist/esm/particles/affectors/ForceAffector.d.ts +11 -0
- package/dist/esm/particles/affectors/ForceAffector.js +11 -0
- package/dist/esm/particles/affectors/ForceAffector.js.map +1 -1
- package/dist/esm/particles/affectors/ParticleAffector.d.ts +13 -0
- package/dist/esm/particles/affectors/ScaleAffector.d.ts +10 -0
- package/dist/esm/particles/affectors/ScaleAffector.js +10 -0
- package/dist/esm/particles/affectors/ScaleAffector.js.map +1 -1
- package/dist/esm/particles/affectors/TorqueAffector.d.ts +11 -0
- package/dist/esm/particles/affectors/TorqueAffector.js +11 -0
- package/dist/esm/particles/affectors/TorqueAffector.js.map +1 -1
- package/dist/esm/particles/emitters/ParticleEmitter.d.ts +13 -0
- package/dist/esm/particles/emitters/ParticleOptions.d.ts +16 -0
- package/dist/esm/particles/emitters/ParticleOptions.js +16 -0
- package/dist/esm/particles/emitters/ParticleOptions.js.map +1 -1
- package/dist/esm/particles/emitters/UniversalEmitter.d.ts +23 -0
- package/dist/esm/particles/emitters/UniversalEmitter.js +23 -0
- package/dist/esm/particles/emitters/UniversalEmitter.js.map +1 -1
- package/dist/esm/rendering/CallbackRenderPass.d.ts +12 -0
- package/dist/esm/rendering/CallbackRenderPass.js +12 -0
- package/dist/esm/rendering/CallbackRenderPass.js.map +1 -1
- package/dist/esm/rendering/Container.d.ts +43 -0
- package/dist/esm/rendering/Container.js +43 -0
- package/dist/esm/rendering/Container.js.map +1 -1
- package/dist/esm/rendering/Drawable.d.ts +22 -0
- package/dist/esm/rendering/Drawable.js +22 -0
- package/dist/esm/rendering/Drawable.js.map +1 -1
- package/dist/esm/rendering/RenderBackend.d.ts +13 -0
- package/dist/esm/rendering/RenderBackendType.d.ts +4 -0
- package/dist/esm/rendering/RenderBackendType.js +4 -0
- package/dist/esm/rendering/RenderBackendType.js.map +1 -1
- package/dist/esm/rendering/RenderNode.d.ts +18 -0
- package/dist/esm/rendering/RenderNode.js +18 -0
- package/dist/esm/rendering/RenderNode.js.map +1 -1
- package/dist/esm/rendering/RenderPass.d.ts +8 -0
- package/dist/esm/rendering/RenderStats.d.ts +19 -0
- package/dist/esm/rendering/RenderStats.js +7 -0
- package/dist/esm/rendering/RenderStats.js.map +1 -1
- package/dist/esm/rendering/RenderTarget.d.ts +17 -0
- package/dist/esm/rendering/RenderTarget.js +17 -0
- package/dist/esm/rendering/RenderTarget.js.map +1 -1
- package/dist/esm/rendering/RenderTargetPass.d.ts +11 -0
- package/dist/esm/rendering/RenderTargetPass.js +7 -0
- package/dist/esm/rendering/RenderTargetPass.js.map +1 -1
- package/dist/esm/rendering/Renderer.d.ts +15 -0
- package/dist/esm/rendering/RendererRegistry.d.ts +7 -0
- package/dist/esm/rendering/RendererRegistry.js +7 -0
- package/dist/esm/rendering/RendererRegistry.js.map +1 -1
- package/dist/esm/rendering/View.d.ts +67 -2
- package/dist/esm/rendering/View.js +57 -0
- package/dist/esm/rendering/View.js.map +1 -1
- package/dist/esm/rendering/filters/BlurFilter.d.ts +9 -0
- package/dist/esm/rendering/filters/BlurFilter.js +8 -0
- package/dist/esm/rendering/filters/BlurFilter.js.map +1 -1
- package/dist/esm/rendering/filters/ColorFilter.d.ts +7 -0
- package/dist/esm/rendering/filters/ColorFilter.js +7 -0
- package/dist/esm/rendering/filters/ColorFilter.js.map +1 -1
- package/dist/esm/rendering/filters/Filter.d.ts +23 -0
- package/dist/esm/rendering/filters/Filter.js +20 -0
- package/dist/esm/rendering/filters/Filter.js.map +1 -1
- package/dist/esm/rendering/filters/WebGl2ShaderFilter.d.ts +5 -0
- package/dist/esm/rendering/filters/WebGl2ShaderFilter.js +5 -0
- package/dist/esm/rendering/filters/WebGl2ShaderFilter.js.map +1 -1
- package/dist/esm/rendering/filters/WebGpuShaderFilter.d.ts +5 -0
- package/dist/esm/rendering/filters/WebGpuShaderFilter.js +5 -0
- package/dist/esm/rendering/filters/WebGpuShaderFilter.js.map +1 -1
- package/dist/esm/rendering/mesh/Mesh.d.ts +2 -0
- package/dist/esm/rendering/mesh/Mesh.js +2 -0
- package/dist/esm/rendering/mesh/Mesh.js.map +1 -1
- package/dist/esm/rendering/primitives/Graphics.d.ts +34 -0
- package/dist/esm/rendering/primitives/Graphics.js +34 -0
- package/dist/esm/rendering/primitives/Graphics.js.map +1 -1
- package/dist/esm/rendering/shader/Shader.d.ts +36 -0
- package/dist/esm/rendering/shader/Shader.js +26 -0
- package/dist/esm/rendering/shader/Shader.js.map +1 -1
- package/dist/esm/rendering/shader/ShaderAttribute.d.ts +13 -0
- package/dist/esm/rendering/shader/ShaderAttribute.js +13 -0
- package/dist/esm/rendering/shader/ShaderAttribute.js.map +1 -1
- package/dist/esm/rendering/shader/ShaderUniform.d.ts +27 -0
- package/dist/esm/rendering/shader/ShaderUniform.js +28 -1
- package/dist/esm/rendering/shader/ShaderUniform.js.map +1 -1
- package/dist/esm/rendering/sprite/AnimatedSprite.d.ts +38 -0
- package/dist/esm/rendering/sprite/AnimatedSprite.js +36 -0
- package/dist/esm/rendering/sprite/AnimatedSprite.js.map +1 -1
- package/dist/esm/rendering/sprite/Sprite.d.ts +56 -0
- package/dist/esm/rendering/sprite/Sprite.js +56 -0
- package/dist/esm/rendering/sprite/Sprite.js.map +1 -1
- package/dist/esm/rendering/sprite/Spritesheet.d.ts +25 -0
- package/dist/esm/rendering/sprite/Spritesheet.js +20 -0
- package/dist/esm/rendering/sprite/Spritesheet.js.map +1 -1
- package/dist/esm/rendering/text/Text.d.ts +2 -0
- package/dist/esm/rendering/text/Text.js +2 -0
- package/dist/esm/rendering/text/Text.js.map +1 -1
- package/dist/esm/rendering/text/TextStyle.d.ts +29 -0
- package/dist/esm/rendering/text/TextStyle.js +24 -0
- package/dist/esm/rendering/text/TextStyle.js.map +1 -1
- package/dist/esm/rendering/text/types.d.ts +1 -0
- package/dist/esm/rendering/texture/RenderTexture.d.ts +16 -0
- package/dist/esm/rendering/texture/RenderTexture.js +16 -0
- package/dist/esm/rendering/texture/RenderTexture.js.map +1 -1
- package/dist/esm/rendering/texture/Sampler.d.ts +23 -0
- package/dist/esm/rendering/texture/Sampler.js +13 -0
- package/dist/esm/rendering/texture/Sampler.js.map +1 -1
- package/dist/esm/rendering/texture/Texture.d.ts +30 -0
- package/dist/esm/rendering/texture/Texture.js +30 -0
- package/dist/esm/rendering/texture/Texture.js.map +1 -1
- package/dist/esm/rendering/types.d.ts +29 -0
- package/dist/esm/rendering/types.js +29 -0
- package/dist/esm/rendering/types.js.map +1 -1
- package/dist/esm/rendering/utils.d.ts +20 -0
- package/dist/esm/rendering/utils.js +10 -0
- package/dist/esm/rendering/utils.js.map +1 -1
- package/dist/esm/rendering/video/Video.d.ts +35 -1
- package/dist/esm/rendering/video/Video.js +36 -2
- package/dist/esm/rendering/video/Video.js.map +1 -1
- package/dist/esm/rendering/webgl2/AbstractWebGl2BatchedRenderer.d.ts +7 -0
- package/dist/esm/rendering/webgl2/AbstractWebGl2BatchedRenderer.js +7 -0
- package/dist/esm/rendering/webgl2/AbstractWebGl2BatchedRenderer.js.map +1 -1
- package/dist/esm/rendering/webgl2/WebGl2Backend.d.ts +13 -0
- package/dist/esm/rendering/webgl2/WebGl2Backend.js +13 -0
- package/dist/esm/rendering/webgl2/WebGl2Backend.js.map +1 -1
- package/dist/esm/rendering/webgl2/WebGl2RenderBuffer.d.ts +8 -0
- package/dist/esm/rendering/webgl2/WebGl2RenderBuffer.js +8 -0
- package/dist/esm/rendering/webgl2/WebGl2RenderBuffer.js.map +1 -1
- package/dist/esm/rendering/webgpu/WebGpuBackend.d.ts +35 -0
- package/dist/esm/rendering/webgpu/WebGpuBackend.js +135 -5
- package/dist/esm/rendering/webgpu/WebGpuBackend.js.map +1 -1
- package/dist/esm/resources/AbstractAssetFactory.d.ts +20 -0
- package/dist/esm/resources/AbstractAssetFactory.js +20 -0
- package/dist/esm/resources/AbstractAssetFactory.js.map +1 -1
- package/dist/esm/resources/AssetFactory.d.ts +26 -0
- package/dist/esm/resources/AssetManifest.d.ts +45 -0
- package/dist/esm/resources/AssetManifest.js +25 -0
- package/dist/esm/resources/AssetManifest.js.map +1 -1
- package/dist/esm/resources/CacheFirstStrategy.d.ts +12 -0
- package/dist/esm/resources/CacheFirstStrategy.js +12 -0
- package/dist/esm/resources/CacheFirstStrategy.js.map +1 -1
- package/dist/esm/resources/CacheStore.d.ts +23 -0
- package/dist/esm/resources/CacheStrategy.d.ts +20 -0
- package/dist/esm/resources/Database.d.ts +45 -0
- package/dist/esm/resources/FactoryRegistry.d.ts +28 -0
- package/dist/esm/resources/FactoryRegistry.js +24 -0
- package/dist/esm/resources/FactoryRegistry.js.map +1 -1
- package/dist/esm/resources/IndexedDbDatabase.d.ts +22 -1
- package/dist/esm/resources/IndexedDbDatabase.js +21 -0
- package/dist/esm/resources/IndexedDbDatabase.js.map +1 -1
- package/dist/esm/resources/IndexedDbStore.d.ts +20 -0
- package/dist/esm/resources/IndexedDbStore.js +12 -0
- package/dist/esm/resources/IndexedDbStore.js.map +1 -1
- package/dist/esm/resources/Loader.d.ts +167 -0
- package/dist/esm/resources/Loader.js +110 -0
- package/dist/esm/resources/Loader.js.map +1 -1
- package/dist/esm/resources/NetworkOnlyStrategy.d.ts +8 -0
- package/dist/esm/resources/NetworkOnlyStrategy.js +8 -0
- package/dist/esm/resources/NetworkOnlyStrategy.js.map +1 -1
- package/dist/esm/resources/factories/BinaryFactory.d.ts +13 -0
- package/dist/esm/resources/factories/BinaryFactory.js +13 -0
- package/dist/esm/resources/factories/BinaryFactory.js.map +1 -1
- package/dist/esm/resources/factories/FontFactory.d.ts +37 -0
- package/dist/esm/resources/factories/FontFactory.js +26 -0
- package/dist/esm/resources/factories/FontFactory.js.map +1 -1
- package/dist/esm/resources/factories/ImageFactory.d.ts +24 -0
- package/dist/esm/resources/factories/ImageFactory.js +19 -0
- package/dist/esm/resources/factories/ImageFactory.js.map +1 -1
- package/dist/esm/resources/factories/JsonFactory.d.ts +13 -0
- package/dist/esm/resources/factories/JsonFactory.js +13 -0
- package/dist/esm/resources/factories/JsonFactory.js.map +1 -1
- package/dist/esm/resources/factories/MusicFactory.d.ts +36 -0
- package/dist/esm/resources/factories/MusicFactory.js +44 -4
- package/dist/esm/resources/factories/MusicFactory.js.map +1 -1
- package/dist/esm/resources/factories/SoundFactory.d.ts +29 -0
- package/dist/esm/resources/factories/SoundFactory.js +18 -0
- package/dist/esm/resources/factories/SoundFactory.js.map +1 -1
- package/dist/esm/resources/factories/SvgFactory.d.ts +19 -0
- package/dist/esm/resources/factories/SvgFactory.js +19 -0
- package/dist/esm/resources/factories/SvgFactory.js.map +1 -1
- package/dist/esm/resources/factories/TextFactory.d.ts +11 -0
- package/dist/esm/resources/factories/TextFactory.js +11 -0
- package/dist/esm/resources/factories/TextFactory.js.map +1 -1
- package/dist/esm/resources/factories/TextureFactory.d.ts +25 -0
- package/dist/esm/resources/factories/TextureFactory.js +20 -0
- package/dist/esm/resources/factories/TextureFactory.js.map +1 -1
- package/dist/esm/resources/factories/VideoFactory.d.ts +37 -0
- package/dist/esm/resources/factories/VideoFactory.js +48 -5
- package/dist/esm/resources/factories/VideoFactory.js.map +1 -1
- package/dist/esm/resources/factories/VttFactory.d.ts +18 -0
- package/dist/esm/resources/factories/VttFactory.js +24 -0
- package/dist/esm/resources/factories/VttFactory.js.map +1 -1
- package/dist/esm/resources/factories/WasmFactory.d.ts +16 -0
- package/dist/esm/resources/factories/WasmFactory.js +16 -0
- package/dist/esm/resources/factories/WasmFactory.js.map +1 -1
- package/dist/esm/resources/utils.d.ts +10 -0
- package/dist/esm/resources/utils.js +10 -0
- package/dist/esm/resources/utils.js.map +1 -1
- package/dist/exo.esm.js +3392 -59
- package/dist/exo.esm.js.map +1 -1
- package/package.json +7 -8
|
@@ -1,8 +1,23 @@
|
|
|
1
1
|
import { Vector } from '@/math/Vector';
|
|
2
|
+
/**
|
|
3
|
+
* A 2D vector expressed in polar coordinates: `radius` (magnitude) and `phi`
|
|
4
|
+
* (angle in radians, measured from the positive X-axis).
|
|
5
|
+
*/
|
|
2
6
|
export declare class PolarVector {
|
|
3
7
|
radius: number;
|
|
8
|
+
/** Angle in radians, measured from the positive X-axis. */
|
|
4
9
|
phi: number;
|
|
5
10
|
constructor(radius?: number, angle?: number);
|
|
11
|
+
/**
|
|
12
|
+
* Create a `PolarVector` from a Cartesian `vector`, preserving both
|
|
13
|
+
* magnitude and direction. The roundtrip
|
|
14
|
+
* `PolarVector.fromVector(v).toVector()` reproduces `v` (modulo float
|
|
15
|
+
* precision).
|
|
16
|
+
*/
|
|
6
17
|
static fromVector(vector: Vector): PolarVector;
|
|
18
|
+
/**
|
|
19
|
+
* Convert to a Cartesian {@link Vector}. Returns `Vector.temp` — do not
|
|
20
|
+
* store the reference across calls.
|
|
21
|
+
*/
|
|
7
22
|
toVector(): Vector;
|
|
8
23
|
}
|
|
@@ -1,15 +1,30 @@
|
|
|
1
1
|
import { Vector } from './Vector.js';
|
|
2
2
|
|
|
3
|
+
/**
|
|
4
|
+
* A 2D vector expressed in polar coordinates: `radius` (magnitude) and `phi`
|
|
5
|
+
* (angle in radians, measured from the positive X-axis).
|
|
6
|
+
*/
|
|
3
7
|
class PolarVector {
|
|
4
8
|
radius;
|
|
9
|
+
/** Angle in radians, measured from the positive X-axis. */
|
|
5
10
|
phi;
|
|
6
11
|
constructor(radius = 0, angle = 0) {
|
|
7
12
|
this.radius = radius;
|
|
8
13
|
this.phi = angle;
|
|
9
14
|
}
|
|
15
|
+
/**
|
|
16
|
+
* Create a `PolarVector` from a Cartesian `vector`, preserving both
|
|
17
|
+
* magnitude and direction. The roundtrip
|
|
18
|
+
* `PolarVector.fromVector(v).toVector()` reproduces `v` (modulo float
|
|
19
|
+
* precision).
|
|
20
|
+
*/
|
|
10
21
|
static fromVector(vector) {
|
|
11
|
-
return new PolarVector(vector.length,
|
|
22
|
+
return new PolarVector(vector.length, vector.angle);
|
|
12
23
|
}
|
|
24
|
+
/**
|
|
25
|
+
* Convert to a Cartesian {@link Vector}. Returns `Vector.temp` — do not
|
|
26
|
+
* store the reference across calls.
|
|
27
|
+
*/
|
|
13
28
|
toVector() {
|
|
14
29
|
return Vector.temp.set(this.radius * Math.cos(this.phi), this.radius * Math.sin(this.phi));
|
|
15
30
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PolarVector.js","sources":["../../../../src/math/PolarVector.ts"],"sourcesContent":[null],"names":[],"mappings":";;
|
|
1
|
+
{"version":3,"file":"PolarVector.js","sources":["../../../../src/math/PolarVector.ts"],"sourcesContent":[null],"names":[],"mappings":";;AAEA;;;AAGG;MACU,WAAW,CAAA;AACb,IAAA,MAAM;;AAEN,IAAA,GAAG;AAEV,IAAA,WAAA,CAAmB,MAAM,GAAG,CAAC,EAAE,KAAK,GAAG,CAAC,EAAA;AACpC,QAAA,IAAI,CAAC,MAAM,GAAG,MAAM;AACpB,QAAA,IAAI,CAAC,GAAG,GAAG,KAAK;IACpB;AAEA;;;;;AAKG;IACI,OAAO,UAAU,CAAC,MAAc,EAAA;QACnC,OAAO,IAAI,WAAW,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,KAAK,CAAC;IACvD;AAEA;;;AAGG;IACI,QAAQ,GAAA;AACX,QAAA,OAAO,MAAM,CAAC,IAAI,CAAC,GAAG,CAClB,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,EAChC,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CACnC;IACL;AACH;;;;"}
|
|
@@ -4,6 +4,16 @@ import { Rectangle } from '@/math/Rectangle';
|
|
|
4
4
|
import type { ShapeLike } from '@/math/ShapeLike';
|
|
5
5
|
import type { Collidable, CollisionResponse } from '@/math/Collision';
|
|
6
6
|
import { CollisionType } from '@/math/Collision';
|
|
7
|
+
/**
|
|
8
|
+
* Mutable convex polygon defined by a world-space offset `(x, y)` and an
|
|
9
|
+
* array of local-space vertex {@link Vector}s. Implements {@link ShapeLike}
|
|
10
|
+
* with full SAT collision response.
|
|
11
|
+
*
|
|
12
|
+
* Edge vectors are recomputed whenever `setPoints` is called; normals are
|
|
13
|
+
* cached lazily and invalidated on any positional or point mutation.
|
|
14
|
+
*
|
|
15
|
+
* `Polygon.temp` is a shared scratch instance.
|
|
16
|
+
*/
|
|
7
17
|
export declare class Polygon implements ShapeLike {
|
|
8
18
|
readonly collisionType: CollisionType;
|
|
9
19
|
private readonly _position;
|
|
@@ -21,10 +31,20 @@ export declare class Polygon implements ShapeLike {
|
|
|
21
31
|
set y(y: number);
|
|
22
32
|
get points(): Array<Vector>;
|
|
23
33
|
set points(points: Array<Vector>);
|
|
34
|
+
/**
|
|
35
|
+
* The precomputed edge vectors (each edge is `points[i+1] - points[i]`).
|
|
36
|
+
* Updated automatically by {@link setPoints}. Read-only — mutating the
|
|
37
|
+
* returned array directly will desync the internal state.
|
|
38
|
+
*/
|
|
24
39
|
get edges(): Array<Vector>;
|
|
25
40
|
/** @deprecated Use {@link getNormals} for a stable cached reference. */
|
|
26
41
|
get normals(): Array<Vector>;
|
|
27
42
|
setPosition(x: number, y: number): this;
|
|
43
|
+
/**
|
|
44
|
+
* Replace this polygon's vertex array with `newPoints`. Reuses existing
|
|
45
|
+
* `Vector` instances where possible to avoid allocation. Recomputes edge
|
|
46
|
+
* vectors and invalidates the normal cache. Returns `this` for chaining.
|
|
47
|
+
*/
|
|
28
48
|
setPoints(newPoints: Array<Vector>): this;
|
|
29
49
|
set(x: number, y: number, points: Array<Vector>): this;
|
|
30
50
|
copy(polygon: Polygon): this;
|
package/dist/esm/math/Polygon.js
CHANGED
|
@@ -5,6 +5,16 @@ import { CollisionType } from './Collision.js';
|
|
|
5
5
|
import { intersectionPointPoly, intersectionLinePoly, intersectionEllipsePoly, intersectionCirclePoly, intersectionPolyPoly, intersectionRectPoly, getCollisionPolygonCircle, getCollisionSat } from './collision-detection.js';
|
|
6
6
|
|
|
7
7
|
let temp = null;
|
|
8
|
+
/**
|
|
9
|
+
* Mutable convex polygon defined by a world-space offset `(x, y)` and an
|
|
10
|
+
* array of local-space vertex {@link Vector}s. Implements {@link ShapeLike}
|
|
11
|
+
* with full SAT collision response.
|
|
12
|
+
*
|
|
13
|
+
* Edge vectors are recomputed whenever `setPoints` is called; normals are
|
|
14
|
+
* cached lazily and invalidated on any positional or point mutation.
|
|
15
|
+
*
|
|
16
|
+
* `Polygon.temp` is a shared scratch instance.
|
|
17
|
+
*/
|
|
8
18
|
class Polygon {
|
|
9
19
|
collisionType = CollisionType.Polygon;
|
|
10
20
|
_position;
|
|
@@ -44,6 +54,11 @@ class Polygon {
|
|
|
44
54
|
set points(points) {
|
|
45
55
|
this.setPoints(points);
|
|
46
56
|
}
|
|
57
|
+
/**
|
|
58
|
+
* The precomputed edge vectors (each edge is `points[i+1] - points[i]`).
|
|
59
|
+
* Updated automatically by {@link setPoints}. Read-only — mutating the
|
|
60
|
+
* returned array directly will desync the internal state.
|
|
61
|
+
*/
|
|
47
62
|
get edges() {
|
|
48
63
|
return this._edges;
|
|
49
64
|
}
|
|
@@ -56,6 +71,11 @@ class Polygon {
|
|
|
56
71
|
this._normalsDirty = true;
|
|
57
72
|
return this;
|
|
58
73
|
}
|
|
74
|
+
/**
|
|
75
|
+
* Replace this polygon's vertex array with `newPoints`. Reuses existing
|
|
76
|
+
* `Vector` instances where possible to avoid allocation. Recomputes edge
|
|
77
|
+
* vectors and invalidates the normal cache. Returns `this` for chaining.
|
|
78
|
+
*/
|
|
59
79
|
setPoints(newPoints) {
|
|
60
80
|
const len = this._points.length;
|
|
61
81
|
const newLen = newPoints.length;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Polygon.js","sources":["../../../../src/math/Polygon.ts"],"sourcesContent":[null],"names":[],"mappings":";;;;;;AAuBA,IAAI,IAAI,GAAmB,IAAI;
|
|
1
|
+
{"version":3,"file":"Polygon.js","sources":["../../../../src/math/Polygon.ts"],"sourcesContent":[null],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,8 @@
|
|
|
1
1
|
import type { PointLike } from '@/math/PointLike';
|
|
2
|
+
/**
|
|
3
|
+
* Structural type for any object that describes a polygon via a world-space
|
|
4
|
+
* offset `(x, y)` and an array of local-space {@link PointLike} vertices.
|
|
5
|
+
*/
|
|
2
6
|
export interface PolygonLike {
|
|
3
7
|
x: number;
|
|
4
8
|
y: number;
|
|
@@ -1,8 +1,30 @@
|
|
|
1
1
|
import { Rectangle } from './Rectangle';
|
|
2
|
+
/** An item stored in a {@link Quadtree}. Carries an axis-aligned bounding box and an arbitrary `payload`. */
|
|
2
3
|
export interface QuadtreeItem<T> {
|
|
3
4
|
bounds: Rectangle;
|
|
4
5
|
payload: T;
|
|
5
6
|
}
|
|
7
|
+
/**
|
|
8
|
+
* Generic recursive spatial index used by the engine's `InteractionManager`
|
|
9
|
+
* to accelerate per-frame hit-testing of scene nodes.
|
|
10
|
+
*
|
|
11
|
+
* Items are inserted with their axis-aligned bounding box; the tree
|
|
12
|
+
* automatically subdivides into four quadrants (NW/NE/SW/SE) when a node
|
|
13
|
+
* accumulates more than `maxItems` entries and the current depth is below
|
|
14
|
+
* `maxDepth`. Items that span multiple quadrants are kept at the current node
|
|
15
|
+
* rather than duplicated.
|
|
16
|
+
*
|
|
17
|
+
* The tree is persistent: `insert` and `remove` modify the tree in place
|
|
18
|
+
* without full rebuilds. Call `clear()` for bulk reset, or `destroy()` to
|
|
19
|
+
* release all memory including child rectangles.
|
|
20
|
+
*
|
|
21
|
+
* @example
|
|
22
|
+
* ```ts
|
|
23
|
+
* const qt = new Quadtree<SceneNode>(new Rectangle(0, 0, 1920, 1080));
|
|
24
|
+
* qt.insert({ bounds: node.getBounds(), payload: node });
|
|
25
|
+
* const hits = qt.queryPoint(mouseX, mouseY);
|
|
26
|
+
* ```
|
|
27
|
+
*/
|
|
6
28
|
export declare class Quadtree<T> {
|
|
7
29
|
private readonly _bounds;
|
|
8
30
|
private readonly _maxItems;
|
|
@@ -11,6 +33,11 @@ export declare class Quadtree<T> {
|
|
|
11
33
|
private _items;
|
|
12
34
|
private _children;
|
|
13
35
|
constructor(bounds: Rectangle, maxItems?: number, maxDepth?: number, depth?: number);
|
|
36
|
+
/**
|
|
37
|
+
* Insert `item` into the tree. If this node is full and below `maxDepth`,
|
|
38
|
+
* it subdivides first. Items whose bounds span multiple child quadrants are
|
|
39
|
+
* stored at the current node to avoid duplication.
|
|
40
|
+
*/
|
|
14
41
|
insert(item: QuadtreeItem<T>): void;
|
|
15
42
|
/**
|
|
16
43
|
* Returns all items whose bounds contain the point `(x, y)`.
|
|
@@ -26,6 +53,13 @@ export declare class Quadtree<T> {
|
|
|
26
53
|
* buffer to avoid allocation pressure.
|
|
27
54
|
*/
|
|
28
55
|
queryPoint(x: number, y: number, results?: Array<QuadtreeItem<T>>): Array<QuadtreeItem<T>>;
|
|
56
|
+
/**
|
|
57
|
+
* Return all items whose bounds overlap the axis-aligned `rect`.
|
|
58
|
+
*
|
|
59
|
+
* Same reuse semantics as {@link queryPoint}: pass a persistent buffer and
|
|
60
|
+
* reset it (`buf.length = 0`) before each call to avoid allocations on hot
|
|
61
|
+
* paths.
|
|
62
|
+
*/
|
|
29
63
|
queryRect(rect: Rectangle, results?: Array<QuadtreeItem<T>>): Array<QuadtreeItem<T>>;
|
|
30
64
|
/**
|
|
31
65
|
* Remove the first occurrence of `item` from this subtree by object
|
|
@@ -34,12 +68,15 @@ export declare class Quadtree<T> {
|
|
|
34
68
|
* subtree; prefer `clear()` for bulk removal.
|
|
35
69
|
*/
|
|
36
70
|
remove(item: QuadtreeItem<T>): boolean;
|
|
71
|
+
/** Remove all items and collapse all child nodes. Child `Quadtree` instances are retained but reset. */
|
|
37
72
|
clear(): void;
|
|
38
73
|
/**
|
|
39
74
|
* Walk every subdivided region's bounding rectangle, calling `callback`
|
|
40
|
-
* once per node in the tree (including the root). Used by
|
|
41
|
-
* to visualise quadtree partitioning.
|
|
42
|
-
*
|
|
75
|
+
* once per node in the tree (including the root). Used by
|
|
76
|
+
* {@link HitTestLayer} to visualise quadtree partitioning. Not part of
|
|
77
|
+
* the stable public API — friend-class access only.
|
|
78
|
+
*
|
|
79
|
+
* @internal
|
|
43
80
|
*/
|
|
44
81
|
_walkBounds(callback: (rect: Rectangle) => void): void;
|
|
45
82
|
destroy(): void;
|
|
@@ -1,5 +1,26 @@
|
|
|
1
1
|
import { Rectangle } from './Rectangle.js';
|
|
2
2
|
|
|
3
|
+
/**
|
|
4
|
+
* Generic recursive spatial index used by the engine's `InteractionManager`
|
|
5
|
+
* to accelerate per-frame hit-testing of scene nodes.
|
|
6
|
+
*
|
|
7
|
+
* Items are inserted with their axis-aligned bounding box; the tree
|
|
8
|
+
* automatically subdivides into four quadrants (NW/NE/SW/SE) when a node
|
|
9
|
+
* accumulates more than `maxItems` entries and the current depth is below
|
|
10
|
+
* `maxDepth`. Items that span multiple quadrants are kept at the current node
|
|
11
|
+
* rather than duplicated.
|
|
12
|
+
*
|
|
13
|
+
* The tree is persistent: `insert` and `remove` modify the tree in place
|
|
14
|
+
* without full rebuilds. Call `clear()` for bulk reset, or `destroy()` to
|
|
15
|
+
* release all memory including child rectangles.
|
|
16
|
+
*
|
|
17
|
+
* @example
|
|
18
|
+
* ```ts
|
|
19
|
+
* const qt = new Quadtree<SceneNode>(new Rectangle(0, 0, 1920, 1080));
|
|
20
|
+
* qt.insert({ bounds: node.getBounds(), payload: node });
|
|
21
|
+
* const hits = qt.queryPoint(mouseX, mouseY);
|
|
22
|
+
* ```
|
|
23
|
+
*/
|
|
3
24
|
class Quadtree {
|
|
4
25
|
_bounds;
|
|
5
26
|
_maxItems;
|
|
@@ -15,6 +36,11 @@ class Quadtree {
|
|
|
15
36
|
this._items = [];
|
|
16
37
|
this._children = null;
|
|
17
38
|
}
|
|
39
|
+
/**
|
|
40
|
+
* Insert `item` into the tree. If this node is full and below `maxDepth`,
|
|
41
|
+
* it subdivides first. Items whose bounds span multiple child quadrants are
|
|
42
|
+
* stored at the current node to avoid duplication.
|
|
43
|
+
*/
|
|
18
44
|
insert(item) {
|
|
19
45
|
// If not subdivided and under capacity, store here.
|
|
20
46
|
if (this._children === null && this._items.length < this._maxItems) {
|
|
@@ -66,6 +92,13 @@ class Quadtree {
|
|
|
66
92
|
}
|
|
67
93
|
return results;
|
|
68
94
|
}
|
|
95
|
+
/**
|
|
96
|
+
* Return all items whose bounds overlap the axis-aligned `rect`.
|
|
97
|
+
*
|
|
98
|
+
* Same reuse semantics as {@link queryPoint}: pass a persistent buffer and
|
|
99
|
+
* reset it (`buf.length = 0`) before each call to avoid allocations on hot
|
|
100
|
+
* paths.
|
|
101
|
+
*/
|
|
69
102
|
queryRect(rect, results = []) {
|
|
70
103
|
// Check intersection using left/right/top/bottom comparisons to avoid
|
|
71
104
|
// needing a full Rectangle.intersectsWith() call with collision dispatch.
|
|
@@ -111,6 +144,7 @@ class Quadtree {
|
|
|
111
144
|
}
|
|
112
145
|
return false;
|
|
113
146
|
}
|
|
147
|
+
/** Remove all items and collapse all child nodes. Child `Quadtree` instances are retained but reset. */
|
|
114
148
|
clear() {
|
|
115
149
|
this._items.length = 0;
|
|
116
150
|
if (this._children !== null) {
|
|
@@ -122,9 +156,11 @@ class Quadtree {
|
|
|
122
156
|
}
|
|
123
157
|
/**
|
|
124
158
|
* Walk every subdivided region's bounding rectangle, calling `callback`
|
|
125
|
-
* once per node in the tree (including the root). Used by
|
|
126
|
-
* to visualise quadtree partitioning.
|
|
127
|
-
*
|
|
159
|
+
* once per node in the tree (including the root). Used by
|
|
160
|
+
* {@link HitTestLayer} to visualise quadtree partitioning. Not part of
|
|
161
|
+
* the stable public API — friend-class access only.
|
|
162
|
+
*
|
|
163
|
+
* @internal
|
|
128
164
|
*/
|
|
129
165
|
_walkBounds(callback) {
|
|
130
166
|
callback(this._bounds);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Quadtree.js","sources":["../../../../src/math/Quadtree.ts"],"sourcesContent":[null],"names":[],"mappings":";;
|
|
1
|
+
{"version":3,"file":"Quadtree.js","sources":["../../../../src/math/Quadtree.ts"],"sourcesContent":[null],"names":[],"mappings":"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"}
|
|
@@ -1,14 +1,39 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Seedable pseudo-random number generator based on the Mersenne Twister
|
|
3
|
+
* (MT19937) algorithm. Produces 32-bit unsigned integers with period 2^19937−1,
|
|
4
|
+
* normalised to the `[min, max)` range requested by each {@link next} call.
|
|
5
|
+
*
|
|
6
|
+
* The generator is deterministic: calling `setSeed(s)` followed by the same
|
|
7
|
+
* sequence of `next()` calls always produces the same output. Use `reset()`
|
|
8
|
+
* to replay from the current seed without changing it.
|
|
9
|
+
*/
|
|
1
10
|
export declare class Random {
|
|
2
11
|
private _state;
|
|
3
12
|
private _iteration;
|
|
4
13
|
private _seed;
|
|
5
14
|
private _value;
|
|
6
15
|
constructor(seed?: number);
|
|
16
|
+
/** The seed value currently in use. */
|
|
7
17
|
get seed(): number;
|
|
18
|
+
/** The last raw random value produced by {@link next}, normalised to the requested range. */
|
|
8
19
|
get value(): number;
|
|
20
|
+
/** How many values have been drawn from the current state array before the next twist. */
|
|
9
21
|
get iteration(): number;
|
|
22
|
+
/**
|
|
23
|
+
* Set a new seed and reset the generator state. Returns `this` for
|
|
24
|
+
* chaining.
|
|
25
|
+
*/
|
|
10
26
|
setSeed(seed: number): this;
|
|
27
|
+
/**
|
|
28
|
+
* Reinitialise the generator from the current {@link seed} without
|
|
29
|
+
* changing it — equivalent to rewinding to the start of the sequence.
|
|
30
|
+
* Returns `this` for chaining.
|
|
31
|
+
*/
|
|
11
32
|
reset(): this;
|
|
33
|
+
/**
|
|
34
|
+
* Advance the generator and return a uniformly-distributed float in the
|
|
35
|
+
* half-open interval `[min, max)`. Defaults to `[0, 1)`.
|
|
36
|
+
*/
|
|
12
37
|
next(min?: number, max?: number): number;
|
|
13
38
|
destroy(): void;
|
|
14
39
|
private _twist;
|
package/dist/esm/math/Random.js
CHANGED
|
@@ -1,4 +1,13 @@
|
|
|
1
1
|
const limit = (2 ** 32) - 1;
|
|
2
|
+
/**
|
|
3
|
+
* Seedable pseudo-random number generator based on the Mersenne Twister
|
|
4
|
+
* (MT19937) algorithm. Produces 32-bit unsigned integers with period 2^19937−1,
|
|
5
|
+
* normalised to the `[min, max)` range requested by each {@link next} call.
|
|
6
|
+
*
|
|
7
|
+
* The generator is deterministic: calling `setSeed(s)` followed by the same
|
|
8
|
+
* sequence of `next()` calls always produces the same output. Use `reset()`
|
|
9
|
+
* to replay from the current seed without changing it.
|
|
10
|
+
*/
|
|
2
11
|
class Random {
|
|
3
12
|
_state = new Uint32Array(624);
|
|
4
13
|
_iteration = 0;
|
|
@@ -8,20 +17,32 @@ class Random {
|
|
|
8
17
|
this.setSeed(seed);
|
|
9
18
|
this._twist();
|
|
10
19
|
}
|
|
20
|
+
/** The seed value currently in use. */
|
|
11
21
|
get seed() {
|
|
12
22
|
return this._seed;
|
|
13
23
|
}
|
|
24
|
+
/** The last raw random value produced by {@link next}, normalised to the requested range. */
|
|
14
25
|
get value() {
|
|
15
26
|
return this._value;
|
|
16
27
|
}
|
|
28
|
+
/** How many values have been drawn from the current state array before the next twist. */
|
|
17
29
|
get iteration() {
|
|
18
30
|
return this._iteration;
|
|
19
31
|
}
|
|
32
|
+
/**
|
|
33
|
+
* Set a new seed and reset the generator state. Returns `this` for
|
|
34
|
+
* chaining.
|
|
35
|
+
*/
|
|
20
36
|
setSeed(seed) {
|
|
21
37
|
this._seed = seed;
|
|
22
38
|
this.reset();
|
|
23
39
|
return this;
|
|
24
40
|
}
|
|
41
|
+
/**
|
|
42
|
+
* Reinitialise the generator from the current {@link seed} without
|
|
43
|
+
* changing it — equivalent to rewinding to the start of the sequence.
|
|
44
|
+
* Returns `this` for chaining.
|
|
45
|
+
*/
|
|
25
46
|
reset() {
|
|
26
47
|
this._state[0] = this._seed;
|
|
27
48
|
for (let i = 1; i < 624; i++) {
|
|
@@ -32,6 +53,10 @@ class Random {
|
|
|
32
53
|
this._iteration = 0;
|
|
33
54
|
return this;
|
|
34
55
|
}
|
|
56
|
+
/**
|
|
57
|
+
* Advance the generator and return a uniformly-distributed float in the
|
|
58
|
+
* half-open interval `[min, max)`. Defaults to `[0, 1)`.
|
|
59
|
+
*/
|
|
35
60
|
next(min = 0, max = 1) {
|
|
36
61
|
if (this._iteration >= 624) {
|
|
37
62
|
this._twist();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Random.js","sources":["../../../../src/math/Random.ts"],"sourcesContent":[null],"names":[],"mappings":"AAAA,MAAM,KAAK,GAAG,CAAC,CAAC,IAAI,EAAE,IAAI,CAAC;
|
|
1
|
+
{"version":3,"file":"Random.js","sources":["../../../../src/math/Random.ts"],"sourcesContent":[null],"names":[],"mappings":"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"}
|
|
@@ -5,6 +5,15 @@ import type { ShapeLike } from '@/math/ShapeLike';
|
|
|
5
5
|
import type { Collidable, CollisionResponse } from '@/math/Collision';
|
|
6
6
|
import { CollisionType } from '@/math/Collision';
|
|
7
7
|
import type { Vector } from '@/math/Vector';
|
|
8
|
+
/**
|
|
9
|
+
* Mutable axis-aligned rectangle defined by a top-left origin `(x, y)` and
|
|
10
|
+
* dimensions `(width, height)`. Implements {@link ShapeLike} with full SAT
|
|
11
|
+
* collision response for rectangles and polygons, and specialised algorithms
|
|
12
|
+
* for circle and ellipse intersections.
|
|
13
|
+
*
|
|
14
|
+
* `Rectangle.temp` is a shared scratch instance. Edge normals are lazily
|
|
15
|
+
* computed and cached; they are invalidated when position or size mutates.
|
|
16
|
+
*/
|
|
8
17
|
export declare class Rectangle implements ShapeLike {
|
|
9
18
|
readonly collisionType: CollisionType;
|
|
10
19
|
private readonly _position;
|
|
@@ -37,8 +46,14 @@ export declare class Rectangle implements ShapeLike {
|
|
|
37
46
|
getBounds(): Rectangle;
|
|
38
47
|
getNormals(): Array<Vector>;
|
|
39
48
|
project(axis: Vector, result?: Interval): Interval;
|
|
49
|
+
/**
|
|
50
|
+
* Apply a 3×3 affine `matrix` to all four corners of this rectangle, then
|
|
51
|
+
* return the axis-aligned bounding box of the transformed corners written
|
|
52
|
+
* into `result`. Defaults to mutating `this` in place. Returns `result`.
|
|
53
|
+
*/
|
|
40
54
|
transform(matrix: Matrix, result?: Rectangle): Rectangle;
|
|
41
55
|
contains(x: number, y: number): boolean;
|
|
56
|
+
/** Return `true` when `rect` is entirely within this rectangle (all four edges inside). */
|
|
42
57
|
containsRect(rect: Rectangle): boolean;
|
|
43
58
|
intersectsWith(target: Collidable): boolean;
|
|
44
59
|
collidesWith(target: Collidable): CollisionResponse | null;
|
|
@@ -3,11 +3,20 @@ import { Size } from './Size.js';
|
|
|
3
3
|
import { Interval } from './Interval.js';
|
|
4
4
|
import { ObservableVector } from './ObservableVector.js';
|
|
5
5
|
import { CollisionType } from './Collision.js';
|
|
6
|
-
import { intersectionPointRect, intersectionLineRect, intersectionRectEllipse, intersectionRectCircle, intersectionRectPoly, intersectionRectRect, intersectionSat, getCollisionCircleRectangle, getCollisionSat, getCollisionRectangleRectangle } from './collision-detection.js';
|
|
6
|
+
import { intersectionPointRect, intersectionLineRect, intersectionRectEllipse, intersectionRectCircle, intersectionRectPoly, intersectionRectRect, intersectionSat, getCollisionEllipseRectangle, getCollisionCircleRectangle, getCollisionSat, getCollisionRectangleRectangle } from './collision-detection.js';
|
|
7
7
|
|
|
8
8
|
let temp = null;
|
|
9
9
|
const noop = () => { };
|
|
10
10
|
const tempPoint = new ObservableVector(noop);
|
|
11
|
+
/**
|
|
12
|
+
* Mutable axis-aligned rectangle defined by a top-left origin `(x, y)` and
|
|
13
|
+
* dimensions `(width, height)`. Implements {@link ShapeLike} with full SAT
|
|
14
|
+
* collision response for rectangles and polygons, and specialised algorithms
|
|
15
|
+
* for circle and ellipse intersections.
|
|
16
|
+
*
|
|
17
|
+
* `Rectangle.temp` is a shared scratch instance. Edge normals are lazily
|
|
18
|
+
* computed and cached; they are invalidated when position or size mutates.
|
|
19
|
+
*/
|
|
11
20
|
class Rectangle {
|
|
12
21
|
collisionType = CollisionType.Rectangle;
|
|
13
22
|
_position;
|
|
@@ -124,6 +133,11 @@ class Rectangle {
|
|
|
124
133
|
const projection4 = axis.dot(this.left, this.bottom);
|
|
125
134
|
return result.set(Math.min(projection1, projection2, projection3, projection4), Math.max(projection1, projection2, projection3, projection4));
|
|
126
135
|
}
|
|
136
|
+
/**
|
|
137
|
+
* Apply a 3×3 affine `matrix` to all four corners of this rectangle, then
|
|
138
|
+
* return the axis-aligned bounding box of the transformed corners written
|
|
139
|
+
* into `result`. Defaults to mutating `this` in place. Returns `result`.
|
|
140
|
+
*/
|
|
127
141
|
transform(matrix, result = this) {
|
|
128
142
|
const point = tempPoint.set(this.left, this.top).transform(matrix);
|
|
129
143
|
let minX = point.x, maxX = point.x, minY = point.y, maxY = point.y;
|
|
@@ -147,6 +161,7 @@ class Rectangle {
|
|
|
147
161
|
contains(x, y) {
|
|
148
162
|
return intersectionPointRect(tempPoint.set(x, y), this);
|
|
149
163
|
}
|
|
164
|
+
/** Return `true` when `rect` is entirely within this rectangle (all four edges inside). */
|
|
150
165
|
containsRect(rect) {
|
|
151
166
|
return inRange(rect.left, this.left, this.right)
|
|
152
167
|
&& inRange(rect.right, this.left, this.right)
|
|
@@ -177,7 +192,7 @@ class Rectangle {
|
|
|
177
192
|
case CollisionType.Rectangle: return getCollisionRectangleRectangle(this, target);
|
|
178
193
|
case CollisionType.Polygon: return getCollisionSat(this, target);
|
|
179
194
|
case CollisionType.Circle: return getCollisionCircleRectangle(target, this, true);
|
|
180
|
-
|
|
195
|
+
case CollisionType.Ellipse: return getCollisionEllipseRectangle(target, this, true);
|
|
181
196
|
// case CollisionType.Line: return intersectionLineRect(target as Line, this);
|
|
182
197
|
// case CollisionType.Point: return intersectionPointRect(target as Vector, this);
|
|
183
198
|
default: return null;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Rectangle.js","sources":["../../../../src/math/Rectangle.ts"],"sourcesContent":[null],"names":[],"mappings":";;;;;;;
|
|
1
|
+
{"version":3,"file":"Rectangle.js","sources":["../../../../src/math/Rectangle.ts"],"sourcesContent":[null],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,12 @@
|
|
|
1
1
|
import { Vector } from '@/math/Vector';
|
|
2
2
|
import type { Cloneable } from '@/core/types';
|
|
3
|
+
/**
|
|
4
|
+
* Mutable line segment defined by start and end {@link Vector}s. Unlike
|
|
5
|
+
* {@link Line} this type does not implement {@link ShapeLike} — it is a
|
|
6
|
+
* lightweight value type used in path and swept-collision utilities.
|
|
7
|
+
*
|
|
8
|
+
* `Segment.temp` is a shared scratch instance.
|
|
9
|
+
*/
|
|
3
10
|
export declare class Segment implements Cloneable {
|
|
4
11
|
private readonly _startPoint;
|
|
5
12
|
private readonly _endPoint;
|
package/dist/esm/math/Segment.js
CHANGED
|
@@ -1,6 +1,13 @@
|
|
|
1
1
|
import { Vector } from './Vector.js';
|
|
2
2
|
|
|
3
3
|
let temp = null;
|
|
4
|
+
/**
|
|
5
|
+
* Mutable line segment defined by start and end {@link Vector}s. Unlike
|
|
6
|
+
* {@link Line} this type does not implement {@link ShapeLike} — it is a
|
|
7
|
+
* lightweight value type used in path and swept-collision utilities.
|
|
8
|
+
*
|
|
9
|
+
* `Segment.temp` is a shared scratch instance.
|
|
10
|
+
*/
|
|
4
11
|
class Segment {
|
|
5
12
|
_startPoint;
|
|
6
13
|
_endPoint;
|