@codexo/exojs 0.8.0 → 0.8.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +390 -208
- package/README.md +19 -19
- package/dist/esm/animation/Easing.js +13 -21
- package/dist/esm/animation/Easing.js.map +1 -1
- package/dist/esm/animation/Tween.d.ts +3 -3
- package/dist/esm/animation/Tween.js +7 -5
- package/dist/esm/animation/Tween.js.map +1 -1
- package/dist/esm/animation/TweenManager.js +1 -1
- package/dist/esm/animation/TweenManager.js.map +1 -1
- package/dist/esm/animation/types.js.map +1 -1
- package/dist/esm/audio/AbstractMedia.d.ts +1 -1
- package/dist/esm/audio/AbstractMedia.js +1 -1
- package/dist/esm/audio/AbstractMedia.js.map +1 -1
- package/dist/esm/audio/AudioAnalyser.d.ts +37 -1
- package/dist/esm/audio/AudioAnalyser.js +150 -2
- package/dist/esm/audio/AudioAnalyser.js.map +1 -1
- package/dist/esm/audio/AudioBus.d.ts +1 -1
- package/dist/esm/audio/AudioBus.js.map +1 -1
- package/dist/esm/audio/AudioFilter.js +3 -1
- package/dist/esm/audio/AudioFilter.js.map +1 -1
- package/dist/esm/audio/AudioListener.d.ts +1 -1
- package/dist/esm/audio/AudioListener.js +5 -3
- package/dist/esm/audio/AudioListener.js.map +1 -1
- package/dist/esm/audio/AudioManager.js.map +1 -1
- package/dist/esm/audio/BeatDetector.d.ts +66 -4
- package/dist/esm/audio/BeatDetector.js +145 -44
- package/dist/esm/audio/BeatDetector.js.map +1 -1
- package/dist/esm/audio/Envelope.d.ts +1 -1
- package/dist/esm/audio/Envelope.js +2 -2
- package/dist/esm/audio/Envelope.js.map +1 -1
- package/dist/esm/audio/Music.d.ts +1 -1
- package/dist/esm/audio/Music.js +1 -1
- package/dist/esm/audio/Music.js.map +1 -1
- package/dist/esm/audio/OscillatorSound.d.ts +2 -2
- package/dist/esm/audio/OscillatorSound.js.map +1 -1
- package/dist/esm/audio/Sound.d.ts +40 -2
- package/dist/esm/audio/Sound.js +69 -9
- package/dist/esm/audio/Sound.js.map +1 -1
- package/dist/esm/audio/audio-context.js +1 -1
- package/dist/esm/audio/audio-context.js.map +1 -1
- package/dist/esm/audio/crossFade.js +1 -1
- package/dist/esm/audio/crossFade.js.map +1 -1
- package/dist/esm/audio/dsp/mel.d.ts +2 -2
- package/dist/esm/audio/dsp/mel.js +70 -0
- package/dist/esm/audio/dsp/mel.js.map +1 -0
- package/dist/esm/audio/dsp/tempogram.d.ts +2 -2
- package/dist/esm/audio/filters/ChorusFilter.js +12 -4
- package/dist/esm/audio/filters/ChorusFilter.js.map +1 -1
- package/dist/esm/audio/filters/CompressorFilter.d.ts +9 -0
- package/dist/esm/audio/filters/CompressorFilter.js +11 -0
- package/dist/esm/audio/filters/CompressorFilter.js.map +1 -1
- package/dist/esm/audio/filters/DelayFilter.js.map +1 -1
- package/dist/esm/audio/filters/DuckingFilter.d.ts +1 -1
- package/dist/esm/audio/filters/DuckingFilter.js +13 -5
- package/dist/esm/audio/filters/DuckingFilter.js.map +1 -1
- package/dist/esm/audio/filters/EqualizerFilter.js.map +1 -1
- package/dist/esm/audio/filters/GranularFilter.js +30 -14
- package/dist/esm/audio/filters/GranularFilter.js.map +1 -1
- package/dist/esm/audio/filters/HighpassFilter.js.map +1 -1
- package/dist/esm/audio/filters/LowpassFilter.js.map +1 -1
- package/dist/esm/audio/filters/PitchShiftFilter.js +14 -10
- package/dist/esm/audio/filters/PitchShiftFilter.js.map +1 -1
- package/dist/esm/audio/filters/ReverbFilter.js.map +1 -1
- package/dist/esm/audio/filters/VocoderFilter.d.ts +2 -2
- package/dist/esm/audio/filters/VocoderFilter.js +20 -12
- package/dist/esm/audio/filters/VocoderFilter.js.map +1 -1
- package/dist/esm/audio/filters/WorkletFilter.js +5 -6
- package/dist/esm/audio/filters/WorkletFilter.js.map +1 -1
- package/dist/esm/audio/filters/index.d.ts +7 -7
- package/dist/esm/audio/index.d.ts +9 -9
- package/dist/esm/audio/worklet/registerWorklet.js +7 -3
- package/dist/esm/audio/worklet/registerWorklet.js.map +1 -1
- package/dist/esm/core/Application.d.ts +13 -13
- package/dist/esm/core/Application.js +24 -16
- package/dist/esm/core/Application.js.map +1 -1
- package/dist/esm/core/Bounds.d.ts +1 -1
- package/dist/esm/core/Bounds.js +1 -3
- package/dist/esm/core/Bounds.js.map +1 -1
- package/dist/esm/core/Clock.js +1 -1
- package/dist/esm/core/Clock.js.map +1 -1
- package/dist/esm/core/Color.js +2 -5
- package/dist/esm/core/Color.js.map +1 -1
- package/dist/esm/core/Scene.d.ts +10 -10
- package/dist/esm/core/Scene.js +1 -1
- package/dist/esm/core/Scene.js.map +1 -1
- package/dist/esm/core/SceneManager.d.ts +4 -4
- package/dist/esm/core/SceneManager.js +39 -33
- package/dist/esm/core/SceneManager.js.map +1 -1
- package/dist/esm/core/SceneNode.d.ts +8 -8
- package/dist/esm/core/SceneNode.js +39 -29
- package/dist/esm/core/SceneNode.js.map +1 -1
- package/dist/esm/core/Signal.d.ts +3 -3
- package/dist/esm/core/Signal.js +3 -3
- package/dist/esm/core/Signal.js.map +1 -1
- package/dist/esm/core/Time.js +6 -6
- package/dist/esm/core/Time.js.map +1 -1
- package/dist/esm/core/Timer.d.ts +1 -1
- package/dist/esm/core/Timer.js +1 -1
- package/dist/esm/core/Timer.js.map +1 -1
- package/dist/esm/core/capabilities.js +2 -4
- package/dist/esm/core/capabilities.js.map +1 -1
- package/dist/esm/core/index.d.ts +2 -2
- package/dist/esm/core/utils.d.ts +4 -4
- package/dist/esm/core/utils.js +10 -10
- package/dist/esm/core/utils.js.map +1 -1
- package/dist/esm/debug/BoundingBoxesLayer.d.ts +3 -3
- package/dist/esm/debug/BoundingBoxesLayer.js +6 -13
- package/dist/esm/debug/BoundingBoxesLayer.js.map +1 -1
- package/dist/esm/debug/DebugLayer.d.ts +1 -1
- package/dist/esm/debug/DebugLayer.js.map +1 -1
- package/dist/esm/debug/DebugOverlay.d.ts +2 -2
- package/dist/esm/debug/DebugOverlay.js +2 -2
- package/dist/esm/debug/DebugOverlay.js.map +1 -1
- package/dist/esm/debug/HitTestLayer.d.ts +3 -3
- package/dist/esm/debug/HitTestLayer.js +3 -10
- package/dist/esm/debug/HitTestLayer.js.map +1 -1
- package/dist/esm/debug/PerformanceLayer.d.ts +2 -2
- package/dist/esm/debug/PerformanceLayer.js +6 -6
- package/dist/esm/debug/PerformanceLayer.js.map +1 -1
- package/dist/esm/debug/PointerStackLayer.d.ts +3 -3
- package/dist/esm/debug/PointerStackLayer.js +3 -3
- package/dist/esm/debug/PointerStackLayer.js.map +1 -1
- package/dist/esm/debug/RenderPassInspectorLayer.d.ts +71 -0
- package/dist/esm/debug/RenderPassInspectorLayer.js +201 -0
- package/dist/esm/debug/RenderPassInspectorLayer.js.map +1 -0
- package/dist/esm/debug/index.d.ts +4 -3
- package/dist/esm/debug/index.js +4 -3
- package/dist/esm/debug/index.js.map +1 -1
- package/dist/esm/index.d.ts +1 -1
- package/dist/esm/index.js +101 -98
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/input/ArcadeStickGamepadMapping.js.map +1 -1
- package/dist/esm/input/GameCubeGamepadMapping.d.ts +1 -1
- package/dist/esm/input/GameCubeGamepadMapping.js +1 -1
- package/dist/esm/input/GameCubeGamepadMapping.js.map +1 -1
- package/dist/esm/input/Gamepad.d.ts +7 -7
- package/dist/esm/input/Gamepad.js +10 -6
- package/dist/esm/input/Gamepad.js.map +1 -1
- package/dist/esm/input/GamepadAxis.js +1 -1
- package/dist/esm/input/GamepadAxis.js.map +1 -1
- package/dist/esm/input/GamepadButton.js +1 -1
- package/dist/esm/input/GamepadButton.js.map +1 -1
- package/dist/esm/input/GamepadDefinitions.d.ts +4 -4
- package/dist/esm/input/GamepadDefinitions.js +12 -14
- package/dist/esm/input/GamepadDefinitions.js.map +1 -1
- package/dist/esm/input/GamepadMapping.d.ts +5 -5
- package/dist/esm/input/GamepadMapping.js.map +1 -1
- package/dist/esm/input/GamepadPromptLayouts.d.ts +2 -2
- package/dist/esm/input/GamepadPromptLayouts.js +8 -8
- package/dist/esm/input/GamepadPromptLayouts.js.map +1 -1
- package/dist/esm/input/GenericDualAnalogGamepadMapping.js.map +1 -1
- package/dist/esm/input/GestureRecognizer.d.ts +1 -1
- package/dist/esm/input/GestureRecognizer.js.map +1 -1
- package/dist/esm/input/InputBinding.d.ts +3 -3
- package/dist/esm/input/InputBinding.js.map +1 -1
- package/dist/esm/input/InputManager.d.ts +9 -9
- package/dist/esm/input/InputManager.js +25 -16
- package/dist/esm/input/InputManager.js.map +1 -1
- package/dist/esm/input/InteractionEvent.d.ts +1 -1
- package/dist/esm/input/InteractionEvent.js.map +1 -1
- package/dist/esm/input/InteractionManager.d.ts +2 -2
- package/dist/esm/input/InteractionManager.js +25 -16
- package/dist/esm/input/InteractionManager.js.map +1 -1
- package/dist/esm/input/JoyConLeftGamepadMapping.js.map +1 -1
- package/dist/esm/input/JoyConRightGamepadMapping.js.map +1 -1
- package/dist/esm/input/PlayStationGamepadMapping.d.ts +1 -1
- package/dist/esm/input/PlayStationGamepadMapping.js +1 -1
- package/dist/esm/input/PlayStationGamepadMapping.js.map +1 -1
- package/dist/esm/input/Pointer.d.ts +2 -2
- package/dist/esm/input/Pointer.js +6 -6
- package/dist/esm/input/Pointer.js.map +1 -1
- package/dist/esm/input/SteamControllerGamepadMapping.d.ts +1 -1
- package/dist/esm/input/SteamControllerGamepadMapping.js +1 -1
- package/dist/esm/input/SteamControllerGamepadMapping.js.map +1 -1
- package/dist/esm/input/SteamDeckGamepadMapping.js.map +1 -1
- package/dist/esm/input/SwitchProGamepadMapping.d.ts +1 -1
- package/dist/esm/input/SwitchProGamepadMapping.js +1 -1
- package/dist/esm/input/SwitchProGamepadMapping.js.map +1 -1
- package/dist/esm/input/XboxGamepadMapping.d.ts +1 -1
- package/dist/esm/input/XboxGamepadMapping.js +1 -1
- package/dist/esm/input/XboxGamepadMapping.js.map +1 -1
- package/dist/esm/input/index.d.ts +16 -16
- package/dist/esm/input/interaction-hooks.js.map +1 -1
- package/dist/esm/input/types.js.map +1 -1
- package/dist/esm/math/AbstractVector.js +8 -9
- package/dist/esm/math/AbstractVector.js.map +1 -1
- package/dist/esm/math/Circle.d.ts +5 -5
- package/dist/esm/math/Circle.js +33 -21
- package/dist/esm/math/Circle.js.map +1 -1
- package/dist/esm/math/Collision.d.ts +2 -2
- package/dist/esm/math/Collision.js.map +1 -1
- package/dist/esm/math/Ellipse.d.ts +5 -5
- package/dist/esm/math/Ellipse.js +28 -19
- package/dist/esm/math/Ellipse.js.map +1 -1
- package/dist/esm/math/Flags.d.ts +4 -4
- package/dist/esm/math/Flags.js.map +1 -1
- package/dist/esm/math/Interval.js.map +1 -1
- package/dist/esm/math/Line.d.ts +5 -5
- package/dist/esm/math/Line.js +23 -15
- package/dist/esm/math/Line.js.map +1 -1
- package/dist/esm/math/Matrix.js +14 -16
- package/dist/esm/math/Matrix.js.map +1 -1
- package/dist/esm/math/ObservableSize.js.map +1 -1
- package/dist/esm/math/ObservableVector.d.ts +1 -1
- package/dist/esm/math/ObservableVector.js.map +1 -1
- package/dist/esm/math/PolarVector.js.map +1 -1
- package/dist/esm/math/Polygon.d.ts +11 -11
- package/dist/esm/math/Polygon.js +37 -26
- package/dist/esm/math/Polygon.js.map +1 -1
- package/dist/esm/math/PolygonLike.d.ts +1 -1
- package/dist/esm/math/Quadtree.js +2 -8
- package/dist/esm/math/Quadtree.js.map +1 -1
- package/dist/esm/math/Random.js +5 -5
- package/dist/esm/math/Random.js.map +1 -1
- package/dist/esm/math/Rectangle.d.ts +4 -4
- package/dist/esm/math/Rectangle.js +59 -41
- package/dist/esm/math/Rectangle.js.map +1 -1
- package/dist/esm/math/Segment.d.ts +1 -1
- package/dist/esm/math/Segment.js +4 -4
- package/dist/esm/math/Segment.js.map +1 -1
- package/dist/esm/math/ShapeLike.d.ts +1 -1
- package/dist/esm/math/Size.js +1 -2
- package/dist/esm/math/Size.js.map +1 -1
- package/dist/esm/math/Vector.d.ts +4 -4
- package/dist/esm/math/Vector.js +19 -13
- package/dist/esm/math/Vector.js.map +1 -1
- package/dist/esm/math/collision-detection.d.ts +3 -3
- package/dist/esm/math/collision-detection.js +49 -49
- package/dist/esm/math/collision-detection.js.map +1 -1
- package/dist/esm/math/collision-primitives.d.ts +8 -8
- package/dist/esm/math/collision-primitives.js +27 -33
- package/dist/esm/math/collision-primitives.js.map +1 -1
- package/dist/esm/math/geometry.d.ts +3 -3
- package/dist/esm/math/geometry.js +55 -48
- package/dist/esm/math/geometry.js.map +1 -1
- package/dist/esm/math/index.d.ts +16 -16
- package/dist/esm/math/swept-collision.d.ts +3 -3
- package/dist/esm/math/swept-collision.js +5 -8
- package/dist/esm/math/swept-collision.js.map +1 -1
- package/dist/esm/math/triangulate.js +34 -24
- package/dist/esm/math/triangulate.js.map +1 -1
- package/dist/esm/math/utils.d.ts +2 -2
- package/dist/esm/math/utils.js +7 -7
- package/dist/esm/math/utils.js.map +1 -1
- package/dist/esm/particles/ParticleSystem.d.ts +9 -9
- package/dist/esm/particles/ParticleSystem.js +29 -29
- package/dist/esm/particles/ParticleSystem.js.map +1 -1
- package/dist/esm/particles/distributions/BoxArea.js.map +1 -1
- package/dist/esm/particles/distributions/CircleArea.js.map +1 -1
- package/dist/esm/particles/distributions/ConeDirection.js.map +1 -1
- package/dist/esm/particles/distributions/Constant.js.map +1 -1
- package/dist/esm/particles/distributions/Curve.d.ts +1 -1
- package/dist/esm/particles/distributions/Curve.js.map +1 -1
- package/dist/esm/particles/distributions/Gradient.d.ts +1 -1
- package/dist/esm/particles/distributions/Gradient.js +1 -1
- package/dist/esm/particles/distributions/Gradient.js.map +1 -1
- package/dist/esm/particles/distributions/LineSegment.js.map +1 -1
- package/dist/esm/particles/distributions/Range.js.map +1 -1
- package/dist/esm/particles/distributions/VectorRange.js.map +1 -1
- package/dist/esm/particles/distributions/index.d.ts +9 -9
- package/dist/esm/particles/gpu/ParticleGpuState.d.ts +3 -3
- package/dist/esm/particles/gpu/ParticleGpuState.js +48 -21
- package/dist/esm/particles/gpu/ParticleGpuState.js.map +1 -1
- package/dist/esm/particles/index.d.ts +1 -1
- package/dist/esm/particles/modules/AlphaFadeOverLifetime.d.ts +2 -2
- package/dist/esm/particles/modules/AlphaFadeOverLifetime.js.map +1 -1
- package/dist/esm/particles/modules/ApplyForce.d.ts +1 -1
- package/dist/esm/particles/modules/ApplyForce.js.map +1 -1
- package/dist/esm/particles/modules/AttractToPoint.d.ts +1 -1
- package/dist/esm/particles/modules/AttractToPoint.js.map +1 -1
- package/dist/esm/particles/modules/BurstSpawn.d.ts +4 -4
- package/dist/esm/particles/modules/BurstSpawn.js +2 -2
- package/dist/esm/particles/modules/BurstSpawn.js.map +1 -1
- package/dist/esm/particles/modules/ColorOverLifetime.d.ts +2 -2
- package/dist/esm/particles/modules/ColorOverLifetime.js +1 -1
- package/dist/esm/particles/modules/ColorOverLifetime.js.map +1 -1
- package/dist/esm/particles/modules/ColorOverSpeed.d.ts +2 -2
- package/dist/esm/particles/modules/ColorOverSpeed.js +1 -1
- package/dist/esm/particles/modules/ColorOverSpeed.js.map +1 -1
- package/dist/esm/particles/modules/DeathModule.js.map +1 -1
- package/dist/esm/particles/modules/Drag.d.ts +1 -1
- package/dist/esm/particles/modules/Drag.js +1 -3
- package/dist/esm/particles/modules/Drag.js.map +1 -1
- package/dist/esm/particles/modules/OrbitalForce.d.ts +1 -1
- package/dist/esm/particles/modules/OrbitalForce.js.map +1 -1
- package/dist/esm/particles/modules/RateSpawn.d.ts +3 -3
- package/dist/esm/particles/modules/RateSpawn.js +2 -2
- package/dist/esm/particles/modules/RateSpawn.js.map +1 -1
- package/dist/esm/particles/modules/RepelFromPoint.d.ts +1 -1
- package/dist/esm/particles/modules/RepelFromPoint.js.map +1 -1
- package/dist/esm/particles/modules/RotateOverLifetime.d.ts +1 -1
- package/dist/esm/particles/modules/RotateOverLifetime.js +1 -3
- package/dist/esm/particles/modules/RotateOverLifetime.js.map +1 -1
- package/dist/esm/particles/modules/ScaleOverLifetime.d.ts +2 -2
- package/dist/esm/particles/modules/ScaleOverLifetime.js.map +1 -1
- package/dist/esm/particles/modules/SpawnModule.js.map +1 -1
- package/dist/esm/particles/modules/SpawnOnDeath.d.ts +1 -1
- package/dist/esm/particles/modules/SpawnOnDeath.js.map +1 -1
- package/dist/esm/particles/modules/Turbulence.d.ts +1 -1
- package/dist/esm/particles/modules/Turbulence.js.map +1 -1
- package/dist/esm/particles/modules/UpdateModule.js.map +1 -1
- package/dist/esm/particles/modules/VelocityOverLifetime.d.ts +2 -2
- package/dist/esm/particles/modules/VelocityOverLifetime.js.map +1 -1
- package/dist/esm/particles/modules/WgslContribution.d.ts +3 -3
- package/dist/esm/particles/modules/WgslContribution.js.map +1 -1
- package/dist/esm/particles/modules/index.d.ts +17 -17
- package/dist/esm/rendering/CallbackRenderPass.js.map +1 -1
- package/dist/esm/rendering/Container.d.ts +2 -2
- package/dist/esm/rendering/Container.js +10 -11
- package/dist/esm/rendering/Container.js.map +1 -1
- package/dist/esm/rendering/Drawable.js.map +1 -1
- package/dist/esm/rendering/RenderBackend.d.ts +6 -6
- package/dist/esm/rendering/RenderBackendType.js.map +1 -1
- package/dist/esm/rendering/RenderNode.d.ts +10 -10
- package/dist/esm/rendering/RenderNode.js +31 -31
- package/dist/esm/rendering/RenderNode.js.map +1 -1
- package/dist/esm/rendering/RenderStats.js.map +1 -1
- package/dist/esm/rendering/RenderTarget.d.ts +2 -2
- package/dist/esm/rendering/RenderTarget.js +5 -5
- package/dist/esm/rendering/RenderTarget.js.map +1 -1
- package/dist/esm/rendering/RenderTargetPass.d.ts +3 -3
- package/dist/esm/rendering/RenderTargetPass.js.map +1 -1
- package/dist/esm/rendering/Renderer.d.ts +2 -2
- package/dist/esm/rendering/RendererRegistry.d.ts +3 -3
- package/dist/esm/rendering/RendererRegistry.js +2 -3
- package/dist/esm/rendering/RendererRegistry.js.map +1 -1
- package/dist/esm/rendering/View.d.ts +3 -3
- package/dist/esm/rendering/View.js +17 -20
- package/dist/esm/rendering/View.js.map +1 -1
- package/dist/esm/rendering/filters/BlurFilter.d.ts +1 -1
- package/dist/esm/rendering/filters/BlurFilter.js +4 -9
- package/dist/esm/rendering/filters/BlurFilter.js.map +1 -1
- package/dist/esm/rendering/filters/ColorFilter.d.ts +1 -1
- package/dist/esm/rendering/filters/ColorFilter.js +3 -9
- package/dist/esm/rendering/filters/ColorFilter.js.map +1 -1
- package/dist/esm/rendering/filters/Filter.d.ts +1 -1
- package/dist/esm/rendering/filters/Filter.js.map +1 -1
- package/dist/esm/rendering/filters/LutFilter.d.ts +87 -0
- package/dist/esm/rendering/filters/LutFilter.js +261 -0
- package/dist/esm/rendering/filters/LutFilter.js.map +1 -0
- package/dist/esm/rendering/filters/WebGl2ShaderFilter.d.ts +2 -2
- package/dist/esm/rendering/filters/WebGl2ShaderFilter.js +7 -14
- package/dist/esm/rendering/filters/WebGl2ShaderFilter.js.map +1 -1
- package/dist/esm/rendering/filters/WebGpuShaderFilter.d.ts +1 -1
- package/dist/esm/rendering/filters/WebGpuShaderFilter.js +16 -11
- package/dist/esm/rendering/filters/WebGpuShaderFilter.js.map +1 -1
- package/dist/esm/rendering/index.d.ts +30 -27
- package/dist/esm/rendering/mesh/Mesh.d.ts +6 -1
- package/dist/esm/rendering/mesh/Mesh.js +3 -1
- package/dist/esm/rendering/mesh/Mesh.js.map +1 -1
- package/dist/esm/rendering/mesh/MeshShader.d.ts +183 -0
- package/dist/esm/rendering/mesh/MeshShader.js +231 -0
- package/dist/esm/rendering/mesh/MeshShader.js.map +1 -0
- package/dist/esm/rendering/primitives/Graphics.d.ts +3 -3
- package/dist/esm/rendering/primitives/Graphics.js +12 -12
- package/dist/esm/rendering/primitives/Graphics.js.map +1 -1
- package/dist/esm/rendering/shader/Shader.js.map +1 -1
- package/dist/esm/rendering/shader/ShaderAttribute.js.map +1 -1
- package/dist/esm/rendering/shader/ShaderUniform.js.map +1 -1
- package/dist/esm/rendering/shader/upgradeFragmentShaderToGl300.js +6 -8
- package/dist/esm/rendering/shader/upgradeFragmentShaderToGl300.js.map +1 -1
- package/dist/esm/rendering/sprite/AnimatedSprite.d.ts +3 -3
- package/dist/esm/rendering/sprite/AnimatedSprite.js.map +1 -1
- package/dist/esm/rendering/sprite/Sprite.d.ts +4 -4
- package/dist/esm/rendering/sprite/Sprite.js +51 -35
- package/dist/esm/rendering/sprite/Sprite.js.map +1 -1
- package/dist/esm/rendering/sprite/Spritesheet.d.ts +5 -9
- package/dist/esm/rendering/sprite/Spritesheet.js +1 -1
- package/dist/esm/rendering/sprite/Spritesheet.js.map +1 -1
- package/dist/esm/rendering/text/DynamicGlyphAtlas.js +3 -9
- package/dist/esm/rendering/text/DynamicGlyphAtlas.js.map +1 -1
- package/dist/esm/rendering/text/Text.js +9 -9
- package/dist/esm/rendering/text/Text.js.map +1 -1
- package/dist/esm/rendering/text/TextLayout.d.ts +2 -2
- package/dist/esm/rendering/text/TextLayout.js.map +1 -1
- package/dist/esm/rendering/text/TextStyle.js.map +1 -1
- package/dist/esm/rendering/text/atlas-singleton.js.map +1 -1
- package/dist/esm/rendering/texture/DataTexture.d.ts +115 -0
- package/dist/esm/rendering/texture/DataTexture.js +173 -0
- package/dist/esm/rendering/texture/DataTexture.js.map +1 -0
- package/dist/esm/rendering/texture/RenderTexture.d.ts +1 -1
- package/dist/esm/rendering/texture/RenderTexture.js +4 -1
- package/dist/esm/rendering/texture/RenderTexture.js.map +1 -1
- package/dist/esm/rendering/texture/Sampler.js.map +1 -1
- package/dist/esm/rendering/texture/Texture.d.ts +2 -2
- package/dist/esm/rendering/texture/Texture.js +8 -5
- package/dist/esm/rendering/texture/Texture.js.map +1 -1
- package/dist/esm/rendering/types.js.map +1 -1
- package/dist/esm/rendering/utils.js.map +1 -1
- package/dist/esm/rendering/video/Video.d.ts +3 -3
- package/dist/esm/rendering/video/Video.js +7 -6
- package/dist/esm/rendering/video/Video.js.map +1 -1
- package/dist/esm/rendering/webgl2/AbstractWebGl2BatchedRenderer.d.ts +6 -6
- package/dist/esm/rendering/webgl2/AbstractWebGl2BatchedRenderer.js +7 -10
- package/dist/esm/rendering/webgl2/AbstractWebGl2BatchedRenderer.js.map +1 -1
- package/dist/esm/rendering/webgl2/AbstractWebGl2Renderer.d.ts +1 -1
- package/dist/esm/rendering/webgl2/AbstractWebGl2Renderer.js +1 -2
- package/dist/esm/rendering/webgl2/AbstractWebGl2Renderer.js.map +1 -1
- package/dist/esm/rendering/webgl2/WebGl2Backend.d.ts +11 -11
- package/dist/esm/rendering/webgl2/WebGl2Backend.js +61 -22
- package/dist/esm/rendering/webgl2/WebGl2Backend.js.map +1 -1
- package/dist/esm/rendering/webgl2/WebGl2MaskCompositor.d.ts +2 -2
- package/dist/esm/rendering/webgl2/WebGl2MaskCompositor.js +6 -8
- package/dist/esm/rendering/webgl2/WebGl2MaskCompositor.js.map +1 -1
- package/dist/esm/rendering/webgl2/WebGl2MeshRenderer.d.ts +7 -4
- package/dist/esm/rendering/webgl2/WebGl2MeshRenderer.js +121 -43
- package/dist/esm/rendering/webgl2/WebGl2MeshRenderer.js.map +1 -1
- package/dist/esm/rendering/webgl2/WebGl2ParticleRenderer.d.ts +1 -1
- package/dist/esm/rendering/webgl2/WebGl2ParticleRenderer.js +10 -18
- package/dist/esm/rendering/webgl2/WebGl2ParticleRenderer.js.map +1 -1
- package/dist/esm/rendering/webgl2/WebGl2RenderBuffer.d.ts +1 -1
- package/dist/esm/rendering/webgl2/WebGl2RenderBuffer.js.map +1 -1
- package/dist/esm/rendering/webgl2/WebGl2ShaderBlock.js.map +1 -1
- package/dist/esm/rendering/webgl2/WebGl2ShaderMappings.js.map +1 -1
- package/dist/esm/rendering/webgl2/WebGl2ShaderProgram.js +54 -22
- package/dist/esm/rendering/webgl2/WebGl2ShaderProgram.js.map +1 -1
- package/dist/esm/rendering/webgl2/WebGl2SpriteRenderer.d.ts +1 -1
- package/dist/esm/rendering/webgl2/WebGl2SpriteRenderer.js +11 -14
- package/dist/esm/rendering/webgl2/WebGl2SpriteRenderer.js.map +1 -1
- package/dist/esm/rendering/webgl2/WebGl2VertexArrayObject.d.ts +1 -1
- package/dist/esm/rendering/webgl2/WebGl2VertexArrayObject.js.map +1 -1
- package/dist/esm/rendering/webgpu/AbstractWebGpuRenderer.d.ts +1 -1
- package/dist/esm/rendering/webgpu/AbstractWebGpuRenderer.js +1 -2
- package/dist/esm/rendering/webgpu/AbstractWebGpuRenderer.js.map +1 -1
- package/dist/esm/rendering/webgpu/WebGpuBackend.d.ts +8 -7
- package/dist/esm/rendering/webgpu/WebGpuBackend.js +104 -37
- package/dist/esm/rendering/webgpu/WebGpuBackend.js.map +1 -1
- package/dist/esm/rendering/webgpu/WebGpuBlendState.js.map +1 -1
- package/dist/esm/rendering/webgpu/WebGpuMaskCompositor.d.ts +2 -2
- package/dist/esm/rendering/webgpu/WebGpuMaskCompositor.js +3 -4
- package/dist/esm/rendering/webgpu/WebGpuMaskCompositor.js.map +1 -1
- package/dist/esm/rendering/webgpu/WebGpuMeshRenderer.d.ts +15 -2
- package/dist/esm/rendering/webgpu/WebGpuMeshRenderer.js +657 -102
- package/dist/esm/rendering/webgpu/WebGpuMeshRenderer.js.map +1 -1
- package/dist/esm/rendering/webgpu/WebGpuParticleRenderer.d.ts +1 -1
- package/dist/esm/rendering/webgpu/WebGpuParticleRenderer.js +100 -56
- package/dist/esm/rendering/webgpu/WebGpuParticleRenderer.js.map +1 -1
- package/dist/esm/rendering/webgpu/WebGpuSpriteRenderer.d.ts +2 -2
- package/dist/esm/rendering/webgpu/WebGpuSpriteRenderer.js +45 -45
- package/dist/esm/rendering/webgpu/WebGpuSpriteRenderer.js.map +1 -1
- package/dist/esm/rendering/webgpu/compute/WebGpuComputePipeline.d.ts +1 -1
- package/dist/esm/rendering/webgpu/compute/index.d.ts +2 -2
- package/dist/esm/resources/AbstractAssetFactory.d.ts +1 -1
- package/dist/esm/resources/AbstractAssetFactory.js.map +1 -1
- package/dist/esm/resources/AssetManifest.d.ts +1 -1
- package/dist/esm/resources/AssetManifest.js +2 -2
- package/dist/esm/resources/AssetManifest.js.map +1 -1
- package/dist/esm/resources/CacheFirstStrategy.d.ts +2 -2
- package/dist/esm/resources/CacheFirstStrategy.js.map +1 -1
- package/dist/esm/resources/CacheStrategy.d.ts +1 -1
- package/dist/esm/resources/FactoryRegistry.d.ts +1 -1
- package/dist/esm/resources/FactoryRegistry.js +2 -3
- package/dist/esm/resources/FactoryRegistry.js.map +1 -1
- package/dist/esm/resources/IndexedDbDatabase.d.ts +1 -1
- package/dist/esm/resources/IndexedDbDatabase.js +11 -14
- package/dist/esm/resources/IndexedDbDatabase.js.map +1 -1
- package/dist/esm/resources/IndexedDbStore.d.ts +1 -1
- package/dist/esm/resources/IndexedDbStore.js +2 -7
- package/dist/esm/resources/IndexedDbStore.js.map +1 -1
- package/dist/esm/resources/Loader.d.ts +9 -9
- package/dist/esm/resources/Loader.js +48 -35
- package/dist/esm/resources/Loader.js.map +1 -1
- package/dist/esm/resources/NetworkOnlyStrategy.d.ts +2 -2
- package/dist/esm/resources/NetworkOnlyStrategy.js.map +1 -1
- package/dist/esm/resources/factories/BinaryFactory.js.map +1 -1
- package/dist/esm/resources/factories/FontFactory.js +1 -1
- package/dist/esm/resources/factories/FontFactory.js.map +1 -1
- package/dist/esm/resources/factories/ImageFactory.js +4 -4
- package/dist/esm/resources/factories/ImageFactory.js.map +1 -1
- package/dist/esm/resources/factories/JsonFactory.d.ts +1 -1
- package/dist/esm/resources/factories/JsonFactory.js +1 -1
- package/dist/esm/resources/factories/JsonFactory.js.map +1 -1
- package/dist/esm/resources/factories/MusicFactory.d.ts +1 -1
- package/dist/esm/resources/factories/MusicFactory.js +4 -4
- package/dist/esm/resources/factories/MusicFactory.js.map +1 -1
- package/dist/esm/resources/factories/SoundFactory.d.ts +1 -1
- package/dist/esm/resources/factories/SoundFactory.js +3 -3
- package/dist/esm/resources/factories/SoundFactory.js.map +1 -1
- package/dist/esm/resources/factories/SvgFactory.js +3 -3
- package/dist/esm/resources/factories/SvgFactory.js.map +1 -1
- package/dist/esm/resources/factories/TextFactory.js +1 -1
- package/dist/esm/resources/factories/TextFactory.js.map +1 -1
- package/dist/esm/resources/factories/TextureFactory.d.ts +1 -1
- package/dist/esm/resources/factories/TextureFactory.js +3 -3
- package/dist/esm/resources/factories/TextureFactory.js.map +1 -1
- package/dist/esm/resources/factories/VideoFactory.d.ts +2 -2
- package/dist/esm/resources/factories/VideoFactory.js +5 -5
- package/dist/esm/resources/factories/VideoFactory.js.map +1 -1
- package/dist/esm/resources/factories/VttFactory.d.ts +2 -2
- package/dist/esm/resources/factories/VttFactory.js +6 -6
- package/dist/esm/resources/factories/VttFactory.js.map +1 -1
- package/dist/esm/resources/factories/WasmFactory.js.map +1 -1
- package/dist/esm/resources/index.d.ts +11 -11
- package/dist/esm/resources/utils.js +30 -25
- package/dist/esm/resources/utils.js.map +1 -1
- package/dist/exo.esm.js +26260 -24256
- package/dist/exo.esm.js.map +1 -1
- package/package.json +15 -4
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
import { inRange } from './utils.js';
|
|
2
|
-
import { Size } from './Size.js';
|
|
3
|
-
import { Interval } from './Interval.js';
|
|
4
|
-
import { ObservableVector } from './ObservableVector.js';
|
|
5
1
|
import { CollisionType } from './Collision.js';
|
|
6
2
|
import { intersectionPointRect, intersectionLineRect, intersectionRectEllipse, intersectionRectCircle, intersectionRectPoly, intersectionRectRect, intersectionSat, getCollisionEllipseRectangle, getCollisionCircleRectangle, getCollisionSat, getCollisionRectangleRectangle } from './collision-detection.js';
|
|
3
|
+
import { Interval } from './Interval.js';
|
|
4
|
+
import { ObservableVector } from './ObservableVector.js';
|
|
5
|
+
import { Size } from './Size.js';
|
|
6
|
+
import { inRange } from './utils.js';
|
|
7
7
|
|
|
8
8
|
let temp = null;
|
|
9
9
|
const noop = () => { };
|
|
@@ -106,22 +106,17 @@ class Rectangle {
|
|
|
106
106
|
return new Rectangle(this.x, this.y, this.width, this.height);
|
|
107
107
|
}
|
|
108
108
|
equals({ x, y, width, height } = {}) {
|
|
109
|
-
return (x === undefined || this.x === x)
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
109
|
+
return ((x === undefined || this.x === x) &&
|
|
110
|
+
(y === undefined || this.y === y) &&
|
|
111
|
+
(width === undefined || this.width === width) &&
|
|
112
|
+
(height === undefined || this.height === height));
|
|
113
113
|
}
|
|
114
114
|
getBounds() {
|
|
115
115
|
return this.clone();
|
|
116
116
|
}
|
|
117
117
|
getNormals() {
|
|
118
118
|
if (this._normalsDirty || this._normals === null) {
|
|
119
|
-
this._updateNormals(this._normals || (this._normals = [
|
|
120
|
-
new ObservableVector(noop),
|
|
121
|
-
new ObservableVector(noop),
|
|
122
|
-
new ObservableVector(noop),
|
|
123
|
-
new ObservableVector(noop),
|
|
124
|
-
]));
|
|
119
|
+
this._updateNormals(this._normals || (this._normals = [new ObservableVector(noop), new ObservableVector(noop), new ObservableVector(noop), new ObservableVector(noop)]));
|
|
125
120
|
this._normalsDirty = false;
|
|
126
121
|
}
|
|
127
122
|
return this._normals;
|
|
@@ -140,7 +135,10 @@ class Rectangle {
|
|
|
140
135
|
*/
|
|
141
136
|
transform(matrix, result = this) {
|
|
142
137
|
const point = tempPoint.set(this.left, this.top).transform(matrix);
|
|
143
|
-
let minX = point.x
|
|
138
|
+
let minX = point.x;
|
|
139
|
+
let maxX = point.x;
|
|
140
|
+
let minY = point.y;
|
|
141
|
+
let maxY = point.y;
|
|
144
142
|
point.set(this.left, this.bottom).transform(matrix);
|
|
145
143
|
minX = Math.min(minX, point.x);
|
|
146
144
|
minY = Math.min(minY, point.y);
|
|
@@ -163,39 +161,47 @@ class Rectangle {
|
|
|
163
161
|
}
|
|
164
162
|
/** Return `true` when `rect` is entirely within this rectangle (all four edges inside). */
|
|
165
163
|
containsRect(rect) {
|
|
166
|
-
return inRange(rect.left, this.left, this.right)
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
164
|
+
return (inRange(rect.left, this.left, this.right) &&
|
|
165
|
+
inRange(rect.right, this.left, this.right) &&
|
|
166
|
+
inRange(rect.top, this.top, this.bottom) &&
|
|
167
|
+
inRange(rect.bottom, this.top, this.bottom));
|
|
170
168
|
}
|
|
171
169
|
intersectsWith(target) {
|
|
172
170
|
switch (target.collisionType) {
|
|
173
171
|
case CollisionType.SceneNode:
|
|
174
|
-
return target.isAlignedBox
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
case CollisionType.
|
|
178
|
-
|
|
179
|
-
case CollisionType.Circle:
|
|
180
|
-
|
|
181
|
-
case CollisionType.
|
|
182
|
-
|
|
183
|
-
|
|
172
|
+
return target.isAlignedBox ? intersectionRectRect(this, target.getBounds()) : intersectionSat(this, target);
|
|
173
|
+
case CollisionType.Rectangle:
|
|
174
|
+
return intersectionRectRect(this, target);
|
|
175
|
+
case CollisionType.Polygon:
|
|
176
|
+
return intersectionRectPoly(this, target);
|
|
177
|
+
case CollisionType.Circle:
|
|
178
|
+
return intersectionRectCircle(this, target);
|
|
179
|
+
case CollisionType.Ellipse:
|
|
180
|
+
return intersectionRectEllipse(this, target);
|
|
181
|
+
case CollisionType.Line:
|
|
182
|
+
return intersectionLineRect(target, this);
|
|
183
|
+
case CollisionType.Point:
|
|
184
|
+
return intersectionPointRect(target, this);
|
|
185
|
+
default:
|
|
186
|
+
return false;
|
|
184
187
|
}
|
|
185
188
|
}
|
|
186
189
|
collidesWith(target) {
|
|
187
190
|
switch (target.collisionType) {
|
|
188
191
|
case CollisionType.SceneNode:
|
|
189
|
-
return target.isAlignedBox
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
case CollisionType.
|
|
193
|
-
|
|
194
|
-
case CollisionType.Circle:
|
|
195
|
-
|
|
192
|
+
return target.isAlignedBox ? getCollisionRectangleRectangle(this, target.getBounds()) : getCollisionSat(this, target);
|
|
193
|
+
case CollisionType.Rectangle:
|
|
194
|
+
return getCollisionRectangleRectangle(this, target);
|
|
195
|
+
case CollisionType.Polygon:
|
|
196
|
+
return getCollisionSat(this, target);
|
|
197
|
+
case CollisionType.Circle:
|
|
198
|
+
return getCollisionCircleRectangle(target, this, true);
|
|
199
|
+
case CollisionType.Ellipse:
|
|
200
|
+
return getCollisionEllipseRectangle(target, this, true);
|
|
196
201
|
// case CollisionType.Line: return intersectionLineRect(target as Line, this);
|
|
197
202
|
// case CollisionType.Point: return intersectionPointRect(target as Vector, this);
|
|
198
|
-
default:
|
|
203
|
+
default:
|
|
204
|
+
return null;
|
|
199
205
|
}
|
|
200
206
|
}
|
|
201
207
|
destroy() {
|
|
@@ -206,10 +212,22 @@ class Rectangle {
|
|
|
206
212
|
}
|
|
207
213
|
}
|
|
208
214
|
_updateNormals(normals) {
|
|
209
|
-
normals[0]
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
215
|
+
normals[0]
|
|
216
|
+
.set(this.right - this.left, 0)
|
|
217
|
+
.rperp()
|
|
218
|
+
.normalize();
|
|
219
|
+
normals[1]
|
|
220
|
+
.set(0, this.bottom - this.top)
|
|
221
|
+
.rperp()
|
|
222
|
+
.normalize();
|
|
223
|
+
normals[2]
|
|
224
|
+
.set(this.left - this.right, 0)
|
|
225
|
+
.rperp()
|
|
226
|
+
.normalize();
|
|
227
|
+
normals[3]
|
|
228
|
+
.set(0, this.top - this.bottom)
|
|
229
|
+
.rperp()
|
|
230
|
+
.normalize();
|
|
213
231
|
}
|
|
214
232
|
static get temp() {
|
|
215
233
|
if (temp === 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,5 @@
|
|
|
1
|
-
import { Vector } from '@/math/Vector';
|
|
2
1
|
import type { Cloneable } from '@/core/types';
|
|
2
|
+
import { Vector } from '@/math/Vector';
|
|
3
3
|
/**
|
|
4
4
|
* Mutable line segment defined by start and end {@link Vector}s. Unlike
|
|
5
5
|
* {@link Line} this type does not implement {@link ShapeLike} — it is a
|
package/dist/esm/math/Segment.js
CHANGED
|
@@ -65,10 +65,10 @@ class Segment {
|
|
|
65
65
|
return new Segment(this.startX, this.startY, this.endX, this.endY);
|
|
66
66
|
}
|
|
67
67
|
equals({ startX, startY, endX, endY } = {}) {
|
|
68
|
-
return (startX === undefined || this.startX === startX)
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
68
|
+
return ((startX === undefined || this.startX === startX) &&
|
|
69
|
+
(startY === undefined || this.startY === startY) &&
|
|
70
|
+
(endX === undefined || this.endX === endX) &&
|
|
71
|
+
(endY === undefined || this.endY === endY));
|
|
72
72
|
}
|
|
73
73
|
destroy() {
|
|
74
74
|
this._startPoint.destroy();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Segment.js","sources":["../../../../src/math/Segment.ts"],"sourcesContent":[null],"names":[],"mappings":";;AAGA,IAAI,IAAI,GAAmB,IAAI;AAE/B;;;;;;AAMG;MACU,OAAO,CAAA;
|
|
1
|
+
{"version":3,"file":"Segment.js","sources":["../../../../src/math/Segment.ts"],"sourcesContent":[null],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import type { Collidable } from '@/math/Collision';
|
|
2
1
|
import type { Cloneable, Destroyable, HasBoundingBox } from '@/core/types';
|
|
2
|
+
import type { Collidable } from '@/math/Collision';
|
|
3
3
|
/**
|
|
4
4
|
* Full shape contract: a {@link Collidable} that can also be cloned, destroyed,
|
|
5
5
|
* and queried for its axis-aligned bounding box. All concrete shape classes
|
package/dist/esm/math/Size.js
CHANGED
|
@@ -61,8 +61,7 @@ class Size {
|
|
|
61
61
|
return new Size(this._width, this._height);
|
|
62
62
|
}
|
|
63
63
|
equals({ width, height } = {}) {
|
|
64
|
-
return (width === undefined || this.width === width)
|
|
65
|
-
&& (height === undefined || this.height === height);
|
|
64
|
+
return (width === undefined || this.width === width) && (height === undefined || this.height === height);
|
|
66
65
|
}
|
|
67
66
|
destroy() {
|
|
68
67
|
// no-op — pure value class, kept for Destroyable interface conformance
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Size.js","sources":["../../../../src/math/Size.ts"],"sourcesContent":[null],"names":[],"mappings":"AAEA,IAAI,IAAI,GAAgB,IAAI;AAE5B;;;;;;;;AAQG;MACU,IAAI,CAAA;
|
|
1
|
+
{"version":3,"file":"Size.js","sources":["../../../../src/math/Size.ts"],"sourcesContent":[null],"names":[],"mappings":"AAEA,IAAI,IAAI,GAAgB,IAAI;AAE5B;;;;;;;;AAQG;MACU,IAAI,CAAA;AACL,IAAA,MAAM;AACN,IAAA,OAAO;AAEjB,IAAA,WAAA,CAAmB,KAAK,GAAG,CAAC,EAAE,MAAM,GAAG,CAAC,EAAA;AACtC,QAAA,IAAI,CAAC,MAAM,GAAG,KAAK;AACnB,QAAA,IAAI,CAAC,OAAO,GAAG,MAAM;IACvB;AAEA,IAAA,IAAW,KAAK,GAAA;QACd,OAAO,IAAI,CAAC,MAAM;IACpB;IAEA,IAAW,KAAK,CAAC,KAAa,EAAA;AAC5B,QAAA,IAAI,CAAC,MAAM,GAAG,KAAK;IACrB;AAEA,IAAA,IAAW,MAAM,GAAA;QACf,OAAO,IAAI,CAAC,OAAO;IACrB;IAEA,IAAW,MAAM,CAAC,MAAc,EAAA;AAC9B,QAAA,IAAI,CAAC,OAAO,GAAG,MAAM;IACvB;AAEO,IAAA,GAAG,CAAC,KAAa,EAAE,MAAA,GAAiB,KAAK,EAAA;AAC9C,QAAA,IAAI,CAAC,MAAM,GAAG,KAAK;AACnB,QAAA,IAAI,CAAC,OAAO,GAAG,MAAM;AAErB,QAAA,OAAO,IAAI;IACb;AAEO,IAAA,GAAG,CAAC,KAAa,EAAE,MAAA,GAAiB,KAAK,EAAA;AAC9C,QAAA,IAAI,CAAC,MAAM,IAAI,KAAK;AACpB,QAAA,IAAI,CAAC,OAAO,IAAI,MAAM;AAEtB,QAAA,OAAO,IAAI;IACb;AAEO,IAAA,QAAQ,CAAC,KAAa,EAAE,MAAA,GAAiB,KAAK,EAAA;AACnD,QAAA,IAAI,CAAC,MAAM,IAAI,KAAK;AACpB,QAAA,IAAI,CAAC,OAAO,IAAI,MAAM;AAEtB,QAAA,OAAO,IAAI;IACb;AAEO,IAAA,KAAK,CAAC,KAAa,EAAE,MAAA,GAAiB,KAAK,EAAA;AAChD,QAAA,IAAI,CAAC,MAAM,IAAI,KAAK;AACpB,QAAA,IAAI,CAAC,OAAO,IAAI,MAAM;AAEtB,QAAA,OAAO,IAAI;IACb;AAEO,IAAA,MAAM,CAAC,KAAa,EAAE,MAAA,GAAiB,KAAK,EAAA;AACjD,QAAA,IAAI,CAAC,MAAM,IAAI,KAAK;AACpB,QAAA,IAAI,CAAC,OAAO,IAAI,MAAM;AAEtB,QAAA,OAAO,IAAI;IACb;AAEO,IAAA,IAAI,CAAC,IAAuC,EAAA;AACjD,QAAA,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,KAAK;AACxB,QAAA,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,MAAM;AAE1B,QAAA,OAAO,IAAI;IACb;IAEO,KAAK,GAAA;QACV,OAAO,IAAI,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,OAAO,CAAS;IACpD;AAEO,IAAA,MAAM,CAAC,EAAE,KAAK,EAAE,MAAM,KAAoB,EAAE,EAAA;QACjD,OAAO,CAAC,KAAK,KAAK,SAAS,IAAI,IAAI,CAAC,KAAK,KAAK,KAAK,MAAM,MAAM,KAAK,SAAS,IAAI,IAAI,CAAC,MAAM,KAAK,MAAM,CAAC;IAC1G;IAEO,OAAO,GAAA;;IAEd;IAEO,OAAgB,IAAI,GAAG,IAAI,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC;AAErC,IAAA,WAAW,IAAI,GAAA;AACpB,QAAA,IAAI,IAAI,KAAK,IAAI,EAAE;AACjB,YAAA,IAAI,GAAG,IAAI,IAAI,EAAE;QACnB;AAEA,QAAA,OAAO,IAAI;IACb;;;;;"}
|
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
import type { ShapeLike } from '@/math/ShapeLike';
|
|
2
|
-
import { Interval } from '@/math/Interval';
|
|
3
1
|
import type { Collidable, CollisionResponse } from '@/math/Collision';
|
|
4
2
|
import { CollisionType } from '@/math/Collision';
|
|
3
|
+
import { Interval } from '@/math/Interval';
|
|
5
4
|
import { Rectangle } from '@/math/Rectangle';
|
|
5
|
+
import type { ShapeLike } from '@/math/ShapeLike';
|
|
6
6
|
import { AbstractVector } from './AbstractVector';
|
|
7
7
|
/**
|
|
8
8
|
* Concrete mutable 2D vector with full {@link AbstractVector} arithmetic and
|
|
@@ -24,10 +24,10 @@ export declare class Vector extends AbstractVector implements ShapeLike {
|
|
|
24
24
|
clone(): this;
|
|
25
25
|
copy(vector: Vector): this;
|
|
26
26
|
intersectsWith(target: Collidable): boolean;
|
|
27
|
-
collidesWith(
|
|
27
|
+
collidesWith(_target: Collidable): CollisionResponse | null;
|
|
28
28
|
getBounds(): Rectangle;
|
|
29
29
|
contains(x: number, y: number): boolean;
|
|
30
|
-
getNormals():
|
|
30
|
+
getNormals(): Vector[];
|
|
31
31
|
project(axis: Vector, interval?: Interval): Interval;
|
|
32
32
|
destroy(): void;
|
|
33
33
|
static get temp(): Vector;
|
package/dist/esm/math/Vector.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { Interval } from './Interval.js';
|
|
2
1
|
import { CollisionType } from './Collision.js';
|
|
3
2
|
import { intersectionPointPoint, intersectionPointLine, intersectionPointEllipse, intersectionPointCircle, intersectionPointPoly, intersectionPointRect } from './collision-detection.js';
|
|
3
|
+
import { Interval } from './Interval.js';
|
|
4
4
|
import { Rectangle } from './Rectangle.js';
|
|
5
5
|
import { AbstractVector } from './AbstractVector.js';
|
|
6
6
|
|
|
@@ -36,17 +36,25 @@ class Vector extends AbstractVector {
|
|
|
36
36
|
}
|
|
37
37
|
intersectsWith(target) {
|
|
38
38
|
switch (target.collisionType) {
|
|
39
|
-
case CollisionType.SceneNode:
|
|
40
|
-
|
|
41
|
-
case CollisionType.
|
|
42
|
-
|
|
43
|
-
case CollisionType.
|
|
44
|
-
|
|
45
|
-
case CollisionType.
|
|
46
|
-
|
|
39
|
+
case CollisionType.SceneNode:
|
|
40
|
+
return intersectionPointRect(this, target.getBounds());
|
|
41
|
+
case CollisionType.Rectangle:
|
|
42
|
+
return intersectionPointRect(this, target);
|
|
43
|
+
case CollisionType.Polygon:
|
|
44
|
+
return intersectionPointPoly(this, target);
|
|
45
|
+
case CollisionType.Circle:
|
|
46
|
+
return intersectionPointCircle(this, target);
|
|
47
|
+
case CollisionType.Ellipse:
|
|
48
|
+
return intersectionPointEllipse(this, target);
|
|
49
|
+
case CollisionType.Line:
|
|
50
|
+
return intersectionPointLine(this, target);
|
|
51
|
+
case CollisionType.Point:
|
|
52
|
+
return intersectionPointPoint(this, target);
|
|
53
|
+
default:
|
|
54
|
+
return false;
|
|
47
55
|
}
|
|
48
56
|
}
|
|
49
|
-
collidesWith(
|
|
57
|
+
collidesWith(_target) {
|
|
50
58
|
return null;
|
|
51
59
|
}
|
|
52
60
|
getBounds() {
|
|
@@ -56,9 +64,7 @@ class Vector extends AbstractVector {
|
|
|
56
64
|
return intersectionPointPoint(Vector.temp.set(x, y), this);
|
|
57
65
|
}
|
|
58
66
|
getNormals() {
|
|
59
|
-
return [
|
|
60
|
-
this.clone().rperp().normalize()
|
|
61
|
-
];
|
|
67
|
+
return [this.clone().rperp().normalize()];
|
|
62
68
|
}
|
|
63
69
|
project(axis, interval = new Interval()) {
|
|
64
70
|
return interval;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Vector.js","sources":["../../../../src/math/Vector.ts"],"sourcesContent":[null],"names":[],"mappings":";;;;;;AAqBA,IAAI,IAAI,GAAkB,IAAI;AAE9B;;;;;;;;;;;AAWG;AACG,MAAO,MAAO,SAAQ,cAAc,CAAA;
|
|
1
|
+
{"version":3,"file":"Vector.js","sources":["../../../../src/math/Vector.ts"],"sourcesContent":[null],"names":[],"mappings":"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"}
|
|
@@ -1,10 +1,10 @@
|
|
|
1
|
-
import type { Collidable, CollisionResponse } from '@/math/Collision';
|
|
2
1
|
import type { Circle } from '@/math/Circle';
|
|
2
|
+
import type { Collidable, CollisionResponse } from '@/math/Collision';
|
|
3
3
|
import type { Ellipse } from '@/math/Ellipse';
|
|
4
4
|
import type { Line } from '@/math/Line';
|
|
5
|
+
import type { PointLike } from '@/math/PointLike';
|
|
5
6
|
import type { Polygon } from '@/math/Polygon';
|
|
6
7
|
import type { Rectangle } from '@/math/Rectangle';
|
|
7
|
-
import type { PointLike } from '@/math/PointLike';
|
|
8
8
|
/**
|
|
9
9
|
* INTERSECTION
|
|
10
10
|
*/
|
|
@@ -84,4 +84,4 @@ declare const getCollisionPolygonCircle: (polygon: Polygon, circle: Circle, swap
|
|
|
84
84
|
* Returns `null` when they do not overlap.
|
|
85
85
|
*/
|
|
86
86
|
declare const getCollisionSat: (shapeA: Collidable, shapeB: Collidable) => CollisionResponse | null;
|
|
87
|
-
export {
|
|
87
|
+
export { getCollisionCircleCircle, getCollisionCircleRectangle, getCollisionEllipseCircle, getCollisionEllipseRectangle, getCollisionPolygonCircle, getCollisionRectangleRectangle, getCollisionSat, intersectionCircleCircle, intersectionCircleEllipse, intersectionCirclePoly, intersectionEllipseEllipse, intersectionEllipsePoly, intersectionLineCircle, intersectionLineEllipse, intersectionLineLine, intersectionLinePoly, intersectionLineRect, intersectionPointCircle, intersectionPointEllipse, intersectionPointLine, intersectionPointPoint, intersectionPointPoly, intersectionPointRect, intersectionPolyPoly, intersectionRectCircle, intersectionRectEllipse, intersectionRectPoly, intersectionRectRect, intersectionSat, };
|
|
@@ -31,23 +31,23 @@ const intersectionSat = (shapeA, shapeB) => {
|
|
|
31
31
|
}
|
|
32
32
|
return true;
|
|
33
33
|
};
|
|
34
|
-
const intersectionPointPoint = (pointA, pointB, threshold = 0) =>
|
|
35
|
-
const intersectionPointLine = (point, line, threshold = 0.1) =>
|
|
36
|
-
const intersectionPointRect = (point, rectangle) =>
|
|
37
|
-
const intersectionPointCircle = (point, circle) =>
|
|
38
|
-
const intersectionPointEllipse = (point, ellipse) =>
|
|
39
|
-
const intersectionPointPoly = (point, polygon) =>
|
|
40
|
-
const intersectionLineLine = (lineA, lineB) =>
|
|
34
|
+
const intersectionPointPoint = (pointA, pointB, threshold = 0) => intersectionPointPoint$1(pointA, pointB, threshold);
|
|
35
|
+
const intersectionPointLine = (point, line, threshold = 0.1) => intersectionPointLineSegment(point, line.fromPosition, line.toPosition, threshold);
|
|
36
|
+
const intersectionPointRect = (point, rectangle) => intersectionPointRect$1(point, rectangle);
|
|
37
|
+
const intersectionPointCircle = (point, circle) => intersectionPointCircle$1(point, circle);
|
|
38
|
+
const intersectionPointEllipse = (point, ellipse) => intersectionPointEllipse$1(point, ellipse);
|
|
39
|
+
const intersectionPointPoly = (point, polygon) => intersectionPointPoly$1(point, polygon);
|
|
40
|
+
const intersectionLineLine = (lineA, lineB) => intersectionLineLineSegments(lineA.fromPosition, lineA.toPosition, lineB.fromPosition, lineB.toPosition);
|
|
41
41
|
const intersectionLineRect = (line, rectangle) => {
|
|
42
42
|
const { x, y, width, height } = rectangle;
|
|
43
43
|
const topLeft = { x, y };
|
|
44
44
|
const topRight = { x: x + width, y };
|
|
45
45
|
const bottomLeft = { x, y: y + height };
|
|
46
46
|
const bottomRight = { x: x + width, y: y + height };
|
|
47
|
-
return intersectionLineLineSegments(line.fromPosition, line.toPosition, topLeft, bottomLeft)
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
47
|
+
return (intersectionLineLineSegments(line.fromPosition, line.toPosition, topLeft, bottomLeft) ||
|
|
48
|
+
intersectionLineLineSegments(line.fromPosition, line.toPosition, topRight, bottomRight) ||
|
|
49
|
+
intersectionLineLineSegments(line.fromPosition, line.toPosition, topLeft, topRight) ||
|
|
50
|
+
intersectionLineLineSegments(line.fromPosition, line.toPosition, bottomLeft, bottomRight));
|
|
51
51
|
};
|
|
52
52
|
const intersectionLineCircle = (line, circle) => {
|
|
53
53
|
if (intersectionPointCircle(line.fromPosition, circle) || intersectionPointCircle(line.toPosition, circle)) {
|
|
@@ -59,9 +59,9 @@ const intersectionLineCircle = (line, circle) => {
|
|
|
59
59
|
if (len === 0) {
|
|
60
60
|
return false;
|
|
61
61
|
}
|
|
62
|
-
const dot = ((
|
|
63
|
-
const closestX = x1 +
|
|
64
|
-
const closestY = y1 +
|
|
62
|
+
const dot = ((cx - x1) * (x2 - x1) + (cy - y1) * (y2 - y1)) / (len * len);
|
|
63
|
+
const closestX = x1 + dot * (x2 - x1);
|
|
64
|
+
const closestY = y1 + dot * (y2 - y1);
|
|
65
65
|
if (!intersectionPointLineSegment({ x: closestX, y: closestY }, line.fromPosition, line.toPosition)) {
|
|
66
66
|
return false;
|
|
67
67
|
}
|
|
@@ -78,16 +78,16 @@ const intersectionLineEllipse = (line, ellipse) => {
|
|
|
78
78
|
const y2 = (line.toY - centerY) / ry;
|
|
79
79
|
const dx = x2 - x1;
|
|
80
80
|
const dy = y2 - y1;
|
|
81
|
-
const a =
|
|
82
|
-
const b = 2 * (
|
|
83
|
-
const c =
|
|
81
|
+
const a = dx * dx + dy * dy;
|
|
82
|
+
const b = 2 * (x1 * dx + y1 * dy);
|
|
83
|
+
const c = x1 * x1 + y1 * y1 - 1;
|
|
84
84
|
if (c <= 0) {
|
|
85
85
|
return true;
|
|
86
86
|
}
|
|
87
87
|
if (a <= Number.EPSILON) {
|
|
88
88
|
return false;
|
|
89
89
|
}
|
|
90
|
-
const discriminant =
|
|
90
|
+
const discriminant = b * b - 4 * a * c;
|
|
91
91
|
if (discriminant < 0) {
|
|
92
92
|
return false;
|
|
93
93
|
}
|
|
@@ -108,16 +108,16 @@ const intersectionLinePoly = (line, polygon) => {
|
|
|
108
108
|
}
|
|
109
109
|
return false;
|
|
110
110
|
};
|
|
111
|
-
const intersectionRectRect = (rectA, rectB) =>
|
|
111
|
+
const intersectionRectRect = (rectA, rectB) => intersectionRectRect$1(rectA, rectB);
|
|
112
112
|
const intersectionRectCircle = ({ x: rx, y: ry, width, height }, { x: cx, y: cy, radius }) => {
|
|
113
113
|
const distX = clamp(cx, rx, rx + width);
|
|
114
114
|
const distY = clamp(cy, ry, ry + height);
|
|
115
115
|
return getDistance(cx, cy, distX, distY) <= radius;
|
|
116
116
|
};
|
|
117
|
-
const intersectionRectEllipse = (rectangle, ellipse) =>
|
|
117
|
+
const intersectionRectEllipse = (rectangle, ellipse) => polygonsIntersect(buildRectanglePoints(rectangle), buildEllipsePoints(ellipse));
|
|
118
118
|
const intersectionRectPoly = (rectangle, polygon) => intersectionSat(rectangle, polygon);
|
|
119
|
-
const intersectionCircleCircle = ({ x: x1, y: y1, radius: r1 }, { x: x2, y: y2, radius: r2 }) =>
|
|
120
|
-
const intersectionCircleEllipse = (circle, ellipse) =>
|
|
119
|
+
const intersectionCircleCircle = ({ x: x1, y: y1, radius: r1 }, { x: x2, y: y2, radius: r2 }) => getDistance(x1, y1, x2, y2) <= r1 + r2;
|
|
120
|
+
const intersectionCircleEllipse = (circle, ellipse) => polygonsIntersect(buildCirclePoints(circle), buildEllipsePoints(ellipse));
|
|
121
121
|
const shouldExcludeLeftVoronoi = (circleX, circleY, prevPoint, prevEdge, pointX, pointY, radius, edgeX, edgeY) => {
|
|
122
122
|
if (getVoronoiRegion(edgeX, edgeY, pointX, pointY) !== VoronoiRegion.left) {
|
|
123
123
|
return false;
|
|
@@ -139,7 +139,7 @@ const shouldExcludeMiddleVoronoi = (pointX, pointY, radius, edgeX, edgeY) => {
|
|
|
139
139
|
if (normalLength === 0) {
|
|
140
140
|
return false;
|
|
141
141
|
}
|
|
142
|
-
const distance = (
|
|
142
|
+
const distance = (pointX * normalX + pointY * normalY) / normalLength;
|
|
143
143
|
return distance > 0 && Math.abs(distance) > radius;
|
|
144
144
|
};
|
|
145
145
|
const intersectionCirclePoly = ({ x: cx, y: cy, radius }, { x: px, y: py, points, edges }) => {
|
|
@@ -172,8 +172,8 @@ const intersectionCirclePoly = ({ x: cx, y: cy, radius }, { x: px, y: py, points
|
|
|
172
172
|
}
|
|
173
173
|
return true;
|
|
174
174
|
};
|
|
175
|
-
const intersectionEllipseEllipse = (ellipseA, ellipseB) =>
|
|
176
|
-
const intersectionEllipsePoly = (ellipse, polygon) =>
|
|
175
|
+
const intersectionEllipseEllipse = (ellipseA, ellipseB) => polygonsIntersect(buildEllipsePoints(ellipseA), buildEllipsePoints(ellipseB));
|
|
176
|
+
const intersectionEllipsePoly = (ellipse, polygon) => polygonsIntersect(buildEllipsePoints(ellipse), buildPolygonWorldPoints(polygon));
|
|
177
177
|
const intersectionPolyPoly = (polygonA, polygonB) => intersectionSat(polygonA, polygonB);
|
|
178
178
|
/**
|
|
179
179
|
* COLLISION DETECTION
|
|
@@ -185,10 +185,10 @@ const intersectionPolyPoly = (polygonA, polygonB) => intersectionSat(polygonA, p
|
|
|
185
185
|
* containment flags are meaningful.
|
|
186
186
|
*/
|
|
187
187
|
const getCollisionRectangleRectangle = (rectA, rectB) => {
|
|
188
|
-
if (
|
|
188
|
+
if (rectB.left > rectA.right || rectB.top > rectA.bottom) {
|
|
189
189
|
return null;
|
|
190
190
|
}
|
|
191
|
-
if (
|
|
191
|
+
if (rectA.left > rectB.right || rectA.top > rectB.bottom) {
|
|
192
192
|
return null;
|
|
193
193
|
}
|
|
194
194
|
const overlapX = Math.min(rectA.right, rectB.right) - Math.max(rectA.left, rectB.left);
|
|
@@ -201,9 +201,9 @@ const getCollisionRectangleRectangle = (rectA, rectB) => {
|
|
|
201
201
|
const centerAy = rectA.top + rectA.height * 0.5;
|
|
202
202
|
const centerBx = rectB.left + rectB.width * 0.5;
|
|
203
203
|
const centerBy = rectB.top + rectB.height * 0.5;
|
|
204
|
-
let normalX
|
|
205
|
-
let normalY
|
|
206
|
-
let overlap
|
|
204
|
+
let normalX;
|
|
205
|
+
let normalY;
|
|
206
|
+
let overlap;
|
|
207
207
|
if (overlapX < overlapY) {
|
|
208
208
|
overlap = overlapX;
|
|
209
209
|
normalX = centerBx < centerAx ? -1 : 1;
|
|
@@ -230,7 +230,7 @@ const getCollisionRectangleRectangle = (rectA, rectB) => {
|
|
|
230
230
|
const getCollisionCircleCircle = (circleA, circleB) => {
|
|
231
231
|
const difference = circleB.position.clone().subtract(circleA.x, circleA.y);
|
|
232
232
|
const distance = difference.length;
|
|
233
|
-
const overlap =
|
|
233
|
+
const overlap = circleA.radius + circleB.radius - distance;
|
|
234
234
|
if (overlap < 0) {
|
|
235
235
|
difference.destroy();
|
|
236
236
|
return null;
|
|
@@ -241,8 +241,8 @@ const getCollisionCircleCircle = (circleA, circleB) => {
|
|
|
241
241
|
shapeA: circleA,
|
|
242
242
|
shapeB: circleB,
|
|
243
243
|
overlap,
|
|
244
|
-
shapeAinB:
|
|
245
|
-
shapeBinA:
|
|
244
|
+
shapeAinB: circleA.radius <= circleB.radius && distance <= circleB.radius - circleA.radius,
|
|
245
|
+
shapeBinA: circleB.radius <= circleA.radius && distance <= circleA.radius - circleB.radius,
|
|
246
246
|
projectionN,
|
|
247
247
|
projectionV,
|
|
248
248
|
};
|
|
@@ -274,13 +274,13 @@ const getCollisionCircleRectangle = (circle, rect, swap = false) => {
|
|
|
274
274
|
const minHalf = Math.min(halfWidth, halfHeight);
|
|
275
275
|
const maxHalf = Math.max(halfWidth, halfHeight);
|
|
276
276
|
const centerDistance = getDistance(circle.x, circle.y, rect.left + halfWidth, rect.top + halfHeight);
|
|
277
|
-
const containsA =
|
|
278
|
-
const containsB =
|
|
277
|
+
const containsA = radius <= minHalf && centerDistance <= minHalf - radius;
|
|
278
|
+
const containsB = maxHalf <= radius && centerDistance <= radius - maxHalf;
|
|
279
279
|
// Normal points from the rect surface toward the circle. When the circle
|
|
280
280
|
// center lies inside the rect (distance == 0) fall back to a unit vector
|
|
281
281
|
// pointing along the closer axis so callers always receive a usable MTV.
|
|
282
|
-
let normalX
|
|
283
|
-
let normalY
|
|
282
|
+
let normalX;
|
|
283
|
+
let normalY;
|
|
284
284
|
if (distance > 0) {
|
|
285
285
|
normalX = dx / distance;
|
|
286
286
|
normalY = dy / distance;
|
|
@@ -338,9 +338,9 @@ const getCollisionEllipseRectangle = (ellipse, rect, swap = false) => {
|
|
|
338
338
|
const dx = ellipse.x - closestX;
|
|
339
339
|
const dy = ellipse.y - closestY;
|
|
340
340
|
const distance = Math.sqrt(dx * dx + dy * dy);
|
|
341
|
-
let normalX
|
|
342
|
-
let normalY
|
|
343
|
-
let overlap
|
|
341
|
+
let normalX;
|
|
342
|
+
let normalY;
|
|
343
|
+
let overlap;
|
|
344
344
|
if (distance > 0) {
|
|
345
345
|
normalX = dx / distance;
|
|
346
346
|
normalY = dy / distance;
|
|
@@ -395,14 +395,14 @@ const getCollisionEllipseCircle = (ellipse, circle, swap = false) => {
|
|
|
395
395
|
const dx = ellipse.x - circle.x;
|
|
396
396
|
const dy = ellipse.y - circle.y;
|
|
397
397
|
const distance = Math.sqrt(dx * dx + dy * dy);
|
|
398
|
-
let normalX
|
|
399
|
-
let normalY
|
|
400
|
-
let overlap
|
|
398
|
+
let normalX;
|
|
399
|
+
let normalY;
|
|
400
|
+
let overlap;
|
|
401
401
|
if (distance > 0) {
|
|
402
402
|
normalX = dx / distance;
|
|
403
403
|
normalY = dy / distance;
|
|
404
404
|
const ellipseBoundary = 1 / Math.sqrt((normalX * normalX) / (ellipse.rx * ellipse.rx) + (normalY * normalY) / (ellipse.ry * ellipse.ry));
|
|
405
|
-
overlap =
|
|
405
|
+
overlap = ellipseBoundary + circle.radius - distance;
|
|
406
406
|
}
|
|
407
407
|
else {
|
|
408
408
|
// Coincident centers — use the smaller ellipse axis as the push direction.
|
|
@@ -501,12 +501,12 @@ const getCollisionPolygonCircle = (polygon, circle, swap = false) => {
|
|
|
501
501
|
const normalX = edgeAy;
|
|
502
502
|
const normalY = -edgeAx;
|
|
503
503
|
const normalLength = getVectorLength(normalX, normalY);
|
|
504
|
-
const distance = normalLength === 0 ? 0 : (
|
|
504
|
+
const distance = normalLength === 0 ? 0 : (positionAx * normalX + positionAy * normalY) / normalLength;
|
|
505
505
|
if (distance > 0 && Math.abs(distance) > radius) {
|
|
506
506
|
projection.destroy();
|
|
507
507
|
return null;
|
|
508
508
|
}
|
|
509
|
-
if (distance >= 0 ||
|
|
509
|
+
if (distance >= 0 || radius - distance < 2 * radius) {
|
|
510
510
|
containsB = false;
|
|
511
511
|
}
|
|
512
512
|
const candidateOverlap = radius - distance;
|
|
@@ -541,9 +541,9 @@ const getCollisionSat = (shapeA, shapeB) => {
|
|
|
541
541
|
let overlap = Infinity;
|
|
542
542
|
let shapeAinB = true;
|
|
543
543
|
let shapeBinA = true;
|
|
544
|
-
let containsA
|
|
545
|
-
let containsB
|
|
546
|
-
let distance
|
|
544
|
+
let containsA;
|
|
545
|
+
let containsB;
|
|
546
|
+
let distance;
|
|
547
547
|
for (const normal of normalsA) {
|
|
548
548
|
shapeA.project(normal, projA);
|
|
549
549
|
shapeB.project(normal, projB);
|