@codexo/exojs 0.8.4 → 0.10.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 +99 -0
- package/README.md +34 -13
- package/dist/esm/animation/Tween.d.ts +20 -3
- package/dist/esm/animation/Tween.js +16 -8
- package/dist/esm/animation/Tween.js.map +1 -1
- package/dist/esm/animation/TweenManager.d.ts +16 -1
- package/dist/esm/animation/TweenManager.js +27 -2
- package/dist/esm/animation/TweenManager.js.map +1 -1
- package/dist/esm/audio/AudioAnalyser.d.ts +2 -0
- package/dist/esm/audio/AudioAnalyser.js +24 -9
- package/dist/esm/audio/AudioAnalyser.js.map +1 -1
- package/dist/esm/audio/AudioBus.d.ts +1 -0
- package/dist/esm/audio/AudioBus.js +8 -4
- package/dist/esm/audio/AudioBus.js.map +1 -1
- package/dist/esm/audio/AudioListener.d.ts +1 -0
- package/dist/esm/audio/AudioListener.js +7 -5
- package/dist/esm/audio/AudioListener.js.map +1 -1
- package/dist/esm/audio/AudioManager.d.ts +8 -2
- package/dist/esm/audio/AudioManager.js +14 -1
- package/dist/esm/audio/AudioManager.js.map +1 -1
- package/dist/esm/audio/BeatDetector.d.ts +2 -0
- package/dist/esm/audio/BeatDetector.js +27 -661
- package/dist/esm/audio/BeatDetector.js.map +1 -1
- package/dist/esm/audio/Music.d.ts +1 -0
- package/dist/esm/audio/Music.js +7 -3
- package/dist/esm/audio/Music.js.map +1 -1
- package/dist/esm/audio/OscillatorSound.d.ts +1 -0
- package/dist/esm/audio/OscillatorSound.js +7 -3
- package/dist/esm/audio/OscillatorSound.js.map +1 -1
- package/dist/esm/audio/Sound.d.ts +1 -0
- package/dist/esm/audio/Sound.js +7 -3
- package/dist/esm/audio/Sound.js.map +1 -1
- package/dist/esm/audio/audio-context.d.ts +2 -2
- package/dist/esm/audio/audio-context.js +4 -4
- package/dist/esm/audio/audio-context.js.map +1 -1
- package/dist/esm/audio/filters/ChorusFilter.d.ts +1 -0
- package/dist/esm/audio/filters/ChorusFilter.js +7 -3
- package/dist/esm/audio/filters/ChorusFilter.js.map +1 -1
- package/dist/esm/audio/filters/CompressorFilter.d.ts +1 -0
- package/dist/esm/audio/filters/CompressorFilter.js +7 -3
- package/dist/esm/audio/filters/CompressorFilter.js.map +1 -1
- package/dist/esm/audio/filters/DelayFilter.d.ts +1 -0
- package/dist/esm/audio/filters/DelayFilter.js +7 -3
- package/dist/esm/audio/filters/DelayFilter.js.map +1 -1
- package/dist/esm/audio/filters/EqualizerFilter.d.ts +1 -0
- package/dist/esm/audio/filters/EqualizerFilter.js +7 -3
- package/dist/esm/audio/filters/EqualizerFilter.js.map +1 -1
- package/dist/esm/audio/filters/GranularFilter.js +1 -86
- package/dist/esm/audio/filters/GranularFilter.js.map +1 -1
- package/dist/esm/audio/filters/HighpassFilter.d.ts +1 -0
- package/dist/esm/audio/filters/HighpassFilter.js +7 -3
- package/dist/esm/audio/filters/HighpassFilter.js.map +1 -1
- package/dist/esm/audio/filters/LowpassFilter.d.ts +1 -0
- package/dist/esm/audio/filters/LowpassFilter.js +7 -3
- package/dist/esm/audio/filters/LowpassFilter.js.map +1 -1
- package/dist/esm/audio/filters/PitchShiftFilter.js +1 -71
- package/dist/esm/audio/filters/PitchShiftFilter.js.map +1 -1
- package/dist/esm/audio/filters/ReverbFilter.d.ts +1 -0
- package/dist/esm/audio/filters/ReverbFilter.js +7 -3
- package/dist/esm/audio/filters/ReverbFilter.js.map +1 -1
- package/dist/esm/audio/filters/VocoderFilter.js +1 -89
- package/dist/esm/audio/filters/VocoderFilter.js.map +1 -1
- package/dist/esm/audio/filters/WorkletFilter.d.ts +2 -0
- package/dist/esm/audio/filters/WorkletFilter.js +10 -5
- package/dist/esm/audio/filters/WorkletFilter.js.map +1 -1
- package/dist/esm/audio/index.d.ts +15 -10
- package/dist/esm/audio/worklet/registerWorklet.d.ts +1 -1
- package/dist/esm/audio/worklet/registerWorklet.js +2 -2
- package/dist/esm/audio/worklet/registerWorklet.js.map +1 -1
- package/dist/esm/audio/worklets/beat-detector.worklet.d.ts +1 -0
- package/dist/esm/audio/worklets/beat-detector.worklet.js +647 -0
- package/dist/esm/audio/worklets/beat-detector.worklet.js.map +1 -0
- package/dist/esm/audio/worklets/granular.worklet.d.ts +1 -0
- package/dist/esm/audio/worklets/granular.worklet.js +89 -0
- package/dist/esm/audio/worklets/granular.worklet.js.map +1 -0
- package/dist/esm/audio/worklets/pitch-shift.worklet.d.ts +1 -0
- package/dist/esm/audio/worklets/pitch-shift.worklet.js +74 -0
- package/dist/esm/audio/worklets/pitch-shift.worklet.js.map +1 -0
- package/dist/esm/audio/worklets/vocoder.worklet.d.ts +1 -0
- package/dist/esm/audio/worklets/vocoder.worklet.js +92 -0
- package/dist/esm/audio/worklets/vocoder.worklet.js.map +1 -0
- package/dist/esm/core/Application.d.ts +86 -29
- package/dist/esm/core/Application.js +157 -47
- package/dist/esm/core/Application.js.map +1 -1
- package/dist/esm/core/Color.d.ts +0 -8
- package/dist/esm/core/Color.js +0 -24
- package/dist/esm/core/Color.js.map +1 -1
- package/dist/esm/core/Perf.d.ts +23 -0
- package/dist/esm/core/Perf.js +49 -0
- package/dist/esm/core/Perf.js.map +1 -0
- package/dist/esm/core/Scene.d.ts +40 -80
- package/dist/esm/core/Scene.js +63 -43
- package/dist/esm/core/Scene.js.map +1 -1
- package/dist/esm/core/SceneManager.d.ts +11 -25
- package/dist/esm/core/SceneManager.js +37 -100
- package/dist/esm/core/SceneManager.js.map +1 -1
- package/dist/esm/core/SceneNode.d.ts +28 -17
- package/dist/esm/core/SceneNode.js +66 -42
- package/dist/esm/core/SceneNode.js.map +1 -1
- package/dist/esm/core/Signal.d.ts +24 -28
- package/dist/esm/core/Signal.js +64 -50
- package/dist/esm/core/Signal.js.map +1 -1
- package/dist/esm/core/Timer.d.ts +1 -0
- package/dist/esm/core/Timer.js +3 -0
- package/dist/esm/core/Timer.js.map +1 -1
- package/dist/esm/core/capabilities.d.ts +2 -0
- package/dist/esm/core/capabilities.js +15 -0
- package/dist/esm/core/capabilities.js.map +1 -1
- package/dist/esm/core/index.d.ts +1 -0
- package/dist/esm/core/types.d.ts +1 -1
- package/dist/esm/core/utils.d.ts +12 -0
- package/dist/esm/core/utils.js +18 -1
- package/dist/esm/core/utils.js.map +1 -1
- package/dist/esm/debug/BoundingBoxesLayer.js +1 -1
- package/dist/esm/debug/BoundingBoxesLayer.js.map +1 -1
- package/dist/esm/debug/HitTestLayer.js +1 -1
- package/dist/esm/debug/HitTestLayer.js.map +1 -1
- package/dist/esm/debug/PerformanceLayer.js +1 -2
- package/dist/esm/debug/PerformanceLayer.js.map +1 -1
- package/dist/esm/debug/PointerStackLayer.js +1 -2
- package/dist/esm/debug/PointerStackLayer.js.map +1 -1
- package/dist/esm/debug/RenderPassInspectorLayer.js +1 -2
- package/dist/esm/debug/RenderPassInspectorLayer.js.map +1 -1
- package/dist/esm/index.js +37 -10
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/input/InputManager.d.ts +1 -0
- package/dist/esm/input/InputManager.js +30 -3
- package/dist/esm/input/InputManager.js.map +1 -1
- package/dist/esm/input/InteractionManager.d.ts +5 -2
- package/dist/esm/input/InteractionManager.js +29 -18
- package/dist/esm/input/InteractionManager.js.map +1 -1
- package/dist/esm/input/Pointer.js +3 -2
- package/dist/esm/input/Pointer.js.map +1 -1
- package/dist/esm/input/internal/interactionManagerRegistry.d.ts +9 -0
- package/dist/esm/input/internal/interactionManagerRegistry.js +10 -0
- package/dist/esm/input/internal/interactionManagerRegistry.js.map +1 -0
- package/dist/esm/math/AbstractVector.d.ts +1 -7
- package/dist/esm/math/AbstractVector.js +6 -20
- package/dist/esm/math/AbstractVector.js.map +1 -1
- package/dist/esm/math/Circle.js +0 -2
- package/dist/esm/math/Circle.js.map +1 -1
- package/dist/esm/math/Collision.d.ts +9 -3
- package/dist/esm/math/Ellipse.d.ts +2 -5
- package/dist/esm/math/Ellipse.js +10 -7
- package/dist/esm/math/Ellipse.js.map +1 -1
- package/dist/esm/math/ObservableVector.d.ts +1 -1
- package/dist/esm/math/ObservableVector.js +3 -3
- package/dist/esm/math/ObservableVector.js.map +1 -1
- package/dist/esm/math/Polygon.d.ts +0 -2
- package/dist/esm/math/Polygon.js +1 -9
- package/dist/esm/math/Polygon.js.map +1 -1
- package/dist/esm/math/Rectangle.js +0 -2
- package/dist/esm/math/Rectangle.js.map +1 -1
- package/dist/esm/math/collision-detection.d.ts +19 -4
- package/dist/esm/math/collision-detection.js +61 -4
- package/dist/esm/math/collision-detection.js.map +1 -1
- package/dist/esm/math/swept-collision.d.ts +16 -12
- package/dist/esm/math/swept-collision.js +109 -19
- package/dist/esm/math/swept-collision.js.map +1 -1
- package/dist/esm/particles/ParticleSystem.d.ts +8 -5
- package/dist/esm/particles/ParticleSystem.js +10 -6
- package/dist/esm/particles/ParticleSystem.js.map +1 -1
- package/dist/esm/particles/distributions/{Gradient.d.ts → ColorGradient.d.ts} +5 -5
- package/dist/esm/particles/distributions/{Gradient.js → ColorGradient.js} +5 -5
- package/dist/esm/particles/distributions/ColorGradient.js.map +1 -0
- package/dist/esm/particles/distributions/Distribution.d.ts +2 -2
- package/dist/esm/particles/distributions/index.d.ts +2 -2
- package/dist/esm/particles/gpu/ParticleGpuState.js +1 -1
- package/dist/esm/particles/index.d.ts +1 -0
- package/dist/esm/particles/modules/ColorOverLifetime.d.ts +3 -3
- package/dist/esm/particles/modules/ColorOverLifetime.js.map +1 -1
- package/dist/esm/particles/modules/ColorOverSpeed.d.ts +3 -3
- package/dist/esm/particles/modules/ColorOverSpeed.js.map +1 -1
- package/dist/esm/particles/modules/UpdateModule.d.ts +2 -2
- package/dist/esm/particles/modules/UpdateModule.js +1 -1
- package/dist/esm/particles/modules/WgslContribution.d.ts +2 -2
- package/dist/esm/rendering/CallbackRenderPass.d.ts +1 -0
- package/dist/esm/rendering/CallbackRenderPass.js +1 -0
- package/dist/esm/rendering/CallbackRenderPass.js.map +1 -1
- package/dist/esm/rendering/Camera.d.ts +33 -0
- package/dist/esm/rendering/Camera.js +38 -0
- package/dist/esm/rendering/Camera.js.map +1 -0
- package/dist/esm/rendering/Container.d.ts +7 -25
- package/dist/esm/rendering/Container.js +25 -87
- package/dist/esm/rendering/Container.js.map +1 -1
- package/dist/esm/rendering/Drawable.d.ts +8 -10
- package/dist/esm/rendering/Drawable.js +12 -20
- package/dist/esm/rendering/Drawable.js.map +1 -1
- package/dist/esm/rendering/RenderBackend.d.ts +19 -0
- package/dist/esm/rendering/RenderNode.d.ts +82 -11
- package/dist/esm/rendering/RenderNode.js +133 -163
- package/dist/esm/rendering/RenderNode.js.map +1 -1
- package/dist/esm/rendering/RenderPass.d.ts +1 -0
- package/dist/esm/rendering/RenderStats.d.ts +9 -0
- package/dist/esm/rendering/RenderStats.js +2 -0
- package/dist/esm/rendering/RenderStats.js.map +1 -1
- package/dist/esm/rendering/RenderTarget.d.ts +13 -0
- package/dist/esm/rendering/RenderTarget.js +13 -0
- package/dist/esm/rendering/RenderTarget.js.map +1 -1
- package/dist/esm/rendering/RenderTargetPass.js +17 -0
- package/dist/esm/rendering/RenderTargetPass.js.map +1 -1
- package/dist/esm/rendering/RendererRegistry.d.ts +1 -0
- package/dist/esm/rendering/RendererRegistry.js +1 -0
- package/dist/esm/rendering/RendererRegistry.js.map +1 -1
- package/dist/esm/rendering/RenderingContext.d.ts +87 -0
- package/dist/esm/rendering/RenderingContext.js +157 -0
- package/dist/esm/rendering/RenderingContext.js.map +1 -0
- package/dist/esm/rendering/TransformBuffer.d.ts +38 -0
- package/dist/esm/rendering/TransformBuffer.js +116 -0
- package/dist/esm/rendering/TransformBuffer.js.map +1 -0
- package/dist/esm/rendering/View.d.ts +23 -0
- package/dist/esm/rendering/View.js +42 -0
- package/dist/esm/rendering/View.js.map +1 -1
- package/dist/esm/rendering/filters/WebGpuShaderFilter.js +5 -12
- package/dist/esm/rendering/filters/WebGpuShaderFilter.js.map +1 -1
- package/dist/esm/rendering/geometry/Geometry.d.ts +40 -0
- package/dist/esm/rendering/geometry/Geometry.js +228 -0
- package/dist/esm/rendering/geometry/Geometry.js.map +1 -0
- package/dist/esm/rendering/geometry/GeometryAttribute.d.ts +32 -0
- package/dist/esm/rendering/geometry/QuadGeometry.d.ts +5 -0
- package/dist/esm/rendering/gradient/Gradient.d.ts +34 -0
- package/dist/esm/rendering/gradient/Gradient.js +114 -0
- package/dist/esm/rendering/gradient/Gradient.js.map +1 -0
- package/dist/esm/rendering/gradient/LinearGradient.d.ts +10 -0
- package/dist/esm/rendering/gradient/LinearGradient.js +26 -0
- package/dist/esm/rendering/gradient/LinearGradient.js.map +1 -0
- package/dist/esm/rendering/gradient/RadialGradient.d.ts +10 -0
- package/dist/esm/rendering/gradient/RadialGradient.js +25 -0
- package/dist/esm/rendering/gradient/RadialGradient.js.map +1 -0
- package/dist/esm/rendering/index.d.ts +103 -59
- package/dist/esm/rendering/material/Material.d.ts +114 -0
- package/dist/esm/rendering/material/Material.js +111 -0
- package/dist/esm/rendering/material/Material.js.map +1 -0
- package/dist/esm/rendering/material/MaterialKey.d.ts +18 -0
- package/dist/esm/rendering/material/MaterialKey.js +82 -0
- package/dist/esm/rendering/material/MaterialKey.js.map +1 -0
- package/dist/esm/rendering/material/MeshMaterial.d.ts +16 -0
- package/dist/esm/rendering/material/MeshMaterial.js +21 -0
- package/dist/esm/rendering/material/MeshMaterial.js.map +1 -0
- package/dist/esm/rendering/{mesh/MeshShader.d.ts → material/ShaderSource.d.ts} +30 -62
- package/dist/esm/rendering/{mesh/MeshShader.js → material/ShaderSource.js} +36 -62
- package/dist/esm/rendering/material/ShaderSource.js.map +1 -0
- package/dist/esm/rendering/material/SpriteMaterial.d.ts +15 -0
- package/dist/esm/rendering/material/SpriteMaterial.js +20 -0
- package/dist/esm/rendering/material/SpriteMaterial.js.map +1 -0
- package/dist/esm/rendering/mesh/Mesh.d.ts +29 -12
- package/dist/esm/rendering/mesh/Mesh.js +123 -4
- package/dist/esm/rendering/mesh/Mesh.js.map +1 -1
- package/dist/esm/rendering/pass/RenderPassCoordinator.d.ts +63 -0
- package/dist/esm/rendering/pass/RenderPassDescriptor.d.ts +48 -0
- package/dist/esm/rendering/pass/RenderPassDescriptor.js +16 -0
- package/dist/esm/rendering/pass/RenderPassDescriptor.js.map +1 -0
- package/dist/esm/rendering/plan/RenderCommand.d.ts +67 -0
- package/dist/esm/rendering/plan/RenderCommand.js +94 -0
- package/dist/esm/rendering/plan/RenderCommand.js.map +1 -0
- package/dist/esm/rendering/plan/RenderEffectExecutor.d.ts +10 -0
- package/dist/esm/rendering/plan/RenderEffectExecutor.js +159 -0
- package/dist/esm/rendering/plan/RenderEffectExecutor.js.map +1 -0
- package/dist/esm/rendering/plan/RenderPlan.d.ts +23 -0
- package/dist/esm/rendering/plan/RenderPlan.js +12 -0
- package/dist/esm/rendering/plan/RenderPlan.js.map +1 -0
- package/dist/esm/rendering/plan/RenderPlanBuilder.d.ts +31 -0
- package/dist/esm/rendering/plan/RenderPlanBuilder.js +242 -0
- package/dist/esm/rendering/plan/RenderPlanBuilder.js.map +1 -0
- package/dist/esm/rendering/plan/RenderPlanOptimizer.d.ts +10 -0
- package/dist/esm/rendering/plan/RenderPlanOptimizer.js +180 -0
- package/dist/esm/rendering/plan/RenderPlanOptimizer.js.map +1 -0
- package/dist/esm/rendering/plan/RenderPlanPlayer.d.ts +9 -0
- package/dist/esm/rendering/plan/RenderPlanPlayer.js +56 -0
- package/dist/esm/rendering/plan/RenderPlanPlayer.js.map +1 -0
- package/dist/esm/rendering/plan/RenderScope.d.ts +70 -0
- package/dist/esm/rendering/plan/RenderScope.js +16 -0
- package/dist/esm/rendering/plan/RenderScope.js.map +1 -0
- package/dist/esm/rendering/plan/playRenderTree.d.ts +4 -0
- package/dist/esm/rendering/plan/playRenderTree.js +19 -0
- package/dist/esm/rendering/plan/playRenderTree.js.map +1 -0
- package/dist/esm/rendering/shader/Shader.d.ts +1 -0
- package/dist/esm/rendering/shader/Shader.js +1 -0
- package/dist/esm/rendering/shader/Shader.js.map +1 -1
- package/dist/esm/rendering/shader/ShaderUniform.d.ts +1 -0
- package/dist/esm/rendering/shader/ShaderUniform.js +1 -0
- package/dist/esm/rendering/shader/ShaderUniform.js.map +1 -1
- package/dist/esm/rendering/sprite/Sprite.d.ts +25 -3
- package/dist/esm/rendering/sprite/Sprite.js +48 -15
- package/dist/esm/rendering/sprite/Sprite.js.map +1 -1
- package/dist/esm/rendering/sprite/spriteMaterialSources.d.ts +36 -0
- package/dist/esm/rendering/sprite/spriteMaterialSources.js +128 -0
- package/dist/esm/rendering/sprite/spriteMaterialSources.js.map +1 -0
- package/dist/esm/rendering/text/AbstractText.d.ts +36 -0
- package/dist/esm/rendering/text/AbstractText.js +49 -0
- package/dist/esm/rendering/text/AbstractText.js.map +1 -0
- package/dist/esm/rendering/text/BitmapText.d.ts +97 -0
- package/dist/esm/rendering/text/BitmapText.js +220 -0
- package/dist/esm/rendering/text/BitmapText.js.map +1 -0
- package/dist/esm/rendering/text/BmFont.d.ts +50 -0
- package/dist/esm/rendering/text/BmFont.js +24 -0
- package/dist/esm/rendering/text/BmFont.js.map +1 -0
- package/dist/esm/rendering/text/GlyphAtlas.d.ts +104 -0
- package/dist/esm/rendering/text/GlyphAtlas.js +347 -0
- package/dist/esm/rendering/text/GlyphAtlas.js.map +1 -0
- package/dist/esm/rendering/text/GlyphAtlasPool.d.ts +40 -0
- package/dist/esm/rendering/text/GlyphAtlasPool.js +67 -0
- package/dist/esm/rendering/text/GlyphAtlasPool.js.map +1 -0
- package/dist/esm/rendering/text/GlyphSdf.d.ts +92 -0
- package/dist/esm/rendering/text/GlyphSdf.js +220 -0
- package/dist/esm/rendering/text/GlyphSdf.js.map +1 -0
- package/dist/esm/rendering/text/HTMLText.d.ts +107 -0
- package/dist/esm/rendering/text/HTMLText.js +284 -0
- package/dist/esm/rendering/text/HTMLText.js.map +1 -0
- package/dist/esm/rendering/text/LayoutOptions.d.ts +30 -0
- package/dist/esm/rendering/text/Text.d.ts +89 -20
- package/dist/esm/rendering/text/Text.js +176 -101
- package/dist/esm/rendering/text/Text.js.map +1 -1
- package/dist/esm/rendering/text/TextLayout.d.ts +20 -8
- package/dist/esm/rendering/text/TextLayout.js +234 -25
- package/dist/esm/rendering/text/TextLayout.js.map +1 -1
- package/dist/esm/rendering/text/TextStyle.d.ts +154 -87
- package/dist/esm/rendering/text/TextStyle.js +257 -203
- package/dist/esm/rendering/text/TextStyle.js.map +1 -1
- package/dist/esm/rendering/text/types.d.ts +73 -13
- package/dist/esm/rendering/texture/DataTexture.d.ts +5 -0
- package/dist/esm/rendering/texture/DataTexture.js +7 -0
- package/dist/esm/rendering/texture/DataTexture.js.map +1 -1
- package/dist/esm/rendering/texture/Texture.d.ts +1 -0
- package/dist/esm/rendering/texture/Texture.js +1 -0
- package/dist/esm/rendering/texture/Texture.js.map +1 -1
- package/dist/esm/rendering/types.d.ts +3 -1
- package/dist/esm/rendering/types.js +2 -0
- package/dist/esm/rendering/types.js.map +1 -1
- package/dist/esm/rendering/video/Video.d.ts +5 -8
- package/dist/esm/rendering/video/Video.js +12 -13
- package/dist/esm/rendering/video/Video.js.map +1 -1
- package/dist/esm/rendering/webgl2/WebGl2Backend.d.ts +40 -0
- package/dist/esm/rendering/webgl2/WebGl2Backend.js +344 -27
- package/dist/esm/rendering/webgl2/WebGl2Backend.js.map +1 -1
- package/dist/esm/rendering/webgl2/WebGl2MeshRenderer.d.ts +22 -2
- package/dist/esm/rendering/webgl2/WebGl2MeshRenderer.js +404 -112
- package/dist/esm/rendering/webgl2/WebGl2MeshRenderer.js.map +1 -1
- package/dist/esm/rendering/webgl2/WebGl2PassCoordinator.d.ts +57 -0
- package/dist/esm/rendering/webgl2/WebGl2PassCoordinator.js +79 -0
- package/dist/esm/rendering/webgl2/WebGl2PassCoordinator.js.map +1 -0
- package/dist/esm/rendering/webgl2/WebGl2SpriteRenderer.d.ts +12 -0
- package/dist/esm/rendering/webgl2/WebGl2SpriteRenderer.js +214 -58
- package/dist/esm/rendering/webgl2/WebGl2SpriteRenderer.js.map +1 -1
- package/dist/esm/rendering/webgl2/WebGl2StencilClipper.d.ts +34 -0
- package/dist/esm/rendering/webgl2/WebGl2StencilClipper.js +169 -0
- package/dist/esm/rendering/webgl2/WebGl2StencilClipper.js.map +1 -0
- package/dist/esm/rendering/webgl2/WebGl2TextRenderer.d.ts +56 -0
- package/dist/esm/rendering/webgl2/WebGl2TextRenderer.js +486 -0
- package/dist/esm/rendering/webgl2/WebGl2TextRenderer.js.map +1 -0
- package/dist/esm/rendering/webgl2/glsl/mesh.frag.js +1 -1
- package/dist/esm/rendering/webgl2/glsl/mesh.vert.js +1 -1
- package/dist/esm/rendering/webgl2/glsl/stencil-clip.frag.js +4 -0
- package/dist/esm/rendering/webgl2/glsl/stencil-clip.frag.js.map +1 -0
- package/dist/esm/rendering/webgl2/glsl/stencil-clip.vert.js +4 -0
- package/dist/esm/rendering/webgl2/glsl/stencil-clip.vert.js.map +1 -0
- package/dist/esm/rendering/webgl2/glsl/text-color.frag.js +4 -0
- package/dist/esm/rendering/webgl2/glsl/text-color.frag.js.map +1 -0
- package/dist/esm/rendering/webgl2/glsl/text-msdf.frag.js +4 -0
- package/dist/esm/rendering/webgl2/glsl/text-msdf.frag.js.map +1 -0
- package/dist/esm/rendering/webgl2/glsl/text-sdf.frag.js +4 -0
- package/dist/esm/rendering/webgl2/glsl/text-sdf.frag.js.map +1 -0
- package/dist/esm/rendering/webgl2/glsl/text.vert.js +4 -0
- package/dist/esm/rendering/webgl2/glsl/text.vert.js.map +1 -0
- package/dist/esm/rendering/webgpu/WebGpuBackend.d.ts +50 -0
- package/dist/esm/rendering/webgpu/WebGpuBackend.js +151 -27
- package/dist/esm/rendering/webgpu/WebGpuBackend.js.map +1 -1
- package/dist/esm/rendering/webgpu/WebGpuBlendState.js +26 -0
- package/dist/esm/rendering/webgpu/WebGpuBlendState.js.map +1 -1
- package/dist/esm/rendering/webgpu/WebGpuMaskCompositor.js +22 -17
- package/dist/esm/rendering/webgpu/WebGpuMaskCompositor.js.map +1 -1
- package/dist/esm/rendering/webgpu/WebGpuMeshRenderer.d.ts +26 -2
- package/dist/esm/rendering/webgpu/WebGpuMeshRenderer.js +511 -89
- package/dist/esm/rendering/webgpu/WebGpuMeshRenderer.js.map +1 -1
- package/dist/esm/rendering/webgpu/WebGpuParticleRenderer.js +13 -17
- package/dist/esm/rendering/webgpu/WebGpuParticleRenderer.js.map +1 -1
- package/dist/esm/rendering/webgpu/WebGpuPassCoordinator.d.ts +141 -0
- package/dist/esm/rendering/webgpu/WebGpuPassCoordinator.js +270 -0
- package/dist/esm/rendering/webgpu/WebGpuPassCoordinator.js.map +1 -0
- package/dist/esm/rendering/webgpu/WebGpuSpriteRenderer.d.ts +16 -0
- package/dist/esm/rendering/webgpu/WebGpuSpriteRenderer.js +344 -27
- package/dist/esm/rendering/webgpu/WebGpuSpriteRenderer.js.map +1 -1
- package/dist/esm/rendering/webgpu/WebGpuStencilClipper.d.ts +57 -0
- package/dist/esm/rendering/webgpu/WebGpuStencilClipper.js +257 -0
- package/dist/esm/rendering/webgpu/WebGpuStencilClipper.js.map +1 -0
- package/dist/esm/rendering/webgpu/WebGpuStencilState.d.ts +14 -0
- package/dist/esm/rendering/webgpu/WebGpuStencilState.js +36 -0
- package/dist/esm/rendering/webgpu/WebGpuStencilState.js.map +1 -0
- package/dist/esm/rendering/webgpu/WebGpuTextRenderer.d.ts +70 -0
- package/dist/esm/rendering/webgpu/WebGpuTextRenderer.js +775 -0
- package/dist/esm/rendering/webgpu/WebGpuTextRenderer.js.map +1 -0
- package/dist/esm/rendering/webgpu/WebGpuTransformStorage.d.ts +16 -0
- package/dist/esm/rendering/webgpu/WebGpuTransformStorage.js +57 -0
- package/dist/esm/rendering/webgpu/WebGpuTransformStorage.js.map +1 -0
- package/dist/esm/rendering/webgpu/compute/WebGpuComputePipeline.js +96 -0
- package/dist/esm/rendering/webgpu/compute/WebGpuComputePipeline.js.map +1 -0
- package/dist/esm/rendering/webgpu/compute/WebGpuStorageBuffer.js +68 -0
- package/dist/esm/rendering/webgpu/compute/WebGpuStorageBuffer.js.map +1 -0
- package/dist/esm/resources/Asset.d.ts +23 -0
- package/dist/esm/resources/Asset.js +23 -0
- package/dist/esm/resources/Asset.js.map +1 -0
- package/dist/esm/resources/AssetDefinitions.d.ts +137 -0
- package/dist/esm/resources/Assets.d.ts +35 -0
- package/dist/esm/resources/Assets.js +32 -0
- package/dist/esm/resources/Assets.js.map +1 -0
- package/dist/esm/resources/IndexedDbDatabase.js +17 -1
- package/dist/esm/resources/IndexedDbDatabase.js.map +1 -1
- package/dist/esm/resources/IndexedDbStore.js +17 -1
- package/dist/esm/resources/IndexedDbStore.js.map +1 -1
- package/dist/esm/resources/JsonStore.d.ts +18 -0
- package/dist/esm/resources/JsonStore.js +62 -0
- package/dist/esm/resources/JsonStore.js.map +1 -0
- package/dist/esm/resources/Loader.d.ts +244 -18
- package/dist/esm/resources/Loader.js +456 -50
- package/dist/esm/resources/Loader.js.map +1 -1
- package/dist/esm/resources/LoadingQueue.d.ts +28 -0
- package/dist/esm/resources/LoadingQueue.js +59 -0
- package/dist/esm/resources/LoadingQueue.js.map +1 -0
- package/dist/esm/resources/factories/BmFontFactory.d.ts +25 -0
- package/dist/esm/resources/factories/BmFontFactory.js +96 -0
- package/dist/esm/resources/factories/BmFontFactory.js.map +1 -0
- package/dist/esm/resources/factories/CsvFactory.d.ts +35 -0
- package/dist/esm/resources/factories/CsvFactory.js +87 -0
- package/dist/esm/resources/factories/CsvFactory.js.map +1 -0
- package/dist/esm/resources/factories/ImageFactory.d.ts +14 -8
- package/dist/esm/resources/factories/ImageFactory.js +13 -6
- package/dist/esm/resources/factories/ImageFactory.js.map +1 -1
- package/dist/esm/resources/factories/MusicFactory.d.ts +8 -2
- package/dist/esm/resources/factories/MusicFactory.js +25 -14
- package/dist/esm/resources/factories/MusicFactory.js.map +1 -1
- package/dist/esm/resources/factories/SoundFactory.d.ts +2 -2
- package/dist/esm/resources/factories/SoundFactory.js.map +1 -1
- package/dist/esm/resources/factories/SubtitleFactory.d.ts +28 -0
- package/dist/esm/resources/factories/SubtitleFactory.js +203 -0
- package/dist/esm/resources/factories/SubtitleFactory.js.map +1 -0
- package/dist/esm/resources/factories/SvgFactory.d.ts +18 -1
- package/dist/esm/resources/factories/SvgFactory.js +21 -2
- package/dist/esm/resources/factories/SvgFactory.js.map +1 -1
- package/dist/esm/resources/factories/TextureFactory.d.ts +4 -4
- package/dist/esm/resources/factories/TextureFactory.js +8 -4
- package/dist/esm/resources/factories/TextureFactory.js.map +1 -1
- package/dist/esm/resources/factories/VideoFactory.d.ts +8 -2
- package/dist/esm/resources/factories/VideoFactory.js +27 -20
- package/dist/esm/resources/factories/VideoFactory.js.map +1 -1
- package/dist/esm/resources/factories/XmlFactory.d.ts +24 -0
- package/dist/esm/resources/factories/XmlFactory.js +37 -0
- package/dist/esm/resources/factories/XmlFactory.js.map +1 -0
- package/dist/esm/resources/index.d.ts +9 -1
- package/dist/esm/resources/tokens.d.ts +49 -3
- package/dist/esm/resources/tokens.js +50 -4
- package/dist/esm/resources/tokens.js.map +1 -1
- package/dist/exo.esm.js +15382 -8078
- package/dist/exo.esm.js.map +1 -1
- package/package.json +34 -16
- package/dist/esm/input/interaction-hooks.d.ts +0 -34
- package/dist/esm/input/interaction-hooks.js +0 -35
- package/dist/esm/input/interaction-hooks.js.map +0 -1
- package/dist/esm/particles/distributions/Gradient.js.map +0 -1
- package/dist/esm/rendering/mesh/MeshShader.js.map +0 -1
- package/dist/esm/rendering/text/DynamicGlyphAtlas.d.ts +0 -33
- package/dist/esm/rendering/text/DynamicGlyphAtlas.js +0 -134
- package/dist/esm/rendering/text/DynamicGlyphAtlas.js.map +0 -1
- package/dist/esm/rendering/text/atlas-singleton.d.ts +0 -7
- package/dist/esm/rendering/text/atlas-singleton.js +0 -17
- package/dist/esm/rendering/text/atlas-singleton.js.map +0 -1
- package/dist/esm/resources/factories/VttFactory.d.ts +0 -24
- package/dist/esm/resources/factories/VttFactory.js +0 -158
- package/dist/esm/resources/factories/VttFactory.js.map +0 -1
- package/dist/esm/vendor/webgl-debug.js +0 -1160
- package/dist/esm/vendor/webgl-debug.js.map +0 -1
package/dist/esm/core/Scene.d.ts
CHANGED
|
@@ -1,16 +1,14 @@
|
|
|
1
|
+
import type { Tween } from '@/animation/Tween';
|
|
1
2
|
import type { InputBinding, InputBindingOptions, InputChannel } from '@/input/InputBinding';
|
|
2
|
-
import type { Pointer } from '@/input/Pointer';
|
|
3
|
-
import type { Vector } from '@/math/Vector';
|
|
4
3
|
import { Container } from '@/rendering/Container';
|
|
5
|
-
import type {
|
|
4
|
+
import type { RenderingContext } from '@/rendering/RenderingContext';
|
|
6
5
|
import type { RenderNode } from '@/rendering/RenderNode';
|
|
7
6
|
import type { Loader } from '@/resources/Loader';
|
|
8
7
|
import type { Application } from './Application';
|
|
9
8
|
import type { Time } from './Time';
|
|
10
9
|
/**
|
|
11
|
-
* Scene-bound input proxy
|
|
12
|
-
* the owning scene
|
|
13
|
-
* {@link Scene.inputs}; do not instantiate directly.
|
|
10
|
+
* Scene-bound input proxy. Bindings created here are automatically unbound
|
|
11
|
+
* when the owning scene is destroyed. Access via {@link Scene.inputs}.
|
|
14
12
|
*/
|
|
15
13
|
declare class SceneInputs {
|
|
16
14
|
private readonly _scene;
|
|
@@ -20,10 +18,23 @@ declare class SceneInputs {
|
|
|
20
18
|
onActive(channel: InputChannel | readonly InputChannel[], callback: (value: number) => void, options?: InputBindingOptions): InputBinding;
|
|
21
19
|
onStop(channel: InputChannel | readonly InputChannel[], callback: (value: number) => void, options?: InputBindingOptions): InputBinding;
|
|
22
20
|
onTrigger(channel: InputChannel | readonly InputChannel[], callback: (value: number) => void, options?: InputBindingOptions): InputBinding;
|
|
23
|
-
/** @internal
|
|
21
|
+
/** @internal */
|
|
24
22
|
_disposeAll(): void;
|
|
25
23
|
private _track;
|
|
26
24
|
}
|
|
25
|
+
/**
|
|
26
|
+
* Scene-bound tween proxy. Tweens created or added here are automatically
|
|
27
|
+
* stopped when the owning scene is destroyed. Access via {@link Scene.tweens}.
|
|
28
|
+
*/
|
|
29
|
+
declare class SceneTweens {
|
|
30
|
+
private readonly _scene;
|
|
31
|
+
private readonly _tweens;
|
|
32
|
+
constructor(_scene: Scene);
|
|
33
|
+
create<T extends object>(target: T): Tween<T>;
|
|
34
|
+
add(tween: Tween): this;
|
|
35
|
+
/** @internal */
|
|
36
|
+
_disposeAll(): void;
|
|
37
|
+
}
|
|
27
38
|
/**
|
|
28
39
|
* How a {@link Scene} composes with scenes already on the stack.
|
|
29
40
|
* - `'overlay'`: render on top, scenes below also render and update.
|
|
@@ -31,65 +42,17 @@ declare class SceneInputs {
|
|
|
31
42
|
* - `'opaque'`: render on top, scenes below neither render nor update.
|
|
32
43
|
*/
|
|
33
44
|
export type SceneStackMode = 'overlay' | 'modal' | 'opaque';
|
|
34
|
-
/**
|
|
35
|
-
* How a {@link Scene} interacts with the input event stream.
|
|
36
|
-
* - `'capture'`: receive events; do not forward to scenes below.
|
|
37
|
-
* - `'passthrough'`: receive events; also forward to scenes below.
|
|
38
|
-
* - `'transparent'`: do not receive events; forward to scenes below.
|
|
39
|
-
*/
|
|
40
|
-
export type SceneInputMode = 'capture' | 'passthrough' | 'transparent';
|
|
41
45
|
/** Bag of overrides for {@link Scene.setParticipationPolicy}. */
|
|
42
46
|
export interface SceneParticipationPolicy {
|
|
43
47
|
mode?: SceneStackMode;
|
|
44
|
-
input?: SceneInputMode;
|
|
45
48
|
}
|
|
46
|
-
/**
|
|
47
|
-
* Discriminated union of input events delivered to {@link Scene.handleInput}.
|
|
48
|
-
* Returning `true` from the handler stops further propagation down the
|
|
49
|
-
* scene stack (consume the event); falsy/`undefined` lets the next scene
|
|
50
|
-
* see it (subject to the receiving scene's {@link SceneInputMode}).
|
|
51
|
-
*/
|
|
52
|
-
export type SceneInputEvent = {
|
|
53
|
-
type: 'keyDown';
|
|
54
|
-
channel: number;
|
|
55
|
-
} | {
|
|
56
|
-
type: 'keyUp';
|
|
57
|
-
channel: number;
|
|
58
|
-
} | {
|
|
59
|
-
type: 'pointerEnter';
|
|
60
|
-
pointer: Pointer;
|
|
61
|
-
} | {
|
|
62
|
-
type: 'pointerLeave';
|
|
63
|
-
pointer: Pointer;
|
|
64
|
-
} | {
|
|
65
|
-
type: 'pointerDown';
|
|
66
|
-
pointer: Pointer;
|
|
67
|
-
} | {
|
|
68
|
-
type: 'pointerMove';
|
|
69
|
-
pointer: Pointer;
|
|
70
|
-
} | {
|
|
71
|
-
type: 'pointerUp';
|
|
72
|
-
pointer: Pointer;
|
|
73
|
-
} | {
|
|
74
|
-
type: 'pointerTap';
|
|
75
|
-
pointer: Pointer;
|
|
76
|
-
} | {
|
|
77
|
-
type: 'pointerSwipe';
|
|
78
|
-
pointer: Pointer;
|
|
79
|
-
} | {
|
|
80
|
-
type: 'pointerCancel';
|
|
81
|
-
pointer: Pointer;
|
|
82
|
-
} | {
|
|
83
|
-
type: 'mouseWheel';
|
|
84
|
-
wheel: Vector;
|
|
85
|
-
};
|
|
86
49
|
/**
|
|
87
50
|
* A scene's lifecycle host. Subclass to define scene behavior:
|
|
88
51
|
*
|
|
89
52
|
* class GameScene extends Scene {
|
|
90
53
|
* override init(loader: Loader): void { ... }
|
|
91
54
|
* override update(delta: Time): void { ... }
|
|
92
|
-
* override draw(
|
|
55
|
+
* override draw(context: RenderingContext): void { ... }
|
|
93
56
|
* }
|
|
94
57
|
*
|
|
95
58
|
* app.start(new GameScene());
|
|
@@ -98,15 +61,16 @@ export type SceneInputEvent = {
|
|
|
98
61
|
*
|
|
99
62
|
* app.start(new class extends Scene {
|
|
100
63
|
* override update(delta) { ... }
|
|
101
|
-
* override draw(
|
|
64
|
+
* override draw(context) { ... }
|
|
102
65
|
* });
|
|
66
|
+
* @stable
|
|
103
67
|
*/
|
|
104
68
|
export declare class Scene {
|
|
105
69
|
protected _app: Application | null;
|
|
106
70
|
protected readonly _root: Container;
|
|
107
71
|
protected _stackMode: SceneStackMode;
|
|
108
|
-
|
|
109
|
-
|
|
72
|
+
private _inputs;
|
|
73
|
+
private _tweens;
|
|
110
74
|
get app(): Application | null;
|
|
111
75
|
set app(app: Application | null);
|
|
112
76
|
/**
|
|
@@ -114,7 +78,7 @@ export declare class Scene {
|
|
|
114
78
|
*
|
|
115
79
|
* `Scene.root` is an **ownership and traversal anchor**, not an
|
|
116
80
|
* automatic render-authoritative root. The framework never calls
|
|
117
|
-
* `root.render(backend)` for you. `Scene.draw(
|
|
81
|
+
* `root.render(backend)` for you. `Scene.draw(context)` is the
|
|
118
82
|
* explicit orchestration point — see {@link Scene.draw}.
|
|
119
83
|
*
|
|
120
84
|
* The root exists eagerly so `addChild` / `removeChild` can proxy
|
|
@@ -124,23 +88,26 @@ export declare class Scene {
|
|
|
124
88
|
*/
|
|
125
89
|
get root(): Container;
|
|
126
90
|
/**
|
|
127
|
-
* Scene-bound input registry. Bindings created via
|
|
128
|
-
*
|
|
129
|
-
*
|
|
91
|
+
* Scene-bound input registry. Bindings created via `this.inputs.onTrigger(...)`
|
|
92
|
+
* etc. are automatically unbound when the scene is destroyed — no manual
|
|
93
|
+
* cleanup required.
|
|
130
94
|
*
|
|
131
|
-
*
|
|
132
|
-
* {@link Scene.app} is set (i.e. before the scene is registered with
|
|
133
|
-
* a {@link SceneManager}).
|
|
95
|
+
* Throws if accessed before the scene is attached to an {@link Application}.
|
|
134
96
|
*/
|
|
135
97
|
get inputs(): SceneInputs;
|
|
98
|
+
/**
|
|
99
|
+
* Scene-bound tween registry. Tweens created via `this.tweens.create(...)`
|
|
100
|
+
* are automatically stopped when the scene is destroyed — no manual cleanup
|
|
101
|
+
* required.
|
|
102
|
+
*
|
|
103
|
+
* Throws if accessed before the scene is attached to an {@link Application}.
|
|
104
|
+
*/
|
|
105
|
+
get tweens(): SceneTweens;
|
|
136
106
|
get stackMode(): SceneStackMode;
|
|
137
107
|
set stackMode(mode: SceneStackMode);
|
|
138
|
-
get inputMode(): SceneInputMode;
|
|
139
|
-
set inputMode(mode: SceneInputMode);
|
|
140
108
|
addChild(child: RenderNode): this;
|
|
141
109
|
removeChild(child: RenderNode): this;
|
|
142
110
|
setParticipationPolicy(policy: SceneParticipationPolicy): this;
|
|
143
|
-
getParticipationPolicy(): SceneParticipationPolicy;
|
|
144
111
|
/**
|
|
145
112
|
* Async asset preload hook. Called once before {@link Scene.init} the
|
|
146
113
|
* first time the scene is pushed. Use the loader to register and
|
|
@@ -168,21 +135,14 @@ export declare class Scene {
|
|
|
168
135
|
* automatically traverse {@link Scene.root}. Auto-rendering the
|
|
169
136
|
* full hierarchy would conflict with ExoJS's "explicit instead of
|
|
170
137
|
* implicit" identity. Users decide which subtree(s) render each
|
|
171
|
-
* frame — `this.root
|
|
172
|
-
* selective rendering (e.g. `
|
|
173
|
-
* `ui` for a given frame) is equally valid and intentionally
|
|
138
|
+
* frame — `context.render(this.root)` is the recommended high-level
|
|
139
|
+
* path, but selective rendering (e.g. `context.render(world)` while
|
|
140
|
+
* skipping `ui` for a given frame) is equally valid and intentionally
|
|
174
141
|
* supported.
|
|
175
142
|
*
|
|
176
143
|
* @see Scene.root for why root is structural, not render-authoritative.
|
|
177
144
|
*/
|
|
178
|
-
draw(
|
|
179
|
-
/**
|
|
180
|
-
* Input event hook. Override to react to keyboard, pointer, and wheel
|
|
181
|
-
* events delivered to this scene by the {@link InputManager}. Return
|
|
182
|
-
* `true` to consume the event (stops it propagating to scenes below);
|
|
183
|
-
* any other return value lets it through.
|
|
184
|
-
*/
|
|
185
|
-
handleInput(_event: SceneInputEvent): boolean | void;
|
|
145
|
+
draw(_context: RenderingContext): void;
|
|
186
146
|
/**
|
|
187
147
|
* Async asset teardown hook. Called when the scene is finally popped
|
|
188
148
|
* off the stack. Use the loader to release assets that are scene-private
|
package/dist/esm/core/Scene.js
CHANGED
|
@@ -1,9 +1,8 @@
|
|
|
1
1
|
import { Container } from '../rendering/Container.js';
|
|
2
2
|
|
|
3
3
|
/**
|
|
4
|
-
* Scene-bound input proxy
|
|
5
|
-
* the owning scene
|
|
6
|
-
* {@link Scene.inputs}; do not instantiate directly.
|
|
4
|
+
* Scene-bound input proxy. Bindings created here are automatically unbound
|
|
5
|
+
* when the owning scene is destroyed. Access via {@link Scene.inputs}.
|
|
7
6
|
*/
|
|
8
7
|
class SceneInputs {
|
|
9
8
|
_scene;
|
|
@@ -23,9 +22,9 @@ class SceneInputs {
|
|
|
23
22
|
onTrigger(channel, callback, options) {
|
|
24
23
|
return this._track(this._scene.app.input.onTrigger(channel, callback, options));
|
|
25
24
|
}
|
|
26
|
-
/** @internal
|
|
25
|
+
/** @internal */
|
|
27
26
|
_disposeAll() {
|
|
28
|
-
for (const binding of
|
|
27
|
+
for (const binding of this._bindings) {
|
|
29
28
|
binding.unbind();
|
|
30
29
|
}
|
|
31
30
|
this._bindings.clear();
|
|
@@ -35,13 +34,41 @@ class SceneInputs {
|
|
|
35
34
|
return binding;
|
|
36
35
|
}
|
|
37
36
|
}
|
|
37
|
+
/**
|
|
38
|
+
* Scene-bound tween proxy. Tweens created or added here are automatically
|
|
39
|
+
* stopped when the owning scene is destroyed. Access via {@link Scene.tweens}.
|
|
40
|
+
*/
|
|
41
|
+
class SceneTweens {
|
|
42
|
+
_scene;
|
|
43
|
+
_tweens = new Set();
|
|
44
|
+
constructor(_scene) {
|
|
45
|
+
this._scene = _scene;
|
|
46
|
+
}
|
|
47
|
+
create(target) {
|
|
48
|
+
const tween = this._scene.app.tweens.create(target);
|
|
49
|
+
this._tweens.add(tween);
|
|
50
|
+
return tween;
|
|
51
|
+
}
|
|
52
|
+
add(tween) {
|
|
53
|
+
this._scene.app.tweens.add(tween);
|
|
54
|
+
this._tweens.add(tween);
|
|
55
|
+
return this;
|
|
56
|
+
}
|
|
57
|
+
/** @internal */
|
|
58
|
+
_disposeAll() {
|
|
59
|
+
for (const tween of this._tweens) {
|
|
60
|
+
tween.stop();
|
|
61
|
+
}
|
|
62
|
+
this._tweens.clear();
|
|
63
|
+
}
|
|
64
|
+
}
|
|
38
65
|
/**
|
|
39
66
|
* A scene's lifecycle host. Subclass to define scene behavior:
|
|
40
67
|
*
|
|
41
68
|
* class GameScene extends Scene {
|
|
42
69
|
* override init(loader: Loader): void { ... }
|
|
43
70
|
* override update(delta: Time): void { ... }
|
|
44
|
-
* override draw(
|
|
71
|
+
* override draw(context: RenderingContext): void { ... }
|
|
45
72
|
* }
|
|
46
73
|
*
|
|
47
74
|
* app.start(new GameScene());
|
|
@@ -50,15 +77,16 @@ class SceneInputs {
|
|
|
50
77
|
*
|
|
51
78
|
* app.start(new class extends Scene {
|
|
52
79
|
* override update(delta) { ... }
|
|
53
|
-
* override draw(
|
|
80
|
+
* override draw(context) { ... }
|
|
54
81
|
* });
|
|
82
|
+
* @stable
|
|
55
83
|
*/
|
|
56
84
|
class Scene {
|
|
57
85
|
_app = null;
|
|
58
86
|
_root = new Container();
|
|
59
87
|
_stackMode = 'overlay';
|
|
60
|
-
_inputMode = 'capture';
|
|
61
88
|
_inputs = null;
|
|
89
|
+
_tweens = null;
|
|
62
90
|
get app() {
|
|
63
91
|
return this._app;
|
|
64
92
|
}
|
|
@@ -70,7 +98,7 @@ class Scene {
|
|
|
70
98
|
*
|
|
71
99
|
* `Scene.root` is an **ownership and traversal anchor**, not an
|
|
72
100
|
* automatic render-authoritative root. The framework never calls
|
|
73
|
-
* `root.render(backend)` for you. `Scene.draw(
|
|
101
|
+
* `root.render(backend)` for you. `Scene.draw(context)` is the
|
|
74
102
|
* explicit orchestration point — see {@link Scene.draw}.
|
|
75
103
|
*
|
|
76
104
|
* The root exists eagerly so `addChild` / `removeChild` can proxy
|
|
@@ -82,13 +110,11 @@ class Scene {
|
|
|
82
110
|
return this._root;
|
|
83
111
|
}
|
|
84
112
|
/**
|
|
85
|
-
* Scene-bound input registry. Bindings created via
|
|
86
|
-
*
|
|
87
|
-
*
|
|
113
|
+
* Scene-bound input registry. Bindings created via `this.inputs.onTrigger(...)`
|
|
114
|
+
* etc. are automatically unbound when the scene is destroyed — no manual
|
|
115
|
+
* cleanup required.
|
|
88
116
|
*
|
|
89
|
-
*
|
|
90
|
-
* {@link Scene.app} is set (i.e. before the scene is registered with
|
|
91
|
-
* a {@link SceneManager}).
|
|
117
|
+
* Throws if accessed before the scene is attached to an {@link Application}.
|
|
92
118
|
*/
|
|
93
119
|
get inputs() {
|
|
94
120
|
if (this._inputs === null) {
|
|
@@ -99,18 +125,28 @@ class Scene {
|
|
|
99
125
|
}
|
|
100
126
|
return this._inputs;
|
|
101
127
|
}
|
|
128
|
+
/**
|
|
129
|
+
* Scene-bound tween registry. Tweens created via `this.tweens.create(...)`
|
|
130
|
+
* are automatically stopped when the scene is destroyed — no manual cleanup
|
|
131
|
+
* required.
|
|
132
|
+
*
|
|
133
|
+
* Throws if accessed before the scene is attached to an {@link Application}.
|
|
134
|
+
*/
|
|
135
|
+
get tweens() {
|
|
136
|
+
if (this._tweens === null) {
|
|
137
|
+
if (this._app === null) {
|
|
138
|
+
throw new Error('Scene.tweens is unavailable before the scene is attached to an Application.');
|
|
139
|
+
}
|
|
140
|
+
this._tweens = new SceneTweens(this);
|
|
141
|
+
}
|
|
142
|
+
return this._tweens;
|
|
143
|
+
}
|
|
102
144
|
get stackMode() {
|
|
103
145
|
return this._stackMode;
|
|
104
146
|
}
|
|
105
147
|
set stackMode(mode) {
|
|
106
148
|
this._stackMode = mode;
|
|
107
149
|
}
|
|
108
|
-
get inputMode() {
|
|
109
|
-
return this._inputMode;
|
|
110
|
-
}
|
|
111
|
-
set inputMode(mode) {
|
|
112
|
-
this._inputMode = mode;
|
|
113
|
-
}
|
|
114
150
|
addChild(child) {
|
|
115
151
|
this._root.addChild(child);
|
|
116
152
|
return this;
|
|
@@ -123,17 +159,8 @@ class Scene {
|
|
|
123
159
|
if (policy.mode) {
|
|
124
160
|
this._stackMode = policy.mode;
|
|
125
161
|
}
|
|
126
|
-
if (policy.input) {
|
|
127
|
-
this._inputMode = policy.input;
|
|
128
|
-
}
|
|
129
162
|
return this;
|
|
130
163
|
}
|
|
131
|
-
getParticipationPolicy() {
|
|
132
|
-
return {
|
|
133
|
-
mode: this._stackMode,
|
|
134
|
-
input: this._inputMode,
|
|
135
|
-
};
|
|
136
|
-
}
|
|
137
164
|
/**
|
|
138
165
|
* Async asset preload hook. Called once before {@link Scene.init} the
|
|
139
166
|
* first time the scene is pushed. Use the loader to register and
|
|
@@ -167,23 +194,14 @@ class Scene {
|
|
|
167
194
|
* automatically traverse {@link Scene.root}. Auto-rendering the
|
|
168
195
|
* full hierarchy would conflict with ExoJS's "explicit instead of
|
|
169
196
|
* implicit" identity. Users decide which subtree(s) render each
|
|
170
|
-
* frame — `this.root
|
|
171
|
-
* selective rendering (e.g. `
|
|
172
|
-
* `ui` for a given frame) is equally valid and intentionally
|
|
197
|
+
* frame — `context.render(this.root)` is the recommended high-level
|
|
198
|
+
* path, but selective rendering (e.g. `context.render(world)` while
|
|
199
|
+
* skipping `ui` for a given frame) is equally valid and intentionally
|
|
173
200
|
* supported.
|
|
174
201
|
*
|
|
175
202
|
* @see Scene.root for why root is structural, not render-authoritative.
|
|
176
203
|
*/
|
|
177
|
-
draw(
|
|
178
|
-
// override in subclass
|
|
179
|
-
}
|
|
180
|
-
/**
|
|
181
|
-
* Input event hook. Override to react to keyboard, pointer, and wheel
|
|
182
|
-
* events delivered to this scene by the {@link InputManager}. Return
|
|
183
|
-
* `true` to consume the event (stops it propagating to scenes below);
|
|
184
|
-
* any other return value lets it through.
|
|
185
|
-
*/
|
|
186
|
-
handleInput(_event) {
|
|
204
|
+
draw(_context) {
|
|
187
205
|
// override in subclass
|
|
188
206
|
}
|
|
189
207
|
/**
|
|
@@ -197,6 +215,8 @@ class Scene {
|
|
|
197
215
|
destroy() {
|
|
198
216
|
this._inputs?._disposeAll();
|
|
199
217
|
this._inputs = null;
|
|
218
|
+
this._tweens?._disposeAll();
|
|
219
|
+
this._tweens = null;
|
|
200
220
|
this._root.destroy();
|
|
201
221
|
this._app = null;
|
|
202
222
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Scene.js","sources":["../../../../src/core/Scene.ts"],"sourcesContent":[null],"names":[],"mappings":";;
|
|
1
|
+
{"version":3,"file":"Scene.js","sources":["../../../../src/core/Scene.ts"],"sourcesContent":[null],"names":[],"mappings":"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"}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import type { Application } from './Application';
|
|
2
2
|
import { Color } from './Color';
|
|
3
|
-
import type {
|
|
3
|
+
import type { SceneParticipationPolicy } from './Scene';
|
|
4
|
+
import { Scene } from './Scene';
|
|
4
5
|
import { Signal } from './Signal';
|
|
5
6
|
import type { Time } from './Time';
|
|
6
7
|
/**
|
|
@@ -21,7 +22,7 @@ export interface SetSceneOptions {
|
|
|
21
22
|
}
|
|
22
23
|
/**
|
|
23
24
|
* Options passed to {@link SceneManager.pushScene}. Inherits
|
|
24
|
-
* {@link SceneParticipationPolicy} so the pushed scene's stack
|
|
25
|
+
* {@link SceneParticipationPolicy} so the pushed scene's stack mode
|
|
25
26
|
* can be overridden at the call site without subclassing.
|
|
26
27
|
*/
|
|
27
28
|
export interface PushSceneOptions extends SceneParticipationPolicy {
|
|
@@ -34,20 +35,15 @@ export interface PopSceneOptions {
|
|
|
34
35
|
/**
|
|
35
36
|
* Stack-based scene controller owned by {@link Application}. Maintains an
|
|
36
37
|
* ordered stack of {@link Scene} instances, each tagged with its
|
|
37
|
-
* participation policy ({@link SceneStackMode}
|
|
38
|
+
* participation policy ({@link SceneStackMode}).
|
|
38
39
|
* Scenes higher on the stack overlay scenes lower; the policy of each
|
|
39
|
-
* scene determines whether scenes below continue to update / render
|
|
40
|
-
* whether input events propagate down past it.
|
|
40
|
+
* scene determines whether scenes below continue to update / render.
|
|
41
41
|
*
|
|
42
42
|
* Use {@link SceneManager.setScene} to replace the entire stack with one
|
|
43
43
|
* scene, {@link SceneManager.pushScene} to overlay a new scene on top, and
|
|
44
44
|
* {@link SceneManager.popScene} to remove the topmost. All three accept an
|
|
45
45
|
* optional fade transition.
|
|
46
46
|
*
|
|
47
|
-
* Input from the {@link InputManager} is automatically routed through the
|
|
48
|
-
* stack top-to-bottom; each scene's {@link Scene.handleInput} return value
|
|
49
|
-
* plus the scene's input policy decide whether the next scene below
|
|
50
|
-
* receives the event.
|
|
51
47
|
*/
|
|
52
48
|
export declare class SceneManager {
|
|
53
49
|
private readonly _app;
|
|
@@ -62,9 +58,13 @@ export declare class SceneManager {
|
|
|
62
58
|
readonly onUpdateScene: Signal<[Scene]>;
|
|
63
59
|
/** Fires just before a scene is unloaded (`unload` then `destroy`). */
|
|
64
60
|
readonly onStopScene: Signal<[Scene]>;
|
|
61
|
+
private readonly _asyncUpdateWarned;
|
|
62
|
+
private readonly _asyncDrawWarned;
|
|
63
|
+
private readonly _updateScratch;
|
|
64
|
+
private readonly _drawScratch;
|
|
65
65
|
constructor(app: Application);
|
|
66
|
-
get
|
|
67
|
-
set
|
|
66
|
+
get currentScene(): Scene | null;
|
|
67
|
+
set currentScene(scene: Scene | null);
|
|
68
68
|
get scenes(): readonly Scene[];
|
|
69
69
|
/**
|
|
70
70
|
* Replace the entire scene stack with `scene`, or clear it when `scene`
|
|
@@ -105,20 +105,6 @@ export declare class SceneManager {
|
|
|
105
105
|
private _unloadAllScenesOnDestroy;
|
|
106
106
|
private _resolveParticipationPolicy;
|
|
107
107
|
private _resolveParticipants;
|
|
108
|
-
private _subscribeInputRouting;
|
|
109
|
-
private _unsubscribeInputRouting;
|
|
110
|
-
private _dispatchInput;
|
|
111
|
-
private readonly _handleKeyDown;
|
|
112
|
-
private readonly _handleKeyUp;
|
|
113
|
-
private readonly _handlePointerEnter;
|
|
114
|
-
private readonly _handlePointerLeave;
|
|
115
|
-
private readonly _handlePointerDown;
|
|
116
|
-
private readonly _handlePointerMove;
|
|
117
|
-
private readonly _handlePointerUp;
|
|
118
|
-
private readonly _handlePointerTap;
|
|
119
|
-
private readonly _handlePointerSwipe;
|
|
120
|
-
private readonly _handlePointerCancel;
|
|
121
|
-
private readonly _handleMouseWheel;
|
|
122
108
|
private _runWithTransition;
|
|
123
109
|
private _advanceTransition;
|
|
124
110
|
private _executeTransitionAction;
|