@codexo/exojs 2.1.0
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 +119 -0
- package/README.md +137 -0
- package/dist/esm/audio/AbstractMedia.d.ts +45 -0
- package/dist/esm/audio/AbstractMedia.js +98 -0
- package/dist/esm/audio/AbstractMedia.js.map +1 -0
- package/dist/esm/audio/AudioAnalyser.d.ts +30 -0
- package/dist/esm/audio/AudioAnalyser.js +82 -0
- package/dist/esm/audio/AudioAnalyser.js.map +1 -0
- package/dist/esm/audio/Media.d.ts +25 -0
- package/dist/esm/audio/Music.d.ts +20 -0
- package/dist/esm/audio/Music.js +118 -0
- package/dist/esm/audio/Music.js.map +1 -0
- package/dist/esm/audio/Sound.d.ts +56 -0
- package/dist/esm/audio/Sound.js +393 -0
- package/dist/esm/audio/Sound.js.map +1 -0
- package/dist/esm/audio/audio-context.d.ts +11 -0
- package/dist/esm/audio/audio-context.js +115 -0
- package/dist/esm/audio/audio-context.js.map +1 -0
- package/dist/esm/audio/index.d.ts +6 -0
- package/dist/esm/core/Application.d.ts +76 -0
- package/dist/esm/core/Application.js +198 -0
- package/dist/esm/core/Application.js.map +1 -0
- package/dist/esm/core/Bounds.d.ts +19 -0
- package/dist/esm/core/Bounds.js +61 -0
- package/dist/esm/core/Bounds.js.map +1 -0
- package/dist/esm/core/Clock.d.ts +18 -0
- package/dist/esm/core/Clock.js +67 -0
- package/dist/esm/core/Clock.js.map +1 -0
- package/dist/esm/core/Color.d.ts +176 -0
- package/dist/esm/core/Color.js +261 -0
- package/dist/esm/core/Color.js.map +1 -0
- package/dist/esm/core/Quadtree.d.ts +20 -0
- package/dist/esm/core/Quadtree.js +84 -0
- package/dist/esm/core/Quadtree.js.map +1 -0
- package/dist/esm/core/Scene.d.ts +83 -0
- package/dist/esm/core/Scene.js +82 -0
- package/dist/esm/core/Scene.js.map +1 -0
- package/dist/esm/core/SceneManager.d.ts +66 -0
- package/dist/esm/core/SceneManager.js +395 -0
- package/dist/esm/core/SceneManager.js.map +1 -0
- package/dist/esm/core/SceneNode.d.ts +58 -0
- package/dist/esm/core/SceneNode.js +176 -0
- package/dist/esm/core/SceneNode.js.map +1 -0
- package/dist/esm/core/Signal.d.ts +18 -0
- package/dist/esm/core/Signal.js +61 -0
- package/dist/esm/core/Signal.js.map +1 -0
- package/dist/esm/core/Time.d.ts +38 -0
- package/dist/esm/core/Time.js +106 -0
- package/dist/esm/core/Time.js.map +1 -0
- package/dist/esm/core/Timer.d.ts +12 -0
- package/dist/esm/core/Timer.js +33 -0
- package/dist/esm/core/Timer.js.map +1 -0
- package/dist/esm/core/index.d.ts +13 -0
- package/dist/esm/core/types.d.ts +29 -0
- package/dist/esm/core/utils.d.ts +22 -0
- package/dist/esm/core/utils.js +136 -0
- package/dist/esm/core/utils.js.map +1 -0
- package/dist/esm/index.d.ts +8 -0
- package/dist/esm/index.js +134 -0
- package/dist/esm/index.js.map +1 -0
- package/dist/esm/input/ArcadeStickGamepadMapping.d.ts +5 -0
- package/dist/esm/input/ArcadeStickGamepadMapping.js +29 -0
- package/dist/esm/input/ArcadeStickGamepadMapping.js.map +1 -0
- package/dist/esm/input/GameCubeGamepadMapping.d.ts +5 -0
- package/dist/esm/input/GameCubeGamepadMapping.js +12 -0
- package/dist/esm/input/GameCubeGamepadMapping.js.map +1 -0
- package/dist/esm/input/Gamepad.d.ts +45 -0
- package/dist/esm/input/Gamepad.js +150 -0
- package/dist/esm/input/Gamepad.js.map +1 -0
- package/dist/esm/input/GamepadChannels.d.ts +39 -0
- package/dist/esm/input/GamepadChannels.js +43 -0
- package/dist/esm/input/GamepadChannels.js.map +1 -0
- package/dist/esm/input/GamepadControl.d.ts +15 -0
- package/dist/esm/input/GamepadControl.js +24 -0
- package/dist/esm/input/GamepadControl.js.map +1 -0
- package/dist/esm/input/GamepadDefinitions.d.ts +31 -0
- package/dist/esm/input/GamepadDefinitions.js +175 -0
- package/dist/esm/input/GamepadDefinitions.js.map +1 -0
- package/dist/esm/input/GamepadMapping.d.ts +23 -0
- package/dist/esm/input/GamepadMapping.js +30 -0
- package/dist/esm/input/GamepadMapping.js.map +1 -0
- package/dist/esm/input/GamepadPromptLayouts.d.ts +9 -0
- package/dist/esm/input/GamepadPromptLayouts.js +140 -0
- package/dist/esm/input/GamepadPromptLayouts.js.map +1 -0
- package/dist/esm/input/GenericDualAnalogGamepadMapping.d.ts +5 -0
- package/dist/esm/input/GenericDualAnalogGamepadMapping.js +53 -0
- package/dist/esm/input/GenericDualAnalogGamepadMapping.js.map +1 -0
- package/dist/esm/input/Input.d.ts +28 -0
- package/dist/esm/input/Input.js +67 -0
- package/dist/esm/input/Input.js.map +1 -0
- package/dist/esm/input/InputManager.d.ts +76 -0
- package/dist/esm/input/InputManager.js +342 -0
- package/dist/esm/input/InputManager.js.map +1 -0
- package/dist/esm/input/JoyConLeftGamepadMapping.d.ts +5 -0
- package/dist/esm/input/JoyConLeftGamepadMapping.js +12 -0
- package/dist/esm/input/JoyConLeftGamepadMapping.js.map +1 -0
- package/dist/esm/input/JoyConRightGamepadMapping.d.ts +5 -0
- package/dist/esm/input/JoyConRightGamepadMapping.js +12 -0
- package/dist/esm/input/JoyConRightGamepadMapping.js.map +1 -0
- package/dist/esm/input/PlayStationGamepadMapping.d.ts +5 -0
- package/dist/esm/input/PlayStationGamepadMapping.js +12 -0
- package/dist/esm/input/PlayStationGamepadMapping.js.map +1 -0
- package/dist/esm/input/Pointer.d.ts +52 -0
- package/dist/esm/input/Pointer.js +118 -0
- package/dist/esm/input/Pointer.js.map +1 -0
- package/dist/esm/input/SteamControllerGamepadMapping.d.ts +5 -0
- package/dist/esm/input/SteamControllerGamepadMapping.js +12 -0
- package/dist/esm/input/SteamControllerGamepadMapping.js.map +1 -0
- package/dist/esm/input/SwitchProGamepadMapping.d.ts +5 -0
- package/dist/esm/input/SwitchProGamepadMapping.js +12 -0
- package/dist/esm/input/SwitchProGamepadMapping.js.map +1 -0
- package/dist/esm/input/XboxGamepadMapping.d.ts +5 -0
- package/dist/esm/input/XboxGamepadMapping.js +12 -0
- package/dist/esm/input/XboxGamepadMapping.js.map +1 -0
- package/dist/esm/input/index.d.ts +19 -0
- package/dist/esm/input/types.d.ts +111 -0
- package/dist/esm/input/types.js +111 -0
- package/dist/esm/input/types.js.map +1 -0
- package/dist/esm/math/AbstractVector.d.ts +33 -0
- package/dist/esm/math/AbstractVector.js +106 -0
- package/dist/esm/math/AbstractVector.js.map +1 -0
- package/dist/esm/math/Circle.d.ts +41 -0
- package/dist/esm/math/Circle.js +134 -0
- package/dist/esm/math/Circle.js.map +1 -0
- package/dist/esm/math/CircleLike.d.ts +5 -0
- package/dist/esm/math/Collision.d.ts +28 -0
- package/dist/esm/math/Ellipse.d.ts +37 -0
- package/dist/esm/math/Ellipse.js +109 -0
- package/dist/esm/math/Ellipse.js.map +1 -0
- package/dist/esm/math/EllipseLike.d.ts +6 -0
- package/dist/esm/math/Flags.d.ts +12 -0
- package/dist/esm/math/Flags.js +41 -0
- package/dist/esm/math/Flags.js.map +1 -0
- package/dist/esm/math/Interval.d.ts +16 -0
- package/dist/esm/math/Interval.js +43 -0
- package/dist/esm/math/Interval.js.map +1 -0
- package/dist/esm/math/Line.d.ts +36 -0
- package/dist/esm/math/Line.js +111 -0
- package/dist/esm/math/Line.js.map +1 -0
- package/dist/esm/math/LineLike.d.ts +6 -0
- package/dist/esm/math/Matrix.d.ts +32 -0
- package/dist/esm/math/Matrix.js +125 -0
- package/dist/esm/math/Matrix.js.map +1 -0
- package/dist/esm/math/ObservableSize.d.ts +16 -0
- package/dist/esm/math/ObservableSize.js +55 -0
- package/dist/esm/math/ObservableSize.js.map +1 -0
- package/dist/esm/math/ObservableVector.d.ts +21 -0
- package/dist/esm/math/ObservableVector.js +71 -0
- package/dist/esm/math/ObservableVector.js.map +1 -0
- package/dist/esm/math/PointLike.d.ts +4 -0
- package/dist/esm/math/PolarVector.d.ts +8 -0
- package/dist/esm/math/PolarVector.js +17 -0
- package/dist/esm/math/PolarVector.js.map +1 -0
- package/dist/esm/math/Polygon.d.ts +38 -0
- package/dist/esm/math/Polygon.js +161 -0
- package/dist/esm/math/Polygon.js.map +1 -0
- package/dist/esm/math/PolygonLike.d.ts +6 -0
- package/dist/esm/math/Random.d.ts +15 -0
- package/dist/esm/math/Random.js +72 -0
- package/dist/esm/math/Random.js.map +1 -0
- package/dist/esm/math/Rectangle.d.ts +48 -0
- package/dist/esm/math/Rectangle.js +205 -0
- package/dist/esm/math/Rectangle.js.map +1 -0
- package/dist/esm/math/RectangleLike.d.ts +6 -0
- package/dist/esm/math/Segment.d.ts +25 -0
- package/dist/esm/math/Segment.js +77 -0
- package/dist/esm/math/Segment.js.map +1 -0
- package/dist/esm/math/ShapeLike.d.ts +4 -0
- package/dist/esm/math/Size.d.ts +24 -0
- package/dist/esm/math/Size.js +69 -0
- package/dist/esm/math/Size.js.map +1 -0
- package/dist/esm/math/Transformable.d.ts +47 -0
- package/dist/esm/math/Transformable.js +142 -0
- package/dist/esm/math/Transformable.js.map +1 -0
- package/dist/esm/math/Vector.d.ts +28 -0
- package/dist/esm/math/Vector.js +77 -0
- package/dist/esm/math/Vector.js.map +1 -0
- package/dist/esm/math/collision-detection.d.ts +41 -0
- package/dist/esm/math/collision-detection.js +394 -0
- package/dist/esm/math/collision-detection.js.map +1 -0
- package/dist/esm/math/collision-primitives.d.ts +39 -0
- package/dist/esm/math/collision-primitives.js +164 -0
- package/dist/esm/math/collision-primitives.js.map +1 -0
- package/dist/esm/math/geometry.d.ts +8 -0
- package/dist/esm/math/geometry.js +195 -0
- package/dist/esm/math/geometry.js.map +1 -0
- package/dist/esm/math/index.d.ts +27 -0
- package/dist/esm/math/utils.d.ts +21 -0
- package/dist/esm/math/utils.js +54 -0
- package/dist/esm/math/utils.js.map +1 -0
- package/dist/esm/particles/Particle.d.ts +40 -0
- package/dist/esm/particles/Particle.js +108 -0
- package/dist/esm/particles/Particle.js.map +1 -0
- package/dist/esm/particles/ParticleProperties.d.ts +14 -0
- package/dist/esm/particles/ParticleSystem.d.ts +43 -0
- package/dist/esm/particles/ParticleSystem.js +185 -0
- package/dist/esm/particles/ParticleSystem.js.map +1 -0
- package/dist/esm/particles/affectors/ColorAffector.d.ts +17 -0
- package/dist/esm/particles/affectors/ColorAffector.js +40 -0
- package/dist/esm/particles/affectors/ColorAffector.js.map +1 -0
- package/dist/esm/particles/affectors/ForceAffector.d.ts +13 -0
- package/dist/esm/particles/affectors/ForceAffector.js +27 -0
- package/dist/esm/particles/affectors/ForceAffector.js.map +1 -0
- package/dist/esm/particles/affectors/ParticleAffector.d.ts +6 -0
- package/dist/esm/particles/affectors/ScaleAffector.d.ts +13 -0
- package/dist/esm/particles/affectors/ScaleAffector.js +27 -0
- package/dist/esm/particles/affectors/ScaleAffector.js.map +1 -0
- package/dist/esm/particles/affectors/TorqueAffector.d.ts +12 -0
- package/dist/esm/particles/affectors/TorqueAffector.js +25 -0
- package/dist/esm/particles/affectors/TorqueAffector.js.map +1 -0
- package/dist/esm/particles/emitters/ParticleEmitter.d.ts +6 -0
- package/dist/esm/particles/emitters/ParticleOptions.d.ts +35 -0
- package/dist/esm/particles/emitters/ParticleOptions.js +84 -0
- package/dist/esm/particles/emitters/ParticleOptions.js.map +1 -0
- package/dist/esm/particles/emitters/UniversalEmitter.d.ts +17 -0
- package/dist/esm/particles/emitters/UniversalEmitter.js +43 -0
- package/dist/esm/particles/emitters/UniversalEmitter.js.map +1 -0
- package/dist/esm/particles/index.d.ts +11 -0
- package/dist/esm/physics/RapierPhysicsWorld.d.ts +136 -0
- package/dist/esm/physics/RapierPhysicsWorld.js +464 -0
- package/dist/esm/physics/RapierPhysicsWorld.js.map +1 -0
- package/dist/esm/physics/index.d.ts +1 -0
- package/dist/esm/rendering/CallbackRenderPass.d.ts +7 -0
- package/dist/esm/rendering/CallbackRenderPass.js +11 -0
- package/dist/esm/rendering/CallbackRenderPass.js.map +1 -0
- package/dist/esm/rendering/Container.d.ts +36 -0
- package/dist/esm/rendering/Container.js +197 -0
- package/dist/esm/rendering/Container.js.map +1 -0
- package/dist/esm/rendering/Drawable.d.ts +16 -0
- package/dist/esm/rendering/Drawable.js +57 -0
- package/dist/esm/rendering/Drawable.js.map +1 -0
- package/dist/esm/rendering/RenderBackendType.d.ts +4 -0
- package/dist/esm/rendering/RenderBackendType.js +8 -0
- package/dist/esm/rendering/RenderBackendType.js.map +1 -0
- package/dist/esm/rendering/RenderNode.d.ts +51 -0
- package/dist/esm/rendering/RenderNode.js +238 -0
- package/dist/esm/rendering/RenderNode.js.map +1 -0
- package/dist/esm/rendering/RenderPass.d.ts +4 -0
- package/dist/esm/rendering/RenderStats.d.ts +12 -0
- package/dist/esm/rendering/RenderStats.js +24 -0
- package/dist/esm/rendering/RenderStats.js.map +1 -0
- package/dist/esm/rendering/RenderTarget.d.ts +34 -0
- package/dist/esm/rendering/RenderTarget.js +105 -0
- package/dist/esm/rendering/RenderTarget.js.map +1 -0
- package/dist/esm/rendering/RenderTargetPass.d.ts +18 -0
- package/dist/esm/rendering/RenderTargetPass.js +27 -0
- package/dist/esm/rendering/RenderTargetPass.js.map +1 -0
- package/dist/esm/rendering/Renderer.d.ts +15 -0
- package/dist/esm/rendering/RendererRegistry.d.ts +43 -0
- package/dist/esm/rendering/RendererRegistry.js +88 -0
- package/dist/esm/rendering/RendererRegistry.js.map +1 -0
- package/dist/esm/rendering/SceneRenderRuntime.d.ts +29 -0
- package/dist/esm/rendering/View.d.ts +102 -0
- package/dist/esm/rendering/View.js +360 -0
- package/dist/esm/rendering/View.js.map +1 -0
- package/dist/esm/rendering/filters/BlurFilter.d.ts +20 -0
- package/dist/esm/rendering/filters/BlurFilter.js +68 -0
- package/dist/esm/rendering/filters/BlurFilter.js.map +1 -0
- package/dist/esm/rendering/filters/ColorFilter.d.ts +12 -0
- package/dist/esm/rendering/filters/ColorFilter.js +41 -0
- package/dist/esm/rendering/filters/ColorFilter.js.map +1 -0
- package/dist/esm/rendering/filters/Filter.d.ts +5 -0
- package/dist/esm/rendering/filters/Filter.js +5 -0
- package/dist/esm/rendering/filters/Filter.js.map +1 -0
- package/dist/esm/rendering/index.d.ts +52 -0
- package/dist/esm/rendering/primitives/CircleGeometry.d.ts +4 -0
- package/dist/esm/rendering/primitives/CircleGeometry.js +21 -0
- package/dist/esm/rendering/primitives/CircleGeometry.js.map +1 -0
- package/dist/esm/rendering/primitives/DrawableShape.d.ts +11 -0
- package/dist/esm/rendering/primitives/DrawableShape.js +18 -0
- package/dist/esm/rendering/primitives/DrawableShape.js.map +1 -0
- package/dist/esm/rendering/primitives/Geometry.d.ts +13 -0
- package/dist/esm/rendering/primitives/Geometry.js +13 -0
- package/dist/esm/rendering/primitives/Geometry.js.map +1 -0
- package/dist/esm/rendering/primitives/Graphics.d.ts +36 -0
- package/dist/esm/rendering/primitives/Graphics.js +211 -0
- package/dist/esm/rendering/primitives/Graphics.js.map +1 -0
- package/dist/esm/rendering/shader/Shader.d.ts +27 -0
- package/dist/esm/rendering/shader/Shader.js +61 -0
- package/dist/esm/rendering/shader/Shader.js.map +1 -0
- package/dist/esm/rendering/shader/ShaderAttribute.d.ts +9 -0
- package/dist/esm/rendering/shader/ShaderAttribute.js +17 -0
- package/dist/esm/rendering/shader/ShaderAttribute.js.map +1 -0
- package/dist/esm/rendering/shader/ShaderUniform.d.ts +16 -0
- package/dist/esm/rendering/shader/ShaderUniform.js +33 -0
- package/dist/esm/rendering/shader/ShaderUniform.js.map +1 -0
- package/dist/esm/rendering/sprite/AnimatedSprite.d.ts +43 -0
- package/dist/esm/rendering/sprite/AnimatedSprite.js +177 -0
- package/dist/esm/rendering/sprite/AnimatedSprite.js.map +1 -0
- package/dist/esm/rendering/sprite/Sprite.d.ts +43 -0
- package/dist/esm/rendering/sprite/Sprite.js +169 -0
- package/dist/esm/rendering/sprite/Sprite.js.map +1 -0
- package/dist/esm/rendering/sprite/Spritesheet.d.ts +34 -0
- package/dist/esm/rendering/sprite/Spritesheet.js +87 -0
- package/dist/esm/rendering/sprite/Spritesheet.js.map +1 -0
- package/dist/esm/rendering/text/Text.d.ts +26 -0
- package/dist/esm/rendering/text/Text.js +126 -0
- package/dist/esm/rendering/text/Text.js.map +1 -0
- package/dist/esm/rendering/text/TextStyle.d.ts +65 -0
- package/dist/esm/rendering/text/TextStyle.js +179 -0
- package/dist/esm/rendering/text/TextStyle.js.map +1 -0
- package/dist/esm/rendering/texture/RenderTexture.d.ts +36 -0
- package/dist/esm/rendering/texture/RenderTexture.js +118 -0
- package/dist/esm/rendering/texture/RenderTexture.js.map +1 -0
- package/dist/esm/rendering/texture/Sampler.d.ts +29 -0
- package/dist/esm/rendering/texture/Sampler.js +69 -0
- package/dist/esm/rendering/texture/Sampler.js.map +1 -0
- package/dist/esm/rendering/texture/Texture.d.ts +52 -0
- package/dist/esm/rendering/texture/Texture.js +171 -0
- package/dist/esm/rendering/texture/Texture.js.map +1 -0
- package/dist/esm/rendering/types.d.ts +68 -0
- package/dist/esm/rendering/types.js +79 -0
- package/dist/esm/rendering/types.js.map +1 -0
- package/dist/esm/rendering/utils.d.ts +9 -0
- package/dist/esm/rendering/utils.js +39 -0
- package/dist/esm/rendering/utils.js.map +1 -0
- package/dist/esm/rendering/video/Video.d.ts +62 -0
- package/dist/esm/rendering/video/Video.js +288 -0
- package/dist/esm/rendering/video/Video.js.map +1 -0
- package/dist/esm/rendering/webgl2/AbstractWebGl2BatchedRenderer.d.ts +49 -0
- package/dist/esm/rendering/webgl2/AbstractWebGl2BatchedRenderer.js +168 -0
- package/dist/esm/rendering/webgl2/AbstractWebGl2BatchedRenderer.js.map +1 -0
- package/dist/esm/rendering/webgl2/AbstractWebGl2Renderer.d.ts +44 -0
- package/dist/esm/rendering/webgl2/AbstractWebGl2Renderer.js +59 -0
- package/dist/esm/rendering/webgl2/AbstractWebGl2Renderer.js.map +1 -0
- package/dist/esm/rendering/webgl2/WebGl2ParticleRenderer.d.ts +11 -0
- package/dist/esm/rendering/webgl2/WebGl2ParticleRenderer.js +110 -0
- package/dist/esm/rendering/webgl2/WebGl2ParticleRenderer.js.map +1 -0
- package/dist/esm/rendering/webgl2/WebGl2PrimitiveRenderer.d.ts +26 -0
- package/dist/esm/rendering/webgl2/WebGl2PrimitiveRenderer.js +211 -0
- package/dist/esm/rendering/webgl2/WebGl2PrimitiveRenderer.js.map +1 -0
- package/dist/esm/rendering/webgl2/WebGl2RenderBuffer.d.ts +26 -0
- package/dist/esm/rendering/webgl2/WebGl2RenderBuffer.js +52 -0
- package/dist/esm/rendering/webgl2/WebGl2RenderBuffer.js.map +1 -0
- package/dist/esm/rendering/webgl2/WebGl2RenderManager.d.ts +99 -0
- package/dist/esm/rendering/webgl2/WebGl2RenderManager.js +592 -0
- package/dist/esm/rendering/webgl2/WebGl2RenderManager.js.map +1 -0
- package/dist/esm/rendering/webgl2/WebGl2RendererRuntime.d.ts +15 -0
- package/dist/esm/rendering/webgl2/WebGl2ShaderBlock.d.ts +17 -0
- package/dist/esm/rendering/webgl2/WebGl2ShaderBlock.js +55 -0
- package/dist/esm/rendering/webgl2/WebGl2ShaderBlock.js.map +1 -0
- package/dist/esm/rendering/webgl2/WebGl2ShaderMappings.d.ts +3 -0
- package/dist/esm/rendering/webgl2/WebGl2ShaderMappings.js +59 -0
- package/dist/esm/rendering/webgl2/WebGl2ShaderMappings.js.map +1 -0
- package/dist/esm/rendering/webgl2/WebGl2ShaderRuntime.d.ts +2 -0
- package/dist/esm/rendering/webgl2/WebGl2ShaderRuntime.js +154 -0
- package/dist/esm/rendering/webgl2/WebGl2ShaderRuntime.js.map +1 -0
- package/dist/esm/rendering/webgl2/WebGl2SpriteRenderer.d.ts +11 -0
- package/dist/esm/rendering/webgl2/WebGl2SpriteRenderer.js +82 -0
- package/dist/esm/rendering/webgl2/WebGl2SpriteRenderer.js.map +1 -0
- package/dist/esm/rendering/webgl2/WebGl2VertexArrayObject.d.ts +40 -0
- package/dist/esm/rendering/webgl2/WebGl2VertexArrayObject.js +68 -0
- package/dist/esm/rendering/webgl2/WebGl2VertexArrayObject.js.map +1 -0
- package/dist/esm/rendering/webgl2/glsl/particle.frag.js +4 -0
- package/dist/esm/rendering/webgl2/glsl/particle.frag.js.map +1 -0
- package/dist/esm/rendering/webgl2/glsl/particle.vert.js +4 -0
- package/dist/esm/rendering/webgl2/glsl/particle.vert.js.map +1 -0
- package/dist/esm/rendering/webgl2/glsl/primitive.frag.js +4 -0
- package/dist/esm/rendering/webgl2/glsl/primitive.frag.js.map +1 -0
- package/dist/esm/rendering/webgl2/glsl/primitive.vert.js +4 -0
- package/dist/esm/rendering/webgl2/glsl/primitive.vert.js.map +1 -0
- package/dist/esm/rendering/webgl2/glsl/sprite.frag.js +4 -0
- package/dist/esm/rendering/webgl2/glsl/sprite.frag.js.map +1 -0
- package/dist/esm/rendering/webgl2/glsl/sprite.vert.js +4 -0
- package/dist/esm/rendering/webgl2/glsl/sprite.vert.js.map +1 -0
- package/dist/esm/rendering/webgpu/AbstractWebGpuRenderer.d.ts +28 -0
- package/dist/esm/rendering/webgpu/AbstractWebGpuRenderer.js +52 -0
- package/dist/esm/rendering/webgpu/AbstractWebGpuRenderer.js.map +1 -0
- package/dist/esm/rendering/webgpu/WebGpuBlendState.d.ts +6 -0
- package/dist/esm/rendering/webgpu/WebGpuBlendState.js +79 -0
- package/dist/esm/rendering/webgpu/WebGpuBlendState.js.map +1 -0
- package/dist/esm/rendering/webgpu/WebGpuParticleRenderer.d.ts +33 -0
- package/dist/esm/rendering/webgpu/WebGpuParticleRenderer.js +423 -0
- package/dist/esm/rendering/webgpu/WebGpuParticleRenderer.js.map +1 -0
- package/dist/esm/rendering/webgpu/WebGpuPrimitiveRenderer.d.ts +43 -0
- package/dist/esm/rendering/webgpu/WebGpuPrimitiveRenderer.js +425 -0
- package/dist/esm/rendering/webgpu/WebGpuPrimitiveRenderer.js.map +1 -0
- package/dist/esm/rendering/webgpu/WebGpuRenderManager.d.ts +111 -0
- package/dist/esm/rendering/webgpu/WebGpuRenderManager.js +763 -0
- package/dist/esm/rendering/webgpu/WebGpuRenderManager.js.map +1 -0
- package/dist/esm/rendering/webgpu/WebGpuRendererRuntime.d.ts +8 -0
- package/dist/esm/rendering/webgpu/WebGpuSpriteRenderer.d.ts +33 -0
- package/dist/esm/rendering/webgpu/WebGpuSpriteRenderer.js +488 -0
- package/dist/esm/rendering/webgpu/WebGpuSpriteRenderer.js.map +1 -0
- package/dist/esm/resources/AbstractAssetFactory.d.ts +10 -0
- package/dist/esm/resources/AbstractAssetFactory.js +26 -0
- package/dist/esm/resources/AbstractAssetFactory.js.map +1 -0
- package/dist/esm/resources/AssetFactory.d.ts +6 -0
- package/dist/esm/resources/AssetManifest.d.ts +28 -0
- package/dist/esm/resources/AssetManifest.js +64 -0
- package/dist/esm/resources/AssetManifest.js.map +1 -0
- package/dist/esm/resources/CacheFirstStrategy.d.ts +5 -0
- package/dist/esm/resources/CacheFirstStrategy.js +34 -0
- package/dist/esm/resources/CacheFirstStrategy.js.map +1 -0
- package/dist/esm/resources/CacheStore.d.ts +7 -0
- package/dist/esm/resources/CacheStrategy.d.ts +12 -0
- package/dist/esm/resources/Database.d.ts +13 -0
- package/dist/esm/resources/FactoryRegistry.d.ts +9 -0
- package/dist/esm/resources/FactoryRegistry.js +44 -0
- package/dist/esm/resources/FactoryRegistry.js.map +1 -0
- package/dist/esm/resources/IndexedDbDatabase.d.ts +21 -0
- package/dist/esm/resources/IndexedDbDatabase.js +139 -0
- package/dist/esm/resources/IndexedDbDatabase.js.map +1 -0
- package/dist/esm/resources/IndexedDbStore.d.ts +16 -0
- package/dist/esm/resources/IndexedDbStore.js +31 -0
- package/dist/esm/resources/IndexedDbStore.js.map +1 -0
- package/dist/esm/resources/Loader.d.ts +88 -0
- package/dist/esm/resources/Loader.js +597 -0
- package/dist/esm/resources/Loader.js.map +1 -0
- package/dist/esm/resources/NetworkOnlyStrategy.d.ts +5 -0
- package/dist/esm/resources/NetworkOnlyStrategy.js +12 -0
- package/dist/esm/resources/NetworkOnlyStrategy.js.map +1 -0
- package/dist/esm/resources/factories/BinaryFactory.d.ts +6 -0
- package/dist/esm/resources/factories/BinaryFactory.js +17 -0
- package/dist/esm/resources/factories/BinaryFactory.js.map +1 -0
- package/dist/esm/resources/factories/FontFactory.d.ts +13 -0
- package/dist/esm/resources/factories/FontFactory.js +39 -0
- package/dist/esm/resources/factories/FontFactory.js.map +1 -0
- package/dist/esm/resources/factories/ImageFactory.d.ts +10 -0
- package/dist/esm/resources/factories/ImageFactory.js +38 -0
- package/dist/esm/resources/factories/ImageFactory.js.map +1 -0
- package/dist/esm/resources/factories/JsonFactory.d.ts +6 -0
- package/dist/esm/resources/factories/JsonFactory.js +17 -0
- package/dist/esm/resources/factories/JsonFactory.js.map +1 -0
- package/dist/esm/resources/factories/MusicFactory.d.ts +16 -0
- package/dist/esm/resources/factories/MusicFactory.js +40 -0
- package/dist/esm/resources/factories/MusicFactory.js.map +1 -0
- package/dist/esm/resources/factories/SoundFactory.d.ts +14 -0
- package/dist/esm/resources/factories/SoundFactory.js +25 -0
- package/dist/esm/resources/factories/SoundFactory.js.map +1 -0
- package/dist/esm/resources/factories/SvgFactory.d.ts +6 -0
- package/dist/esm/resources/factories/SvgFactory.js +37 -0
- package/dist/esm/resources/factories/SvgFactory.js.map +1 -0
- package/dist/esm/resources/factories/TextFactory.d.ts +6 -0
- package/dist/esm/resources/factories/TextFactory.js +17 -0
- package/dist/esm/resources/factories/TextFactory.js.map +1 -0
- package/dist/esm/resources/factories/TextureFactory.d.ts +13 -0
- package/dist/esm/resources/factories/TextureFactory.js +40 -0
- package/dist/esm/resources/factories/TextureFactory.js.map +1 -0
- package/dist/esm/resources/factories/VideoFactory.d.ts +18 -0
- package/dist/esm/resources/factories/VideoFactory.js +43 -0
- package/dist/esm/resources/factories/VideoFactory.js.map +1 -0
- package/dist/esm/resources/factories/VttFactory.d.ts +6 -0
- package/dist/esm/resources/factories/VttFactory.js +60 -0
- package/dist/esm/resources/factories/VttFactory.js.map +1 -0
- package/dist/esm/resources/factories/WasmFactory.d.ts +6 -0
- package/dist/esm/resources/factories/WasmFactory.js +17 -0
- package/dist/esm/resources/factories/WasmFactory.js.map +1 -0
- package/dist/esm/resources/index.d.ts +26 -0
- package/dist/esm/resources/tokens.d.ts +30 -0
- package/dist/esm/resources/tokens.js +33 -0
- package/dist/esm/resources/tokens.js.map +1 -0
- package/dist/esm/resources/utils.d.ts +1 -0
- package/dist/esm/resources/utils.js +129 -0
- package/dist/esm/resources/utils.js.map +1 -0
- package/dist/esm/vendor/webgl-debug.js +1160 -0
- package/dist/esm/vendor/webgl-debug.js.map +1 -0
- package/dist/exo.d.ts +4748 -0
- package/dist/exo.esm.js +16850 -0
- package/dist/exo.esm.js.map +1 -0
- package/dist/exo.esm.min.js +2 -0
- package/dist/exo.esm.min.js.map +1 -0
- package/dist/exo.global.js +17067 -0
- package/dist/exo.global.js.map +1 -0
- package/dist/exo.global.min.js +2 -0
- package/dist/exo.global.min.js.map +1 -0
- package/package.json +99 -0
package/dist/exo.d.ts
ADDED
|
@@ -0,0 +1,4748 @@
|
|
|
1
|
+
declare module "math/Matrix" {
|
|
2
|
+
import type { Cloneable } from "core/types";
|
|
3
|
+
/**
|
|
4
|
+
* | a | b | x |
|
|
5
|
+
* | c | d | y |
|
|
6
|
+
* | e | f | z |
|
|
7
|
+
*/
|
|
8
|
+
export class Matrix implements Cloneable {
|
|
9
|
+
a: number;
|
|
10
|
+
b: number;
|
|
11
|
+
x: number;
|
|
12
|
+
c: number;
|
|
13
|
+
d: number;
|
|
14
|
+
y: number;
|
|
15
|
+
e: number;
|
|
16
|
+
f: number;
|
|
17
|
+
z: number;
|
|
18
|
+
private _array;
|
|
19
|
+
constructor(a?: number, b?: number, x?: number, c?: number, d?: number, y?: number, e?: number, f?: number, z?: number);
|
|
20
|
+
set(a?: number, b?: number, x?: number, c?: number, d?: number, y?: number, e?: number, f?: number, z?: number): this;
|
|
21
|
+
copy(matrix: Matrix): this;
|
|
22
|
+
clone(): this;
|
|
23
|
+
equals({ a, b, x, c, d, y, e, f, z }?: Partial<Matrix>): boolean;
|
|
24
|
+
combine(matrix: Matrix): this;
|
|
25
|
+
getInverse(result?: Matrix): Matrix;
|
|
26
|
+
translate(x: number, y?: number): Matrix;
|
|
27
|
+
rotate(angle: number, centerX?: number, centerY?: number): Matrix;
|
|
28
|
+
scale(scaleX: number, scaleY?: number, centerX?: number, centerY?: number): Matrix;
|
|
29
|
+
toArray(transpose?: boolean): Float32Array;
|
|
30
|
+
destroy(): void;
|
|
31
|
+
static readonly identity: Matrix;
|
|
32
|
+
static get temp(): Matrix;
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
declare module "math/Interval" {
|
|
36
|
+
import type { Cloneable } from "core/types";
|
|
37
|
+
export class Interval implements Cloneable {
|
|
38
|
+
min: number;
|
|
39
|
+
max: number;
|
|
40
|
+
constructor(min?: number, max?: number);
|
|
41
|
+
set(min: number, max: number): this;
|
|
42
|
+
copy(interval: Interval): this;
|
|
43
|
+
clone(): this;
|
|
44
|
+
containsInterval(interval: Interval): boolean;
|
|
45
|
+
includes(value: number): boolean;
|
|
46
|
+
overlaps(interval: Interval): boolean;
|
|
47
|
+
getOverlap(interval: Interval): number;
|
|
48
|
+
destroy(): void;
|
|
49
|
+
static readonly zero: Interval;
|
|
50
|
+
static get temp(): Interval;
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
declare module "math/Collision" {
|
|
54
|
+
import type { Vector } from "math/Vector";
|
|
55
|
+
import type { Interval } from "math/Interval";
|
|
56
|
+
export const enum CollisionType {
|
|
57
|
+
Point = 0,
|
|
58
|
+
Line = 1,
|
|
59
|
+
Rectangle = 2,
|
|
60
|
+
Circle = 3,
|
|
61
|
+
Ellipse = 4,
|
|
62
|
+
Polygon = 5,
|
|
63
|
+
SceneNode = 6
|
|
64
|
+
}
|
|
65
|
+
export interface Collidable {
|
|
66
|
+
readonly collisionType: CollisionType;
|
|
67
|
+
intersectsWith(target: Collidable): boolean;
|
|
68
|
+
collidesWith(target: Collidable): CollisionResponse | null;
|
|
69
|
+
contains(x: number, y: number): boolean;
|
|
70
|
+
getNormals(): Array<Vector>;
|
|
71
|
+
project(axis: Vector, interval?: Interval): Interval;
|
|
72
|
+
}
|
|
73
|
+
export interface CollisionResponse {
|
|
74
|
+
readonly shapeA: Collidable;
|
|
75
|
+
readonly shapeB: Collidable;
|
|
76
|
+
readonly overlap: number;
|
|
77
|
+
readonly shapeAinB: boolean;
|
|
78
|
+
readonly shapeBinA: boolean;
|
|
79
|
+
readonly projectionN: Vector;
|
|
80
|
+
readonly projectionV: Vector;
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
declare module "math/ShapeLike" {
|
|
84
|
+
import type { Collidable } from "math/Collision";
|
|
85
|
+
import type { Cloneable, Destroyable, HasBoundingBox } from "core/types";
|
|
86
|
+
export interface ShapeLike extends Collidable, Cloneable, Destroyable, HasBoundingBox {
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
declare module "math/PointLike" {
|
|
90
|
+
export interface PointLike {
|
|
91
|
+
x: number;
|
|
92
|
+
y: number;
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
declare module "math/collision-primitives" {
|
|
96
|
+
import { VoronoiRegion } from "math/utils";
|
|
97
|
+
import type { PointLike } from "math/PointLike";
|
|
98
|
+
interface RectangleLikeLike extends PointLike {
|
|
99
|
+
width: number;
|
|
100
|
+
height: number;
|
|
101
|
+
}
|
|
102
|
+
interface CircleLikeLike extends PointLike {
|
|
103
|
+
radius: number;
|
|
104
|
+
}
|
|
105
|
+
interface EllipseLikeLike extends PointLike {
|
|
106
|
+
rx: number;
|
|
107
|
+
ry: number;
|
|
108
|
+
}
|
|
109
|
+
interface PolygonLikeLike {
|
|
110
|
+
x: number;
|
|
111
|
+
y: number;
|
|
112
|
+
points: Array<PointLike>;
|
|
113
|
+
}
|
|
114
|
+
const buildEllipsePoints: ({ x: centerX, y: centerY, rx, ry }: EllipseLikeLike) => Array<PointLike>;
|
|
115
|
+
const buildCirclePoints: ({ x: centerX, y: centerY, radius }: CircleLikeLike) => Array<PointLike>;
|
|
116
|
+
const buildRectanglePoints: ({ x, y, width, height }: RectangleLikeLike) => Array<PointLike>;
|
|
117
|
+
const buildPolygonWorldPoints: ({ x: offsetX, y: offsetY, points }: PolygonLikeLike) => Array<PointLike>;
|
|
118
|
+
const pointOnSegment: ({ x: px, y: py }: PointLike, { x: x1, y: y1 }: PointLike, { x: x2, y: y2 }: PointLike) => boolean;
|
|
119
|
+
const segmentsIntersect: (a1: PointLike, a2: PointLike, b1: PointLike, b2: PointLike) => boolean;
|
|
120
|
+
const polygonContainsPoint: ({ x, y }: PointLike, points: Array<PointLike>) => boolean;
|
|
121
|
+
const polygonsIntersect: (polygonA: Array<PointLike>, polygonB: Array<PointLike>) => boolean;
|
|
122
|
+
const intersectionPointPoint: ({ x: x1, y: y1 }: PointLike, { x: x2, y: y2 }: PointLike, threshold?: number) => boolean;
|
|
123
|
+
const intersectionPointLineSegment: ({ x, y }: PointLike, { x: x1, y: y1 }: PointLike, { x: x2, y: y2 }: PointLike, threshold?: number) => boolean;
|
|
124
|
+
const intersectionPointRect: ({ x: x1, y: y1 }: PointLike, { x: x2, y: y2, width, height }: RectangleLikeLike) => boolean;
|
|
125
|
+
const intersectionPointCircle: ({ x: x1, y: y1 }: PointLike, { x: x2, y: y2, radius }: CircleLikeLike) => boolean;
|
|
126
|
+
const intersectionPointEllipse: ({ x: x1, y: y1 }: PointLike, { x: x2, y: y2, rx, ry }: EllipseLikeLike) => boolean;
|
|
127
|
+
const intersectionPointPoly: (point: PointLike, { points }: PolygonLikeLike) => boolean;
|
|
128
|
+
const intersectionLineLineSegments: (a1: PointLike, a2: PointLike, b1: PointLike, b2: PointLike) => boolean;
|
|
129
|
+
const intersectionRectRect: ({ x: x1, y: y1, width: w1, height: h1 }: RectangleLikeLike, { x: x2, y: y2, width: w2, height: h2 }: RectangleLikeLike) => boolean;
|
|
130
|
+
const getVectorLength: (x: number, y: number) => number;
|
|
131
|
+
const getVectorLengthSquared: (x: number, y: number) => number;
|
|
132
|
+
const getDotProduct: (x1: number, y1: number, x2: number, y2: number) => number;
|
|
133
|
+
const getVoronoiRegion: (lineX: number, lineY: number, pointX: number, pointY: number) => VoronoiRegion;
|
|
134
|
+
export { buildCirclePoints, buildEllipsePoints, buildPolygonWorldPoints, buildRectanglePoints, getDotProduct, getVectorLength, getVectorLengthSquared, getVoronoiRegion, intersectionLineLineSegments, intersectionPointCircle, intersectionPointEllipse, intersectionPointLineSegment, intersectionPointPoint, intersectionPointPoly, intersectionPointRect, intersectionRectRect, pointOnSegment, polygonContainsPoint, polygonsIntersect, segmentsIntersect, };
|
|
135
|
+
}
|
|
136
|
+
declare module "math/AbstractVector" {
|
|
137
|
+
import type { Matrix } from "math/Matrix";
|
|
138
|
+
export abstract class AbstractVector {
|
|
139
|
+
abstract x: number;
|
|
140
|
+
abstract y: number;
|
|
141
|
+
get direction(): number;
|
|
142
|
+
set direction(angle: number);
|
|
143
|
+
get angle(): number;
|
|
144
|
+
set angle(angle: number);
|
|
145
|
+
get length(): number;
|
|
146
|
+
set length(magnitude: number);
|
|
147
|
+
get lengthSq(): number;
|
|
148
|
+
set lengthSq(lengthSquared: number);
|
|
149
|
+
get magnitude(): number;
|
|
150
|
+
set magnitude(magnitude: number);
|
|
151
|
+
set(x: number, y?: number): this;
|
|
152
|
+
equals<T extends AbstractVector>({ x, y }?: Partial<T>): boolean;
|
|
153
|
+
add(x: number, y?: number): this;
|
|
154
|
+
subtract(x: number, y?: number): this;
|
|
155
|
+
multiply(x: number, y?: number): this;
|
|
156
|
+
divide(x: number, y?: number): this;
|
|
157
|
+
normalize(): this;
|
|
158
|
+
invert(): this;
|
|
159
|
+
transform(matrix: Matrix): this;
|
|
160
|
+
transformInverse(matrix: Matrix): this;
|
|
161
|
+
perp(): this;
|
|
162
|
+
rperp(): this;
|
|
163
|
+
min(): number;
|
|
164
|
+
max(): number;
|
|
165
|
+
dot(x: number, y: number): number;
|
|
166
|
+
cross<T extends AbstractVector>(vector: T): number;
|
|
167
|
+
distanceTo<T extends AbstractVector>(vector: T): number;
|
|
168
|
+
abstract destroy(): void;
|
|
169
|
+
}
|
|
170
|
+
}
|
|
171
|
+
declare module "math/ObservableVector" {
|
|
172
|
+
import { AbstractVector } from "math/AbstractVector";
|
|
173
|
+
export class ObservableVector extends AbstractVector {
|
|
174
|
+
private _x;
|
|
175
|
+
private _y;
|
|
176
|
+
private readonly _callback;
|
|
177
|
+
constructor(callback: () => void, x?: number, y?: number);
|
|
178
|
+
get x(): number;
|
|
179
|
+
set x(x: number);
|
|
180
|
+
get y(): number;
|
|
181
|
+
set y(y: number);
|
|
182
|
+
set direction(angle: number);
|
|
183
|
+
set length(magnitude: number);
|
|
184
|
+
set(x?: number, y?: number): this;
|
|
185
|
+
add(x: number, y?: number): this;
|
|
186
|
+
subtract(x: number, y?: number): this;
|
|
187
|
+
scale(x: number, y?: number): this;
|
|
188
|
+
divide(x: number, y?: number): this;
|
|
189
|
+
clone(): this;
|
|
190
|
+
copy(vector: AbstractVector): this;
|
|
191
|
+
destroy<T = ObservableVector>(): void;
|
|
192
|
+
}
|
|
193
|
+
}
|
|
194
|
+
declare module "math/Flags" {
|
|
195
|
+
import type { TypedEnum } from "core/types";
|
|
196
|
+
export class Flags<T extends TypedEnum<T, number>> {
|
|
197
|
+
private _value;
|
|
198
|
+
get value(): number;
|
|
199
|
+
constructor(...flags: Array<number>);
|
|
200
|
+
push<V extends number = T[keyof T]>(...flags: Array<V>): this;
|
|
201
|
+
pop<V extends number = T[keyof T]>(flag: V): boolean;
|
|
202
|
+
remove<V extends number = T[keyof T]>(...flags: Array<V>): this;
|
|
203
|
+
has<V extends number = T[keyof T]>(...flags: Array<V>): boolean;
|
|
204
|
+
clear(): this;
|
|
205
|
+
destroy(): void;
|
|
206
|
+
}
|
|
207
|
+
}
|
|
208
|
+
declare module "math/Transformable" {
|
|
209
|
+
import { ObservableVector } from "math/ObservableVector";
|
|
210
|
+
import { Matrix } from "math/Matrix";
|
|
211
|
+
import { Flags } from "math/Flags";
|
|
212
|
+
export enum TransformableFlags {
|
|
213
|
+
None = 0,
|
|
214
|
+
Translation = 1,
|
|
215
|
+
Rotation = 2,
|
|
216
|
+
Scaling = 4,
|
|
217
|
+
Origin = 8,
|
|
218
|
+
Transform = 15,
|
|
219
|
+
TransformInverse = 16
|
|
220
|
+
}
|
|
221
|
+
export class Transformable {
|
|
222
|
+
readonly flags: Flags<TransformableFlags>;
|
|
223
|
+
protected _transform: Matrix;
|
|
224
|
+
protected _position: ObservableVector;
|
|
225
|
+
protected _scale: ObservableVector;
|
|
226
|
+
protected _origin: ObservableVector;
|
|
227
|
+
protected _rotation: number;
|
|
228
|
+
protected _sin: number;
|
|
229
|
+
protected _cos: number;
|
|
230
|
+
get position(): ObservableVector;
|
|
231
|
+
set position(position: ObservableVector);
|
|
232
|
+
get x(): number;
|
|
233
|
+
set x(x: number);
|
|
234
|
+
get y(): number;
|
|
235
|
+
set y(y: number);
|
|
236
|
+
get rotation(): number;
|
|
237
|
+
set rotation(rotation: number);
|
|
238
|
+
get scale(): ObservableVector;
|
|
239
|
+
set scale(scale: ObservableVector);
|
|
240
|
+
get origin(): ObservableVector;
|
|
241
|
+
set origin(origin: ObservableVector);
|
|
242
|
+
setPosition(x: number, y?: number): this;
|
|
243
|
+
setRotation(degrees: number): this;
|
|
244
|
+
setScale(x: number, y?: number): this;
|
|
245
|
+
setOrigin(x: number, y?: number): this;
|
|
246
|
+
move(x: number, y: number): this;
|
|
247
|
+
rotate(degrees: number): this;
|
|
248
|
+
getTransform(): Matrix;
|
|
249
|
+
updateTransform(): this;
|
|
250
|
+
destroy(): void;
|
|
251
|
+
private _setPositionDirty;
|
|
252
|
+
private _setRotationDirty;
|
|
253
|
+
private _setScalingDirty;
|
|
254
|
+
private _setOriginDirty;
|
|
255
|
+
}
|
|
256
|
+
}
|
|
257
|
+
declare module "core/Bounds" {
|
|
258
|
+
import { Rectangle } from "math/Rectangle";
|
|
259
|
+
import type { Matrix } from "math/Matrix";
|
|
260
|
+
export class Bounds {
|
|
261
|
+
private _minX;
|
|
262
|
+
private _minY;
|
|
263
|
+
private _maxX;
|
|
264
|
+
private _maxY;
|
|
265
|
+
private _dirty;
|
|
266
|
+
private _rect;
|
|
267
|
+
get minX(): number;
|
|
268
|
+
get minY(): number;
|
|
269
|
+
get maxX(): number;
|
|
270
|
+
get maxY(): number;
|
|
271
|
+
addCoords(x: number, y: number): this;
|
|
272
|
+
addRect(rectangle: Rectangle, transform?: Matrix): this;
|
|
273
|
+
getRect(): Rectangle;
|
|
274
|
+
reset(): this;
|
|
275
|
+
destroy(): void;
|
|
276
|
+
}
|
|
277
|
+
}
|
|
278
|
+
declare module "math/Size" {
|
|
279
|
+
import type { Cloneable } from "core/types";
|
|
280
|
+
export class Size implements Cloneable {
|
|
281
|
+
protected _width: number;
|
|
282
|
+
protected _height: number;
|
|
283
|
+
constructor(width?: number, height?: number);
|
|
284
|
+
get width(): number;
|
|
285
|
+
set width(width: number);
|
|
286
|
+
get height(): number;
|
|
287
|
+
set height(height: number);
|
|
288
|
+
set(width: number, height?: number): this;
|
|
289
|
+
add(width: number, height?: number): this;
|
|
290
|
+
subtract(width: number, height?: number): this;
|
|
291
|
+
scale(width: number, height?: number): this;
|
|
292
|
+
divide(width: number, height?: number): this;
|
|
293
|
+
copy(size: {
|
|
294
|
+
width: number;
|
|
295
|
+
height: number;
|
|
296
|
+
}): this;
|
|
297
|
+
clone(): this;
|
|
298
|
+
equals({ width, height }?: Partial<Size>): boolean;
|
|
299
|
+
destroy(): void;
|
|
300
|
+
static readonly zero: Size;
|
|
301
|
+
static get temp(): Size;
|
|
302
|
+
}
|
|
303
|
+
}
|
|
304
|
+
declare module "math/Random" {
|
|
305
|
+
export class Random {
|
|
306
|
+
private _state;
|
|
307
|
+
private _iteration;
|
|
308
|
+
private _seed;
|
|
309
|
+
private _value;
|
|
310
|
+
constructor(seed?: number);
|
|
311
|
+
get seed(): number;
|
|
312
|
+
get value(): number;
|
|
313
|
+
get iteration(): number;
|
|
314
|
+
setSeed(seed: number): this;
|
|
315
|
+
reset(): this;
|
|
316
|
+
next(min?: number, max?: number): number;
|
|
317
|
+
destroy(): void;
|
|
318
|
+
private _twist;
|
|
319
|
+
}
|
|
320
|
+
}
|
|
321
|
+
declare module "core/Time" {
|
|
322
|
+
import type { Cloneable, TimeInterval } from "core/types";
|
|
323
|
+
export class Time implements Cloneable {
|
|
324
|
+
private _milliseconds;
|
|
325
|
+
constructor(time?: number, factor?: TimeInterval);
|
|
326
|
+
get milliseconds(): number;
|
|
327
|
+
set milliseconds(milliseconds: number);
|
|
328
|
+
get seconds(): number;
|
|
329
|
+
set seconds(seconds: number);
|
|
330
|
+
get minutes(): number;
|
|
331
|
+
set minutes(minutes: number);
|
|
332
|
+
get hours(): number;
|
|
333
|
+
set hours(hours: number);
|
|
334
|
+
set(time?: number, factor?: TimeInterval): this;
|
|
335
|
+
setMilliseconds(milliseconds: number): this;
|
|
336
|
+
setSeconds(seconds: number): this;
|
|
337
|
+
setMinutes(minutes: number): this;
|
|
338
|
+
setHours(hours: number): this;
|
|
339
|
+
equals({ milliseconds, seconds, minutes, hours }?: Partial<Time>): boolean;
|
|
340
|
+
greaterThan(time: Time): boolean;
|
|
341
|
+
lessThan(time: Time): boolean;
|
|
342
|
+
clone(): this;
|
|
343
|
+
copy(time: Time): this;
|
|
344
|
+
add(value?: number, factor?: TimeInterval): this;
|
|
345
|
+
addTime(time: Time): this;
|
|
346
|
+
subtract(value?: number, factor?: TimeInterval): this;
|
|
347
|
+
subtractTime(time: Time): this;
|
|
348
|
+
destroy(): void;
|
|
349
|
+
static readonly milliseconds: TimeInterval;
|
|
350
|
+
static readonly seconds: TimeInterval;
|
|
351
|
+
static readonly minutes: TimeInterval;
|
|
352
|
+
static readonly hours: TimeInterval;
|
|
353
|
+
static readonly zero: Time;
|
|
354
|
+
static readonly oneMillisecond: Time;
|
|
355
|
+
static readonly oneSecond: Time;
|
|
356
|
+
static readonly oneMinute: Time;
|
|
357
|
+
static readonly oneHour: Time;
|
|
358
|
+
static get temp(): Time;
|
|
359
|
+
}
|
|
360
|
+
}
|
|
361
|
+
declare module "core/utils" {
|
|
362
|
+
import { Size } from "math/Size";
|
|
363
|
+
import type { TextureSource } from "core/types";
|
|
364
|
+
import { Time } from "core/Time";
|
|
365
|
+
export const rand: (min?: number, max?: number) => number;
|
|
366
|
+
export const noop: () => void;
|
|
367
|
+
export const stopEvent: (event: Event) => void;
|
|
368
|
+
export const supportsWebAudio: boolean;
|
|
369
|
+
export const supportsIndexedDb: boolean;
|
|
370
|
+
export const supportsTouchEvents: boolean;
|
|
371
|
+
export const supportsPointerEvents: boolean;
|
|
372
|
+
export const supportsEventOptions: () => boolean;
|
|
373
|
+
export const getPreciseTime: () => number;
|
|
374
|
+
export const milliseconds: (value: number) => Time;
|
|
375
|
+
export const seconds: (value: number) => Time;
|
|
376
|
+
export const minutes: (value: number) => Time;
|
|
377
|
+
export const hours: (value: number) => Time;
|
|
378
|
+
export const emptyArrayBuffer: ArrayBuffer;
|
|
379
|
+
export const removeArrayItems: <T = unknown>(array: Array<T>, startIndex: number, amount: number) => Array<T>;
|
|
380
|
+
export const supportsCodec: (...codecs: Array<string>) => boolean;
|
|
381
|
+
export const getCanvasSourceSize: (source: CanvasImageSource) => Size;
|
|
382
|
+
export const getTextureSourceSize: (source: TextureSource) => Size;
|
|
383
|
+
export const canvasSourceToDataUrl: (source: CanvasImageSource) => string;
|
|
384
|
+
}
|
|
385
|
+
declare module "core/Color" {
|
|
386
|
+
import type { Cloneable } from "core/types";
|
|
387
|
+
export class Color implements Cloneable {
|
|
388
|
+
private _r;
|
|
389
|
+
private _g;
|
|
390
|
+
private _b;
|
|
391
|
+
private _a;
|
|
392
|
+
private _rgba;
|
|
393
|
+
private _array;
|
|
394
|
+
constructor(r?: number, g?: number, b?: number, a?: number);
|
|
395
|
+
get r(): number;
|
|
396
|
+
set r(red: number);
|
|
397
|
+
get g(): number;
|
|
398
|
+
set g(green: number);
|
|
399
|
+
get b(): number;
|
|
400
|
+
set b(blue: number);
|
|
401
|
+
get a(): number;
|
|
402
|
+
set a(alpha: number);
|
|
403
|
+
get red(): number;
|
|
404
|
+
set red(red: number);
|
|
405
|
+
get green(): number;
|
|
406
|
+
set green(green: number);
|
|
407
|
+
get blue(): number;
|
|
408
|
+
set blue(blue: number);
|
|
409
|
+
get alpha(): number;
|
|
410
|
+
set alpha(alpha: number);
|
|
411
|
+
set(r?: number, g?: number, b?: number, a?: number): this;
|
|
412
|
+
copy(color: Color): this;
|
|
413
|
+
clone(): this;
|
|
414
|
+
equals({ r, g, b, a }?: Partial<Color>): boolean;
|
|
415
|
+
toArray(normalized?: boolean): Float32Array;
|
|
416
|
+
toString(prefixed?: boolean): string;
|
|
417
|
+
toRgba(): number;
|
|
418
|
+
destroy(): void;
|
|
419
|
+
static readonly aliceBlue: Color;
|
|
420
|
+
static readonly antiqueWhite: Color;
|
|
421
|
+
static readonly aqua: Color;
|
|
422
|
+
static readonly aquamarine: Color;
|
|
423
|
+
static readonly azure: Color;
|
|
424
|
+
static readonly beige: Color;
|
|
425
|
+
static readonly bisque: Color;
|
|
426
|
+
static readonly black: Color;
|
|
427
|
+
static readonly blanchedAlmond: Color;
|
|
428
|
+
static readonly blue: Color;
|
|
429
|
+
static readonly blueViolet: Color;
|
|
430
|
+
static readonly brown: Color;
|
|
431
|
+
static readonly burlyWood: Color;
|
|
432
|
+
static readonly cadetBlue: Color;
|
|
433
|
+
static readonly chartreuse: Color;
|
|
434
|
+
static readonly chocolate: Color;
|
|
435
|
+
static readonly coral: Color;
|
|
436
|
+
static readonly cornflowerBlue: Color;
|
|
437
|
+
static readonly cornsilk: Color;
|
|
438
|
+
static readonly crimson: Color;
|
|
439
|
+
static readonly cyan: Color;
|
|
440
|
+
static readonly darkBlue: Color;
|
|
441
|
+
static readonly darkCyan: Color;
|
|
442
|
+
static readonly darkGoldenrod: Color;
|
|
443
|
+
static readonly darkGray: Color;
|
|
444
|
+
static readonly darkGreen: Color;
|
|
445
|
+
static readonly darkKhaki: Color;
|
|
446
|
+
static readonly darkMagenta: Color;
|
|
447
|
+
static readonly darkOliveGreen: Color;
|
|
448
|
+
static readonly darkOrange: Color;
|
|
449
|
+
static readonly darkOrchid: Color;
|
|
450
|
+
static readonly darkRed: Color;
|
|
451
|
+
static readonly darkSalmon: Color;
|
|
452
|
+
static readonly darkSeaGreen: Color;
|
|
453
|
+
static readonly darkSlateBlue: Color;
|
|
454
|
+
static readonly darkSlateGray: Color;
|
|
455
|
+
static readonly darkTurquoise: Color;
|
|
456
|
+
static readonly darkViolet: Color;
|
|
457
|
+
static readonly deepPink: Color;
|
|
458
|
+
static readonly deepSkyBlue: Color;
|
|
459
|
+
static readonly dimGray: Color;
|
|
460
|
+
static readonly dodgerBlue: Color;
|
|
461
|
+
static readonly firebrick: Color;
|
|
462
|
+
static readonly floralWhite: Color;
|
|
463
|
+
static readonly forestGreen: Color;
|
|
464
|
+
static readonly fuchsia: Color;
|
|
465
|
+
static readonly gainsboro: Color;
|
|
466
|
+
static readonly ghostWhite: Color;
|
|
467
|
+
static readonly gold: Color;
|
|
468
|
+
static readonly goldenrod: Color;
|
|
469
|
+
static readonly gray: Color;
|
|
470
|
+
static readonly green: Color;
|
|
471
|
+
static readonly greenYellow: Color;
|
|
472
|
+
static readonly honeydew: Color;
|
|
473
|
+
static readonly hotPink: Color;
|
|
474
|
+
static readonly indianRed: Color;
|
|
475
|
+
static readonly indigo: Color;
|
|
476
|
+
static readonly ivory: Color;
|
|
477
|
+
static readonly khaki: Color;
|
|
478
|
+
static readonly lavender: Color;
|
|
479
|
+
static readonly lavenderBlush: Color;
|
|
480
|
+
static readonly lawnGreen: Color;
|
|
481
|
+
static readonly lemonChiffon: Color;
|
|
482
|
+
static readonly lightBlue: Color;
|
|
483
|
+
static readonly lightCoral: Color;
|
|
484
|
+
static readonly lightCyan: Color;
|
|
485
|
+
static readonly lightGoldenrodYellow: Color;
|
|
486
|
+
static readonly lightGray: Color;
|
|
487
|
+
static readonly lightGreen: Color;
|
|
488
|
+
static readonly lightPink: Color;
|
|
489
|
+
static readonly lightSalmon: Color;
|
|
490
|
+
static readonly lightSeaGreen: Color;
|
|
491
|
+
static readonly lightSkyBlue: Color;
|
|
492
|
+
static readonly lightSlateGray: Color;
|
|
493
|
+
static readonly lightSteelBlue: Color;
|
|
494
|
+
static readonly lightYellow: Color;
|
|
495
|
+
static readonly lime: Color;
|
|
496
|
+
static readonly limeGreen: Color;
|
|
497
|
+
static readonly linen: Color;
|
|
498
|
+
static readonly magenta: Color;
|
|
499
|
+
static readonly maroon: Color;
|
|
500
|
+
static readonly mediumAquamarine: Color;
|
|
501
|
+
static readonly mediumBlue: Color;
|
|
502
|
+
static readonly mediumOrchid: Color;
|
|
503
|
+
static readonly mediumPurple: Color;
|
|
504
|
+
static readonly mediumSeaGreen: Color;
|
|
505
|
+
static readonly mediumSlateBlue: Color;
|
|
506
|
+
static readonly mediumSpringGreen: Color;
|
|
507
|
+
static readonly mediumTurquoise: Color;
|
|
508
|
+
static readonly mediumVioletRed: Color;
|
|
509
|
+
static readonly midnightBlue: Color;
|
|
510
|
+
static readonly mintCream: Color;
|
|
511
|
+
static readonly mistyRose: Color;
|
|
512
|
+
static readonly moccasin: Color;
|
|
513
|
+
static readonly navajoWhite: Color;
|
|
514
|
+
static readonly navy: Color;
|
|
515
|
+
static readonly oldLace: Color;
|
|
516
|
+
static readonly olive: Color;
|
|
517
|
+
static readonly oliveDrab: Color;
|
|
518
|
+
static readonly orange: Color;
|
|
519
|
+
static readonly orangeRed: Color;
|
|
520
|
+
static readonly orchid: Color;
|
|
521
|
+
static readonly paleGoldenrod: Color;
|
|
522
|
+
static readonly paleGreen: Color;
|
|
523
|
+
static readonly paleTurquoise: Color;
|
|
524
|
+
static readonly paleVioletRed: Color;
|
|
525
|
+
static readonly papayaWhip: Color;
|
|
526
|
+
static readonly peachPuff: Color;
|
|
527
|
+
static readonly peru: Color;
|
|
528
|
+
static readonly pink: Color;
|
|
529
|
+
static readonly plum: Color;
|
|
530
|
+
static readonly powderBlue: Color;
|
|
531
|
+
static readonly purple: Color;
|
|
532
|
+
static readonly red: Color;
|
|
533
|
+
static readonly rosyBrown: Color;
|
|
534
|
+
static readonly royalBlue: Color;
|
|
535
|
+
static readonly saddleBrown: Color;
|
|
536
|
+
static readonly salmon: Color;
|
|
537
|
+
static readonly sandyBrown: Color;
|
|
538
|
+
static readonly seaGreen: Color;
|
|
539
|
+
static readonly seaShell: Color;
|
|
540
|
+
static readonly sienna: Color;
|
|
541
|
+
static readonly silver: Color;
|
|
542
|
+
static readonly skyBlue: Color;
|
|
543
|
+
static readonly slateBlue: Color;
|
|
544
|
+
static readonly slateGray: Color;
|
|
545
|
+
static readonly snow: Color;
|
|
546
|
+
static readonly springGreen: Color;
|
|
547
|
+
static readonly steelBlue: Color;
|
|
548
|
+
static readonly tan: Color;
|
|
549
|
+
static readonly teal: Color;
|
|
550
|
+
static readonly thistle: Color;
|
|
551
|
+
static readonly tomato: Color;
|
|
552
|
+
static readonly transparentBlack: Color;
|
|
553
|
+
static readonly transparentWhite: Color;
|
|
554
|
+
static readonly turquoise: Color;
|
|
555
|
+
static readonly violet: Color;
|
|
556
|
+
static readonly wheat: Color;
|
|
557
|
+
static readonly white: Color;
|
|
558
|
+
static readonly whiteSmoke: Color;
|
|
559
|
+
static readonly yellow: Color;
|
|
560
|
+
static readonly yellowGreen: Color;
|
|
561
|
+
}
|
|
562
|
+
}
|
|
563
|
+
declare module "rendering/RenderBackendType" {
|
|
564
|
+
export enum RenderBackendType {
|
|
565
|
+
WebGl2 = 0,
|
|
566
|
+
WebGpu = 1
|
|
567
|
+
}
|
|
568
|
+
}
|
|
569
|
+
declare module "math/ObservableSize" {
|
|
570
|
+
import { Size } from "math/Size";
|
|
571
|
+
export class ObservableSize extends Size {
|
|
572
|
+
private readonly _callback;
|
|
573
|
+
constructor(callback: () => void, width?: number, height?: number);
|
|
574
|
+
get width(): number;
|
|
575
|
+
set width(width: number);
|
|
576
|
+
get height(): number;
|
|
577
|
+
set height(height: number);
|
|
578
|
+
set(width?: number, height?: number): this;
|
|
579
|
+
add(x: number, y?: number): this;
|
|
580
|
+
subtract(x: number, y?: number): this;
|
|
581
|
+
scale(x: number, y?: number): this;
|
|
582
|
+
divide(x: number, y?: number): this;
|
|
583
|
+
copy(size: Size): this;
|
|
584
|
+
clone(): this;
|
|
585
|
+
}
|
|
586
|
+
}
|
|
587
|
+
declare module "rendering/View" {
|
|
588
|
+
import { ObservableVector } from "math/ObservableVector";
|
|
589
|
+
import { Rectangle } from "math/Rectangle";
|
|
590
|
+
import { Matrix } from "math/Matrix";
|
|
591
|
+
import { ObservableSize } from "math/ObservableSize";
|
|
592
|
+
export enum ViewFlags {
|
|
593
|
+
None = 0,
|
|
594
|
+
Translation = 1,
|
|
595
|
+
Rotation = 2,
|
|
596
|
+
Scaling = 4,
|
|
597
|
+
Origin = 8,
|
|
598
|
+
Transform = 15,
|
|
599
|
+
TransformInverse = 16,
|
|
600
|
+
BoundingBox = 32,
|
|
601
|
+
TextureCoords = 64,
|
|
602
|
+
VertexTint = 128
|
|
603
|
+
}
|
|
604
|
+
export interface ViewFollowOptions {
|
|
605
|
+
lerp?: number;
|
|
606
|
+
offsetX?: number;
|
|
607
|
+
offsetY?: number;
|
|
608
|
+
}
|
|
609
|
+
export interface ViewShakeOptions {
|
|
610
|
+
frequency?: number;
|
|
611
|
+
decay?: boolean;
|
|
612
|
+
}
|
|
613
|
+
export class View {
|
|
614
|
+
private readonly _center;
|
|
615
|
+
private readonly _size;
|
|
616
|
+
private readonly _viewport;
|
|
617
|
+
private readonly _transform;
|
|
618
|
+
private readonly _inverseTransform;
|
|
619
|
+
private readonly _bounds;
|
|
620
|
+
private readonly _flags;
|
|
621
|
+
private _rotation;
|
|
622
|
+
private _sin;
|
|
623
|
+
private _cos;
|
|
624
|
+
private _zoomLevel;
|
|
625
|
+
private _zoomBaseWidth;
|
|
626
|
+
private _zoomBaseHeight;
|
|
627
|
+
private _followTarget;
|
|
628
|
+
private _followLerp;
|
|
629
|
+
private _followOffsetX;
|
|
630
|
+
private _followOffsetY;
|
|
631
|
+
private _boundsConstraint;
|
|
632
|
+
private _shakeIntensity;
|
|
633
|
+
private _shakeDurationMs;
|
|
634
|
+
private _shakeElapsedMs;
|
|
635
|
+
private _shakeFrequency;
|
|
636
|
+
private _shakeDecay;
|
|
637
|
+
private _shakePhase;
|
|
638
|
+
private _shakeOffsetX;
|
|
639
|
+
private _shakeOffsetY;
|
|
640
|
+
private _updateId;
|
|
641
|
+
constructor(centerX: number, centerY: number, width: number, height: number);
|
|
642
|
+
get center(): ObservableVector;
|
|
643
|
+
set center(center: ObservableVector);
|
|
644
|
+
get size(): ObservableSize;
|
|
645
|
+
set size(size: ObservableSize);
|
|
646
|
+
get width(): number;
|
|
647
|
+
set width(width: number);
|
|
648
|
+
get height(): number;
|
|
649
|
+
set height(height: number);
|
|
650
|
+
get rotation(): number;
|
|
651
|
+
set rotation(rotation: number);
|
|
652
|
+
get viewport(): Rectangle;
|
|
653
|
+
set viewport(viewport: Rectangle);
|
|
654
|
+
get updateId(): number;
|
|
655
|
+
get zoomLevel(): number;
|
|
656
|
+
setCenter(x: number, y: number): this;
|
|
657
|
+
resize(width: number, height: number): this;
|
|
658
|
+
setRotation(degrees: number): this;
|
|
659
|
+
move(x: number, y: number): this;
|
|
660
|
+
zoom(factor: number): this;
|
|
661
|
+
setZoom(zoom: number): this;
|
|
662
|
+
zoomIn(amount?: number): this;
|
|
663
|
+
zoomOut(amount?: number): this;
|
|
664
|
+
follow(target: {
|
|
665
|
+
x: number;
|
|
666
|
+
y: number;
|
|
667
|
+
} | null, options?: ViewFollowOptions): this;
|
|
668
|
+
clearFollow(): this;
|
|
669
|
+
setBounds(bounds: Rectangle | null): this;
|
|
670
|
+
clearBounds(): this;
|
|
671
|
+
shake(intensity: number, durationMs: number, options?: ViewShakeOptions): this;
|
|
672
|
+
stopShake(): this;
|
|
673
|
+
update(deltaMilliseconds: number): this;
|
|
674
|
+
rotate(degrees: number): this;
|
|
675
|
+
reset(centerX: number, centerY: number, width: number, height: number): this;
|
|
676
|
+
getTransform(): Matrix;
|
|
677
|
+
updateTransform(): this;
|
|
678
|
+
getInverseTransform(): Matrix;
|
|
679
|
+
getBounds(): Rectangle;
|
|
680
|
+
updateBounds(): this;
|
|
681
|
+
destroy(): void;
|
|
682
|
+
private _setDirty;
|
|
683
|
+
private _setPositionDirty;
|
|
684
|
+
private _setRotationDirty;
|
|
685
|
+
private _setScalingDirty;
|
|
686
|
+
private _updateFollowTarget;
|
|
687
|
+
private _applyBoundsConstraint;
|
|
688
|
+
private _updateShake;
|
|
689
|
+
}
|
|
690
|
+
}
|
|
691
|
+
declare module "rendering/RenderTarget" {
|
|
692
|
+
import { Size } from "math/Size";
|
|
693
|
+
import { View } from "rendering/View";
|
|
694
|
+
import { Rectangle } from "math/Rectangle";
|
|
695
|
+
import { Vector } from "math/Vector";
|
|
696
|
+
export class RenderTarget {
|
|
697
|
+
private readonly _root;
|
|
698
|
+
private readonly _destroyListeners;
|
|
699
|
+
private _version;
|
|
700
|
+
protected _size: Size;
|
|
701
|
+
protected _viewport: Rectangle;
|
|
702
|
+
protected _defaultView: View;
|
|
703
|
+
protected _view: View;
|
|
704
|
+
constructor(width: number, height: number, root?: boolean);
|
|
705
|
+
get view(): View;
|
|
706
|
+
set view(view: View);
|
|
707
|
+
get size(): Size;
|
|
708
|
+
set size(size: Size);
|
|
709
|
+
get width(): number;
|
|
710
|
+
set width(width: number);
|
|
711
|
+
get height(): number;
|
|
712
|
+
set height(height: number);
|
|
713
|
+
get root(): boolean;
|
|
714
|
+
get version(): number;
|
|
715
|
+
addDestroyListener(listener: () => void): this;
|
|
716
|
+
removeDestroyListener(listener: () => void): this;
|
|
717
|
+
setView(view: View | null): this;
|
|
718
|
+
resize(width: number, height: number): this;
|
|
719
|
+
getViewport(view?: View): Rectangle;
|
|
720
|
+
updateViewport(): this;
|
|
721
|
+
mapPixelToCoords(point: Vector, view?: View): Vector;
|
|
722
|
+
mapCoordsToPixel(point: Vector, view?: View): Vector;
|
|
723
|
+
destroy(): void;
|
|
724
|
+
protected _touch(): void;
|
|
725
|
+
}
|
|
726
|
+
}
|
|
727
|
+
declare module "rendering/types" {
|
|
728
|
+
export enum BlendModes {
|
|
729
|
+
Normal = 0,
|
|
730
|
+
Additive = 1,
|
|
731
|
+
Subtract = 2,
|
|
732
|
+
Multiply = 3,
|
|
733
|
+
Screen = 4
|
|
734
|
+
}
|
|
735
|
+
export enum ScaleModes {
|
|
736
|
+
Nearest = 9728,
|
|
737
|
+
Linear = 9729,
|
|
738
|
+
NearestMipmapNearest = 9984,
|
|
739
|
+
LinearMipmapNearest = 9985,
|
|
740
|
+
NearestMipmapLinear = 9986,
|
|
741
|
+
LinearMipmapLinear = 9987
|
|
742
|
+
}
|
|
743
|
+
export enum WrapModes {
|
|
744
|
+
Repeat = 10497,
|
|
745
|
+
ClampToEdge = 33071,
|
|
746
|
+
MirroredRepeat = 33648
|
|
747
|
+
}
|
|
748
|
+
export enum RenderingPrimitives {
|
|
749
|
+
Points = 0,
|
|
750
|
+
Lines = 1,
|
|
751
|
+
LineLoop = 2,
|
|
752
|
+
LineStrip = 3,
|
|
753
|
+
Triangles = 4,
|
|
754
|
+
TriangleStrip = 5,
|
|
755
|
+
TriangleFan = 6
|
|
756
|
+
}
|
|
757
|
+
export enum BufferTypes {
|
|
758
|
+
ArrayBuffer = 34962,
|
|
759
|
+
ElementArrayBuffer = 34963,
|
|
760
|
+
CopyReadBuffer = 36662,
|
|
761
|
+
CopyWriteBuffer = 36663,
|
|
762
|
+
TransformFeedbackBuffer = 35982,
|
|
763
|
+
UniformBuffer = 35345,
|
|
764
|
+
PixelPackBuffer = 35051,
|
|
765
|
+
PixelUnpackBuffer = 35052
|
|
766
|
+
}
|
|
767
|
+
export enum BufferUsage {
|
|
768
|
+
StaticDraw = 35044,
|
|
769
|
+
StaticRead = 35045,
|
|
770
|
+
StaticCopy = 35046,
|
|
771
|
+
DynamicDraw = 35048,
|
|
772
|
+
DynamicRead = 35049,
|
|
773
|
+
DynamicCopy = 35050,
|
|
774
|
+
StreamDraw = 35040,
|
|
775
|
+
StreamRead = 35041,
|
|
776
|
+
StreamCopy = 35042
|
|
777
|
+
}
|
|
778
|
+
export enum ShaderPrimitives {
|
|
779
|
+
Int = 5124,
|
|
780
|
+
IntVec2 = 35667,
|
|
781
|
+
IntVec3 = 35668,
|
|
782
|
+
IntVec4 = 35669,
|
|
783
|
+
Float = 5126,
|
|
784
|
+
FloatVec2 = 35664,
|
|
785
|
+
FloatVec3 = 35665,
|
|
786
|
+
FloatVec4 = 35666,
|
|
787
|
+
Bool = 35670,
|
|
788
|
+
BoolVec2 = 35671,
|
|
789
|
+
BoolVec3 = 35672,
|
|
790
|
+
BoolVec4 = 35673,
|
|
791
|
+
FloatMat2 = 35674,
|
|
792
|
+
FloatMat3 = 35675,
|
|
793
|
+
FloatMat4 = 35676,
|
|
794
|
+
Sampler2D = 35678
|
|
795
|
+
}
|
|
796
|
+
}
|
|
797
|
+
declare module "rendering/texture/Sampler" {
|
|
798
|
+
import type { ScaleModes, WrapModes } from "rendering/types";
|
|
799
|
+
export interface SamplerOptions {
|
|
800
|
+
scaleMode: ScaleModes;
|
|
801
|
+
wrapMode: WrapModes;
|
|
802
|
+
premultiplyAlpha: boolean;
|
|
803
|
+
generateMipMap: boolean;
|
|
804
|
+
flipY: boolean;
|
|
805
|
+
}
|
|
806
|
+
export class Sampler {
|
|
807
|
+
private readonly _context;
|
|
808
|
+
private readonly _sampler;
|
|
809
|
+
private _scaleMode;
|
|
810
|
+
private _wrapMode;
|
|
811
|
+
private _premultiplyAlpha;
|
|
812
|
+
private _generateMipMap;
|
|
813
|
+
private _flipY;
|
|
814
|
+
constructor(gl: WebGL2RenderingContext, options: SamplerOptions);
|
|
815
|
+
get sampler(): WebGLSampler | null;
|
|
816
|
+
get scaleMode(): ScaleModes;
|
|
817
|
+
set scaleMode(scaleMode: ScaleModes);
|
|
818
|
+
get wrapMode(): WrapModes;
|
|
819
|
+
set wrapMode(wrapMode: WrapModes);
|
|
820
|
+
setScaleMode(scaleMode: ScaleModes): this;
|
|
821
|
+
setWrapMode(wrapMode: WrapModes): this;
|
|
822
|
+
bind(textureUnit: number): this;
|
|
823
|
+
destroy(): void;
|
|
824
|
+
private updateScaleModeParameters;
|
|
825
|
+
private updateWrapModeParameters;
|
|
826
|
+
}
|
|
827
|
+
}
|
|
828
|
+
declare module "rendering/texture/RenderTexture" {
|
|
829
|
+
import { RenderTarget } from "rendering/RenderTarget";
|
|
830
|
+
import { ScaleModes, WrapModes } from "rendering/types";
|
|
831
|
+
import type { SamplerOptions } from "rendering/texture/Sampler";
|
|
832
|
+
export class RenderTexture extends RenderTarget {
|
|
833
|
+
static defaultSamplerOptions: SamplerOptions;
|
|
834
|
+
private _source;
|
|
835
|
+
private _textureVersion;
|
|
836
|
+
private _scaleMode;
|
|
837
|
+
private _wrapMode;
|
|
838
|
+
private _premultiplyAlpha;
|
|
839
|
+
private _generateMipMap;
|
|
840
|
+
private _flipY;
|
|
841
|
+
constructor(width: number, height: number, options?: Partial<SamplerOptions>);
|
|
842
|
+
get source(): DataView | null;
|
|
843
|
+
set source(source: DataView | null);
|
|
844
|
+
get scaleMode(): ScaleModes;
|
|
845
|
+
set scaleMode(scaleMode: ScaleModes);
|
|
846
|
+
get wrapMode(): WrapModes;
|
|
847
|
+
set wrapMode(wrapMode: WrapModes);
|
|
848
|
+
get premultiplyAlpha(): boolean;
|
|
849
|
+
set premultiplyAlpha(premultiplyAlpha: boolean);
|
|
850
|
+
get generateMipMap(): boolean;
|
|
851
|
+
set generateMipMap(generateMipMap: boolean);
|
|
852
|
+
get flipY(): boolean;
|
|
853
|
+
set flipY(flipY: boolean);
|
|
854
|
+
get powerOfTwo(): boolean;
|
|
855
|
+
get textureVersion(): number;
|
|
856
|
+
setScaleMode(scaleMode: ScaleModes): this;
|
|
857
|
+
setWrapMode(wrapMode: WrapModes): this;
|
|
858
|
+
setPremultiplyAlpha(premultiplyAlpha: boolean): this;
|
|
859
|
+
setSource(source: DataView | null): this;
|
|
860
|
+
updateSource(): this;
|
|
861
|
+
setSize(width: number, height: number): this;
|
|
862
|
+
destroy(): void;
|
|
863
|
+
private _touchTexture;
|
|
864
|
+
}
|
|
865
|
+
}
|
|
866
|
+
declare module "rendering/RenderPass" {
|
|
867
|
+
import type { SceneRenderRuntime } from "rendering/SceneRenderRuntime";
|
|
868
|
+
export interface RenderPass {
|
|
869
|
+
execute(runtime: SceneRenderRuntime): void;
|
|
870
|
+
}
|
|
871
|
+
}
|
|
872
|
+
declare module "rendering/RenderTargetPass" {
|
|
873
|
+
import type { Color } from "core/Color";
|
|
874
|
+
import type { View } from "rendering/View";
|
|
875
|
+
import type { RenderTarget } from "rendering/RenderTarget";
|
|
876
|
+
import type { RenderPass } from "rendering/RenderPass";
|
|
877
|
+
import type { SceneRenderRuntime } from "rendering/SceneRenderRuntime";
|
|
878
|
+
export interface RenderTargetPassOptions {
|
|
879
|
+
readonly target?: RenderTarget | null;
|
|
880
|
+
readonly view?: View | null;
|
|
881
|
+
readonly clearColor?: Color;
|
|
882
|
+
}
|
|
883
|
+
export class RenderTargetPass implements RenderPass {
|
|
884
|
+
private readonly _callback;
|
|
885
|
+
private readonly _target;
|
|
886
|
+
private readonly _view;
|
|
887
|
+
private readonly _clearColor;
|
|
888
|
+
constructor(callback: (runtime: SceneRenderRuntime) => void, options?: RenderTargetPassOptions);
|
|
889
|
+
execute(runtime: SceneRenderRuntime): void;
|
|
890
|
+
}
|
|
891
|
+
}
|
|
892
|
+
declare module "rendering/filters/Filter" {
|
|
893
|
+
import type { RenderTexture } from "rendering/texture/RenderTexture";
|
|
894
|
+
import type { SceneRenderRuntime } from "rendering/SceneRenderRuntime";
|
|
895
|
+
export abstract class Filter {
|
|
896
|
+
abstract apply(runtime: SceneRenderRuntime, input: RenderTexture, output: RenderTexture): void;
|
|
897
|
+
}
|
|
898
|
+
}
|
|
899
|
+
declare module "rendering/RenderNode" {
|
|
900
|
+
import { SceneNode } from "core/SceneNode";
|
|
901
|
+
import { Color } from "core/Color";
|
|
902
|
+
import { BlendModes } from "rendering/types";
|
|
903
|
+
import { RenderTexture } from "rendering/texture/RenderTexture";
|
|
904
|
+
import type { SceneRenderRuntime } from "rendering/SceneRenderRuntime";
|
|
905
|
+
import type { Filter } from "rendering/filters/Filter";
|
|
906
|
+
interface RenderNodeSpriteLike {
|
|
907
|
+
width: number;
|
|
908
|
+
height: number;
|
|
909
|
+
setTexture(texture: RenderTexture | null): this;
|
|
910
|
+
setBlendMode(blendMode: BlendModes): this;
|
|
911
|
+
setTint(color: Color): this;
|
|
912
|
+
setPosition(x: number, y: number): this;
|
|
913
|
+
setRotation(rotation: number): this;
|
|
914
|
+
setScale(x: number, y?: number): this;
|
|
915
|
+
render(runtime: SceneRenderRuntime): this;
|
|
916
|
+
destroy(): void;
|
|
917
|
+
}
|
|
918
|
+
export abstract class RenderNode extends SceneNode {
|
|
919
|
+
private static _spriteFactory;
|
|
920
|
+
private readonly _filters;
|
|
921
|
+
private readonly _cacheBounds;
|
|
922
|
+
private _cacheSprite;
|
|
923
|
+
private _captureView;
|
|
924
|
+
private _mask;
|
|
925
|
+
private _cacheAsBitmap;
|
|
926
|
+
private _cacheDirty;
|
|
927
|
+
private _cacheTexture;
|
|
928
|
+
get filters(): Array<Filter>;
|
|
929
|
+
set filters(filters: ReadonlyArray<Filter>);
|
|
930
|
+
get mask(): SceneNode | null;
|
|
931
|
+
set mask(mask: SceneNode | null);
|
|
932
|
+
get cacheAsBitmap(): boolean;
|
|
933
|
+
set cacheAsBitmap(cacheAsBitmap: boolean);
|
|
934
|
+
setFilters(filters: ReadonlyArray<Filter>): this;
|
|
935
|
+
addFilter(filter: Filter): this;
|
|
936
|
+
removeFilter(filter: Filter): this;
|
|
937
|
+
static setInternalSpriteFactory(factory: (() => RenderNodeSpriteLike) | null): void;
|
|
938
|
+
clearFilters(): this;
|
|
939
|
+
setCacheAsBitmap(cacheAsBitmap: boolean): this;
|
|
940
|
+
invalidateCache(): this;
|
|
941
|
+
protected renderVisualContent(runtime: SceneRenderRuntime, renderContent: () => void, blendMode?: BlendModes): void;
|
|
942
|
+
destroy(): void;
|
|
943
|
+
private _withMask;
|
|
944
|
+
private _renderContentToTexture;
|
|
945
|
+
private _drawTexture;
|
|
946
|
+
private _ensureCacheTexture;
|
|
947
|
+
private _destroyCacheTexture;
|
|
948
|
+
private _getCacheSprite;
|
|
949
|
+
}
|
|
950
|
+
}
|
|
951
|
+
declare module "rendering/Drawable" {
|
|
952
|
+
import { Color } from "core/Color";
|
|
953
|
+
import { BlendModes } from "rendering/types";
|
|
954
|
+
import type { SceneRenderRuntime } from "rendering/SceneRenderRuntime";
|
|
955
|
+
import { RenderNode } from "rendering/RenderNode";
|
|
956
|
+
export class Drawable extends RenderNode {
|
|
957
|
+
private _tint;
|
|
958
|
+
private _blendMode;
|
|
959
|
+
get tint(): Color;
|
|
960
|
+
set tint(tint: Color);
|
|
961
|
+
get blendMode(): BlendModes;
|
|
962
|
+
set blendMode(blendMode: BlendModes);
|
|
963
|
+
setTint(color: Color): this;
|
|
964
|
+
setBlendMode(blendMode: BlendModes): this;
|
|
965
|
+
render(renderManager: SceneRenderRuntime): this;
|
|
966
|
+
destroy(): void;
|
|
967
|
+
}
|
|
968
|
+
}
|
|
969
|
+
declare module "rendering/RenderStats" {
|
|
970
|
+
export interface RenderStats {
|
|
971
|
+
frame: number;
|
|
972
|
+
submittedNodes: number;
|
|
973
|
+
culledNodes: number;
|
|
974
|
+
drawCalls: number;
|
|
975
|
+
batches: number;
|
|
976
|
+
renderPasses: number;
|
|
977
|
+
renderTargetChanges: number;
|
|
978
|
+
frameTimeMs: number;
|
|
979
|
+
}
|
|
980
|
+
export const createRenderStats: () => RenderStats;
|
|
981
|
+
export const resetRenderStats: (stats: RenderStats) => RenderStats;
|
|
982
|
+
}
|
|
983
|
+
declare module "rendering/SceneRenderRuntime" {
|
|
984
|
+
import type { Color } from "core/Color";
|
|
985
|
+
import type { RenderBackendType } from "rendering/RenderBackendType";
|
|
986
|
+
import type { RenderTarget } from "rendering/RenderTarget";
|
|
987
|
+
import type { View } from "rendering/View";
|
|
988
|
+
import type { Drawable } from "rendering/Drawable";
|
|
989
|
+
import type { RenderPass } from "rendering/RenderPass";
|
|
990
|
+
import type { Rectangle } from "math/Rectangle";
|
|
991
|
+
import type { RenderTexture } from "rendering/texture/RenderTexture";
|
|
992
|
+
import type { RenderStats } from "rendering/RenderStats";
|
|
993
|
+
export interface SceneRenderRuntime {
|
|
994
|
+
readonly backendType: RenderBackendType;
|
|
995
|
+
readonly view: View;
|
|
996
|
+
readonly renderTarget: RenderTarget;
|
|
997
|
+
readonly stats: RenderStats;
|
|
998
|
+
initialize(): Promise<this>;
|
|
999
|
+
resetStats(): this;
|
|
1000
|
+
clear(color?: Color): this;
|
|
1001
|
+
resize(width: number, height: number): this;
|
|
1002
|
+
setView(view: View | null): this;
|
|
1003
|
+
setRenderTarget(target: RenderTarget | null): this;
|
|
1004
|
+
pushMask(maskBounds: Rectangle): this;
|
|
1005
|
+
popMask(): this;
|
|
1006
|
+
acquireRenderTexture(width: number, height: number): RenderTexture;
|
|
1007
|
+
releaseRenderTexture(texture: RenderTexture): this;
|
|
1008
|
+
draw(drawable: Drawable): this;
|
|
1009
|
+
execute(pass: RenderPass): this;
|
|
1010
|
+
flush(): this;
|
|
1011
|
+
destroy(): void;
|
|
1012
|
+
}
|
|
1013
|
+
}
|
|
1014
|
+
declare module "rendering/Container" {
|
|
1015
|
+
import type { SceneRenderRuntime } from "rendering/SceneRenderRuntime";
|
|
1016
|
+
import type { SceneNode } from "core/SceneNode";
|
|
1017
|
+
import { RenderNode } from "rendering/RenderNode";
|
|
1018
|
+
export class Container extends RenderNode {
|
|
1019
|
+
private readonly _children;
|
|
1020
|
+
private _sortableChildren;
|
|
1021
|
+
private _sortDirty;
|
|
1022
|
+
private _nextChildOrder;
|
|
1023
|
+
get children(): Array<SceneNode>;
|
|
1024
|
+
get sortableChildren(): boolean;
|
|
1025
|
+
set sortableChildren(sortableChildren: boolean);
|
|
1026
|
+
get width(): number;
|
|
1027
|
+
set width(value: number);
|
|
1028
|
+
get height(): number;
|
|
1029
|
+
set height(value: number);
|
|
1030
|
+
get left(): number;
|
|
1031
|
+
get top(): number;
|
|
1032
|
+
get right(): number;
|
|
1033
|
+
get bottom(): number;
|
|
1034
|
+
addChild(child: SceneNode): this;
|
|
1035
|
+
addChildAt(child: SceneNode, index: number): this;
|
|
1036
|
+
swapChildren(firstChild: SceneNode, secondChild: SceneNode): this;
|
|
1037
|
+
getChildIndex(child: SceneNode): number;
|
|
1038
|
+
setChildIndex(child: SceneNode, index: number): this;
|
|
1039
|
+
getChildAt(index: number): SceneNode;
|
|
1040
|
+
removeChild(child: SceneNode): this;
|
|
1041
|
+
removeChildAt(index: number): this;
|
|
1042
|
+
removeChildren(begin?: number, end?: number): this;
|
|
1043
|
+
render(renderManager: SceneRenderRuntime): this;
|
|
1044
|
+
contains(x: number, y: number): boolean;
|
|
1045
|
+
updateBounds(): this;
|
|
1046
|
+
destroy(): void;
|
|
1047
|
+
markSortDirty(): this;
|
|
1048
|
+
sortChildren(): this;
|
|
1049
|
+
private _sortChildrenIfNeeded;
|
|
1050
|
+
}
|
|
1051
|
+
}
|
|
1052
|
+
declare module "math/Line" {
|
|
1053
|
+
import { Vector } from "math/Vector";
|
|
1054
|
+
import { Rectangle } from "math/Rectangle";
|
|
1055
|
+
import type { ShapeLike } from "math/ShapeLike";
|
|
1056
|
+
import { Interval } from "math/Interval";
|
|
1057
|
+
import type { Collidable, CollisionResponse } from "math/Collision";
|
|
1058
|
+
import { CollisionType } from "math/Collision";
|
|
1059
|
+
export class Line implements ShapeLike {
|
|
1060
|
+
readonly collisionType: CollisionType;
|
|
1061
|
+
private readonly _fromPosition;
|
|
1062
|
+
private readonly _toPosition;
|
|
1063
|
+
constructor(x1?: number, y1?: number, x2?: number, y2?: number);
|
|
1064
|
+
get fromPosition(): Vector;
|
|
1065
|
+
set fromPosition(positionFrom: Vector);
|
|
1066
|
+
get fromX(): number;
|
|
1067
|
+
set fromX(fromX: number);
|
|
1068
|
+
get fromY(): number;
|
|
1069
|
+
set fromY(fromY: number);
|
|
1070
|
+
get toPosition(): Vector;
|
|
1071
|
+
set toPosition(positionTo: Vector);
|
|
1072
|
+
get toX(): number;
|
|
1073
|
+
set toX(toX: number);
|
|
1074
|
+
get toY(): number;
|
|
1075
|
+
set toY(toY: number);
|
|
1076
|
+
set(x1: number, y1: number, x2: number, y2: number): this;
|
|
1077
|
+
copy(line: Line): this;
|
|
1078
|
+
clone(): this;
|
|
1079
|
+
getBounds(): Rectangle;
|
|
1080
|
+
getNormals(): Array<Vector>;
|
|
1081
|
+
project(axis: Vector, result?: Interval): Interval;
|
|
1082
|
+
intersectsWith(target: Collidable): boolean;
|
|
1083
|
+
collidesWith(target: Collidable): CollisionResponse | null;
|
|
1084
|
+
contains(x: number, y: number, threshold?: number): boolean;
|
|
1085
|
+
equals({ fromX, fromY, toX, toY }?: Partial<Line>): boolean;
|
|
1086
|
+
destroy(): void;
|
|
1087
|
+
static get temp(): Line;
|
|
1088
|
+
}
|
|
1089
|
+
}
|
|
1090
|
+
declare module "math/Polygon" {
|
|
1091
|
+
import { Interval } from "math/Interval";
|
|
1092
|
+
import { Vector } from "math/Vector";
|
|
1093
|
+
import { Rectangle } from "math/Rectangle";
|
|
1094
|
+
import type { ShapeLike } from "math/ShapeLike";
|
|
1095
|
+
import type { Collidable, CollisionResponse } from "math/Collision";
|
|
1096
|
+
import { CollisionType } from "math/Collision";
|
|
1097
|
+
export class Polygon implements ShapeLike {
|
|
1098
|
+
readonly collisionType: CollisionType;
|
|
1099
|
+
private readonly _position;
|
|
1100
|
+
private readonly _points;
|
|
1101
|
+
private readonly _edges;
|
|
1102
|
+
private readonly _normals;
|
|
1103
|
+
constructor(points?: Array<Vector>, x?: number, y?: number);
|
|
1104
|
+
get position(): Vector;
|
|
1105
|
+
set position(position: Vector);
|
|
1106
|
+
get x(): number;
|
|
1107
|
+
set x(x: number);
|
|
1108
|
+
get y(): number;
|
|
1109
|
+
set y(y: number);
|
|
1110
|
+
get points(): Array<Vector>;
|
|
1111
|
+
set points(points: Array<Vector>);
|
|
1112
|
+
get edges(): Array<Vector>;
|
|
1113
|
+
get normals(): Array<Vector>;
|
|
1114
|
+
setPosition(x: number, y: number): this;
|
|
1115
|
+
setPoints(newPoints: Array<Vector>): this;
|
|
1116
|
+
set(x: number, y: number, points: Array<Vector>): this;
|
|
1117
|
+
copy(polygon: Polygon): this;
|
|
1118
|
+
clone(): this;
|
|
1119
|
+
equals({ x, y, points }?: Partial<Polygon>): boolean;
|
|
1120
|
+
getBounds(): Rectangle;
|
|
1121
|
+
getNormals(): Array<Vector>;
|
|
1122
|
+
project(axis: Vector, result?: Interval): Interval;
|
|
1123
|
+
contains(x: number, y: number): boolean;
|
|
1124
|
+
intersectsWith(target: Collidable): boolean;
|
|
1125
|
+
collidesWith(target: Collidable): CollisionResponse | null;
|
|
1126
|
+
destroy(): void;
|
|
1127
|
+
static get temp(): Polygon;
|
|
1128
|
+
}
|
|
1129
|
+
}
|
|
1130
|
+
declare module "math/Ellipse" {
|
|
1131
|
+
import { Vector } from "math/Vector";
|
|
1132
|
+
import { Rectangle } from "math/Rectangle";
|
|
1133
|
+
import type { ShapeLike } from "math/ShapeLike";
|
|
1134
|
+
import { Interval } from "math/Interval";
|
|
1135
|
+
import type { Collidable, CollisionResponse } from "math/Collision";
|
|
1136
|
+
import { CollisionType } from "math/Collision";
|
|
1137
|
+
export class Ellipse implements ShapeLike {
|
|
1138
|
+
readonly collisionType: CollisionType;
|
|
1139
|
+
private readonly _position;
|
|
1140
|
+
private readonly _radius;
|
|
1141
|
+
constructor(x?: number, y?: number, halfWidth?: number, halfHeight?: number);
|
|
1142
|
+
get position(): Vector;
|
|
1143
|
+
set position(position: Vector);
|
|
1144
|
+
get x(): number;
|
|
1145
|
+
set x(x: number);
|
|
1146
|
+
get y(): number;
|
|
1147
|
+
set y(y: number);
|
|
1148
|
+
get radius(): Vector;
|
|
1149
|
+
set radius(size: Vector);
|
|
1150
|
+
get rx(): number;
|
|
1151
|
+
set rx(radiusX: number);
|
|
1152
|
+
get ry(): number;
|
|
1153
|
+
set ry(radiusY: number);
|
|
1154
|
+
setPosition(x: number, y: number): this;
|
|
1155
|
+
setRadius(radiusX: number, radiusY?: number): this;
|
|
1156
|
+
set(x: number, y: number, radiusX: number, radiusY: number): this;
|
|
1157
|
+
copy(ellipse: Ellipse): this;
|
|
1158
|
+
clone(): this;
|
|
1159
|
+
getBounds(): Rectangle;
|
|
1160
|
+
getNormals(): Array<Vector>;
|
|
1161
|
+
project(axis: Vector, result?: Interval): Interval;
|
|
1162
|
+
intersectsWith(target: Collidable): boolean;
|
|
1163
|
+
collidesWith(target: Collidable): CollisionResponse | null;
|
|
1164
|
+
contains(x: number, y: number): boolean;
|
|
1165
|
+
equals({ x, y, rx, ry }?: Partial<Ellipse>): boolean;
|
|
1166
|
+
destroy(): void;
|
|
1167
|
+
}
|
|
1168
|
+
}
|
|
1169
|
+
declare module "core/SceneNode" {
|
|
1170
|
+
import { Transformable } from "math/Transformable";
|
|
1171
|
+
import { Matrix } from "math/Matrix";
|
|
1172
|
+
import { Rectangle } from "math/Rectangle";
|
|
1173
|
+
import { Bounds } from "core/Bounds";
|
|
1174
|
+
import { ObservableVector } from "math/ObservableVector";
|
|
1175
|
+
import type { Container } from "rendering/Container";
|
|
1176
|
+
import type { SceneRenderRuntime } from "rendering/SceneRenderRuntime";
|
|
1177
|
+
import type { Vector } from "math/Vector";
|
|
1178
|
+
import { Interval } from "math/Interval";
|
|
1179
|
+
import type { Collidable, CollisionResponse } from "math/Collision";
|
|
1180
|
+
import { CollisionType } from "math/Collision";
|
|
1181
|
+
import type { View } from "rendering/View";
|
|
1182
|
+
export class SceneNode extends Transformable implements Collidable {
|
|
1183
|
+
readonly collisionType: CollisionType;
|
|
1184
|
+
protected _bounds: Bounds;
|
|
1185
|
+
private _visible;
|
|
1186
|
+
private _globalTransform;
|
|
1187
|
+
private _localBounds;
|
|
1188
|
+
private _anchor;
|
|
1189
|
+
private _parentNode;
|
|
1190
|
+
private _zIndex;
|
|
1191
|
+
private _childOrder;
|
|
1192
|
+
private _cullable;
|
|
1193
|
+
get anchor(): ObservableVector;
|
|
1194
|
+
set anchor(anchor: ObservableVector);
|
|
1195
|
+
get parent(): Container | null;
|
|
1196
|
+
set parent(parent: Container | null);
|
|
1197
|
+
get parentNode(): Container | null;
|
|
1198
|
+
set parentNode(parentNode: Container | null);
|
|
1199
|
+
get visible(): boolean;
|
|
1200
|
+
set visible(visible: boolean);
|
|
1201
|
+
get zIndex(): number;
|
|
1202
|
+
set zIndex(zIndex: number);
|
|
1203
|
+
get childOrder(): number;
|
|
1204
|
+
get cullable(): boolean;
|
|
1205
|
+
set cullable(cullable: boolean);
|
|
1206
|
+
get globalTransform(): Matrix;
|
|
1207
|
+
get localBounds(): Rectangle;
|
|
1208
|
+
get bounds(): Rectangle;
|
|
1209
|
+
get isAlignedBox(): boolean;
|
|
1210
|
+
setAnchor(x: number, y?: number): this;
|
|
1211
|
+
setChildOrder(order: number): this;
|
|
1212
|
+
setCullable(cullable: boolean): this;
|
|
1213
|
+
getLocalBounds(): Rectangle;
|
|
1214
|
+
getBounds(): Rectangle;
|
|
1215
|
+
updateBounds(): this;
|
|
1216
|
+
updateParentTransform(): this;
|
|
1217
|
+
getGlobalTransform(): Matrix;
|
|
1218
|
+
getNormals(): Array<Vector>;
|
|
1219
|
+
project(axis: Vector, result?: Interval): Interval;
|
|
1220
|
+
intersectsWith(target: Collidable): boolean;
|
|
1221
|
+
collidesWith(target: Collidable): CollisionResponse | null;
|
|
1222
|
+
contains(x: number, y: number): boolean;
|
|
1223
|
+
inView(view: View): boolean;
|
|
1224
|
+
render(_runtime: SceneRenderRuntime): this;
|
|
1225
|
+
destroy(): void;
|
|
1226
|
+
private _updateOrigin;
|
|
1227
|
+
}
|
|
1228
|
+
}
|
|
1229
|
+
declare module "math/Circle" {
|
|
1230
|
+
import { Vector } from "math/Vector";
|
|
1231
|
+
import { Rectangle } from "math/Rectangle";
|
|
1232
|
+
import { Interval } from "math/Interval";
|
|
1233
|
+
import type { ShapeLike } from "math/ShapeLike";
|
|
1234
|
+
import type { Collidable, CollisionResponse } from "math/Collision";
|
|
1235
|
+
import { CollisionType } from "math/Collision";
|
|
1236
|
+
export class Circle implements ShapeLike {
|
|
1237
|
+
static collisionSegments: number;
|
|
1238
|
+
readonly collisionType: CollisionType;
|
|
1239
|
+
private readonly _position;
|
|
1240
|
+
private _collisionVertices;
|
|
1241
|
+
private _radius;
|
|
1242
|
+
constructor(x?: number, y?: number, radius?: number);
|
|
1243
|
+
get position(): Vector;
|
|
1244
|
+
set position(position: Vector);
|
|
1245
|
+
get x(): number;
|
|
1246
|
+
set x(x: number);
|
|
1247
|
+
get y(): number;
|
|
1248
|
+
set y(y: number);
|
|
1249
|
+
get radius(): number;
|
|
1250
|
+
set radius(radius: number);
|
|
1251
|
+
setPosition(x: number, y: number): this;
|
|
1252
|
+
setRadius(radius: number): this;
|
|
1253
|
+
set(x: number, y: number, radius: number): this;
|
|
1254
|
+
copy(circle: Circle): this;
|
|
1255
|
+
clone(): this;
|
|
1256
|
+
equals({ x, y, radius }?: Partial<Circle>): boolean;
|
|
1257
|
+
getBounds(): Rectangle;
|
|
1258
|
+
/**
|
|
1259
|
+
* todo - cache this
|
|
1260
|
+
*/
|
|
1261
|
+
getNormals(): Array<Vector>;
|
|
1262
|
+
project(axis: Vector, result?: Interval): Interval;
|
|
1263
|
+
contains(x: number, y: number): boolean;
|
|
1264
|
+
intersectsWith(target: Collidable): boolean;
|
|
1265
|
+
collidesWith(target: Collidable): CollisionResponse | null;
|
|
1266
|
+
destroy(): void;
|
|
1267
|
+
private getCollisionVertices;
|
|
1268
|
+
private getCollisionVertex;
|
|
1269
|
+
static get temp(): Circle;
|
|
1270
|
+
}
|
|
1271
|
+
}
|
|
1272
|
+
declare module "math/collision-detection" {
|
|
1273
|
+
import type { Collidable, CollisionResponse } from "math/Collision";
|
|
1274
|
+
import type { Circle } from "math/Circle";
|
|
1275
|
+
import type { Ellipse } from "math/Ellipse";
|
|
1276
|
+
import type { Line } from "math/Line";
|
|
1277
|
+
import type { Polygon } from "math/Polygon";
|
|
1278
|
+
import type { Rectangle } from "math/Rectangle";
|
|
1279
|
+
import type { PointLike } from "math/PointLike";
|
|
1280
|
+
/**
|
|
1281
|
+
* INTERSECTION
|
|
1282
|
+
*/
|
|
1283
|
+
const intersectionSat: (shapeA: Collidable, shapeB: Collidable) => boolean;
|
|
1284
|
+
const intersectionPointPoint: (pointA: PointLike, pointB: PointLike, threshold?: number) => boolean;
|
|
1285
|
+
const intersectionPointLine: (point: PointLike, line: Line, threshold?: number) => boolean;
|
|
1286
|
+
const intersectionPointRect: (point: PointLike, rectangle: Rectangle) => boolean;
|
|
1287
|
+
const intersectionPointCircle: (point: PointLike, circle: Circle) => boolean;
|
|
1288
|
+
const intersectionPointEllipse: (point: PointLike, ellipse: Ellipse) => boolean;
|
|
1289
|
+
const intersectionPointPoly: (point: PointLike, polygon: Polygon) => boolean;
|
|
1290
|
+
const intersectionLineLine: (lineA: Line, lineB: Line) => boolean;
|
|
1291
|
+
const intersectionLineRect: (line: Line, rectangle: Rectangle) => boolean;
|
|
1292
|
+
const intersectionLineCircle: (line: Line, circle: Circle) => boolean;
|
|
1293
|
+
const intersectionLineEllipse: (line: Line, ellipse: Ellipse) => boolean;
|
|
1294
|
+
const intersectionLinePoly: (line: Line, polygon: Polygon) => boolean;
|
|
1295
|
+
const intersectionRectRect: (rectA: Rectangle, rectB: Rectangle) => boolean;
|
|
1296
|
+
const intersectionRectCircle: ({ x: rx, y: ry, width, height }: Rectangle, { x: cx, y: cy, radius }: Circle) => boolean;
|
|
1297
|
+
const intersectionRectEllipse: (rectangle: Rectangle, ellipse: Ellipse) => boolean;
|
|
1298
|
+
const intersectionRectPoly: (rectangle: Rectangle, polygon: Polygon) => boolean;
|
|
1299
|
+
const intersectionCircleCircle: ({ x: x1, y: y1, radius: r1 }: Circle, { x: x2, y: y2, radius: r2 }: Circle) => boolean;
|
|
1300
|
+
const intersectionCircleEllipse: (circle: Circle, ellipse: Ellipse) => boolean;
|
|
1301
|
+
const intersectionCirclePoly: ({ x: cx, y: cy, radius }: Circle, { x: px, y: py, points, edges }: Polygon) => boolean;
|
|
1302
|
+
const intersectionEllipseEllipse: (ellipseA: Ellipse, ellipseB: Ellipse) => boolean;
|
|
1303
|
+
const intersectionEllipsePoly: (ellipse: Ellipse, polygon: Polygon) => boolean;
|
|
1304
|
+
const intersectionPolyPoly: (polygonA: Polygon, polygonB: Polygon) => boolean;
|
|
1305
|
+
/**
|
|
1306
|
+
* COLLISION DETECTION
|
|
1307
|
+
*/
|
|
1308
|
+
const getCollisionRectangleRectangle: (rectA: Rectangle, rectB: Rectangle) => CollisionResponse | null;
|
|
1309
|
+
const getCollisionCircleCircle: (circleA: Circle, circleB: Circle) => CollisionResponse | null;
|
|
1310
|
+
const getCollisionCircleRectangle: (circle: Circle, rect: Rectangle, swap?: boolean) => CollisionResponse | null;
|
|
1311
|
+
const getCollisionPolygonCircle: (polygon: Polygon, circle: Circle, swap?: boolean) => CollisionResponse | null;
|
|
1312
|
+
const getCollisionSat: (shapeA: Collidable, shapeB: Collidable) => CollisionResponse | null;
|
|
1313
|
+
export { intersectionSat, intersectionPointPoint, intersectionPointLine, intersectionPointRect, intersectionPointCircle, intersectionPointEllipse, intersectionPointPoly, intersectionLineLine, intersectionLineRect, intersectionLineCircle, intersectionLineEllipse, intersectionLinePoly, intersectionRectRect, intersectionRectCircle, intersectionRectEllipse, intersectionRectPoly, intersectionCircleCircle, intersectionCircleEllipse, intersectionCirclePoly, intersectionEllipseEllipse, intersectionEllipsePoly, intersectionPolyPoly, getCollisionSat, getCollisionRectangleRectangle, getCollisionCircleRectangle, getCollisionCircleCircle, getCollisionPolygonCircle, };
|
|
1314
|
+
}
|
|
1315
|
+
declare module "math/Vector" {
|
|
1316
|
+
import type { ShapeLike } from "math/ShapeLike";
|
|
1317
|
+
import { Interval } from "math/Interval";
|
|
1318
|
+
import type { Collidable, CollisionResponse } from "math/Collision";
|
|
1319
|
+
import { CollisionType } from "math/Collision";
|
|
1320
|
+
import { Rectangle } from "math/Rectangle";
|
|
1321
|
+
import { AbstractVector } from "math/AbstractVector";
|
|
1322
|
+
export class Vector extends AbstractVector implements ShapeLike {
|
|
1323
|
+
readonly collisionType: CollisionType;
|
|
1324
|
+
x: number;
|
|
1325
|
+
y: number;
|
|
1326
|
+
constructor(x?: number, y?: number);
|
|
1327
|
+
clone(): this;
|
|
1328
|
+
copy(vector: Vector): this;
|
|
1329
|
+
intersectsWith(target: Collidable): boolean;
|
|
1330
|
+
collidesWith(target: Collidable): CollisionResponse | null;
|
|
1331
|
+
getBounds(): Rectangle;
|
|
1332
|
+
contains(x: number, y: number): boolean;
|
|
1333
|
+
getNormals(): Array<Vector>;
|
|
1334
|
+
project(axis: Vector, interval?: Interval): Interval;
|
|
1335
|
+
destroy(): void;
|
|
1336
|
+
static get temp(): Vector;
|
|
1337
|
+
static readonly zero: Vector;
|
|
1338
|
+
static readonly one: Vector;
|
|
1339
|
+
static add(v1: Vector, v2: Vector): Vector;
|
|
1340
|
+
static subtract(v1: Vector, v2: Vector): Vector;
|
|
1341
|
+
static multiply(v1: Vector, v2: Vector): Vector;
|
|
1342
|
+
static divide(v1: Vector, v2: Vector): Vector;
|
|
1343
|
+
}
|
|
1344
|
+
}
|
|
1345
|
+
declare module "math/utils" {
|
|
1346
|
+
import type { Vector } from "math/Vector";
|
|
1347
|
+
export const tau: number;
|
|
1348
|
+
export const radiansPerDegree: number;
|
|
1349
|
+
export const degreesPerRadian: number;
|
|
1350
|
+
export const enum VoronoiRegion {
|
|
1351
|
+
left = -1,
|
|
1352
|
+
middle = 0,
|
|
1353
|
+
right = 1
|
|
1354
|
+
}
|
|
1355
|
+
export const trimRotation: (degrees: number) => number;
|
|
1356
|
+
export const degreesToRadians: (degree: number) => number;
|
|
1357
|
+
export const radiansToDegrees: (radian: number) => number;
|
|
1358
|
+
export const clamp: (value: number, min: number, max: number) => number;
|
|
1359
|
+
export const sign: (value: number) => number;
|
|
1360
|
+
export const lerp: (startValue: number, endValue: number, ratio: number) => number;
|
|
1361
|
+
export const isPowerOfTwo: (value: number) => boolean;
|
|
1362
|
+
export const inRange: (value: number, min: number, max: number) => boolean;
|
|
1363
|
+
export const getDistance: (x1: number, y1: number, x2: number, y2: number) => number;
|
|
1364
|
+
export const bezierCurveTo: (fromX: number, fromY: number, cpX1: number, cpY1: number, cpX2: number, cpY2: number, toX: number, toY: number, path?: Array<number>, len?: number) => Array<number>;
|
|
1365
|
+
export const quadraticCurveTo: (fromX: number, fromY: number, cpX: number, cpY: number, toX: number, toY: number, path?: Array<number>, len?: number) => Array<number>;
|
|
1366
|
+
export const getVoronoiRegion: (line: Vector, point: Vector) => VoronoiRegion;
|
|
1367
|
+
}
|
|
1368
|
+
declare module "math/Rectangle" {
|
|
1369
|
+
import { Size } from "math/Size";
|
|
1370
|
+
import { Interval } from "math/Interval";
|
|
1371
|
+
import type { Matrix } from "math/Matrix";
|
|
1372
|
+
import type { ShapeLike } from "math/ShapeLike";
|
|
1373
|
+
import type { Collidable, CollisionResponse } from "math/Collision";
|
|
1374
|
+
import { CollisionType } from "math/Collision";
|
|
1375
|
+
import type { Vector } from "math/Vector";
|
|
1376
|
+
export class Rectangle implements ShapeLike {
|
|
1377
|
+
readonly collisionType: CollisionType;
|
|
1378
|
+
private readonly _position;
|
|
1379
|
+
private readonly _size;
|
|
1380
|
+
private _normals;
|
|
1381
|
+
private _normalsDirty;
|
|
1382
|
+
constructor(x?: number, y?: number, width?: number, height?: number);
|
|
1383
|
+
get position(): Vector;
|
|
1384
|
+
set position(position: Vector);
|
|
1385
|
+
get x(): number;
|
|
1386
|
+
set x(x: number);
|
|
1387
|
+
get y(): number;
|
|
1388
|
+
set y(y: number);
|
|
1389
|
+
get size(): Size;
|
|
1390
|
+
set size(size: Size);
|
|
1391
|
+
get width(): number;
|
|
1392
|
+
set width(width: number);
|
|
1393
|
+
get height(): number;
|
|
1394
|
+
set height(height: number);
|
|
1395
|
+
get left(): number;
|
|
1396
|
+
get top(): number;
|
|
1397
|
+
get right(): number;
|
|
1398
|
+
get bottom(): number;
|
|
1399
|
+
setPosition(x: number, y: number): this;
|
|
1400
|
+
setSize(width: number, height: number): this;
|
|
1401
|
+
set(x: number, y: number, width: number, height: number): this;
|
|
1402
|
+
copy(rectangle: Rectangle): this;
|
|
1403
|
+
clone(): this;
|
|
1404
|
+
equals({ x, y, width, height }?: Partial<Rectangle>): boolean;
|
|
1405
|
+
getBounds(): Rectangle;
|
|
1406
|
+
getNormals(): Array<Vector>;
|
|
1407
|
+
project(axis: Vector, result?: Interval): Interval;
|
|
1408
|
+
transform(matrix: Matrix, result?: Rectangle): Rectangle;
|
|
1409
|
+
contains(x: number, y: number): boolean;
|
|
1410
|
+
containsRect(rect: Rectangle): boolean;
|
|
1411
|
+
intersectsWith(target: Collidable): boolean;
|
|
1412
|
+
collidesWith(target: Collidable): CollisionResponse | null;
|
|
1413
|
+
destroy(): void;
|
|
1414
|
+
private _updateNormals;
|
|
1415
|
+
static get temp(): Rectangle;
|
|
1416
|
+
}
|
|
1417
|
+
}
|
|
1418
|
+
declare module "core/types" {
|
|
1419
|
+
import type { Rectangle } from "math/Rectangle";
|
|
1420
|
+
export type TypedArray = Int8Array | Uint8Array | Int16Array | Uint16Array | Int32Array | Uint32Array | Uint8ClampedArray | Float32Array | Float64Array;
|
|
1421
|
+
export type TimeInterval = 1 | 1000 | 60000 | 3600000;
|
|
1422
|
+
export type TypedEnum<Enum, Type> = {
|
|
1423
|
+
[Key in keyof Enum]: Type;
|
|
1424
|
+
};
|
|
1425
|
+
export type ValueOf<T> = T[keyof T];
|
|
1426
|
+
export type Mutable<T> = {
|
|
1427
|
+
-readonly [P in keyof T]: T[P];
|
|
1428
|
+
};
|
|
1429
|
+
export type TextureSource = HTMLImageElement | HTMLCanvasElement | HTMLVideoElement | null;
|
|
1430
|
+
export interface PlaybackOptions {
|
|
1431
|
+
volume: number;
|
|
1432
|
+
playbackRate: number;
|
|
1433
|
+
loop: boolean;
|
|
1434
|
+
muted: boolean;
|
|
1435
|
+
time: number;
|
|
1436
|
+
}
|
|
1437
|
+
export interface Cloneable {
|
|
1438
|
+
clone(): this;
|
|
1439
|
+
copy(source: this): this;
|
|
1440
|
+
}
|
|
1441
|
+
export interface Destroyable {
|
|
1442
|
+
destroy(): void;
|
|
1443
|
+
}
|
|
1444
|
+
export interface HasBoundingBox {
|
|
1445
|
+
getBounds(): Rectangle;
|
|
1446
|
+
}
|
|
1447
|
+
export type StreamingLoadEvent = 'loadedmetadata' | 'loadeddata' | 'canplay' | 'canplaythrough';
|
|
1448
|
+
}
|
|
1449
|
+
declare module "core/Clock" {
|
|
1450
|
+
import { Time } from "core/Time";
|
|
1451
|
+
export class Clock {
|
|
1452
|
+
private _startTime;
|
|
1453
|
+
private _elapsedTime;
|
|
1454
|
+
private _running;
|
|
1455
|
+
constructor(startTime?: Time, autoStart?: boolean);
|
|
1456
|
+
get running(): boolean;
|
|
1457
|
+
get elapsedTime(): Time;
|
|
1458
|
+
get elapsedMilliseconds(): number;
|
|
1459
|
+
get elapsedSeconds(): number;
|
|
1460
|
+
get elapsedMinutes(): number;
|
|
1461
|
+
get elapsedHours(): number;
|
|
1462
|
+
start(): this;
|
|
1463
|
+
stop(): this;
|
|
1464
|
+
reset(): this;
|
|
1465
|
+
restart(): this;
|
|
1466
|
+
destroy(): void;
|
|
1467
|
+
}
|
|
1468
|
+
}
|
|
1469
|
+
declare module "core/Signal" {
|
|
1470
|
+
type SignalHandler<Args extends Array<unknown>> = (...params: Args) => void | boolean;
|
|
1471
|
+
interface SignalBinding<Args extends Array<unknown>> {
|
|
1472
|
+
handler: SignalHandler<Args>;
|
|
1473
|
+
context?: object;
|
|
1474
|
+
}
|
|
1475
|
+
export class Signal<Args extends Array<unknown> = []> {
|
|
1476
|
+
private readonly _bindings;
|
|
1477
|
+
get bindings(): ReadonlyArray<SignalBinding<Args>>;
|
|
1478
|
+
has(handler: SignalHandler<Args>, context?: object): boolean;
|
|
1479
|
+
add(handler: SignalHandler<Args>, context?: object): this;
|
|
1480
|
+
once(handler: SignalHandler<Args>, context?: object): this;
|
|
1481
|
+
remove(handler: SignalHandler<Args>, context?: object): this;
|
|
1482
|
+
clearByContext(context?: object): this;
|
|
1483
|
+
clear(): this;
|
|
1484
|
+
dispatch(...params: Args): this;
|
|
1485
|
+
destroy(): void;
|
|
1486
|
+
}
|
|
1487
|
+
}
|
|
1488
|
+
declare module "rendering/primitives/Geometry" {
|
|
1489
|
+
interface GeometryOptions {
|
|
1490
|
+
vertices?: Array<number>;
|
|
1491
|
+
indices?: Array<number>;
|
|
1492
|
+
points?: Array<number>;
|
|
1493
|
+
}
|
|
1494
|
+
export class Geometry {
|
|
1495
|
+
readonly vertices: Float32Array;
|
|
1496
|
+
readonly indices: Uint16Array;
|
|
1497
|
+
readonly points: Array<number>;
|
|
1498
|
+
constructor({ vertices, indices, points, }?: GeometryOptions);
|
|
1499
|
+
destroy(): void;
|
|
1500
|
+
}
|
|
1501
|
+
}
|
|
1502
|
+
declare module "rendering/primitives/DrawableShape" {
|
|
1503
|
+
import { RenderingPrimitives } from "rendering/types";
|
|
1504
|
+
import type { Geometry } from "rendering/primitives/Geometry";
|
|
1505
|
+
import type { Color } from "core/Color";
|
|
1506
|
+
import { Drawable } from "rendering/Drawable";
|
|
1507
|
+
export class DrawableShape extends Drawable {
|
|
1508
|
+
readonly geometry: Geometry;
|
|
1509
|
+
readonly drawMode: RenderingPrimitives;
|
|
1510
|
+
readonly color: Color;
|
|
1511
|
+
constructor(geometry: Geometry, color: Color, drawMode?: RenderingPrimitives);
|
|
1512
|
+
destroy(): void;
|
|
1513
|
+
}
|
|
1514
|
+
}
|
|
1515
|
+
declare module "input/Pointer" {
|
|
1516
|
+
import { Vector } from "math/Vector";
|
|
1517
|
+
import { Size } from "math/Size";
|
|
1518
|
+
import { Flags } from "math/Flags";
|
|
1519
|
+
export enum PointerStateFlag {
|
|
1520
|
+
None = 0,
|
|
1521
|
+
Over = 1,
|
|
1522
|
+
Leave = 2,
|
|
1523
|
+
Down = 4,
|
|
1524
|
+
Move = 8,
|
|
1525
|
+
Up = 16,
|
|
1526
|
+
Cancel = 32
|
|
1527
|
+
}
|
|
1528
|
+
export enum PointerState {
|
|
1529
|
+
Unknown = 0,
|
|
1530
|
+
InsideCanvas = 1,
|
|
1531
|
+
OutsideCanvas = 2,
|
|
1532
|
+
Pressed = 3,
|
|
1533
|
+
Moving = 4,
|
|
1534
|
+
Released = 5,
|
|
1535
|
+
Cancelled = 6
|
|
1536
|
+
}
|
|
1537
|
+
export class Pointer {
|
|
1538
|
+
readonly id: number;
|
|
1539
|
+
readonly type: string;
|
|
1540
|
+
readonly position: Vector;
|
|
1541
|
+
readonly startPos: Vector;
|
|
1542
|
+
readonly size: Size;
|
|
1543
|
+
readonly tilt: Vector;
|
|
1544
|
+
readonly stateFlags: Flags<PointerStateFlag>;
|
|
1545
|
+
private _canvas;
|
|
1546
|
+
private _buttons;
|
|
1547
|
+
private _pressure;
|
|
1548
|
+
private _rotation;
|
|
1549
|
+
private _currentState;
|
|
1550
|
+
constructor(event: PointerEvent, canvas: HTMLCanvasElement);
|
|
1551
|
+
get x(): number;
|
|
1552
|
+
get y(): number;
|
|
1553
|
+
get width(): number;
|
|
1554
|
+
get height(): number;
|
|
1555
|
+
get buttons(): number;
|
|
1556
|
+
get pressure(): number;
|
|
1557
|
+
get rotation(): number;
|
|
1558
|
+
get currentState(): PointerState;
|
|
1559
|
+
handleEnter(event: PointerEvent): void;
|
|
1560
|
+
handleLeave(event: PointerEvent): void;
|
|
1561
|
+
handlePress(event: PointerEvent): void;
|
|
1562
|
+
handleMove(event: PointerEvent): void;
|
|
1563
|
+
handleRelease(event: PointerEvent): void;
|
|
1564
|
+
handleCancel(event: PointerEvent): void;
|
|
1565
|
+
destroy(): void;
|
|
1566
|
+
private handleEvent;
|
|
1567
|
+
}
|
|
1568
|
+
}
|
|
1569
|
+
declare module "rendering/utils" {
|
|
1570
|
+
export const createQuadIndices: (size: number) => Uint16Array;
|
|
1571
|
+
export interface CreateCanvasOptions {
|
|
1572
|
+
canvas?: HTMLCanvasElement;
|
|
1573
|
+
fillStyle?: string;
|
|
1574
|
+
width?: number;
|
|
1575
|
+
height?: number;
|
|
1576
|
+
}
|
|
1577
|
+
export const createCanvas: (options?: CreateCanvasOptions) => HTMLCanvasElement;
|
|
1578
|
+
export const determineFontHeight: (font: string) => number;
|
|
1579
|
+
}
|
|
1580
|
+
declare module "rendering/texture/Texture" {
|
|
1581
|
+
import { ScaleModes, WrapModes } from "rendering/types";
|
|
1582
|
+
import { Size } from "math/Size";
|
|
1583
|
+
import type { SamplerOptions } from "rendering/texture/Sampler";
|
|
1584
|
+
import type { TextureSource } from "core/types";
|
|
1585
|
+
export class Texture {
|
|
1586
|
+
private static _black;
|
|
1587
|
+
private static _white;
|
|
1588
|
+
static defaultSamplerOptions: SamplerOptions;
|
|
1589
|
+
static readonly empty: Texture;
|
|
1590
|
+
static get black(): Texture;
|
|
1591
|
+
static get white(): Texture;
|
|
1592
|
+
private _version;
|
|
1593
|
+
private _source;
|
|
1594
|
+
private _size;
|
|
1595
|
+
private readonly _destroyListeners;
|
|
1596
|
+
private _scaleMode;
|
|
1597
|
+
private _wrapMode;
|
|
1598
|
+
private _premultiplyAlpha;
|
|
1599
|
+
private _generateMipMap;
|
|
1600
|
+
private _flipY;
|
|
1601
|
+
constructor(source?: TextureSource, options?: Partial<SamplerOptions>);
|
|
1602
|
+
get source(): TextureSource;
|
|
1603
|
+
set source(source: TextureSource);
|
|
1604
|
+
get size(): Size;
|
|
1605
|
+
set size(size: Size);
|
|
1606
|
+
get width(): number;
|
|
1607
|
+
set width(width: number);
|
|
1608
|
+
get height(): number;
|
|
1609
|
+
set height(height: number);
|
|
1610
|
+
get scaleMode(): ScaleModes;
|
|
1611
|
+
set scaleMode(scaleMode: ScaleModes);
|
|
1612
|
+
get wrapMode(): WrapModes;
|
|
1613
|
+
set wrapMode(wrapMode: WrapModes);
|
|
1614
|
+
get premultiplyAlpha(): boolean;
|
|
1615
|
+
set premultiplyAlpha(premultiplyAlpha: boolean);
|
|
1616
|
+
get generateMipMap(): boolean;
|
|
1617
|
+
set generateMipMap(generateMipMap: boolean);
|
|
1618
|
+
get flipY(): boolean;
|
|
1619
|
+
set flipY(flipY: boolean);
|
|
1620
|
+
get powerOfTwo(): boolean;
|
|
1621
|
+
get version(): number;
|
|
1622
|
+
addDestroyListener(listener: () => void): this;
|
|
1623
|
+
removeDestroyListener(listener: () => void): this;
|
|
1624
|
+
setScaleMode(scaleMode: ScaleModes): this;
|
|
1625
|
+
setWrapMode(wrapMode: WrapModes): this;
|
|
1626
|
+
setPremultiplyAlpha(premultiplyAlpha: boolean): this;
|
|
1627
|
+
setSource(source: TextureSource): this;
|
|
1628
|
+
updateSource(): this;
|
|
1629
|
+
setSize(width: number, height: number): this;
|
|
1630
|
+
destroy(): void;
|
|
1631
|
+
private _touch;
|
|
1632
|
+
}
|
|
1633
|
+
}
|
|
1634
|
+
declare module "audio/Media" {
|
|
1635
|
+
import type { PlaybackOptions } from "core/types";
|
|
1636
|
+
export interface Media {
|
|
1637
|
+
readonly duration: number;
|
|
1638
|
+
readonly progress: number;
|
|
1639
|
+
readonly analyserTarget: AudioNode | null;
|
|
1640
|
+
volume: number;
|
|
1641
|
+
loop: boolean;
|
|
1642
|
+
playbackRate: number;
|
|
1643
|
+
currentTime: number;
|
|
1644
|
+
muted: boolean;
|
|
1645
|
+
paused: boolean;
|
|
1646
|
+
playing: boolean;
|
|
1647
|
+
play(options?: Partial<PlaybackOptions>): this;
|
|
1648
|
+
pause(options?: Partial<PlaybackOptions>): this;
|
|
1649
|
+
stop(options?: Partial<PlaybackOptions>): this;
|
|
1650
|
+
toggle(options?: Partial<PlaybackOptions>): this;
|
|
1651
|
+
applyOptions(options: Partial<PlaybackOptions>): this;
|
|
1652
|
+
setVolume(volume: number): this;
|
|
1653
|
+
setLoop(loop: boolean): this;
|
|
1654
|
+
setPlaybackRate(playbackRate: number): this;
|
|
1655
|
+
getTime(): number;
|
|
1656
|
+
setTime(time: number): this;
|
|
1657
|
+
setMuted(muted: boolean): this;
|
|
1658
|
+
destroy(): void;
|
|
1659
|
+
}
|
|
1660
|
+
}
|
|
1661
|
+
declare module "audio/AbstractMedia" {
|
|
1662
|
+
import type { Media } from "audio/Media";
|
|
1663
|
+
import { Signal } from "core/Signal";
|
|
1664
|
+
import type { PlaybackOptions } from "core/types";
|
|
1665
|
+
export interface AbstractMediaInitialState extends Omit<PlaybackOptions, 'time'> {
|
|
1666
|
+
duration: number;
|
|
1667
|
+
}
|
|
1668
|
+
export abstract class AbstractMedia implements Media {
|
|
1669
|
+
readonly onStart: Signal<[]>;
|
|
1670
|
+
readonly onStop: Signal<[]>;
|
|
1671
|
+
protected readonly _duration: number;
|
|
1672
|
+
protected _volume: number;
|
|
1673
|
+
protected _playbackRate: number;
|
|
1674
|
+
protected _loop: boolean;
|
|
1675
|
+
protected _muted: boolean;
|
|
1676
|
+
abstract get paused(): boolean;
|
|
1677
|
+
abstract set paused(paused: boolean);
|
|
1678
|
+
abstract get analyserTarget(): AudioNode | null;
|
|
1679
|
+
get duration(): number;
|
|
1680
|
+
get volume(): number;
|
|
1681
|
+
set volume(volume: number);
|
|
1682
|
+
get loop(): boolean;
|
|
1683
|
+
set loop(loop: boolean);
|
|
1684
|
+
get playbackRate(): number;
|
|
1685
|
+
set playbackRate(playbackRate: number);
|
|
1686
|
+
get currentTime(): number;
|
|
1687
|
+
set currentTime(currentTime: number);
|
|
1688
|
+
get muted(): boolean;
|
|
1689
|
+
set muted(muted: boolean);
|
|
1690
|
+
get progress(): number;
|
|
1691
|
+
get playing(): boolean;
|
|
1692
|
+
set playing(playing: boolean);
|
|
1693
|
+
protected constructor(initialState: AbstractMediaInitialState);
|
|
1694
|
+
abstract play(options?: Partial<PlaybackOptions>): this;
|
|
1695
|
+
abstract pause(options?: Partial<PlaybackOptions>): this;
|
|
1696
|
+
abstract setVolume(volume: number): this;
|
|
1697
|
+
abstract setLoop(loop: boolean): this;
|
|
1698
|
+
abstract setPlaybackRate(playbackRate: number): this;
|
|
1699
|
+
abstract getTime(): number;
|
|
1700
|
+
abstract setTime(time: number): this;
|
|
1701
|
+
abstract setMuted(muted: boolean): this;
|
|
1702
|
+
stop(options?: Partial<PlaybackOptions>): this;
|
|
1703
|
+
toggle(options?: Partial<PlaybackOptions>): this;
|
|
1704
|
+
applyOptions(options?: Partial<PlaybackOptions>): this;
|
|
1705
|
+
destroy(): void;
|
|
1706
|
+
}
|
|
1707
|
+
}
|
|
1708
|
+
declare module "audio/audio-context" {
|
|
1709
|
+
import { Signal } from "core/Signal";
|
|
1710
|
+
class AudioContextReadySignal extends Signal<[AudioContext]> {
|
|
1711
|
+
add(handler: (audioContext: AudioContext) => void | boolean, context?: object): this;
|
|
1712
|
+
once(handler: (audioContext: AudioContext) => void | boolean, context?: object): this;
|
|
1713
|
+
}
|
|
1714
|
+
export const onAudioContextReady: AudioContextReadySignal;
|
|
1715
|
+
export const getAudioContext: () => AudioContext;
|
|
1716
|
+
export const isAudioContextReady: () => boolean;
|
|
1717
|
+
export const getOfflineAudioContext: () => OfflineAudioContext;
|
|
1718
|
+
export const decodeAudioData: (arrayBuffer: ArrayBuffer) => Promise<AudioBuffer>;
|
|
1719
|
+
}
|
|
1720
|
+
declare module "audio/Music" {
|
|
1721
|
+
import type { PlaybackOptions } from "core/types";
|
|
1722
|
+
import { AbstractMedia } from "audio/AbstractMedia";
|
|
1723
|
+
export class Music extends AbstractMedia {
|
|
1724
|
+
private readonly _audioElement;
|
|
1725
|
+
private _audioSetup;
|
|
1726
|
+
constructor(audioElement: HTMLAudioElement, options?: Partial<PlaybackOptions>);
|
|
1727
|
+
setVolume(value: number): this;
|
|
1728
|
+
setLoop(loop: boolean): this;
|
|
1729
|
+
setPlaybackRate(value: number): this;
|
|
1730
|
+
getTime(): number;
|
|
1731
|
+
setTime(currentTime: number): this;
|
|
1732
|
+
setMuted(muted: boolean): this;
|
|
1733
|
+
get paused(): boolean;
|
|
1734
|
+
set paused(paused: boolean);
|
|
1735
|
+
get analyserTarget(): AudioNode | null;
|
|
1736
|
+
play(options?: Partial<PlaybackOptions>): this;
|
|
1737
|
+
pause(options?: Partial<PlaybackOptions>): this;
|
|
1738
|
+
destroy(): void;
|
|
1739
|
+
private setupWithAudioContext;
|
|
1740
|
+
}
|
|
1741
|
+
}
|
|
1742
|
+
declare module "audio/Sound" {
|
|
1743
|
+
import type { PlaybackOptions } from "core/types";
|
|
1744
|
+
import { AbstractMedia } from "audio/AbstractMedia";
|
|
1745
|
+
export interface AudioSpriteClip {
|
|
1746
|
+
start: number;
|
|
1747
|
+
end: number;
|
|
1748
|
+
loop?: boolean;
|
|
1749
|
+
}
|
|
1750
|
+
export interface SoundOptions extends Partial<PlaybackOptions> {
|
|
1751
|
+
poolSize?: number;
|
|
1752
|
+
sprites?: Readonly<Record<string, AudioSpriteClip>>;
|
|
1753
|
+
}
|
|
1754
|
+
export class Sound extends AbstractMedia {
|
|
1755
|
+
private readonly _audioBuffer;
|
|
1756
|
+
private readonly _pooledSources;
|
|
1757
|
+
private readonly _queuedPooledPlays;
|
|
1758
|
+
private readonly _sprites;
|
|
1759
|
+
private _audioSetup;
|
|
1760
|
+
private _paused;
|
|
1761
|
+
private _startTime;
|
|
1762
|
+
private _currentTime;
|
|
1763
|
+
private _sourceNode;
|
|
1764
|
+
private _poolSize;
|
|
1765
|
+
get paused(): boolean;
|
|
1766
|
+
set paused(paused: boolean);
|
|
1767
|
+
get analyserTarget(): GainNode | null;
|
|
1768
|
+
get poolSize(): number;
|
|
1769
|
+
set poolSize(poolSize: number);
|
|
1770
|
+
constructor(audioBuffer: AudioBuffer, options?: SoundOptions);
|
|
1771
|
+
setVolume(value: number): this;
|
|
1772
|
+
setLoop(loop: boolean): this;
|
|
1773
|
+
setPlaybackRate(value: number): this;
|
|
1774
|
+
getTime(): number;
|
|
1775
|
+
setTime(currentTime: number): this;
|
|
1776
|
+
setMuted(muted: boolean): this;
|
|
1777
|
+
setPoolSize(poolSize: number): this;
|
|
1778
|
+
setSprites(sprites: Readonly<Record<string, AudioSpriteClip>>): this;
|
|
1779
|
+
defineSprite(name: string, clip: AudioSpriteClip): this;
|
|
1780
|
+
hasSprite(name: string): boolean;
|
|
1781
|
+
removeSprite(name: string): this;
|
|
1782
|
+
play(options?: Partial<PlaybackOptions>): this;
|
|
1783
|
+
playPooled(options?: Partial<PlaybackOptions>): this;
|
|
1784
|
+
playSprite(name: string, options?: Partial<PlaybackOptions>): this;
|
|
1785
|
+
stopPooled(): this;
|
|
1786
|
+
pause(options?: Partial<PlaybackOptions>): this;
|
|
1787
|
+
destroy(): void;
|
|
1788
|
+
private createSourceNode;
|
|
1789
|
+
private setupWithAudioContext;
|
|
1790
|
+
private _enqueuePooledPlay;
|
|
1791
|
+
private _flushQueuedPooledPlays;
|
|
1792
|
+
private _playPooledNow;
|
|
1793
|
+
private _trimPooledSources;
|
|
1794
|
+
private _stopPrimarySource;
|
|
1795
|
+
private _stopPooledSources;
|
|
1796
|
+
private _stopSourceNode;
|
|
1797
|
+
private _createBufferSourceNode;
|
|
1798
|
+
}
|
|
1799
|
+
}
|
|
1800
|
+
declare module "rendering/sprite/Sprite" {
|
|
1801
|
+
import { Drawable } from "rendering/Drawable";
|
|
1802
|
+
import { Rectangle } from "math/Rectangle";
|
|
1803
|
+
import { Vector } from "math/Vector";
|
|
1804
|
+
import { Interval } from "math/Interval";
|
|
1805
|
+
import type { Texture } from "rendering/texture/Texture";
|
|
1806
|
+
import type { RenderTexture } from "rendering/texture/RenderTexture";
|
|
1807
|
+
export enum SpriteFlags {
|
|
1808
|
+
None = 0,
|
|
1809
|
+
Translation = 1,
|
|
1810
|
+
Rotation = 2,
|
|
1811
|
+
Scaling = 4,
|
|
1812
|
+
Origin = 8,
|
|
1813
|
+
Transform = 15,
|
|
1814
|
+
TransformInverse = 16,
|
|
1815
|
+
BoundingBox = 32,
|
|
1816
|
+
TextureCoords = 64,
|
|
1817
|
+
VertexTint = 128
|
|
1818
|
+
}
|
|
1819
|
+
export class Sprite extends Drawable {
|
|
1820
|
+
private _texture;
|
|
1821
|
+
private _textureFrame;
|
|
1822
|
+
private _vertices;
|
|
1823
|
+
private _texCoords;
|
|
1824
|
+
constructor(texture: Texture | RenderTexture | null);
|
|
1825
|
+
get texture(): Texture | RenderTexture | null;
|
|
1826
|
+
set texture(texture: Texture | RenderTexture | null);
|
|
1827
|
+
get textureFrame(): Rectangle;
|
|
1828
|
+
set textureFrame(frame: Rectangle);
|
|
1829
|
+
get width(): number;
|
|
1830
|
+
set width(value: number);
|
|
1831
|
+
get height(): number;
|
|
1832
|
+
set height(value: number);
|
|
1833
|
+
get vertices(): Float32Array;
|
|
1834
|
+
get texCoords(): Uint32Array;
|
|
1835
|
+
setTexture(texture: Texture | RenderTexture | null): this;
|
|
1836
|
+
updateTexture(): this;
|
|
1837
|
+
setTextureFrame(frame: Rectangle, resetSize?: boolean): this;
|
|
1838
|
+
resetTextureFrame(): this;
|
|
1839
|
+
getNormals(): Array<Vector>;
|
|
1840
|
+
project(axis: Vector, result?: Interval): Interval;
|
|
1841
|
+
contains(x: number, y: number): boolean;
|
|
1842
|
+
destroy(): void;
|
|
1843
|
+
}
|
|
1844
|
+
}
|
|
1845
|
+
declare module "rendering/video/Video" {
|
|
1846
|
+
import { Sprite } from "rendering/sprite/Sprite";
|
|
1847
|
+
import { Signal } from "core/Signal";
|
|
1848
|
+
import type { PlaybackOptions } from "core/types";
|
|
1849
|
+
import type { SceneRenderRuntime } from "rendering/SceneRenderRuntime";
|
|
1850
|
+
import type { SamplerOptions } from "rendering/texture/Sampler";
|
|
1851
|
+
import type { Media } from "audio/Media";
|
|
1852
|
+
export class Video extends Sprite implements Media {
|
|
1853
|
+
readonly onStart: Signal<[]>;
|
|
1854
|
+
readonly onStop: Signal<[]>;
|
|
1855
|
+
private readonly _videoElement;
|
|
1856
|
+
private readonly _duration;
|
|
1857
|
+
private _volume;
|
|
1858
|
+
private _playbackRate;
|
|
1859
|
+
private _loop;
|
|
1860
|
+
private _muted;
|
|
1861
|
+
private _audioSetup;
|
|
1862
|
+
private _textureDirty;
|
|
1863
|
+
private _lastVideoTime;
|
|
1864
|
+
private _videoFrameCallbackHandle;
|
|
1865
|
+
private readonly _onMetadataHandler;
|
|
1866
|
+
private readonly _onResizeHandler;
|
|
1867
|
+
private readonly _onVideoFrameHandler;
|
|
1868
|
+
constructor(videoElement: HTMLVideoElement, playbackOptions?: Partial<PlaybackOptions>, samplerOptions?: Partial<SamplerOptions>);
|
|
1869
|
+
get videoElement(): HTMLVideoElement;
|
|
1870
|
+
get duration(): number;
|
|
1871
|
+
get progress(): number;
|
|
1872
|
+
get volume(): number;
|
|
1873
|
+
set volume(value: number);
|
|
1874
|
+
get loop(): boolean;
|
|
1875
|
+
set loop(loop: boolean);
|
|
1876
|
+
get playbackRate(): number;
|
|
1877
|
+
set playbackRate(value: number);
|
|
1878
|
+
get currentTime(): number;
|
|
1879
|
+
set currentTime(time: number);
|
|
1880
|
+
get muted(): boolean;
|
|
1881
|
+
set muted(muted: boolean);
|
|
1882
|
+
get paused(): boolean;
|
|
1883
|
+
set paused(paused: boolean);
|
|
1884
|
+
get playing(): boolean;
|
|
1885
|
+
set playing(playing: boolean);
|
|
1886
|
+
get analyserTarget(): AudioNode | null;
|
|
1887
|
+
play(options?: Partial<PlaybackOptions>): this;
|
|
1888
|
+
pause(options?: Partial<PlaybackOptions>): this;
|
|
1889
|
+
stop(options?: Partial<PlaybackOptions>): this;
|
|
1890
|
+
toggle(options?: Partial<PlaybackOptions>): this;
|
|
1891
|
+
applyOptions(options?: Partial<PlaybackOptions>): this;
|
|
1892
|
+
setVolume(value: number): this;
|
|
1893
|
+
setLoop(loop: boolean): this;
|
|
1894
|
+
setPlaybackRate(value: number): this;
|
|
1895
|
+
getTime(): number;
|
|
1896
|
+
setTime(time: number): this;
|
|
1897
|
+
setMuted(muted: boolean): this;
|
|
1898
|
+
render(renderManager: SceneRenderRuntime): this;
|
|
1899
|
+
updateTexture(): this;
|
|
1900
|
+
destroy(): void;
|
|
1901
|
+
private _onVideoMetadataUpdated;
|
|
1902
|
+
private _onVideoFrame;
|
|
1903
|
+
private _markTextureDirtyIfPlaybackAdvanced;
|
|
1904
|
+
private _requestVideoFrameCallback;
|
|
1905
|
+
private _cancelVideoFrameCallback;
|
|
1906
|
+
private setupWithAudioContext;
|
|
1907
|
+
}
|
|
1908
|
+
}
|
|
1909
|
+
declare module "resources/tokens" {
|
|
1910
|
+
/**
|
|
1911
|
+
* Dispatch token for generic JSON loading.
|
|
1912
|
+
*
|
|
1913
|
+
* `loader.load(Json, 'config.json')` returns `Promise<unknown>`.
|
|
1914
|
+
* Narrow via generic: `loader.load<Config>(Json, 'config.json')`.
|
|
1915
|
+
* Handles all JSON shapes — objects, arrays, scalars.
|
|
1916
|
+
*/
|
|
1917
|
+
export abstract class Json {
|
|
1918
|
+
}
|
|
1919
|
+
/**
|
|
1920
|
+
* Dispatch token for plain text loading.
|
|
1921
|
+
*
|
|
1922
|
+
* `loader.load(TextAsset, 'greeting.txt')` returns `Promise<string>`.
|
|
1923
|
+
*/
|
|
1924
|
+
export abstract class TextAsset {
|
|
1925
|
+
}
|
|
1926
|
+
/**
|
|
1927
|
+
* Dispatch token for SVG loading.
|
|
1928
|
+
*
|
|
1929
|
+
* `loader.load(SvgAsset, 'icon.svg')` returns `Promise<HTMLImageElement>`.
|
|
1930
|
+
*/
|
|
1931
|
+
export abstract class SvgAsset {
|
|
1932
|
+
}
|
|
1933
|
+
/**
|
|
1934
|
+
* Dispatch token for WebVTT subtitle loading.
|
|
1935
|
+
*
|
|
1936
|
+
* `loader.load(VttAsset, 'subs.vtt')` returns `Promise<Array<VTTCue>>`.
|
|
1937
|
+
*/
|
|
1938
|
+
export abstract class VttAsset {
|
|
1939
|
+
}
|
|
1940
|
+
}
|
|
1941
|
+
declare module "resources/AssetFactory" {
|
|
1942
|
+
export interface AssetFactory<T = unknown> {
|
|
1943
|
+
readonly storageName: string;
|
|
1944
|
+
process(response: Response): Promise<unknown>;
|
|
1945
|
+
create(source: unknown, options?: unknown): Promise<T>;
|
|
1946
|
+
destroy(): void;
|
|
1947
|
+
}
|
|
1948
|
+
}
|
|
1949
|
+
declare module "resources/FactoryRegistry" {
|
|
1950
|
+
import type { AssetFactory } from "resources/AssetFactory";
|
|
1951
|
+
export type AssetConstructor<T = unknown> = abstract new (...args: Array<any>) => T;
|
|
1952
|
+
export class FactoryRegistry {
|
|
1953
|
+
private readonly _factories;
|
|
1954
|
+
register<T>(type: AssetConstructor<T>, factory: AssetFactory<T>): void;
|
|
1955
|
+
resolve<T>(type: AssetConstructor<T>): AssetFactory<T>;
|
|
1956
|
+
has(type: AssetConstructor): boolean;
|
|
1957
|
+
destroy(): void;
|
|
1958
|
+
}
|
|
1959
|
+
}
|
|
1960
|
+
declare module "resources/AbstractAssetFactory" {
|
|
1961
|
+
import type { AssetFactory } from "resources/AssetFactory";
|
|
1962
|
+
export abstract class AbstractAssetFactory<T = unknown> implements AssetFactory<T> {
|
|
1963
|
+
protected readonly _objectUrls: Array<string>;
|
|
1964
|
+
abstract readonly storageName: string;
|
|
1965
|
+
abstract process(response: Response): Promise<unknown>;
|
|
1966
|
+
abstract create(source: unknown, options?: unknown): Promise<T>;
|
|
1967
|
+
createObjectUrl(blob: Blob): string;
|
|
1968
|
+
protected revokeObjectUrl(objectUrl: string): void;
|
|
1969
|
+
destroy(): void;
|
|
1970
|
+
}
|
|
1971
|
+
}
|
|
1972
|
+
declare module "resources/factories/FontFactory" {
|
|
1973
|
+
import { AbstractAssetFactory } from "resources/AbstractAssetFactory";
|
|
1974
|
+
export interface FontFactoryOptions {
|
|
1975
|
+
family: string;
|
|
1976
|
+
descriptors?: FontFaceDescriptors;
|
|
1977
|
+
addToDocument?: boolean;
|
|
1978
|
+
}
|
|
1979
|
+
export class FontFactory extends AbstractAssetFactory<FontFace> {
|
|
1980
|
+
readonly storageName = "font";
|
|
1981
|
+
private readonly _addedFontFaces;
|
|
1982
|
+
process(response: Response): Promise<ArrayBuffer>;
|
|
1983
|
+
create(source: ArrayBuffer, options?: FontFactoryOptions): Promise<FontFace>;
|
|
1984
|
+
destroy(): void;
|
|
1985
|
+
}
|
|
1986
|
+
}
|
|
1987
|
+
declare module "resources/utils" {
|
|
1988
|
+
export const determineMimeType: (arrayBuffer: ArrayBuffer) => string;
|
|
1989
|
+
}
|
|
1990
|
+
declare module "resources/factories/ImageFactory" {
|
|
1991
|
+
import { AbstractAssetFactory } from "resources/AbstractAssetFactory";
|
|
1992
|
+
interface ImageFactoryOptions {
|
|
1993
|
+
mimeType?: string;
|
|
1994
|
+
}
|
|
1995
|
+
export class ImageFactory extends AbstractAssetFactory<HTMLImageElement> {
|
|
1996
|
+
readonly storageName = "image";
|
|
1997
|
+
process(response: Response): Promise<ArrayBuffer>;
|
|
1998
|
+
create(source: ArrayBuffer, options?: ImageFactoryOptions): Promise<HTMLImageElement>;
|
|
1999
|
+
}
|
|
2000
|
+
}
|
|
2001
|
+
declare module "resources/factories/JsonFactory" {
|
|
2002
|
+
import { AbstractAssetFactory } from "resources/AbstractAssetFactory";
|
|
2003
|
+
export class JsonFactory extends AbstractAssetFactory<unknown> {
|
|
2004
|
+
readonly storageName = "json";
|
|
2005
|
+
process(response: Response): Promise<unknown>;
|
|
2006
|
+
create(source: unknown): Promise<unknown>;
|
|
2007
|
+
}
|
|
2008
|
+
}
|
|
2009
|
+
declare module "resources/factories/MusicFactory" {
|
|
2010
|
+
import type { PlaybackOptions, StreamingLoadEvent } from "core/types";
|
|
2011
|
+
import { AbstractAssetFactory } from "resources/AbstractAssetFactory";
|
|
2012
|
+
import { Music } from "audio/Music";
|
|
2013
|
+
interface MusicFactoryOptions {
|
|
2014
|
+
mimeType?: string;
|
|
2015
|
+
loadEvent?: StreamingLoadEvent;
|
|
2016
|
+
playbackOptions?: Partial<PlaybackOptions>;
|
|
2017
|
+
}
|
|
2018
|
+
export class MusicFactory extends AbstractAssetFactory<Music> {
|
|
2019
|
+
readonly storageName = "music";
|
|
2020
|
+
private readonly _audioElements;
|
|
2021
|
+
process(response: Response): Promise<ArrayBuffer>;
|
|
2022
|
+
create(source: ArrayBuffer, options?: MusicFactoryOptions): Promise<Music>;
|
|
2023
|
+
destroy(): void;
|
|
2024
|
+
}
|
|
2025
|
+
}
|
|
2026
|
+
declare module "resources/factories/SoundFactory" {
|
|
2027
|
+
import type { PlaybackOptions } from "core/types";
|
|
2028
|
+
import { AbstractAssetFactory } from "resources/AbstractAssetFactory";
|
|
2029
|
+
import { Sound, type AudioSpriteClip } from "audio/Sound";
|
|
2030
|
+
interface SoundFactoryOptions {
|
|
2031
|
+
playbackOptions?: Partial<PlaybackOptions>;
|
|
2032
|
+
poolSize?: number;
|
|
2033
|
+
sprites?: Readonly<Record<string, AudioSpriteClip>>;
|
|
2034
|
+
}
|
|
2035
|
+
export class SoundFactory extends AbstractAssetFactory<Sound> {
|
|
2036
|
+
readonly storageName = "sound";
|
|
2037
|
+
process(response: Response): Promise<ArrayBuffer>;
|
|
2038
|
+
create(source: ArrayBuffer, options?: SoundFactoryOptions): Promise<Sound>;
|
|
2039
|
+
}
|
|
2040
|
+
}
|
|
2041
|
+
declare module "resources/factories/TextFactory" {
|
|
2042
|
+
import { AbstractAssetFactory } from "resources/AbstractAssetFactory";
|
|
2043
|
+
export class TextFactory extends AbstractAssetFactory<string> {
|
|
2044
|
+
readonly storageName = "text";
|
|
2045
|
+
process(response: Response): Promise<string>;
|
|
2046
|
+
create(source: string): Promise<string>;
|
|
2047
|
+
}
|
|
2048
|
+
}
|
|
2049
|
+
declare module "resources/factories/TextureFactory" {
|
|
2050
|
+
import { Texture } from "rendering/texture/Texture";
|
|
2051
|
+
import type { SamplerOptions } from "rendering/texture/Sampler";
|
|
2052
|
+
import { AbstractAssetFactory } from "resources/AbstractAssetFactory";
|
|
2053
|
+
interface TextureFactoryOptions {
|
|
2054
|
+
mimeType?: string;
|
|
2055
|
+
samplerOptions?: SamplerOptions;
|
|
2056
|
+
}
|
|
2057
|
+
export class TextureFactory extends AbstractAssetFactory<Texture> {
|
|
2058
|
+
readonly storageName = "texture";
|
|
2059
|
+
process(response: Response): Promise<ArrayBuffer>;
|
|
2060
|
+
create(source: ArrayBuffer, options?: TextureFactoryOptions): Promise<Texture>;
|
|
2061
|
+
}
|
|
2062
|
+
}
|
|
2063
|
+
declare module "resources/factories/VideoFactory" {
|
|
2064
|
+
import { AbstractAssetFactory } from "resources/AbstractAssetFactory";
|
|
2065
|
+
import type { SamplerOptions } from "rendering/texture/Sampler";
|
|
2066
|
+
import type { PlaybackOptions, StreamingLoadEvent } from "core/types";
|
|
2067
|
+
import { Video } from "rendering/video/Video";
|
|
2068
|
+
interface VideoFactoryOptions {
|
|
2069
|
+
mimeType?: string;
|
|
2070
|
+
loadEvent?: StreamingLoadEvent;
|
|
2071
|
+
playbackOptions?: Partial<PlaybackOptions>;
|
|
2072
|
+
samplerOptions?: Partial<SamplerOptions>;
|
|
2073
|
+
}
|
|
2074
|
+
export class VideoFactory extends AbstractAssetFactory<Video> {
|
|
2075
|
+
readonly storageName = "video";
|
|
2076
|
+
private readonly _videoElements;
|
|
2077
|
+
process(response: Response): Promise<ArrayBuffer>;
|
|
2078
|
+
create(source: ArrayBuffer, options?: VideoFactoryOptions): Promise<Video>;
|
|
2079
|
+
destroy(): void;
|
|
2080
|
+
}
|
|
2081
|
+
}
|
|
2082
|
+
declare module "resources/factories/SvgFactory" {
|
|
2083
|
+
import { AbstractAssetFactory } from "resources/AbstractAssetFactory";
|
|
2084
|
+
export class SvgFactory extends AbstractAssetFactory<HTMLImageElement> {
|
|
2085
|
+
readonly storageName = "svg";
|
|
2086
|
+
process(response: Response): Promise<string>;
|
|
2087
|
+
create(source: string): Promise<HTMLImageElement>;
|
|
2088
|
+
}
|
|
2089
|
+
}
|
|
2090
|
+
declare module "resources/factories/BinaryFactory" {
|
|
2091
|
+
import { AbstractAssetFactory } from "resources/AbstractAssetFactory";
|
|
2092
|
+
export class BinaryFactory extends AbstractAssetFactory<ArrayBuffer> {
|
|
2093
|
+
readonly storageName = "binary";
|
|
2094
|
+
process(response: Response): Promise<ArrayBuffer>;
|
|
2095
|
+
create(source: ArrayBuffer): Promise<ArrayBuffer>;
|
|
2096
|
+
}
|
|
2097
|
+
}
|
|
2098
|
+
declare module "resources/factories/WasmFactory" {
|
|
2099
|
+
import { AbstractAssetFactory } from "resources/AbstractAssetFactory";
|
|
2100
|
+
export class WasmFactory extends AbstractAssetFactory<WebAssembly.Module> {
|
|
2101
|
+
readonly storageName = "wasm";
|
|
2102
|
+
process(response: Response): Promise<ArrayBuffer>;
|
|
2103
|
+
create(source: ArrayBuffer): Promise<WebAssembly.Module>;
|
|
2104
|
+
}
|
|
2105
|
+
}
|
|
2106
|
+
declare module "resources/factories/VttFactory" {
|
|
2107
|
+
import { AbstractAssetFactory } from "resources/AbstractAssetFactory";
|
|
2108
|
+
export class VttFactory extends AbstractAssetFactory<Array<VTTCue>> {
|
|
2109
|
+
readonly storageName = "vtt";
|
|
2110
|
+
process(response: Response): Promise<string>;
|
|
2111
|
+
create(source: string): Promise<Array<VTTCue>>;
|
|
2112
|
+
}
|
|
2113
|
+
}
|
|
2114
|
+
declare module "resources/AssetManifest" {
|
|
2115
|
+
import type { Loadable } from "resources/Loader";
|
|
2116
|
+
export interface AssetEntry<T extends Loadable = Loadable> {
|
|
2117
|
+
readonly type: T;
|
|
2118
|
+
readonly alias: string;
|
|
2119
|
+
readonly path: string;
|
|
2120
|
+
readonly options?: unknown;
|
|
2121
|
+
}
|
|
2122
|
+
export interface AssetManifest {
|
|
2123
|
+
readonly bundles: Readonly<Record<string, ReadonlyArray<AssetEntry>>>;
|
|
2124
|
+
}
|
|
2125
|
+
export interface LoadBundleOptions {
|
|
2126
|
+
background?: boolean;
|
|
2127
|
+
onProgress?: (loaded: number, total: number) => void;
|
|
2128
|
+
}
|
|
2129
|
+
export class BundleLoadError extends Error {
|
|
2130
|
+
readonly bundle: string;
|
|
2131
|
+
readonly failures: Array<{
|
|
2132
|
+
type: Loadable;
|
|
2133
|
+
alias: string;
|
|
2134
|
+
error: Error;
|
|
2135
|
+
}>;
|
|
2136
|
+
constructor(bundle: string, failures: Array<{
|
|
2137
|
+
type: Loadable;
|
|
2138
|
+
alias: string;
|
|
2139
|
+
error: Error;
|
|
2140
|
+
}>);
|
|
2141
|
+
}
|
|
2142
|
+
export function defineAssetManifest<const M extends AssetManifest>(manifest: M): M;
|
|
2143
|
+
}
|
|
2144
|
+
declare module "resources/CacheStore" {
|
|
2145
|
+
export interface CacheStore {
|
|
2146
|
+
load(storageName: string, key: string): Promise<unknown | null>;
|
|
2147
|
+
save(storageName: string, key: string, data: unknown): Promise<void>;
|
|
2148
|
+
delete(storageName: string, key: string): Promise<boolean>;
|
|
2149
|
+
clear(storageName: string): Promise<boolean>;
|
|
2150
|
+
destroy(): void;
|
|
2151
|
+
}
|
|
2152
|
+
}
|
|
2153
|
+
declare module "resources/Loader" {
|
|
2154
|
+
import { Signal } from "core/Signal";
|
|
2155
|
+
import { Json, TextAsset, SvgAsset, VttAsset } from "resources/tokens";
|
|
2156
|
+
import type { AssetFactory } from "resources/AssetFactory";
|
|
2157
|
+
import type { AssetConstructor } from "resources/FactoryRegistry";
|
|
2158
|
+
import type { CacheStore } from "resources/CacheStore";
|
|
2159
|
+
import type { AssetManifest, LoadBundleOptions } from "resources/AssetManifest";
|
|
2160
|
+
export type Loadable = abstract new (...args: Array<any>) => any;
|
|
2161
|
+
export type LoadReturn<T> = T extends typeof Json ? unknown : T extends typeof TextAsset ? string : T extends typeof SvgAsset ? HTMLImageElement : T extends typeof VttAsset ? Array<VTTCue> : T extends abstract new (...args: Array<any>) => infer R ? R : never;
|
|
2162
|
+
export interface LoaderOptions {
|
|
2163
|
+
resourcePath?: string;
|
|
2164
|
+
requestOptions?: RequestInit;
|
|
2165
|
+
cache?: CacheStore | ReadonlyArray<CacheStore>;
|
|
2166
|
+
concurrency?: number;
|
|
2167
|
+
}
|
|
2168
|
+
export class Loader {
|
|
2169
|
+
private readonly _registry;
|
|
2170
|
+
private readonly _resources;
|
|
2171
|
+
private readonly _manifest;
|
|
2172
|
+
private readonly _bundles;
|
|
2173
|
+
private readonly _inFlight;
|
|
2174
|
+
private readonly _typeIds;
|
|
2175
|
+
private readonly _preventStoreKeys;
|
|
2176
|
+
private readonly _stores;
|
|
2177
|
+
private _resourcePath;
|
|
2178
|
+
private _requestOptions;
|
|
2179
|
+
private _concurrency;
|
|
2180
|
+
private _nextTypeId;
|
|
2181
|
+
private _backgroundQueue;
|
|
2182
|
+
private _backgroundActive;
|
|
2183
|
+
private _backgroundTotal;
|
|
2184
|
+
private _backgroundLoaded;
|
|
2185
|
+
private _backgroundResolve;
|
|
2186
|
+
readonly onProgress: Signal<[loaded: number, total: number]>;
|
|
2187
|
+
readonly onBundleProgress: Signal<[name: string, loaded: number, total: number]>;
|
|
2188
|
+
readonly onLoaded: Signal<[type: AssetConstructor, alias: string, resource: unknown]>;
|
|
2189
|
+
readonly onError: Signal<[type: AssetConstructor, alias: string, error: Error]>;
|
|
2190
|
+
constructor(options?: LoaderOptions);
|
|
2191
|
+
register<T>(type: AssetConstructor<T>, factory: AssetFactory<T>): this;
|
|
2192
|
+
add(type: Loadable, path: string): this;
|
|
2193
|
+
add(type: Loadable, paths: ReadonlyArray<string>): this;
|
|
2194
|
+
add(type: Loadable, items: Readonly<Record<string, string>>): this;
|
|
2195
|
+
registerManifest(manifest: AssetManifest): this;
|
|
2196
|
+
loadBundle(name: string, options?: LoadBundleOptions): Promise<void>;
|
|
2197
|
+
hasBundle(name: string): boolean;
|
|
2198
|
+
load<T = unknown>(type: typeof Json, path: string, options?: unknown): Promise<T>;
|
|
2199
|
+
load<T = unknown>(type: typeof Json, paths: ReadonlyArray<string>, options?: unknown): Promise<Array<T>>;
|
|
2200
|
+
load<T = unknown, K extends string = string>(type: typeof Json, items: Readonly<Record<K, string>>, options?: unknown): Promise<Record<K, T>>;
|
|
2201
|
+
load<T extends Loadable>(type: T, path: string, options?: unknown): Promise<LoadReturn<T>>;
|
|
2202
|
+
load<T extends Loadable>(type: T, paths: ReadonlyArray<string>, options?: unknown): Promise<Array<LoadReturn<T>>>;
|
|
2203
|
+
load<T extends Loadable, K extends string>(type: T, items: Readonly<Record<K, string>>, options?: unknown): Promise<Record<K, LoadReturn<T>>>;
|
|
2204
|
+
backgroundLoad(): void;
|
|
2205
|
+
loadAll(): Promise<void>;
|
|
2206
|
+
setConcurrency(n: number): this;
|
|
2207
|
+
get<T = unknown>(type: typeof Json, alias: string): T;
|
|
2208
|
+
get<T extends Loadable>(type: T, alias: string): LoadReturn<T>;
|
|
2209
|
+
peek<T = unknown>(type: typeof Json, alias: string): T | null;
|
|
2210
|
+
peek<T extends Loadable>(type: T, alias: string): LoadReturn<T> | null;
|
|
2211
|
+
has(type: Loadable, alias: string): boolean;
|
|
2212
|
+
unload(type: Loadable, alias: string): this;
|
|
2213
|
+
unloadAll(type?: Loadable): this;
|
|
2214
|
+
get resourcePath(): string;
|
|
2215
|
+
set resourcePath(value: string);
|
|
2216
|
+
get requestOptions(): RequestInit;
|
|
2217
|
+
set requestOptions(value: RequestInit);
|
|
2218
|
+
destroy(): void;
|
|
2219
|
+
private _loadSingle;
|
|
2220
|
+
private _loadSingleBackground;
|
|
2221
|
+
private _fetch;
|
|
2222
|
+
private _drainBackground;
|
|
2223
|
+
private _boostFromQueue;
|
|
2224
|
+
private _isQueuedInBackground;
|
|
2225
|
+
private _waitForBackgroundEntry;
|
|
2226
|
+
private _onBackgroundItemDone;
|
|
2227
|
+
private _startBackgroundEntry;
|
|
2228
|
+
private _trackInFlight;
|
|
2229
|
+
private _emitBundleProgress;
|
|
2230
|
+
private _addManifestEntry;
|
|
2231
|
+
private _getManifestEntry;
|
|
2232
|
+
private _isManifestDefinitionEquivalent;
|
|
2233
|
+
private _areOptionsEquivalent;
|
|
2234
|
+
private _normalizeError;
|
|
2235
|
+
private _describeType;
|
|
2236
|
+
private _hasResource;
|
|
2237
|
+
private _storeResource;
|
|
2238
|
+
private _key;
|
|
2239
|
+
private _resolveUrl;
|
|
2240
|
+
private _registerBuiltinFactories;
|
|
2241
|
+
}
|
|
2242
|
+
}
|
|
2243
|
+
declare module "core/Scene" {
|
|
2244
|
+
import type { Time } from "core/Time";
|
|
2245
|
+
import type { Loader } from "resources/Loader";
|
|
2246
|
+
import type { SceneRenderRuntime } from "rendering/SceneRenderRuntime";
|
|
2247
|
+
import { Container } from "rendering/Container";
|
|
2248
|
+
import type { SceneNode } from "core/SceneNode";
|
|
2249
|
+
import type { Application } from "core/Application";
|
|
2250
|
+
import type { Pointer } from "input/Pointer";
|
|
2251
|
+
import type { Vector } from "math/Vector";
|
|
2252
|
+
export type SceneStackMode = 'overlay' | 'modal' | 'opaque';
|
|
2253
|
+
export type SceneInputMode = 'capture' | 'passthrough' | 'transparent';
|
|
2254
|
+
export interface SceneParticipationPolicy {
|
|
2255
|
+
mode?: SceneStackMode;
|
|
2256
|
+
input?: SceneInputMode;
|
|
2257
|
+
}
|
|
2258
|
+
export type SceneInputEvent = {
|
|
2259
|
+
type: 'keyDown';
|
|
2260
|
+
channel: number;
|
|
2261
|
+
} | {
|
|
2262
|
+
type: 'keyUp';
|
|
2263
|
+
channel: number;
|
|
2264
|
+
} | {
|
|
2265
|
+
type: 'pointerEnter';
|
|
2266
|
+
pointer: Pointer;
|
|
2267
|
+
} | {
|
|
2268
|
+
type: 'pointerLeave';
|
|
2269
|
+
pointer: Pointer;
|
|
2270
|
+
} | {
|
|
2271
|
+
type: 'pointerDown';
|
|
2272
|
+
pointer: Pointer;
|
|
2273
|
+
} | {
|
|
2274
|
+
type: 'pointerMove';
|
|
2275
|
+
pointer: Pointer;
|
|
2276
|
+
} | {
|
|
2277
|
+
type: 'pointerUp';
|
|
2278
|
+
pointer: Pointer;
|
|
2279
|
+
} | {
|
|
2280
|
+
type: 'pointerTap';
|
|
2281
|
+
pointer: Pointer;
|
|
2282
|
+
} | {
|
|
2283
|
+
type: 'pointerSwipe';
|
|
2284
|
+
pointer: Pointer;
|
|
2285
|
+
} | {
|
|
2286
|
+
type: 'pointerCancel';
|
|
2287
|
+
pointer: Pointer;
|
|
2288
|
+
} | {
|
|
2289
|
+
type: 'mouseWheel';
|
|
2290
|
+
wheel: Vector;
|
|
2291
|
+
};
|
|
2292
|
+
export interface SceneData {
|
|
2293
|
+
load?: (loader: Loader) => Promise<void> | void;
|
|
2294
|
+
init?: (loader: Loader) => Promise<void> | void;
|
|
2295
|
+
update?: (delta: Time) => void;
|
|
2296
|
+
draw?: (renderManager: SceneRenderRuntime) => void;
|
|
2297
|
+
handleInput?: (event: SceneInputEvent) => boolean | void;
|
|
2298
|
+
unload?: (loader: Loader) => Promise<void> | void;
|
|
2299
|
+
}
|
|
2300
|
+
export type SceneInstance<T extends SceneData = SceneData> = Scene & T;
|
|
2301
|
+
export class Scene {
|
|
2302
|
+
private _app;
|
|
2303
|
+
private readonly _root;
|
|
2304
|
+
private _stackMode;
|
|
2305
|
+
private _inputMode;
|
|
2306
|
+
static create<T extends SceneData>(definition: T & ThisType<SceneInstance<T>>): SceneInstance<T>;
|
|
2307
|
+
constructor();
|
|
2308
|
+
get app(): Application | null;
|
|
2309
|
+
set app(app: Application | null);
|
|
2310
|
+
get root(): Container;
|
|
2311
|
+
get stackMode(): SceneStackMode;
|
|
2312
|
+
set stackMode(mode: SceneStackMode);
|
|
2313
|
+
get inputMode(): SceneInputMode;
|
|
2314
|
+
set inputMode(mode: SceneInputMode);
|
|
2315
|
+
addChild(child: SceneNode): this;
|
|
2316
|
+
removeChild(child: SceneNode): this;
|
|
2317
|
+
setParticipationPolicy(policy: SceneParticipationPolicy): this;
|
|
2318
|
+
getParticipationPolicy(): SceneParticipationPolicy;
|
|
2319
|
+
load(loader: Loader): Promise<void> | void;
|
|
2320
|
+
init(loader: Loader): Promise<void> | void;
|
|
2321
|
+
update(delta: Time): void;
|
|
2322
|
+
draw(renderManager: SceneRenderRuntime): void;
|
|
2323
|
+
handleInput(_event: SceneInputEvent): boolean | void;
|
|
2324
|
+
unload(loader: Loader): Promise<void> | void;
|
|
2325
|
+
destroy(): void;
|
|
2326
|
+
}
|
|
2327
|
+
}
|
|
2328
|
+
declare module "core/SceneManager" {
|
|
2329
|
+
import { Signal } from "core/Signal";
|
|
2330
|
+
import { Color } from "core/Color";
|
|
2331
|
+
import type { Time } from "core/Time";
|
|
2332
|
+
import type { Application } from "core/Application";
|
|
2333
|
+
import type { Scene, SceneParticipationPolicy } from "core/Scene";
|
|
2334
|
+
export interface FadeSceneTransition {
|
|
2335
|
+
type: 'fade';
|
|
2336
|
+
duration?: number;
|
|
2337
|
+
color?: Color;
|
|
2338
|
+
}
|
|
2339
|
+
export type SceneTransition = FadeSceneTransition;
|
|
2340
|
+
export interface SetSceneOptions {
|
|
2341
|
+
transition?: SceneTransition;
|
|
2342
|
+
}
|
|
2343
|
+
export interface PushSceneOptions extends SceneParticipationPolicy {
|
|
2344
|
+
transition?: SceneTransition;
|
|
2345
|
+
}
|
|
2346
|
+
export interface PopSceneOptions {
|
|
2347
|
+
transition?: SceneTransition;
|
|
2348
|
+
}
|
|
2349
|
+
export class SceneManager {
|
|
2350
|
+
private readonly _app;
|
|
2351
|
+
private readonly _stack;
|
|
2352
|
+
private readonly _transitionOverlay;
|
|
2353
|
+
private _transition;
|
|
2354
|
+
readonly onChangeScene: Signal<[Scene | null]>;
|
|
2355
|
+
readonly onStartScene: Signal<[Scene]>;
|
|
2356
|
+
readonly onUpdateScene: Signal<[Scene]>;
|
|
2357
|
+
readonly onStopScene: Signal<[Scene]>;
|
|
2358
|
+
constructor(app: Application);
|
|
2359
|
+
get scene(): Scene | null;
|
|
2360
|
+
set scene(scene: Scene | null);
|
|
2361
|
+
get scenes(): ReadonlyArray<Scene>;
|
|
2362
|
+
setScene(scene: Scene | null, options?: SetSceneOptions): Promise<this>;
|
|
2363
|
+
pushScene(scene: Scene, options?: PushSceneOptions): Promise<this>;
|
|
2364
|
+
popScene(options?: PopSceneOptions): Promise<this>;
|
|
2365
|
+
update(delta: Time): this;
|
|
2366
|
+
destroy(): void;
|
|
2367
|
+
private _prepareScene;
|
|
2368
|
+
private _disposeScene;
|
|
2369
|
+
private _unloadAllScenes;
|
|
2370
|
+
private _unloadCoveredScenes;
|
|
2371
|
+
private _unloadAllScenesOnDestroy;
|
|
2372
|
+
private _resolveParticipationPolicy;
|
|
2373
|
+
private _resolveParticipants;
|
|
2374
|
+
private _subscribeInputRouting;
|
|
2375
|
+
private _unsubscribeInputRouting;
|
|
2376
|
+
private _dispatchInput;
|
|
2377
|
+
private readonly _handleKeyDown;
|
|
2378
|
+
private readonly _handleKeyUp;
|
|
2379
|
+
private readonly _handlePointerEnter;
|
|
2380
|
+
private readonly _handlePointerLeave;
|
|
2381
|
+
private readonly _handlePointerDown;
|
|
2382
|
+
private readonly _handlePointerMove;
|
|
2383
|
+
private readonly _handlePointerUp;
|
|
2384
|
+
private readonly _handlePointerTap;
|
|
2385
|
+
private readonly _handlePointerSwipe;
|
|
2386
|
+
private readonly _handlePointerCancel;
|
|
2387
|
+
private readonly _handleMouseWheel;
|
|
2388
|
+
private _runWithTransition;
|
|
2389
|
+
private _advanceTransition;
|
|
2390
|
+
private _executeTransitionAction;
|
|
2391
|
+
private _finishTransition;
|
|
2392
|
+
private _getTransitionAlpha;
|
|
2393
|
+
private _renderTransitionOverlay;
|
|
2394
|
+
}
|
|
2395
|
+
}
|
|
2396
|
+
declare module "rendering/webgl2/WebGl2ShaderMappings" {
|
|
2397
|
+
export const webGl2PrimitiveByteSizeMapping: Record<number, number>;
|
|
2398
|
+
export const webGl2PrimitiveArrayConstructors: Record<number, Float32ArrayConstructor | Int32ArrayConstructor | Uint8ArrayConstructor>;
|
|
2399
|
+
export const webGl2PrimitiveTypeNames: Record<number, string>;
|
|
2400
|
+
}
|
|
2401
|
+
declare module "rendering/shader/ShaderAttribute" {
|
|
2402
|
+
export class ShaderAttribute {
|
|
2403
|
+
readonly index: number;
|
|
2404
|
+
readonly name: string;
|
|
2405
|
+
readonly type: number;
|
|
2406
|
+
readonly size: number;
|
|
2407
|
+
location: number;
|
|
2408
|
+
constructor(index: number, name: string, type: number);
|
|
2409
|
+
destroy(): void;
|
|
2410
|
+
}
|
|
2411
|
+
}
|
|
2412
|
+
declare module "rendering/webgl2/WebGl2RenderBuffer" {
|
|
2413
|
+
import type { BufferTypes, BufferUsage } from "rendering/types";
|
|
2414
|
+
import type { TypedArray } from "core/types";
|
|
2415
|
+
type DataContainer = ArrayBuffer | SharedArrayBuffer | ArrayBufferView | TypedArray;
|
|
2416
|
+
export interface WebGl2RenderBufferRuntime {
|
|
2417
|
+
bind(buffer: WebGl2RenderBuffer): void;
|
|
2418
|
+
upload(buffer: WebGl2RenderBuffer, offset: number): void;
|
|
2419
|
+
destroy(buffer: WebGl2RenderBuffer): void;
|
|
2420
|
+
}
|
|
2421
|
+
export class WebGl2RenderBuffer {
|
|
2422
|
+
private readonly _type;
|
|
2423
|
+
private readonly _usage;
|
|
2424
|
+
private _runtime;
|
|
2425
|
+
private _data;
|
|
2426
|
+
private _version;
|
|
2427
|
+
constructor(type: BufferTypes, data: DataContainer, usage: BufferUsage);
|
|
2428
|
+
get type(): number;
|
|
2429
|
+
get usage(): BufferUsage;
|
|
2430
|
+
get data(): DataContainer;
|
|
2431
|
+
get version(): number;
|
|
2432
|
+
connect(runtime: WebGl2RenderBufferRuntime): this;
|
|
2433
|
+
disconnect(): this;
|
|
2434
|
+
upload(data: DataContainer, offset?: number): void;
|
|
2435
|
+
bind(): void;
|
|
2436
|
+
destroy(): void;
|
|
2437
|
+
}
|
|
2438
|
+
}
|
|
2439
|
+
declare module "rendering/webgl2/WebGl2VertexArrayObject" {
|
|
2440
|
+
import { RenderingPrimitives } from "rendering/types";
|
|
2441
|
+
import type { ShaderAttribute } from "rendering/shader/ShaderAttribute";
|
|
2442
|
+
import type { WebGl2RenderBuffer } from "rendering/webgl2/WebGl2RenderBuffer";
|
|
2443
|
+
interface VaoAttribute {
|
|
2444
|
+
readonly buffer: WebGl2RenderBuffer;
|
|
2445
|
+
readonly location: number;
|
|
2446
|
+
readonly size: number;
|
|
2447
|
+
readonly type: number;
|
|
2448
|
+
readonly normalized: boolean;
|
|
2449
|
+
readonly stride: number;
|
|
2450
|
+
readonly start: number;
|
|
2451
|
+
}
|
|
2452
|
+
export interface WebGl2VertexArrayObjectRuntime {
|
|
2453
|
+
bind(vao: WebGl2VertexArrayObject): void;
|
|
2454
|
+
unbind(vao: WebGl2VertexArrayObject): void;
|
|
2455
|
+
draw(vao: WebGl2VertexArrayObject, size: number, start: number, type: RenderingPrimitives): void;
|
|
2456
|
+
destroy(vao: WebGl2VertexArrayObject): void;
|
|
2457
|
+
}
|
|
2458
|
+
export class WebGl2VertexArrayObject {
|
|
2459
|
+
private readonly _attributes;
|
|
2460
|
+
private _indexBuffer;
|
|
2461
|
+
private _drawMode;
|
|
2462
|
+
private _runtime;
|
|
2463
|
+
private _version;
|
|
2464
|
+
constructor(drawMode?: RenderingPrimitives);
|
|
2465
|
+
get attributes(): Array<VaoAttribute>;
|
|
2466
|
+
get indexBuffer(): WebGl2RenderBuffer | null;
|
|
2467
|
+
get drawMode(): RenderingPrimitives;
|
|
2468
|
+
get version(): number;
|
|
2469
|
+
connect(runtime: WebGl2VertexArrayObjectRuntime): this;
|
|
2470
|
+
disconnect(): this;
|
|
2471
|
+
bind(): this;
|
|
2472
|
+
unbind(): this;
|
|
2473
|
+
addAttribute(buffer: WebGl2RenderBuffer, attribute: ShaderAttribute, type?: number, normalized?: boolean, stride?: number, start?: number): this;
|
|
2474
|
+
addIndex(buffer: WebGl2RenderBuffer): this;
|
|
2475
|
+
clear(): this;
|
|
2476
|
+
draw(size: number, start: number, type?: RenderingPrimitives): this;
|
|
2477
|
+
destroy(): void;
|
|
2478
|
+
}
|
|
2479
|
+
}
|
|
2480
|
+
declare module "rendering/Renderer" {
|
|
2481
|
+
import type { RenderBackendType } from "rendering/RenderBackendType";
|
|
2482
|
+
import type { Drawable } from "rendering/Drawable";
|
|
2483
|
+
import type { SceneRenderRuntime } from "rendering/SceneRenderRuntime";
|
|
2484
|
+
export interface Renderer<Runtime extends SceneRenderRuntime = SceneRenderRuntime, Target extends Drawable = Drawable> {
|
|
2485
|
+
readonly backendType: RenderBackendType;
|
|
2486
|
+
connect(runtime: Runtime): void;
|
|
2487
|
+
disconnect(): void;
|
|
2488
|
+
render(drawable: Target): void;
|
|
2489
|
+
flush(): void;
|
|
2490
|
+
}
|
|
2491
|
+
/**
|
|
2492
|
+
* Constructor type used as a registry key for drawable-to-renderer mapping.
|
|
2493
|
+
* Supports both concrete and abstract drawable classes.
|
|
2494
|
+
*/
|
|
2495
|
+
export type DrawableConstructor<Target extends Drawable = Drawable> = abstract new (...args: Array<never>) => Target;
|
|
2496
|
+
}
|
|
2497
|
+
declare module "rendering/shader/ShaderUniform" {
|
|
2498
|
+
import type { TypedArray } from "core/types";
|
|
2499
|
+
export class ShaderUniform {
|
|
2500
|
+
readonly index: number;
|
|
2501
|
+
readonly type: number;
|
|
2502
|
+
readonly size: number;
|
|
2503
|
+
readonly name: string;
|
|
2504
|
+
private readonly _value;
|
|
2505
|
+
private _dirty;
|
|
2506
|
+
constructor(index: number, type: number, size: number, name: string, data: TypedArray);
|
|
2507
|
+
get propName(): string;
|
|
2508
|
+
get value(): TypedArray;
|
|
2509
|
+
get dirty(): boolean;
|
|
2510
|
+
setValue(value: TypedArray): this;
|
|
2511
|
+
markClean(): void;
|
|
2512
|
+
destroy(): void;
|
|
2513
|
+
}
|
|
2514
|
+
}
|
|
2515
|
+
declare module "rendering/shader/Shader" {
|
|
2516
|
+
import type { ShaderAttribute } from "rendering/shader/ShaderAttribute";
|
|
2517
|
+
import type { ShaderUniform } from "rendering/shader/ShaderUniform";
|
|
2518
|
+
export interface ShaderRuntime {
|
|
2519
|
+
initialize(shader: Shader): void;
|
|
2520
|
+
bind(shader: Shader): void;
|
|
2521
|
+
unbind(shader: Shader): void;
|
|
2522
|
+
sync(shader: Shader): void;
|
|
2523
|
+
destroy(shader: Shader): void;
|
|
2524
|
+
}
|
|
2525
|
+
export class Shader {
|
|
2526
|
+
readonly attributes: Map<string, ShaderAttribute>;
|
|
2527
|
+
readonly uniforms: Map<string, ShaderUniform>;
|
|
2528
|
+
private readonly _vertexSource;
|
|
2529
|
+
private readonly _fragmentSource;
|
|
2530
|
+
private _runtime;
|
|
2531
|
+
constructor(vertexSource: string, fragmentSource: string);
|
|
2532
|
+
get vertexSource(): string;
|
|
2533
|
+
get fragmentSource(): string;
|
|
2534
|
+
connect(runtime: ShaderRuntime): this;
|
|
2535
|
+
disconnect(): this;
|
|
2536
|
+
bind(): this;
|
|
2537
|
+
unbind(): this;
|
|
2538
|
+
sync(): this;
|
|
2539
|
+
getAttribute(name: string): ShaderAttribute;
|
|
2540
|
+
getUniform(name: string): ShaderUniform;
|
|
2541
|
+
destroy(): void;
|
|
2542
|
+
}
|
|
2543
|
+
}
|
|
2544
|
+
declare module "rendering/webgl2/WebGl2RendererRuntime" {
|
|
2545
|
+
import type { BlendModes } from "rendering/types";
|
|
2546
|
+
import type { RenderBackendType } from "rendering/RenderBackendType";
|
|
2547
|
+
import type { SceneRenderRuntime } from "rendering/SceneRenderRuntime";
|
|
2548
|
+
import type { Shader } from "rendering/shader/Shader";
|
|
2549
|
+
import type { WebGl2VertexArrayObject } from "rendering/webgl2/WebGl2VertexArrayObject";
|
|
2550
|
+
import type { Texture } from "rendering/texture/Texture";
|
|
2551
|
+
import type { RenderTexture } from "rendering/texture/RenderTexture";
|
|
2552
|
+
export interface WebGl2RendererRuntime extends SceneRenderRuntime {
|
|
2553
|
+
readonly backendType: RenderBackendType.WebGl2;
|
|
2554
|
+
readonly context: WebGL2RenderingContext;
|
|
2555
|
+
bindShader(shader: Shader | null): this;
|
|
2556
|
+
bindVertexArrayObject(vao: WebGl2VertexArrayObject | null): this;
|
|
2557
|
+
bindTexture(texture: Texture | RenderTexture | null, unit?: number): this;
|
|
2558
|
+
setBlendMode(blendMode: BlendModes | null): this;
|
|
2559
|
+
}
|
|
2560
|
+
}
|
|
2561
|
+
declare module "rendering/webgl2/AbstractWebGl2Renderer" {
|
|
2562
|
+
import { RenderBackendType } from "rendering/RenderBackendType";
|
|
2563
|
+
import type { Drawable } from "rendering/Drawable";
|
|
2564
|
+
import type { Renderer } from "rendering/Renderer";
|
|
2565
|
+
import type { WebGl2RendererRuntime } from "rendering/webgl2/WebGl2RendererRuntime";
|
|
2566
|
+
/**
|
|
2567
|
+
* Base class for WebGL2 renderers.
|
|
2568
|
+
*
|
|
2569
|
+
* Manages the connect/disconnect lifecycle and provides a safe
|
|
2570
|
+
* `getRuntime()` accessor that throws if the renderer is not connected.
|
|
2571
|
+
*
|
|
2572
|
+
* Subclasses must implement:
|
|
2573
|
+
* - onConnect(runtime): set up GL resources
|
|
2574
|
+
* - onDisconnect(): tear down GL resources
|
|
2575
|
+
* - render(drawable): batch or immediately draw the given drawable
|
|
2576
|
+
* - flush(): submit any batched draw calls to the GPU
|
|
2577
|
+
*/
|
|
2578
|
+
export abstract class AbstractWebGl2Renderer<Target extends Drawable> implements Renderer<WebGl2RendererRuntime, Target> {
|
|
2579
|
+
readonly backendType = RenderBackendType.WebGl2;
|
|
2580
|
+
private _runtime;
|
|
2581
|
+
connect(runtime: WebGl2RendererRuntime): void;
|
|
2582
|
+
disconnect(): void;
|
|
2583
|
+
abstract render(drawable: Target): void;
|
|
2584
|
+
abstract flush(): void;
|
|
2585
|
+
/**
|
|
2586
|
+
* Called once when the renderer is first connected to a runtime.
|
|
2587
|
+
* Subclasses create GL resources here.
|
|
2588
|
+
*/
|
|
2589
|
+
protected abstract onConnect(runtime: WebGl2RendererRuntime): void;
|
|
2590
|
+
/**
|
|
2591
|
+
* Called when the renderer is disconnected from its runtime.
|
|
2592
|
+
* Subclasses tear down GL resources here.
|
|
2593
|
+
*/
|
|
2594
|
+
protected abstract onDisconnect(): void;
|
|
2595
|
+
/**
|
|
2596
|
+
* Safe accessor for the connected runtime.
|
|
2597
|
+
* @throws Error if the renderer is not connected.
|
|
2598
|
+
*/
|
|
2599
|
+
protected getRuntime(): WebGl2RendererRuntime;
|
|
2600
|
+
/**
|
|
2601
|
+
* Returns the connected runtime, or null if not connected.
|
|
2602
|
+
* Use this for conditional checks where disconnected state is expected.
|
|
2603
|
+
*/
|
|
2604
|
+
protected getRuntimeOrNull(): WebGl2RendererRuntime | null;
|
|
2605
|
+
}
|
|
2606
|
+
}
|
|
2607
|
+
declare module "rendering/webgl2/WebGl2ShaderBlock" {
|
|
2608
|
+
import { ShaderUniform } from "rendering/shader/ShaderUniform";
|
|
2609
|
+
export class WebGl2ShaderBlock {
|
|
2610
|
+
readonly index: number;
|
|
2611
|
+
readonly name: string;
|
|
2612
|
+
readonly binding: number;
|
|
2613
|
+
readonly dataSize: number;
|
|
2614
|
+
private readonly _context;
|
|
2615
|
+
private readonly _program;
|
|
2616
|
+
private readonly _blockData;
|
|
2617
|
+
private readonly _uniformBuffer;
|
|
2618
|
+
private readonly _uniforms;
|
|
2619
|
+
constructor(gl: WebGL2RenderingContext, program: WebGLProgram, index: number);
|
|
2620
|
+
getUniform(name: string): ShaderUniform;
|
|
2621
|
+
upload(): void;
|
|
2622
|
+
destroy(): void;
|
|
2623
|
+
private _extractUniforms;
|
|
2624
|
+
}
|
|
2625
|
+
}
|
|
2626
|
+
declare module "rendering/webgl2/WebGl2ShaderRuntime" {
|
|
2627
|
+
import type { ShaderRuntime } from "rendering/shader/Shader";
|
|
2628
|
+
export function createWebGl2ShaderRuntime(gl: WebGL2RenderingContext): ShaderRuntime;
|
|
2629
|
+
}
|
|
2630
|
+
declare module "rendering/webgl2/AbstractWebGl2BatchedRenderer" {
|
|
2631
|
+
import { AbstractWebGl2Renderer } from "rendering/webgl2/AbstractWebGl2Renderer";
|
|
2632
|
+
import { Shader } from "rendering/shader/Shader";
|
|
2633
|
+
import type { WebGl2VertexArrayObject, WebGl2VertexArrayObjectRuntime } from "rendering/webgl2/WebGl2VertexArrayObject";
|
|
2634
|
+
import { WebGl2RenderBuffer, type WebGl2RenderBufferRuntime } from "rendering/webgl2/WebGl2RenderBuffer";
|
|
2635
|
+
import type { Texture } from "rendering/texture/Texture";
|
|
2636
|
+
import type { BlendModes } from "rendering/types";
|
|
2637
|
+
import type { View } from "rendering/View";
|
|
2638
|
+
import type { WebGl2RendererRuntime } from "rendering/webgl2/WebGl2RendererRuntime";
|
|
2639
|
+
import type { RenderTexture } from "rendering/texture/RenderTexture";
|
|
2640
|
+
import type { Drawable } from "rendering/Drawable";
|
|
2641
|
+
interface ManagedBufferState {
|
|
2642
|
+
readonly handle: WebGLBuffer;
|
|
2643
|
+
dataByteLength: number;
|
|
2644
|
+
}
|
|
2645
|
+
interface RendererConnection {
|
|
2646
|
+
readonly gl: WebGL2RenderingContext;
|
|
2647
|
+
readonly buffers: Map<WebGl2RenderBuffer, ManagedBufferState>;
|
|
2648
|
+
readonly vaoHandle: WebGLVertexArrayObject;
|
|
2649
|
+
}
|
|
2650
|
+
export abstract class AbstractWebGl2BatchedRenderer extends AbstractWebGl2Renderer<Drawable> {
|
|
2651
|
+
protected readonly attributeCount: number;
|
|
2652
|
+
protected readonly batchSize: number;
|
|
2653
|
+
protected readonly indexData: Uint16Array;
|
|
2654
|
+
protected readonly vertexData: ArrayBuffer;
|
|
2655
|
+
protected readonly float32View: Float32Array;
|
|
2656
|
+
protected readonly uint32View: Uint32Array;
|
|
2657
|
+
protected readonly shader: Shader;
|
|
2658
|
+
protected batchIndex: number;
|
|
2659
|
+
protected currentTexture: Texture | RenderTexture | null;
|
|
2660
|
+
protected currentBlendMode: BlendModes | null;
|
|
2661
|
+
protected currentView: View | null;
|
|
2662
|
+
protected currentViewId: number;
|
|
2663
|
+
protected vao: WebGl2VertexArrayObject | null;
|
|
2664
|
+
protected indexBuffer: WebGl2RenderBuffer | null;
|
|
2665
|
+
protected vertexBuffer: WebGl2RenderBuffer | null;
|
|
2666
|
+
protected connection: RendererConnection | null;
|
|
2667
|
+
protected constructor(batchSize: number, attributeCount: number, vertexSource: string, fragmentSource: string);
|
|
2668
|
+
flush(): void;
|
|
2669
|
+
destroy(): void;
|
|
2670
|
+
protected onConnect(runtime: WebGl2RendererRuntime): void;
|
|
2671
|
+
protected onDisconnect(): void;
|
|
2672
|
+
abstract render(drawable: Drawable): void;
|
|
2673
|
+
protected abstract createVao(gl: WebGL2RenderingContext, indexBuffer: WebGl2RenderBuffer, vertexBuffer: WebGl2RenderBuffer): WebGl2VertexArrayObject;
|
|
2674
|
+
protected abstract updateView(view: View): void;
|
|
2675
|
+
protected createConnection(gl: WebGL2RenderingContext): RendererConnection;
|
|
2676
|
+
protected createBufferRuntime(connection: RendererConnection): WebGl2RenderBufferRuntime;
|
|
2677
|
+
protected createVaoRuntime(connection: RendererConnection): WebGl2VertexArrayObjectRuntime;
|
|
2678
|
+
}
|
|
2679
|
+
}
|
|
2680
|
+
declare module "rendering/webgl2/WebGl2SpriteRenderer" {
|
|
2681
|
+
import { WebGl2VertexArrayObject } from "rendering/webgl2/WebGl2VertexArrayObject";
|
|
2682
|
+
import type { WebGl2RenderBuffer } from "rendering/webgl2/WebGl2RenderBuffer";
|
|
2683
|
+
import type { Sprite } from "rendering/sprite/Sprite";
|
|
2684
|
+
import { AbstractWebGl2BatchedRenderer } from "rendering/webgl2/AbstractWebGl2BatchedRenderer";
|
|
2685
|
+
import type { View } from "rendering/View";
|
|
2686
|
+
export class WebGl2SpriteRenderer extends AbstractWebGl2BatchedRenderer {
|
|
2687
|
+
constructor(batchSize: number);
|
|
2688
|
+
render(sprite: Sprite): this;
|
|
2689
|
+
protected createVao(gl: WebGL2RenderingContext, indexBuffer: WebGl2RenderBuffer, vertexBuffer: WebGl2RenderBuffer): WebGl2VertexArrayObject;
|
|
2690
|
+
protected updateView(view: View): this;
|
|
2691
|
+
}
|
|
2692
|
+
}
|
|
2693
|
+
declare module "particles/ParticleProperties" {
|
|
2694
|
+
import type { Time } from "core/Time";
|
|
2695
|
+
import type { Vector } from "math/Vector";
|
|
2696
|
+
import type { Color } from "core/Color";
|
|
2697
|
+
export interface ParticleProperties {
|
|
2698
|
+
totalLifetime: Time;
|
|
2699
|
+
elapsedLifetime: Time;
|
|
2700
|
+
position: Vector;
|
|
2701
|
+
velocity: Vector;
|
|
2702
|
+
scale: Vector;
|
|
2703
|
+
rotation: number;
|
|
2704
|
+
rotationSpeed: number;
|
|
2705
|
+
textureIndex: number;
|
|
2706
|
+
tint: Color;
|
|
2707
|
+
}
|
|
2708
|
+
}
|
|
2709
|
+
declare module "particles/emitters/ParticleOptions" {
|
|
2710
|
+
import { Vector } from "math/Vector";
|
|
2711
|
+
import { Color } from "core/Color";
|
|
2712
|
+
import { Time } from "core/Time";
|
|
2713
|
+
import type { ParticleProperties } from "particles/ParticleProperties";
|
|
2714
|
+
export class ParticleOptions implements ParticleProperties {
|
|
2715
|
+
private readonly _totalLifetime;
|
|
2716
|
+
private readonly _elapsedLifetime;
|
|
2717
|
+
private readonly _position;
|
|
2718
|
+
private readonly _velocity;
|
|
2719
|
+
private readonly _scale;
|
|
2720
|
+
private readonly _tint;
|
|
2721
|
+
private _rotation;
|
|
2722
|
+
private _rotationSpeed;
|
|
2723
|
+
private _textureIndex;
|
|
2724
|
+
constructor(options?: Partial<ParticleProperties>);
|
|
2725
|
+
get totalLifetime(): Time;
|
|
2726
|
+
set totalLifetime(totalLifetime: Time);
|
|
2727
|
+
get elapsedLifetime(): Time;
|
|
2728
|
+
set elapsedLifetime(elapsedLifetime: Time);
|
|
2729
|
+
get position(): Vector;
|
|
2730
|
+
set position(position: Vector);
|
|
2731
|
+
get velocity(): Vector;
|
|
2732
|
+
set velocity(velocity: Vector);
|
|
2733
|
+
get scale(): Vector;
|
|
2734
|
+
set scale(scale: Vector);
|
|
2735
|
+
get rotation(): number;
|
|
2736
|
+
set rotation(degrees: number);
|
|
2737
|
+
get rotationSpeed(): number;
|
|
2738
|
+
set rotationSpeed(rotationSpeed: number);
|
|
2739
|
+
get textureIndex(): number;
|
|
2740
|
+
set textureIndex(textureIndex: number);
|
|
2741
|
+
get tint(): Color;
|
|
2742
|
+
set tint(color: Color);
|
|
2743
|
+
destroy(): void;
|
|
2744
|
+
}
|
|
2745
|
+
}
|
|
2746
|
+
declare module "particles/Particle" {
|
|
2747
|
+
import { Vector } from "math/Vector";
|
|
2748
|
+
import { Color } from "core/Color";
|
|
2749
|
+
import { Time } from "core/Time";
|
|
2750
|
+
import type { ParticleOptions } from "particles/emitters/ParticleOptions";
|
|
2751
|
+
import type { ParticleProperties } from "particles/ParticleProperties";
|
|
2752
|
+
export class Particle implements ParticleProperties {
|
|
2753
|
+
private _totalLifetime;
|
|
2754
|
+
private _elapsedLifetime;
|
|
2755
|
+
private _position;
|
|
2756
|
+
private _velocity;
|
|
2757
|
+
private _scale;
|
|
2758
|
+
private _rotation;
|
|
2759
|
+
private _rotationSpeed;
|
|
2760
|
+
private _textureIndex;
|
|
2761
|
+
private _tint;
|
|
2762
|
+
get totalLifetime(): Time;
|
|
2763
|
+
set totalLifetime(totalLifetime: Time);
|
|
2764
|
+
get elapsedLifetime(): Time;
|
|
2765
|
+
set elapsedLifetime(elapsedLifetime: Time);
|
|
2766
|
+
get position(): Vector;
|
|
2767
|
+
set position(position: Vector);
|
|
2768
|
+
get velocity(): Vector;
|
|
2769
|
+
set velocity(velocity: Vector);
|
|
2770
|
+
get scale(): Vector;
|
|
2771
|
+
set scale(scale: Vector);
|
|
2772
|
+
get tint(): Color;
|
|
2773
|
+
set tint(tint: Color);
|
|
2774
|
+
get rotation(): number;
|
|
2775
|
+
set rotation(degrees: number);
|
|
2776
|
+
get rotationSpeed(): number;
|
|
2777
|
+
set rotationSpeed(rotationSpeed: number);
|
|
2778
|
+
get textureIndex(): number;
|
|
2779
|
+
set textureIndex(textureIndex: number);
|
|
2780
|
+
get remainingLifetime(): Time;
|
|
2781
|
+
get elapsedRatio(): number;
|
|
2782
|
+
get remainingRatio(): number;
|
|
2783
|
+
get expired(): boolean;
|
|
2784
|
+
applyOptions(options: ParticleOptions): this;
|
|
2785
|
+
destroy(): void;
|
|
2786
|
+
}
|
|
2787
|
+
}
|
|
2788
|
+
declare module "particles/emitters/ParticleEmitter" {
|
|
2789
|
+
import type { Time } from "core/Time";
|
|
2790
|
+
import type { ParticleSystem } from "particles/ParticleSystem";
|
|
2791
|
+
export interface ParticleEmitter {
|
|
2792
|
+
apply(system: ParticleSystem, delta: Time): this;
|
|
2793
|
+
destroy(): void;
|
|
2794
|
+
}
|
|
2795
|
+
}
|
|
2796
|
+
declare module "particles/affectors/ParticleAffector" {
|
|
2797
|
+
import type { Particle } from "particles/Particle";
|
|
2798
|
+
import type { Time } from "core/Time";
|
|
2799
|
+
export interface ParticleAffector {
|
|
2800
|
+
apply(particle: Particle, delta: Time): this;
|
|
2801
|
+
destroy(): void;
|
|
2802
|
+
}
|
|
2803
|
+
}
|
|
2804
|
+
declare module "particles/ParticleSystem" {
|
|
2805
|
+
import { Particle } from "particles/Particle";
|
|
2806
|
+
import { Rectangle } from "math/Rectangle";
|
|
2807
|
+
import type { Time } from "core/Time";
|
|
2808
|
+
import { Drawable } from "rendering/Drawable";
|
|
2809
|
+
import type { Texture } from "rendering/texture/Texture";
|
|
2810
|
+
import type { ParticleEmitter } from "particles/emitters/ParticleEmitter";
|
|
2811
|
+
import type { ParticleAffector } from "particles/affectors/ParticleAffector";
|
|
2812
|
+
export class ParticleSystem extends Drawable {
|
|
2813
|
+
private _emitters;
|
|
2814
|
+
private _affectors;
|
|
2815
|
+
private _particles;
|
|
2816
|
+
private _graveyard;
|
|
2817
|
+
private _texture;
|
|
2818
|
+
private _textureFrame;
|
|
2819
|
+
private _vertices;
|
|
2820
|
+
private _texCoords;
|
|
2821
|
+
private _updateTexCoords;
|
|
2822
|
+
private _updateVertices;
|
|
2823
|
+
constructor(texture: Texture);
|
|
2824
|
+
get texture(): Texture;
|
|
2825
|
+
set texture(texture: Texture);
|
|
2826
|
+
get textureFrame(): Rectangle;
|
|
2827
|
+
set textureFrame(frame: Rectangle);
|
|
2828
|
+
get vertices(): Float32Array;
|
|
2829
|
+
get texCoords(): Uint32Array;
|
|
2830
|
+
get emitters(): Array<ParticleEmitter>;
|
|
2831
|
+
get affectors(): Array<ParticleAffector>;
|
|
2832
|
+
get particles(): Array<Particle>;
|
|
2833
|
+
get graveyard(): Array<Particle>;
|
|
2834
|
+
setTexture(texture: Texture): this;
|
|
2835
|
+
setTextureFrame(frame: Rectangle): this;
|
|
2836
|
+
resetTextureFrame(): this;
|
|
2837
|
+
addEmitter(emitter: ParticleEmitter): this;
|
|
2838
|
+
clearEmitters(): this;
|
|
2839
|
+
addAffector(affector: ParticleAffector): this;
|
|
2840
|
+
clearAffectors(): this;
|
|
2841
|
+
requestParticle(): Particle;
|
|
2842
|
+
emitParticle(particle: Particle): this;
|
|
2843
|
+
updateParticle(particle: Particle, delta: Time): this;
|
|
2844
|
+
clearParticles(): this;
|
|
2845
|
+
update(delta: Time): this;
|
|
2846
|
+
destroy(): void;
|
|
2847
|
+
}
|
|
2848
|
+
}
|
|
2849
|
+
declare module "rendering/webgl2/WebGl2ParticleRenderer" {
|
|
2850
|
+
import type { WebGl2RenderBuffer } from "rendering/webgl2/WebGl2RenderBuffer";
|
|
2851
|
+
import { WebGl2VertexArrayObject } from "rendering/webgl2/WebGl2VertexArrayObject";
|
|
2852
|
+
import type { ParticleSystem } from "particles/ParticleSystem";
|
|
2853
|
+
import { AbstractWebGl2BatchedRenderer } from "rendering/webgl2/AbstractWebGl2BatchedRenderer";
|
|
2854
|
+
import type { View } from "rendering/View";
|
|
2855
|
+
export class WebGl2ParticleRenderer extends AbstractWebGl2BatchedRenderer {
|
|
2856
|
+
constructor(batchSize: number);
|
|
2857
|
+
render(system: ParticleSystem): this;
|
|
2858
|
+
protected createVao(gl: WebGL2RenderingContext, indexBuffer: WebGl2RenderBuffer, vertexBuffer: WebGl2RenderBuffer): WebGl2VertexArrayObject;
|
|
2859
|
+
protected updateView(view: View): this;
|
|
2860
|
+
}
|
|
2861
|
+
}
|
|
2862
|
+
declare module "rendering/webgl2/WebGl2PrimitiveRenderer" {
|
|
2863
|
+
import { AbstractWebGl2Renderer } from "rendering/webgl2/AbstractWebGl2Renderer";
|
|
2864
|
+
import type { DrawableShape } from "rendering/primitives/DrawableShape";
|
|
2865
|
+
import type { WebGl2RendererRuntime } from "rendering/webgl2/WebGl2RendererRuntime";
|
|
2866
|
+
export class WebGl2PrimitiveRenderer extends AbstractWebGl2Renderer<DrawableShape> {
|
|
2867
|
+
private _vertexCapacity;
|
|
2868
|
+
private _indexCapacity;
|
|
2869
|
+
private _vertexData;
|
|
2870
|
+
private _indexData;
|
|
2871
|
+
private _float32View;
|
|
2872
|
+
private _uint32View;
|
|
2873
|
+
private _shader;
|
|
2874
|
+
private _connection;
|
|
2875
|
+
private _currentBlendMode;
|
|
2876
|
+
private _currentView;
|
|
2877
|
+
private _viewId;
|
|
2878
|
+
constructor(batchSize: number);
|
|
2879
|
+
render(shape: DrawableShape): void;
|
|
2880
|
+
flush(): void;
|
|
2881
|
+
destroy(): void;
|
|
2882
|
+
protected onConnect(runtime: WebGl2RendererRuntime): void;
|
|
2883
|
+
protected onDisconnect(): void;
|
|
2884
|
+
private _ensureVertexCapacity;
|
|
2885
|
+
private _ensureIndexCapacity;
|
|
2886
|
+
private _createBufferRuntime;
|
|
2887
|
+
private _createVaoRuntime;
|
|
2888
|
+
}
|
|
2889
|
+
}
|
|
2890
|
+
declare module "rendering/RendererRegistry" {
|
|
2891
|
+
import type { Drawable } from "rendering/Drawable";
|
|
2892
|
+
import type { SceneRenderRuntime } from "rendering/SceneRenderRuntime";
|
|
2893
|
+
import type { Renderer, DrawableConstructor } from "rendering/Renderer";
|
|
2894
|
+
/**
|
|
2895
|
+
* Instance-based renderer registry.
|
|
2896
|
+
*
|
|
2897
|
+
* Maps drawable constructors to renderer instances. Each drawable type
|
|
2898
|
+
* has exactly one renderer. The registry manages connect/disconnect
|
|
2899
|
+
* lifecycle for all registered renderers.
|
|
2900
|
+
*
|
|
2901
|
+
* Resolution walks the prototype chain so sprite-backed subclasses such
|
|
2902
|
+
* as Text and Video can intentionally reuse the Sprite renderer.
|
|
2903
|
+
*
|
|
2904
|
+
* Used internally by backend managers. Exposed publicly for advanced
|
|
2905
|
+
* custom renderer registration.
|
|
2906
|
+
*/
|
|
2907
|
+
export class RendererRegistry<Runtime extends SceneRenderRuntime> {
|
|
2908
|
+
private readonly _renderers;
|
|
2909
|
+
private _runtime;
|
|
2910
|
+
/**
|
|
2911
|
+
* Register a renderer for a specific drawable type.
|
|
2912
|
+
*
|
|
2913
|
+
* If the registry is already connected to a runtime, the renderer
|
|
2914
|
+
* is connected immediately. Registration must happen before the
|
|
2915
|
+
* first draw call for the given drawable type.
|
|
2916
|
+
*
|
|
2917
|
+
* @throws Error if a renderer is already registered for this drawable type.
|
|
2918
|
+
*/
|
|
2919
|
+
registerRenderer<Target extends Drawable>(drawableType: DrawableConstructor<Target>, renderer: Renderer<Runtime, Target>): void;
|
|
2920
|
+
resolve(drawable: Drawable): Renderer<Runtime, Drawable>;
|
|
2921
|
+
/**
|
|
2922
|
+
* Connect all registered renderers to the given runtime.
|
|
2923
|
+
*/
|
|
2924
|
+
connect(runtime: Runtime): void;
|
|
2925
|
+
/**
|
|
2926
|
+
* Disconnect all registered renderers from the current runtime.
|
|
2927
|
+
*/
|
|
2928
|
+
disconnect(): void;
|
|
2929
|
+
/**
|
|
2930
|
+
* Disconnect all registered renderers and clear the registry.
|
|
2931
|
+
*/
|
|
2932
|
+
destroy(): void;
|
|
2933
|
+
}
|
|
2934
|
+
}
|
|
2935
|
+
declare module "rendering/webgl2/WebGl2RenderManager" {
|
|
2936
|
+
import { BlendModes } from "rendering/types";
|
|
2937
|
+
import { RenderTarget } from "rendering/RenderTarget";
|
|
2938
|
+
import { Color } from "core/Color";
|
|
2939
|
+
import { Texture } from "rendering/texture/Texture";
|
|
2940
|
+
import { RenderTexture } from "rendering/texture/RenderTexture";
|
|
2941
|
+
import { RenderBackendType } from "rendering/RenderBackendType";
|
|
2942
|
+
import { RendererRegistry } from "rendering/RendererRegistry";
|
|
2943
|
+
import type { Rectangle } from "math/Rectangle";
|
|
2944
|
+
import type { RenderPass } from "rendering/RenderPass";
|
|
2945
|
+
import type { Drawable } from "rendering/Drawable";
|
|
2946
|
+
import type { WebGl2RendererRuntime } from "rendering/webgl2/WebGl2RendererRuntime";
|
|
2947
|
+
import type { Shader } from "rendering/shader/Shader";
|
|
2948
|
+
import type { WebGl2VertexArrayObject } from "rendering/webgl2/WebGl2VertexArrayObject";
|
|
2949
|
+
import type { View } from "rendering/View";
|
|
2950
|
+
import type { Application } from "core/Application";
|
|
2951
|
+
import type { RenderStats } from "rendering/RenderStats";
|
|
2952
|
+
export class WebGl2RenderManager implements WebGl2RendererRuntime {
|
|
2953
|
+
readonly backendType = RenderBackendType.WebGl2;
|
|
2954
|
+
readonly rendererRegistry: RendererRegistry<WebGl2RendererRuntime>;
|
|
2955
|
+
private readonly _context;
|
|
2956
|
+
private readonly _rootRenderTarget;
|
|
2957
|
+
private readonly _onContextLostHandler;
|
|
2958
|
+
private readonly _onContextRestoredHandler;
|
|
2959
|
+
private readonly _textureStates;
|
|
2960
|
+
private readonly _renderTargetStates;
|
|
2961
|
+
private readonly _textureDestroyHandlers;
|
|
2962
|
+
private readonly _renderTargetDestroyHandlers;
|
|
2963
|
+
private readonly _temporaryRenderTextures;
|
|
2964
|
+
private readonly _maskStack;
|
|
2965
|
+
private readonly _maskPixelStack;
|
|
2966
|
+
private readonly _maskPointA;
|
|
2967
|
+
private readonly _maskPointB;
|
|
2968
|
+
private _canvas;
|
|
2969
|
+
private _contextLost;
|
|
2970
|
+
private _renderTarget;
|
|
2971
|
+
private _renderer;
|
|
2972
|
+
private _shader;
|
|
2973
|
+
private _blendMode;
|
|
2974
|
+
private _texture;
|
|
2975
|
+
private _textureUnit;
|
|
2976
|
+
private _vao;
|
|
2977
|
+
private _clearColor;
|
|
2978
|
+
private _cursor;
|
|
2979
|
+
private _boundFramebuffer;
|
|
2980
|
+
private readonly _stats;
|
|
2981
|
+
constructor(app: Application);
|
|
2982
|
+
get context(): WebGL2RenderingContext;
|
|
2983
|
+
get renderTarget(): RenderTarget;
|
|
2984
|
+
get view(): View;
|
|
2985
|
+
get clearColor(): Color;
|
|
2986
|
+
get cursor(): string;
|
|
2987
|
+
get stats(): RenderStats;
|
|
2988
|
+
initialize(): Promise<this>;
|
|
2989
|
+
resetStats(): this;
|
|
2990
|
+
draw(drawable: Drawable): this;
|
|
2991
|
+
execute(pass: RenderPass): this;
|
|
2992
|
+
setRenderTarget(target: RenderTarget | null): this;
|
|
2993
|
+
pushMask(maskBounds: Rectangle): this;
|
|
2994
|
+
popMask(): this;
|
|
2995
|
+
acquireRenderTexture(width: number, height: number): RenderTexture;
|
|
2996
|
+
releaseRenderTexture(texture: RenderTexture): this;
|
|
2997
|
+
setView(view: View | null): this;
|
|
2998
|
+
bindVertexArrayObject(vao: WebGl2VertexArrayObject | null): this;
|
|
2999
|
+
bindShader(shader: Shader | null): this;
|
|
3000
|
+
bindTexture(texture: Texture | RenderTexture | null, unit?: number): this;
|
|
3001
|
+
setBlendMode(blendMode: BlendModes | null): this;
|
|
3002
|
+
private _setTextureUnit;
|
|
3003
|
+
setClearColor(color: Color): this;
|
|
3004
|
+
setCursor(cursor: string | Texture | HTMLImageElement | HTMLCanvasElement): this;
|
|
3005
|
+
clear(color?: Color): this;
|
|
3006
|
+
resize(width: number, height: number): this;
|
|
3007
|
+
flush(): this;
|
|
3008
|
+
destroy(): void;
|
|
3009
|
+
private _createContext;
|
|
3010
|
+
private _restoreContext;
|
|
3011
|
+
private _setupContext;
|
|
3012
|
+
private _addEvents;
|
|
3013
|
+
private _removeEvents;
|
|
3014
|
+
private _onContextLost;
|
|
3015
|
+
private _onContextRestored;
|
|
3016
|
+
private _createFramebuffer;
|
|
3017
|
+
private _createTextureHandle;
|
|
3018
|
+
private _destroyManagedResources;
|
|
3019
|
+
private _destroyTemporaryRenderTextures;
|
|
3020
|
+
private _getRenderTargetState;
|
|
3021
|
+
private _getTextureState;
|
|
3022
|
+
private _subscribeToDestroy;
|
|
3023
|
+
private _unsubscribeFromDestroy;
|
|
3024
|
+
private _evictRenderTarget;
|
|
3025
|
+
private _evictTexture;
|
|
3026
|
+
private _bindRenderTarget;
|
|
3027
|
+
private _setActiveRenderer;
|
|
3028
|
+
private _flushActiveRenderer;
|
|
3029
|
+
private _prepareRenderTarget;
|
|
3030
|
+
private _syncTexture;
|
|
3031
|
+
private _toMaskPixels;
|
|
3032
|
+
private _intersectMasks;
|
|
3033
|
+
private _applyMaskState;
|
|
3034
|
+
}
|
|
3035
|
+
}
|
|
3036
|
+
declare module "rendering/webgpu/WebGpuRendererRuntime" {
|
|
3037
|
+
import type { RenderBackendType } from "rendering/RenderBackendType";
|
|
3038
|
+
import type { SceneRenderRuntime } from "rendering/SceneRenderRuntime";
|
|
3039
|
+
export interface WebGpuRendererRuntime extends SceneRenderRuntime {
|
|
3040
|
+
readonly backendType: RenderBackendType.WebGpu;
|
|
3041
|
+
readonly device: GPUDevice;
|
|
3042
|
+
readonly context: GPUCanvasContext;
|
|
3043
|
+
readonly format: GPUTextureFormat;
|
|
3044
|
+
}
|
|
3045
|
+
}
|
|
3046
|
+
declare module "rendering/webgpu/AbstractWebGpuRenderer" {
|
|
3047
|
+
import { RenderBackendType } from "rendering/RenderBackendType";
|
|
3048
|
+
import type { Drawable } from "rendering/Drawable";
|
|
3049
|
+
import type { Renderer } from "rendering/Renderer";
|
|
3050
|
+
import type { WebGpuRendererRuntime } from "rendering/webgpu/WebGpuRendererRuntime";
|
|
3051
|
+
/**
|
|
3052
|
+
* Base class for WebGPU renderers.
|
|
3053
|
+
*
|
|
3054
|
+
* Manages the connect/disconnect lifecycle and provides a safe
|
|
3055
|
+
* `getRuntime()` accessor that throws if the renderer is not connected.
|
|
3056
|
+
*
|
|
3057
|
+
* Subclasses must implement:
|
|
3058
|
+
* - onConnect(runtime): set up GPU resources (shader modules, pipelines, buffers)
|
|
3059
|
+
* - onDisconnect(): tear down GPU resources
|
|
3060
|
+
* - render(drawable): collect draw call data for the given drawable
|
|
3061
|
+
* - flush(): encode and submit command buffers for all collected draw calls
|
|
3062
|
+
*/
|
|
3063
|
+
export abstract class AbstractWebGpuRenderer<Target extends Drawable> implements Renderer<WebGpuRendererRuntime, Target> {
|
|
3064
|
+
readonly backendType = RenderBackendType.WebGpu;
|
|
3065
|
+
private _runtime;
|
|
3066
|
+
connect(runtime: WebGpuRendererRuntime): void;
|
|
3067
|
+
disconnect(): void;
|
|
3068
|
+
abstract render(drawable: Target): void;
|
|
3069
|
+
abstract flush(): void;
|
|
3070
|
+
protected abstract onConnect(runtime: WebGpuRendererRuntime): void;
|
|
3071
|
+
protected abstract onDisconnect(): void;
|
|
3072
|
+
protected getRuntime(): WebGpuRendererRuntime;
|
|
3073
|
+
protected getRuntimeOrNull(): WebGpuRendererRuntime | null;
|
|
3074
|
+
}
|
|
3075
|
+
}
|
|
3076
|
+
declare module "rendering/webgpu/WebGpuBlendState" {
|
|
3077
|
+
import { BlendModes } from "rendering/types";
|
|
3078
|
+
/**
|
|
3079
|
+
* Returns the GPUBlendState for a given ExoJS blend mode.
|
|
3080
|
+
* Shared by all WebGPU renderers to avoid duplication.
|
|
3081
|
+
*/
|
|
3082
|
+
export function getWebGpuBlendState(blendMode: BlendModes): GPUBlendState;
|
|
3083
|
+
}
|
|
3084
|
+
declare module "rendering/webgpu/WebGpuPrimitiveRenderer" {
|
|
3085
|
+
import { AbstractWebGpuRenderer } from "rendering/webgpu/AbstractWebGpuRenderer";
|
|
3086
|
+
import type { DrawableShape } from "rendering/primitives/DrawableShape";
|
|
3087
|
+
import type { WebGpuRendererRuntime } from "rendering/webgpu/WebGpuRendererRuntime";
|
|
3088
|
+
export class WebGpuPrimitiveRenderer extends AbstractWebGpuRenderer<DrawableShape> {
|
|
3089
|
+
private readonly _combinedTransform;
|
|
3090
|
+
private readonly _drawCalls;
|
|
3091
|
+
private _drawCallCount;
|
|
3092
|
+
private readonly _transformData;
|
|
3093
|
+
private readonly _pipelines;
|
|
3094
|
+
private _renderManager;
|
|
3095
|
+
private _device;
|
|
3096
|
+
private _shaderModule;
|
|
3097
|
+
private _bindGroupLayout;
|
|
3098
|
+
private _pipelineLayout;
|
|
3099
|
+
private _uniformBuffer;
|
|
3100
|
+
private _bindGroup;
|
|
3101
|
+
private _vertexBuffer;
|
|
3102
|
+
private _indexBuffer;
|
|
3103
|
+
private _vertexBufferCapacity;
|
|
3104
|
+
private _indexBufferCapacity;
|
|
3105
|
+
private _vertexData;
|
|
3106
|
+
private _float32View;
|
|
3107
|
+
private _uint32View;
|
|
3108
|
+
private _generatedIndexData;
|
|
3109
|
+
private _sequentialIndexData;
|
|
3110
|
+
render(shape: DrawableShape): void;
|
|
3111
|
+
flush(): void;
|
|
3112
|
+
destroy(): void;
|
|
3113
|
+
protected onConnect(runtime: WebGpuRendererRuntime): void;
|
|
3114
|
+
protected onDisconnect(): void;
|
|
3115
|
+
private _writeTransformData;
|
|
3116
|
+
private _writeVertexData;
|
|
3117
|
+
private _ensureVertexCapacity;
|
|
3118
|
+
private _ensureIndexCapacity;
|
|
3119
|
+
private _getPipeline;
|
|
3120
|
+
private _getTopology;
|
|
3121
|
+
private _resolveDrawCall;
|
|
3122
|
+
private _resolveLineLoopDrawCall;
|
|
3123
|
+
private _resolveTriangleFanDrawCall;
|
|
3124
|
+
private _getSequentialIndices;
|
|
3125
|
+
private _ensureGeneratedIndexCapacity;
|
|
3126
|
+
private _destroyBuffers;
|
|
3127
|
+
}
|
|
3128
|
+
}
|
|
3129
|
+
declare module "rendering/webgpu/WebGpuSpriteRenderer" {
|
|
3130
|
+
import { AbstractWebGpuRenderer } from "rendering/webgpu/AbstractWebGpuRenderer";
|
|
3131
|
+
import type { Sprite } from "rendering/sprite/Sprite";
|
|
3132
|
+
import type { WebGpuRendererRuntime } from "rendering/webgpu/WebGpuRendererRuntime";
|
|
3133
|
+
export class WebGpuSpriteRenderer extends AbstractWebGpuRenderer<Sprite> {
|
|
3134
|
+
private readonly _drawCalls;
|
|
3135
|
+
private _drawCallCount;
|
|
3136
|
+
private readonly _projectionData;
|
|
3137
|
+
private _renderManager;
|
|
3138
|
+
private _device;
|
|
3139
|
+
private _shaderModule;
|
|
3140
|
+
private _uniformBindGroupLayout;
|
|
3141
|
+
private _textureBindGroupLayout;
|
|
3142
|
+
private _pipelineLayout;
|
|
3143
|
+
private _uniformBuffer;
|
|
3144
|
+
private _uniformBindGroup;
|
|
3145
|
+
private _vertexBuffer;
|
|
3146
|
+
private _indexBuffer;
|
|
3147
|
+
private _vertexCapacity;
|
|
3148
|
+
private _vertexData;
|
|
3149
|
+
private _float32View;
|
|
3150
|
+
private _uint32View;
|
|
3151
|
+
private readonly _pipelines;
|
|
3152
|
+
protected onConnect(runtime: WebGpuRendererRuntime): void;
|
|
3153
|
+
protected onDisconnect(): void;
|
|
3154
|
+
render(sprite: Sprite): void;
|
|
3155
|
+
flush(): void;
|
|
3156
|
+
destroy(): void;
|
|
3157
|
+
private _ensureBatchCapacity;
|
|
3158
|
+
private _writeBatchVertexData;
|
|
3159
|
+
private _getBatchRange;
|
|
3160
|
+
private _createTextureBindGroup;
|
|
3161
|
+
private _getPipeline;
|
|
3162
|
+
}
|
|
3163
|
+
}
|
|
3164
|
+
declare module "rendering/webgpu/WebGpuParticleRenderer" {
|
|
3165
|
+
import { AbstractWebGpuRenderer } from "rendering/webgpu/AbstractWebGpuRenderer";
|
|
3166
|
+
import type { WebGpuRendererRuntime } from "rendering/webgpu/WebGpuRendererRuntime";
|
|
3167
|
+
import type { ParticleSystem } from "particles/ParticleSystem";
|
|
3168
|
+
export class WebGpuParticleRenderer extends AbstractWebGpuRenderer<ParticleSystem> {
|
|
3169
|
+
private readonly _drawCalls;
|
|
3170
|
+
private _drawCallCount;
|
|
3171
|
+
private readonly _uniformData;
|
|
3172
|
+
private _renderManager;
|
|
3173
|
+
private _device;
|
|
3174
|
+
private _shaderModule;
|
|
3175
|
+
private _uniformBindGroupLayout;
|
|
3176
|
+
private _textureBindGroupLayout;
|
|
3177
|
+
private _pipelineLayout;
|
|
3178
|
+
private _uniformBuffer;
|
|
3179
|
+
private _uniformBindGroup;
|
|
3180
|
+
private _staticVertexBuffer;
|
|
3181
|
+
private _instanceBuffer;
|
|
3182
|
+
private _indexBuffer;
|
|
3183
|
+
private _instanceBufferByteLength;
|
|
3184
|
+
private _instanceData;
|
|
3185
|
+
private _float32View;
|
|
3186
|
+
private _uint32View;
|
|
3187
|
+
private readonly _pipelines;
|
|
3188
|
+
render(system: ParticleSystem): void;
|
|
3189
|
+
flush(): void;
|
|
3190
|
+
destroy(): void;
|
|
3191
|
+
protected onConnect(runtime: WebGpuRendererRuntime): void;
|
|
3192
|
+
protected onDisconnect(): void;
|
|
3193
|
+
private _ensureCapacity;
|
|
3194
|
+
private _writeUniformData;
|
|
3195
|
+
private _writeInstanceData;
|
|
3196
|
+
private _getPipeline;
|
|
3197
|
+
}
|
|
3198
|
+
}
|
|
3199
|
+
declare module "rendering/webgpu/WebGpuRenderManager" {
|
|
3200
|
+
import { Color } from "core/Color";
|
|
3201
|
+
import type { Application } from "core/Application";
|
|
3202
|
+
import { BlendModes } from "rendering/types";
|
|
3203
|
+
import { RenderBackendType } from "rendering/RenderBackendType";
|
|
3204
|
+
import { RendererRegistry } from "rendering/RendererRegistry";
|
|
3205
|
+
import type { Drawable } from "rendering/Drawable";
|
|
3206
|
+
import type { RenderPass } from "rendering/RenderPass";
|
|
3207
|
+
import type { Shader } from "rendering/shader/Shader";
|
|
3208
|
+
import type { Texture } from "rendering/texture/Texture";
|
|
3209
|
+
import type { WebGl2VertexArrayObject } from "rendering/webgl2/WebGl2VertexArrayObject";
|
|
3210
|
+
import type { View } from "rendering/View";
|
|
3211
|
+
import type { WebGpuRendererRuntime } from "rendering/webgpu/WebGpuRendererRuntime";
|
|
3212
|
+
import { RenderTarget } from "rendering/RenderTarget";
|
|
3213
|
+
import { RenderTexture } from "rendering/texture/RenderTexture";
|
|
3214
|
+
import type { Rectangle } from "math/Rectangle";
|
|
3215
|
+
import type { RenderStats } from "rendering/RenderStats";
|
|
3216
|
+
interface PixelMaskState {
|
|
3217
|
+
x: number;
|
|
3218
|
+
y: number;
|
|
3219
|
+
width: number;
|
|
3220
|
+
height: number;
|
|
3221
|
+
}
|
|
3222
|
+
export class WebGpuRenderManager implements WebGpuRendererRuntime {
|
|
3223
|
+
readonly backendType = RenderBackendType.WebGpu;
|
|
3224
|
+
readonly rendererRegistry: RendererRegistry<WebGpuRendererRuntime>;
|
|
3225
|
+
private readonly _canvas;
|
|
3226
|
+
private readonly _rootRenderTarget;
|
|
3227
|
+
private readonly _clearColor;
|
|
3228
|
+
private readonly _textureStates;
|
|
3229
|
+
private readonly _textureDestroyHandlers;
|
|
3230
|
+
private readonly _renderTargetDestroyHandlers;
|
|
3231
|
+
private readonly _temporaryRenderTextures;
|
|
3232
|
+
private readonly _maskStack;
|
|
3233
|
+
private readonly _maskPixelStack;
|
|
3234
|
+
private readonly _maskPointA;
|
|
3235
|
+
private readonly _maskPointB;
|
|
3236
|
+
private _mipmapShaderModule;
|
|
3237
|
+
private _mipmapBindGroupLayout;
|
|
3238
|
+
private _mipmapPipelineLayout;
|
|
3239
|
+
private _mipmapPipeline;
|
|
3240
|
+
private _mipmapSampler;
|
|
3241
|
+
private _context;
|
|
3242
|
+
private _device;
|
|
3243
|
+
private _format;
|
|
3244
|
+
private _initializePromise;
|
|
3245
|
+
private _renderTarget;
|
|
3246
|
+
private _renderer;
|
|
3247
|
+
private _blendMode;
|
|
3248
|
+
private _texture;
|
|
3249
|
+
private _clearRequested;
|
|
3250
|
+
private _hasPresentedFrame;
|
|
3251
|
+
private readonly _stats;
|
|
3252
|
+
constructor(app: Application);
|
|
3253
|
+
get view(): View;
|
|
3254
|
+
get renderTarget(): RenderTarget;
|
|
3255
|
+
get device(): GPUDevice;
|
|
3256
|
+
get context(): GPUCanvasContext;
|
|
3257
|
+
get format(): GPUTextureFormat;
|
|
3258
|
+
get renderTargetFormat(): GPUTextureFormat;
|
|
3259
|
+
get clearRequested(): boolean;
|
|
3260
|
+
get stats(): RenderStats;
|
|
3261
|
+
initialize(): Promise<this>;
|
|
3262
|
+
resetStats(): this;
|
|
3263
|
+
draw(drawable: Drawable): this;
|
|
3264
|
+
execute(pass: RenderPass): this;
|
|
3265
|
+
setShader(shader: Shader | null): this;
|
|
3266
|
+
setTexture(texture: Texture | RenderTexture | null, _unit?: number): this;
|
|
3267
|
+
setBlendMode(blendMode: BlendModes | null): this;
|
|
3268
|
+
setVao(vao: WebGl2VertexArrayObject | null): this;
|
|
3269
|
+
setRenderTarget(target: RenderTarget | null): this;
|
|
3270
|
+
pushMask(maskBounds: Rectangle): this;
|
|
3271
|
+
popMask(): this;
|
|
3272
|
+
getScissorRect(): PixelMaskState | null;
|
|
3273
|
+
acquireRenderTexture(width: number, height: number): RenderTexture;
|
|
3274
|
+
releaseRenderTexture(texture: RenderTexture): this;
|
|
3275
|
+
setView(view: View | null): this;
|
|
3276
|
+
clear(color?: Color): this;
|
|
3277
|
+
resize(width: number, height: number): this;
|
|
3278
|
+
flush(): this;
|
|
3279
|
+
destroy(): void;
|
|
3280
|
+
createColorAttachment(): GPURenderPassColorAttachment;
|
|
3281
|
+
submit(commandBuffer: GPUCommandBuffer): void;
|
|
3282
|
+
getTextureBinding(texture: Texture | RenderTexture): {
|
|
3283
|
+
readonly view: GPUTextureView;
|
|
3284
|
+
readonly sampler: GPUSampler;
|
|
3285
|
+
};
|
|
3286
|
+
shouldPremultiplyTextureSample(texture: Texture | RenderTexture): boolean;
|
|
3287
|
+
private _setActiveRenderer;
|
|
3288
|
+
private _flushActiveRenderer;
|
|
3289
|
+
private _initialize;
|
|
3290
|
+
private _getGpuNavigator;
|
|
3291
|
+
private _createInitializationError;
|
|
3292
|
+
private _destroyManagedTextures;
|
|
3293
|
+
private _destroyTemporaryRenderTextures;
|
|
3294
|
+
private _getTextureState;
|
|
3295
|
+
private _syncTexture;
|
|
3296
|
+
private _evictTexture;
|
|
3297
|
+
private _subscribeRenderTarget;
|
|
3298
|
+
private _unsubscribeRenderTarget;
|
|
3299
|
+
private _toMaskPixels;
|
|
3300
|
+
private _intersectMasks;
|
|
3301
|
+
private _createSampler;
|
|
3302
|
+
private _getTextureUsage;
|
|
3303
|
+
private _getAddressMode;
|
|
3304
|
+
private _getFilterMode;
|
|
3305
|
+
private _getMipmapFilterMode;
|
|
3306
|
+
private _getMipLevelCount;
|
|
3307
|
+
private _generateMipmaps;
|
|
3308
|
+
private _getMipmapResources;
|
|
3309
|
+
}
|
|
3310
|
+
}
|
|
3311
|
+
declare module "input/types" {
|
|
3312
|
+
export enum ChannelSize {
|
|
3313
|
+
Container = 768,
|
|
3314
|
+
Category = 256,
|
|
3315
|
+
Gamepad = 64
|
|
3316
|
+
}
|
|
3317
|
+
export const enum ChannelOffset {
|
|
3318
|
+
Keyboard = 0,
|
|
3319
|
+
Pointers = 256,
|
|
3320
|
+
Gamepads = 512
|
|
3321
|
+
}
|
|
3322
|
+
export enum Keyboard {
|
|
3323
|
+
Backspace = 8,
|
|
3324
|
+
Tab = 9,
|
|
3325
|
+
Clear = 12,
|
|
3326
|
+
Enter = 13,
|
|
3327
|
+
Shift = 16,
|
|
3328
|
+
Control = 17,
|
|
3329
|
+
Alt = 18,
|
|
3330
|
+
Pause = 19,
|
|
3331
|
+
CapsLock = 20,
|
|
3332
|
+
Escape = 27,
|
|
3333
|
+
Space = 32,
|
|
3334
|
+
PageUp = 33,
|
|
3335
|
+
PageDown = 34,
|
|
3336
|
+
End = 35,
|
|
3337
|
+
Home = 36,
|
|
3338
|
+
Left = 37,
|
|
3339
|
+
Up = 38,
|
|
3340
|
+
Right = 39,
|
|
3341
|
+
Down = 40,
|
|
3342
|
+
Insert = 45,
|
|
3343
|
+
Delete = 46,
|
|
3344
|
+
Help = 47,
|
|
3345
|
+
Zero = 48,
|
|
3346
|
+
One = 49,
|
|
3347
|
+
Two = 50,
|
|
3348
|
+
Three = 51,
|
|
3349
|
+
Four = 52,
|
|
3350
|
+
Five = 53,
|
|
3351
|
+
Six = 54,
|
|
3352
|
+
Seven = 55,
|
|
3353
|
+
Eight = 56,
|
|
3354
|
+
Nine = 57,
|
|
3355
|
+
A = 65,
|
|
3356
|
+
B = 66,
|
|
3357
|
+
C = 67,
|
|
3358
|
+
D = 68,
|
|
3359
|
+
E = 69,
|
|
3360
|
+
F = 70,
|
|
3361
|
+
G = 71,
|
|
3362
|
+
H = 72,
|
|
3363
|
+
I = 73,
|
|
3364
|
+
J = 74,
|
|
3365
|
+
K = 75,
|
|
3366
|
+
L = 76,
|
|
3367
|
+
M = 77,
|
|
3368
|
+
N = 78,
|
|
3369
|
+
O = 79,
|
|
3370
|
+
P = 80,
|
|
3371
|
+
Q = 81,
|
|
3372
|
+
R = 82,
|
|
3373
|
+
S = 83,
|
|
3374
|
+
T = 84,
|
|
3375
|
+
U = 85,
|
|
3376
|
+
V = 86,
|
|
3377
|
+
W = 87,
|
|
3378
|
+
X = 88,
|
|
3379
|
+
Y = 89,
|
|
3380
|
+
Z = 90,
|
|
3381
|
+
NumPad0 = 96,
|
|
3382
|
+
NumPad1 = 97,
|
|
3383
|
+
NumPad2 = 98,
|
|
3384
|
+
NumPad3 = 99,
|
|
3385
|
+
NumPad4 = 100,
|
|
3386
|
+
NumPad5 = 101,
|
|
3387
|
+
NumPad6 = 102,
|
|
3388
|
+
NumPad7 = 103,
|
|
3389
|
+
NumPad8 = 104,
|
|
3390
|
+
NumPad9 = 105,
|
|
3391
|
+
NumPadMultiply = 106,
|
|
3392
|
+
NumPadAdd = 107,
|
|
3393
|
+
NumPadEnter = 108,
|
|
3394
|
+
NumPadSubtract = 109,
|
|
3395
|
+
NumPadDecimal = 110,
|
|
3396
|
+
NumPadDivide = 111,
|
|
3397
|
+
F1 = 112,
|
|
3398
|
+
F2 = 113,
|
|
3399
|
+
F3 = 114,
|
|
3400
|
+
F4 = 115,
|
|
3401
|
+
F5 = 116,
|
|
3402
|
+
F6 = 117,
|
|
3403
|
+
F7 = 118,
|
|
3404
|
+
F8 = 119,
|
|
3405
|
+
F9 = 120,
|
|
3406
|
+
F10 = 121,
|
|
3407
|
+
F11 = 122,
|
|
3408
|
+
F12 = 123,
|
|
3409
|
+
NumLock = 144,
|
|
3410
|
+
ScrollLock = 145,
|
|
3411
|
+
Colon = 186,
|
|
3412
|
+
Equals = 187,
|
|
3413
|
+
Comma = 188,
|
|
3414
|
+
Dash = 189,
|
|
3415
|
+
Period = 190,
|
|
3416
|
+
QuestionMark = 191,
|
|
3417
|
+
Tilde = 192,
|
|
3418
|
+
OpenBracket = 219,
|
|
3419
|
+
BackwardSlash = 220,
|
|
3420
|
+
ClosedBracket = 221,
|
|
3421
|
+
Quotes = 222
|
|
3422
|
+
}
|
|
3423
|
+
}
|
|
3424
|
+
declare module "input/GamepadChannels" {
|
|
3425
|
+
export enum GamepadChannel {
|
|
3426
|
+
ButtonSouth = 512,
|
|
3427
|
+
ButtonWest = 513,
|
|
3428
|
+
ButtonEast = 514,
|
|
3429
|
+
ButtonNorth = 515,
|
|
3430
|
+
LeftShoulder = 516,
|
|
3431
|
+
RightShoulder = 517,
|
|
3432
|
+
LeftTrigger = 518,
|
|
3433
|
+
RightTrigger = 519,
|
|
3434
|
+
Select = 520,
|
|
3435
|
+
Start = 521,
|
|
3436
|
+
LeftStick = 522,
|
|
3437
|
+
RightStick = 523,
|
|
3438
|
+
DPadUp = 524,
|
|
3439
|
+
DPadDown = 525,
|
|
3440
|
+
DPadLeft = 526,
|
|
3441
|
+
DPadRight = 527,
|
|
3442
|
+
Guide = 528,
|
|
3443
|
+
Share = 529,
|
|
3444
|
+
Capture = 530,
|
|
3445
|
+
Touchpad = 531,
|
|
3446
|
+
Paddle1 = 532,
|
|
3447
|
+
LeftStickLeft = 533,
|
|
3448
|
+
LeftStickRight = 534,
|
|
3449
|
+
LeftStickUp = 535,
|
|
3450
|
+
LeftStickDown = 536,
|
|
3451
|
+
RightStickLeft = 537,
|
|
3452
|
+
RightStickRight = 538,
|
|
3453
|
+
RightStickUp = 539,
|
|
3454
|
+
RightStickDown = 540,
|
|
3455
|
+
AuxiliaryAxis0Negative = 541,
|
|
3456
|
+
AuxiliaryAxis0Positive = 542,
|
|
3457
|
+
AuxiliaryAxis1Negative = 543,
|
|
3458
|
+
AuxiliaryAxis1Positive = 544,
|
|
3459
|
+
AuxiliaryAxis2Negative = 545,
|
|
3460
|
+
AuxiliaryAxis2Positive = 546,
|
|
3461
|
+
AuxiliaryAxis3Negative = 547,
|
|
3462
|
+
AuxiliaryAxis3Positive = 548
|
|
3463
|
+
}
|
|
3464
|
+
}
|
|
3465
|
+
declare module "input/GamepadControl" {
|
|
3466
|
+
import type { GamepadChannel } from "input/GamepadChannels";
|
|
3467
|
+
export interface GamepadControlOptions {
|
|
3468
|
+
invert?: boolean;
|
|
3469
|
+
normalize?: boolean;
|
|
3470
|
+
threshold?: number;
|
|
3471
|
+
}
|
|
3472
|
+
export class GamepadControl {
|
|
3473
|
+
readonly index: number;
|
|
3474
|
+
readonly channel: GamepadChannel;
|
|
3475
|
+
readonly invert: boolean;
|
|
3476
|
+
readonly normalize: boolean;
|
|
3477
|
+
readonly threshold: number;
|
|
3478
|
+
constructor(index: number, channel: GamepadChannel, options?: GamepadControlOptions);
|
|
3479
|
+
transformValue(value: number): number;
|
|
3480
|
+
}
|
|
3481
|
+
}
|
|
3482
|
+
declare module "input/GamepadMapping" {
|
|
3483
|
+
import { GamepadControl } from "input/GamepadControl";
|
|
3484
|
+
import type { GamepadControlOptions } from "input/GamepadControl";
|
|
3485
|
+
import type { GamepadChannel } from "input/GamepadChannels";
|
|
3486
|
+
export enum GamepadMappingFamily {
|
|
3487
|
+
GenericDualAnalog = "genericDualAnalog",
|
|
3488
|
+
Xbox = "xbox",
|
|
3489
|
+
PlayStation = "playStation",
|
|
3490
|
+
SwitchPro = "switchPro",
|
|
3491
|
+
JoyConLeft = "joyConLeft",
|
|
3492
|
+
JoyConRight = "joyConRight",
|
|
3493
|
+
GameCube = "gameCube",
|
|
3494
|
+
SteamController = "steamController",
|
|
3495
|
+
ArcadeStick = "arcadeStick"
|
|
3496
|
+
}
|
|
3497
|
+
export type GamepadControlDefinition = readonly [number, GamepadChannel, GamepadControlOptions?];
|
|
3498
|
+
export abstract class GamepadMapping {
|
|
3499
|
+
abstract readonly family: GamepadMappingFamily;
|
|
3500
|
+
readonly buttons: Array<GamepadControl>;
|
|
3501
|
+
readonly axes: Array<GamepadControl>;
|
|
3502
|
+
protected constructor(buttons: Array<GamepadControl>, axes: Array<GamepadControl>);
|
|
3503
|
+
destroy(): void;
|
|
3504
|
+
static createControls(definitions: ReadonlyArray<GamepadControlDefinition>): Array<GamepadControl>;
|
|
3505
|
+
}
|
|
3506
|
+
}
|
|
3507
|
+
declare module "input/ArcadeStickGamepadMapping" {
|
|
3508
|
+
import { GamepadMapping, GamepadMappingFamily } from "input/GamepadMapping";
|
|
3509
|
+
export class ArcadeStickGamepadMapping extends GamepadMapping {
|
|
3510
|
+
readonly family = GamepadMappingFamily.ArcadeStick;
|
|
3511
|
+
constructor();
|
|
3512
|
+
}
|
|
3513
|
+
}
|
|
3514
|
+
declare module "input/GenericDualAnalogGamepadMapping" {
|
|
3515
|
+
import { GamepadMapping, GamepadMappingFamily } from "input/GamepadMapping";
|
|
3516
|
+
export class GenericDualAnalogGamepadMapping extends GamepadMapping {
|
|
3517
|
+
readonly family: GamepadMappingFamily;
|
|
3518
|
+
constructor();
|
|
3519
|
+
}
|
|
3520
|
+
}
|
|
3521
|
+
declare module "input/GameCubeGamepadMapping" {
|
|
3522
|
+
import { GenericDualAnalogGamepadMapping } from "input/GenericDualAnalogGamepadMapping";
|
|
3523
|
+
import { GamepadMappingFamily } from "input/GamepadMapping";
|
|
3524
|
+
export class GameCubeGamepadMapping extends GenericDualAnalogGamepadMapping {
|
|
3525
|
+
readonly family = GamepadMappingFamily.GameCube;
|
|
3526
|
+
}
|
|
3527
|
+
}
|
|
3528
|
+
declare module "input/JoyConLeftGamepadMapping" {
|
|
3529
|
+
import { GenericDualAnalogGamepadMapping } from "input/GenericDualAnalogGamepadMapping";
|
|
3530
|
+
import { GamepadMappingFamily } from "input/GamepadMapping";
|
|
3531
|
+
export class JoyConLeftGamepadMapping extends GenericDualAnalogGamepadMapping {
|
|
3532
|
+
readonly family = GamepadMappingFamily.JoyConLeft;
|
|
3533
|
+
}
|
|
3534
|
+
}
|
|
3535
|
+
declare module "input/JoyConRightGamepadMapping" {
|
|
3536
|
+
import { GenericDualAnalogGamepadMapping } from "input/GenericDualAnalogGamepadMapping";
|
|
3537
|
+
import { GamepadMappingFamily } from "input/GamepadMapping";
|
|
3538
|
+
export class JoyConRightGamepadMapping extends GenericDualAnalogGamepadMapping {
|
|
3539
|
+
readonly family = GamepadMappingFamily.JoyConRight;
|
|
3540
|
+
}
|
|
3541
|
+
}
|
|
3542
|
+
declare module "input/PlayStationGamepadMapping" {
|
|
3543
|
+
import { GenericDualAnalogGamepadMapping } from "input/GenericDualAnalogGamepadMapping";
|
|
3544
|
+
import { GamepadMappingFamily } from "input/GamepadMapping";
|
|
3545
|
+
export class PlayStationGamepadMapping extends GenericDualAnalogGamepadMapping {
|
|
3546
|
+
readonly family = GamepadMappingFamily.PlayStation;
|
|
3547
|
+
}
|
|
3548
|
+
}
|
|
3549
|
+
declare module "input/SteamControllerGamepadMapping" {
|
|
3550
|
+
import { GenericDualAnalogGamepadMapping } from "input/GenericDualAnalogGamepadMapping";
|
|
3551
|
+
import { GamepadMappingFamily } from "input/GamepadMapping";
|
|
3552
|
+
export class SteamControllerGamepadMapping extends GenericDualAnalogGamepadMapping {
|
|
3553
|
+
readonly family = GamepadMappingFamily.SteamController;
|
|
3554
|
+
}
|
|
3555
|
+
}
|
|
3556
|
+
declare module "input/SwitchProGamepadMapping" {
|
|
3557
|
+
import { GenericDualAnalogGamepadMapping } from "input/GenericDualAnalogGamepadMapping";
|
|
3558
|
+
import { GamepadMappingFamily } from "input/GamepadMapping";
|
|
3559
|
+
export class SwitchProGamepadMapping extends GenericDualAnalogGamepadMapping {
|
|
3560
|
+
readonly family = GamepadMappingFamily.SwitchPro;
|
|
3561
|
+
}
|
|
3562
|
+
}
|
|
3563
|
+
declare module "input/XboxGamepadMapping" {
|
|
3564
|
+
import { GenericDualAnalogGamepadMapping } from "input/GenericDualAnalogGamepadMapping";
|
|
3565
|
+
import { GamepadMappingFamily } from "input/GamepadMapping";
|
|
3566
|
+
export class XboxGamepadMapping extends GenericDualAnalogGamepadMapping {
|
|
3567
|
+
readonly family = GamepadMappingFamily.Xbox;
|
|
3568
|
+
}
|
|
3569
|
+
}
|
|
3570
|
+
declare module "input/GamepadDefinitions" {
|
|
3571
|
+
import type { GamepadMapping } from "input/GamepadMapping";
|
|
3572
|
+
export type BrowserGamepad = NonNullable<ReturnType<Navigator['getGamepads']>[number]>;
|
|
3573
|
+
export type GamepadDefinitionResult = GamepadMapping | {
|
|
3574
|
+
name?: string;
|
|
3575
|
+
mapping: GamepadMapping;
|
|
3576
|
+
} | null | undefined;
|
|
3577
|
+
export interface GamepadDescriptor {
|
|
3578
|
+
id: string;
|
|
3579
|
+
index: number;
|
|
3580
|
+
label: string;
|
|
3581
|
+
vendorId: string | null;
|
|
3582
|
+
productId: string | null;
|
|
3583
|
+
productKey: string | null;
|
|
3584
|
+
name: string | null;
|
|
3585
|
+
}
|
|
3586
|
+
export interface GamepadDefinition {
|
|
3587
|
+
ids?: string | Array<string>;
|
|
3588
|
+
name?: string;
|
|
3589
|
+
resolve: (descriptor: GamepadDescriptor) => GamepadDefinitionResult;
|
|
3590
|
+
}
|
|
3591
|
+
export interface ResolvedGamepadDefinition {
|
|
3592
|
+
descriptor: GamepadDescriptor;
|
|
3593
|
+
name: string;
|
|
3594
|
+
mapping: GamepadMapping;
|
|
3595
|
+
}
|
|
3596
|
+
export const normalizeIds: (ids?: string | Array<string>) => Array<string>;
|
|
3597
|
+
export const matchesIds: (descriptor: GamepadDescriptor, ids?: string | Array<string>) => boolean;
|
|
3598
|
+
export const parseGamepadDescriptor: (gamepad: BrowserGamepad) => GamepadDescriptor;
|
|
3599
|
+
export const resolveDefinition: (definition: GamepadDefinition, descriptor: GamepadDescriptor) => ResolvedGamepadDefinition | null;
|
|
3600
|
+
export const resolveGamepadDefinition: (gamepadOrDescriptor: BrowserGamepad | GamepadDescriptor, definitions?: ReadonlyArray<GamepadDefinition>) => ResolvedGamepadDefinition;
|
|
3601
|
+
export const builtInGamepadDefinitions: Array<GamepadDefinition>;
|
|
3602
|
+
}
|
|
3603
|
+
declare module "input/Gamepad" {
|
|
3604
|
+
import { Signal } from "core/Signal";
|
|
3605
|
+
import type { GamepadChannel } from "input/GamepadChannels";
|
|
3606
|
+
import type { BrowserGamepad, ResolvedGamepadDefinition } from "input/GamepadDefinitions";
|
|
3607
|
+
import type { GamepadMappingFamily, GamepadMapping } from "input/GamepadMapping";
|
|
3608
|
+
export interface GamepadInfo {
|
|
3609
|
+
name: string;
|
|
3610
|
+
label: string;
|
|
3611
|
+
vendorId: string | null;
|
|
3612
|
+
productId: string | null;
|
|
3613
|
+
productKey: string | null;
|
|
3614
|
+
}
|
|
3615
|
+
export class Gamepad {
|
|
3616
|
+
readonly onConnect: Signal<[Gamepad]>;
|
|
3617
|
+
readonly onDisconnect: Signal<[Gamepad]>;
|
|
3618
|
+
readonly onUpdate: Signal<[GamepadChannel, number, Gamepad]>;
|
|
3619
|
+
private readonly indexValue;
|
|
3620
|
+
private readonly channelsValue;
|
|
3621
|
+
private readonly channelOffset;
|
|
3622
|
+
private mappingValue;
|
|
3623
|
+
private browserGamepad;
|
|
3624
|
+
private info;
|
|
3625
|
+
constructor(index: number, channels: Float32Array, mapping: GamepadMapping);
|
|
3626
|
+
constructor(gamepad: BrowserGamepad, channels: Float32Array, definition: ResolvedGamepadDefinition);
|
|
3627
|
+
get mapping(): GamepadMapping;
|
|
3628
|
+
set mapping(mapping: GamepadMapping);
|
|
3629
|
+
get mappingFamily(): GamepadMappingFamily;
|
|
3630
|
+
get channels(): Float32Array;
|
|
3631
|
+
get gamepad(): BrowserGamepad | null;
|
|
3632
|
+
get index(): number;
|
|
3633
|
+
get connected(): boolean;
|
|
3634
|
+
get name(): string;
|
|
3635
|
+
get label(): string;
|
|
3636
|
+
get vendorId(): string | null;
|
|
3637
|
+
get productId(): string | null;
|
|
3638
|
+
get productKey(): string | null;
|
|
3639
|
+
setInfo(info: GamepadInfo): this;
|
|
3640
|
+
connect(gamepad: BrowserGamepad): this;
|
|
3641
|
+
disconnect(): this;
|
|
3642
|
+
update(): this;
|
|
3643
|
+
clearChannels(): this;
|
|
3644
|
+
destroy(): void;
|
|
3645
|
+
resolveChannelOffset(channel: GamepadChannel): number;
|
|
3646
|
+
static resolveChannelOffset(gamepadIndex: number, channel: GamepadChannel): number;
|
|
3647
|
+
private clearMappedChannels;
|
|
3648
|
+
}
|
|
3649
|
+
}
|
|
3650
|
+
declare module "core/Timer" {
|
|
3651
|
+
import { Clock } from "core/Clock";
|
|
3652
|
+
import { Time } from "core/Time";
|
|
3653
|
+
export class Timer extends Clock {
|
|
3654
|
+
private readonly _limit;
|
|
3655
|
+
constructor(limit: Time, autoStart?: boolean);
|
|
3656
|
+
set limit(limit: Time);
|
|
3657
|
+
get expired(): boolean;
|
|
3658
|
+
get remainingMilliseconds(): number;
|
|
3659
|
+
get remainingSeconds(): number;
|
|
3660
|
+
get remainingMinutes(): number;
|
|
3661
|
+
get remainingHours(): number;
|
|
3662
|
+
}
|
|
3663
|
+
}
|
|
3664
|
+
declare module "input/Input" {
|
|
3665
|
+
import { Signal } from "core/Signal";
|
|
3666
|
+
import type { Keyboard } from "input/types";
|
|
3667
|
+
import type { GamepadChannel } from "input/GamepadChannels";
|
|
3668
|
+
interface InputOptions {
|
|
3669
|
+
onStart?: () => void;
|
|
3670
|
+
onStop?: () => void;
|
|
3671
|
+
onActive?: () => void;
|
|
3672
|
+
onTrigger?: () => void;
|
|
3673
|
+
context?: object;
|
|
3674
|
+
threshold?: number;
|
|
3675
|
+
}
|
|
3676
|
+
export type InputChannel = GamepadChannel | Keyboard;
|
|
3677
|
+
export class Input {
|
|
3678
|
+
static triggerThreshold: number;
|
|
3679
|
+
private readonly channels;
|
|
3680
|
+
private readonly triggerTimer;
|
|
3681
|
+
private valueState;
|
|
3682
|
+
readonly onStart: Signal<[number]>;
|
|
3683
|
+
readonly onStop: Signal<[number]>;
|
|
3684
|
+
readonly onActive: Signal<[number]>;
|
|
3685
|
+
readonly onTrigger: Signal<[number]>;
|
|
3686
|
+
constructor(channels: Array<InputChannel> | InputChannel, { onStart, onStop, onActive, onTrigger, context, threshold }?: InputOptions);
|
|
3687
|
+
get activeChannels(): Set<number>;
|
|
3688
|
+
get value(): number;
|
|
3689
|
+
update(channels: Float32Array): this;
|
|
3690
|
+
destroy(): void;
|
|
3691
|
+
}
|
|
3692
|
+
}
|
|
3693
|
+
declare module "input/InputManager" {
|
|
3694
|
+
import { Vector } from "math/Vector";
|
|
3695
|
+
import { Signal } from "core/Signal";
|
|
3696
|
+
import { Gamepad } from "input/Gamepad";
|
|
3697
|
+
import { Pointer } from "input/Pointer";
|
|
3698
|
+
import type { Application } from "core/Application";
|
|
3699
|
+
import type { Input } from "input/Input";
|
|
3700
|
+
export class InputManager {
|
|
3701
|
+
private readonly canvas;
|
|
3702
|
+
private readonly channels;
|
|
3703
|
+
private readonly inputs;
|
|
3704
|
+
private readonly pointers;
|
|
3705
|
+
private readonly gamepadsValue;
|
|
3706
|
+
private readonly gamepadsByIndex;
|
|
3707
|
+
private readonly gamepadSlotsActive;
|
|
3708
|
+
private readonly wheelOffset;
|
|
3709
|
+
private readonly flags;
|
|
3710
|
+
private readonly channelsPressed;
|
|
3711
|
+
private readonly channelsReleased;
|
|
3712
|
+
private readonly gamepadDefinitions;
|
|
3713
|
+
private canvasFocusedValue;
|
|
3714
|
+
private pointerDistanceThreshold;
|
|
3715
|
+
private readonly keyDownHandler;
|
|
3716
|
+
private readonly keyUpHandler;
|
|
3717
|
+
private readonly canvasFocusHandler;
|
|
3718
|
+
private readonly canvasBlurHandler;
|
|
3719
|
+
private readonly windowBlurHandler;
|
|
3720
|
+
private readonly mouseWheelHandler;
|
|
3721
|
+
private readonly pointerOverHandler;
|
|
3722
|
+
private readonly pointerLeaveHandler;
|
|
3723
|
+
private readonly pointerDownHandler;
|
|
3724
|
+
private readonly pointerMoveHandler;
|
|
3725
|
+
private readonly pointerUpHandler;
|
|
3726
|
+
private readonly pointerCancelHandler;
|
|
3727
|
+
readonly onPointerEnter: Signal<[Pointer]>;
|
|
3728
|
+
readonly onPointerLeave: Signal<[Pointer]>;
|
|
3729
|
+
readonly onPointerDown: Signal<[Pointer]>;
|
|
3730
|
+
readonly onPointerMove: Signal<[Pointer]>;
|
|
3731
|
+
readonly onPointerUp: Signal<[Pointer]>;
|
|
3732
|
+
readonly onPointerTap: Signal<[Pointer]>;
|
|
3733
|
+
readonly onPointerSwipe: Signal<[Pointer]>;
|
|
3734
|
+
readonly onPointerCancel: Signal<[Pointer]>;
|
|
3735
|
+
readonly onMouseWheel: Signal<[Vector]>;
|
|
3736
|
+
readonly onKeyDown: Signal<[number]>;
|
|
3737
|
+
readonly onKeyUp: Signal<[number]>;
|
|
3738
|
+
readonly onGamepadConnected: Signal<[Gamepad, Gamepad[]]>;
|
|
3739
|
+
readonly onGamepadDisconnected: Signal<[Gamepad, Gamepad[]]>;
|
|
3740
|
+
readonly onGamepadUpdated: Signal<[Gamepad, Gamepad[]]>;
|
|
3741
|
+
constructor(app: Application);
|
|
3742
|
+
get pointersInCanvas(): boolean;
|
|
3743
|
+
get canvasFocused(): boolean;
|
|
3744
|
+
get gamepads(): Array<Gamepad>;
|
|
3745
|
+
getGamepad(index: number): Gamepad | null;
|
|
3746
|
+
add(inputs: Input | Array<Input>): this;
|
|
3747
|
+
remove(inputs: Input | Array<Input>): this;
|
|
3748
|
+
clear(destroyInputs?: boolean): this;
|
|
3749
|
+
update(): this;
|
|
3750
|
+
destroy(): void;
|
|
3751
|
+
private handleKeyDown;
|
|
3752
|
+
private handleKeyUp;
|
|
3753
|
+
private handlePointerOver;
|
|
3754
|
+
private handlePointerLeave;
|
|
3755
|
+
private handlePointerDown;
|
|
3756
|
+
private handlePointerMove;
|
|
3757
|
+
private handlePointerUp;
|
|
3758
|
+
private handlePointerCancel;
|
|
3759
|
+
private handleMouseWheel;
|
|
3760
|
+
private handleCanvasFocus;
|
|
3761
|
+
private handleCanvasBlur;
|
|
3762
|
+
private handleWindowBlur;
|
|
3763
|
+
private addEventListeners;
|
|
3764
|
+
private removeEventListeners;
|
|
3765
|
+
private updateGamepads;
|
|
3766
|
+
private insertGamepadByIndex;
|
|
3767
|
+
private updateEvents;
|
|
3768
|
+
private updatePointerEvents;
|
|
3769
|
+
}
|
|
3770
|
+
}
|
|
3771
|
+
declare module "core/Application" {
|
|
3772
|
+
import { SceneManager } from "core/SceneManager";
|
|
3773
|
+
import { InputManager } from "input/InputManager";
|
|
3774
|
+
import { Loader } from "resources/Loader";
|
|
3775
|
+
import { Signal } from "core/Signal";
|
|
3776
|
+
import { Color } from "core/Color";
|
|
3777
|
+
import type { Time } from "core/Time";
|
|
3778
|
+
import type { Scene } from "core/Scene";
|
|
3779
|
+
import type { CacheStore } from "resources/CacheStore";
|
|
3780
|
+
import type { SceneRenderRuntime } from "rendering/SceneRenderRuntime";
|
|
3781
|
+
import type { GamepadDefinition } from "input/GamepadDefinitions";
|
|
3782
|
+
export enum ApplicationStatus {
|
|
3783
|
+
Loading = 1,
|
|
3784
|
+
Running = 2,
|
|
3785
|
+
Halting = 3,
|
|
3786
|
+
Stopped = 4
|
|
3787
|
+
}
|
|
3788
|
+
export interface ApplicationOptions {
|
|
3789
|
+
canvas: HTMLCanvasElement;
|
|
3790
|
+
width: number;
|
|
3791
|
+
height: number;
|
|
3792
|
+
debug: boolean;
|
|
3793
|
+
clearColor: Color;
|
|
3794
|
+
spriteRendererBatchSize: number;
|
|
3795
|
+
particleRendererBatchSize: number;
|
|
3796
|
+
primitiveRendererBatchSize: number;
|
|
3797
|
+
gamepadDefinitions: Array<GamepadDefinition>;
|
|
3798
|
+
pointerDistanceThreshold: number;
|
|
3799
|
+
webglAttributes: WebGLContextAttributes;
|
|
3800
|
+
resourcePath: string;
|
|
3801
|
+
requestOptions: RequestInit;
|
|
3802
|
+
cache?: CacheStore | ReadonlyArray<CacheStore>;
|
|
3803
|
+
backend?: BackendConfig;
|
|
3804
|
+
}
|
|
3805
|
+
export interface WebGl2BackendConfig {
|
|
3806
|
+
type: 'webgl2';
|
|
3807
|
+
}
|
|
3808
|
+
export interface WebGpuBackendConfig {
|
|
3809
|
+
type: 'webgpu';
|
|
3810
|
+
}
|
|
3811
|
+
export interface AutoBackendConfig {
|
|
3812
|
+
type: 'auto';
|
|
3813
|
+
}
|
|
3814
|
+
export type BackendConfig = AutoBackendConfig | WebGl2BackendConfig | WebGpuBackendConfig;
|
|
3815
|
+
export class Application {
|
|
3816
|
+
readonly options: ApplicationOptions;
|
|
3817
|
+
readonly canvas: HTMLCanvasElement;
|
|
3818
|
+
readonly loader: Loader;
|
|
3819
|
+
readonly inputManager: InputManager;
|
|
3820
|
+
readonly sceneManager: SceneManager;
|
|
3821
|
+
readonly onResize: Signal<[number, number, Application]>;
|
|
3822
|
+
private readonly _updateHandler;
|
|
3823
|
+
private readonly _startupClock;
|
|
3824
|
+
private readonly _activeClock;
|
|
3825
|
+
private readonly _frameClock;
|
|
3826
|
+
private _status;
|
|
3827
|
+
private _frameCount;
|
|
3828
|
+
private _frameRequest;
|
|
3829
|
+
private _backendType;
|
|
3830
|
+
private _renderManager;
|
|
3831
|
+
constructor(appSettings?: Partial<ApplicationOptions>);
|
|
3832
|
+
get status(): ApplicationStatus;
|
|
3833
|
+
get startupTime(): Time;
|
|
3834
|
+
get activeTime(): Time;
|
|
3835
|
+
get frameTime(): Time;
|
|
3836
|
+
get frameCount(): number;
|
|
3837
|
+
get renderManager(): SceneRenderRuntime;
|
|
3838
|
+
start(scene: Scene): Promise<this>;
|
|
3839
|
+
update(): this;
|
|
3840
|
+
stop(): this;
|
|
3841
|
+
resize(width: number, height: number): this;
|
|
3842
|
+
destroy(): void;
|
|
3843
|
+
private resolveInitialBackendType;
|
|
3844
|
+
private createRenderManager;
|
|
3845
|
+
private initializeRenderManager;
|
|
3846
|
+
private canUseWebGpu;
|
|
3847
|
+
}
|
|
3848
|
+
}
|
|
3849
|
+
declare module "core/Quadtree" {
|
|
3850
|
+
import { Rectangle } from "math/Rectangle";
|
|
3851
|
+
import type { SceneNode } from "core/SceneNode";
|
|
3852
|
+
import type { Destroyable, HasBoundingBox } from "core/types";
|
|
3853
|
+
export class Quadtree implements HasBoundingBox, Destroyable {
|
|
3854
|
+
static maxSceneNodes: number;
|
|
3855
|
+
static maxLevel: number;
|
|
3856
|
+
readonly level: number;
|
|
3857
|
+
private readonly _bounds;
|
|
3858
|
+
private readonly _quadTrees;
|
|
3859
|
+
private readonly _sceneNodes;
|
|
3860
|
+
constructor(bounds: Rectangle, level?: number);
|
|
3861
|
+
addSceneNode(sceneNode: SceneNode): this;
|
|
3862
|
+
getRelatedChildren(sceneNode: SceneNode): Array<SceneNode>;
|
|
3863
|
+
getBounds(): Rectangle;
|
|
3864
|
+
clear(): this;
|
|
3865
|
+
destroy(): void;
|
|
3866
|
+
private _getQuadTree;
|
|
3867
|
+
private _split;
|
|
3868
|
+
private _passSceneNodesToQuadTrees;
|
|
3869
|
+
}
|
|
3870
|
+
}
|
|
3871
|
+
declare module "core/index" {
|
|
3872
|
+
export * from "core/types";
|
|
3873
|
+
export * from "core/utils";
|
|
3874
|
+
export * from "core/Application";
|
|
3875
|
+
export * from "core/Bounds";
|
|
3876
|
+
export * from "core/Clock";
|
|
3877
|
+
export * from "core/Color";
|
|
3878
|
+
export * from "core/Quadtree";
|
|
3879
|
+
export * from "core/Scene";
|
|
3880
|
+
export * from "core/SceneManager";
|
|
3881
|
+
export * from "core/SceneNode";
|
|
3882
|
+
export * from "core/Signal";
|
|
3883
|
+
export * from "core/Time";
|
|
3884
|
+
export * from "core/Timer";
|
|
3885
|
+
}
|
|
3886
|
+
declare module "audio/AudioAnalyser" {
|
|
3887
|
+
import type { Media } from "audio/Media";
|
|
3888
|
+
export interface AudioAnalyserOptions {
|
|
3889
|
+
fftSize: number;
|
|
3890
|
+
minDecibels: number;
|
|
3891
|
+
maxDecibels: number;
|
|
3892
|
+
smoothingTimeConstant: number;
|
|
3893
|
+
}
|
|
3894
|
+
export class AudioAnalyser {
|
|
3895
|
+
private readonly _media;
|
|
3896
|
+
private readonly _fftSize;
|
|
3897
|
+
private readonly _minDecibels;
|
|
3898
|
+
private readonly _maxDecibels;
|
|
3899
|
+
private readonly _smoothingTimeConstant;
|
|
3900
|
+
private readonly _frequencyBinCount;
|
|
3901
|
+
private readonly _timeDomainData;
|
|
3902
|
+
private readonly _frequencyData;
|
|
3903
|
+
private readonly _preciseTimeDomainData;
|
|
3904
|
+
private readonly _preciseFrequencyData;
|
|
3905
|
+
private _analyser;
|
|
3906
|
+
private _audioContext;
|
|
3907
|
+
private _analyserTarget;
|
|
3908
|
+
constructor(media: Media, options?: Partial<AudioAnalyserOptions>);
|
|
3909
|
+
connect(): this;
|
|
3910
|
+
get timeDomainData(): Uint8Array;
|
|
3911
|
+
get frequencyData(): Uint8Array;
|
|
3912
|
+
get preciseTimeDomainData(): Float32Array;
|
|
3913
|
+
get preciseFrequencyData(): Float32Array;
|
|
3914
|
+
destroy(): void;
|
|
3915
|
+
private setupWithAudioContext;
|
|
3916
|
+
}
|
|
3917
|
+
}
|
|
3918
|
+
declare module "audio/index" {
|
|
3919
|
+
export * from "audio/AbstractMedia";
|
|
3920
|
+
export * from "audio/Media";
|
|
3921
|
+
export * from "audio/audio-context";
|
|
3922
|
+
export * from "audio/AudioAnalyser";
|
|
3923
|
+
export * from "audio/Music";
|
|
3924
|
+
export * from "audio/Sound";
|
|
3925
|
+
}
|
|
3926
|
+
declare module "input/GamepadPromptLayouts" {
|
|
3927
|
+
import { GamepadChannel } from "input/GamepadChannels";
|
|
3928
|
+
import { GamepadMappingFamily } from "input/GamepadMapping";
|
|
3929
|
+
export type GamepadPromptControl = 'DPad' | 'DPadUp' | 'DPadDown' | 'DPadLeft' | 'DPadRight' | 'ButtonNorth' | 'ButtonWest' | 'ButtonEast' | 'ButtonSouth' | 'LeftShoulder' | 'RightShoulder' | 'LeftTrigger' | 'RightTrigger' | 'Select' | 'Start' | 'LeftStick' | 'RightStick';
|
|
3930
|
+
export class GamepadPromptLayouts {
|
|
3931
|
+
static readonly controls: Array<GamepadPromptControl>;
|
|
3932
|
+
static getControlPosition(control: GamepadPromptControl): readonly [number, number];
|
|
3933
|
+
static getControlLabels(family: GamepadMappingFamily): ReadonlyMap<GamepadPromptControl, string>;
|
|
3934
|
+
static buildControlChannelMap(): ReadonlyMap<GamepadPromptControl, GamepadChannel>;
|
|
3935
|
+
}
|
|
3936
|
+
}
|
|
3937
|
+
declare module "input/index" {
|
|
3938
|
+
export * from "input/types";
|
|
3939
|
+
export * from "input/GamepadChannels";
|
|
3940
|
+
export * from "input/GamepadControl";
|
|
3941
|
+
export * from "input/GamepadMapping";
|
|
3942
|
+
export * from "input/GamepadDefinitions";
|
|
3943
|
+
export * from "input/Gamepad";
|
|
3944
|
+
export * from "input/GamepadPromptLayouts";
|
|
3945
|
+
export * from "input/GenericDualAnalogGamepadMapping";
|
|
3946
|
+
export * from "input/XboxGamepadMapping";
|
|
3947
|
+
export * from "input/PlayStationGamepadMapping";
|
|
3948
|
+
export * from "input/SwitchProGamepadMapping";
|
|
3949
|
+
export * from "input/JoyConLeftGamepadMapping";
|
|
3950
|
+
export * from "input/JoyConRightGamepadMapping";
|
|
3951
|
+
export * from "input/GameCubeGamepadMapping";
|
|
3952
|
+
export * from "input/SteamControllerGamepadMapping";
|
|
3953
|
+
export * from "input/ArcadeStickGamepadMapping";
|
|
3954
|
+
export * from "input/Input";
|
|
3955
|
+
export * from "input/InputManager";
|
|
3956
|
+
export * from "input/Pointer";
|
|
3957
|
+
}
|
|
3958
|
+
declare module "math/RectangleLike" {
|
|
3959
|
+
export interface RectangleLike {
|
|
3960
|
+
x: number;
|
|
3961
|
+
y: number;
|
|
3962
|
+
width: number;
|
|
3963
|
+
height: number;
|
|
3964
|
+
}
|
|
3965
|
+
}
|
|
3966
|
+
declare module "math/CircleLike" {
|
|
3967
|
+
export interface CircleLike {
|
|
3968
|
+
x: number;
|
|
3969
|
+
y: number;
|
|
3970
|
+
radius: number;
|
|
3971
|
+
}
|
|
3972
|
+
}
|
|
3973
|
+
declare module "math/EllipseLike" {
|
|
3974
|
+
export interface EllipseLike {
|
|
3975
|
+
x: number;
|
|
3976
|
+
y: number;
|
|
3977
|
+
rx: number;
|
|
3978
|
+
ry: number;
|
|
3979
|
+
}
|
|
3980
|
+
}
|
|
3981
|
+
declare module "math/LineLike" {
|
|
3982
|
+
export interface LineLike {
|
|
3983
|
+
fromX: number;
|
|
3984
|
+
fromY: number;
|
|
3985
|
+
toX: number;
|
|
3986
|
+
toY: number;
|
|
3987
|
+
}
|
|
3988
|
+
}
|
|
3989
|
+
declare module "math/PolygonLike" {
|
|
3990
|
+
import type { PointLike } from "math/PointLike";
|
|
3991
|
+
export interface PolygonLike {
|
|
3992
|
+
x: number;
|
|
3993
|
+
y: number;
|
|
3994
|
+
points: Array<PointLike>;
|
|
3995
|
+
}
|
|
3996
|
+
}
|
|
3997
|
+
declare module "math/geometry" {
|
|
3998
|
+
import { Geometry } from "rendering/primitives/Geometry";
|
|
3999
|
+
export const buildLine: (startX: number, startY: number, endX: number, endY: number, width: number, vertices?: Array<number>, indices?: Array<number>) => Geometry;
|
|
4000
|
+
export const buildPath: (points: Array<number>, width: number, vertices?: Array<number>, indices?: Array<number>) => Geometry;
|
|
4001
|
+
export const buildCircle: (centerX: number, centerY: number, radius: number, vertices?: Array<number>, indices?: Array<number>) => Geometry;
|
|
4002
|
+
export const buildEllipse: (centerX: number, centerY: number, radiusX: number, radiusY: number, vertices?: Array<number>, indices?: Array<number>) => Geometry;
|
|
4003
|
+
export const buildPolygon: (points: Array<number>, vertices?: Array<number>, indices?: Array<number>) => Geometry;
|
|
4004
|
+
export const buildRectangle: (x: number, y: number, width: number, height: number, vertices?: Array<number>, indices?: Array<number>) => Geometry;
|
|
4005
|
+
export const buildStar: (centerX: number, centerY: number, points: number, radius: number, innerRadius?: number, rotation?: number) => Geometry;
|
|
4006
|
+
}
|
|
4007
|
+
declare module "math/Segment" {
|
|
4008
|
+
import { Vector } from "math/Vector";
|
|
4009
|
+
import type { Cloneable } from "core/types";
|
|
4010
|
+
export class Segment implements Cloneable {
|
|
4011
|
+
private readonly _startPoint;
|
|
4012
|
+
private readonly _endPoint;
|
|
4013
|
+
constructor(startX?: number, startY?: number, endX?: number, endY?: number);
|
|
4014
|
+
get startPoint(): Vector;
|
|
4015
|
+
set startPoint(startPoint: Vector);
|
|
4016
|
+
get startX(): number;
|
|
4017
|
+
set startX(x: number);
|
|
4018
|
+
get startY(): number;
|
|
4019
|
+
set startY(y: number);
|
|
4020
|
+
get endPoint(): Vector;
|
|
4021
|
+
set endPoint(endPoint: Vector);
|
|
4022
|
+
get endX(): number;
|
|
4023
|
+
set endX(x: number);
|
|
4024
|
+
get endY(): number;
|
|
4025
|
+
set endY(y: number);
|
|
4026
|
+
set(startX: number, startY: number, endX: number, endY: number): this;
|
|
4027
|
+
copy(segment: Segment): this;
|
|
4028
|
+
clone(): this;
|
|
4029
|
+
equals({ startX, startY, endX, endY }?: Partial<Segment>): boolean;
|
|
4030
|
+
destroy(): void;
|
|
4031
|
+
static get temp(): Segment;
|
|
4032
|
+
}
|
|
4033
|
+
}
|
|
4034
|
+
declare module "math/PolarVector" {
|
|
4035
|
+
import { Vector } from "math/Vector";
|
|
4036
|
+
export class PolarVector {
|
|
4037
|
+
radius: number;
|
|
4038
|
+
phi: number;
|
|
4039
|
+
constructor(radius?: number, angle?: number);
|
|
4040
|
+
static fromVector(vector: Vector): PolarVector;
|
|
4041
|
+
toVector(): Vector;
|
|
4042
|
+
}
|
|
4043
|
+
}
|
|
4044
|
+
declare module "math/index" {
|
|
4045
|
+
export * from "math/Collision";
|
|
4046
|
+
export * from "math/PointLike";
|
|
4047
|
+
export * from "math/RectangleLike";
|
|
4048
|
+
export * from "math/CircleLike";
|
|
4049
|
+
export * from "math/EllipseLike";
|
|
4050
|
+
export * from "math/LineLike";
|
|
4051
|
+
export * from "math/PolygonLike";
|
|
4052
|
+
export * from "math/utils";
|
|
4053
|
+
export * from "math/geometry";
|
|
4054
|
+
export * from "math/collision-detection";
|
|
4055
|
+
export * from "math/Vector";
|
|
4056
|
+
export * from "math/Line";
|
|
4057
|
+
export * from "math/Rectangle";
|
|
4058
|
+
export * from "math/Circle";
|
|
4059
|
+
export * from "math/Ellipse";
|
|
4060
|
+
export * from "math/Polygon";
|
|
4061
|
+
export * from "math/ShapeLike";
|
|
4062
|
+
export * from "math/Flags";
|
|
4063
|
+
export * from "math/Interval";
|
|
4064
|
+
export * from "math/Matrix";
|
|
4065
|
+
export * from "math/ObservableSize";
|
|
4066
|
+
export * from "math/ObservableVector";
|
|
4067
|
+
export * from "math/Random";
|
|
4068
|
+
export * from "math/Segment";
|
|
4069
|
+
export * from "math/Size";
|
|
4070
|
+
export * from "math/Transformable";
|
|
4071
|
+
export * from "math/PolarVector";
|
|
4072
|
+
}
|
|
4073
|
+
declare module "particles/affectors/ColorAffector" {
|
|
4074
|
+
import type { ParticleAffector } from "particles/affectors/ParticleAffector";
|
|
4075
|
+
import type { Color } from "core/Color";
|
|
4076
|
+
import type { Particle } from "particles/Particle";
|
|
4077
|
+
import type { Time } from "core/Time";
|
|
4078
|
+
export class ColorAffector implements ParticleAffector {
|
|
4079
|
+
private readonly _fromColor;
|
|
4080
|
+
private readonly _toColor;
|
|
4081
|
+
constructor(fromColor: Color, toColor: Color);
|
|
4082
|
+
get fromColor(): Color;
|
|
4083
|
+
set fromColor(color: Color);
|
|
4084
|
+
get toColor(): Color;
|
|
4085
|
+
set toColor(color: Color);
|
|
4086
|
+
setFromColor(color: Color): this;
|
|
4087
|
+
setToColor(color: Color): this;
|
|
4088
|
+
apply(particle: Particle, delta: Time): this;
|
|
4089
|
+
destroy(): void;
|
|
4090
|
+
}
|
|
4091
|
+
}
|
|
4092
|
+
declare module "particles/affectors/ForceAffector" {
|
|
4093
|
+
import type { ParticleAffector } from "particles/affectors/ParticleAffector";
|
|
4094
|
+
import { Vector } from "math/Vector";
|
|
4095
|
+
import type { Particle } from "particles/Particle";
|
|
4096
|
+
import type { Time } from "core/Time";
|
|
4097
|
+
export class ForceAffector implements ParticleAffector {
|
|
4098
|
+
private readonly _acceleration;
|
|
4099
|
+
constructor(accelerationX: number, accelerationY: number);
|
|
4100
|
+
get acceleration(): Vector;
|
|
4101
|
+
set acceleration(acceleration: Vector);
|
|
4102
|
+
setAcceleration(acceleration: Vector): this;
|
|
4103
|
+
apply(particle: Particle, delta: Time): this;
|
|
4104
|
+
destroy(): void;
|
|
4105
|
+
}
|
|
4106
|
+
}
|
|
4107
|
+
declare module "particles/affectors/ScaleAffector" {
|
|
4108
|
+
import type { ParticleAffector } from "particles/affectors/ParticleAffector";
|
|
4109
|
+
import { Vector } from "math/Vector";
|
|
4110
|
+
import type { Time } from "core/Time";
|
|
4111
|
+
import type { Particle } from "particles/Particle";
|
|
4112
|
+
export class ScaleAffector implements ParticleAffector {
|
|
4113
|
+
private readonly _scaleFactor;
|
|
4114
|
+
constructor(factorX: number, factorY: number);
|
|
4115
|
+
get scaleFactor(): Vector;
|
|
4116
|
+
set scaleFactor(scaleFactor: Vector);
|
|
4117
|
+
setScaleFactor(scaleFactor: Vector): this;
|
|
4118
|
+
apply(particle: Particle, delta: Time): this;
|
|
4119
|
+
destroy(): void;
|
|
4120
|
+
}
|
|
4121
|
+
}
|
|
4122
|
+
declare module "particles/affectors/TorqueAffector" {
|
|
4123
|
+
import type { ParticleAffector } from "particles/affectors/ParticleAffector";
|
|
4124
|
+
import type { Particle } from "particles/Particle";
|
|
4125
|
+
import type { Time } from "core/Time";
|
|
4126
|
+
export class TorqueAffector implements ParticleAffector {
|
|
4127
|
+
private _angularAcceleration;
|
|
4128
|
+
constructor(angularAcceleration: number);
|
|
4129
|
+
get angularAcceleration(): number;
|
|
4130
|
+
set angularAcceleration(angularAcceleration: number);
|
|
4131
|
+
setAngularAcceleration(angularAcceleration: number): this;
|
|
4132
|
+
apply(particle: Particle, delta: Time): this;
|
|
4133
|
+
destroy(): void;
|
|
4134
|
+
}
|
|
4135
|
+
}
|
|
4136
|
+
declare module "particles/emitters/UniversalEmitter" {
|
|
4137
|
+
import type { Time } from "core/Time";
|
|
4138
|
+
import { ParticleOptions } from "particles/emitters/ParticleOptions";
|
|
4139
|
+
import type { ParticleEmitter } from "particles/emitters/ParticleEmitter";
|
|
4140
|
+
import type { ParticleSystem } from "particles/ParticleSystem";
|
|
4141
|
+
export class UniversalEmitter implements ParticleEmitter {
|
|
4142
|
+
private _emissionRate;
|
|
4143
|
+
private _particleOptions;
|
|
4144
|
+
private _emissionDelta;
|
|
4145
|
+
constructor(emissionRate: number, particleOptions?: ParticleOptions);
|
|
4146
|
+
get emissionRate(): number;
|
|
4147
|
+
set emissionRate(particlesPerSecond: number);
|
|
4148
|
+
get particleOptions(): ParticleOptions;
|
|
4149
|
+
set particleOptions(particleOptions: ParticleOptions);
|
|
4150
|
+
computeParticleCount(time: Time): number;
|
|
4151
|
+
apply(system: ParticleSystem, delta: Time): this;
|
|
4152
|
+
destroy(): void;
|
|
4153
|
+
}
|
|
4154
|
+
}
|
|
4155
|
+
declare module "particles/index" {
|
|
4156
|
+
export * from "particles/affectors/ColorAffector";
|
|
4157
|
+
export * from "particles/affectors/ForceAffector";
|
|
4158
|
+
export * from "particles/affectors/ParticleAffector";
|
|
4159
|
+
export * from "particles/affectors/ScaleAffector";
|
|
4160
|
+
export * from "particles/affectors/TorqueAffector";
|
|
4161
|
+
export * from "particles/emitters/ParticleEmitter";
|
|
4162
|
+
export * from "particles/emitters/ParticleOptions";
|
|
4163
|
+
export * from "particles/emitters/UniversalEmitter";
|
|
4164
|
+
export * from "particles/ParticleProperties";
|
|
4165
|
+
export * from "particles/Particle";
|
|
4166
|
+
export * from "particles/ParticleSystem";
|
|
4167
|
+
}
|
|
4168
|
+
declare module "rendering/primitives/CircleGeometry" {
|
|
4169
|
+
import { Geometry } from "rendering/primitives/Geometry";
|
|
4170
|
+
export class CircleGeometry extends Geometry {
|
|
4171
|
+
constructor(centerX: number, centerY: number, radius: number);
|
|
4172
|
+
}
|
|
4173
|
+
}
|
|
4174
|
+
declare module "rendering/primitives/Graphics" {
|
|
4175
|
+
import { Color } from "core/Color";
|
|
4176
|
+
import { Container } from "rendering/Container";
|
|
4177
|
+
import { Vector } from "math/Vector";
|
|
4178
|
+
import type { SceneNode } from "core/SceneNode";
|
|
4179
|
+
import { DrawableShape } from "rendering/primitives/DrawableShape";
|
|
4180
|
+
export class Graphics extends Container {
|
|
4181
|
+
private _lineWidth;
|
|
4182
|
+
private _lineColor;
|
|
4183
|
+
private _fillColor;
|
|
4184
|
+
private _currentPoint;
|
|
4185
|
+
get lineWidth(): number;
|
|
4186
|
+
set lineWidth(lineWidth: number);
|
|
4187
|
+
get lineColor(): Color;
|
|
4188
|
+
set lineColor(lineColor: Color);
|
|
4189
|
+
get fillColor(): Color;
|
|
4190
|
+
set fillColor(fillColor: Color);
|
|
4191
|
+
get currentPoint(): Vector;
|
|
4192
|
+
getChildAt(index: number): DrawableShape;
|
|
4193
|
+
addChild(child: SceneNode): this;
|
|
4194
|
+
addChildAt(child: SceneNode, index: number): this;
|
|
4195
|
+
moveTo(x: number, y: number): this;
|
|
4196
|
+
lineTo(toX: number, toY: number): this;
|
|
4197
|
+
quadraticCurveTo(cpX: number, cpY: number, toX: number, toY: number): this;
|
|
4198
|
+
bezierCurveTo(cpX1: number, cpY1: number, cpX2: number, cpY2: number, toX: number, toY: number): this;
|
|
4199
|
+
arcTo(x1: number, y1: number, x2: number, y2: number, radius: number): this;
|
|
4200
|
+
drawArc(x: number, y: number, radius: number, startAngle: number, endAngle: number, anticlockwise?: boolean): this;
|
|
4201
|
+
drawLine(startX: number, startY: number, endX: number, endY: number): this;
|
|
4202
|
+
drawPath(path: Array<number>): this;
|
|
4203
|
+
drawPolygon(path: Array<number>): this;
|
|
4204
|
+
drawCircle(centerX: number, centerY: number, radius: number): this;
|
|
4205
|
+
drawEllipse(centerX: number, centerY: number, radiusX: number, radiusY: number): this;
|
|
4206
|
+
drawRectangle(x: number, y: number, width: number, height: number): this;
|
|
4207
|
+
drawStar(centerX: number, centerY: number, points: number, radius: number, innerRadius?: number, rotation?: number): this;
|
|
4208
|
+
clear(): this;
|
|
4209
|
+
destroy(): void;
|
|
4210
|
+
}
|
|
4211
|
+
}
|
|
4212
|
+
declare module "rendering/sprite/Spritesheet" {
|
|
4213
|
+
import type { Texture } from "rendering/texture/Texture";
|
|
4214
|
+
import { Rectangle } from "math/Rectangle";
|
|
4215
|
+
import { Sprite } from "rendering/sprite/Sprite";
|
|
4216
|
+
export interface SpritesheetFrame {
|
|
4217
|
+
frame: {
|
|
4218
|
+
x: number;
|
|
4219
|
+
y: number;
|
|
4220
|
+
w: number;
|
|
4221
|
+
h: number;
|
|
4222
|
+
};
|
|
4223
|
+
}
|
|
4224
|
+
export interface SpritesheetData {
|
|
4225
|
+
frames: {
|
|
4226
|
+
[name: string]: SpritesheetFrame;
|
|
4227
|
+
};
|
|
4228
|
+
animations?: {
|
|
4229
|
+
[name: string]: Array<string>;
|
|
4230
|
+
};
|
|
4231
|
+
}
|
|
4232
|
+
export class Spritesheet {
|
|
4233
|
+
readonly texture: Texture;
|
|
4234
|
+
readonly frames: Map<string, Rectangle>;
|
|
4235
|
+
readonly sprites: Map<string, Sprite>;
|
|
4236
|
+
readonly animations: Map<string, readonly string[]>;
|
|
4237
|
+
constructor(texture: Texture, data: SpritesheetData);
|
|
4238
|
+
parse(data: SpritesheetData, keepFrames?: boolean): void;
|
|
4239
|
+
addFrame(name: string, data: SpritesheetFrame): void;
|
|
4240
|
+
defineAnimation(name: string, frameNames: ReadonlyArray<string>): this;
|
|
4241
|
+
getFrame(name: string): Rectangle;
|
|
4242
|
+
getAnimationFrameNames(name: string): ReadonlyArray<string>;
|
|
4243
|
+
getFrameSprite(name: string): Sprite;
|
|
4244
|
+
clear(): this;
|
|
4245
|
+
destroy(): void;
|
|
4246
|
+
}
|
|
4247
|
+
}
|
|
4248
|
+
declare module "rendering/sprite/AnimatedSprite" {
|
|
4249
|
+
import { Signal } from "core/Signal";
|
|
4250
|
+
import type { Time } from "core/Time";
|
|
4251
|
+
import type { Rectangle } from "math/Rectangle";
|
|
4252
|
+
import { Sprite } from "rendering/sprite/Sprite";
|
|
4253
|
+
import type { Spritesheet } from "rendering/sprite/Spritesheet";
|
|
4254
|
+
import type { Texture } from "rendering/texture/Texture";
|
|
4255
|
+
import type { RenderTexture } from "rendering/texture/RenderTexture";
|
|
4256
|
+
export interface AnimatedSpriteClipDefinition {
|
|
4257
|
+
readonly frames: ReadonlyArray<Rectangle>;
|
|
4258
|
+
readonly fps?: number;
|
|
4259
|
+
readonly loop?: boolean;
|
|
4260
|
+
}
|
|
4261
|
+
export interface AnimatedSpritePlayOptions {
|
|
4262
|
+
loop?: boolean;
|
|
4263
|
+
restart?: boolean;
|
|
4264
|
+
}
|
|
4265
|
+
export class AnimatedSprite extends Sprite {
|
|
4266
|
+
private readonly _clips;
|
|
4267
|
+
private _currentClipName;
|
|
4268
|
+
private _currentFrameIndex;
|
|
4269
|
+
private _playing;
|
|
4270
|
+
private _loopOverride;
|
|
4271
|
+
private _elapsedFrameTimeMs;
|
|
4272
|
+
readonly onComplete: Signal<[clip: string]>;
|
|
4273
|
+
readonly onFrame: Signal<[clip: string, frame: number]>;
|
|
4274
|
+
constructor(texture: Texture | RenderTexture | null, clips?: Readonly<Record<string, AnimatedSpriteClipDefinition>>);
|
|
4275
|
+
get currentClip(): string | null;
|
|
4276
|
+
get currentFrame(): number;
|
|
4277
|
+
get playing(): boolean;
|
|
4278
|
+
get loop(): boolean;
|
|
4279
|
+
set loop(loop: boolean);
|
|
4280
|
+
setClips(clips: Readonly<Record<string, AnimatedSpriteClipDefinition>>): this;
|
|
4281
|
+
defineClip(name: string, clip: AnimatedSpriteClipDefinition): this;
|
|
4282
|
+
removeClip(name: string): this;
|
|
4283
|
+
play(name: string, options?: AnimatedSpritePlayOptions): this;
|
|
4284
|
+
stop(): this;
|
|
4285
|
+
pause(): this;
|
|
4286
|
+
resume(): this;
|
|
4287
|
+
update(delta: Time | number): this;
|
|
4288
|
+
destroy(): void;
|
|
4289
|
+
static fromSpritesheet(spritesheet: Spritesheet): AnimatedSprite;
|
|
4290
|
+
private _applyFrame;
|
|
4291
|
+
}
|
|
4292
|
+
}
|
|
4293
|
+
declare module "rendering/text/TextStyle" {
|
|
4294
|
+
export type TextStyleColor = string | CanvasGradient | CanvasPattern;
|
|
4295
|
+
export interface TextStyleOptions {
|
|
4296
|
+
align?: string;
|
|
4297
|
+
fill?: TextStyleColor;
|
|
4298
|
+
stroke?: TextStyleColor;
|
|
4299
|
+
strokeThickness?: number;
|
|
4300
|
+
fontSize?: number;
|
|
4301
|
+
fontWeight?: string;
|
|
4302
|
+
fontFamily?: string;
|
|
4303
|
+
wordWrap?: boolean;
|
|
4304
|
+
wordWrapWidth?: number;
|
|
4305
|
+
baseline?: CanvasTextBaseline;
|
|
4306
|
+
lineJoin?: CanvasLineJoin;
|
|
4307
|
+
miterLimit?: number;
|
|
4308
|
+
padding?: number;
|
|
4309
|
+
}
|
|
4310
|
+
export class TextStyle {
|
|
4311
|
+
private _align;
|
|
4312
|
+
private _fill;
|
|
4313
|
+
private _stroke;
|
|
4314
|
+
private _strokeThickness;
|
|
4315
|
+
private _fontSize;
|
|
4316
|
+
private _fontWeight;
|
|
4317
|
+
private _fontFamily;
|
|
4318
|
+
private _wordWrap;
|
|
4319
|
+
private _wordWrapWidth;
|
|
4320
|
+
private _baseline;
|
|
4321
|
+
private _lineJoin;
|
|
4322
|
+
private _miterLimit;
|
|
4323
|
+
private _padding;
|
|
4324
|
+
private _dirty;
|
|
4325
|
+
constructor(options?: TextStyleOptions);
|
|
4326
|
+
get align(): string;
|
|
4327
|
+
set align(align: string);
|
|
4328
|
+
get fill(): TextStyleColor;
|
|
4329
|
+
set fill(fill: TextStyleColor);
|
|
4330
|
+
get stroke(): TextStyleColor;
|
|
4331
|
+
set stroke(stroke: TextStyleColor);
|
|
4332
|
+
get strokeThickness(): number;
|
|
4333
|
+
set strokeThickness(strokeThickness: number);
|
|
4334
|
+
get fontSize(): number;
|
|
4335
|
+
set fontSize(fontSize: number);
|
|
4336
|
+
get fontWeight(): string;
|
|
4337
|
+
set fontWeight(fontWeight: string);
|
|
4338
|
+
get fontFamily(): string;
|
|
4339
|
+
set fontFamily(fontFamily: string);
|
|
4340
|
+
get wordWrap(): boolean;
|
|
4341
|
+
set wordWrap(wordWrap: boolean);
|
|
4342
|
+
get wordWrapWidth(): number;
|
|
4343
|
+
set wordWrapWidth(wordWrapWidth: number);
|
|
4344
|
+
get baseline(): CanvasTextBaseline;
|
|
4345
|
+
set baseline(baseline: CanvasTextBaseline);
|
|
4346
|
+
get lineJoin(): CanvasLineJoin;
|
|
4347
|
+
set lineJoin(lineJoin: CanvasLineJoin);
|
|
4348
|
+
get miterLimit(): number;
|
|
4349
|
+
set miterLimit(miterLimit: number);
|
|
4350
|
+
get padding(): number;
|
|
4351
|
+
set padding(padding: number);
|
|
4352
|
+
get dirty(): boolean;
|
|
4353
|
+
set dirty(dirty: boolean);
|
|
4354
|
+
get font(): string;
|
|
4355
|
+
apply(context: CanvasRenderingContext2D): this;
|
|
4356
|
+
copy(style: TextStyle): this;
|
|
4357
|
+
clone(): TextStyle;
|
|
4358
|
+
}
|
|
4359
|
+
}
|
|
4360
|
+
declare module "rendering/text/Text" {
|
|
4361
|
+
import { Sprite } from "rendering/sprite/Sprite";
|
|
4362
|
+
import type { TextStyleOptions } from "rendering/text/TextStyle";
|
|
4363
|
+
import { TextStyle } from "rendering/text/TextStyle";
|
|
4364
|
+
import type { SamplerOptions } from "rendering/texture/Sampler";
|
|
4365
|
+
import type { SceneRenderRuntime } from "rendering/SceneRenderRuntime";
|
|
4366
|
+
export class Text extends Sprite {
|
|
4367
|
+
private _text;
|
|
4368
|
+
private _style;
|
|
4369
|
+
private _canvas;
|
|
4370
|
+
private _context;
|
|
4371
|
+
private _dirty;
|
|
4372
|
+
constructor(text: string, style?: TextStyle | TextStyleOptions, samplerOptions?: Partial<SamplerOptions>, canvas?: HTMLCanvasElement);
|
|
4373
|
+
get text(): string;
|
|
4374
|
+
set text(text: string);
|
|
4375
|
+
get style(): TextStyle;
|
|
4376
|
+
set style(style: TextStyle);
|
|
4377
|
+
get canvas(): HTMLCanvasElement;
|
|
4378
|
+
set canvas(canvas: HTMLCanvasElement);
|
|
4379
|
+
setText(text: string): this;
|
|
4380
|
+
setStyle(style: TextStyle | TextStyleOptions): this;
|
|
4381
|
+
setCanvas(canvas: HTMLCanvasElement): this;
|
|
4382
|
+
updateTexture(): this;
|
|
4383
|
+
getWordWrappedText(): string;
|
|
4384
|
+
render(renderManager: SceneRenderRuntime): this;
|
|
4385
|
+
private _getContext;
|
|
4386
|
+
}
|
|
4387
|
+
}
|
|
4388
|
+
declare module "rendering/CallbackRenderPass" {
|
|
4389
|
+
import type { SceneRenderRuntime } from "rendering/SceneRenderRuntime";
|
|
4390
|
+
import type { RenderPass } from "rendering/RenderPass";
|
|
4391
|
+
export class CallbackRenderPass implements RenderPass {
|
|
4392
|
+
private readonly _callback;
|
|
4393
|
+
constructor(callback: (runtime: SceneRenderRuntime) => void);
|
|
4394
|
+
execute(runtime: SceneRenderRuntime): void;
|
|
4395
|
+
}
|
|
4396
|
+
}
|
|
4397
|
+
declare module "rendering/filters/BlurFilter" {
|
|
4398
|
+
import type { RenderTexture } from "rendering/texture/RenderTexture";
|
|
4399
|
+
import type { SceneRenderRuntime } from "rendering/SceneRenderRuntime";
|
|
4400
|
+
import { Filter } from "rendering/filters/Filter";
|
|
4401
|
+
export interface BlurFilterOptions {
|
|
4402
|
+
readonly radius?: number;
|
|
4403
|
+
readonly quality?: number;
|
|
4404
|
+
}
|
|
4405
|
+
export class BlurFilter extends Filter {
|
|
4406
|
+
private readonly _sprite;
|
|
4407
|
+
private readonly _sampleTint;
|
|
4408
|
+
private _radius;
|
|
4409
|
+
private _quality;
|
|
4410
|
+
constructor(options?: BlurFilterOptions);
|
|
4411
|
+
get radius(): number;
|
|
4412
|
+
set radius(radius: number);
|
|
4413
|
+
get quality(): number;
|
|
4414
|
+
set quality(quality: number);
|
|
4415
|
+
apply(runtime: SceneRenderRuntime, input: RenderTexture, output: RenderTexture): void;
|
|
4416
|
+
destroy(): void;
|
|
4417
|
+
}
|
|
4418
|
+
}
|
|
4419
|
+
declare module "rendering/filters/ColorFilter" {
|
|
4420
|
+
import { Color } from "core/Color";
|
|
4421
|
+
import type { RenderTexture } from "rendering/texture/RenderTexture";
|
|
4422
|
+
import type { SceneRenderRuntime } from "rendering/SceneRenderRuntime";
|
|
4423
|
+
import { Filter } from "rendering/filters/Filter";
|
|
4424
|
+
export class ColorFilter extends Filter {
|
|
4425
|
+
private readonly _color;
|
|
4426
|
+
private readonly _sprite;
|
|
4427
|
+
constructor(color?: Color);
|
|
4428
|
+
get color(): Color;
|
|
4429
|
+
apply(runtime: SceneRenderRuntime, input: RenderTexture, output: RenderTexture): void;
|
|
4430
|
+
destroy(): void;
|
|
4431
|
+
}
|
|
4432
|
+
}
|
|
4433
|
+
declare module "rendering/index" {
|
|
4434
|
+
export * from "rendering/primitives/CircleGeometry";
|
|
4435
|
+
export * from "rendering/primitives/Geometry";
|
|
4436
|
+
export * from "rendering/primitives/DrawableShape";
|
|
4437
|
+
export * from "rendering/primitives/Graphics";
|
|
4438
|
+
export * from "rendering/shader/Shader";
|
|
4439
|
+
export * from "rendering/shader/ShaderAttribute";
|
|
4440
|
+
export * from "rendering/shader/ShaderUniform";
|
|
4441
|
+
export * from "rendering/sprite/Sprite";
|
|
4442
|
+
export * from "rendering/sprite/Spritesheet";
|
|
4443
|
+
export * from "rendering/sprite/AnimatedSprite";
|
|
4444
|
+
export * from "rendering/text/Text";
|
|
4445
|
+
export * from "rendering/text/TextStyle";
|
|
4446
|
+
export * from "rendering/texture/RenderTexture";
|
|
4447
|
+
export * from "rendering/texture/Sampler";
|
|
4448
|
+
export * from "rendering/texture/Texture";
|
|
4449
|
+
export * from "rendering/video/Video";
|
|
4450
|
+
export * from "rendering/webgl2/AbstractWebGl2BatchedRenderer";
|
|
4451
|
+
export * from "rendering/webgl2/AbstractWebGl2Renderer";
|
|
4452
|
+
export * from "rendering/webgl2/WebGl2RenderBuffer";
|
|
4453
|
+
export * from "rendering/webgl2/WebGl2ShaderBlock";
|
|
4454
|
+
export * from "rendering/webgl2/WebGl2ShaderMappings";
|
|
4455
|
+
export * from "rendering/webgl2/WebGl2VertexArrayObject";
|
|
4456
|
+
export * from "rendering/webgl2/WebGl2ParticleRenderer";
|
|
4457
|
+
export * from "rendering/webgl2/WebGl2PrimitiveRenderer";
|
|
4458
|
+
export type { WebGl2RendererRuntime } from "rendering/webgl2/WebGl2RendererRuntime";
|
|
4459
|
+
export * from "rendering/webgl2/WebGl2RenderManager";
|
|
4460
|
+
export * from "rendering/webgl2/WebGl2ShaderRuntime";
|
|
4461
|
+
export * from "rendering/webgl2/WebGl2SpriteRenderer";
|
|
4462
|
+
export * from "rendering/webgpu/AbstractWebGpuRenderer";
|
|
4463
|
+
export * from "rendering/webgpu/WebGpuBlendState";
|
|
4464
|
+
export * from "rendering/webgpu/WebGpuParticleRenderer";
|
|
4465
|
+
export * from "rendering/webgpu/WebGpuPrimitiveRenderer";
|
|
4466
|
+
export type { WebGpuRendererRuntime } from "rendering/webgpu/WebGpuRendererRuntime";
|
|
4467
|
+
export * from "rendering/webgpu/WebGpuRenderManager";
|
|
4468
|
+
export * from "rendering/webgpu/WebGpuSpriteRenderer";
|
|
4469
|
+
export * from "rendering/types";
|
|
4470
|
+
export * from "rendering/Container";
|
|
4471
|
+
export * from "rendering/Drawable";
|
|
4472
|
+
export * from "rendering/RenderNode";
|
|
4473
|
+
export * from "rendering/RenderBackendType";
|
|
4474
|
+
export * from "rendering/RenderPass";
|
|
4475
|
+
export * from "rendering/RenderStats";
|
|
4476
|
+
export * from "rendering/RenderTarget";
|
|
4477
|
+
export * from "rendering/RenderTargetPass";
|
|
4478
|
+
export * from "rendering/CallbackRenderPass";
|
|
4479
|
+
export * from "rendering/Renderer";
|
|
4480
|
+
export * from "rendering/RendererRegistry";
|
|
4481
|
+
export * from "rendering/SceneRenderRuntime";
|
|
4482
|
+
export * from "rendering/View";
|
|
4483
|
+
export * from "rendering/filters/Filter";
|
|
4484
|
+
export * from "rendering/filters/BlurFilter";
|
|
4485
|
+
export * from "rendering/filters/ColorFilter";
|
|
4486
|
+
}
|
|
4487
|
+
declare module "resources/CacheStrategy" {
|
|
4488
|
+
import type { AssetFactory } from "resources/AssetFactory";
|
|
4489
|
+
import type { CacheStore } from "resources/CacheStore";
|
|
4490
|
+
export interface CacheRequest {
|
|
4491
|
+
readonly storageName: string;
|
|
4492
|
+
readonly key: string;
|
|
4493
|
+
readonly url: string;
|
|
4494
|
+
readonly requestOptions: RequestInit;
|
|
4495
|
+
readonly factory: AssetFactory;
|
|
4496
|
+
}
|
|
4497
|
+
export interface CacheStrategy {
|
|
4498
|
+
resolve(request: CacheRequest, stores: ReadonlyArray<CacheStore>): Promise<unknown>;
|
|
4499
|
+
}
|
|
4500
|
+
}
|
|
4501
|
+
declare module "resources/CacheFirstStrategy" {
|
|
4502
|
+
import type { CacheRequest, CacheStrategy } from "resources/CacheStrategy";
|
|
4503
|
+
import type { CacheStore } from "resources/CacheStore";
|
|
4504
|
+
export class CacheFirstStrategy implements CacheStrategy {
|
|
4505
|
+
resolve(request: CacheRequest, stores: ReadonlyArray<CacheStore>): Promise<unknown>;
|
|
4506
|
+
}
|
|
4507
|
+
}
|
|
4508
|
+
declare module "resources/NetworkOnlyStrategy" {
|
|
4509
|
+
import type { CacheRequest, CacheStrategy } from "resources/CacheStrategy";
|
|
4510
|
+
import type { CacheStore } from "resources/CacheStore";
|
|
4511
|
+
export class NetworkOnlyStrategy implements CacheStrategy {
|
|
4512
|
+
resolve(request: CacheRequest, _stores: ReadonlyArray<CacheStore>): Promise<unknown>;
|
|
4513
|
+
}
|
|
4514
|
+
}
|
|
4515
|
+
declare module "resources/Database" {
|
|
4516
|
+
export interface Database {
|
|
4517
|
+
readonly name: string;
|
|
4518
|
+
readonly version: number;
|
|
4519
|
+
readonly connected: boolean;
|
|
4520
|
+
connect(): Promise<boolean>;
|
|
4521
|
+
disconnect(): Promise<boolean>;
|
|
4522
|
+
load<T = unknown>(type: string, name: string): Promise<T | null>;
|
|
4523
|
+
save(type: string, name: string, data: unknown): Promise<void>;
|
|
4524
|
+
delete(type: string, name: string): Promise<boolean>;
|
|
4525
|
+
clearStorage(type: string): Promise<boolean>;
|
|
4526
|
+
deleteStorage(): Promise<boolean>;
|
|
4527
|
+
destroy(): void;
|
|
4528
|
+
}
|
|
4529
|
+
}
|
|
4530
|
+
declare module "resources/IndexedDbDatabase" {
|
|
4531
|
+
import type { Database } from "resources/Database";
|
|
4532
|
+
export class IndexedDbDatabase implements Database {
|
|
4533
|
+
readonly name: string;
|
|
4534
|
+
readonly version: number;
|
|
4535
|
+
private readonly _storeNames;
|
|
4536
|
+
private readonly _migrations;
|
|
4537
|
+
private readonly _onCloseHandler;
|
|
4538
|
+
private _connected;
|
|
4539
|
+
private _database;
|
|
4540
|
+
get connected(): boolean;
|
|
4541
|
+
constructor(name: string, version?: number, storeNames?: ReadonlyArray<string>, migrations?: Record<number, (db: IDBDatabase, transaction: IDBTransaction) => boolean>);
|
|
4542
|
+
getObjectStore(type: string, transactionMode?: IDBTransactionMode): Promise<IDBObjectStore>;
|
|
4543
|
+
connect(): Promise<boolean>;
|
|
4544
|
+
disconnect(): Promise<boolean>;
|
|
4545
|
+
load<T = unknown>(type: string, name: string): Promise<T | null>;
|
|
4546
|
+
save(type: string, name: string, data: unknown): Promise<void>;
|
|
4547
|
+
delete(type: string, name: string): Promise<boolean>;
|
|
4548
|
+
clearStorage(type: string): Promise<boolean>;
|
|
4549
|
+
deleteStorage(): Promise<boolean>;
|
|
4550
|
+
destroy(): void;
|
|
4551
|
+
}
|
|
4552
|
+
}
|
|
4553
|
+
declare module "resources/IndexedDbStore" {
|
|
4554
|
+
import type { CacheStore } from "resources/CacheStore";
|
|
4555
|
+
export interface IndexedDbStoreOptions {
|
|
4556
|
+
name: string;
|
|
4557
|
+
version?: number;
|
|
4558
|
+
storeNames?: ReadonlyArray<string>;
|
|
4559
|
+
migrations?: Record<number, (db: IDBDatabase, transaction: IDBTransaction) => boolean>;
|
|
4560
|
+
}
|
|
4561
|
+
export class IndexedDbStore implements CacheStore {
|
|
4562
|
+
private readonly _db;
|
|
4563
|
+
constructor(nameOrOptions: string | IndexedDbStoreOptions);
|
|
4564
|
+
load(storageName: string, key: string): Promise<unknown | null>;
|
|
4565
|
+
save(storageName: string, key: string, data: unknown): Promise<void>;
|
|
4566
|
+
delete(storageName: string, key: string): Promise<boolean>;
|
|
4567
|
+
clear(storageName: string): Promise<boolean>;
|
|
4568
|
+
destroy(): void;
|
|
4569
|
+
}
|
|
4570
|
+
}
|
|
4571
|
+
declare module "resources/index" {
|
|
4572
|
+
export * from "resources/AssetFactory";
|
|
4573
|
+
export * from "resources/AbstractAssetFactory";
|
|
4574
|
+
export * from "resources/tokens";
|
|
4575
|
+
export * from "resources/CacheStore";
|
|
4576
|
+
export * from "resources/CacheStrategy";
|
|
4577
|
+
export * from "resources/CacheFirstStrategy";
|
|
4578
|
+
export * from "resources/NetworkOnlyStrategy";
|
|
4579
|
+
export * from "resources/IndexedDbStore";
|
|
4580
|
+
export * from "resources/FactoryRegistry";
|
|
4581
|
+
export * from "resources/AssetManifest";
|
|
4582
|
+
export * from "resources/Loader";
|
|
4583
|
+
export * from "resources/Database";
|
|
4584
|
+
export * from "resources/IndexedDbDatabase";
|
|
4585
|
+
export * from "resources/utils";
|
|
4586
|
+
export * from "resources/factories/FontFactory";
|
|
4587
|
+
export * from "resources/factories/ImageFactory";
|
|
4588
|
+
export * from "resources/factories/JsonFactory";
|
|
4589
|
+
export * from "resources/factories/MusicFactory";
|
|
4590
|
+
export * from "resources/factories/SoundFactory";
|
|
4591
|
+
export * from "resources/factories/SvgFactory";
|
|
4592
|
+
export * from "resources/factories/TextFactory";
|
|
4593
|
+
export * from "resources/factories/TextureFactory";
|
|
4594
|
+
export * from "resources/factories/VideoFactory";
|
|
4595
|
+
export * from "resources/factories/BinaryFactory";
|
|
4596
|
+
export * from "resources/factories/VttFactory";
|
|
4597
|
+
export * from "resources/factories/WasmFactory";
|
|
4598
|
+
}
|
|
4599
|
+
declare module "physics/RapierPhysicsWorld" {
|
|
4600
|
+
import { Color } from "core/Color";
|
|
4601
|
+
import { Signal } from "core/Signal";
|
|
4602
|
+
import type { SceneNode } from "core/SceneNode";
|
|
4603
|
+
import { Graphics } from "rendering/primitives/Graphics";
|
|
4604
|
+
export type PhysicsBodyType = 'dynamic' | 'static' | 'kinematic';
|
|
4605
|
+
export type PhysicsSyncMode = 'physicsToNode' | 'manual';
|
|
4606
|
+
export interface PhysicsCollisionFilter {
|
|
4607
|
+
readonly membership?: number | ReadonlyArray<number>;
|
|
4608
|
+
readonly collidesWith?: number | ReadonlyArray<number>;
|
|
4609
|
+
}
|
|
4610
|
+
export interface PhysicsBoxShape {
|
|
4611
|
+
readonly type: 'box';
|
|
4612
|
+
readonly width: number;
|
|
4613
|
+
readonly height: number;
|
|
4614
|
+
readonly offsetX?: number;
|
|
4615
|
+
readonly offsetY?: number;
|
|
4616
|
+
readonly offsetRotation?: number;
|
|
4617
|
+
}
|
|
4618
|
+
export interface PhysicsCircleShape {
|
|
4619
|
+
readonly type: 'circle';
|
|
4620
|
+
readonly radius: number;
|
|
4621
|
+
readonly offsetX?: number;
|
|
4622
|
+
readonly offsetY?: number;
|
|
4623
|
+
}
|
|
4624
|
+
export type PhysicsColliderShape = PhysicsBoxShape | PhysicsCircleShape;
|
|
4625
|
+
export interface PhysicsBodyOptions {
|
|
4626
|
+
readonly type?: PhysicsBodyType;
|
|
4627
|
+
readonly shape: PhysicsColliderShape;
|
|
4628
|
+
readonly trigger?: boolean;
|
|
4629
|
+
readonly syncMode?: PhysicsSyncMode;
|
|
4630
|
+
readonly friction?: number;
|
|
4631
|
+
readonly restitution?: number;
|
|
4632
|
+
readonly density?: number;
|
|
4633
|
+
readonly gravityScale?: number;
|
|
4634
|
+
readonly linearDamping?: number;
|
|
4635
|
+
readonly angularDamping?: number;
|
|
4636
|
+
readonly lockRotation?: boolean;
|
|
4637
|
+
readonly collisionFilter?: PhysicsCollisionFilter;
|
|
4638
|
+
}
|
|
4639
|
+
export interface RapierPhysicsDebugDrawOptions {
|
|
4640
|
+
readonly lineWidth?: number;
|
|
4641
|
+
readonly solidLineColor?: Color;
|
|
4642
|
+
readonly solidFillColor?: Color;
|
|
4643
|
+
readonly triggerLineColor?: Color;
|
|
4644
|
+
readonly triggerFillColor?: Color;
|
|
4645
|
+
}
|
|
4646
|
+
export interface RapierPhysicsEvent {
|
|
4647
|
+
readonly started: boolean;
|
|
4648
|
+
readonly trigger: boolean;
|
|
4649
|
+
readonly first: RapierPhysicsBinding;
|
|
4650
|
+
readonly second: RapierPhysicsBinding;
|
|
4651
|
+
}
|
|
4652
|
+
interface RapierVectorLike {
|
|
4653
|
+
x: number;
|
|
4654
|
+
y: number;
|
|
4655
|
+
}
|
|
4656
|
+
interface RapierRigidBodyLike {
|
|
4657
|
+
readonly handle: number;
|
|
4658
|
+
translation(): RapierVectorLike;
|
|
4659
|
+
rotation(): number;
|
|
4660
|
+
setTranslation(translation: RapierVectorLike, wakeUp: boolean): void;
|
|
4661
|
+
setRotation(rotation: number, wakeUp: boolean): void;
|
|
4662
|
+
}
|
|
4663
|
+
interface RapierColliderLike {
|
|
4664
|
+
readonly handle: number;
|
|
4665
|
+
setCollisionGroups(groups: number): void;
|
|
4666
|
+
setSolverGroups(groups: number): void;
|
|
4667
|
+
}
|
|
4668
|
+
export type RapierModuleLoader = () => Promise<unknown>;
|
|
4669
|
+
export interface RapierPhysicsWorldOptions {
|
|
4670
|
+
readonly gravityX?: number;
|
|
4671
|
+
readonly gravityY?: number;
|
|
4672
|
+
readonly moduleLoader?: RapierModuleLoader;
|
|
4673
|
+
}
|
|
4674
|
+
export class RapierPhysicsBinding {
|
|
4675
|
+
private readonly _world;
|
|
4676
|
+
private readonly _body;
|
|
4677
|
+
private readonly _collider;
|
|
4678
|
+
private _syncMode;
|
|
4679
|
+
readonly node: SceneNode;
|
|
4680
|
+
readonly bodyType: PhysicsBodyType;
|
|
4681
|
+
readonly shape: PhysicsColliderShape;
|
|
4682
|
+
readonly trigger: boolean;
|
|
4683
|
+
constructor(world: RapierPhysicsWorld, node: SceneNode, body: RapierRigidBodyLike, collider: RapierColliderLike, options: PhysicsBodyOptions);
|
|
4684
|
+
get bodyHandle(): number;
|
|
4685
|
+
get colliderHandle(): number;
|
|
4686
|
+
getBody(): RapierRigidBodyLike;
|
|
4687
|
+
get syncMode(): PhysicsSyncMode;
|
|
4688
|
+
set syncMode(syncMode: PhysicsSyncMode);
|
|
4689
|
+
get x(): number;
|
|
4690
|
+
get y(): number;
|
|
4691
|
+
get rotation(): number;
|
|
4692
|
+
setSyncMode(syncMode: PhysicsSyncMode): this;
|
|
4693
|
+
teleport(x: number, y: number, rotation?: number): this;
|
|
4694
|
+
syncBodyFromNode(wakeUp?: boolean): this;
|
|
4695
|
+
syncNodeFromBody(): this;
|
|
4696
|
+
setCollisionFilter(filter?: PhysicsCollisionFilter): this;
|
|
4697
|
+
destroy(): void;
|
|
4698
|
+
}
|
|
4699
|
+
export class RapierPhysicsWorld {
|
|
4700
|
+
readonly onCollisionEnter: Signal<[RapierPhysicsEvent]>;
|
|
4701
|
+
readonly onCollisionExit: Signal<[RapierPhysicsEvent]>;
|
|
4702
|
+
readonly onTriggerEnter: Signal<[RapierPhysicsEvent]>;
|
|
4703
|
+
readonly onTriggerExit: Signal<[RapierPhysicsEvent]>;
|
|
4704
|
+
private readonly _rapier;
|
|
4705
|
+
private readonly _world;
|
|
4706
|
+
private readonly _eventQueue;
|
|
4707
|
+
private readonly _bindings;
|
|
4708
|
+
private readonly _nodeBindings;
|
|
4709
|
+
private readonly _colliderBindings;
|
|
4710
|
+
private constructor();
|
|
4711
|
+
static create(options?: RapierPhysicsWorldOptions): Promise<RapierPhysicsWorld>;
|
|
4712
|
+
get gravity(): {
|
|
4713
|
+
x: number;
|
|
4714
|
+
y: number;
|
|
4715
|
+
};
|
|
4716
|
+
setGravity(x: number, y: number): this;
|
|
4717
|
+
hasNode(node: SceneNode): boolean;
|
|
4718
|
+
getBinding(node: SceneNode): RapierPhysicsBinding | null;
|
|
4719
|
+
attachNode(node: SceneNode, options: PhysicsBodyOptions): RapierPhysicsBinding;
|
|
4720
|
+
detachNode(node: SceneNode): this;
|
|
4721
|
+
step(deltaSeconds?: number): this;
|
|
4722
|
+
syncNodeTransforms(): this;
|
|
4723
|
+
createDebugGraphics(options?: RapierPhysicsDebugDrawOptions): Graphics;
|
|
4724
|
+
updateDebugGraphics(graphics: Graphics, options?: RapierPhysicsDebugDrawOptions): Graphics;
|
|
4725
|
+
destroy(): void;
|
|
4726
|
+
writeBodyTransform(body: RapierRigidBodyLike, x: number, y: number, rotation: number, wakeUp: boolean): void;
|
|
4727
|
+
removeBinding(binding: RapierPhysicsBinding): void;
|
|
4728
|
+
private createBodyDescriptor;
|
|
4729
|
+
private createColliderDescriptor;
|
|
4730
|
+
private applyStepDelta;
|
|
4731
|
+
private drainCollisionEvents;
|
|
4732
|
+
private buildBoxPath;
|
|
4733
|
+
}
|
|
4734
|
+
export const createRapierPhysicsWorld: (options?: RapierPhysicsWorldOptions) => Promise<RapierPhysicsWorld>;
|
|
4735
|
+
}
|
|
4736
|
+
declare module "physics/index" {
|
|
4737
|
+
export * from "physics/RapierPhysicsWorld";
|
|
4738
|
+
}
|
|
4739
|
+
declare module "index" {
|
|
4740
|
+
export * from "core/index";
|
|
4741
|
+
export * from "audio/index";
|
|
4742
|
+
export * from "input/index";
|
|
4743
|
+
export * from "math/index";
|
|
4744
|
+
export * from "particles/index";
|
|
4745
|
+
export * from "rendering/index";
|
|
4746
|
+
export * from "resources/index";
|
|
4747
|
+
export * from "physics/index";
|
|
4748
|
+
}
|