@codexo/exojs 0.12.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 +258 -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 +78 -11
- package/dist/esm/extensions/Extension.d.ts.map +1 -1
- package/dist/esm/extensions/ExtensionRegistry.d.ts.map +1 -1
- package/dist/esm/extensions/ExtensionRegistry.js.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 +14 -3
- package/dist/esm/extensions/snapshot.d.ts.map +1 -1
- package/dist/esm/extensions/snapshot.js +51 -14
- 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 +37 -54
- 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 +47 -0
- package/dist/esm/rendering/Drawable.d.ts.map +1 -1
- package/dist/esm/rendering/Drawable.js +88 -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/coreRendererBindings.d.ts.map +1 -1
- package/dist/esm/rendering/coreRendererBindings.js +22 -0
- package/dist/esm/rendering/coreRendererBindings.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 +219 -0
- package/dist/esm/rendering/pixelSnap.d.ts.map +1 -0
- package/dist/esm/rendering/pixelSnap.js +187 -0
- package/dist/esm/rendering/pixelSnap.js.map +1 -0
- 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 +70 -13
- 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} +13 -30
- 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 +69 -0
- package/dist/esm/rendering/sprite/NineSliceSprite.d.ts.map +1 -0
- package/dist/esm/rendering/sprite/NineSliceSprite.js +206 -0
- package/dist/esm/rendering/sprite/NineSliceSprite.js.map +1 -0
- package/dist/esm/rendering/sprite/RepeatingSprite.d.ts +120 -0
- package/dist/esm/rendering/sprite/RepeatingSprite.d.ts.map +1 -0
- package/dist/esm/rendering/sprite/RepeatingSprite.js +277 -0
- package/dist/esm/rendering/sprite/RepeatingSprite.js.map +1 -0
- package/dist/esm/rendering/sprite/Sprite.d.ts +13 -0
- package/dist/esm/rendering/sprite/Sprite.d.ts.map +1 -1
- package/dist/esm/rendering/sprite/Sprite.js +53 -3
- package/dist/esm/rendering/sprite/Sprite.js.map +1 -1
- package/dist/esm/rendering/sprite/nineSlice.d.ts +53 -0
- package/dist/esm/rendering/sprite/nineSlice.d.ts.map +1 -0
- package/dist/esm/rendering/sprite/nineSlice.js +334 -0
- package/dist/esm/rendering/sprite/nineSlice.js.map +1 -0
- package/dist/esm/rendering/sprite/repeatingSpritePlan.d.ts +57 -0
- package/dist/esm/rendering/sprite/repeatingSpritePlan.d.ts.map +1 -0
- package/dist/esm/rendering/sprite/repeatingSpritePlan.js +156 -0
- package/dist/esm/rendering/sprite/repeatingSpritePlan.js.map +1 -0
- 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 +100 -0
- package/dist/esm/rendering/texture/TextureRegion.d.ts.map +1 -0
- package/dist/esm/rendering/texture/TextureRegion.js +144 -0
- package/dist/esm/rendering/texture/TextureRegion.js.map +1 -0
- package/dist/esm/rendering/texture/repeat.d.ts +96 -0
- package/dist/esm/rendering/texture/repeat.d.ts.map +1 -0
- package/dist/esm/rendering/texture/repeat.js +158 -0
- package/dist/esm/rendering/texture/repeat.js.map +1 -0
- 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 +41 -2
- package/dist/esm/rendering/webgl2/WebGl2Backend.d.ts.map +1 -1
- package/dist/esm/rendering/webgl2/WebGl2Backend.js +137 -8
- 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 +32 -0
- package/dist/esm/rendering/webgl2/WebGl2NineSliceSpriteRenderer.d.ts.map +1 -0
- package/dist/esm/rendering/webgl2/WebGl2NineSliceSpriteRenderer.js +309 -0
- package/dist/esm/rendering/webgl2/WebGl2NineSliceSpriteRenderer.js.map +1 -0
- 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 +49 -0
- package/dist/esm/rendering/webgl2/WebGl2RepeatingSpriteRenderer.d.ts.map +1 -0
- package/dist/esm/rendering/webgl2/WebGl2RepeatingSpriteRenderer.js +539 -0
- package/dist/esm/rendering/webgl2/WebGl2RepeatingSpriteRenderer.js.map +1 -0
- 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 +9 -0
- package/dist/esm/rendering/webgl2/WebGl2SpriteRenderer.d.ts.map +1 -1
- package/dist/esm/rendering/webgl2/WebGl2SpriteRenderer.js +29 -4
- 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 +39 -3
- package/dist/esm/rendering/webgpu/WebGpuBackend.d.ts.map +1 -1
- package/dist/esm/rendering/webgpu/WebGpuBackend.js +120 -12
- 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 +36 -0
- package/dist/esm/rendering/webgpu/WebGpuNineSliceSpriteRenderer.d.ts.map +1 -0
- package/dist/esm/rendering/webgpu/WebGpuNineSliceSpriteRenderer.js +363 -0
- package/dist/esm/rendering/webgpu/WebGpuNineSliceSpriteRenderer.js.map +1 -0
- package/dist/esm/rendering/webgpu/WebGpuRepeatingSpriteRenderer.d.ts +52 -0
- package/dist/esm/rendering/webgpu/WebGpuRepeatingSpriteRenderer.d.ts.map +1 -0
- package/dist/esm/rendering/webgpu/WebGpuRepeatingSpriteRenderer.js +566 -0
- package/dist/esm/rendering/webgpu/WebGpuRepeatingSpriteRenderer.js.map +1 -0
- package/dist/esm/rendering/webgpu/WebGpuSpriteRenderer.d.ts +9 -0
- package/dist/esm/rendering/webgpu/WebGpuSpriteRenderer.d.ts.map +1 -1
- package/dist/esm/rendering/webgpu/WebGpuSpriteRenderer.js +30 -6
- 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 +16 -4
- package/dist/esm/rendering/webgpu/WebGpuTransformStorage.d.ts.map +1 -1
- package/dist/esm/rendering/webgpu/WebGpuTransformStorage.js +26 -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 +78 -10
- package/dist/esm/resources/Loader.d.ts.map +1 -1
- package/dist/esm/resources/Loader.js +119 -15
- 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 -37555
- package/dist/exo.esm.js.map +1 -1
- package/package.json +31 -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 -28
- 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
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
import { IndexedDbStore } from './IndexedDbStore.js';
|
|
2
|
+
|
|
3
|
+
const defaultDatabaseName = 'exojs-kv-store';
|
|
4
|
+
const defaultStoreName = '__kv_store';
|
|
5
|
+
/**
|
|
6
|
+
* {@link KeyValueStore} over IndexedDB (via {@link IndexedDbStore}), using the
|
|
7
|
+
* **structured-clone** algorithm.
|
|
8
|
+
*
|
|
9
|
+
* Unlike {@link WebStorageStore}, values are stored *directly* — no
|
|
10
|
+
* `JSON.stringify`. So `Blob`s, `ArrayBuffer`s, typed arrays and nested objects
|
|
11
|
+
* round-trip natively, and there is no string-size ceiling beyond the (large)
|
|
12
|
+
* IndexedDB quota. Use this for binary or large saves; use `WebStorageStore` for
|
|
13
|
+
* small synchronous JSON.
|
|
14
|
+
*
|
|
15
|
+
* @example
|
|
16
|
+
* ```ts
|
|
17
|
+
* const store = new IndexedDbKeyValueStore('my-game-saves');
|
|
18
|
+
* await store.set('autosave', { level: 3, snapshot: pngBlob });
|
|
19
|
+
* const data = await store.get<{ level: number; snapshot: Blob }>('autosave');
|
|
20
|
+
* ```
|
|
21
|
+
*/
|
|
22
|
+
class IndexedDbKeyValueStore {
|
|
23
|
+
_storeName;
|
|
24
|
+
_store;
|
|
25
|
+
constructor(nameOrOptions = defaultDatabaseName) {
|
|
26
|
+
const options = typeof nameOrOptions === 'string' ? { name: nameOrOptions } : nameOrOptions;
|
|
27
|
+
const storeName = options.storeName ?? defaultStoreName;
|
|
28
|
+
this._storeName = storeName;
|
|
29
|
+
this._store = new IndexedDbStore({
|
|
30
|
+
name: options.name,
|
|
31
|
+
...(options.version !== undefined && { version: options.version }),
|
|
32
|
+
...(options.migrations !== undefined && { migrations: options.migrations }),
|
|
33
|
+
storeNames: [storeName],
|
|
34
|
+
});
|
|
35
|
+
}
|
|
36
|
+
async get(key) {
|
|
37
|
+
return (await this._store.load(this._storeName, key));
|
|
38
|
+
}
|
|
39
|
+
async set(key, value) {
|
|
40
|
+
await this._store.save(this._storeName, key, value);
|
|
41
|
+
}
|
|
42
|
+
async has(key) {
|
|
43
|
+
return (await this._store.load(this._storeName, key)) !== null;
|
|
44
|
+
}
|
|
45
|
+
async delete(key) {
|
|
46
|
+
return this._store.delete(this._storeName, key);
|
|
47
|
+
}
|
|
48
|
+
async clear() {
|
|
49
|
+
return this._store.clear(this._storeName);
|
|
50
|
+
}
|
|
51
|
+
/** Synchronously release the underlying database handle. */
|
|
52
|
+
destroy() {
|
|
53
|
+
this._store.destroy();
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
export { IndexedDbKeyValueStore };
|
|
58
|
+
//# sourceMappingURL=IndexedDbKeyValueStore.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"IndexedDbKeyValueStore.js","sources":["../../../../src/resources/IndexedDbKeyValueStore.ts"],"sourcesContent":[null],"names":[],"mappings":";;AASA,MAAM,mBAAmB,GAAG,gBAAgB;AAC5C,MAAM,gBAAgB,GAAG,YAAY;AAErC;;;;;;;;;;;;;;;;AAgBG;MACU,sBAAsB,CAAA;AAChB,IAAA,UAAU;AACV,IAAA,MAAM;AAEvB,IAAA,WAAA,CAAmB,gBAAwD,mBAAmB,EAAA;AAC5F,QAAA,MAAM,OAAO,GAAG,OAAO,aAAa,KAAK,QAAQ,GAAG,EAAE,IAAI,EAAE,aAAa,EAAE,GAAG,aAAa;AAC3F,QAAA,MAAM,SAAS,GAAG,OAAO,CAAC,SAAS,IAAI,gBAAgB;AAEvD,QAAA,IAAI,CAAC,UAAU,GAAG,SAAS;AAC3B,QAAA,IAAI,CAAC,MAAM,GAAG,IAAI,cAAc,CAAC;YAC/B,IAAI,EAAE,OAAO,CAAC,IAAI;AAClB,YAAA,IAAI,OAAO,CAAC,OAAO,KAAK,SAAS,IAAI,EAAE,OAAO,EAAE,OAAO,CAAC,OAAO,EAAE,CAAC;AAClE,YAAA,IAAI,OAAO,CAAC,UAAU,KAAK,SAAS,IAAI,EAAE,UAAU,EAAE,OAAO,CAAC,UAAU,EAAE,CAAC;YAC3E,UAAU,EAAE,CAAC,SAAS,CAAC;AACxB,SAAA,CAAC;IACJ;IAEO,MAAM,GAAG,CAAI,GAAW,EAAA;AAC7B,QAAA,QAAQ,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,GAAG,CAAC;IACtD;AAEO,IAAA,MAAM,GAAG,CAAC,GAAW,EAAE,KAAc,EAAA;AAC1C,QAAA,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,GAAG,EAAE,KAAK,CAAC;IACrD;IAEO,MAAM,GAAG,CAAC,GAAW,EAAA;AAC1B,QAAA,OAAO,CAAC,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,GAAG,CAAC,MAAM,IAAI;IAChE;IAEO,MAAM,MAAM,CAAC,GAAW,EAAA;AAC7B,QAAA,OAAO,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,UAAU,EAAE,GAAG,CAAC;IACjD;AAEO,IAAA,MAAM,KAAK,GAAA;QAChB,OAAO,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC;IAC3C;;IAGO,OAAO,GAAA;AACZ,QAAA,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE;IACvB;AACD;;;;"}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Async key/value store for application data — game saves, settings, profiles,
|
|
3
|
+
* cached payloads. A single, uniform surface so calling code does not care
|
|
4
|
+
* whether the backing store is synchronous or asynchronous.
|
|
5
|
+
*
|
|
6
|
+
* The backend is the axis you choose by capability, not a flag:
|
|
7
|
+
* - {@link WebStorageStore} — `localStorage`/`sessionStorage`: small, synchronous,
|
|
8
|
+
* JSON-only (no Blobs/ArrayBuffers). The moral successor of the old `JsonStore`.
|
|
9
|
+
* - {@link IndexedDbKeyValueStore} — IndexedDB: large, structured-clone, so Blobs,
|
|
10
|
+
* `ArrayBuffer`s and nested objects round-trip without JSON.
|
|
11
|
+
* - {@link MemoryStore} — in-memory: ephemeral, holds references directly. For
|
|
12
|
+
* tests and throwaway data.
|
|
13
|
+
*
|
|
14
|
+
* Pair with {@link Scene.serialize} / {@link Scene.deserialize} for a save
|
|
15
|
+
* system: `store.set(slot, scene.serialize())` to save, `scene.deserialize(await
|
|
16
|
+
* store.get(slot))` to restore. Slot naming, profiles and autosave policy are
|
|
17
|
+
* the game's concern, not the engine's.
|
|
18
|
+
*/
|
|
19
|
+
export interface KeyValueStore {
|
|
20
|
+
/** Read the value at `key`, or `null` when absent. */
|
|
21
|
+
get<T>(key: string): Promise<T | null>;
|
|
22
|
+
/** Write `value` at `key`, replacing any existing entry. */
|
|
23
|
+
set(key: string, value: unknown): Promise<void>;
|
|
24
|
+
/** Whether an entry exists at `key`. */
|
|
25
|
+
has(key: string): Promise<boolean>;
|
|
26
|
+
/** Remove the entry at `key`. Resolves `true` if one existed and was removed. */
|
|
27
|
+
delete(key: string): Promise<boolean>;
|
|
28
|
+
/** Remove every entry owned by this store. Resolves `true` on success. */
|
|
29
|
+
clear(): Promise<boolean>;
|
|
30
|
+
}
|
|
31
|
+
//# sourceMappingURL=KeyValueStore.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"KeyValueStore.d.ts","sourceRoot":"","sources":["../../../src/resources/KeyValueStore.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AACH,MAAM,WAAW,aAAa;IAC5B,sDAAsD;IACtD,GAAG,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC;IACvC,4DAA4D;IAC5D,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAChD,wCAAwC;IACxC,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IACnC,iFAAiF;IACjF,MAAM,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IACtC,0EAA0E;IAC1E,KAAK,IAAI,OAAO,CAAC,OAAO,CAAC,CAAC;CAC3B"}
|
|
@@ -15,7 +15,7 @@ import { type BinaryAsset, type CsvAsset, FontAsset, type ImageAsset, type Json,
|
|
|
15
15
|
* Any abstract or concrete constructor that can be used as an asset type token
|
|
16
16
|
* with {@link Loader.load} and related methods.
|
|
17
17
|
*/
|
|
18
|
-
export type Loadable = abstract new (...args: any[]) =>
|
|
18
|
+
export type Loadable = abstract new (...args: any[]) => unknown;
|
|
19
19
|
/** Maps each key of an `AssetInput` map to its resolved runtime resource type. */
|
|
20
20
|
export type InferLoadedMap<M extends Record<string, AssetInput>> = {
|
|
21
21
|
[K in keyof M]: InferAssetResource<M[K]>;
|
|
@@ -56,23 +56,47 @@ type PathExtension<S extends string> = S extends `${string}.${infer E}?${string}
|
|
|
56
56
|
* compile time; use the token form (`load(MyType, path)`) instead.
|
|
57
57
|
*/
|
|
58
58
|
export type LoadByPath<S extends string> = PathExtension<S> extends keyof ExtensionTypeMap ? ExtensionTypeMap[PathExtension<S>] : unknown;
|
|
59
|
+
/**
|
|
60
|
+
* Additional asset types accepted by the **token form** of {@link Loader.load}
|
|
61
|
+
* (`load(MyType, 'file.ext')`) for a given file extension, beyond the
|
|
62
|
+
* path-only type registered in {@link ExtensionTypeMap}.
|
|
63
|
+
*
|
|
64
|
+
* Augment via declaration merging when a format package ships an advanced
|
|
65
|
+
* source-model token that shares a file extension with its common-case
|
|
66
|
+
* runtime type. The path-only form (`load('file.ext')`) is unaffected and
|
|
67
|
+
* keeps resolving to the {@link ExtensionTypeMap} entry alone:
|
|
68
|
+
* ```ts
|
|
69
|
+
* declare module '@codexo/exojs' {
|
|
70
|
+
* interface ExtensionTypeMap { tmj: TileMap } // load('world.tmj') → TileMap
|
|
71
|
+
* interface ExtensionTokenTypeMap { tmj: TiledMap } // load(TiledMap, 'world.tmj') also allowed
|
|
72
|
+
* }
|
|
73
|
+
* ```
|
|
74
|
+
*/
|
|
75
|
+
export interface ExtensionTokenTypeMap {
|
|
76
|
+
}
|
|
77
|
+
/** Resolves the additional token types allowed for extension `E`, or `never` when none are registered. */
|
|
78
|
+
type TokenTypesFor<E> = E extends keyof ExtensionTokenTypeMap ? ExtensionTokenTypeMap[E] : never;
|
|
59
79
|
/**
|
|
60
80
|
* Constrains a {@link Loadable} token against the types registered for a
|
|
61
81
|
* given path's extension. When the extension is in {@link ExtensionTypeMap},
|
|
62
|
-
* `T` must produce a value assignable to the registered union
|
|
63
|
-
*
|
|
82
|
+
* `T` must produce a value assignable to the registered union (including any
|
|
83
|
+
* extra token types from {@link ExtensionTokenTypeMap}) — otherwise resolves
|
|
84
|
+
* to `never`, triggering a compile-time error.
|
|
64
85
|
*
|
|
65
|
-
* For paths with an unregistered extension
|
|
66
|
-
*
|
|
86
|
+
* For paths with an unregistered extension — including non-literal `string`
|
|
87
|
+
* paths and extension-less paths, where no extension can be derived — the
|
|
88
|
+
* constraint is skipped and any `T` is accepted (runtime behaviour is
|
|
89
|
+
* unchanged).
|
|
67
90
|
*
|
|
68
91
|
* ```ts
|
|
69
92
|
* // ExtensionTypeMap: { ogg: Sound | Video }
|
|
70
93
|
* loader.load(Sound, 'effect.ogg') // ✓ Sound ∈ Sound | Video
|
|
71
94
|
* loader.load(BitmapText, 'effect.ogg') // ✗ BitmapText ∉ Sound | Video
|
|
72
95
|
* loader.load(Sound, 'theme.custom') // ✓ .custom not in map → unconstrained
|
|
96
|
+
* loader.load(Sound, dynamicPath) // ✓ string path → unconstrained
|
|
73
97
|
* ```
|
|
74
98
|
*/
|
|
75
|
-
export type ConstrainedLoadable<T extends abstract new (...args: any[]) => any, S extends string> = PathExtension<S> extends keyof ExtensionTypeMap ?
|
|
99
|
+
export type ConstrainedLoadable<T extends abstract new (...args: any[]) => any, S extends string> = [PathExtension<S>] extends [never] ? T : PathExtension<S> extends keyof ExtensionTypeMap ? LoadReturn<T> extends ExtensionTypeMap[PathExtension<S>] | TokenTypesFor<PathExtension<S>> ? T : never : T;
|
|
76
100
|
/**
|
|
77
101
|
* Context object passed to custom asset-type load handlers registered via
|
|
78
102
|
* {@link Loader.registerAssetType}.
|
|
@@ -130,7 +154,7 @@ export interface LoaderOptions {
|
|
|
130
154
|
*
|
|
131
155
|
* The `Loader` orchestrates fetching, processing, caching, and retrieval of
|
|
132
156
|
* all engine asset types. It ships with built-in factories for every first-party
|
|
133
|
-
* type (Texture, Sound,
|
|
157
|
+
* type (Texture, Sound, AudioStream, Video, FontFace, HTMLImageElement, Json, text,
|
|
134
158
|
* SVG, VTT, binary, and WASM) and allows registering custom factories via
|
|
135
159
|
* {@link register}.
|
|
136
160
|
*
|
|
@@ -155,6 +179,7 @@ export declare class Loader {
|
|
|
155
179
|
private readonly _registry;
|
|
156
180
|
private readonly _assetTypeMap;
|
|
157
181
|
private readonly _resources;
|
|
182
|
+
private readonly _resourceKeys;
|
|
158
183
|
private readonly _manifest;
|
|
159
184
|
private readonly _bundles;
|
|
160
185
|
private readonly _inFlight;
|
|
@@ -286,6 +311,22 @@ export declare class Loader {
|
|
|
286
311
|
* not been registered.
|
|
287
312
|
*/
|
|
288
313
|
loadBundle(name: string, options?: LoadBundleOptions): Promise<void>;
|
|
314
|
+
/**
|
|
315
|
+
* Load every asset packed into a binary container (`.exoa`) in a **single
|
|
316
|
+
* request**. Unlike {@link loadBundle} (one fetch per entry), a container is
|
|
317
|
+
* one file with an embedded index: its bytes are fetched once (and cached
|
|
318
|
+
* cross-session like any asset), then each slice is unpacked through its
|
|
319
|
+
* type's handler and stored under the entry's alias — retrievable with
|
|
320
|
+
* {@link get} exactly as if it had been loaded individually.
|
|
321
|
+
*
|
|
322
|
+
* Each entry's asset type must support byte-source construction
|
|
323
|
+
* ({@link AssetHandler.createFromBytes}); the factory-backed core types
|
|
324
|
+
* (textures, audio, JSON, text, binary, …) do. Throws on a malformed
|
|
325
|
+
* container, an unknown type, or a type that cannot be built from bytes.
|
|
326
|
+
*
|
|
327
|
+
* @param url Path to the container file, resolved against the loader base path.
|
|
328
|
+
*/
|
|
329
|
+
loadContainer(url: string): Promise<void>;
|
|
289
330
|
/**
|
|
290
331
|
* Returns `true` if every asset in the named bundle has been loaded and is
|
|
291
332
|
* currently held in the in-memory resource store.
|
|
@@ -378,6 +419,22 @@ export declare class Loader {
|
|
|
378
419
|
peek<T extends Loadable>(type: T, alias: string): LoadReturn<T> | null;
|
|
379
420
|
/** Returns `true` if the asset is currently held in the in-memory store. */
|
|
380
421
|
has(type: Loadable, alias: string): boolean;
|
|
422
|
+
/**
|
|
423
|
+
* Reverse lookup: given a loaded resource object, return the asset type and
|
|
424
|
+
* source key it was first loaded under, or `null` for runtime-created,
|
|
425
|
+
* unloaded, or non-object resources.
|
|
426
|
+
*
|
|
427
|
+
* When a resource is shared across several aliases, the **first** alias it
|
|
428
|
+
* was stored under is returned (the canonical key). Primitive results
|
|
429
|
+
* (parsed JSON, text, CSV rows) are not keyable. Used by scene serialization
|
|
430
|
+
* to turn a live asset reference back into a portable source key; the
|
|
431
|
+
* contract is that the same asset is pre-loaded under that key before a
|
|
432
|
+
* matching deserialize.
|
|
433
|
+
*/
|
|
434
|
+
keyFor(resource: object): {
|
|
435
|
+
readonly type: AssetConstructor;
|
|
436
|
+
readonly source: string;
|
|
437
|
+
} | null;
|
|
381
438
|
/**
|
|
382
439
|
* Removes a single asset from the in-memory resource store.
|
|
383
440
|
*
|
|
@@ -413,13 +470,17 @@ export declare class Loader {
|
|
|
413
470
|
* Atomically bind all keys for one AssetBinding to a pre-created handler.
|
|
414
471
|
* Validates all keys BEFORE mutating any map. Any already-registered key
|
|
415
472
|
* throws before any mutation (no override in 0.12).
|
|
473
|
+
*
|
|
474
|
+
* `Result` and `Options` are inferred from the binding's `AssetBinding<Result, Options>`
|
|
475
|
+
* contract. A declarative handler's optional `getIdentityKey` is forwarded into
|
|
476
|
+
* the internal {@link HandlerEntry} so it participates in in-flight deduplication.
|
|
416
477
|
* @internal
|
|
417
478
|
*/
|
|
418
|
-
bindAsset(keys: {
|
|
419
|
-
type: AssetConstructor
|
|
479
|
+
bindAsset<Result = unknown, Options = undefined>(keys: {
|
|
480
|
+
type: AssetConstructor<Result>;
|
|
420
481
|
typeNames?: readonly string[];
|
|
421
482
|
extensions?: readonly string[];
|
|
422
|
-
}, handler: AssetHandler): void;
|
|
483
|
+
}, handler: AssetHandler<Result, Options>): void;
|
|
423
484
|
/**
|
|
424
485
|
* Returns true if a handler or factory is already registered for the given constructor.
|
|
425
486
|
* @advanced
|
|
@@ -482,6 +543,13 @@ export declare class Loader {
|
|
|
482
543
|
* identity function — the cached value is returned unchanged.
|
|
483
544
|
*/
|
|
484
545
|
private _contextFetch;
|
|
546
|
+
/**
|
|
547
|
+
* Construct an asset from in-memory `bytes` (no fetch) and store it under
|
|
548
|
+
* `alias`. Uses the type's {@link AssetHandler.createFromBytes} when present,
|
|
549
|
+
* otherwise a `register()`-style factory; throws if neither can build from
|
|
550
|
+
* bytes. The backing path for {@link loadContainer}.
|
|
551
|
+
*/
|
|
552
|
+
private _injectSource;
|
|
485
553
|
private _fetch;
|
|
486
554
|
private _drainBackground;
|
|
487
555
|
private _boostFromQueue;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Loader.d.ts","sourceRoot":"","sources":["../../../src/resources/Loader.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AACtC,OAAO,KAAK,EAAE,YAAY,
|
|
1
|
+
{"version":3,"file":"Loader.d.ts","sourceRoot":"","sources":["../../../src/resources/Loader.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { Signal } from '../core/Signal.js';
|
|
2
2
|
import { AssetImpl, Asset } from './Asset.js';
|
|
3
|
+
import { parseContainer } from './AssetContainer.js';
|
|
3
4
|
import { defineAssetManifest, BundleLoadError } from './AssetManifest.js';
|
|
4
5
|
import { AssetsImpl } from './Assets.js';
|
|
5
6
|
import { CacheFirstStrategy } from './CacheFirstStrategy.js';
|
|
@@ -15,7 +16,7 @@ import { FontAsset } from './tokens.js';
|
|
|
15
16
|
*
|
|
16
17
|
* The `Loader` orchestrates fetching, processing, caching, and retrieval of
|
|
17
18
|
* all engine asset types. It ships with built-in factories for every first-party
|
|
18
|
-
* type (Texture, Sound,
|
|
19
|
+
* type (Texture, Sound, AudioStream, Video, FontFace, HTMLImageElement, Json, text,
|
|
19
20
|
* SVG, VTT, binary, and WASM) and allows registering custom factories via
|
|
20
21
|
* {@link register}.
|
|
21
22
|
*
|
|
@@ -40,6 +41,11 @@ class Loader {
|
|
|
40
41
|
_registry = new FactoryRegistry();
|
|
41
42
|
_assetTypeMap = new Map();
|
|
42
43
|
_resources = new Map();
|
|
44
|
+
// Reverse lookup: loaded resource object → the (type, source) it was first
|
|
45
|
+
// stored under. Backs {@link Loader.keyFor} for scene serialization. A
|
|
46
|
+
// WeakMap so it never retains resources; only object resources participate
|
|
47
|
+
// (primitive results like parsed JSON/text are not keyable → null).
|
|
48
|
+
_resourceKeys = new WeakMap();
|
|
43
49
|
_manifest = new Map();
|
|
44
50
|
_bundles = new Map();
|
|
45
51
|
_inFlight = new Map();
|
|
@@ -112,9 +118,10 @@ class Loader {
|
|
|
112
118
|
};
|
|
113
119
|
Object.defineProperty(syntheticCtor, 'name', { value: typeName });
|
|
114
120
|
this._assetTypeMap.set(typeName, syntheticCtor);
|
|
121
|
+
const boundIdentityKey = ctorOrHandler.getIdentityKey?.bind(ctorOrHandler);
|
|
115
122
|
this._handlerFunctions.set(syntheticCtor, {
|
|
116
123
|
load: (config, ctx) => ctorOrHandler.load(config, ctx),
|
|
117
|
-
getIdentityKey:
|
|
124
|
+
...(boundIdentityKey !== undefined && { getIdentityKey: boundIdentityKey }),
|
|
118
125
|
});
|
|
119
126
|
}
|
|
120
127
|
return this;
|
|
@@ -146,7 +153,10 @@ class Loader {
|
|
|
146
153
|
this._addManifestEntry(ctor, source, source);
|
|
147
154
|
}
|
|
148
155
|
else if (Array.isArray(source)) {
|
|
149
|
-
|
|
156
|
+
// `Array.isArray` narrows the union to `any[]`, dropping the element type;
|
|
157
|
+
// the only array member of the union is `readonly string[]`.
|
|
158
|
+
const paths = source;
|
|
159
|
+
for (const path of paths) {
|
|
150
160
|
this._addManifestEntry(ctor, path, path);
|
|
151
161
|
}
|
|
152
162
|
}
|
|
@@ -246,6 +256,38 @@ class Loader {
|
|
|
246
256
|
throw new BundleLoadError(name, failures);
|
|
247
257
|
}
|
|
248
258
|
}
|
|
259
|
+
/**
|
|
260
|
+
* Load every asset packed into a binary container (`.exoa`) in a **single
|
|
261
|
+
* request**. Unlike {@link loadBundle} (one fetch per entry), a container is
|
|
262
|
+
* one file with an embedded index: its bytes are fetched once (and cached
|
|
263
|
+
* cross-session like any asset), then each slice is unpacked through its
|
|
264
|
+
* type's handler and stored under the entry's alias — retrievable with
|
|
265
|
+
* {@link get} exactly as if it had been loaded individually.
|
|
266
|
+
*
|
|
267
|
+
* Each entry's asset type must support byte-source construction
|
|
268
|
+
* ({@link AssetHandler.createFromBytes}); the factory-backed core types
|
|
269
|
+
* (textures, audio, JSON, text, binary, …) do. Throws on a malformed
|
|
270
|
+
* container, an unknown type, or a type that cannot be built from bytes.
|
|
271
|
+
*
|
|
272
|
+
* @param url Path to the container file, resolved against the loader base path.
|
|
273
|
+
*/
|
|
274
|
+
async loadContainer(url) {
|
|
275
|
+
const buffer = await this._contextFetch(url, '__ctx_binary', response => response.arrayBuffer());
|
|
276
|
+
const { entries, dataStart } = parseContainer(buffer);
|
|
277
|
+
// Resolve every type up front so an unknown type fails before any asset is stored.
|
|
278
|
+
const resolved = entries.map(entry => {
|
|
279
|
+
const type = this._assetTypeMap.get(entry.type);
|
|
280
|
+
if (!type) {
|
|
281
|
+
throw new Error(`Container "${url}" references unknown asset type "${entry.type}".`);
|
|
282
|
+
}
|
|
283
|
+
return { entry, type };
|
|
284
|
+
});
|
|
285
|
+
await Promise.all(resolved.map(({ entry, type }) => {
|
|
286
|
+
const start = dataStart + entry.offset;
|
|
287
|
+
const slice = buffer.slice(start, start + entry.length);
|
|
288
|
+
return this._injectSource(type, entry.alias, slice, entry.options);
|
|
289
|
+
}));
|
|
290
|
+
}
|
|
249
291
|
/**
|
|
250
292
|
* Returns `true` if every asset in the named bundle has been loaded and is
|
|
251
293
|
* currently held in the in-memory resource store.
|
|
@@ -365,7 +407,7 @@ class Loader {
|
|
|
365
407
|
const configMap = arg0;
|
|
366
408
|
const items = Object.entries(configMap).map(([alias, value]) => ({
|
|
367
409
|
alias,
|
|
368
|
-
asset:
|
|
410
|
+
asset: value instanceof AssetImpl ? value : new Asset(value),
|
|
369
411
|
}));
|
|
370
412
|
return this._createLoadingQueue(items, results => {
|
|
371
413
|
const out = {};
|
|
@@ -449,6 +491,23 @@ class Loader {
|
|
|
449
491
|
const ctor = type;
|
|
450
492
|
return this._resources.get(ctor)?.has(alias) ?? false;
|
|
451
493
|
}
|
|
494
|
+
/**
|
|
495
|
+
* Reverse lookup: given a loaded resource object, return the asset type and
|
|
496
|
+
* source key it was first loaded under, or `null` for runtime-created,
|
|
497
|
+
* unloaded, or non-object resources.
|
|
498
|
+
*
|
|
499
|
+
* When a resource is shared across several aliases, the **first** alias it
|
|
500
|
+
* was stored under is returned (the canonical key). Primitive results
|
|
501
|
+
* (parsed JSON, text, CSV rows) are not keyable. Used by scene serialization
|
|
502
|
+
* to turn a live asset reference back into a portable source key; the
|
|
503
|
+
* contract is that the same asset is pre-loaded under that key before a
|
|
504
|
+
* matching deserialize.
|
|
505
|
+
*/
|
|
506
|
+
keyFor(resource) {
|
|
507
|
+
// WeakMap.get returns undefined for any non-registered or non-weakly-holdable
|
|
508
|
+
// key, so primitive/unkeyed inputs safely resolve to null without a guard.
|
|
509
|
+
return this._resourceKeys.get(resource) ?? null;
|
|
510
|
+
}
|
|
452
511
|
unload(arg0, arg1) {
|
|
453
512
|
if (arg0 instanceof AssetImpl) {
|
|
454
513
|
const asset = arg0;
|
|
@@ -564,6 +623,10 @@ class Loader {
|
|
|
564
623
|
* Atomically bind all keys for one AssetBinding to a pre-created handler.
|
|
565
624
|
* Validates all keys BEFORE mutating any map. Any already-registered key
|
|
566
625
|
* throws before any mutation (no override in 0.12).
|
|
626
|
+
*
|
|
627
|
+
* `Result` and `Options` are inferred from the binding's `AssetBinding<Result, Options>`
|
|
628
|
+
* contract. A declarative handler's optional `getIdentityKey` is forwarded into
|
|
629
|
+
* the internal {@link HandlerEntry} so it participates in in-flight deduplication.
|
|
567
630
|
* @internal
|
|
568
631
|
*/
|
|
569
632
|
bindAsset(keys, handler) {
|
|
@@ -596,17 +659,30 @@ class Loader {
|
|
|
596
659
|
}
|
|
597
660
|
}
|
|
598
661
|
// All validation passed — install atomically.
|
|
599
|
-
//
|
|
600
|
-
//
|
|
601
|
-
//
|
|
602
|
-
//
|
|
603
|
-
//
|
|
662
|
+
//
|
|
663
|
+
// Localized type-erasure boundary: the internal Loader uses a flat config
|
|
664
|
+
// `{ source, ...fields }`. The public AssetHandler<Result, Options> interface
|
|
665
|
+
// uses `AssetLoadRequest<Options> = { source, options? }`. This single `toRequest`
|
|
666
|
+
// helper is the only place where the erased flat config is cast to the typed
|
|
667
|
+
// request — justified by the `AssetBinding<Result, Options>` contract that
|
|
668
|
+
// associates this handler's Options with the registered constructor.
|
|
669
|
+
//
|
|
670
|
+
// `options` is intentionally omitted (not set to `undefined`) when the flat
|
|
671
|
+
// config carries no extra fields, keeping the object compatible with a future
|
|
672
|
+
// `exactOptionalPropertyTypes` migration.
|
|
673
|
+
const toRequest = (config) => {
|
|
674
|
+
const { source, ...rest } = config;
|
|
675
|
+
if (Object.keys(rest).length === 0) {
|
|
676
|
+
return { source };
|
|
677
|
+
}
|
|
678
|
+
return { source, options: rest };
|
|
679
|
+
};
|
|
680
|
+
const boundIdentityKey = handler.getIdentityKey?.bind(handler);
|
|
681
|
+
const boundCreateFromBytes = handler.createFromBytes?.bind(handler);
|
|
604
682
|
this._handlerFunctions.set(keys.type, {
|
|
605
|
-
load: (config, ctx) =>
|
|
606
|
-
|
|
607
|
-
|
|
608
|
-
return handler.load({ source, options }, ctx);
|
|
609
|
-
},
|
|
683
|
+
load: (config, ctx) => handler.load(toRequest(config), ctx),
|
|
684
|
+
...(boundIdentityKey && { getIdentityKey: (config) => boundIdentityKey(toRequest(config)) }),
|
|
685
|
+
...(boundCreateFromBytes && { createFromBytes: (bytes, options) => boundCreateFromBytes(bytes, options) }),
|
|
610
686
|
});
|
|
611
687
|
for (const name of resolvedNames) {
|
|
612
688
|
this._assetTypeMap.set(name, keys.type);
|
|
@@ -614,7 +690,9 @@ class Loader {
|
|
|
614
690
|
for (const ext of normalizedExts) {
|
|
615
691
|
this._extensionMap.set(ext, keys.type);
|
|
616
692
|
}
|
|
617
|
-
// Own this handler for lifecycle management
|
|
693
|
+
// Own this handler for lifecycle management.
|
|
694
|
+
// Cast to the erased AssetHandler for storage; destroy() is the only method
|
|
695
|
+
// called on entries in this array.
|
|
618
696
|
this._boundHandlers.push(handler);
|
|
619
697
|
}
|
|
620
698
|
/**
|
|
@@ -891,6 +969,26 @@ class Loader {
|
|
|
891
969
|
};
|
|
892
970
|
return this._cacheStrategy.resolve({ storageName, key: source, url, requestOptions: this._fetchOptions, factory, options: undefined }, this._stores);
|
|
893
971
|
}
|
|
972
|
+
/**
|
|
973
|
+
* Construct an asset from in-memory `bytes` (no fetch) and store it under
|
|
974
|
+
* `alias`. Uses the type's {@link AssetHandler.createFromBytes} when present,
|
|
975
|
+
* otherwise a `register()`-style factory; throws if neither can build from
|
|
976
|
+
* bytes. The backing path for {@link loadContainer}.
|
|
977
|
+
*/
|
|
978
|
+
async _injectSource(type, alias, bytes, options) {
|
|
979
|
+
const handlerEntry = this._handlerFunctions.get(type);
|
|
980
|
+
let resource;
|
|
981
|
+
if (handlerEntry?.createFromBytes) {
|
|
982
|
+
resource = await handlerEntry.createFromBytes(bytes, options);
|
|
983
|
+
}
|
|
984
|
+
else if (this._registry.has(type)) {
|
|
985
|
+
resource = await this._registry.resolve(type).create(bytes, options);
|
|
986
|
+
}
|
|
987
|
+
else {
|
|
988
|
+
throw new Error(`Asset type "${type.name}" cannot be built from container bytes (no createFromBytes handler).`);
|
|
989
|
+
}
|
|
990
|
+
this._storeResource(type, alias, resource);
|
|
991
|
+
}
|
|
894
992
|
async _fetch(type, alias, path, options) {
|
|
895
993
|
const factory = this._registry.resolve(type);
|
|
896
994
|
const url = this._resolveUrl(path);
|
|
@@ -936,6 +1034,8 @@ class Loader {
|
|
|
936
1034
|
if (index === -1)
|
|
937
1035
|
return;
|
|
938
1036
|
const [entry] = this._backgroundQueue.splice(index, 1);
|
|
1037
|
+
if (entry === undefined)
|
|
1038
|
+
return;
|
|
939
1039
|
this._startBackgroundEntry(entry);
|
|
940
1040
|
}
|
|
941
1041
|
_isQueuedInBackground(type, alias) {
|
|
@@ -1110,6 +1210,10 @@ class Loader {
|
|
|
1110
1210
|
this._resources.set(type, typeResources);
|
|
1111
1211
|
}
|
|
1112
1212
|
typeResources.set(alias, resource);
|
|
1213
|
+
// Record the canonical reverse key (first alias wins) for object resources.
|
|
1214
|
+
if (typeof resource === 'object' && resource !== null && !this._resourceKeys.has(resource)) {
|
|
1215
|
+
this._resourceKeys.set(resource, { type, source: alias });
|
|
1216
|
+
}
|
|
1113
1217
|
this.onLoaded.dispatch(type, alias, resource);
|
|
1114
1218
|
}
|
|
1115
1219
|
_getTypeId(type) {
|