@codexo/exojs 0.13.0 → 0.14.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 +133 -6
- package/README.md +80 -63
- package/dist/esm/animation/Tween.js +1 -1
- package/dist/esm/animation/Tween.js.map +1 -1
- package/dist/esm/animation/TweenManager.d.ts +9 -5
- package/dist/esm/animation/TweenManager.d.ts.map +1 -1
- package/dist/esm/animation/TweenManager.js +14 -8
- package/dist/esm/animation/TweenManager.js.map +1 -1
- package/dist/esm/animation/index.d.ts +6 -4
- package/dist/esm/animation/index.d.ts.map +1 -1
- package/dist/esm/audio/AudioBus.d.ts +12 -12
- package/dist/esm/audio/AudioBus.js +29 -29
- package/dist/esm/audio/AudioEffect.d.ts +18 -0
- package/dist/esm/audio/AudioEffect.d.ts.map +1 -0
- package/dist/esm/audio/AudioEffect.js +16 -0
- package/dist/esm/audio/AudioEffect.js.map +1 -0
- package/dist/esm/audio/AudioGenerator.d.ts +91 -0
- package/dist/esm/audio/AudioGenerator.d.ts.map +1 -0
- package/dist/esm/audio/AudioGenerator.js +165 -0
- package/dist/esm/audio/AudioGenerator.js.map +1 -0
- package/dist/esm/audio/AudioGeneratorVoice.d.ts +52 -0
- package/dist/esm/audio/AudioGeneratorVoice.d.ts.map +1 -0
- package/dist/esm/audio/AudioGeneratorVoice.js +141 -0
- package/dist/esm/audio/AudioGeneratorVoice.js.map +1 -0
- package/dist/esm/audio/AudioInput.d.ts +39 -0
- package/dist/esm/audio/AudioInput.d.ts.map +1 -0
- package/dist/esm/audio/AudioInput.js +53 -0
- package/dist/esm/audio/AudioInput.js.map +1 -0
- package/dist/esm/audio/AudioManager.d.ts +72 -34
- package/dist/esm/audio/AudioManager.d.ts.map +1 -1
- package/dist/esm/audio/AudioManager.js +97 -51
- package/dist/esm/audio/AudioManager.js.map +1 -1
- package/dist/esm/audio/AudioStream.d.ts +49 -0
- package/dist/esm/audio/AudioStream.d.ts.map +1 -0
- package/dist/esm/audio/AudioStream.js +109 -0
- package/dist/esm/audio/AudioStream.js.map +1 -0
- package/dist/esm/audio/AudioStreamVoice.d.ts +61 -0
- package/dist/esm/audio/AudioStreamVoice.d.ts.map +1 -0
- package/dist/esm/audio/AudioStreamVoice.js +137 -0
- package/dist/esm/audio/AudioStreamVoice.js.map +1 -0
- package/dist/esm/audio/BaseVoice.d.ts +111 -0
- package/dist/esm/audio/BaseVoice.d.ts.map +1 -0
- package/dist/esm/audio/BaseVoice.js +298 -0
- package/dist/esm/audio/BaseVoice.js.map +1 -0
- package/dist/esm/audio/BiquadEffect.d.ts +53 -0
- package/dist/esm/audio/BiquadEffect.d.ts.map +1 -0
- package/dist/esm/audio/BiquadEffect.js +110 -0
- package/dist/esm/audio/BiquadEffect.js.map +1 -0
- package/dist/esm/audio/InputVoice.d.ts +41 -0
- package/dist/esm/audio/InputVoice.d.ts.map +1 -0
- package/dist/esm/audio/InputVoice.js +85 -0
- package/dist/esm/audio/InputVoice.js.map +1 -0
- package/dist/esm/audio/NoopVoice.d.ts +29 -0
- package/dist/esm/audio/NoopVoice.d.ts.map +1 -0
- package/dist/esm/audio/NoopVoice.js +52 -0
- package/dist/esm/audio/NoopVoice.js.map +1 -0
- package/dist/esm/audio/Playable.d.ts +135 -0
- package/dist/esm/audio/Playable.d.ts.map +1 -0
- package/dist/esm/audio/Sound.d.ts +64 -69
- package/dist/esm/audio/Sound.d.ts.map +1 -1
- package/dist/esm/audio/Sound.js +176 -377
- package/dist/esm/audio/Sound.js.map +1 -1
- package/dist/esm/audio/SoundVoice.d.ts +63 -0
- package/dist/esm/audio/SoundVoice.d.ts.map +1 -0
- package/dist/esm/audio/SoundVoice.js +168 -0
- package/dist/esm/audio/SoundVoice.js.map +1 -0
- package/dist/esm/audio/{filters/WorkletFilter.d.ts → WorkletEffect.d.ts} +3 -3
- package/dist/esm/audio/WorkletEffect.d.ts.map +1 -0
- package/dist/esm/audio/{filters/WorkletFilter.js → WorkletEffect.js} +6 -6
- package/dist/esm/audio/WorkletEffect.js.map +1 -0
- package/dist/esm/audio/audio-context.js +1 -1
- package/dist/esm/audio/audio-context.js.map +1 -1
- package/dist/esm/audio/crossFade.d.ts +22 -13
- package/dist/esm/audio/crossFade.d.ts.map +1 -1
- package/dist/esm/audio/crossFade.js +21 -13
- package/dist/esm/audio/crossFade.js.map +1 -1
- package/dist/esm/audio/filters/HighpassFilter.d.ts +2 -2
- package/dist/esm/audio/filters/HighpassFilter.js +2 -2
- package/dist/esm/audio/filters/LowpassFilter.d.ts +2 -2
- package/dist/esm/audio/filters/LowpassFilter.js +2 -2
- package/dist/esm/audio/filters/index.d.ts +0 -10
- package/dist/esm/audio/filters/index.d.ts.map +1 -1
- package/dist/esm/audio/index.d.ts +13 -15
- package/dist/esm/audio/index.d.ts.map +1 -1
- package/dist/esm/core/Application.d.ts +127 -10
- package/dist/esm/core/Application.d.ts.map +1 -1
- package/dist/esm/core/Application.js +226 -25
- package/dist/esm/core/Application.js.map +1 -1
- package/dist/esm/core/BuildInfo.js +2 -2
- package/dist/esm/core/Color.d.ts +6 -4
- package/dist/esm/core/Color.d.ts.map +1 -1
- package/dist/esm/core/Color.js +19 -15
- package/dist/esm/core/Color.js.map +1 -1
- package/dist/esm/core/DisposalScope.d.ts +50 -0
- package/dist/esm/core/DisposalScope.d.ts.map +1 -0
- package/dist/esm/core/DisposalScope.js +86 -0
- package/dist/esm/core/DisposalScope.js.map +1 -0
- package/dist/esm/core/Perf.d.ts +10 -22
- package/dist/esm/core/Perf.d.ts.map +1 -1
- package/dist/esm/core/Perf.js +15 -8
- package/dist/esm/core/Perf.js.map +1 -1
- package/dist/esm/core/Registry.d.ts +64 -0
- package/dist/esm/core/Registry.d.ts.map +1 -0
- package/dist/esm/core/Registry.js +79 -0
- package/dist/esm/core/Registry.js.map +1 -0
- package/dist/esm/core/Scene.d.ts +69 -21
- package/dist/esm/core/Scene.d.ts.map +1 -1
- package/dist/esm/core/Scene.js +109 -16
- package/dist/esm/core/Scene.js.map +1 -1
- package/dist/esm/core/SceneManager.d.ts +22 -60
- package/dist/esm/core/SceneManager.d.ts.map +1 -1
- package/dist/esm/core/SceneManager.js +68 -153
- package/dist/esm/core/SceneManager.js.map +1 -1
- package/dist/esm/core/SceneNode.d.ts +43 -2
- package/dist/esm/core/SceneNode.d.ts.map +1 -1
- package/dist/esm/core/SceneNode.js +101 -12
- package/dist/esm/core/SceneNode.js.map +1 -1
- package/dist/esm/core/Signal.js.map +1 -1
- package/dist/esm/core/Stage.d.ts +42 -0
- package/dist/esm/core/Stage.d.ts.map +1 -0
- package/dist/esm/core/System.d.ts +22 -0
- package/dist/esm/core/System.d.ts.map +1 -0
- package/dist/esm/core/SystemRegistry.d.ts +35 -0
- package/dist/esm/core/SystemRegistry.d.ts.map +1 -0
- package/dist/esm/core/SystemRegistry.js +104 -0
- package/dist/esm/core/SystemRegistry.js.map +1 -0
- package/dist/esm/core/Time.d.ts +15 -0
- package/dist/esm/core/Time.d.ts.map +1 -1
- package/dist/esm/core/Time.js +25 -0
- package/dist/esm/core/Time.js.map +1 -1
- package/dist/esm/core/dev.d.ts +9 -4
- package/dist/esm/core/dev.d.ts.map +1 -1
- package/dist/esm/core/dev.js +5 -0
- package/dist/esm/core/dev.js.map +1 -1
- package/dist/esm/core/index.d.ts +26 -15
- package/dist/esm/core/index.d.ts.map +1 -1
- package/dist/esm/core/letterbox.d.ts +25 -0
- package/dist/esm/core/letterbox.d.ts.map +1 -0
- package/dist/esm/core/letterbox.js +26 -0
- package/dist/esm/core/letterbox.js.map +1 -0
- package/dist/esm/core/serialization/NodeSerializer.d.ts +71 -0
- package/dist/esm/core/serialization/NodeSerializer.d.ts.map +1 -0
- package/dist/esm/core/serialization/Prefab.d.ts +49 -0
- package/dist/esm/core/serialization/Prefab.d.ts.map +1 -0
- package/dist/esm/core/serialization/Prefab.js +61 -0
- package/dist/esm/core/serialization/Prefab.js.map +1 -0
- package/dist/esm/core/serialization/SerializationRegistry.d.ts +95 -0
- package/dist/esm/core/serialization/SerializationRegistry.d.ts.map +1 -0
- package/dist/esm/core/serialization/SerializationRegistry.js +108 -0
- package/dist/esm/core/serialization/SerializationRegistry.js.map +1 -0
- package/dist/esm/core/serialization/commonFields.d.ts +20 -0
- package/dist/esm/core/serialization/commonFields.d.ts.map +1 -0
- package/dist/esm/core/serialization/commonFields.js +149 -0
- package/dist/esm/core/serialization/commonFields.js.map +1 -0
- package/dist/esm/core/serialization/coreSerializers.d.ts +9 -0
- package/dist/esm/core/serialization/coreSerializers.d.ts.map +1 -0
- package/dist/esm/core/serialization/coreSerializers.js +101 -0
- package/dist/esm/core/serialization/coreSerializers.js.map +1 -0
- package/dist/esm/core/serialization/index.d.ts +6 -0
- package/dist/esm/core/serialization/index.d.ts.map +1 -0
- package/dist/esm/core/serialization/read.d.ts +65 -0
- package/dist/esm/core/serialization/read.d.ts.map +1 -0
- package/dist/esm/core/serialization/read.js +48 -0
- package/dist/esm/core/serialization/read.js.map +1 -0
- package/dist/esm/core/serialization/renderingSerializers.d.ts +7 -0
- package/dist/esm/core/serialization/renderingSerializers.d.ts.map +1 -0
- package/dist/esm/core/serialization/renderingSerializers.js +311 -0
- package/dist/esm/core/serialization/renderingSerializers.js.map +1 -0
- package/dist/esm/core/serialization/serialize.d.ts +56 -0
- package/dist/esm/core/serialization/serialize.d.ts.map +1 -0
- package/dist/esm/core/serialization/serialize.js +144 -0
- package/dist/esm/core/serialization/serialize.js.map +1 -0
- package/dist/esm/core/serialization/serializerHelpers.d.ts +46 -0
- package/dist/esm/core/serialization/serializerHelpers.d.ts.map +1 -0
- package/dist/esm/core/serialization/serializerHelpers.js +161 -0
- package/dist/esm/core/serialization/serializerHelpers.js.map +1 -0
- package/dist/esm/core/serialization/types.d.ts +49 -0
- package/dist/esm/core/serialization/types.d.ts.map +1 -0
- package/dist/esm/core/serialization/types.js +9 -0
- package/dist/esm/core/serialization/types.js.map +1 -0
- package/dist/esm/core/serialization/uiSerializers.d.ts +7 -0
- package/dist/esm/core/serialization/uiSerializers.d.ts.map +1 -0
- package/dist/esm/core/serialization/uiSerializers.js +206 -0
- package/dist/esm/core/serialization/uiSerializers.js.map +1 -0
- package/dist/esm/core/types.d.ts +1 -1
- package/dist/esm/core/types.d.ts.map +1 -1
- package/dist/esm/core/utils.d.ts +1 -16
- package/dist/esm/core/utils.d.ts.map +1 -1
- package/dist/esm/core/utils.js +2 -100
- package/dist/esm/core/utils.js.map +1 -1
- package/dist/esm/debug/PerformanceLayer.js +8 -9
- package/dist/esm/debug/PerformanceLayer.js.map +1 -1
- package/dist/esm/debug/PointerStackLayer.d.ts.map +1 -1
- package/dist/esm/debug/PointerStackLayer.js +9 -6
- package/dist/esm/debug/PointerStackLayer.js.map +1 -1
- package/dist/esm/debug/RenderPassInspectorLayer.d.ts.map +1 -1
- package/dist/esm/debug/RenderPassInspectorLayer.js +19 -12
- package/dist/esm/debug/RenderPassInspectorLayer.js.map +1 -1
- package/dist/esm/extensions/Extension.d.ts +39 -4
- package/dist/esm/extensions/Extension.d.ts.map +1 -1
- package/dist/esm/extensions/materialize.d.ts +9 -1
- package/dist/esm/extensions/materialize.d.ts.map +1 -1
- package/dist/esm/extensions/materialize.js +17 -2
- package/dist/esm/extensions/materialize.js.map +1 -1
- package/dist/esm/extensions/snapshot.d.ts +2 -1
- package/dist/esm/extensions/snapshot.d.ts.map +1 -1
- package/dist/esm/extensions/snapshot.js +8 -0
- package/dist/esm/extensions/snapshot.js.map +1 -1
- package/dist/esm/index.d.ts +2 -1
- package/dist/esm/index.d.ts.map +1 -1
- package/dist/esm/index.js +34 -59
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/input/FocusManager.d.ts +59 -0
- package/dist/esm/input/FocusManager.d.ts.map +1 -0
- package/dist/esm/input/FocusManager.js +175 -0
- package/dist/esm/input/FocusManager.js.map +1 -0
- package/dist/esm/input/Gamepad.d.ts.map +1 -1
- package/dist/esm/input/Gamepad.js +8 -4
- package/dist/esm/input/Gamepad.js.map +1 -1
- package/dist/esm/input/GamepadAxis.js +2 -2
- package/dist/esm/input/GamepadDefinitions.d.ts.map +1 -1
- package/dist/esm/input/GamepadDefinitions.js +6 -2
- package/dist/esm/input/GamepadDefinitions.js.map +1 -1
- package/dist/esm/input/GestureRecognizer.d.ts +1 -2
- package/dist/esm/input/GestureRecognizer.d.ts.map +1 -1
- package/dist/esm/input/GestureRecognizer.js +1 -3
- package/dist/esm/input/GestureRecognizer.js.map +1 -1
- package/dist/esm/input/InputBinding.js +3 -3
- package/dist/esm/input/InputBinding.js.map +1 -1
- package/dist/esm/input/InputManager.d.ts +7 -2
- package/dist/esm/input/InputManager.d.ts.map +1 -1
- package/dist/esm/input/InputManager.js +35 -21
- package/dist/esm/input/InputManager.js.map +1 -1
- package/dist/esm/input/InteractionManager.d.ts +67 -2
- package/dist/esm/input/InteractionManager.d.ts.map +1 -1
- package/dist/esm/input/InteractionManager.js +165 -41
- package/dist/esm/input/InteractionManager.js.map +1 -1
- package/dist/esm/input/KeyEvent.d.ts +25 -0
- package/dist/esm/input/KeyEvent.d.ts.map +1 -0
- package/dist/esm/input/KeyEvent.js +32 -0
- package/dist/esm/input/KeyEvent.js.map +1 -0
- package/dist/esm/input/Pointer.d.ts +21 -4
- package/dist/esm/input/Pointer.d.ts.map +1 -1
- package/dist/esm/input/Pointer.js +54 -15
- package/dist/esm/input/Pointer.js.map +1 -1
- package/dist/esm/input/index.d.ts +3 -1
- package/dist/esm/input/index.d.ts.map +1 -1
- package/dist/esm/math/AbstractVector.d.ts.map +1 -1
- package/dist/esm/math/AbstractVector.js +7 -2
- package/dist/esm/math/AbstractVector.js.map +1 -1
- package/dist/esm/math/Circle.d.ts.map +1 -1
- package/dist/esm/math/Circle.js +5 -1
- package/dist/esm/math/Circle.js.map +1 -1
- package/dist/esm/math/Line.d.ts +1 -1
- package/dist/esm/math/Line.d.ts.map +1 -1
- package/dist/esm/math/Line.js +1 -1
- package/dist/esm/math/Line.js.map +1 -1
- package/dist/esm/math/Matrix.d.ts.map +1 -1
- package/dist/esm/math/Matrix.js +6 -1
- package/dist/esm/math/Matrix.js.map +1 -1
- package/dist/esm/math/ObservableVector.d.ts +26 -8
- package/dist/esm/math/ObservableVector.d.ts.map +1 -1
- package/dist/esm/math/ObservableVector.js +24 -16
- package/dist/esm/math/ObservableVector.js.map +1 -1
- package/dist/esm/math/Polygon.d.ts +5 -0
- package/dist/esm/math/Polygon.d.ts.map +1 -1
- package/dist/esm/math/Polygon.js +27 -3
- package/dist/esm/math/Polygon.js.map +1 -1
- package/dist/esm/math/Random.d.ts +9 -9
- package/dist/esm/math/Random.d.ts.map +1 -1
- package/dist/esm/math/Random.js +46 -46
- package/dist/esm/math/Random.js.map +1 -1
- package/dist/esm/math/Rectangle.d.ts +11 -4
- package/dist/esm/math/Rectangle.d.ts.map +1 -1
- package/dist/esm/math/Rectangle.js +12 -6
- package/dist/esm/math/Rectangle.js.map +1 -1
- package/dist/esm/math/Vector.d.ts +1 -1
- package/dist/esm/math/Vector.d.ts.map +1 -1
- package/dist/esm/math/Vector.js +1 -1
- package/dist/esm/math/Vector.js.map +1 -1
- package/dist/esm/math/collision-detection.d.ts +42 -0
- package/dist/esm/math/collision-detection.d.ts.map +1 -1
- package/dist/esm/math/collision-detection.js +54 -4
- package/dist/esm/math/collision-detection.js.map +1 -1
- package/dist/esm/math/collision-primitives.d.ts.map +1 -1
- package/dist/esm/math/collision-primitives.js +4 -0
- package/dist/esm/math/collision-primitives.js.map +1 -1
- package/dist/esm/math/geometry.d.ts +26 -0
- package/dist/esm/math/geometry.d.ts.map +1 -1
- package/dist/esm/math/geometry.js +89 -2
- package/dist/esm/math/geometry.js.map +1 -1
- package/dist/esm/math/index.d.ts +7 -5
- package/dist/esm/math/index.d.ts.map +1 -1
- package/dist/esm/math/swept-collision.d.ts +13 -0
- package/dist/esm/math/swept-collision.d.ts.map +1 -1
- package/dist/esm/math/swept-collision.js +15 -1
- package/dist/esm/math/swept-collision.js.map +1 -1
- package/dist/esm/math/triangulate.d.ts.map +1 -1
- package/dist/esm/math/triangulate.js +9 -1
- package/dist/esm/math/triangulate.js.map +1 -1
- package/dist/esm/math/utils.d.ts +20 -0
- package/dist/esm/math/utils.d.ts.map +1 -1
- package/dist/esm/math/utils.js +18 -15
- package/dist/esm/math/utils.js.map +1 -1
- package/dist/esm/renderer-sdk.d.ts +2 -0
- package/dist/esm/renderer-sdk.d.ts.map +1 -1
- package/dist/esm/{rendering.js → renderer-sdk.js} +1 -1
- package/dist/esm/renderer-sdk.js.map +1 -0
- package/dist/esm/rendering/CallbackRenderPass.js +1 -1
- package/dist/esm/rendering/CallbackRenderPass.js.map +1 -1
- package/dist/esm/rendering/Container.d.ts +3 -0
- package/dist/esm/rendering/Container.d.ts.map +1 -1
- package/dist/esm/rendering/Container.js +28 -5
- package/dist/esm/rendering/Container.js.map +1 -1
- package/dist/esm/rendering/Drawable.d.ts +24 -0
- package/dist/esm/rendering/Drawable.d.ts.map +1 -1
- package/dist/esm/rendering/Drawable.js +54 -0
- package/dist/esm/rendering/Drawable.js.map +1 -1
- package/dist/esm/rendering/GpuResourceAccountant.d.ts +65 -0
- package/dist/esm/rendering/GpuResourceAccountant.d.ts.map +1 -0
- package/dist/esm/rendering/GpuResourceAccountant.js +130 -0
- package/dist/esm/rendering/GpuResourceAccountant.js.map +1 -0
- package/dist/esm/rendering/RenderBackend.d.ts +15 -1
- package/dist/esm/rendering/RenderBackend.d.ts.map +1 -1
- package/dist/esm/rendering/RenderBatch.d.ts +55 -0
- package/dist/esm/rendering/RenderBatch.d.ts.map +1 -0
- package/dist/esm/rendering/RenderBatch.js +107 -0
- package/dist/esm/rendering/RenderBatch.js.map +1 -0
- package/dist/esm/rendering/RenderNode.d.ts +50 -10
- package/dist/esm/rendering/RenderNode.d.ts.map +1 -1
- package/dist/esm/rendering/RenderNode.js +113 -20
- package/dist/esm/rendering/RenderNode.js.map +1 -1
- package/dist/esm/rendering/RenderNodePass.js +2 -2
- package/dist/esm/rendering/RenderNodePass.js.map +1 -1
- package/dist/esm/rendering/RenderStats.d.ts +39 -0
- package/dist/esm/rendering/RenderStats.d.ts.map +1 -1
- package/dist/esm/rendering/RenderStats.js +14 -0
- package/dist/esm/rendering/RenderStats.js.map +1 -1
- package/dist/esm/rendering/RendererRegistry.d.ts.map +1 -1
- package/dist/esm/rendering/RendererRegistry.js +20 -23
- package/dist/esm/rendering/RendererRegistry.js.map +1 -1
- package/dist/esm/rendering/RenderingContext.d.ts +88 -4
- package/dist/esm/rendering/RenderingContext.d.ts.map +1 -1
- package/dist/esm/rendering/RenderingContext.js +107 -5
- package/dist/esm/rendering/RenderingContext.js.map +1 -1
- package/dist/esm/rendering/TransformBuffer.d.ts.map +1 -1
- package/dist/esm/rendering/TransformBuffer.js +2 -0
- package/dist/esm/rendering/TransformBuffer.js.map +1 -1
- package/dist/esm/rendering/View.d.ts +47 -15
- package/dist/esm/rendering/View.d.ts.map +1 -1
- package/dist/esm/rendering/View.js +44 -27
- package/dist/esm/rendering/View.js.map +1 -1
- package/dist/esm/rendering/filters/WebGpuShaderFilter.d.ts.map +1 -1
- package/dist/esm/rendering/filters/WebGpuShaderFilter.js +3 -1
- package/dist/esm/rendering/filters/WebGpuShaderFilter.js.map +1 -1
- package/dist/esm/rendering/geometry/Geometry.d.ts.map +1 -1
- package/dist/esm/rendering/geometry/Geometry.js +4 -2
- package/dist/esm/rendering/geometry/Geometry.js.map +1 -1
- package/dist/esm/rendering/gradient/Gradient.d.ts.map +1 -1
- package/dist/esm/rendering/gradient/Gradient.js +7 -2
- package/dist/esm/rendering/gradient/Gradient.js.map +1 -1
- package/dist/esm/rendering/material/MaterialKey.d.ts.map +1 -1
- package/dist/esm/rendering/material/MaterialKey.js +2 -0
- package/dist/esm/rendering/material/MaterialKey.js.map +1 -1
- package/dist/esm/rendering/material/ShaderSource.js +6 -0
- package/dist/esm/rendering/material/ShaderSource.js.map +1 -1
- package/dist/esm/rendering/mesh/ImmediateMesh.d.ts +48 -0
- package/dist/esm/rendering/mesh/ImmediateMesh.d.ts.map +1 -0
- package/dist/esm/rendering/mesh/ImmediateMesh.js +85 -0
- package/dist/esm/rendering/mesh/ImmediateMesh.js.map +1 -0
- package/dist/esm/rendering/mesh/Mesh.d.ts +29 -6
- package/dist/esm/rendering/mesh/Mesh.d.ts.map +1 -1
- package/dist/esm/rendering/mesh/Mesh.js +40 -13
- package/dist/esm/rendering/mesh/Mesh.js.map +1 -1
- package/dist/esm/rendering/pixelSnap.d.ts.map +1 -1
- package/dist/esm/rendering/pixelSnap.js +1 -0
- package/dist/esm/rendering/pixelSnap.js.map +1 -1
- package/dist/esm/rendering/plan/RenderCommand.d.ts +31 -9
- package/dist/esm/rendering/plan/RenderCommand.d.ts.map +1 -1
- package/dist/esm/rendering/plan/RenderCommand.js +23 -21
- package/dist/esm/rendering/plan/RenderCommand.js.map +1 -1
- package/dist/esm/rendering/plan/RenderEffectExecutor.d.ts.map +1 -1
- package/dist/esm/rendering/plan/RenderEffectExecutor.js +1 -0
- package/dist/esm/rendering/plan/RenderEffectExecutor.js.map +1 -1
- package/dist/esm/rendering/plan/RenderInstruction.d.ts +7 -37
- package/dist/esm/rendering/plan/RenderInstruction.d.ts.map +1 -1
- package/dist/esm/rendering/plan/RenderPlanBuilder.d.ts +17 -2
- package/dist/esm/rendering/plan/RenderPlanBuilder.d.ts.map +1 -1
- package/dist/esm/rendering/plan/RenderPlanBuilder.js +132 -46
- package/dist/esm/rendering/plan/RenderPlanBuilder.js.map +1 -1
- package/dist/esm/rendering/plan/RenderPlanOptimizer.d.ts.map +1 -1
- package/dist/esm/rendering/plan/RenderPlanOptimizer.js +31 -4
- package/dist/esm/rendering/plan/RenderPlanOptimizer.js.map +1 -1
- package/dist/esm/rendering/plan/RenderPlanPlayer.d.ts.map +1 -1
- package/dist/esm/rendering/plan/RenderPlanPlayer.js +54 -17
- package/dist/esm/rendering/plan/RenderPlanPlayer.js.map +1 -1
- package/dist/esm/rendering/plan/RenderScope.d.ts +16 -10
- package/dist/esm/rendering/plan/RenderScope.d.ts.map +1 -1
- package/dist/esm/rendering/primitives/Graphics.d.ts +6 -0
- package/dist/esm/rendering/primitives/Graphics.d.ts.map +1 -1
- package/dist/esm/rendering/primitives/Graphics.js +17 -1
- package/dist/esm/rendering/primitives/Graphics.js.map +1 -1
- package/dist/esm/rendering/{index.d.ts → public.d.ts} +5 -35
- package/dist/esm/rendering/public.d.ts.map +1 -0
- package/dist/esm/rendering/shader/ShaderAttribute.d.ts.map +1 -1
- package/dist/esm/rendering/shader/ShaderAttribute.js +2 -0
- package/dist/esm/rendering/shader/ShaderAttribute.js.map +1 -1
- package/dist/esm/rendering/sprite/AnimatedSprite.d.ts +11 -0
- package/dist/esm/rendering/sprite/AnimatedSprite.d.ts.map +1 -1
- package/dist/esm/rendering/sprite/AnimatedSprite.js +24 -2
- package/dist/esm/rendering/sprite/AnimatedSprite.js.map +1 -1
- package/dist/esm/rendering/sprite/NineSliceSprite.d.ts.map +1 -1
- package/dist/esm/rendering/sprite/NineSliceSprite.js +10 -11
- package/dist/esm/rendering/sprite/NineSliceSprite.js.map +1 -1
- package/dist/esm/rendering/sprite/RepeatingSprite.d.ts.map +1 -1
- package/dist/esm/rendering/sprite/RepeatingSprite.js +1 -3
- package/dist/esm/rendering/sprite/RepeatingSprite.js.map +1 -1
- package/dist/esm/rendering/sprite/Sprite.d.ts.map +1 -1
- package/dist/esm/rendering/sprite/Sprite.js +30 -3
- package/dist/esm/rendering/sprite/Sprite.js.map +1 -1
- package/dist/esm/rendering/sprite/nineSlice.d.ts.map +1 -1
- package/dist/esm/rendering/sprite/nineSlice.js +12 -18
- package/dist/esm/rendering/sprite/nineSlice.js.map +1 -1
- package/dist/esm/rendering/sprite/repeatingSpritePlan.d.ts.map +1 -1
- package/dist/esm/rendering/sprite/repeatingSpritePlan.js +2 -2
- package/dist/esm/rendering/sprite/repeatingSpritePlan.js.map +1 -1
- package/dist/esm/rendering/text/BitmapText.d.ts +2 -0
- package/dist/esm/rendering/text/BitmapText.d.ts.map +1 -1
- package/dist/esm/rendering/text/BitmapText.js +4 -0
- package/dist/esm/rendering/text/BitmapText.js.map +1 -1
- package/dist/esm/rendering/text/GlyphAtlas.d.ts.map +1 -1
- package/dist/esm/rendering/text/GlyphAtlas.js +2 -1
- package/dist/esm/rendering/text/GlyphAtlas.js.map +1 -1
- package/dist/esm/rendering/text/GlyphAtlasPool.d.ts +8 -1
- package/dist/esm/rendering/text/GlyphAtlasPool.d.ts.map +1 -1
- package/dist/esm/rendering/text/GlyphAtlasPool.js +9 -12
- package/dist/esm/rendering/text/GlyphAtlasPool.js.map +1 -1
- package/dist/esm/rendering/text/GlyphSdf.d.ts.map +1 -1
- package/dist/esm/rendering/text/GlyphSdf.js +5 -1
- package/dist/esm/rendering/text/GlyphSdf.js.map +1 -1
- package/dist/esm/rendering/text/HTMLText.d.ts.map +1 -1
- package/dist/esm/rendering/text/HTMLText.js +1 -0
- package/dist/esm/rendering/text/HTMLText.js.map +1 -1
- package/dist/esm/rendering/text/Text.d.ts +17 -6
- package/dist/esm/rendering/text/Text.d.ts.map +1 -1
- package/dist/esm/rendering/text/Text.js +7 -12
- package/dist/esm/rendering/text/Text.js.map +1 -1
- package/dist/esm/rendering/text/TextLayout.d.ts.map +1 -1
- package/dist/esm/rendering/text/TextLayout.js +4 -18
- package/dist/esm/rendering/text/TextLayout.js.map +1 -1
- package/dist/esm/rendering/texture/DataTexture.js +2 -2
- package/dist/esm/rendering/texture/DataTexture.js.map +1 -1
- package/dist/esm/rendering/texture/Texture.d.ts +6 -0
- package/dist/esm/rendering/texture/Texture.d.ts.map +1 -1
- package/dist/esm/rendering/texture/Texture.js +8 -0
- package/dist/esm/rendering/texture/Texture.js.map +1 -1
- package/dist/esm/rendering/texture/TextureRegion.d.ts.map +1 -1
- package/dist/esm/rendering/texture/TextureRegion.js.map +1 -1
- package/dist/esm/rendering/texture/repeat.d.ts.map +1 -1
- package/dist/esm/rendering/texture/repeat.js +2 -2
- package/dist/esm/rendering/texture/repeat.js.map +1 -1
- package/dist/esm/rendering/types.d.ts +11 -0
- package/dist/esm/rendering/types.d.ts.map +1 -1
- package/dist/esm/rendering/types.js +11 -0
- package/dist/esm/rendering/types.js.map +1 -1
- package/dist/esm/rendering/video/Video.d.ts +7 -3
- package/dist/esm/rendering/video/Video.d.ts.map +1 -1
- package/dist/esm/rendering/video/Video.js +7 -3
- package/dist/esm/rendering/video/Video.js.map +1 -1
- package/dist/esm/rendering/webgl2/AbstractWebGl2BatchedRenderer.d.ts.map +1 -1
- package/dist/esm/rendering/webgl2/AbstractWebGl2BatchedRenderer.js +2 -2
- package/dist/esm/rendering/webgl2/AbstractWebGl2BatchedRenderer.js.map +1 -1
- package/dist/esm/rendering/webgl2/WebGl2Backend.d.ts +21 -2
- package/dist/esm/rendering/webgl2/WebGl2Backend.d.ts.map +1 -1
- package/dist/esm/rendering/webgl2/WebGl2Backend.js +106 -6
- package/dist/esm/rendering/webgl2/WebGl2Backend.js.map +1 -1
- package/dist/esm/rendering/webgl2/WebGl2MaskCompositor.d.ts.map +1 -1
- package/dist/esm/rendering/webgl2/WebGl2MaskCompositor.js +2 -2
- package/dist/esm/rendering/webgl2/WebGl2MaskCompositor.js.map +1 -1
- package/dist/esm/rendering/webgl2/WebGl2MeshRenderer.d.ts +17 -0
- package/dist/esm/rendering/webgl2/WebGl2MeshRenderer.d.ts.map +1 -1
- package/dist/esm/rendering/webgl2/WebGl2MeshRenderer.js +122 -38
- package/dist/esm/rendering/webgl2/WebGl2MeshRenderer.js.map +1 -1
- package/dist/esm/rendering/webgl2/WebGl2NineSliceSpriteRenderer.d.ts.map +1 -1
- package/dist/esm/rendering/webgl2/WebGl2NineSliceSpriteRenderer.js +2 -1
- package/dist/esm/rendering/webgl2/WebGl2NineSliceSpriteRenderer.js.map +1 -1
- package/dist/esm/rendering/webgl2/WebGl2RenderBuffer.d.ts +16 -1
- package/dist/esm/rendering/webgl2/WebGl2RenderBuffer.d.ts.map +1 -1
- package/dist/esm/rendering/webgl2/WebGl2RenderBuffer.js +32 -1
- package/dist/esm/rendering/webgl2/WebGl2RenderBuffer.js.map +1 -1
- package/dist/esm/rendering/webgl2/WebGl2RepeatingSpriteRenderer.d.ts.map +1 -1
- package/dist/esm/rendering/webgl2/WebGl2RepeatingSpriteRenderer.js +15 -11
- package/dist/esm/rendering/webgl2/WebGl2RepeatingSpriteRenderer.js.map +1 -1
- package/dist/esm/rendering/webgl2/WebGl2ShaderBlock.d.ts.map +1 -1
- package/dist/esm/rendering/webgl2/WebGl2ShaderBlock.js +14 -3
- package/dist/esm/rendering/webgl2/WebGl2ShaderBlock.js.map +1 -1
- package/dist/esm/rendering/webgl2/WebGl2ShaderMappings.js +3 -3
- package/dist/esm/rendering/webgl2/WebGl2ShaderMappings.js.map +1 -1
- package/dist/esm/rendering/webgl2/WebGl2ShaderProgram.d.ts.map +1 -1
- package/dist/esm/rendering/webgl2/WebGl2ShaderProgram.js +11 -2
- package/dist/esm/rendering/webgl2/WebGl2ShaderProgram.js.map +1 -1
- package/dist/esm/rendering/webgl2/WebGl2SpriteRenderer.d.ts.map +1 -1
- package/dist/esm/rendering/webgl2/WebGl2SpriteRenderer.js +7 -2
- package/dist/esm/rendering/webgl2/WebGl2SpriteRenderer.js.map +1 -1
- package/dist/esm/rendering/webgl2/WebGl2StencilClipper.d.ts.map +1 -1
- package/dist/esm/rendering/webgl2/WebGl2StencilClipper.js +3 -2
- package/dist/esm/rendering/webgl2/WebGl2StencilClipper.js.map +1 -1
- package/dist/esm/rendering/webgl2/WebGl2TextRenderer.d.ts.map +1 -1
- package/dist/esm/rendering/webgl2/WebGl2TextRenderer.js +10 -4
- package/dist/esm/rendering/webgl2/WebGl2TextRenderer.js.map +1 -1
- package/dist/esm/rendering/webgpu/WebGpuBackend.d.ts +18 -2
- package/dist/esm/rendering/webgpu/WebGpuBackend.d.ts.map +1 -1
- package/dist/esm/rendering/webgpu/WebGpuBackend.js +91 -10
- package/dist/esm/rendering/webgpu/WebGpuBackend.js.map +1 -1
- package/dist/esm/rendering/webgpu/WebGpuBlendState.d.ts.map +1 -1
- package/dist/esm/rendering/webgpu/WebGpuBlendState.js +3 -0
- package/dist/esm/rendering/webgpu/WebGpuBlendState.js.map +1 -1
- package/dist/esm/rendering/webgpu/WebGpuMeshRenderer.d.ts +13 -0
- package/dist/esm/rendering/webgpu/WebGpuMeshRenderer.d.ts.map +1 -1
- package/dist/esm/rendering/webgpu/WebGpuMeshRenderer.js +102 -24
- package/dist/esm/rendering/webgpu/WebGpuMeshRenderer.js.map +1 -1
- package/dist/esm/rendering/webgpu/WebGpuNineSliceSpriteRenderer.d.ts.map +1 -1
- package/dist/esm/rendering/webgpu/WebGpuNineSliceSpriteRenderer.js +6 -1
- package/dist/esm/rendering/webgpu/WebGpuNineSliceSpriteRenderer.js.map +1 -1
- package/dist/esm/rendering/webgpu/WebGpuRepeatingSpriteRenderer.d.ts.map +1 -1
- package/dist/esm/rendering/webgpu/WebGpuRepeatingSpriteRenderer.js +19 -9
- package/dist/esm/rendering/webgpu/WebGpuRepeatingSpriteRenderer.js.map +1 -1
- package/dist/esm/rendering/webgpu/WebGpuSpriteRenderer.d.ts.map +1 -1
- package/dist/esm/rendering/webgpu/WebGpuSpriteRenderer.js +8 -4
- package/dist/esm/rendering/webgpu/WebGpuSpriteRenderer.js.map +1 -1
- package/dist/esm/rendering/webgpu/WebGpuStencilClipper.d.ts.map +1 -1
- package/dist/esm/rendering/webgpu/WebGpuStencilClipper.js +1 -0
- package/dist/esm/rendering/webgpu/WebGpuStencilClipper.js.map +1 -1
- package/dist/esm/rendering/webgpu/WebGpuTextRenderer.d.ts.map +1 -1
- package/dist/esm/rendering/webgpu/WebGpuTextRenderer.js +19 -7
- package/dist/esm/rendering/webgpu/WebGpuTextRenderer.js.map +1 -1
- package/dist/esm/rendering/webgpu/WebGpuTransformStorage.d.ts +13 -2
- package/dist/esm/rendering/webgpu/WebGpuTransformStorage.d.ts.map +1 -1
- package/dist/esm/rendering/webgpu/WebGpuTransformStorage.js +22 -2
- package/dist/esm/rendering/webgpu/WebGpuTransformStorage.js.map +1 -1
- package/dist/esm/rendering/webgpu/compute/WebGpuComputePipeline.js +1 -1
- package/dist/esm/rendering/webgpu/compute/WebGpuComputePipeline.js.map +1 -1
- package/dist/esm/rendering/webgpu/compute/WebGpuStorageBuffer.d.ts +7 -0
- package/dist/esm/rendering/webgpu/compute/WebGpuStorageBuffer.d.ts.map +1 -1
- package/dist/esm/rendering/webgpu/compute/WebGpuStorageBuffer.js +8 -0
- package/dist/esm/rendering/webgpu/compute/WebGpuStorageBuffer.js.map +1 -1
- package/dist/esm/resources/Asset.d.ts +1 -1
- package/dist/esm/resources/Asset.d.ts.map +1 -1
- package/dist/esm/resources/Asset.js +0 -2
- package/dist/esm/resources/Asset.js.map +1 -1
- package/dist/esm/resources/AssetContainer.d.ts +75 -0
- package/dist/esm/resources/AssetContainer.d.ts.map +1 -0
- package/dist/esm/resources/AssetContainer.js +100 -0
- package/dist/esm/resources/AssetContainer.js.map +1 -0
- package/dist/esm/resources/AssetDefinitions.d.ts +3 -3
- package/dist/esm/resources/AssetDefinitions.d.ts.map +1 -1
- package/dist/esm/resources/Assets.d.ts.map +1 -1
- package/dist/esm/resources/Assets.js +0 -1
- package/dist/esm/resources/Assets.js.map +1 -1
- package/dist/esm/resources/FactoryRegistry.d.ts.map +1 -1
- package/dist/esm/resources/FactoryRegistry.js +14 -23
- package/dist/esm/resources/FactoryRegistry.js.map +1 -1
- package/dist/esm/resources/IndexedDbDatabase.d.ts.map +1 -1
- package/dist/esm/resources/IndexedDbDatabase.js +8 -1
- package/dist/esm/resources/IndexedDbDatabase.js.map +1 -1
- package/dist/esm/resources/IndexedDbKeyValueStore.d.ts +37 -0
- package/dist/esm/resources/IndexedDbKeyValueStore.d.ts.map +1 -0
- package/dist/esm/resources/IndexedDbKeyValueStore.js +58 -0
- package/dist/esm/resources/IndexedDbKeyValueStore.js.map +1 -0
- package/dist/esm/resources/KeyValueStore.d.ts +31 -0
- package/dist/esm/resources/KeyValueStore.d.ts.map +1 -0
- package/dist/esm/resources/Loader.d.ts +42 -2
- package/dist/esm/resources/Loader.d.ts.map +1 -1
- package/dist/esm/resources/Loader.js +92 -7
- package/dist/esm/resources/Loader.js.map +1 -1
- package/dist/esm/resources/MemoryStore.d.ts +17 -0
- package/dist/esm/resources/MemoryStore.d.ts.map +1 -0
- package/dist/esm/resources/MemoryStore.js +30 -0
- package/dist/esm/resources/MemoryStore.js.map +1 -0
- package/dist/esm/resources/WebStorageStore.d.ts +40 -0
- package/dist/esm/resources/WebStorageStore.d.ts.map +1 -0
- package/dist/esm/resources/WebStorageStore.js +84 -0
- package/dist/esm/resources/WebStorageStore.js.map +1 -0
- package/dist/esm/resources/coreAssetBindings.d.ts.map +1 -1
- package/dist/esm/resources/coreAssetBindings.js +16 -5
- package/dist/esm/resources/coreAssetBindings.js.map +1 -1
- package/dist/esm/resources/factories/BmFontFactory.js +4 -4
- package/dist/esm/resources/factories/BmFontFactory.js.map +1 -1
- package/dist/esm/resources/factories/MusicFactory.d.ts +9 -9
- package/dist/esm/resources/factories/MusicFactory.d.ts.map +1 -1
- package/dist/esm/resources/factories/MusicFactory.js +7 -7
- package/dist/esm/resources/factories/MusicFactory.js.map +1 -1
- package/dist/esm/resources/factories/SoundFactory.js +2 -2
- package/dist/esm/resources/factories/SoundFactory.js.map +1 -1
- package/dist/esm/resources/factories/SubtitleFactory.d.ts +11 -1
- package/dist/esm/resources/factories/SubtitleFactory.d.ts.map +1 -1
- package/dist/esm/resources/factories/SubtitleFactory.js +13 -9
- package/dist/esm/resources/factories/SubtitleFactory.js.map +1 -1
- package/dist/esm/resources/index.d.ts +51 -34
- package/dist/esm/resources/index.d.ts.map +1 -1
- package/dist/esm/resources/utils.js +4 -4
- package/dist/esm/resources/utils.js.map +1 -1
- package/dist/esm/ui/Button.d.ts +54 -0
- package/dist/esm/ui/Button.d.ts.map +1 -0
- package/dist/esm/ui/Button.js +139 -0
- package/dist/esm/ui/Button.js.map +1 -0
- package/dist/esm/ui/Label.d.ts +17 -0
- package/dist/esm/ui/Label.d.ts.map +1 -0
- package/dist/esm/ui/Label.js +37 -0
- package/dist/esm/ui/Label.js.map +1 -0
- package/dist/esm/ui/Panel.d.ts +38 -0
- package/dist/esm/ui/Panel.d.ts.map +1 -0
- package/dist/esm/ui/Panel.js +61 -0
- package/dist/esm/ui/Panel.js.map +1 -0
- package/dist/esm/ui/ProgressBar.d.ts +37 -0
- package/dist/esm/ui/ProgressBar.d.ts.map +1 -0
- package/dist/esm/ui/ProgressBar.js +76 -0
- package/dist/esm/ui/ProgressBar.js.map +1 -0
- package/dist/esm/ui/Stack.d.ts +34 -0
- package/dist/esm/ui/Stack.d.ts.map +1 -0
- package/dist/esm/ui/Stack.js +69 -0
- package/dist/esm/ui/Stack.js.map +1 -0
- package/dist/esm/ui/UIRoot.d.ts +31 -0
- package/dist/esm/ui/UIRoot.d.ts.map +1 -0
- package/dist/esm/ui/UIRoot.js +49 -0
- package/dist/esm/ui/UIRoot.js.map +1 -0
- package/dist/esm/ui/Widget.d.ts +45 -0
- package/dist/esm/ui/Widget.d.ts.map +1 -0
- package/dist/esm/ui/Widget.js +113 -0
- package/dist/esm/ui/Widget.js.map +1 -0
- package/dist/esm/ui/index.d.ts +13 -0
- package/dist/esm/ui/index.d.ts.map +1 -0
- package/dist/exo.debug.esm.js +1 -948
- package/dist/exo.debug.esm.js.map +1 -1
- package/dist/exo.esm.js +1 -40945
- package/dist/exo.esm.js.map +1 -1
- package/package.json +24 -13
- package/dist/esm/audio/AbstractMedia.d.ts +0 -75
- package/dist/esm/audio/AbstractMedia.d.ts.map +0 -1
- package/dist/esm/audio/AbstractMedia.js +0 -179
- package/dist/esm/audio/AbstractMedia.js.map +0 -1
- package/dist/esm/audio/AudioAnalyser.d.ts +0 -128
- package/dist/esm/audio/AudioAnalyser.d.ts.map +0 -1
- package/dist/esm/audio/AudioAnalyser.js +0 -473
- package/dist/esm/audio/AudioAnalyser.js.map +0 -1
- package/dist/esm/audio/AudioFilter.d.ts +0 -17
- package/dist/esm/audio/AudioFilter.d.ts.map +0 -1
- package/dist/esm/audio/AudioFilter.js +0 -15
- package/dist/esm/audio/AudioFilter.js.map +0 -1
- package/dist/esm/audio/BeatDetector.d.ts +0 -207
- package/dist/esm/audio/BeatDetector.d.ts.map +0 -1
- package/dist/esm/audio/BeatDetector.js +0 -424
- package/dist/esm/audio/BeatDetector.js.map +0 -1
- package/dist/esm/audio/Media.d.ts +0 -37
- package/dist/esm/audio/Media.d.ts.map +0 -1
- package/dist/esm/audio/Music.d.ts +0 -42
- package/dist/esm/audio/Music.d.ts.map +0 -1
- package/dist/esm/audio/Music.js +0 -164
- package/dist/esm/audio/Music.js.map +0 -1
- package/dist/esm/audio/OscillatorSound.d.ts +0 -100
- package/dist/esm/audio/OscillatorSound.d.ts.map +0 -1
- package/dist/esm/audio/OscillatorSound.js +0 -346
- package/dist/esm/audio/OscillatorSound.js.map +0 -1
- package/dist/esm/audio/dsp/fft.d.ts +0 -23
- package/dist/esm/audio/dsp/fft.d.ts.map +0 -1
- package/dist/esm/audio/dsp/mel.d.ts +0 -44
- package/dist/esm/audio/dsp/mel.d.ts.map +0 -1
- package/dist/esm/audio/dsp/mel.js +0 -70
- package/dist/esm/audio/dsp/mel.js.map +0 -1
- package/dist/esm/audio/dsp/tempogram.d.ts +0 -52
- package/dist/esm/audio/dsp/tempogram.d.ts.map +0 -1
- package/dist/esm/audio/filters/ChorusFilter.d.ts +0 -54
- package/dist/esm/audio/filters/ChorusFilter.d.ts.map +0 -1
- package/dist/esm/audio/filters/ChorusFilter.js +0 -155
- package/dist/esm/audio/filters/ChorusFilter.js.map +0 -1
- package/dist/esm/audio/filters/CompressorFilter.d.ts +0 -54
- package/dist/esm/audio/filters/CompressorFilter.d.ts.map +0 -1
- package/dist/esm/audio/filters/CompressorFilter.js +0 -123
- package/dist/esm/audio/filters/CompressorFilter.js.map +0 -1
- package/dist/esm/audio/filters/DelayFilter.d.ts +0 -36
- package/dist/esm/audio/filters/DelayFilter.d.ts.map +0 -1
- package/dist/esm/audio/filters/DelayFilter.js +0 -114
- package/dist/esm/audio/filters/DelayFilter.js.map +0 -1
- package/dist/esm/audio/filters/DuckingFilter.d.ts +0 -45
- package/dist/esm/audio/filters/DuckingFilter.d.ts.map +0 -1
- package/dist/esm/audio/filters/DuckingFilter.js +0 -172
- package/dist/esm/audio/filters/DuckingFilter.js.map +0 -1
- package/dist/esm/audio/filters/EqualizerFilter.d.ts +0 -51
- package/dist/esm/audio/filters/EqualizerFilter.d.ts.map +0 -1
- package/dist/esm/audio/filters/EqualizerFilter.js +0 -138
- package/dist/esm/audio/filters/EqualizerFilter.js.map +0 -1
- package/dist/esm/audio/filters/GranularFilter.d.ts +0 -63
- package/dist/esm/audio/filters/GranularFilter.d.ts.map +0 -1
- package/dist/esm/audio/filters/GranularFilter.js +0 -107
- package/dist/esm/audio/filters/GranularFilter.js.map +0 -1
- package/dist/esm/audio/filters/PitchShiftFilter.d.ts +0 -45
- package/dist/esm/audio/filters/PitchShiftFilter.d.ts.map +0 -1
- package/dist/esm/audio/filters/PitchShiftFilter.js +0 -66
- package/dist/esm/audio/filters/PitchShiftFilter.js.map +0 -1
- package/dist/esm/audio/filters/ReverbFilter.d.ts +0 -38
- package/dist/esm/audio/filters/ReverbFilter.d.ts.map +0 -1
- package/dist/esm/audio/filters/ReverbFilter.js +0 -122
- package/dist/esm/audio/filters/ReverbFilter.js.map +0 -1
- package/dist/esm/audio/filters/VocoderFilter.d.ts +0 -50
- package/dist/esm/audio/filters/VocoderFilter.d.ts.map +0 -1
- package/dist/esm/audio/filters/VocoderFilter.js +0 -94
- package/dist/esm/audio/filters/VocoderFilter.js.map +0 -1
- package/dist/esm/audio/filters/WorkletFilter.d.ts.map +0 -1
- package/dist/esm/audio/filters/WorkletFilter.js.map +0 -1
- package/dist/esm/audio/worklets/beat-detector.worklet.d.ts +0 -2
- package/dist/esm/audio/worklets/beat-detector.worklet.d.ts.map +0 -1
- package/dist/esm/audio/worklets/beat-detector.worklet.js +0 -647
- package/dist/esm/audio/worklets/beat-detector.worklet.js.map +0 -1
- package/dist/esm/audio/worklets/granular.worklet.d.ts +0 -2
- package/dist/esm/audio/worklets/granular.worklet.d.ts.map +0 -1
- package/dist/esm/audio/worklets/granular.worklet.js +0 -89
- package/dist/esm/audio/worklets/granular.worklet.js.map +0 -1
- package/dist/esm/audio/worklets/pitch-shift.worklet.d.ts +0 -2
- package/dist/esm/audio/worklets/pitch-shift.worklet.d.ts.map +0 -1
- package/dist/esm/audio/worklets/pitch-shift.worklet.js +0 -74
- package/dist/esm/audio/worklets/pitch-shift.worklet.js.map +0 -1
- package/dist/esm/audio/worklets/vocoder.worklet.d.ts +0 -2
- package/dist/esm/audio/worklets/vocoder.worklet.d.ts.map +0 -1
- package/dist/esm/audio/worklets/vocoder.worklet.js +0 -92
- package/dist/esm/audio/worklets/vocoder.worklet.js.map +0 -1
- package/dist/esm/input/internal/interactionManagerRegistry.d.ts +0 -10
- package/dist/esm/input/internal/interactionManagerRegistry.d.ts.map +0 -1
- package/dist/esm/input/internal/interactionManagerRegistry.js +0 -10
- package/dist/esm/input/internal/interactionManagerRegistry.js.map +0 -1
- package/dist/esm/rendering/index.d.ts.map +0 -1
- package/dist/esm/rendering/plan/RenderInstruction.js +0 -45
- package/dist/esm/rendering/plan/RenderInstruction.js.map +0 -1
- package/dist/esm/rendering.d.ts +0 -29
- package/dist/esm/rendering.d.ts.map +0 -1
- package/dist/esm/rendering.js.map +0 -1
- package/dist/esm/resources/JsonStore.d.ts +0 -19
- package/dist/esm/resources/JsonStore.d.ts.map +0 -1
- package/dist/esm/resources/JsonStore.js +0 -62
- package/dist/esm/resources/JsonStore.js.map +0 -1
package/dist/esm/core/Scene.js
CHANGED
|
@@ -1,4 +1,9 @@
|
|
|
1
1
|
import { Container } from '../rendering/Container.js';
|
|
2
|
+
import { UIRoot } from '../ui/UIRoot.js';
|
|
3
|
+
import { DisposalScope } from './DisposalScope.js';
|
|
4
|
+
import { serializeTree, migrate, deserializeInto } from './serialization/serialize.js';
|
|
5
|
+
import { SERIALIZATION_VERSION } from './serialization/types.js';
|
|
6
|
+
import { SystemRegistry } from './SystemRegistry.js';
|
|
2
7
|
|
|
3
8
|
/**
|
|
4
9
|
* Scene-bound input proxy. Bindings created here are automatically unbound
|
|
@@ -22,8 +27,7 @@ class SceneInputs {
|
|
|
22
27
|
onTrigger(channel, callback, options) {
|
|
23
28
|
return this._track(this._scene.app.input.onTrigger(channel, callback, options));
|
|
24
29
|
}
|
|
25
|
-
|
|
26
|
-
_disposeAll() {
|
|
30
|
+
destroy() {
|
|
27
31
|
for (const binding of this._bindings) {
|
|
28
32
|
binding.unbind();
|
|
29
33
|
}
|
|
@@ -54,8 +58,7 @@ class SceneTweens {
|
|
|
54
58
|
this._tweens.add(tween);
|
|
55
59
|
return this;
|
|
56
60
|
}
|
|
57
|
-
|
|
58
|
-
_disposeAll() {
|
|
61
|
+
destroy() {
|
|
59
62
|
for (const tween of this._tweens) {
|
|
60
63
|
tween.stop();
|
|
61
64
|
}
|
|
@@ -84,9 +87,16 @@ class SceneTweens {
|
|
|
84
87
|
class Scene {
|
|
85
88
|
_app = null;
|
|
86
89
|
_root = new Container();
|
|
87
|
-
|
|
90
|
+
/**
|
|
91
|
+
* When `true`, the scene's `update` and systems are skipped each frame while
|
|
92
|
+
* it keeps drawing — the simple way to freeze gameplay behind a pause menu
|
|
93
|
+
* (show a panel on `scene.ui`, then set `scene.paused = true`).
|
|
94
|
+
*/
|
|
95
|
+
paused = false;
|
|
88
96
|
_inputs = null;
|
|
89
97
|
_tweens = null;
|
|
98
|
+
_systems = null;
|
|
99
|
+
_disposal = new DisposalScope();
|
|
90
100
|
get app() {
|
|
91
101
|
return this._app;
|
|
92
102
|
}
|
|
@@ -121,7 +131,7 @@ class Scene {
|
|
|
121
131
|
if (this._app === null) {
|
|
122
132
|
throw new Error('Scene.inputs is unavailable before the scene is attached to an Application.');
|
|
123
133
|
}
|
|
124
|
-
this._inputs = new SceneInputs(this);
|
|
134
|
+
this._inputs = this._disposal.track(new SceneInputs(this));
|
|
125
135
|
}
|
|
126
136
|
return this._inputs;
|
|
127
137
|
}
|
|
@@ -137,15 +147,62 @@ class Scene {
|
|
|
137
147
|
if (this._app === null) {
|
|
138
148
|
throw new Error('Scene.tweens is unavailable before the scene is attached to an Application.');
|
|
139
149
|
}
|
|
140
|
-
this._tweens = new SceneTweens(this);
|
|
150
|
+
this._tweens = this._disposal.track(new SceneTweens(this));
|
|
141
151
|
}
|
|
142
152
|
return this._tweens;
|
|
143
153
|
}
|
|
144
|
-
|
|
145
|
-
|
|
154
|
+
/**
|
|
155
|
+
* Register a {@link Destroyable} to be destroyed automatically when this
|
|
156
|
+
* scene is destroyed (reverse registration order). Returns its argument for
|
|
157
|
+
* fluent capture: `const world = this.track(new PhysicsWorld())`. The
|
|
158
|
+
* scene-bound `tweens` and `inputs` registries are tracked the same way.
|
|
159
|
+
*/
|
|
160
|
+
track(item) {
|
|
161
|
+
return this._disposal.track(item);
|
|
146
162
|
}
|
|
147
|
-
|
|
148
|
-
|
|
163
|
+
/**
|
|
164
|
+
* Scene-bound system registry. Add tickable {@link System}s (e.g. a physics
|
|
165
|
+
* world) via `this.systems.add(world)`; each is updated once per frame after
|
|
166
|
+
* {@link Scene.update} (ascending `order`) and destroyed with the scene — no
|
|
167
|
+
* manual `step()` / `destroy()` wiring. Available before the scene is
|
|
168
|
+
* attached to an Application (systems tick only while the scene is active).
|
|
169
|
+
*/
|
|
170
|
+
get systems() {
|
|
171
|
+
if (this._systems === null) {
|
|
172
|
+
this._systems = this._disposal.track(new SystemRegistry());
|
|
173
|
+
}
|
|
174
|
+
return this._systems;
|
|
175
|
+
}
|
|
176
|
+
/** @internal — called by {@link SceneManager} each frame after `update`. */
|
|
177
|
+
_tickSystems(delta) {
|
|
178
|
+
this._systems?._tick(delta);
|
|
179
|
+
}
|
|
180
|
+
_ui = null;
|
|
181
|
+
/**
|
|
182
|
+
* Scene-bound UI layer, rendered screen-fixed on top of the scene content
|
|
183
|
+
* (after {@link Scene.draw}). Lazily created and destroyed with the scene;
|
|
184
|
+
* add widgets via `this.ui.addChild(...)`.
|
|
185
|
+
*
|
|
186
|
+
* Unlike {@link Scene.root}, the UI layer **is** auto-rendered each frame — a
|
|
187
|
+
* first-class overlay that always sits above the world. Its children live in
|
|
188
|
+
* screen space (origin top-left, `0..width` × `0..height`); pointer and
|
|
189
|
+
* keyboard input route to them ahead of the world layer.
|
|
190
|
+
*/
|
|
191
|
+
get ui() {
|
|
192
|
+
if (this._ui === null) {
|
|
193
|
+
this._ui = this._disposal.track(new UIRoot());
|
|
194
|
+
// If the scene is already active (its root carries a stage), bind the UI
|
|
195
|
+
// layer now; otherwise SceneManager attaches it when the scene activates.
|
|
196
|
+
if (this._root._getStage() !== null) {
|
|
197
|
+
this._app?.interaction.attachUIRoot(this._ui);
|
|
198
|
+
}
|
|
199
|
+
}
|
|
200
|
+
return this._ui;
|
|
201
|
+
}
|
|
202
|
+
/** @internal — the UI layer if materialized, else `null` (no lazy allocation). */
|
|
203
|
+
// eslint-disable-next-line @typescript-eslint/naming-convention -- UI is an acronym (cf. HTMLText)
|
|
204
|
+
_peekUI() {
|
|
205
|
+
return this._ui;
|
|
149
206
|
}
|
|
150
207
|
addChild(child) {
|
|
151
208
|
this._root.addChild(child);
|
|
@@ -155,9 +212,43 @@ class Scene {
|
|
|
155
212
|
this._root.removeChild(child);
|
|
156
213
|
return this;
|
|
157
214
|
}
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
215
|
+
/**
|
|
216
|
+
* Serialize this scene's structural root subtree to a plain, JSON-able
|
|
217
|
+
* {@link SerializedScene} descriptor.
|
|
218
|
+
*
|
|
219
|
+
* Captures **data, not behaviour**: structure, transforms, visuals and asset
|
|
220
|
+
* references — never update logic, signal handlers, tweens or systems. When
|
|
221
|
+
* the scene is attached to an {@link Application}, texture/asset references
|
|
222
|
+
* resolve to their {@link Loader} source keys. Reattach behaviour in code
|
|
223
|
+
* after {@link Scene.deserialize}.
|
|
224
|
+
*/
|
|
225
|
+
serialize() {
|
|
226
|
+
const loader = this._app?.loader ?? null;
|
|
227
|
+
const registry = this._app?.serializers;
|
|
228
|
+
const data = { version: SERIALIZATION_VERSION, root: serializeTree(this._root, loader, registry) };
|
|
229
|
+
const ui = this._peekUI();
|
|
230
|
+
if (ui !== null) {
|
|
231
|
+
data.ui = serializeTree(ui, loader, registry);
|
|
232
|
+
}
|
|
233
|
+
return data;
|
|
234
|
+
}
|
|
235
|
+
/**
|
|
236
|
+
* Rebuild this scene's root subtree from a {@link SerializedScene} produced
|
|
237
|
+
* by {@link Scene.serialize}. Existing root children are removed first, then
|
|
238
|
+
* the descriptor's children are reconstructed under {@link Scene.root}.
|
|
239
|
+
*
|
|
240
|
+
* Assets referenced by the data must already be loaded into the
|
|
241
|
+
* application's {@link Loader} (pre-load contract). Older documents are
|
|
242
|
+
* migrated to the current format; documents newer than the running engine
|
|
243
|
+
* throw. Returns `this`.
|
|
244
|
+
*/
|
|
245
|
+
deserialize(data) {
|
|
246
|
+
const migrated = migrate(data);
|
|
247
|
+
const loader = this._app?.loader ?? null;
|
|
248
|
+
const registry = this._app?.serializers;
|
|
249
|
+
deserializeInto(this._root, migrated.root, loader, registry);
|
|
250
|
+
if (migrated.ui !== undefined) {
|
|
251
|
+
deserializeInto(this.ui, migrated.ui, loader, registry);
|
|
161
252
|
}
|
|
162
253
|
return this;
|
|
163
254
|
}
|
|
@@ -213,10 +304,12 @@ class Scene {
|
|
|
213
304
|
// override in subclass
|
|
214
305
|
}
|
|
215
306
|
destroy() {
|
|
216
|
-
|
|
307
|
+
// Destroys everything tracked (scene-bound tweens/inputs + user-tracked
|
|
308
|
+
// resources) in reverse registration order, then the scene-graph root.
|
|
309
|
+
this._disposal.destroy();
|
|
217
310
|
this._inputs = null;
|
|
218
|
-
this._tweens?._disposeAll();
|
|
219
311
|
this._tweens = null;
|
|
312
|
+
this._systems = null;
|
|
220
313
|
this._root.destroy();
|
|
221
314
|
this._app = null;
|
|
222
315
|
}
|
|
@@ -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":";;;;;;;AAgBA;;;AAGG;AACH,MAAM,WAAW,CAAA;AAGqB,IAAA,MAAA;AAFnB,IAAA,SAAS,GAAG,IAAI,GAAG,EAAgB;AAEpD,IAAA,WAAA,CAAoC,MAAa,EAAA;QAAb,IAAA,CAAA,MAAM,GAAN,MAAM;IAAU;AAE7C,IAAA,OAAO,CAAC,OAA+C,EAAE,QAAiC,EAAE,OAA6B,EAAA;QAC9H,OAAO,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,GAAI,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,EAAE,QAAQ,EAAE,OAAO,CAAC,CAAC;IAChF;AAEO,IAAA,QAAQ,CAAC,OAA+C,EAAE,QAAiC,EAAE,OAA6B,EAAA;QAC/H,OAAO,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,GAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,OAAO,EAAE,QAAQ,EAAE,OAAO,CAAC,CAAC;IACjF;AAEO,IAAA,MAAM,CAAC,OAA+C,EAAE,QAAiC,EAAE,OAA6B,EAAA;QAC7H,OAAO,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,GAAI,CAAC,KAAK,CAAC,MAAM,CAAC,OAAO,EAAE,QAAQ,EAAE,OAAO,CAAC,CAAC;IAC/E;AAEO,IAAA,SAAS,CAAC,OAA+C,EAAE,QAAiC,EAAE,OAA6B,EAAA;QAChI,OAAO,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,GAAI,CAAC,KAAK,CAAC,SAAS,CAAC,OAAO,EAAE,QAAQ,EAAE,OAAO,CAAC,CAAC;IAClF;IAEO,OAAO,GAAA;AACZ,QAAA,KAAK,MAAM,OAAO,IAAI,IAAI,CAAC,SAAS,EAAE;YACpC,OAAO,CAAC,MAAM,EAAE;QAClB;AAEA,QAAA,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE;IACxB;AAEQ,IAAA,MAAM,CAAC,OAAqB,EAAA;AAClC,QAAA,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,OAAO,CAAC;AAE3B,QAAA,OAAO,OAAO;IAChB;AACD;AAED;;;AAGG;AACH,MAAM,WAAW,CAAA;AAGqB,IAAA,MAAA;AAFnB,IAAA,OAAO,GAAG,IAAI,GAAG,EAAS;AAE3C,IAAA,WAAA,CAAoC,MAAa,EAAA;QAAb,IAAA,CAAA,MAAM,GAAN,MAAM;IAAU;AAE7C,IAAA,MAAM,CAAmB,MAAS,EAAA;AACvC,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,GAAI,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC;AACpD,QAAA,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC;AAEvB,QAAA,OAAO,KAAK;IACd;AAEO,IAAA,GAAG,CAAC,KAAY,EAAA;QACrB,IAAI,CAAC,MAAM,CAAC,GAAI,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC;AAClC,QAAA,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC;AAEvB,QAAA,OAAO,IAAI;IACb;IAEO,OAAO,GAAA;AACZ,QAAA,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,OAAO,EAAE;YAChC,KAAK,CAAC,IAAI,EAAE;QACd;AAEA,QAAA,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE;IACtB;AACD;AAED;;;;;;;;;;;;;;;;;;AAkBG;MACU,KAAK,CAAA;IACN,IAAI,GAAuB,IAAI;AACtB,IAAA,KAAK,GAAG,IAAI,SAAS,EAAE;AAE1C;;;;AAIG;IACI,MAAM,GAAG,KAAK;IAEb,OAAO,GAAuB,IAAI;IAClC,OAAO,GAAuB,IAAI;IAClC,QAAQ,GAA0B,IAAI;AAC7B,IAAA,SAAS,GAAG,IAAI,aAAa,EAAE;AAEhD,IAAA,IAAW,GAAG,GAAA;QACZ,OAAO,IAAI,CAAC,IAAI;IAClB;IAEA,IAAW,GAAG,CAAC,GAAuB,EAAA;AACpC,QAAA,IAAI,CAAC,IAAI,GAAG,GAAG;IACjB;AAEA;;;;;;;;;;;;AAYG;AACH,IAAA,IAAW,IAAI,GAAA;QACb,OAAO,IAAI,CAAC,KAAK;IACnB;AAEA;;;;;;AAMG;AACH,IAAA,IAAW,MAAM,GAAA;AACf,QAAA,IAAI,IAAI,CAAC,OAAO,KAAK,IAAI,EAAE;AACzB,YAAA,IAAI,IAAI,CAAC,IAAI,KAAK,IAAI,EAAE;AACtB,gBAAA,MAAM,IAAI,KAAK,CAAC,6EAA6E,CAAC;YAChG;AAEA,YAAA,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,WAAW,CAAC,IAAI,CAAC,CAAC;QAC5D;QAEA,OAAO,IAAI,CAAC,OAAO;IACrB;AAEA;;;;;;AAMG;AACH,IAAA,IAAW,MAAM,GAAA;AACf,QAAA,IAAI,IAAI,CAAC,OAAO,KAAK,IAAI,EAAE;AACzB,YAAA,IAAI,IAAI,CAAC,IAAI,KAAK,IAAI,EAAE;AACtB,gBAAA,MAAM,IAAI,KAAK,CAAC,6EAA6E,CAAC;YAChG;AAEA,YAAA,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,WAAW,CAAC,IAAI,CAAC,CAAC;QAC5D;QAEA,OAAO,IAAI,CAAC,OAAO;IACrB;AAEA;;;;;AAKG;AACI,IAAA,KAAK,CAAwB,IAAO,EAAA;QACzC,OAAO,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC;IACnC;AAEA;;;;;;AAMG;AACH,IAAA,IAAW,OAAO,GAAA;AAChB,QAAA,IAAI,IAAI,CAAC,QAAQ,KAAK,IAAI,EAAE;AAC1B,YAAA,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,cAAc,EAAE,CAAC;QAC5D;QAEA,OAAO,IAAI,CAAC,QAAQ;IACtB;;AAGO,IAAA,YAAY,CAAC,KAAW,EAAA;AAC7B,QAAA,IAAI,CAAC,QAAQ,EAAE,KAAK,CAAC,KAAK,CAAC;IAC7B;IAEQ,GAAG,GAAkB,IAAI;AAEjC;;;;;;;;;AASG;AACH,IAAA,IAAW,EAAE,GAAA;AACX,QAAA,IAAI,IAAI,CAAC,GAAG,KAAK,IAAI,EAAE;AACrB,YAAA,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,MAAM,EAAE,CAAC;;;YAI7C,IAAI,IAAI,CAAC,KAAK,CAAC,SAAS,EAAE,KAAK,IAAI,EAAE;gBACnC,IAAI,CAAC,IAAI,EAAE,WAAW,CAAC,YAAY,CAAC,IAAI,CAAC,GAAG,CAAC;YAC/C;QACF;QAEA,OAAO,IAAI,CAAC,GAAG;IACjB;;;IAIO,OAAO,GAAA;QACZ,OAAO,IAAI,CAAC,GAAG;IACjB;AAEO,IAAA,QAAQ,CAAC,KAAiB,EAAA;AAC/B,QAAA,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC;AAE1B,QAAA,OAAO,IAAI;IACb;AAEO,IAAA,WAAW,CAAC,KAAiB,EAAA;AAClC,QAAA,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,KAAK,CAAC;AAE7B,QAAA,OAAO,IAAI;IACb;AAEA;;;;;;;;;AASG;IACI,SAAS,GAAA;QACd,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,EAAE,MAAM,IAAI,IAAI;AACxC,QAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,EAAE,WAAW;QACvC,MAAM,IAAI,GAAoB,EAAE,OAAO,EAAE,qBAAqB,EAAE,IAAI,EAAE,aAAa,CAAC,IAAI,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE;AACnH,QAAA,MAAM,EAAE,GAAG,IAAI,CAAC,OAAO,EAAE;AAEzB,QAAA,IAAI,EAAE,KAAK,IAAI,EAAE;YACf,IAAI,CAAC,EAAE,GAAG,aAAa,CAAC,EAAE,EAAE,MAAM,EAAE,QAAQ,CAAC;QAC/C;AAEA,QAAA,OAAO,IAAI;IACb;AAEA;;;;;;;;;AASG;AACI,IAAA,WAAW,CAAC,IAAqB,EAAA;AACtC,QAAA,MAAM,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC;QAC9B,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,EAAE,MAAM,IAAI,IAAI;AACxC,QAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,EAAE,WAAW;AAEvC,QAAA,eAAe,CAAC,IAAI,CAAC,KAAK,EAAE,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,CAAC;AAE5D,QAAA,IAAI,QAAQ,CAAC,EAAE,KAAK,SAAS,EAAE;AAC7B,YAAA,eAAe,CAAC,IAAI,CAAC,EAAE,EAAE,QAAQ,CAAC,EAAE,EAAE,MAAM,EAAE,QAAQ,CAAC;QACzD;AAEA,QAAA,OAAO,IAAI;IACb;AAEA;;;;;AAKG;AACI,IAAA,IAAI,CAAC,OAAe,EAAA;;IAE3B;AAEA;;;;AAIG;AACI,IAAA,IAAI,CAAC,OAAe,EAAA;;IAE3B;AAEA;;;;AAIG;AACI,IAAA,MAAM,CAAC,MAAY,EAAA;;IAE1B;AAEA;;;;;;;;;;;;;;AAcG;AACI,IAAA,IAAI,CAAC,QAA0B,EAAA;;IAEtC;AAEA;;;;AAIG;AACI,IAAA,MAAM,CAAC,OAAe,EAAA;;IAE7B;IAEO,OAAO,GAAA;;;AAGZ,QAAA,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE;AACxB,QAAA,IAAI,CAAC,OAAO,GAAG,IAAI;AACnB,QAAA,IAAI,CAAC,OAAO,GAAG,IAAI;AACnB,QAAA,IAAI,CAAC,QAAQ,GAAG,IAAI;AACpB,QAAA,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE;AACpB,QAAA,IAAI,CAAC,IAAI,GAAG,IAAI;IAClB;AACD;;;;"}
|
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
import type { Application } from './Application';
|
|
2
2
|
import { Color } from './Color';
|
|
3
|
-
import type { SceneParticipationPolicy } from './Scene';
|
|
4
3
|
import { Scene } from './Scene';
|
|
5
4
|
import { Signal } from './Signal';
|
|
6
5
|
import type { Time } from './Time';
|
|
@@ -21,90 +20,53 @@ export interface SetSceneOptions {
|
|
|
21
20
|
transition?: SceneTransition;
|
|
22
21
|
}
|
|
23
22
|
/**
|
|
24
|
-
*
|
|
25
|
-
* {@link
|
|
26
|
-
*
|
|
27
|
-
|
|
28
|
-
export interface PushSceneOptions extends SceneParticipationPolicy {
|
|
29
|
-
transition?: SceneTransition;
|
|
30
|
-
}
|
|
31
|
-
/** Options passed to {@link SceneManager.popScene}. */
|
|
32
|
-
export interface PopSceneOptions {
|
|
33
|
-
transition?: SceneTransition;
|
|
34
|
-
}
|
|
35
|
-
/**
|
|
36
|
-
* Stack-based scene controller owned by {@link Application}. Maintains an
|
|
37
|
-
* ordered stack of {@link Scene} instances, each tagged with its
|
|
38
|
-
* participation policy ({@link SceneStackMode}).
|
|
39
|
-
* Scenes higher on the stack overlay scenes lower; the policy of each
|
|
40
|
-
* scene determines whether scenes below continue to update / render.
|
|
41
|
-
*
|
|
42
|
-
* Use {@link SceneManager.setScene} to replace the entire stack with one
|
|
43
|
-
* scene, {@link SceneManager.pushScene} to overlay a new scene on top, and
|
|
44
|
-
* {@link SceneManager.popScene} to remove the topmost. All three accept an
|
|
45
|
-
* optional fade transition.
|
|
23
|
+
* Single-active-scene controller owned by {@link Application}. Holds at most one
|
|
24
|
+
* active {@link Scene} (the current "screen"); {@link SceneManager.setScene}
|
|
25
|
+
* switches to a new scene — unloading the previous one — with an optional fade
|
|
26
|
+
* transition.
|
|
46
27
|
*
|
|
28
|
+
* There is no scene stack: overlays, HUDs and pause menus belong on
|
|
29
|
+
* {@link Scene.ui} (the screen-fixed UI layer), and "freeze the game but keep
|
|
30
|
+
* drawing it" is `scene.paused = true` (skips the scene's `update` + systems
|
|
31
|
+
* while it keeps rendering).
|
|
47
32
|
*/
|
|
48
33
|
export declare class SceneManager {
|
|
49
34
|
private readonly _app;
|
|
50
|
-
private
|
|
35
|
+
private _activeScene;
|
|
51
36
|
private readonly _transitionOverlay;
|
|
52
37
|
private _transition;
|
|
53
|
-
/** Fires whenever the
|
|
38
|
+
/** Fires whenever the active scene changes (set or clear). Payload is the new scene, or `null` when cleared. */
|
|
54
39
|
readonly onChangeScene: Signal<[Scene | null]>;
|
|
55
|
-
/** Fires after a scene's `init` resolves and it
|
|
40
|
+
/** Fires after a scene's `init` resolves and it becomes active. */
|
|
56
41
|
readonly onStartScene: Signal<[Scene]>;
|
|
57
|
-
/** Fires once per frame for the
|
|
42
|
+
/** Fires once per frame for the active scene after its `update` ran. */
|
|
58
43
|
readonly onUpdateScene: Signal<[Scene]>;
|
|
59
44
|
/** Fires just before a scene is unloaded (`unload` then `destroy`). */
|
|
60
45
|
readonly onStopScene: Signal<[Scene]>;
|
|
61
46
|
private readonly _asyncUpdateWarned;
|
|
62
47
|
private readonly _asyncDrawWarned;
|
|
63
|
-
private readonly _updateScratch;
|
|
64
|
-
private readonly _drawScratch;
|
|
65
48
|
constructor(app: Application);
|
|
49
|
+
/** The active scene, or `null` when none is set. */
|
|
66
50
|
get currentScene(): Scene | null;
|
|
67
51
|
set currentScene(scene: Scene | null);
|
|
68
|
-
get scenes(): readonly Scene[];
|
|
69
52
|
/**
|
|
70
|
-
*
|
|
71
|
-
*
|
|
72
|
-
*
|
|
73
|
-
*
|
|
74
|
-
*
|
|
75
|
-
* Throws if `scene` is somewhere in the stack but not the top.
|
|
53
|
+
* Switch to `scene` (or clear to `null`), unloading the previously active
|
|
54
|
+
* scene. No-op when `scene` is already active. An optional fade transition
|
|
55
|
+
* runs the swap at full opacity. The new scene is loaded before the old one
|
|
56
|
+
* is torn down, so there is no blank frame between them.
|
|
76
57
|
*/
|
|
77
58
|
setScene(scene: Scene | null, options?: SetSceneOptions): Promise<this>;
|
|
78
59
|
/**
|
|
79
|
-
*
|
|
80
|
-
*
|
|
81
|
-
*
|
|
82
|
-
*
|
|
83
|
-
*
|
|
84
|
-
* Throws if `scene` is already present in the stack.
|
|
85
|
-
*/
|
|
86
|
-
pushScene(scene: Scene, options?: PushSceneOptions): Promise<this>;
|
|
87
|
-
/**
|
|
88
|
-
* Remove the topmost scene from the stack. Resolves once the scene's
|
|
89
|
-
* `unload` finishes. No-op when the stack is empty.
|
|
90
|
-
*/
|
|
91
|
-
popScene(options?: PopSceneOptions): Promise<this>;
|
|
92
|
-
/**
|
|
93
|
-
* Per-frame entry point called by {@link Application.update}. Advances
|
|
94
|
-
* any active fade transition, then iterates the stack top-to-bottom
|
|
95
|
-
* deciding which scenes update and which draw based on each scene's
|
|
96
|
-
* participation policy (`opaque` covers everything below, `modal`
|
|
97
|
-
* covers only updates).
|
|
60
|
+
* Per-frame entry point called by {@link Application.update}. Advances any
|
|
61
|
+
* active fade transition, then — for the active scene — runs `update` and
|
|
62
|
+
* ticks its systems (unless {@link Scene.paused}), draws it, and renders its
|
|
63
|
+
* UI layer on top.
|
|
98
64
|
*/
|
|
99
65
|
update(delta: Time): this;
|
|
100
66
|
destroy(): void;
|
|
101
67
|
private _prepareScene;
|
|
102
68
|
private _disposeScene;
|
|
103
|
-
private
|
|
104
|
-
private _unloadCoveredScenes;
|
|
105
|
-
private _unloadAllScenesOnDestroy;
|
|
106
|
-
private _resolveParticipationPolicy;
|
|
107
|
-
private _resolveParticipants;
|
|
69
|
+
private _unloadActiveSceneOnDestroy;
|
|
108
70
|
private _runWithTransition;
|
|
109
71
|
private _advanceTransition;
|
|
110
72
|
private _executeTransitionAction;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SceneManager.d.ts","sourceRoot":"","sources":["../../../src/core/SceneManager.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AACjD,OAAO,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AAChC,OAAO,
|
|
1
|
+
{"version":3,"file":"SceneManager.d.ts","sourceRoot":"","sources":["../../../src/core/SceneManager.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AACjD,OAAO,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AAChC,OAAO,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AAChC,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAClC,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAC;AAEnC;;;;GAIG;AACH,MAAM,WAAW,mBAAmB;IAClC,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,KAAK,CAAC;CACf;AAED,yEAAyE;AACzE,MAAM,MAAM,eAAe,GAAG,mBAAmB,CAAC;AAElD,uDAAuD;AACvD,MAAM,WAAW,eAAe;IAC9B,UAAU,CAAC,EAAE,eAAe,CAAC;CAC9B;AAgCD;;;;;;;;;;GAUG;AACH,qBAAa,YAAY;IACvB,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAc;IACnC,OAAO,CAAC,YAAY,CAAsB;IAC1C,OAAO,CAAC,QAAQ,CAAC,kBAAkB,CAA8C;IACjF,OAAO,CAAC,WAAW,CAAqC;IAExD,gHAAgH;IAChH,SAAgB,aAAa,yBAAgC;IAC7D,mEAAmE;IACnE,SAAgB,YAAY,kBAAyB;IACrD,wEAAwE;IACxE,SAAgB,aAAa,kBAAyB;IACtD,uEAAuE;IACvE,SAAgB,WAAW,kBAAyB;IAEpD,OAAO,CAAC,QAAQ,CAAC,kBAAkB,CAAwB;IAC3D,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAwB;gBAEtC,GAAG,EAAE,WAAW;IAInC,oDAAoD;IACpD,IAAW,YAAY,IAAI,KAAK,GAAG,IAAI,CAEtC;IAED,IAAW,YAAY,CAAC,KAAK,EAAE,KAAK,GAAG,IAAI,EAE1C;IAED;;;;;OAKG;IACU,QAAQ,CAAC,KAAK,EAAE,KAAK,GAAG,IAAI,EAAE,OAAO,GAAE,eAAoB,GAAG,OAAO,CAAC,IAAI,CAAC;IA4BxF;;;;;OAKG;IACI,MAAM,CAAC,KAAK,EAAE,IAAI,GAAG,IAAI;IAgDzB,OAAO,IAAI,IAAI;YAkBR,aAAa;YAqDb,aAAa;YAeb,2BAA2B;YAgB3B,kBAAkB;IAiChC,OAAO,CAAC,kBAAkB;YAyBZ,wBAAwB;IA2BtC,OAAO,CAAC,iBAAiB;IAYzB,OAAO,CAAC,mBAAmB;IAc3B,OAAO,CAAC,wBAAwB;CAoBjC"}
|
|
@@ -18,152 +18,102 @@ const createOverlayMesh = () => new TransitionOverlayMesh({
|
|
|
18
18
|
});
|
|
19
19
|
const defaultFadeTransitionDuration = 220;
|
|
20
20
|
/**
|
|
21
|
-
*
|
|
22
|
-
*
|
|
23
|
-
*
|
|
24
|
-
*
|
|
25
|
-
* scene determines whether scenes below continue to update / render.
|
|
26
|
-
*
|
|
27
|
-
* Use {@link SceneManager.setScene} to replace the entire stack with one
|
|
28
|
-
* scene, {@link SceneManager.pushScene} to overlay a new scene on top, and
|
|
29
|
-
* {@link SceneManager.popScene} to remove the topmost. All three accept an
|
|
30
|
-
* optional fade transition.
|
|
21
|
+
* Single-active-scene controller owned by {@link Application}. Holds at most one
|
|
22
|
+
* active {@link Scene} (the current "screen"); {@link SceneManager.setScene}
|
|
23
|
+
* switches to a new scene — unloading the previous one — with an optional fade
|
|
24
|
+
* transition.
|
|
31
25
|
*
|
|
26
|
+
* There is no scene stack: overlays, HUDs and pause menus belong on
|
|
27
|
+
* {@link Scene.ui} (the screen-fixed UI layer), and "freeze the game but keep
|
|
28
|
+
* drawing it" is `scene.paused = true` (skips the scene's `update` + systems
|
|
29
|
+
* while it keeps rendering).
|
|
32
30
|
*/
|
|
33
31
|
class SceneManager {
|
|
34
32
|
_app;
|
|
35
|
-
|
|
33
|
+
_activeScene = null;
|
|
36
34
|
_transitionOverlay = createOverlayMesh();
|
|
37
35
|
_transition = null;
|
|
38
|
-
/** Fires whenever the
|
|
36
|
+
/** Fires whenever the active scene changes (set or clear). Payload is the new scene, or `null` when cleared. */
|
|
39
37
|
onChangeScene = new Signal();
|
|
40
|
-
/** Fires after a scene's `init` resolves and it
|
|
38
|
+
/** Fires after a scene's `init` resolves and it becomes active. */
|
|
41
39
|
onStartScene = new Signal();
|
|
42
|
-
/** Fires once per frame for the
|
|
40
|
+
/** Fires once per frame for the active scene after its `update` ran. */
|
|
43
41
|
onUpdateScene = new Signal();
|
|
44
42
|
/** Fires just before a scene is unloaded (`unload` then `destroy`). */
|
|
45
43
|
onStopScene = new Signal();
|
|
46
44
|
_asyncUpdateWarned = new WeakSet();
|
|
47
45
|
_asyncDrawWarned = new WeakSet();
|
|
48
|
-
_updateScratch = [];
|
|
49
|
-
_drawScratch = [];
|
|
50
46
|
constructor(app) {
|
|
51
47
|
this._app = app;
|
|
52
48
|
}
|
|
49
|
+
/** The active scene, or `null` when none is set. */
|
|
53
50
|
get currentScene() {
|
|
54
|
-
return this.
|
|
51
|
+
return this._activeScene;
|
|
55
52
|
}
|
|
56
53
|
set currentScene(scene) {
|
|
57
54
|
void this.setScene(scene);
|
|
58
55
|
}
|
|
59
|
-
get scenes() {
|
|
60
|
-
return this._stack.map(entry => entry.scene);
|
|
61
|
-
}
|
|
62
56
|
/**
|
|
63
|
-
*
|
|
64
|
-
*
|
|
65
|
-
*
|
|
66
|
-
*
|
|
67
|
-
*
|
|
68
|
-
* Throws if `scene` is somewhere in the stack but not the top.
|
|
57
|
+
* Switch to `scene` (or clear to `null`), unloading the previously active
|
|
58
|
+
* scene. No-op when `scene` is already active. An optional fade transition
|
|
59
|
+
* runs the swap at full opacity. The new scene is loaded before the old one
|
|
60
|
+
* is torn down, so there is no blank frame between them.
|
|
69
61
|
*/
|
|
70
62
|
async setScene(scene, options = {}) {
|
|
71
63
|
await this._runWithTransition(async () => {
|
|
72
|
-
if (scene ===
|
|
73
|
-
await this._unloadAllScenes();
|
|
74
|
-
this.onChangeScene.dispatch(null);
|
|
75
|
-
return;
|
|
76
|
-
}
|
|
77
|
-
if (this.currentScene === scene) {
|
|
78
|
-
if (this._stack.length > 1) {
|
|
79
|
-
await this._unloadCoveredScenes();
|
|
80
|
-
}
|
|
64
|
+
if (scene === this._activeScene) {
|
|
81
65
|
return;
|
|
82
66
|
}
|
|
83
|
-
if (
|
|
84
|
-
|
|
67
|
+
if (scene !== null) {
|
|
68
|
+
await this._prepareScene(scene);
|
|
85
69
|
}
|
|
86
|
-
const
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
this.onChangeScene.dispatch(scene);
|
|
91
|
-
this.onStartScene.dispatch(scene);
|
|
92
|
-
}, options.transition);
|
|
93
|
-
return this;
|
|
94
|
-
}
|
|
95
|
-
/**
|
|
96
|
-
* Push `scene` onto the stack, leaving any underlying scenes intact.
|
|
97
|
-
* Resolves once the pushed scene's async `load` + `init` complete.
|
|
98
|
-
* `options` may override the scene's declared participation policy
|
|
99
|
-
* (stack mode, input mode) for this particular push.
|
|
100
|
-
*
|
|
101
|
-
* Throws if `scene` is already present in the stack.
|
|
102
|
-
*/
|
|
103
|
-
async pushScene(scene, options = {}) {
|
|
104
|
-
await this._runWithTransition(async () => {
|
|
105
|
-
if (this._stack.some(entry => entry.scene === scene)) {
|
|
106
|
-
throw new Error('Cannot push a scene instance that is already present in the stack.');
|
|
70
|
+
const previous = this._activeScene;
|
|
71
|
+
this._activeScene = scene;
|
|
72
|
+
if (previous !== null) {
|
|
73
|
+
await this._disposeScene(previous);
|
|
107
74
|
}
|
|
108
|
-
const policy = this._resolveParticipationPolicy(scene, options);
|
|
109
|
-
await this._prepareScene(scene);
|
|
110
|
-
this._stack.push({ scene, policy });
|
|
111
75
|
this.onChangeScene.dispatch(scene);
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
return this;
|
|
115
|
-
}
|
|
116
|
-
/**
|
|
117
|
-
* Remove the topmost scene from the stack. Resolves once the scene's
|
|
118
|
-
* `unload` finishes. No-op when the stack is empty.
|
|
119
|
-
*/
|
|
120
|
-
async popScene(options = {}) {
|
|
121
|
-
await this._runWithTransition(async () => {
|
|
122
|
-
if (this._stack.length === 0) {
|
|
123
|
-
return;
|
|
76
|
+
if (scene !== null) {
|
|
77
|
+
this.onStartScene.dispatch(scene);
|
|
124
78
|
}
|
|
125
|
-
const removed = this._stack.at(-1);
|
|
126
|
-
if (!removed) {
|
|
127
|
-
return;
|
|
128
|
-
}
|
|
129
|
-
await this._disposeScene(removed.scene);
|
|
130
|
-
this._stack.pop();
|
|
131
|
-
this.onChangeScene.dispatch(this.currentScene);
|
|
132
79
|
}, options.transition);
|
|
133
80
|
return this;
|
|
134
81
|
}
|
|
135
82
|
/**
|
|
136
|
-
* Per-frame entry point called by {@link Application.update}. Advances
|
|
137
|
-
*
|
|
138
|
-
*
|
|
139
|
-
*
|
|
140
|
-
* covers only updates).
|
|
83
|
+
* Per-frame entry point called by {@link Application.update}. Advances any
|
|
84
|
+
* active fade transition, then — for the active scene — runs `update` and
|
|
85
|
+
* ticks its systems (unless {@link Scene.paused}), draws it, and renders its
|
|
86
|
+
* UI layer on top.
|
|
141
87
|
*/
|
|
142
88
|
update(delta) {
|
|
143
89
|
this._advanceTransition(delta.milliseconds);
|
|
144
|
-
this.
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
this._asyncUpdateWarned.
|
|
150
|
-
|
|
90
|
+
const scene = this._activeScene;
|
|
91
|
+
if (scene !== null) {
|
|
92
|
+
if (!scene.paused) {
|
|
93
|
+
// eslint-disable-next-line @typescript-eslint/no-confusing-void-expression
|
|
94
|
+
const updateResult = scene.update(delta);
|
|
95
|
+
if (!this._asyncUpdateWarned.has(scene) && updateResult instanceof Promise) {
|
|
96
|
+
this._asyncUpdateWarned.add(scene);
|
|
97
|
+
console.warn(`[ExoJS] Scene.update() returned a Promise. update() must be synchronous — async logic here breaks frame timing and silently drops errors. Move async work into load() or init() instead.`);
|
|
98
|
+
}
|
|
99
|
+
// Tick the scene's systems (e.g. a physics world) after its update().
|
|
100
|
+
scene._tickSystems(delta);
|
|
151
101
|
}
|
|
152
|
-
}
|
|
153
|
-
for (const scene of this._drawScratch) {
|
|
154
102
|
// eslint-disable-next-line @typescript-eslint/no-confusing-void-expression
|
|
155
103
|
const drawResult = scene.draw(this._app.rendering);
|
|
156
104
|
if (!this._asyncDrawWarned.has(scene) && drawResult instanceof Promise) {
|
|
157
105
|
this._asyncDrawWarned.add(scene);
|
|
158
106
|
console.warn(`[ExoJS] Scene.draw() returned a Promise. draw() must be synchronous — an async draw() produces incomplete frames and silently drops errors.`);
|
|
159
107
|
}
|
|
108
|
+
// Auto-render the scene's screen-fixed UI layer above its content.
|
|
109
|
+
scene._peekUI()?._render(this._app.rendering);
|
|
160
110
|
}
|
|
161
111
|
const transitionAlpha = this._getTransitionAlpha();
|
|
162
112
|
if (transitionAlpha > 0) {
|
|
163
113
|
this._renderTransitionOverlay(transitionAlpha);
|
|
164
114
|
}
|
|
165
|
-
if (
|
|
166
|
-
this.onUpdateScene.dispatch(
|
|
115
|
+
if (scene !== null) {
|
|
116
|
+
this.onUpdateScene.dispatch(scene);
|
|
167
117
|
}
|
|
168
118
|
return this;
|
|
169
119
|
}
|
|
@@ -174,7 +124,7 @@ class SceneManager {
|
|
|
174
124
|
transition.color.destroy();
|
|
175
125
|
transition.reject(new Error('SceneManager was destroyed while a transition was active.'));
|
|
176
126
|
}
|
|
177
|
-
void this.
|
|
127
|
+
void this._unloadActiveSceneOnDestroy();
|
|
178
128
|
this._transitionOverlay.destroy();
|
|
179
129
|
this.onChangeScene.destroy();
|
|
180
130
|
this.onStartScene.destroy();
|
|
@@ -189,6 +139,14 @@ class SceneManager {
|
|
|
189
139
|
if (scene.root.children.length > 0 && scene.draw === Scene.prototype.draw) {
|
|
190
140
|
console.warn(`[ExoJS] Scene.root has ${scene.root.children.length} child(ren) after init() but draw() is not overridden. Scene.root is not auto-rendered — call context.render(this.root) inside draw().`);
|
|
191
141
|
}
|
|
142
|
+
// Bind the scene's root to the app's interaction manager so its nodes
|
|
143
|
+
// route picking/bounds notifications to this Application (no global).
|
|
144
|
+
this._app.interaction.attachRoot(scene.root);
|
|
145
|
+
// Bind the UI layer too, if it was materialized before activation.
|
|
146
|
+
const ui = scene._peekUI();
|
|
147
|
+
if (ui !== null) {
|
|
148
|
+
this._app.interaction.attachUIRoot(ui);
|
|
149
|
+
}
|
|
192
150
|
}
|
|
193
151
|
catch (error) {
|
|
194
152
|
let cleanupError = null;
|
|
@@ -219,69 +177,26 @@ class SceneManager {
|
|
|
219
177
|
async _disposeScene(scene) {
|
|
220
178
|
this.onStopScene.dispatch(scene);
|
|
221
179
|
await scene.unload(this._app.loader);
|
|
180
|
+
const ui = scene._peekUI();
|
|
181
|
+
if (ui !== null) {
|
|
182
|
+
this._app.interaction.detachUIRoot(ui);
|
|
183
|
+
}
|
|
184
|
+
this._app.interaction.detachRoot(scene.root);
|
|
222
185
|
scene.destroy();
|
|
223
186
|
scene.app = null;
|
|
224
187
|
}
|
|
225
|
-
async
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
}
|
|
229
|
-
this._stack.length = 0;
|
|
230
|
-
}
|
|
231
|
-
async _unloadCoveredScenes() {
|
|
232
|
-
if (this._stack.length <= 1) {
|
|
188
|
+
async _unloadActiveSceneOnDestroy() {
|
|
189
|
+
const scene = this._activeScene;
|
|
190
|
+
if (scene === null) {
|
|
233
191
|
return;
|
|
234
192
|
}
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
}
|
|
239
|
-
for (let index = this._stack.length - 2; index >= 0; index--) {
|
|
240
|
-
await this._disposeScene(this._stack[index].scene);
|
|
241
|
-
}
|
|
242
|
-
this._stack.length = 0;
|
|
243
|
-
this._stack.push(activeEntry);
|
|
244
|
-
}
|
|
245
|
-
async _unloadAllScenesOnDestroy() {
|
|
246
|
-
for (let index = this._stack.length - 1; index >= 0; index--) {
|
|
247
|
-
try {
|
|
248
|
-
await this._disposeScene(this._stack[index].scene);
|
|
249
|
-
}
|
|
250
|
-
catch (error) {
|
|
251
|
-
console.error('SceneManager.destroy() failed to unload the active scene.', error);
|
|
252
|
-
}
|
|
193
|
+
this._activeScene = null;
|
|
194
|
+
try {
|
|
195
|
+
await this._disposeScene(scene);
|
|
253
196
|
}
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
_resolveParticipationPolicy(scene, overrides = {}) {
|
|
257
|
-
const mode = overrides.mode ?? scene.stackMode ?? 'overlay';
|
|
258
|
-
return { mode };
|
|
259
|
-
}
|
|
260
|
-
_resolveParticipants() {
|
|
261
|
-
const updateScenes = this._updateScratch;
|
|
262
|
-
const drawScenes = this._drawScratch;
|
|
263
|
-
updateScenes.length = 0;
|
|
264
|
-
drawScenes.length = 0;
|
|
265
|
-
let allowBelowUpdate = true;
|
|
266
|
-
let allowBelowDraw = true;
|
|
267
|
-
for (let index = this._stack.length - 1; index >= 0; index--) {
|
|
268
|
-
const entry = this._stack[index];
|
|
269
|
-
if (allowBelowUpdate) {
|
|
270
|
-
updateScenes.push(entry.scene);
|
|
271
|
-
}
|
|
272
|
-
if (allowBelowDraw) {
|
|
273
|
-
drawScenes.push(entry.scene);
|
|
274
|
-
}
|
|
275
|
-
if (entry.policy.mode === 'opaque') {
|
|
276
|
-
allowBelowUpdate = false;
|
|
277
|
-
allowBelowDraw = false;
|
|
278
|
-
}
|
|
279
|
-
else if (entry.policy.mode === 'modal') {
|
|
280
|
-
allowBelowUpdate = false;
|
|
281
|
-
}
|
|
197
|
+
catch (error) {
|
|
198
|
+
console.error('SceneManager.destroy() failed to unload the active scene.', error);
|
|
282
199
|
}
|
|
283
|
-
updateScenes.reverse();
|
|
284
|
-
drawScenes.reverse();
|
|
285
200
|
}
|
|
286
201
|
async _runWithTransition(action, transition) {
|
|
287
202
|
if (transition?.type !== 'fade') {
|