@codexo/exojs 0.13.0 → 0.15.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 +265 -6
- package/README.md +82 -67
- package/dist/esm/animation/Tween.d.ts.map +1 -1
- package/dist/esm/animation/Tween.js +1 -2
- package/dist/esm/animation/Tween.js.map +1 -1
- package/dist/esm/animation/TweenManager.d.ts +50 -7
- package/dist/esm/animation/TweenManager.d.ts.map +1 -1
- package/dist/esm/animation/TweenManager.js +68 -10
- package/dist/esm/animation/TweenManager.js.map +1 -1
- package/dist/esm/animation/TweenSequencer.d.ts +139 -0
- package/dist/esm/animation/TweenSequencer.d.ts.map +1 -0
- package/dist/esm/animation/TweenSequencer.js +305 -0
- package/dist/esm/animation/TweenSequencer.js.map +1 -0
- package/dist/esm/animation/index.d.ts +7 -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/WorkletEffect.d.ts +68 -0
- package/dist/esm/audio/WorkletEffect.d.ts.map +1 -0
- package/dist/esm/audio/WorkletEffect.js +177 -0
- 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 +169 -14
- package/dist/esm/core/Application.d.ts.map +1 -1
- package/dist/esm/core/Application.js +306 -31
- package/dist/esm/core/Application.js.map +1 -1
- package/dist/esm/core/BuildInfo.js +2 -2
- package/dist/esm/core/Codec.d.ts +41 -0
- package/dist/esm/core/Codec.d.ts.map +1 -0
- package/dist/esm/core/Codec.js +79 -0
- package/dist/esm/core/Codec.js.map +1 -0
- 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/FixedTimestep.d.ts +28 -0
- package/dist/esm/core/FixedTimestep.d.ts.map +1 -0
- package/dist/esm/core/FixedTimestep.js +62 -0
- package/dist/esm/core/FixedTimestep.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 +83 -21
- package/dist/esm/core/Scene.d.ts.map +1 -1
- package/dist/esm/core/Scene.js +127 -16
- package/dist/esm/core/Scene.js.map +1 -1
- package/dist/esm/core/SceneManager.d.ts +28 -59
- package/dist/esm/core/SceneManager.d.ts.map +1 -1
- package/dist/esm/core/SceneManager.js +86 -155
- package/dist/esm/core/SceneManager.js.map +1 -1
- package/dist/esm/core/SceneNode.d.ts +78 -7
- package/dist/esm/core/SceneNode.d.ts.map +1 -1
- package/dist/esm/core/SceneNode.js +162 -21
- 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 +49 -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 +40 -0
- package/dist/esm/core/SystemRegistry.d.ts.map +1 -0
- package/dist/esm/core/SystemRegistry.js +114 -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 +30 -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/logging.d.ts +34 -0
- package/dist/esm/core/logging.d.ts.map +1 -0
- package/dist/esm/core/logging.js +59 -0
- package/dist/esm/core/logging.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 +155 -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 +320 -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 +41 -61
- 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 +10 -0
- package/dist/esm/input/Gamepad.d.ts.map +1 -1
- package/dist/esm/input/Gamepad.js +20 -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 +40 -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/BackendTargetPass.d.ts +1 -1
- package/dist/esm/rendering/BackendTargetPass.d.ts.map +1 -1
- package/dist/esm/rendering/CallbackRenderPass.d.ts +14 -10
- package/dist/esm/rendering/CallbackRenderPass.d.ts.map +1 -1
- package/dist/esm/rendering/CallbackRenderPass.js +17 -12
- 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/DrawContext.d.ts +48 -0
- package/dist/esm/rendering/DrawContext.d.ts.map +1 -0
- 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/PassContext.d.ts +42 -0
- package/dist/esm/rendering/PassContext.d.ts.map +1 -0
- package/dist/esm/rendering/PassContext.js +48 -0
- package/dist/esm/rendering/PassContext.js.map +1 -0
- package/dist/esm/rendering/RenderBackend.d.ts +29 -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 +115 -22
- package/dist/esm/rendering/RenderNode.js.map +1 -1
- package/dist/esm/rendering/RenderNodePass.d.ts +1 -1
- package/dist/esm/rendering/RenderNodePass.d.ts.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 +132 -17
- package/dist/esm/rendering/RenderingContext.d.ts.map +1 -1
- package/dist/esm/rendering/RenderingContext.js +228 -28
- package/dist/esm/rendering/RenderingContext.js.map +1 -1
- package/dist/esm/rendering/TransformBuffer.d.ts +23 -0
- package/dist/esm/rendering/TransformBuffer.d.ts.map +1 -1
- package/dist/esm/rendering/TransformBuffer.js +60 -0
- package/dist/esm/rendering/TransformBuffer.js.map +1 -1
- package/dist/esm/rendering/View.d.ts +85 -15
- package/dist/esm/rendering/View.d.ts.map +1 -1
- package/dist/esm/rendering/View.js +81 -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 +10 -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/MeshMaterial.d.ts +20 -1
- package/dist/esm/rendering/material/MeshMaterial.d.ts.map +1 -1
- package/dist/esm/rendering/material/MeshMaterial.js +17 -0
- package/dist/esm/rendering/material/MeshMaterial.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/material/SpriteMaterial.d.ts +20 -1
- package/dist/esm/rendering/material/SpriteMaterial.d.ts.map +1 -1
- package/dist/esm/rendering/material/SpriteMaterial.js +17 -0
- package/dist/esm/rendering/material/SpriteMaterial.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 +8 -2
- package/dist/esm/rendering/plan/RenderEffectExecutor.js.map +1 -1
- package/dist/esm/rendering/plan/RenderInstruction.d.ts +12 -39
- 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 +154 -50
- 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 +23 -10
- package/dist/esm/rendering/plan/RenderScope.d.ts.map +1 -1
- package/dist/esm/rendering/primitives/Graphics.d.ts +16 -1
- package/dist/esm/rendering/primitives/Graphics.d.ts.map +1 -1
- package/dist/esm/rendering/primitives/Graphics.js +46 -9
- package/dist/esm/rendering/primitives/Graphics.js.map +1 -1
- package/dist/esm/rendering/{index.d.ts → public.d.ts} +9 -39
- 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 +60 -12
- package/dist/esm/rendering/sprite/AnimatedSprite.d.ts.map +1 -1
- package/dist/esm/rendering/sprite/AnimatedSprite.js +142 -30
- 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 +6 -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 +3 -2
- 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 +9 -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 +37 -2
- package/dist/esm/rendering/types.d.ts.map +1 -1
- package/dist/esm/rendering/types.js +37 -2
- 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/WebGl2BackdropBlendCompositor.d.ts +41 -0
- package/dist/esm/rendering/webgl2/WebGl2BackdropBlendCompositor.d.ts.map +1 -0
- package/dist/esm/rendering/webgl2/WebGl2BackdropBlendCompositor.js +222 -0
- package/dist/esm/rendering/webgl2/WebGl2BackdropBlendCompositor.js.map +1 -0
- package/dist/esm/rendering/webgl2/WebGl2Backend.d.ts +55 -3
- package/dist/esm/rendering/webgl2/WebGl2Backend.d.ts.map +1 -1
- package/dist/esm/rendering/webgl2/WebGl2Backend.js +209 -61
- 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 +60 -15
- package/dist/esm/rendering/webgl2/WebGl2TextRenderer.js.map +1 -1
- package/dist/esm/rendering/webgl2/glsl/backdrop-blend.frag.js +4 -0
- package/dist/esm/rendering/webgl2/glsl/backdrop-blend.frag.js.map +1 -0
- package/dist/esm/rendering/webgl2/glsl/backdrop-blend.vert.js +4 -0
- package/dist/esm/rendering/webgl2/glsl/backdrop-blend.vert.js.map +1 -0
- package/dist/esm/rendering/webgl2/glsl/text.vert.js +1 -1
- package/dist/esm/rendering/webgpu/WebGpuBackdropBlendCompositor.d.ts +72 -0
- package/dist/esm/rendering/webgpu/WebGpuBackdropBlendCompositor.d.ts.map +1 -0
- package/dist/esm/rendering/webgpu/WebGpuBackdropBlendCompositor.js +494 -0
- package/dist/esm/rendering/webgpu/WebGpuBackdropBlendCompositor.js.map +1 -0
- package/dist/esm/rendering/webgpu/WebGpuBackend.d.ts +45 -2
- package/dist/esm/rendering/webgpu/WebGpuBackend.d.ts.map +1 -1
- package/dist/esm/rendering/webgpu/WebGpuBackend.js +247 -69
- 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 +5 -26
- package/dist/esm/rendering/webgpu/WebGpuBlendState.js.map +1 -1
- package/dist/esm/rendering/webgpu/WebGpuMaskCompositor.d.ts +2 -0
- package/dist/esm/rendering/webgpu/WebGpuMaskCompositor.d.ts.map +1 -1
- package/dist/esm/rendering/webgpu/WebGpuMaskCompositor.js +2 -1
- package/dist/esm/rendering/webgpu/WebGpuMaskCompositor.js.map +1 -1
- package/dist/esm/rendering/webgpu/WebGpuMeshRenderer.d.ts +17 -0
- package/dist/esm/rendering/webgpu/WebGpuMeshRenderer.d.ts.map +1 -1
- package/dist/esm/rendering/webgpu/WebGpuMeshRenderer.js +105 -25
- package/dist/esm/rendering/webgpu/WebGpuMeshRenderer.js.map +1 -1
- package/dist/esm/rendering/webgpu/WebGpuNineSliceSpriteRenderer.d.ts +2 -0
- package/dist/esm/rendering/webgpu/WebGpuNineSliceSpriteRenderer.d.ts.map +1 -1
- package/dist/esm/rendering/webgpu/WebGpuNineSliceSpriteRenderer.js +8 -2
- package/dist/esm/rendering/webgpu/WebGpuNineSliceSpriteRenderer.js.map +1 -1
- package/dist/esm/rendering/webgpu/WebGpuPassCoordinator.d.ts +8 -0
- package/dist/esm/rendering/webgpu/WebGpuPassCoordinator.d.ts.map +1 -1
- package/dist/esm/rendering/webgpu/WebGpuPassCoordinator.js +20 -0
- package/dist/esm/rendering/webgpu/WebGpuPassCoordinator.js.map +1 -1
- package/dist/esm/rendering/webgpu/WebGpuRepeatingSpriteRenderer.d.ts +6 -0
- package/dist/esm/rendering/webgpu/WebGpuRepeatingSpriteRenderer.d.ts.map +1 -1
- package/dist/esm/rendering/webgpu/WebGpuRepeatingSpriteRenderer.js +23 -10
- package/dist/esm/rendering/webgpu/WebGpuRepeatingSpriteRenderer.js.map +1 -1
- package/dist/esm/rendering/webgpu/WebGpuSpriteRenderer.d.ts +2 -0
- package/dist/esm/rendering/webgpu/WebGpuSpriteRenderer.d.ts.map +1 -1
- package/dist/esm/rendering/webgpu/WebGpuSpriteRenderer.js +10 -5
- package/dist/esm/rendering/webgpu/WebGpuSpriteRenderer.js.map +1 -1
- package/dist/esm/rendering/webgpu/WebGpuStencilClipper.d.ts +2 -0
- package/dist/esm/rendering/webgpu/WebGpuStencilClipper.d.ts.map +1 -1
- package/dist/esm/rendering/webgpu/WebGpuStencilClipper.js +3 -1
- package/dist/esm/rendering/webgpu/WebGpuStencilClipper.js.map +1 -1
- package/dist/esm/rendering/webgpu/WebGpuTextRenderer.d.ts +2 -0
- package/dist/esm/rendering/webgpu/WebGpuTextRenderer.d.ts.map +1 -1
- package/dist/esm/rendering/webgpu/WebGpuTextRenderer.js +22 -9
- package/dist/esm/rendering/webgpu/WebGpuTextRenderer.js.map +1 -1
- package/dist/esm/rendering/webgpu/WebGpuTransformStorage.d.ts +16 -3
- package/dist/esm/rendering/webgpu/WebGpuTransformStorage.d.ts.map +1 -1
- package/dist/esm/rendering/webgpu/WebGpuTransformStorage.js +50 -6
- 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 +55 -2
- package/dist/esm/resources/Loader.d.ts.map +1 -1
- package/dist/esm/resources/Loader.js +159 -14
- 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/ScrollContainer.d.ts +63 -0
- package/dist/esm/ui/ScrollContainer.d.ts.map +1 -0
- package/dist/esm/ui/ScrollContainer.js +99 -0
- package/dist/esm/ui/ScrollContainer.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/Tooltip.d.ts +67 -0
- package/dist/esm/ui/Tooltip.d.ts.map +1 -0
- package/dist/esm/ui/Tooltip.js +133 -0
- package/dist/esm/ui/Tooltip.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 +17 -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/dist/exo.iife.js +45202 -0
- package/dist/exo.iife.js.map +1 -0
- package/dist/exo.iife.min.js +2 -0
- package/dist/exo.iife.min.js.map +1 -0
- package/package.json +37 -14
- 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 +0 -54
- package/dist/esm/audio/filters/WorkletFilter.d.ts.map +0 -1
- package/dist/esm/audio/filters/WorkletFilter.js +0 -110
- 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/Camera.d.ts +0 -34
- package/dist/esm/rendering/Camera.d.ts.map +0 -1
- package/dist/esm/rendering/Camera.js +0 -38
- package/dist/esm/rendering/Camera.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/Perf.js
CHANGED
|
@@ -1,13 +1,14 @@
|
|
|
1
1
|
// Thin wrappers around the User Timing API (performance.mark /
|
|
2
|
-
// performance.measure). All calls are
|
|
3
|
-
// `performance` or individual User Timing
|
|
4
|
-
// some jsdom configurations, older browsers), so
|
|
2
|
+
// performance.measure), grouped under the `Perf` namespace. All calls are
|
|
3
|
+
// guarded against environments where `performance` or individual User Timing
|
|
4
|
+
// methods are unavailable (e.g. some jsdom configurations, older browsers), so
|
|
5
|
+
// they are always safe to call.
|
|
5
6
|
const hasPerf = typeof performance !== 'undefined';
|
|
6
7
|
/**
|
|
7
8
|
* Emit a named `PerformanceMark` at the current instant.
|
|
8
9
|
* No-op when the User Timing API is unavailable.
|
|
9
10
|
*/
|
|
10
|
-
const
|
|
11
|
+
const mark = (name) => {
|
|
11
12
|
if (hasPerf && typeof performance.mark === 'function')
|
|
12
13
|
performance.mark(name);
|
|
13
14
|
};
|
|
@@ -18,7 +19,7 @@ const perfMark = (name) => {
|
|
|
18
19
|
* - Returns the created `PerformanceMeasure`, or `undefined` if the API is
|
|
19
20
|
* unavailable or either mark was never emitted.
|
|
20
21
|
*/
|
|
21
|
-
const
|
|
22
|
+
const measure = (name, startMark, endMark) => {
|
|
22
23
|
if (!hasPerf || typeof performance.measure !== 'function')
|
|
23
24
|
return undefined;
|
|
24
25
|
try {
|
|
@@ -32,7 +33,7 @@ const perfMeasure = (name, startMark, endMark) => {
|
|
|
32
33
|
* Remove all marks with the given name, or all marks when `name` is omitted.
|
|
33
34
|
* No-op when the User Timing API is unavailable.
|
|
34
35
|
*/
|
|
35
|
-
const
|
|
36
|
+
const clearMarks = (name) => {
|
|
36
37
|
if (hasPerf && typeof performance.clearMarks === 'function')
|
|
37
38
|
performance.clearMarks(name);
|
|
38
39
|
};
|
|
@@ -40,10 +41,16 @@ const perfClearMarks = (name) => {
|
|
|
40
41
|
* Remove all measures with the given name, or all measures when `name` is omitted.
|
|
41
42
|
* No-op when the User Timing API is unavailable.
|
|
42
43
|
*/
|
|
43
|
-
const
|
|
44
|
+
const clearMeasures = (name) => {
|
|
44
45
|
if (hasPerf && typeof performance.clearMeasures === 'function')
|
|
45
46
|
performance.clearMeasures(name);
|
|
46
47
|
};
|
|
48
|
+
/**
|
|
49
|
+
* User Timing helpers (`performance.mark`/`measure`), grouped as a namespace so
|
|
50
|
+
* the public API carries no loose `perf*` functions. All methods are safe no-ops
|
|
51
|
+
* where the User Timing API is unavailable.
|
|
52
|
+
*/
|
|
53
|
+
const Perf = { mark, measure, clearMarks, clearMeasures };
|
|
47
54
|
|
|
48
|
-
export {
|
|
55
|
+
export { Perf };
|
|
49
56
|
//# sourceMappingURL=Perf.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Perf.js","sources":["../../../../src/core/Perf.ts"],"sourcesContent":[null],"names":[],"mappings":"AAAA;AACA;AACA;AACA;AAEA,MAAM,OAAO,GAAG,OAAO,WAAW,KAAK,WAAW;AAElD;;;AAGG;
|
|
1
|
+
{"version":3,"file":"Perf.js","sources":["../../../../src/core/Perf.ts"],"sourcesContent":[null],"names":[],"mappings":"AAAA;AACA;AACA;AACA;AACA;AAEA,MAAM,OAAO,GAAG,OAAO,WAAW,KAAK,WAAW;AAElD;;;AAGG;AACH,MAAM,IAAI,GAAG,CAAC,IAAY,KAAU;AAClC,IAAA,IAAI,OAAO,IAAI,OAAO,WAAW,CAAC,IAAI,KAAK,UAAU;AAAE,QAAA,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC;AAC/E,CAAC;AAED;;;;;;AAMG;AACH,MAAM,OAAO,GAAG,CAAC,IAAY,EAAE,SAAiB,EAAE,OAAgB,KAAoC;IACpG,IAAI,CAAC,OAAO,IAAI,OAAO,WAAW,CAAC,OAAO,KAAK,UAAU;AAAE,QAAA,OAAO,SAAS;AAC3E,IAAA,IAAI;QACF,OAAO,WAAW,CAAC,OAAO,CAAC,IAAI,EAAE,SAAS,EAAE,OAAO,CAAC;IACtD;AAAE,IAAA,MAAM;AACN,QAAA,OAAO,SAAS;IAClB;AACF,CAAC;AAED;;;AAGG;AACH,MAAM,UAAU,GAAG,CAAC,IAAa,KAAU;AACzC,IAAA,IAAI,OAAO,IAAI,OAAO,WAAW,CAAC,UAAU,KAAK,UAAU;AAAE,QAAA,WAAW,CAAC,UAAU,CAAC,IAAI,CAAC;AAC3F,CAAC;AAED;;;AAGG;AACH,MAAM,aAAa,GAAG,CAAC,IAAa,KAAU;AAC5C,IAAA,IAAI,OAAO,IAAI,OAAO,WAAW,CAAC,aAAa,KAAK,UAAU;AAAE,QAAA,WAAW,CAAC,aAAa,CAAC,IAAI,CAAC;AACjG,CAAC;AAED;;;;AAIG;AACI,MAAM,IAAI,GAAG,EAAE,IAAI,EAAE,OAAO,EAAE,UAAU,EAAE,aAAa;;;;"}
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Options for a {@link Registry}.
|
|
3
|
+
*
|
|
4
|
+
* @typeParam Key - lookup key, typically a constructor token.
|
|
5
|
+
* @typeParam Value - stored value.
|
|
6
|
+
* @internal
|
|
7
|
+
*/
|
|
8
|
+
export interface RegistryOptions<Key, Value> {
|
|
9
|
+
/**
|
|
10
|
+
* Resolution walker. Given a key with no direct entry, returns the next key
|
|
11
|
+
* to try (e.g. the prototype-chain parent), or `null` to stop. Omit for
|
|
12
|
+
* exact-match-only lookup.
|
|
13
|
+
*/
|
|
14
|
+
walk?: (key: Key) => Key | null;
|
|
15
|
+
/**
|
|
16
|
+
* Per-value disposer, invoked once per **unique** value during
|
|
17
|
+
* {@link Registry.destroy}. Values shared across several keys (e.g. one
|
|
18
|
+
* renderer bound to multiple drawable types) are disposed exactly once.
|
|
19
|
+
*/
|
|
20
|
+
dispose?: (value: Value) => void;
|
|
21
|
+
}
|
|
22
|
+
/**
|
|
23
|
+
* Generic key→value store with inheritance-aware resolution.
|
|
24
|
+
*
|
|
25
|
+
* Backs the engine's constructor-keyed dispatch registries
|
|
26
|
+
* ({@link FactoryRegistry}, {@link RendererRegistry}). Both previously
|
|
27
|
+
* duplicated the same prototype-chain walk and destroy-time de-duplication;
|
|
28
|
+
* this primitive owns that shared mechanism.
|
|
29
|
+
*
|
|
30
|
+
* Conflict policy and error messaging stay with the caller: {@link Registry.set}
|
|
31
|
+
* always overwrites and {@link Registry.resolve} returns `undefined` on a miss,
|
|
32
|
+
* so each owner enforces its own throw/overwrite behaviour with a
|
|
33
|
+
* domain-specific message.
|
|
34
|
+
*
|
|
35
|
+
* @typeParam Key - lookup key, typically a constructor token.
|
|
36
|
+
* @typeParam Value - stored value; must never be `undefined`.
|
|
37
|
+
* @internal
|
|
38
|
+
*/
|
|
39
|
+
export declare class Registry<Key, Value> {
|
|
40
|
+
private readonly _entries;
|
|
41
|
+
private readonly _walk;
|
|
42
|
+
private readonly _dispose;
|
|
43
|
+
constructor(options?: RegistryOptions<Key, Value>);
|
|
44
|
+
/** Stores `value` under `key`, overwriting any existing entry. */
|
|
45
|
+
set(key: Key, value: Value): void;
|
|
46
|
+
/** Returns `true` if `key` has a direct entry (no walk). */
|
|
47
|
+
hasOwn(key: Key): boolean;
|
|
48
|
+
/** Returns `true` if `key` or any of its walk-ancestors has an entry. */
|
|
49
|
+
has(key: Key): boolean;
|
|
50
|
+
/**
|
|
51
|
+
* Returns the value for `key`, walking the key hierarchy on a direct miss.
|
|
52
|
+
* Returns `undefined` if neither `key` nor any ancestor matches.
|
|
53
|
+
*/
|
|
54
|
+
resolve(key: Key): Value | undefined;
|
|
55
|
+
/** Iterates every stored value (including duplicates from shared entries). */
|
|
56
|
+
values(): IterableIterator<Value>;
|
|
57
|
+
/**
|
|
58
|
+
* Disposes every unique value (if a disposer was configured) and clears the
|
|
59
|
+
* store.
|
|
60
|
+
*/
|
|
61
|
+
destroy(): void;
|
|
62
|
+
private _find;
|
|
63
|
+
}
|
|
64
|
+
//# sourceMappingURL=Registry.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Registry.d.ts","sourceRoot":"","sources":["../../../src/core/Registry.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,MAAM,WAAW,eAAe,CAAC,GAAG,EAAE,KAAK;IACzC;;;;OAIG;IACH,IAAI,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,KAAK,GAAG,GAAG,IAAI,CAAC;IAEhC;;;;OAIG;IACH,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,IAAI,CAAC;CAClC;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,qBAAa,QAAQ,CAAC,GAAG,EAAE,KAAK;IAC9B,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAyB;IAClD,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAoC;IAC1D,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAkC;gBAExC,OAAO,GAAE,eAAe,CAAC,GAAG,EAAE,KAAK,CAAM;IAK5D,kEAAkE;IAC3D,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,KAAK,EAAE,KAAK,GAAG,IAAI;IAIxC,4DAA4D;IACrD,MAAM,CAAC,GAAG,EAAE,GAAG,GAAG,OAAO;IAIhC,yEAAyE;IAClE,GAAG,CAAC,GAAG,EAAE,GAAG,GAAG,OAAO;IAI7B;;;OAGG;IACI,OAAO,CAAC,GAAG,EAAE,GAAG,GAAG,KAAK,GAAG,SAAS;IAI3C,8EAA8E;IACvE,MAAM,IAAI,gBAAgB,CAAC,KAAK,CAAC;IAIxC;;;OAGG;IACI,OAAO,IAAI,IAAI;IAetB,OAAO,CAAC,KAAK;CAcd"}
|
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Generic key→value store with inheritance-aware resolution.
|
|
3
|
+
*
|
|
4
|
+
* Backs the engine's constructor-keyed dispatch registries
|
|
5
|
+
* ({@link FactoryRegistry}, {@link RendererRegistry}). Both previously
|
|
6
|
+
* duplicated the same prototype-chain walk and destroy-time de-duplication;
|
|
7
|
+
* this primitive owns that shared mechanism.
|
|
8
|
+
*
|
|
9
|
+
* Conflict policy and error messaging stay with the caller: {@link Registry.set}
|
|
10
|
+
* always overwrites and {@link Registry.resolve} returns `undefined` on a miss,
|
|
11
|
+
* so each owner enforces its own throw/overwrite behaviour with a
|
|
12
|
+
* domain-specific message.
|
|
13
|
+
*
|
|
14
|
+
* @typeParam Key - lookup key, typically a constructor token.
|
|
15
|
+
* @typeParam Value - stored value; must never be `undefined`.
|
|
16
|
+
* @internal
|
|
17
|
+
*/
|
|
18
|
+
class Registry {
|
|
19
|
+
_entries = new Map();
|
|
20
|
+
_walk;
|
|
21
|
+
_dispose;
|
|
22
|
+
constructor(options = {}) {
|
|
23
|
+
this._walk = options.walk ?? null;
|
|
24
|
+
this._dispose = options.dispose ?? null;
|
|
25
|
+
}
|
|
26
|
+
/** Stores `value` under `key`, overwriting any existing entry. */
|
|
27
|
+
set(key, value) {
|
|
28
|
+
this._entries.set(key, value);
|
|
29
|
+
}
|
|
30
|
+
/** Returns `true` if `key` has a direct entry (no walk). */
|
|
31
|
+
hasOwn(key) {
|
|
32
|
+
return this._entries.has(key);
|
|
33
|
+
}
|
|
34
|
+
/** Returns `true` if `key` or any of its walk-ancestors has an entry. */
|
|
35
|
+
has(key) {
|
|
36
|
+
return this._find(key) !== undefined;
|
|
37
|
+
}
|
|
38
|
+
/**
|
|
39
|
+
* Returns the value for `key`, walking the key hierarchy on a direct miss.
|
|
40
|
+
* Returns `undefined` if neither `key` nor any ancestor matches.
|
|
41
|
+
*/
|
|
42
|
+
resolve(key) {
|
|
43
|
+
return this._find(key);
|
|
44
|
+
}
|
|
45
|
+
/** Iterates every stored value (including duplicates from shared entries). */
|
|
46
|
+
values() {
|
|
47
|
+
return this._entries.values();
|
|
48
|
+
}
|
|
49
|
+
/**
|
|
50
|
+
* Disposes every unique value (if a disposer was configured) and clears the
|
|
51
|
+
* store.
|
|
52
|
+
*/
|
|
53
|
+
destroy() {
|
|
54
|
+
if (this._dispose !== null) {
|
|
55
|
+
const seen = new Set();
|
|
56
|
+
for (const value of this._entries.values()) {
|
|
57
|
+
if (!seen.has(value)) {
|
|
58
|
+
seen.add(value);
|
|
59
|
+
this._dispose(value);
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
this._entries.clear();
|
|
64
|
+
}
|
|
65
|
+
_find(key) {
|
|
66
|
+
let current = key;
|
|
67
|
+
let value;
|
|
68
|
+
while (current !== null && value === undefined) {
|
|
69
|
+
value = this._entries.get(current);
|
|
70
|
+
if (value === undefined) {
|
|
71
|
+
current = this._walk !== null ? this._walk(current) : null;
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
return value;
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
export { Registry };
|
|
79
|
+
//# sourceMappingURL=Registry.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Registry.js","sources":["../../../../src/core/Registry.ts"],"sourcesContent":[null],"names":[],"mappings":"AAuBA;;;;;;;;;;;;;;;;AAgBG;MACU,QAAQ,CAAA;AACF,IAAA,QAAQ,GAAG,IAAI,GAAG,EAAc;AAChC,IAAA,KAAK;AACL,IAAA,QAAQ;AAEzB,IAAA,WAAA,CAAmB,UAAuC,EAAE,EAAA;QAC1D,IAAI,CAAC,KAAK,GAAG,OAAO,CAAC,IAAI,IAAI,IAAI;QACjC,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC,OAAO,IAAI,IAAI;IACzC;;IAGO,GAAG,CAAC,GAAQ,EAAE,KAAY,EAAA;QAC/B,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC;IAC/B;;AAGO,IAAA,MAAM,CAAC,GAAQ,EAAA;QACpB,OAAO,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC;IAC/B;;AAGO,IAAA,GAAG,CAAC,GAAQ,EAAA;QACjB,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,SAAS;IACtC;AAEA;;;AAGG;AACI,IAAA,OAAO,CAAC,GAAQ,EAAA;AACrB,QAAA,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC;IACxB;;IAGO,MAAM,GAAA;AACX,QAAA,OAAO,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE;IAC/B;AAEA;;;AAGG;IACI,OAAO,GAAA;AACZ,QAAA,IAAI,IAAI,CAAC,QAAQ,KAAK,IAAI,EAAE;AAC1B,YAAA,MAAM,IAAI,GAAG,IAAI,GAAG,EAAS;YAE7B,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,EAAE;gBAC1C,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE;AACpB,oBAAA,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC;AACf,oBAAA,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC;gBACtB;YACF;QACF;AAEA,QAAA,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE;IACvB;AAEQ,IAAA,KAAK,CAAC,GAAQ,EAAA;QACpB,IAAI,OAAO,GAAe,GAAG;AAC7B,QAAA,IAAI,KAAwB;QAE5B,OAAO,OAAO,KAAK,IAAI,IAAI,KAAK,KAAK,SAAS,EAAE;YAC9C,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC;AAElC,YAAA,IAAI,KAAK,KAAK,SAAS,EAAE;AACvB,gBAAA,OAAO,GAAG,IAAI,CAAC,KAAK,KAAK,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,IAAI;YAC5D;QACF;AAEA,QAAA,OAAO,KAAK;IACd;AACD;;;;"}
|
package/dist/esm/core/Scene.d.ts
CHANGED
|
@@ -4,13 +4,18 @@ import { Container } from '#rendering/Container';
|
|
|
4
4
|
import type { RenderingContext } from '#rendering/RenderingContext';
|
|
5
5
|
import type { RenderNode } from '#rendering/RenderNode';
|
|
6
6
|
import type { Loader } from '#resources/Loader';
|
|
7
|
+
import { UIRoot } from '#ui/UIRoot';
|
|
7
8
|
import type { Application } from './Application';
|
|
9
|
+
import { type SerializedScene } from './serialization/types';
|
|
10
|
+
import { Signal } from './Signal';
|
|
11
|
+
import { SystemRegistry } from './SystemRegistry';
|
|
8
12
|
import type { Time } from './Time';
|
|
13
|
+
import type { Destroyable } from './types';
|
|
9
14
|
/**
|
|
10
15
|
* Scene-bound input proxy. Bindings created here are automatically unbound
|
|
11
16
|
* when the owning scene is destroyed. Access via {@link Scene.inputs}.
|
|
12
17
|
*/
|
|
13
|
-
declare class SceneInputs {
|
|
18
|
+
declare class SceneInputs implements Destroyable {
|
|
14
19
|
private readonly _scene;
|
|
15
20
|
private readonly _bindings;
|
|
16
21
|
constructor(_scene: Scene);
|
|
@@ -18,33 +23,20 @@ declare class SceneInputs {
|
|
|
18
23
|
onActive(channel: InputChannel | readonly InputChannel[], callback: (value: number) => void, options?: InputBindingOptions): InputBinding;
|
|
19
24
|
onStop(channel: InputChannel | readonly InputChannel[], callback: (value: number) => void, options?: InputBindingOptions): InputBinding;
|
|
20
25
|
onTrigger(channel: InputChannel | readonly InputChannel[], callback: (value: number) => void, options?: InputBindingOptions): InputBinding;
|
|
21
|
-
|
|
22
|
-
_disposeAll(): void;
|
|
26
|
+
destroy(): void;
|
|
23
27
|
private _track;
|
|
24
28
|
}
|
|
25
29
|
/**
|
|
26
30
|
* Scene-bound tween proxy. Tweens created or added here are automatically
|
|
27
31
|
* stopped when the owning scene is destroyed. Access via {@link Scene.tweens}.
|
|
28
32
|
*/
|
|
29
|
-
declare class SceneTweens {
|
|
33
|
+
declare class SceneTweens implements Destroyable {
|
|
30
34
|
private readonly _scene;
|
|
31
35
|
private readonly _tweens;
|
|
32
36
|
constructor(_scene: Scene);
|
|
33
37
|
create<T extends object>(target: T): Tween<T>;
|
|
34
38
|
add(tween: Tween): this;
|
|
35
|
-
|
|
36
|
-
_disposeAll(): void;
|
|
37
|
-
}
|
|
38
|
-
/**
|
|
39
|
-
* How a {@link Scene} composes with scenes already on the stack.
|
|
40
|
-
* - `'overlay'`: render on top, scenes below also render and update.
|
|
41
|
-
* - `'modal'`: render on top, scenes below render but do not update.
|
|
42
|
-
* - `'opaque'`: render on top, scenes below neither render nor update.
|
|
43
|
-
*/
|
|
44
|
-
export type SceneStackMode = 'overlay' | 'modal' | 'opaque';
|
|
45
|
-
/** Bag of overrides for {@link Scene.setParticipationPolicy}. */
|
|
46
|
-
export interface SceneParticipationPolicy {
|
|
47
|
-
mode?: SceneStackMode;
|
|
39
|
+
destroy(): void;
|
|
48
40
|
}
|
|
49
41
|
/**
|
|
50
42
|
* A scene's lifecycle host. Subclass to define scene behavior:
|
|
@@ -68,9 +60,20 @@ export interface SceneParticipationPolicy {
|
|
|
68
60
|
export declare class Scene {
|
|
69
61
|
protected _app: Application | null;
|
|
70
62
|
protected readonly _root: Container;
|
|
71
|
-
|
|
63
|
+
/**
|
|
64
|
+
* When `true`, the scene's `update` and systems are skipped each frame while
|
|
65
|
+
* it keeps drawing — the simple way to freeze gameplay behind a pause menu
|
|
66
|
+
* (show a panel on `scene.ui`, then set `scene.paused = true`).
|
|
67
|
+
*/
|
|
68
|
+
paused: boolean;
|
|
69
|
+
/** Dispatched after the scene finishes loading (after load() and init() complete). */
|
|
70
|
+
readonly onLoad: Signal<[]>;
|
|
71
|
+
/** Dispatched when the scene is about to be unloaded. */
|
|
72
|
+
readonly onUnload: Signal<[]>;
|
|
72
73
|
private _inputs;
|
|
73
74
|
private _tweens;
|
|
75
|
+
private _systems;
|
|
76
|
+
private readonly _disposal;
|
|
74
77
|
get app(): Application | null;
|
|
75
78
|
set app(app: Application | null);
|
|
76
79
|
/**
|
|
@@ -103,11 +106,61 @@ export declare class Scene {
|
|
|
103
106
|
* Throws if accessed before the scene is attached to an {@link Application}.
|
|
104
107
|
*/
|
|
105
108
|
get tweens(): SceneTweens;
|
|
106
|
-
|
|
107
|
-
|
|
109
|
+
/**
|
|
110
|
+
* Register a {@link Destroyable} to be destroyed automatically when this
|
|
111
|
+
* scene is destroyed (reverse registration order). Returns its argument for
|
|
112
|
+
* fluent capture: `const world = this.track(new PhysicsWorld())`. The
|
|
113
|
+
* scene-bound `tweens` and `inputs` registries are tracked the same way.
|
|
114
|
+
*/
|
|
115
|
+
track<T extends Destroyable>(item: T): T;
|
|
116
|
+
/**
|
|
117
|
+
* Scene-bound system registry. Add tickable {@link System}s (e.g. a physics
|
|
118
|
+
* world) via `this.systems.add(world)`; each is updated once per frame after
|
|
119
|
+
* {@link Scene.update} (ascending `order`) and destroyed with the scene — no
|
|
120
|
+
* manual `step()` / `destroy()` wiring. Available before the scene is
|
|
121
|
+
* attached to an Application (systems tick only while the scene is active).
|
|
122
|
+
*/
|
|
123
|
+
get systems(): SystemRegistry;
|
|
124
|
+
/** @internal — called by {@link SceneManager} each frame after `update`. */
|
|
125
|
+
_tickSystems(delta: Time): void;
|
|
126
|
+
private _ui;
|
|
127
|
+
/**
|
|
128
|
+
* Scene-bound UI layer, rendered screen-fixed on top of the scene content
|
|
129
|
+
* (after {@link Scene.draw}). Lazily created and destroyed with the scene;
|
|
130
|
+
* add widgets via `this.ui.addChild(...)`.
|
|
131
|
+
*
|
|
132
|
+
* Unlike {@link Scene.root}, the UI layer **is** auto-rendered each frame — a
|
|
133
|
+
* first-class overlay that always sits above the world. Its children live in
|
|
134
|
+
* screen space (origin top-left, `0..width` × `0..height`); pointer and
|
|
135
|
+
* keyboard input route to them ahead of the world layer.
|
|
136
|
+
*/
|
|
137
|
+
get ui(): UIRoot;
|
|
138
|
+
/** @internal — the UI layer if materialized, else `null` (no lazy allocation). */
|
|
139
|
+
_peekUI(): UIRoot | null;
|
|
108
140
|
addChild(child: RenderNode): this;
|
|
109
141
|
removeChild(child: RenderNode): this;
|
|
110
|
-
|
|
142
|
+
/**
|
|
143
|
+
* Serialize this scene's structural root subtree to a plain, JSON-able
|
|
144
|
+
* {@link SerializedScene} descriptor.
|
|
145
|
+
*
|
|
146
|
+
* Captures **data, not behaviour**: structure, transforms, visuals and asset
|
|
147
|
+
* references — never update logic, signal handlers, tweens or systems. When
|
|
148
|
+
* the scene is attached to an {@link Application}, texture/asset references
|
|
149
|
+
* resolve to their {@link Loader} source keys. Reattach behaviour in code
|
|
150
|
+
* after {@link Scene.deserialize}.
|
|
151
|
+
*/
|
|
152
|
+
serialize(): SerializedScene;
|
|
153
|
+
/**
|
|
154
|
+
* Rebuild this scene's root subtree from a {@link SerializedScene} produced
|
|
155
|
+
* by {@link Scene.serialize}. Existing root children are removed first, then
|
|
156
|
+
* the descriptor's children are reconstructed under {@link Scene.root}.
|
|
157
|
+
*
|
|
158
|
+
* Assets referenced by the data must already be loaded into the
|
|
159
|
+
* application's {@link Loader} (pre-load contract). Older documents are
|
|
160
|
+
* migrated to the current format; documents newer than the running engine
|
|
161
|
+
* throw. Returns `this`.
|
|
162
|
+
*/
|
|
163
|
+
deserialize(data: SerializedScene): this;
|
|
111
164
|
/**
|
|
112
165
|
* Async asset preload hook. Called once before {@link Scene.init} the
|
|
113
166
|
* first time the scene is pushed. Use the loader to register and
|
|
@@ -127,6 +180,15 @@ export declare class Scene {
|
|
|
127
180
|
* positions, advance timers, drive AI here. Override in subclass.
|
|
128
181
|
*/
|
|
129
182
|
update(_delta: Time): void;
|
|
183
|
+
/**
|
|
184
|
+
* Fixed-timestep logic hook. Called zero or more times per frame with a
|
|
185
|
+
* constant `delta` ({@link Application.fixedTimeStep}) before {@link Scene.update},
|
|
186
|
+
* so physics and deterministic gameplay advance at a frame-rate-independent
|
|
187
|
+
* rate. Put `physicsWorld.step(delta)` and movement here; leave camera, UI and
|
|
188
|
+
* purely visual work in {@link Scene.update}. Default is a no-op. Override in
|
|
189
|
+
* subclass.
|
|
190
|
+
*/
|
|
191
|
+
fixedUpdate(_delta: Time): void;
|
|
130
192
|
/**
|
|
131
193
|
* Explicit per-frame rendering entry point. Override to choose
|
|
132
194
|
* what gets rendered.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Scene.d.ts","sourceRoot":"","sources":["../../../src/core/Scene.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAC;AAC9C,OAAO,KAAK,EAAE,YAAY,EAAE,mBAAmB,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAC3F,OAAO,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AACjD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,6BAA6B,CAAC;AACpE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AACxD,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;
|
|
1
|
+
{"version":3,"file":"Scene.d.ts","sourceRoot":"","sources":["../../../src/core/Scene.ts"],"names":[],"mappings":"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"}
|
package/dist/esm/core/Scene.js
CHANGED
|
@@ -1,4 +1,10 @@
|
|
|
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 { Signal } from './Signal.js';
|
|
7
|
+
import { SystemRegistry } from './SystemRegistry.js';
|
|
2
8
|
|
|
3
9
|
/**
|
|
4
10
|
* Scene-bound input proxy. Bindings created here are automatically unbound
|
|
@@ -22,8 +28,7 @@ class SceneInputs {
|
|
|
22
28
|
onTrigger(channel, callback, options) {
|
|
23
29
|
return this._track(this._scene.app.input.onTrigger(channel, callback, options));
|
|
24
30
|
}
|
|
25
|
-
|
|
26
|
-
_disposeAll() {
|
|
31
|
+
destroy() {
|
|
27
32
|
for (const binding of this._bindings) {
|
|
28
33
|
binding.unbind();
|
|
29
34
|
}
|
|
@@ -54,8 +59,7 @@ class SceneTweens {
|
|
|
54
59
|
this._tweens.add(tween);
|
|
55
60
|
return this;
|
|
56
61
|
}
|
|
57
|
-
|
|
58
|
-
_disposeAll() {
|
|
62
|
+
destroy() {
|
|
59
63
|
for (const tween of this._tweens) {
|
|
60
64
|
tween.stop();
|
|
61
65
|
}
|
|
@@ -84,9 +88,20 @@ class SceneTweens {
|
|
|
84
88
|
class Scene {
|
|
85
89
|
_app = null;
|
|
86
90
|
_root = new Container();
|
|
87
|
-
|
|
91
|
+
/**
|
|
92
|
+
* When `true`, the scene's `update` and systems are skipped each frame while
|
|
93
|
+
* it keeps drawing — the simple way to freeze gameplay behind a pause menu
|
|
94
|
+
* (show a panel on `scene.ui`, then set `scene.paused = true`).
|
|
95
|
+
*/
|
|
96
|
+
paused = false;
|
|
97
|
+
/** Dispatched after the scene finishes loading (after load() and init() complete). */
|
|
98
|
+
onLoad = new Signal();
|
|
99
|
+
/** Dispatched when the scene is about to be unloaded. */
|
|
100
|
+
onUnload = new Signal();
|
|
88
101
|
_inputs = null;
|
|
89
102
|
_tweens = null;
|
|
103
|
+
_systems = null;
|
|
104
|
+
_disposal = new DisposalScope();
|
|
90
105
|
get app() {
|
|
91
106
|
return this._app;
|
|
92
107
|
}
|
|
@@ -121,7 +136,7 @@ class Scene {
|
|
|
121
136
|
if (this._app === null) {
|
|
122
137
|
throw new Error('Scene.inputs is unavailable before the scene is attached to an Application.');
|
|
123
138
|
}
|
|
124
|
-
this._inputs = new SceneInputs(this);
|
|
139
|
+
this._inputs = this._disposal.track(new SceneInputs(this));
|
|
125
140
|
}
|
|
126
141
|
return this._inputs;
|
|
127
142
|
}
|
|
@@ -137,15 +152,62 @@ class Scene {
|
|
|
137
152
|
if (this._app === null) {
|
|
138
153
|
throw new Error('Scene.tweens is unavailable before the scene is attached to an Application.');
|
|
139
154
|
}
|
|
140
|
-
this._tweens = new SceneTweens(this);
|
|
155
|
+
this._tweens = this._disposal.track(new SceneTweens(this));
|
|
141
156
|
}
|
|
142
157
|
return this._tweens;
|
|
143
158
|
}
|
|
144
|
-
|
|
145
|
-
|
|
159
|
+
/**
|
|
160
|
+
* Register a {@link Destroyable} to be destroyed automatically when this
|
|
161
|
+
* scene is destroyed (reverse registration order). Returns its argument for
|
|
162
|
+
* fluent capture: `const world = this.track(new PhysicsWorld())`. The
|
|
163
|
+
* scene-bound `tweens` and `inputs` registries are tracked the same way.
|
|
164
|
+
*/
|
|
165
|
+
track(item) {
|
|
166
|
+
return this._disposal.track(item);
|
|
146
167
|
}
|
|
147
|
-
|
|
148
|
-
|
|
168
|
+
/**
|
|
169
|
+
* Scene-bound system registry. Add tickable {@link System}s (e.g. a physics
|
|
170
|
+
* world) via `this.systems.add(world)`; each is updated once per frame after
|
|
171
|
+
* {@link Scene.update} (ascending `order`) and destroyed with the scene — no
|
|
172
|
+
* manual `step()` / `destroy()` wiring. Available before the scene is
|
|
173
|
+
* attached to an Application (systems tick only while the scene is active).
|
|
174
|
+
*/
|
|
175
|
+
get systems() {
|
|
176
|
+
if (this._systems === null) {
|
|
177
|
+
this._systems = this._disposal.track(new SystemRegistry());
|
|
178
|
+
}
|
|
179
|
+
return this._systems;
|
|
180
|
+
}
|
|
181
|
+
/** @internal — called by {@link SceneManager} each frame after `update`. */
|
|
182
|
+
_tickSystems(delta) {
|
|
183
|
+
this._systems?._tick(delta);
|
|
184
|
+
}
|
|
185
|
+
_ui = null;
|
|
186
|
+
/**
|
|
187
|
+
* Scene-bound UI layer, rendered screen-fixed on top of the scene content
|
|
188
|
+
* (after {@link Scene.draw}). Lazily created and destroyed with the scene;
|
|
189
|
+
* add widgets via `this.ui.addChild(...)`.
|
|
190
|
+
*
|
|
191
|
+
* Unlike {@link Scene.root}, the UI layer **is** auto-rendered each frame — a
|
|
192
|
+
* first-class overlay that always sits above the world. Its children live in
|
|
193
|
+
* screen space (origin top-left, `0..width` × `0..height`); pointer and
|
|
194
|
+
* keyboard input route to them ahead of the world layer.
|
|
195
|
+
*/
|
|
196
|
+
get ui() {
|
|
197
|
+
if (this._ui === null) {
|
|
198
|
+
this._ui = this._disposal.track(new UIRoot());
|
|
199
|
+
// If the scene is already active (its root carries a stage), bind the UI
|
|
200
|
+
// layer now; otherwise SceneManager attaches it when the scene activates.
|
|
201
|
+
if (this._root._getStage() !== null) {
|
|
202
|
+
this._app?.interaction.attachUIRoot(this._ui);
|
|
203
|
+
}
|
|
204
|
+
}
|
|
205
|
+
return this._ui;
|
|
206
|
+
}
|
|
207
|
+
/** @internal — the UI layer if materialized, else `null` (no lazy allocation). */
|
|
208
|
+
// eslint-disable-next-line @typescript-eslint/naming-convention -- UI is an acronym (cf. HTMLText)
|
|
209
|
+
_peekUI() {
|
|
210
|
+
return this._ui;
|
|
149
211
|
}
|
|
150
212
|
addChild(child) {
|
|
151
213
|
this._root.addChild(child);
|
|
@@ -155,9 +217,43 @@ class Scene {
|
|
|
155
217
|
this._root.removeChild(child);
|
|
156
218
|
return this;
|
|
157
219
|
}
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
220
|
+
/**
|
|
221
|
+
* Serialize this scene's structural root subtree to a plain, JSON-able
|
|
222
|
+
* {@link SerializedScene} descriptor.
|
|
223
|
+
*
|
|
224
|
+
* Captures **data, not behaviour**: structure, transforms, visuals and asset
|
|
225
|
+
* references — never update logic, signal handlers, tweens or systems. When
|
|
226
|
+
* the scene is attached to an {@link Application}, texture/asset references
|
|
227
|
+
* resolve to their {@link Loader} source keys. Reattach behaviour in code
|
|
228
|
+
* after {@link Scene.deserialize}.
|
|
229
|
+
*/
|
|
230
|
+
serialize() {
|
|
231
|
+
const loader = this._app?.loader ?? null;
|
|
232
|
+
const registry = this._app?.serializers;
|
|
233
|
+
const data = { version: SERIALIZATION_VERSION, root: serializeTree(this._root, loader, registry) };
|
|
234
|
+
const ui = this._peekUI();
|
|
235
|
+
if (ui !== null) {
|
|
236
|
+
data.ui = serializeTree(ui, loader, registry);
|
|
237
|
+
}
|
|
238
|
+
return data;
|
|
239
|
+
}
|
|
240
|
+
/**
|
|
241
|
+
* Rebuild this scene's root subtree from a {@link SerializedScene} produced
|
|
242
|
+
* by {@link Scene.serialize}. Existing root children are removed first, then
|
|
243
|
+
* the descriptor's children are reconstructed under {@link Scene.root}.
|
|
244
|
+
*
|
|
245
|
+
* Assets referenced by the data must already be loaded into the
|
|
246
|
+
* application's {@link Loader} (pre-load contract). Older documents are
|
|
247
|
+
* migrated to the current format; documents newer than the running engine
|
|
248
|
+
* throw. Returns `this`.
|
|
249
|
+
*/
|
|
250
|
+
deserialize(data) {
|
|
251
|
+
const migrated = migrate(data);
|
|
252
|
+
const loader = this._app?.loader ?? null;
|
|
253
|
+
const registry = this._app?.serializers;
|
|
254
|
+
deserializeInto(this._root, migrated.root, loader, registry);
|
|
255
|
+
if (migrated.ui !== undefined) {
|
|
256
|
+
deserializeInto(this.ui, migrated.ui, loader, registry);
|
|
161
257
|
}
|
|
162
258
|
return this;
|
|
163
259
|
}
|
|
@@ -186,6 +282,17 @@ class Scene {
|
|
|
186
282
|
update(_delta) {
|
|
187
283
|
// override in subclass
|
|
188
284
|
}
|
|
285
|
+
/**
|
|
286
|
+
* Fixed-timestep logic hook. Called zero or more times per frame with a
|
|
287
|
+
* constant `delta` ({@link Application.fixedTimeStep}) before {@link Scene.update},
|
|
288
|
+
* so physics and deterministic gameplay advance at a frame-rate-independent
|
|
289
|
+
* rate. Put `physicsWorld.step(delta)` and movement here; leave camera, UI and
|
|
290
|
+
* purely visual work in {@link Scene.update}. Default is a no-op. Override in
|
|
291
|
+
* subclass.
|
|
292
|
+
*/
|
|
293
|
+
fixedUpdate(_delta) {
|
|
294
|
+
// override in subclass
|
|
295
|
+
}
|
|
189
296
|
/**
|
|
190
297
|
* Explicit per-frame rendering entry point. Override to choose
|
|
191
298
|
* what gets rendered.
|
|
@@ -213,10 +320,14 @@ class Scene {
|
|
|
213
320
|
// override in subclass
|
|
214
321
|
}
|
|
215
322
|
destroy() {
|
|
216
|
-
|
|
323
|
+
// Destroys everything tracked (scene-bound tweens/inputs + user-tracked
|
|
324
|
+
// resources) in reverse registration order, then the scene-graph root.
|
|
325
|
+
this._disposal.destroy();
|
|
217
326
|
this._inputs = null;
|
|
218
|
-
this._tweens?._disposeAll();
|
|
219
327
|
this._tweens = null;
|
|
328
|
+
this._systems = null;
|
|
329
|
+
this.onLoad.destroy();
|
|
330
|
+
this.onUnload.destroy();
|
|
220
331
|
this._root.destroy();
|
|
221
332
|
this._app = null;
|
|
222
333
|
}
|
|
@@ -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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"}
|