@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,6 +1,19 @@
|
|
|
1
1
|
import type { Time } from '@/core/Time';
|
|
2
2
|
import type { ParticleSystem } from '@/particles/ParticleSystem';
|
|
3
|
+
/**
|
|
4
|
+
* Contract for all particle spawners attached to a {@link ParticleSystem}.
|
|
5
|
+
* Each emitter is called once per tick via {@link ParticleSystem.update} and
|
|
6
|
+
* is responsible for requesting recycled or new {@link Particle} instances from
|
|
7
|
+
* the system, configuring them, and handing them back via
|
|
8
|
+
* {@link ParticleSystem.emitParticle}. See {@link UniversalEmitter} for the
|
|
9
|
+
* built-in rate-based implementation.
|
|
10
|
+
*/
|
|
3
11
|
export interface ParticleEmitter {
|
|
12
|
+
/**
|
|
13
|
+
* Spawns zero or more particles into `system` for the current `delta`
|
|
14
|
+
* timestep. Called once per frame by {@link ParticleSystem.update}.
|
|
15
|
+
*/
|
|
4
16
|
apply(system: ParticleSystem, delta: Time): this;
|
|
17
|
+
/** Releases any resources owned by this emitter. */
|
|
5
18
|
destroy(): void;
|
|
6
19
|
}
|
|
@@ -2,6 +2,14 @@ import { Vector } from '@/math/Vector';
|
|
|
2
2
|
import { Color } from '@/core/Color';
|
|
3
3
|
import { Time } from '@/core/Time';
|
|
4
4
|
import type { ParticleProperties } from '@/particles/ParticleProperties';
|
|
5
|
+
/**
|
|
6
|
+
* Spawn-time configuration snapshot passed to {@link ParticleEmitter.apply}
|
|
7
|
+
* implementations. Implements {@link ParticleProperties} so the same affector
|
|
8
|
+
* interface can read default values when needed. All fields have sensible
|
|
9
|
+
* defaults (1 s lifetime, zero position/velocity, unit scale, white tint)
|
|
10
|
+
* and every object-valued field is deep-cloned on construction, making it
|
|
11
|
+
* safe to share one `ParticleOptions` instance across multiple emitters.
|
|
12
|
+
*/
|
|
5
13
|
export declare class ParticleOptions implements ParticleProperties {
|
|
6
14
|
private readonly _totalLifetime;
|
|
7
15
|
private readonly _elapsedLifetime;
|
|
@@ -12,6 +20,13 @@ export declare class ParticleOptions implements ParticleProperties {
|
|
|
12
20
|
private _rotation;
|
|
13
21
|
private _rotationSpeed;
|
|
14
22
|
private _textureIndex;
|
|
23
|
+
/**
|
|
24
|
+
* Creates a new options snapshot. Any omitted field falls back to its
|
|
25
|
+
* default value (1 s lifetime, zero position/velocity, unit scale,
|
|
26
|
+
* zero rotation, white tint, texture index 0). All object values are
|
|
27
|
+
* cloned so later mutations to the source objects do not affect this
|
|
28
|
+
* instance.
|
|
29
|
+
*/
|
|
15
30
|
constructor(options?: Partial<ParticleProperties>);
|
|
16
31
|
get totalLifetime(): Time;
|
|
17
32
|
set totalLifetime(totalLifetime: Time);
|
|
@@ -42,5 +57,6 @@ export declare class ParticleOptions implements ParticleProperties {
|
|
|
42
57
|
set textureIndex(textureIndex: number);
|
|
43
58
|
get tint(): Color;
|
|
44
59
|
set tint(color: Color);
|
|
60
|
+
/** Destroys all owned value objects. Called by the owning emitter's `destroy()`. */
|
|
45
61
|
destroy(): void;
|
|
46
62
|
}
|
|
@@ -3,6 +3,14 @@ import { Color } from '../../core/Color.js';
|
|
|
3
3
|
import { Time } from '../../core/Time.js';
|
|
4
4
|
import { trimRotation } from '../../math/utils.js';
|
|
5
5
|
|
|
6
|
+
/**
|
|
7
|
+
* Spawn-time configuration snapshot passed to {@link ParticleEmitter.apply}
|
|
8
|
+
* implementations. Implements {@link ParticleProperties} so the same affector
|
|
9
|
+
* interface can read default values when needed. All fields have sensible
|
|
10
|
+
* defaults (1 s lifetime, zero position/velocity, unit scale, white tint)
|
|
11
|
+
* and every object-valued field is deep-cloned on construction, making it
|
|
12
|
+
* safe to share one `ParticleOptions` instance across multiple emitters.
|
|
13
|
+
*/
|
|
6
14
|
class ParticleOptions {
|
|
7
15
|
_totalLifetime;
|
|
8
16
|
_elapsedLifetime;
|
|
@@ -13,6 +21,13 @@ class ParticleOptions {
|
|
|
13
21
|
_rotation;
|
|
14
22
|
_rotationSpeed;
|
|
15
23
|
_textureIndex;
|
|
24
|
+
/**
|
|
25
|
+
* Creates a new options snapshot. Any omitted field falls back to its
|
|
26
|
+
* default value (1 s lifetime, zero position/velocity, unit scale,
|
|
27
|
+
* zero rotation, white tint, texture index 0). All object values are
|
|
28
|
+
* cloned so later mutations to the source objects do not affect this
|
|
29
|
+
* instance.
|
|
30
|
+
*/
|
|
16
31
|
constructor(options = {}) {
|
|
17
32
|
const { totalLifetime, elapsedLifetime, position, velocity, scale, rotation, rotationSpeed, textureIndex, tint, } = options;
|
|
18
33
|
this._totalLifetime = (totalLifetime ?? Time.oneSecond).clone();
|
|
@@ -90,6 +105,7 @@ class ParticleOptions {
|
|
|
90
105
|
set tint(color) {
|
|
91
106
|
this._tint.copy(color);
|
|
92
107
|
}
|
|
108
|
+
/** Destroys all owned value objects. Called by the owning emitter's `destroy()`. */
|
|
93
109
|
destroy() {
|
|
94
110
|
this._totalLifetime.destroy();
|
|
95
111
|
this._elapsedLifetime.destroy();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ParticleOptions.js","sources":["../../../../../src/particles/emitters/ParticleOptions.ts"],"sourcesContent":[null],"names":[],"mappings":";;;;;
|
|
1
|
+
{"version":3,"file":"ParticleOptions.js","sources":["../../../../../src/particles/emitters/ParticleOptions.ts"],"sourcesContent":[null],"names":[],"mappings":";;;;;AAMA;;;;;;;AAOG;MACU,eAAe,CAAA;AACP,IAAA,cAAc;AACd,IAAA,gBAAgB;AAChB,IAAA,SAAS;AACT,IAAA,SAAS;AACT,IAAA,MAAM;AACN,IAAA,KAAK;AACd,IAAA,SAAS;AACT,IAAA,cAAc;AACd,IAAA,aAAa;AAErB;;;;;;AAMG;AACH,IAAA,WAAA,CAAmB,UAAuC,EAAE,EAAA;QACxD,MAAM,EACF,aAAa,EACb,eAAe,EACf,QAAQ,EACR,QAAQ,EACR,KAAK,EACL,QAAQ,EACR,aAAa,EACb,YAAY,EACZ,IAAI,GACP,GAAG,OAAO;AAEX,QAAA,IAAI,CAAC,cAAc,GAAG,CAAC,aAAa,IAAI,IAAI,CAAC,SAAS,EAAE,KAAK,EAAE;AAC/D,QAAA,IAAI,CAAC,gBAAgB,GAAG,CAAC,eAAe,IAAI,IAAI,CAAC,IAAI,EAAE,KAAK,EAAE;AAC9D,QAAA,IAAI,CAAC,SAAS,GAAG,CAAC,QAAQ,IAAI,MAAM,CAAC,IAAI,EAAE,KAAK,EAAE;AAClD,QAAA,IAAI,CAAC,SAAS,GAAG,CAAC,QAAQ,IAAI,MAAM,CAAC,IAAI,EAAE,KAAK,EAAE;AAClD,QAAA,IAAI,CAAC,MAAM,GAAG,CAAC,KAAK,IAAI,MAAM,CAAC,GAAG,EAAE,KAAK,EAAE;AAC3C,QAAA,IAAI,CAAC,KAAK,GAAG,CAAC,IAAI,IAAI,KAAK,CAAC,KAAK,EAAE,KAAK,EAAE;AAC1C,QAAA,IAAI,CAAC,SAAS,GAAG,QAAQ,IAAI,CAAC;AAC9B,QAAA,IAAI,CAAC,cAAc,GAAG,aAAa,IAAI,CAAC;AACxC,QAAA,IAAI,CAAC,aAAa,GAAG,YAAY,IAAI,CAAC;IAC1C;AAEA,IAAA,IAAW,aAAa,GAAA;QACpB,OAAO,IAAI,CAAC,cAAc;IAC9B;IAEA,IAAW,aAAa,CAAC,aAAmB,EAAA;AACxC,QAAA,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,aAAa,CAAC;IAC3C;AAEA,IAAA,IAAW,eAAe,GAAA;QACtB,OAAO,IAAI,CAAC,gBAAgB;IAChC;IAEA,IAAW,eAAe,CAAC,eAAqB,EAAA;AAC5C,QAAA,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,eAAe,CAAC;IAC/C;AAEA;;;;;;;;;;AAUG;AACH,IAAA,IAAW,QAAQ,GAAA;QACf,OAAO,IAAI,CAAC,SAAS;IACzB;IAEA,IAAW,QAAQ,CAAC,QAAgB,EAAA;AAChC,QAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC;IACjC;AAEA,IAAA,IAAW,QAAQ,GAAA;QACf,OAAO,IAAI,CAAC,SAAS;IACzB;IAEA,IAAW,QAAQ,CAAC,QAAgB,EAAA;AAChC,QAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC;IACjC;AAEA,IAAA,IAAW,KAAK,GAAA;QACZ,OAAO,IAAI,CAAC,MAAM;IACtB;IAEA,IAAW,KAAK,CAAC,KAAa,EAAA;AAC1B,QAAA,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC;IAC3B;AAEA,IAAA,IAAW,QAAQ,GAAA;QACf,OAAO,IAAI,CAAC,SAAS;IACzB;IAEA,IAAW,QAAQ,CAAC,OAAe,EAAA;AAC/B,QAAA,IAAI,CAAC,SAAS,GAAG,YAAY,CAAC,OAAO,CAAC;IAC1C;AAEA,IAAA,IAAW,aAAa,GAAA;QACpB,OAAO,IAAI,CAAC,cAAc;IAC9B;IAEA,IAAW,aAAa,CAAC,aAAqB,EAAA;AAC1C,QAAA,IAAI,CAAC,cAAc,GAAG,aAAa;IACvC;AAEA,IAAA,IAAW,YAAY,GAAA;QACnB,OAAO,IAAI,CAAC,aAAa;IAC7B;IAEA,IAAW,YAAY,CAAC,YAAoB,EAAA;AACxC,QAAA,IAAI,CAAC,aAAa,GAAG,YAAY;IACrC;AAEA,IAAA,IAAW,IAAI,GAAA;QACX,OAAO,IAAI,CAAC,KAAK;IACrB;IAEA,IAAW,IAAI,CAAC,KAAY,EAAA;AACxB,QAAA,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC;IAC1B;;IAGO,OAAO,GAAA;AACV,QAAA,IAAI,CAAC,cAAc,CAAC,OAAO,EAAE;AAC7B,QAAA,IAAI,CAAC,gBAAgB,CAAC,OAAO,EAAE;AAC/B,QAAA,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE;AACxB,QAAA,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE;AACxB,QAAA,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE;AACrB,QAAA,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE;IACxB;AACH;;;;"}
|
|
@@ -2,6 +2,17 @@ import type { Time } from '@/core/Time';
|
|
|
2
2
|
import { ParticleOptions } from '@/particles/emitters/ParticleOptions';
|
|
3
3
|
import type { ParticleEmitter } from '@/particles/emitters/ParticleEmitter';
|
|
4
4
|
import type { ParticleSystem } from '@/particles/ParticleSystem';
|
|
5
|
+
/**
|
|
6
|
+
* Rate-based concrete {@link ParticleEmitter} that spawns a fixed number of
|
|
7
|
+
* particles per second, configured via {@link UniversalEmitter.emissionRate}
|
|
8
|
+
* and {@link UniversalEmitter.particleOptions}. Sub-frame fractions are
|
|
9
|
+
* accumulated in an internal delta so that low emission rates (e.g. 0.5
|
|
10
|
+
* particles/s) remain accurate over time without integer truncation error.
|
|
11
|
+
*
|
|
12
|
+
* @example
|
|
13
|
+
* const emitter = new UniversalEmitter(60, new ParticleOptions({ velocity: new Vector(0, -200) }));
|
|
14
|
+
* particleSystem.addEmitter(emitter);
|
|
15
|
+
*/
|
|
5
16
|
export declare class UniversalEmitter implements ParticleEmitter {
|
|
6
17
|
private _emissionRate;
|
|
7
18
|
private _particleOptions;
|
|
@@ -11,7 +22,19 @@ export declare class UniversalEmitter implements ParticleEmitter {
|
|
|
11
22
|
set emissionRate(particlesPerSecond: number);
|
|
12
23
|
get particleOptions(): ParticleOptions;
|
|
13
24
|
set particleOptions(particleOptions: ParticleOptions);
|
|
25
|
+
/**
|
|
26
|
+
* Computes how many whole particles to spawn for the given `time` slice,
|
|
27
|
+
* carrying any fractional remainder into the next call. This accumulator
|
|
28
|
+
* prevents emission-rate drift when `emissionRate * delta` is not an
|
|
29
|
+
* integer (e.g. 30 fps × 0.5 particles/s = 0.5 per frame → every other
|
|
30
|
+
* frame emits one).
|
|
31
|
+
*/
|
|
14
32
|
computeParticleCount(time: Time): number;
|
|
33
|
+
/**
|
|
34
|
+
* Requests the correct number of particles from `system` for this frame,
|
|
35
|
+
* configures each one with {@link particleOptions} via
|
|
36
|
+
* {@link Particle.applyOptions}, and emits them into the live pool.
|
|
37
|
+
*/
|
|
15
38
|
apply(system: ParticleSystem, delta: Time): this;
|
|
16
39
|
destroy(): void;
|
|
17
40
|
}
|
|
@@ -1,5 +1,16 @@
|
|
|
1
1
|
import { ParticleOptions } from './ParticleOptions.js';
|
|
2
2
|
|
|
3
|
+
/**
|
|
4
|
+
* Rate-based concrete {@link ParticleEmitter} that spawns a fixed number of
|
|
5
|
+
* particles per second, configured via {@link UniversalEmitter.emissionRate}
|
|
6
|
+
* and {@link UniversalEmitter.particleOptions}. Sub-frame fractions are
|
|
7
|
+
* accumulated in an internal delta so that low emission rates (e.g. 0.5
|
|
8
|
+
* particles/s) remain accurate over time without integer truncation error.
|
|
9
|
+
*
|
|
10
|
+
* @example
|
|
11
|
+
* const emitter = new UniversalEmitter(60, new ParticleOptions({ velocity: new Vector(0, -200) }));
|
|
12
|
+
* particleSystem.addEmitter(emitter);
|
|
13
|
+
*/
|
|
3
14
|
class UniversalEmitter {
|
|
4
15
|
_emissionRate;
|
|
5
16
|
_particleOptions;
|
|
@@ -20,12 +31,24 @@ class UniversalEmitter {
|
|
|
20
31
|
set particleOptions(particleOptions) {
|
|
21
32
|
this._particleOptions = particleOptions;
|
|
22
33
|
}
|
|
34
|
+
/**
|
|
35
|
+
* Computes how many whole particles to spawn for the given `time` slice,
|
|
36
|
+
* carrying any fractional remainder into the next call. This accumulator
|
|
37
|
+
* prevents emission-rate drift when `emissionRate * delta` is not an
|
|
38
|
+
* integer (e.g. 30 fps × 0.5 particles/s = 0.5 per frame → every other
|
|
39
|
+
* frame emits one).
|
|
40
|
+
*/
|
|
23
41
|
computeParticleCount(time) {
|
|
24
42
|
const particleAmount = (this._emissionRate * time.seconds) + this._emissionDelta;
|
|
25
43
|
const particles = particleAmount | 0;
|
|
26
44
|
this._emissionDelta = (particleAmount - particles);
|
|
27
45
|
return particles;
|
|
28
46
|
}
|
|
47
|
+
/**
|
|
48
|
+
* Requests the correct number of particles from `system` for this frame,
|
|
49
|
+
* configures each one with {@link particleOptions} via
|
|
50
|
+
* {@link Particle.applyOptions}, and emits them into the live pool.
|
|
51
|
+
*/
|
|
29
52
|
apply(system, delta) {
|
|
30
53
|
const count = this.computeParticleCount(delta);
|
|
31
54
|
const options = this._particleOptions;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"UniversalEmitter.js","sources":["../../../../../src/particles/emitters/UniversalEmitter.ts"],"sourcesContent":[null],"names":[],"mappings":";;
|
|
1
|
+
{"version":3,"file":"UniversalEmitter.js","sources":["../../../../../src/particles/emitters/UniversalEmitter.ts"],"sourcesContent":[null],"names":[],"mappings":";;AAKA;;;;;;;;;;AAUG;MACU,gBAAgB,CAAA;AACjB,IAAA,aAAa;AACb,IAAA,gBAAgB;IAChB,cAAc,GAAG,CAAC;IAE1B,WAAA,CAAmB,YAAoB,EAAE,eAAiC,EAAA;AACtE,QAAA,IAAI,CAAC,aAAa,GAAG,YAAY;QACjC,IAAI,CAAC,gBAAgB,GAAG,eAAe,IAAI,IAAI,eAAe,EAAE;IACpE;AAEA,IAAA,IAAW,YAAY,GAAA;QACnB,OAAO,IAAI,CAAC,aAAa;IAC7B;IAEA,IAAW,YAAY,CAAC,kBAA0B,EAAA;AAC9C,QAAA,IAAI,CAAC,aAAa,GAAG,kBAAkB;IAC3C;AAEA,IAAA,IAAW,eAAe,GAAA;QACtB,OAAO,IAAI,CAAC,gBAAgB;IAChC;IAEA,IAAW,eAAe,CAAC,eAAgC,EAAA;AACvD,QAAA,IAAI,CAAC,gBAAgB,GAAG,eAAe;IAC3C;AAEA;;;;;;AAMG;AACI,IAAA,oBAAoB,CAAC,IAAU,EAAA;AAClC,QAAA,MAAM,cAAc,GAAG,CAAC,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,cAAc;AAChF,QAAA,MAAM,SAAS,GAAG,cAAc,GAAG,CAAC;QAEpC,IAAI,CAAC,cAAc,IAAI,cAAc,GAAG,SAAS,CAAC;AAElD,QAAA,OAAO,SAAS;IACpB;AAEA;;;;AAIG;IACI,KAAK,CAAC,MAAsB,EAAE,KAAW,EAAA;QAC5C,MAAM,KAAK,GAAG,IAAI,CAAC,oBAAoB,CAAC,KAAK,CAAC;AAC9C,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,gBAAgB;AAErC,QAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,EAAE,CAAC,EAAE,EAAE;AAC5B,YAAA,MAAM,QAAQ,GAAG,MAAM,CAAC,eAAe,EAAE;AAEzC,YAAA,QAAQ,CAAC,YAAY,CAAC,OAAO,CAAC;AAC9B,YAAA,MAAM,CAAC,YAAY,CAAC,QAAQ,CAAC;QACjC;AAEA,QAAA,OAAO,IAAI;IACf;IAEO,OAAO,GAAA;AACV,QAAA,IAAI,CAAC,gBAAgB,CAAC,OAAO,EAAE;IACnC;AACH;;;;"}
|
|
@@ -1,5 +1,17 @@
|
|
|
1
1
|
import type { RenderBackend } from './RenderBackend';
|
|
2
2
|
import type { RenderPass } from './RenderPass';
|
|
3
|
+
/**
|
|
4
|
+
* A {@link RenderPass} that delegates its execution to a user-supplied callback.
|
|
5
|
+
* Use this as a lightweight alternative to a full renderer class when custom
|
|
6
|
+
* draw logic needs to participate in the render graph without a dedicated type.
|
|
7
|
+
*
|
|
8
|
+
* @example
|
|
9
|
+
* ```ts
|
|
10
|
+
* new CallbackRenderPass((backend) => {
|
|
11
|
+
* backend.draw(myDrawable);
|
|
12
|
+
* });
|
|
13
|
+
* ```
|
|
14
|
+
*/
|
|
3
15
|
export declare class CallbackRenderPass implements RenderPass {
|
|
4
16
|
private readonly _callback;
|
|
5
17
|
constructor(callback: (backend: RenderBackend) => void);
|
|
@@ -1,3 +1,15 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* A {@link RenderPass} that delegates its execution to a user-supplied callback.
|
|
3
|
+
* Use this as a lightweight alternative to a full renderer class when custom
|
|
4
|
+
* draw logic needs to participate in the render graph without a dedicated type.
|
|
5
|
+
*
|
|
6
|
+
* @example
|
|
7
|
+
* ```ts
|
|
8
|
+
* new CallbackRenderPass((backend) => {
|
|
9
|
+
* backend.draw(myDrawable);
|
|
10
|
+
* });
|
|
11
|
+
* ```
|
|
12
|
+
*/
|
|
1
13
|
class CallbackRenderPass {
|
|
2
14
|
_callback;
|
|
3
15
|
constructor(callback) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CallbackRenderPass.js","sources":["../../../../src/rendering/CallbackRenderPass.ts"],"sourcesContent":[null],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"CallbackRenderPass.js","sources":["../../../../src/rendering/CallbackRenderPass.ts"],"sourcesContent":[null],"names":[],"mappings":"AAGA;;;;;;;;;;;AAWG;MACU,kBAAkB,CAAA;AAEV,IAAA,SAAS;AAE1B,IAAA,WAAA,CAAmB,QAA0C,EAAA;AACzD,QAAA,IAAI,CAAC,SAAS,GAAG,QAAQ;IAC7B;AAEO,IAAA,OAAO,CAAC,OAAsB,EAAA;AACjC,QAAA,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC;IAC3B;AACH;;;;"}
|
|
@@ -1,11 +1,35 @@
|
|
|
1
1
|
import type { RenderBackend } from './RenderBackend';
|
|
2
2
|
import { RenderNode } from './RenderNode';
|
|
3
|
+
/**
|
|
4
|
+
* Scene-graph node that owns child {@link RenderNode}s. Renders its
|
|
5
|
+
* subtree in document order, optionally re-sorted each frame by
|
|
6
|
+
* `zIndex` + child-add-order when {@link Container.sortableChildren} is
|
|
7
|
+
* enabled.
|
|
8
|
+
*
|
|
9
|
+
* Bounds aggregate the local bounds + every visible child's bounds, so
|
|
10
|
+
* `container.bounds` always reflects the smallest axis-aligned rectangle
|
|
11
|
+
* containing the subtree. Width/height accessors derive from the bounds
|
|
12
|
+
* (× `scale`) and writing to them rescales `scale` to fit.
|
|
13
|
+
*
|
|
14
|
+
* Adding a child re-parents it: the previous parent is detached
|
|
15
|
+
* automatically. Removing a child cascades bounds invalidation up the
|
|
16
|
+
* ancestor chain so further-up containers also rebuild on next read.
|
|
17
|
+
*
|
|
18
|
+
* Subclassed by {@link Sprite}, {@link Mesh}, {@link Graphics}, {@link Text},
|
|
19
|
+
* etc. — the base `Container` is a non-drawing grouping node.
|
|
20
|
+
*/
|
|
3
21
|
export declare class Container extends RenderNode {
|
|
4
22
|
private readonly _children;
|
|
5
23
|
private _sortableChildren;
|
|
6
24
|
private _sortDirty;
|
|
7
25
|
private _nextChildOrder;
|
|
8
26
|
get children(): Array<RenderNode>;
|
|
27
|
+
/**
|
|
28
|
+
* When `true`, children are re-sorted by `zIndex` (ascending; ties
|
|
29
|
+
* broken by add-order) before each render. Disabled by default to
|
|
30
|
+
* avoid the per-frame sort cost; enable on the few containers where
|
|
31
|
+
* z-ordering matters.
|
|
32
|
+
*/
|
|
9
33
|
get sortableChildren(): boolean;
|
|
10
34
|
set sortableChildren(sortableChildren: boolean);
|
|
11
35
|
get width(): number;
|
|
@@ -16,20 +40,39 @@ export declare class Container extends RenderNode {
|
|
|
16
40
|
get top(): number;
|
|
17
41
|
get right(): number;
|
|
18
42
|
get bottom(): number;
|
|
43
|
+
/**
|
|
44
|
+
* Append one or more children to the end of the child list. Each child
|
|
45
|
+
* is detached from its previous parent (if any) before being added.
|
|
46
|
+
*/
|
|
19
47
|
addChild(...children: Array<RenderNode>): this;
|
|
48
|
+
/**
|
|
49
|
+
* Insert `child` at `index` in the child list. The child is detached
|
|
50
|
+
* from any previous parent first. Throws if `index` is out of bounds.
|
|
51
|
+
* Self-as-child is a no-op.
|
|
52
|
+
*/
|
|
20
53
|
addChildAt(child: RenderNode, index: number): this;
|
|
21
54
|
swapChildren(firstChild: RenderNode, secondChild: RenderNode): this;
|
|
22
55
|
getChildIndex(child: RenderNode): number;
|
|
23
56
|
setChildIndex(child: RenderNode, index: number): this;
|
|
24
57
|
getChildAt(index: number): RenderNode;
|
|
58
|
+
/** Remove `child` from this container. No-op if not present. */
|
|
25
59
|
removeChild(child: RenderNode): this;
|
|
26
60
|
removeChildAt(index: number): this;
|
|
61
|
+
/**
|
|
62
|
+
* Remove children in the half-open range `[begin, end)`. Defaults to
|
|
63
|
+
* the entire child list. Throws if the range is invalid.
|
|
64
|
+
*/
|
|
27
65
|
removeChildren(begin?: number, end?: number): this;
|
|
28
66
|
render(backend: RenderBackend): this;
|
|
29
67
|
contains(x: number, y: number): boolean;
|
|
30
68
|
protected _invalidateChildrenTransform(): void;
|
|
31
69
|
updateBounds(): this;
|
|
32
70
|
destroy(): void;
|
|
71
|
+
/**
|
|
72
|
+
* Flag the child list as needing a re-sort before next render. Called
|
|
73
|
+
* automatically by `addChild*`, `removeChild*`, `swapChildren`, and
|
|
74
|
+
* `setChildIndex`; expose for callers that mutate `zIndex` directly.
|
|
75
|
+
*/
|
|
33
76
|
markSortDirty(): this;
|
|
34
77
|
sortChildren(): this;
|
|
35
78
|
private _sortChildrenIfNeeded;
|
|
@@ -2,6 +2,24 @@ import { removeArrayItems } from '../core/utils.js';
|
|
|
2
2
|
import { RenderNode } from './RenderNode.js';
|
|
3
3
|
import { _getCurrentInteractionManager } from '../input/interaction-hooks.js';
|
|
4
4
|
|
|
5
|
+
/**
|
|
6
|
+
* Scene-graph node that owns child {@link RenderNode}s. Renders its
|
|
7
|
+
* subtree in document order, optionally re-sorted each frame by
|
|
8
|
+
* `zIndex` + child-add-order when {@link Container.sortableChildren} is
|
|
9
|
+
* enabled.
|
|
10
|
+
*
|
|
11
|
+
* Bounds aggregate the local bounds + every visible child's bounds, so
|
|
12
|
+
* `container.bounds` always reflects the smallest axis-aligned rectangle
|
|
13
|
+
* containing the subtree. Width/height accessors derive from the bounds
|
|
14
|
+
* (× `scale`) and writing to them rescales `scale` to fit.
|
|
15
|
+
*
|
|
16
|
+
* Adding a child re-parents it: the previous parent is detached
|
|
17
|
+
* automatically. Removing a child cascades bounds invalidation up the
|
|
18
|
+
* ancestor chain so further-up containers also rebuild on next read.
|
|
19
|
+
*
|
|
20
|
+
* Subclassed by {@link Sprite}, {@link Mesh}, {@link Graphics}, {@link Text},
|
|
21
|
+
* etc. — the base `Container` is a non-drawing grouping node.
|
|
22
|
+
*/
|
|
5
23
|
class Container extends RenderNode {
|
|
6
24
|
_children = [];
|
|
7
25
|
_sortableChildren = false;
|
|
@@ -10,6 +28,12 @@ class Container extends RenderNode {
|
|
|
10
28
|
get children() {
|
|
11
29
|
return this._children;
|
|
12
30
|
}
|
|
31
|
+
/**
|
|
32
|
+
* When `true`, children are re-sorted by `zIndex` (ascending; ties
|
|
33
|
+
* broken by add-order) before each render. Disabled by default to
|
|
34
|
+
* avoid the per-frame sort cost; enable on the few containers where
|
|
35
|
+
* z-ordering matters.
|
|
36
|
+
*/
|
|
13
37
|
get sortableChildren() {
|
|
14
38
|
return this._sortableChildren;
|
|
15
39
|
}
|
|
@@ -43,12 +67,21 @@ class Container extends RenderNode {
|
|
|
43
67
|
get bottom() {
|
|
44
68
|
return (this.y + this.height - this.origin.y);
|
|
45
69
|
}
|
|
70
|
+
/**
|
|
71
|
+
* Append one or more children to the end of the child list. Each child
|
|
72
|
+
* is detached from its previous parent (if any) before being added.
|
|
73
|
+
*/
|
|
46
74
|
addChild(...children) {
|
|
47
75
|
for (const child of children) {
|
|
48
76
|
this.addChildAt(child, this._children.length);
|
|
49
77
|
}
|
|
50
78
|
return this;
|
|
51
79
|
}
|
|
80
|
+
/**
|
|
81
|
+
* Insert `child` at `index` in the child list. The child is detached
|
|
82
|
+
* from any previous parent first. Throws if `index` is out of bounds.
|
|
83
|
+
* Self-as-child is a no-op.
|
|
84
|
+
*/
|
|
52
85
|
addChildAt(child, index) {
|
|
53
86
|
if (index < 0 || index > this._children.length) {
|
|
54
87
|
throw new Error(`The index ${index} is out of bounds ${this._children.length}`);
|
|
@@ -103,6 +136,7 @@ class Container extends RenderNode {
|
|
|
103
136
|
}
|
|
104
137
|
return this._children[index];
|
|
105
138
|
}
|
|
139
|
+
/** Remove `child` from this container. No-op if not present. */
|
|
106
140
|
removeChild(child) {
|
|
107
141
|
const index = this._children.indexOf(child);
|
|
108
142
|
if (index !== -1) {
|
|
@@ -124,6 +158,10 @@ class Container extends RenderNode {
|
|
|
124
158
|
this.invalidateCache();
|
|
125
159
|
return this;
|
|
126
160
|
}
|
|
161
|
+
/**
|
|
162
|
+
* Remove children in the half-open range `[begin, end)`. Defaults to
|
|
163
|
+
* the entire child list. Throws if the range is invalid.
|
|
164
|
+
*/
|
|
127
165
|
removeChildren(begin = 0, end = this._children.length) {
|
|
128
166
|
const range = (end - begin);
|
|
129
167
|
if (range < 0 || range > end) {
|
|
@@ -184,6 +222,11 @@ class Container extends RenderNode {
|
|
|
184
222
|
this.removeChildren();
|
|
185
223
|
super.destroy();
|
|
186
224
|
}
|
|
225
|
+
/**
|
|
226
|
+
* Flag the child list as needing a re-sort before next render. Called
|
|
227
|
+
* automatically by `addChild*`, `removeChild*`, `swapChildren`, and
|
|
228
|
+
* `setChildIndex`; expose for callers that mutate `zIndex` directly.
|
|
229
|
+
*/
|
|
187
230
|
markSortDirty() {
|
|
188
231
|
if (this._sortableChildren) {
|
|
189
232
|
this._sortDirty = true;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Container.js","sources":["../../../../src/rendering/Container.ts"],"sourcesContent":[null],"names":[],"mappings":";;;;
|
|
1
|
+
{"version":3,"file":"Container.js","sources":["../../../../src/rendering/Container.ts"],"sourcesContent":[null],"names":[],"mappings":"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"}
|
|
@@ -2,6 +2,14 @@ import { Color } from '@/core/Color';
|
|
|
2
2
|
import { BlendModes } from '@/rendering/types';
|
|
3
3
|
import type { RenderBackend } from './RenderBackend';
|
|
4
4
|
import { RenderNode } from './RenderNode';
|
|
5
|
+
/**
|
|
6
|
+
* Base class for every renderable scene object.
|
|
7
|
+
*
|
|
8
|
+
* Extends {@link RenderNode} with a per-object tint colour and blend mode,
|
|
9
|
+
* and implements the default view-frustum culling logic in {@link render}.
|
|
10
|
+
* Concrete drawable types (sprites, meshes, text, etc.) extend this class
|
|
11
|
+
* and are paired with a matching {@link Renderer} via {@link RendererRegistry}.
|
|
12
|
+
*/
|
|
5
13
|
export declare class Drawable extends RenderNode {
|
|
6
14
|
private _tint;
|
|
7
15
|
private _blendMode;
|
|
@@ -9,8 +17,22 @@ export declare class Drawable extends RenderNode {
|
|
|
9
17
|
set tint(tint: Color);
|
|
10
18
|
get blendMode(): BlendModes;
|
|
11
19
|
set blendMode(blendMode: BlendModes);
|
|
20
|
+
/**
|
|
21
|
+
* Set the tint colour by copying `color` into the internal {@link Color} instance.
|
|
22
|
+
* Invalidates the render cache so the change is picked up on the next frame.
|
|
23
|
+
*/
|
|
12
24
|
setTint(color: Color): this;
|
|
25
|
+
/**
|
|
26
|
+
* Change the blend mode. No-ops if the value is unchanged.
|
|
27
|
+
* Invalidates the render cache when the blend mode actually changes.
|
|
28
|
+
*/
|
|
13
29
|
setBlendMode(blendMode: BlendModes): this;
|
|
30
|
+
/**
|
|
31
|
+
* Submit this drawable for rendering.
|
|
32
|
+
* Skips invisible nodes and increments the cull counter for nodes that fall
|
|
33
|
+
* outside the current view. Visible, in-view nodes are drawn via the backend
|
|
34
|
+
* using the current blend mode.
|
|
35
|
+
*/
|
|
14
36
|
render(backend: RenderBackend): this;
|
|
15
37
|
destroy(): void;
|
|
16
38
|
}
|
|
@@ -2,6 +2,14 @@ import { Color } from '../core/Color.js';
|
|
|
2
2
|
import { BlendModes } from './types.js';
|
|
3
3
|
import { RenderNode } from './RenderNode.js';
|
|
4
4
|
|
|
5
|
+
/**
|
|
6
|
+
* Base class for every renderable scene object.
|
|
7
|
+
*
|
|
8
|
+
* Extends {@link RenderNode} with a per-object tint colour and blend mode,
|
|
9
|
+
* and implements the default view-frustum culling logic in {@link render}.
|
|
10
|
+
* Concrete drawable types (sprites, meshes, text, etc.) extend this class
|
|
11
|
+
* and are paired with a matching {@link Renderer} via {@link RendererRegistry}.
|
|
12
|
+
*/
|
|
5
13
|
class Drawable extends RenderNode {
|
|
6
14
|
_tint = Color.white.clone();
|
|
7
15
|
_blendMode = BlendModes.Normal;
|
|
@@ -17,6 +25,10 @@ class Drawable extends RenderNode {
|
|
|
17
25
|
set blendMode(blendMode) {
|
|
18
26
|
this.setBlendMode(blendMode);
|
|
19
27
|
}
|
|
28
|
+
/**
|
|
29
|
+
* Set the tint colour by copying `color` into the internal {@link Color} instance.
|
|
30
|
+
* Invalidates the render cache so the change is picked up on the next frame.
|
|
31
|
+
*/
|
|
20
32
|
setTint(color) {
|
|
21
33
|
if (color) {
|
|
22
34
|
this._tint.copy(color);
|
|
@@ -24,6 +36,10 @@ class Drawable extends RenderNode {
|
|
|
24
36
|
}
|
|
25
37
|
return this;
|
|
26
38
|
}
|
|
39
|
+
/**
|
|
40
|
+
* Change the blend mode. No-ops if the value is unchanged.
|
|
41
|
+
* Invalidates the render cache when the blend mode actually changes.
|
|
42
|
+
*/
|
|
27
43
|
setBlendMode(blendMode) {
|
|
28
44
|
if (this._blendMode !== blendMode) {
|
|
29
45
|
this._blendMode = blendMode;
|
|
@@ -31,6 +47,12 @@ class Drawable extends RenderNode {
|
|
|
31
47
|
}
|
|
32
48
|
return this;
|
|
33
49
|
}
|
|
50
|
+
/**
|
|
51
|
+
* Submit this drawable for rendering.
|
|
52
|
+
* Skips invisible nodes and increments the cull counter for nodes that fall
|
|
53
|
+
* outside the current view. Visible, in-view nodes are drawn via the backend
|
|
54
|
+
* using the current blend mode.
|
|
55
|
+
*/
|
|
34
56
|
render(backend) {
|
|
35
57
|
if (!this.visible) {
|
|
36
58
|
return this;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Drawable.js","sources":["../../../../src/rendering/Drawable.ts"],"sourcesContent":[null],"names":[],"mappings":";;;;
|
|
1
|
+
{"version":3,"file":"Drawable.js","sources":["../../../../src/rendering/Drawable.ts"],"sourcesContent":[null],"names":[],"mappings":";;;;AAKA;;;;;;;AAOG;AACG,MAAO,QAAS,SAAQ,UAAU,CAAA;AAE5B,IAAA,KAAK,GAAU,KAAK,CAAC,KAAK,CAAC,KAAK,EAAE;AAClC,IAAA,UAAU,GAAe,UAAU,CAAC,MAAM;AAElD,IAAA,IAAW,IAAI,GAAA;QACX,OAAO,IAAI,CAAC,KAAK;IACrB;IAEA,IAAW,IAAI,CAAC,IAAW,EAAA;AACvB,QAAA,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC;IACtB;AAEA,IAAA,IAAW,SAAS,GAAA;QAChB,OAAO,IAAI,CAAC,UAAU;IAC1B;IAEA,IAAW,SAAS,CAAC,SAAqB,EAAA;AACtC,QAAA,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC;IAChC;AAEA;;;AAGG;AACI,IAAA,OAAO,CAAC,KAAY,EAAA;QACvB,IAAI,KAAK,EAAE;AACP,YAAA,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC;YACtB,IAAI,CAAC,eAAe,EAAE;QAC1B;AAEA,QAAA,OAAO,IAAI;IACf;AAEA;;;AAGG;AACI,IAAA,YAAY,CAAC,SAAqB,EAAA;AACrC,QAAA,IAAI,IAAI,CAAC,UAAU,KAAK,SAAS,EAAE;AAC/B,YAAA,IAAI,CAAC,UAAU,GAAG,SAAS;YAC3B,IAAI,CAAC,eAAe,EAAE;QAC1B;AAEA,QAAA,OAAO,IAAI;IACf;AAEA;;;;;AAKG;AACa,IAAA,MAAM,CAAC,OAAsB,EAAA;AACzC,QAAA,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE;AACf,YAAA,OAAO,IAAI;QACf;QAEA,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE;AAC5B,YAAA,OAAO,CAAC,KAAK,CAAC,WAAW,EAAE;AAE3B,YAAA,OAAO,IAAI;QACf;AAEA,QAAA,IAAI,CAAC,mBAAmB,CAAC,OAAO,EAAE,MAAK;AACnC,YAAA,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC;AACtB,QAAA,CAAC,EAAE,IAAI,CAAC,UAAU,CAAC;AAEnB,QAAA,OAAO,IAAI;IACf;IAEgB,OAAO,GAAA;QACnB,KAAK,CAAC,OAAO,EAAE;AAEf,QAAA,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE;IACxB;AACH;;;;"}
|
|
@@ -9,6 +9,19 @@ import type { Texture } from './texture/Texture';
|
|
|
9
9
|
import type { RenderTexture } from './texture/RenderTexture';
|
|
10
10
|
import type { RenderStats } from './RenderStats';
|
|
11
11
|
import type { BlendModes } from './types';
|
|
12
|
+
/**
|
|
13
|
+
* Common interface implemented by both rendering backends
|
|
14
|
+
* ({@link WebGl2Backend}, {@link WebGpuBackend}). Owns the canvas root
|
|
15
|
+
* render target, exposes the active {@link View}, accepts {@link Drawable}
|
|
16
|
+
* submissions, manages an offscreen render-texture pool, and exposes the
|
|
17
|
+
* scissor-stack and alpha-mask compositing primitives used by
|
|
18
|
+
* {@link RenderNode}'s `mask` machinery.
|
|
19
|
+
*
|
|
20
|
+
* Application code rarely calls this directly — high-level code submits
|
|
21
|
+
* drawables via the scene graph and reads `app.backend.stats` for
|
|
22
|
+
* per-frame counters. Custom render passes (subclasses of
|
|
23
|
+
* {@link RenderPass}) interact with the interface directly.
|
|
24
|
+
*/
|
|
12
25
|
export interface RenderBackend {
|
|
13
26
|
readonly backendType: RenderBackendType;
|
|
14
27
|
readonly view: View;
|
|
@@ -1,3 +1,7 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Identifies the active GPU backend used by the engine.
|
|
3
|
+
* Passed to renderers and shaders so they can select backend-specific code paths.
|
|
4
|
+
*/
|
|
1
5
|
var RenderBackendType;
|
|
2
6
|
(function (RenderBackendType) {
|
|
3
7
|
RenderBackendType[RenderBackendType["WebGl2"] = 0] = "WebGl2";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RenderBackendType.js","sources":["../../../../src/rendering/RenderBackendType.ts"],"sourcesContent":[null],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"RenderBackendType.js","sources":["../../../../src/rendering/RenderBackendType.ts"],"sourcesContent":[null],"names":[],"mappings":"AAAA;;;AAGG;IACS;AAAZ,CAAA,UAAY,iBAAiB,EAAA;AACzB,IAAA,iBAAA,CAAA,iBAAA,CAAA,QAAA,CAAA,GAAA,CAAA,CAAA,GAAA,QAAM;AACN,IAAA,iBAAA,CAAA,iBAAA,CAAA,QAAA,CAAA,GAAA,CAAA,CAAA,GAAA,QAAM;AACV,CAAC,EAHW,iBAAiB,KAAjB,iBAAiB,GAAA,EAAA,CAAA,CAAA;;;;"}
|
|
@@ -44,6 +44,24 @@ interface RenderNodeSpriteLike {
|
|
|
44
44
|
* one or two intermediate render textures plus an alpha-composite pass.
|
|
45
45
|
*/
|
|
46
46
|
export type MaskSource = Rectangle | Texture | RenderTexture | RenderNode | null;
|
|
47
|
+
/**
|
|
48
|
+
* {@link SceneNode} that can produce visual output. Adds the rendering
|
|
49
|
+
* pipeline features on top of the structural transform/bounds carried by
|
|
50
|
+
* SceneNode: `tint`, `alpha`, `blendMode`, post-process `filters`, an
|
|
51
|
+
* optional `mask` (via {@link MaskSource}), bitmap caching
|
|
52
|
+
* (`cacheAsBitmap`), and the interaction surface
|
|
53
|
+
* (`interactive`, `draggable`, all the pointer Signals).
|
|
54
|
+
*
|
|
55
|
+
* `RenderNode.render(backend)` is the per-frame visual entry point each
|
|
56
|
+
* subclass implements. The base provides `renderVisualContent()` — a
|
|
57
|
+
* helper that wraps the subclass's draw work with cache / mask / filter /
|
|
58
|
+
* tint orchestration so subclasses focus on their own geometry.
|
|
59
|
+
*
|
|
60
|
+
* Subclasses of note: {@link Container} (children), {@link Sprite} (textured
|
|
61
|
+
* quad), {@link Mesh} (custom geometry), {@link Graphics} (immediate-mode
|
|
62
|
+
* shapes), {@link Text} (glyph-atlas text), {@link Video} (video texture),
|
|
63
|
+
* {@link ParticleSystem} (particles).
|
|
64
|
+
*/
|
|
47
65
|
export declare abstract class RenderNode extends SceneNode {
|
|
48
66
|
private static _spriteFactory;
|
|
49
67
|
private _interactive;
|
|
@@ -9,6 +9,24 @@ import { RenderTargetPass } from './RenderTargetPass.js';
|
|
|
9
9
|
import { _getCurrentInteractionManager } from '../input/interaction-hooks.js';
|
|
10
10
|
|
|
11
11
|
const isDestroyableFilter = (filter) => ('destroy' in filter && typeof filter.destroy === 'function');
|
|
12
|
+
/**
|
|
13
|
+
* {@link SceneNode} that can produce visual output. Adds the rendering
|
|
14
|
+
* pipeline features on top of the structural transform/bounds carried by
|
|
15
|
+
* SceneNode: `tint`, `alpha`, `blendMode`, post-process `filters`, an
|
|
16
|
+
* optional `mask` (via {@link MaskSource}), bitmap caching
|
|
17
|
+
* (`cacheAsBitmap`), and the interaction surface
|
|
18
|
+
* (`interactive`, `draggable`, all the pointer Signals).
|
|
19
|
+
*
|
|
20
|
+
* `RenderNode.render(backend)` is the per-frame visual entry point each
|
|
21
|
+
* subclass implements. The base provides `renderVisualContent()` — a
|
|
22
|
+
* helper that wraps the subclass's draw work with cache / mask / filter /
|
|
23
|
+
* tint orchestration so subclasses focus on their own geometry.
|
|
24
|
+
*
|
|
25
|
+
* Subclasses of note: {@link Container} (children), {@link Sprite} (textured
|
|
26
|
+
* quad), {@link Mesh} (custom geometry), {@link Graphics} (immediate-mode
|
|
27
|
+
* shapes), {@link Text} (glyph-atlas text), {@link Video} (video texture),
|
|
28
|
+
* {@link ParticleSystem} (particles).
|
|
29
|
+
*/
|
|
12
30
|
class RenderNode extends SceneNode {
|
|
13
31
|
static _spriteFactory = null;
|
|
14
32
|
_interactive = false;
|