@codexo/exojs 0.14.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.
Files changed (237) hide show
  1. package/CHANGELOG.md +132 -0
  2. package/README.md +2 -4
  3. package/dist/esm/animation/Tween.d.ts.map +1 -1
  4. package/dist/esm/animation/Tween.js +0 -1
  5. package/dist/esm/animation/Tween.js.map +1 -1
  6. package/dist/esm/animation/TweenManager.d.ts +44 -5
  7. package/dist/esm/animation/TweenManager.d.ts.map +1 -1
  8. package/dist/esm/animation/TweenManager.js +57 -5
  9. package/dist/esm/animation/TweenManager.js.map +1 -1
  10. package/dist/esm/animation/TweenSequencer.d.ts +139 -0
  11. package/dist/esm/animation/TweenSequencer.d.ts.map +1 -0
  12. package/dist/esm/animation/TweenSequencer.js +305 -0
  13. package/dist/esm/animation/TweenSequencer.js.map +1 -0
  14. package/dist/esm/animation/index.d.ts +1 -0
  15. package/dist/esm/animation/index.d.ts.map +1 -1
  16. package/dist/esm/audio/WorkletEffect.d.ts +34 -20
  17. package/dist/esm/audio/WorkletEffect.d.ts.map +1 -1
  18. package/dist/esm/audio/WorkletEffect.js +92 -25
  19. package/dist/esm/audio/WorkletEffect.js.map +1 -1
  20. package/dist/esm/core/Application.d.ts +43 -5
  21. package/dist/esm/core/Application.d.ts.map +1 -1
  22. package/dist/esm/core/Application.js +83 -9
  23. package/dist/esm/core/Application.js.map +1 -1
  24. package/dist/esm/core/BuildInfo.js +2 -2
  25. package/dist/esm/core/Codec.d.ts +41 -0
  26. package/dist/esm/core/Codec.d.ts.map +1 -0
  27. package/dist/esm/core/Codec.js +79 -0
  28. package/dist/esm/core/Codec.js.map +1 -0
  29. package/dist/esm/core/FixedTimestep.d.ts +28 -0
  30. package/dist/esm/core/FixedTimestep.d.ts.map +1 -0
  31. package/dist/esm/core/FixedTimestep.js +62 -0
  32. package/dist/esm/core/FixedTimestep.js.map +1 -0
  33. package/dist/esm/core/Scene.d.ts +14 -0
  34. package/dist/esm/core/Scene.d.ts.map +1 -1
  35. package/dist/esm/core/Scene.js +18 -0
  36. package/dist/esm/core/Scene.js.map +1 -1
  37. package/dist/esm/core/SceneManager.d.ts +7 -0
  38. package/dist/esm/core/SceneManager.d.ts.map +1 -1
  39. package/dist/esm/core/SceneManager.js +20 -4
  40. package/dist/esm/core/SceneManager.js.map +1 -1
  41. package/dist/esm/core/SceneNode.d.ts +36 -6
  42. package/dist/esm/core/SceneNode.d.ts.map +1 -1
  43. package/dist/esm/core/SceneNode.js +63 -11
  44. package/dist/esm/core/SceneNode.js.map +1 -1
  45. package/dist/esm/core/Stage.d.ts +7 -0
  46. package/dist/esm/core/Stage.d.ts.map +1 -1
  47. package/dist/esm/core/SystemRegistry.d.ts +5 -0
  48. package/dist/esm/core/SystemRegistry.d.ts.map +1 -1
  49. package/dist/esm/core/SystemRegistry.js +10 -0
  50. package/dist/esm/core/SystemRegistry.js.map +1 -1
  51. package/dist/esm/core/index.d.ts +4 -0
  52. package/dist/esm/core/index.d.ts.map +1 -1
  53. package/dist/esm/core/logging.d.ts +34 -0
  54. package/dist/esm/core/logging.d.ts.map +1 -0
  55. package/dist/esm/core/logging.js +59 -0
  56. package/dist/esm/core/logging.js.map +1 -0
  57. package/dist/esm/core/serialization/commonFields.d.ts.map +1 -1
  58. package/dist/esm/core/serialization/commonFields.js +6 -0
  59. package/dist/esm/core/serialization/commonFields.js.map +1 -1
  60. package/dist/esm/core/serialization/renderingSerializers.d.ts.map +1 -1
  61. package/dist/esm/core/serialization/renderingSerializers.js +14 -5
  62. package/dist/esm/core/serialization/renderingSerializers.js.map +1 -1
  63. package/dist/esm/index.js +7 -2
  64. package/dist/esm/index.js.map +1 -1
  65. package/dist/esm/input/Gamepad.d.ts +10 -0
  66. package/dist/esm/input/Gamepad.d.ts.map +1 -1
  67. package/dist/esm/input/Gamepad.js +12 -0
  68. package/dist/esm/input/Gamepad.js.map +1 -1
  69. package/dist/esm/input/InputManager.d.ts.map +1 -1
  70. package/dist/esm/input/InputManager.js +5 -0
  71. package/dist/esm/input/InputManager.js.map +1 -1
  72. package/dist/esm/input/InteractionManager.js +4 -4
  73. package/dist/esm/input/InteractionManager.js.map +1 -1
  74. package/dist/esm/math/collision-detection.js +1 -1
  75. package/dist/esm/rendering/BackendTargetPass.d.ts +1 -1
  76. package/dist/esm/rendering/BackendTargetPass.d.ts.map +1 -1
  77. package/dist/esm/rendering/CallbackRenderPass.d.ts +14 -10
  78. package/dist/esm/rendering/CallbackRenderPass.d.ts.map +1 -1
  79. package/dist/esm/rendering/CallbackRenderPass.js +16 -11
  80. package/dist/esm/rendering/CallbackRenderPass.js.map +1 -1
  81. package/dist/esm/rendering/DrawContext.d.ts +48 -0
  82. package/dist/esm/rendering/DrawContext.d.ts.map +1 -0
  83. package/dist/esm/rendering/PassContext.d.ts +42 -0
  84. package/dist/esm/rendering/PassContext.d.ts.map +1 -0
  85. package/dist/esm/rendering/PassContext.js +48 -0
  86. package/dist/esm/rendering/PassContext.js.map +1 -0
  87. package/dist/esm/rendering/RenderBackend.d.ts +14 -0
  88. package/dist/esm/rendering/RenderBackend.d.ts.map +1 -1
  89. package/dist/esm/rendering/RenderNode.d.ts.map +1 -1
  90. package/dist/esm/rendering/RenderNode.js +2 -2
  91. package/dist/esm/rendering/RenderNode.js.map +1 -1
  92. package/dist/esm/rendering/RenderNodePass.d.ts +1 -1
  93. package/dist/esm/rendering/RenderNodePass.d.ts.map +1 -1
  94. package/dist/esm/rendering/RenderingContext.d.ts +47 -16
  95. package/dist/esm/rendering/RenderingContext.d.ts.map +1 -1
  96. package/dist/esm/rendering/RenderingContext.js +134 -36
  97. package/dist/esm/rendering/RenderingContext.js.map +1 -1
  98. package/dist/esm/rendering/TransformBuffer.d.ts +23 -0
  99. package/dist/esm/rendering/TransformBuffer.d.ts.map +1 -1
  100. package/dist/esm/rendering/TransformBuffer.js +58 -0
  101. package/dist/esm/rendering/TransformBuffer.js.map +1 -1
  102. package/dist/esm/rendering/View.d.ts +38 -0
  103. package/dist/esm/rendering/View.d.ts.map +1 -1
  104. package/dist/esm/rendering/View.js +37 -0
  105. package/dist/esm/rendering/View.js.map +1 -1
  106. package/dist/esm/rendering/filters/WebGpuShaderFilter.d.ts.map +1 -1
  107. package/dist/esm/rendering/filters/WebGpuShaderFilter.js +9 -2
  108. package/dist/esm/rendering/filters/WebGpuShaderFilter.js.map +1 -1
  109. package/dist/esm/rendering/material/MeshMaterial.d.ts +20 -1
  110. package/dist/esm/rendering/material/MeshMaterial.d.ts.map +1 -1
  111. package/dist/esm/rendering/material/MeshMaterial.js +17 -0
  112. package/dist/esm/rendering/material/MeshMaterial.js.map +1 -1
  113. package/dist/esm/rendering/material/SpriteMaterial.d.ts +20 -1
  114. package/dist/esm/rendering/material/SpriteMaterial.d.ts.map +1 -1
  115. package/dist/esm/rendering/material/SpriteMaterial.js +17 -0
  116. package/dist/esm/rendering/material/SpriteMaterial.js.map +1 -1
  117. package/dist/esm/rendering/plan/RenderEffectExecutor.d.ts.map +1 -1
  118. package/dist/esm/rendering/plan/RenderEffectExecutor.js +7 -2
  119. package/dist/esm/rendering/plan/RenderEffectExecutor.js.map +1 -1
  120. package/dist/esm/rendering/plan/RenderInstruction.d.ts +5 -2
  121. package/dist/esm/rendering/plan/RenderInstruction.d.ts.map +1 -1
  122. package/dist/esm/rendering/plan/RenderPlanBuilder.d.ts.map +1 -1
  123. package/dist/esm/rendering/plan/RenderPlanBuilder.js +23 -5
  124. package/dist/esm/rendering/plan/RenderPlanBuilder.js.map +1 -1
  125. package/dist/esm/rendering/plan/RenderScope.d.ts +7 -0
  126. package/dist/esm/rendering/plan/RenderScope.d.ts.map +1 -1
  127. package/dist/esm/rendering/primitives/Graphics.d.ts +10 -1
  128. package/dist/esm/rendering/primitives/Graphics.d.ts.map +1 -1
  129. package/dist/esm/rendering/primitives/Graphics.js +30 -9
  130. package/dist/esm/rendering/primitives/Graphics.js.map +1 -1
  131. package/dist/esm/rendering/public.d.ts +5 -5
  132. package/dist/esm/rendering/public.d.ts.map +1 -1
  133. package/dist/esm/rendering/sprite/AnimatedSprite.d.ts +56 -19
  134. package/dist/esm/rendering/sprite/AnimatedSprite.d.ts.map +1 -1
  135. package/dist/esm/rendering/sprite/AnimatedSprite.js +121 -31
  136. package/dist/esm/rendering/sprite/AnimatedSprite.js.map +1 -1
  137. package/dist/esm/rendering/text/BitmapText.d.ts.map +1 -1
  138. package/dist/esm/rendering/text/BitmapText.js +2 -0
  139. package/dist/esm/rendering/text/BitmapText.js.map +1 -1
  140. package/dist/esm/rendering/text/HTMLText.d.ts.map +1 -1
  141. package/dist/esm/rendering/text/HTMLText.js +2 -2
  142. package/dist/esm/rendering/text/HTMLText.js.map +1 -1
  143. package/dist/esm/rendering/text/Text.d.ts.map +1 -1
  144. package/dist/esm/rendering/text/Text.js +2 -0
  145. package/dist/esm/rendering/text/Text.js.map +1 -1
  146. package/dist/esm/rendering/types.d.ts +37 -13
  147. package/dist/esm/rendering/types.d.ts.map +1 -1
  148. package/dist/esm/rendering/types.js +37 -13
  149. package/dist/esm/rendering/types.js.map +1 -1
  150. package/dist/esm/rendering/webgl2/WebGl2BackdropBlendCompositor.d.ts +41 -0
  151. package/dist/esm/rendering/webgl2/WebGl2BackdropBlendCompositor.d.ts.map +1 -0
  152. package/dist/esm/rendering/webgl2/WebGl2BackdropBlendCompositor.js +222 -0
  153. package/dist/esm/rendering/webgl2/WebGl2BackdropBlendCompositor.js.map +1 -0
  154. package/dist/esm/rendering/webgl2/WebGl2Backend.d.ts +34 -1
  155. package/dist/esm/rendering/webgl2/WebGl2Backend.d.ts.map +1 -1
  156. package/dist/esm/rendering/webgl2/WebGl2Backend.js +108 -60
  157. package/dist/esm/rendering/webgl2/WebGl2Backend.js.map +1 -1
  158. package/dist/esm/rendering/webgl2/WebGl2TextRenderer.d.ts.map +1 -1
  159. package/dist/esm/rendering/webgl2/WebGl2TextRenderer.js +50 -11
  160. package/dist/esm/rendering/webgl2/WebGl2TextRenderer.js.map +1 -1
  161. package/dist/esm/rendering/webgl2/glsl/backdrop-blend.frag.js +4 -0
  162. package/dist/esm/rendering/webgl2/glsl/backdrop-blend.frag.js.map +1 -0
  163. package/dist/esm/rendering/webgl2/glsl/backdrop-blend.vert.js +4 -0
  164. package/dist/esm/rendering/webgl2/glsl/backdrop-blend.vert.js.map +1 -0
  165. package/dist/esm/rendering/webgl2/glsl/text.vert.js +1 -1
  166. package/dist/esm/rendering/webgpu/WebGpuBackdropBlendCompositor.d.ts +72 -0
  167. package/dist/esm/rendering/webgpu/WebGpuBackdropBlendCompositor.d.ts.map +1 -0
  168. package/dist/esm/rendering/webgpu/WebGpuBackdropBlendCompositor.js +494 -0
  169. package/dist/esm/rendering/webgpu/WebGpuBackdropBlendCompositor.js.map +1 -0
  170. package/dist/esm/rendering/webgpu/WebGpuBackend.d.ts +27 -0
  171. package/dist/esm/rendering/webgpu/WebGpuBackend.d.ts.map +1 -1
  172. package/dist/esm/rendering/webgpu/WebGpuBackend.js +157 -60
  173. package/dist/esm/rendering/webgpu/WebGpuBackend.js.map +1 -1
  174. package/dist/esm/rendering/webgpu/WebGpuBlendState.d.ts.map +1 -1
  175. package/dist/esm/rendering/webgpu/WebGpuBlendState.js +5 -29
  176. package/dist/esm/rendering/webgpu/WebGpuBlendState.js.map +1 -1
  177. package/dist/esm/rendering/webgpu/WebGpuMaskCompositor.d.ts +2 -0
  178. package/dist/esm/rendering/webgpu/WebGpuMaskCompositor.d.ts.map +1 -1
  179. package/dist/esm/rendering/webgpu/WebGpuMaskCompositor.js +2 -1
  180. package/dist/esm/rendering/webgpu/WebGpuMaskCompositor.js.map +1 -1
  181. package/dist/esm/rendering/webgpu/WebGpuMeshRenderer.d.ts +4 -0
  182. package/dist/esm/rendering/webgpu/WebGpuMeshRenderer.d.ts.map +1 -1
  183. package/dist/esm/rendering/webgpu/WebGpuMeshRenderer.js +3 -1
  184. package/dist/esm/rendering/webgpu/WebGpuMeshRenderer.js.map +1 -1
  185. package/dist/esm/rendering/webgpu/WebGpuNineSliceSpriteRenderer.d.ts +2 -0
  186. package/dist/esm/rendering/webgpu/WebGpuNineSliceSpriteRenderer.d.ts.map +1 -1
  187. package/dist/esm/rendering/webgpu/WebGpuNineSliceSpriteRenderer.js +2 -1
  188. package/dist/esm/rendering/webgpu/WebGpuNineSliceSpriteRenderer.js.map +1 -1
  189. package/dist/esm/rendering/webgpu/WebGpuPassCoordinator.d.ts +8 -0
  190. package/dist/esm/rendering/webgpu/WebGpuPassCoordinator.d.ts.map +1 -1
  191. package/dist/esm/rendering/webgpu/WebGpuPassCoordinator.js +20 -0
  192. package/dist/esm/rendering/webgpu/WebGpuPassCoordinator.js.map +1 -1
  193. package/dist/esm/rendering/webgpu/WebGpuRepeatingSpriteRenderer.d.ts +6 -0
  194. package/dist/esm/rendering/webgpu/WebGpuRepeatingSpriteRenderer.d.ts.map +1 -1
  195. package/dist/esm/rendering/webgpu/WebGpuRepeatingSpriteRenderer.js +4 -1
  196. package/dist/esm/rendering/webgpu/WebGpuRepeatingSpriteRenderer.js.map +1 -1
  197. package/dist/esm/rendering/webgpu/WebGpuSpriteRenderer.d.ts +2 -0
  198. package/dist/esm/rendering/webgpu/WebGpuSpriteRenderer.d.ts.map +1 -1
  199. package/dist/esm/rendering/webgpu/WebGpuSpriteRenderer.js +2 -1
  200. package/dist/esm/rendering/webgpu/WebGpuSpriteRenderer.js.map +1 -1
  201. package/dist/esm/rendering/webgpu/WebGpuStencilClipper.d.ts +2 -0
  202. package/dist/esm/rendering/webgpu/WebGpuStencilClipper.d.ts.map +1 -1
  203. package/dist/esm/rendering/webgpu/WebGpuStencilClipper.js +2 -1
  204. package/dist/esm/rendering/webgpu/WebGpuStencilClipper.js.map +1 -1
  205. package/dist/esm/rendering/webgpu/WebGpuTextRenderer.d.ts +2 -0
  206. package/dist/esm/rendering/webgpu/WebGpuTextRenderer.d.ts.map +1 -1
  207. package/dist/esm/rendering/webgpu/WebGpuTextRenderer.js +3 -2
  208. package/dist/esm/rendering/webgpu/WebGpuTextRenderer.js.map +1 -1
  209. package/dist/esm/rendering/webgpu/WebGpuTransformStorage.d.ts +3 -1
  210. package/dist/esm/rendering/webgpu/WebGpuTransformStorage.d.ts.map +1 -1
  211. package/dist/esm/rendering/webgpu/WebGpuTransformStorage.js +29 -5
  212. package/dist/esm/rendering/webgpu/WebGpuTransformStorage.js.map +1 -1
  213. package/dist/esm/resources/Loader.d.ts +13 -0
  214. package/dist/esm/resources/Loader.d.ts.map +1 -1
  215. package/dist/esm/resources/Loader.js +67 -7
  216. package/dist/esm/resources/Loader.js.map +1 -1
  217. package/dist/esm/ui/ScrollContainer.d.ts +63 -0
  218. package/dist/esm/ui/ScrollContainer.d.ts.map +1 -0
  219. package/dist/esm/ui/ScrollContainer.js +99 -0
  220. package/dist/esm/ui/ScrollContainer.js.map +1 -0
  221. package/dist/esm/ui/Tooltip.d.ts +67 -0
  222. package/dist/esm/ui/Tooltip.d.ts.map +1 -0
  223. package/dist/esm/ui/Tooltip.js +133 -0
  224. package/dist/esm/ui/Tooltip.js.map +1 -0
  225. package/dist/esm/ui/index.d.ts +4 -0
  226. package/dist/esm/ui/index.d.ts.map +1 -1
  227. package/dist/exo.esm.js +1 -1
  228. package/dist/exo.esm.js.map +1 -1
  229. package/dist/exo.iife.js +45202 -0
  230. package/dist/exo.iife.js.map +1 -0
  231. package/dist/exo.iife.min.js +2 -0
  232. package/dist/exo.iife.min.js.map +1 -0
  233. package/package.json +15 -3
  234. package/dist/esm/rendering/Camera.d.ts +0 -34
  235. package/dist/esm/rendering/Camera.d.ts.map +0 -1
  236. package/dist/esm/rendering/Camera.js +0 -38
  237. package/dist/esm/rendering/Camera.js.map +0 -1
package/CHANGELOG.md CHANGED
@@ -4,6 +4,138 @@ All notable changes to ExoJS are documented in this file.
4
4
 
5
5
  The format follows [Keep a Changelog](https://keepachangelog.com/en/1.1.0/) and the project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
6
6
 
7
+ ## [0.15.0] - 2026-07-02
8
+
9
+ The rendering-views and audio-effects release. Core's render surface is
10
+ reworked around `View` (folding in `Camera`), a scoped `PassContext` that
11
+ stops pass callbacks from leaking state across targets, and multi-view
12
+ viewport parity between WebGL2 and WebGPU (split-screen, picture-in-picture,
13
+ minimaps). `@codexo/exojs-audio-fx` gains ten new insert effects and a
14
+ flagship-hardened `BeatDetector` (correct tempo tracking across 50–300 BPM,
15
+ 92–99% recall, 1–4 ms beat offsets). `@codexo/exojs-ldtk`, `-aseprite`, and
16
+ `-tiled` reach format completeness (multi-world LDtk, Aseprite frame
17
+ direction/repeat/slices, structured Tiled/LDtk property values). This is a
18
+ pre-1.0 release and includes intentional breaking changes; see **Changed**
19
+ and **Removed**.
20
+
21
+ ### Added
22
+
23
+ - **View API.** `View.from(options)` (`center`/`size`/`viewport`/`rotation`/
24
+ `zoom`) and a fluent `View.setViewport(x, y, w, h)` using SFML-style
25
+ normalized (0..1) viewport rectangles, enabling split-screen,
26
+ picture-in-picture, and minimap compositions (#217).
27
+ - **Scoped pass context.** `DrawContext` and `PassContext` give a pass
28
+ callback a read-only `target`/`view` and route `clear`/`render`/`renderTo`/
29
+ `draw*` through the owning `RenderingContext`, so a callback can no longer
30
+ reset the active view or leak draws onto another target (#217).
31
+ - **`@codexo/exojs-audio-fx` — ten new insert effects.** Native:
32
+ `DistortionEffect`, `PhaserEffect`, `FlangerEffect`, `TremoloEffect`
33
+ (auto-pan), `PingPongDelayEffect`, `LimiterEffect`, `AutoWahEffect`,
34
+ `RingModulatorEffect`, `ConvolutionEffect` (real impulse-response
35
+ convolution via `ConvolverNode`). Worklet: `BitCrusherEffect`. Each follows
36
+ the dry/wet-gain, bypass-until-ready, ramped-setter template (#219, #221).
37
+ - **`WorkletEffect` dry/wet gain-staging primitive.** Dry/wet fan-out and a
38
+ `wet` getter/setter move into the `WorkletEffect` base class, plus
39
+ dry-latency compensation (a dry-path `DelayNode` time-aligned to each
40
+ worklet's algorithmic latency); `PitchShiftEffect`, `GranularEffect`, and
41
+ `VocoderEffect` migrate to emit pure wet through the shared base (#220).
42
+ - **`PitchShiftEffect` SOLA algorithm** replacing the previous approach, with
43
+ acoustic-contract tests across the worklet effects (#218).
44
+ - **`BeatDetector` flagship hardening.** Octave-error fix (mean-subtracted
45
+ ACF, log-Gaussian metric prior, subdivision-aware super-harmonic penalty,
46
+ and 3:2/2:3 hysteresis), adaptive onset detection, a bounded PLL phase
47
+ tracker, dual fast/stable tempo windows, and provisional/locked beat
48
+ states. Correct tempo across 50–300 BPM (previously locked to a
49
+ sub-harmonic above ~90 BPM), recall 92–99% (previously 11–42%), beat
50
+ offsets 1–4 ms. A seeded synthetic testbench and committed golden baseline
51
+ make the detector objectively measurable (#221).
52
+ - **`AnimatedSprite.repeat`** — finite N-cycle playback (`-1` loops
53
+ indefinitely, `1` plays once, `N` plays exactly N cycles), replacing
54
+ `loop: boolean`. Aseprite `direction` (pingpong/reverse) frame expansion,
55
+ `slices` exposure, per-frame `frameDurations` (hold-frame timing), and
56
+ `frameOffsets` (trim/`spriteSourceSize` anchoring) (#222).
57
+ - **LDtk format completeness.** External `.ldtkl` level resolution, IntGrid
58
+ value exposure, level `fieldInstances`, entity pivot correction, and
59
+ multi-world support (`worlds[]` flattened with an `ldtkWorldIid` tag,
60
+ single-world docs unaffected) (#222).
61
+ - **Structured `TilePropertyValue` variants** (Point/EntityRef/Tile) for LDtk
62
+ fields and Tiled `object`/`class`-typed custom properties, previously
63
+ dropped or left untagged (#222).
64
+ - **`WheelJoint` suspension-travel limit** (`enableLimit`/`lowerTranslation`/
65
+ `upperTranslation`), matching `PrismaticJoint`'s existing limit (#224).
66
+ - **React `useSignal` hook** bridges an engine `Signal` into React via
67
+ `useSyncExternalStore`; `ExoCanvas`/`useExoApplication` gain an `onError`
68
+ counterpart to `onReady`, wired to `Application.onError` (#224).
69
+ - **WebGPU CI lane** now runs against Mesa lavapipe (a real Vulkan software
70
+ rasterizer) as a required, blocking check, with real GPU-side pixel
71
+ readback and a WGSL compile-coverage test mirroring the existing GLSL one
72
+ (#222).
73
+
74
+ ### Changed
75
+
76
+ - **BREAKING — `Camera` folded into `View`.** The `Camera` class is removed;
77
+ `RenderingContext.camera` becomes `RenderingContext.view` (the `view` alias
78
+ is gone). `screenView` is unchanged (#217).
79
+ - **BREAKING — `CallbackRenderPass` callbacks receive a `PassContext`**
80
+ instead of the raw `RenderingContext`. The previous allocating `renderTo`
81
+ is renamed `capture()`; a new caller-owned `renderTo` (accepting `target`,
82
+ `view`, and `clear`) and coordinator-routed `context.clear(color)` are
83
+ added (#217).
84
+ - **Graphics fill is now opt-in.** `drawRectangle`/`drawCircle`/etc. no
85
+ longer build a hidden opaque-black fill mesh by default — outline-only
86
+ shapes stop silently painting a fill (#217).
87
+ - **Multi-view viewport parity.** WebGL2 partial top-left viewports
88
+ (split-screen/picture-in-picture/minimap) no longer land at the wrong edge
89
+ (GL's viewport origin is bottom-left); WebGPU's pass coordinator now
90
+ applies the active view's viewport to match. Any view used in a render
91
+ ticks its follow/shake automatically next frame — `trackView`/`untrackView`
92
+ are now only an escape hatch (#217).
93
+ - **Raw `console.*` calls routed through the DEV-gated logger.**
94
+ `Tween`/`Application`/`SceneManager`/`HTMLText` warnings and errors go
95
+ through `logger`/`warnOnce` instead of `console.*`, so they no longer ship
96
+ in production builds (#216).
97
+ - **`LimiterEffect.ratio`/`.knee`** are now configurable, matching sibling
98
+ `CompressorEffect` (defaults unchanged) (#224).
99
+ - **German (`de/`) locale pages** render the real English content directly
100
+ instead of a "translation coming soon" stub (#224).
101
+
102
+ ### Removed
103
+
104
+ - **BREAKING — `PhysicsWorldOptions.interpolation` and
105
+ `BindingOptions.drive: 'node-to-body'`** — both were documented as
106
+ "reserved, no effect yet" and referenced nowhere (#224).
107
+
108
+ ### Fixed
109
+
110
+ - **WebGL2 text rendering.** `WebGl2TextRenderer` bypassed the backend's
111
+ texture-unit cache when binding its node-data texture; when text rendered
112
+ first in a frame the atlas bound to the wrong unit and every glyph went
113
+ transparent (#215).
114
+ - **Gamepad input froze after connect.** `InputManager.updateGamepads` never
115
+ re-read `navigator.getGamepads()` for already-connected pads; button/axis
116
+ state is now polled fresh every frame (#215).
117
+ - **WebGPU shader filters rendered a black screen** (`crt-scanlines`,
118
+ `chromatic-aberration`) when the canvas' preferred texture format differed
119
+ from the filter's offscreen `rgba8unorm` output — `WebGpuShaderFilter`
120
+ cached its pipeline against whichever format was bound at first use instead
121
+ of its own output texture's format (#226).
122
+ - Audio-fx ducking logged a spurious `setTargetAtTime` out-of-range warning
123
+ every frame; its attack/release params are `[0,1]` smoothing coefficients,
124
+ not times (#215).
125
+ - Several playground examples (svg-drawable, trail-feedback,
126
+ tiled-physics-actor) fixed: a 0×0 rasterized SVG texture, a render-target
127
+ feedback loop, and a broken relative import in the playground's import map
128
+ (#215).
129
+
130
+ ### Docs
131
+
132
+ - Audio effects guide extended with all ten effects added in #218–#221;
133
+ README quickstart switched to the `load()` lifecycle hook (#223).
134
+ - Guide coverage catch-up: the full 18-mode W3C blend suite, `Tooltip`/
135
+ `ScrollContainer` widgets, loader progress signals and `Logger`, live
136
+ `sizingMode`/`clearColor`, `cullArea`, `fixedUpdate`/`frameAlpha`, and the
137
+ IIFE/CDN bundle path (#225).
138
+
7
139
  ## [0.14.0] - 2026-06-26
8
140
 
9
141
  The architecture and hardening release. Two new packages —
package/README.md CHANGED
@@ -106,14 +106,12 @@ npm install @codexo/exojs-audio-fx
106
106
  ## Quickstart
107
107
 
108
108
  ```ts
109
- import { Application, Scene, Graphics, Color, type RenderingContext, type Time } from '@codexo/exojs';
109
+ import { Application, Scene, Graphics, Color, Loader, type RenderingContext, type Time } from '@codexo/exojs';
110
110
 
111
111
  class HelloScene extends Scene {
112
112
  private readonly box = new Graphics();
113
113
 
114
- public constructor() {
115
- super();
116
-
114
+ public override init(loader: Loader): void {
117
115
  this.box.fillColor = Color.white;
118
116
  this.box.drawRectangle(-32, -32, 64, 64);
119
117
  this.box.setPosition(400, 300);
@@ -1 +1 @@
1
- {"version":3,"file":"Tween.d.ts","sourceRoot":"","sources":["../../../src/animation/Tween.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Tween.d.ts","sourceRoot":"","sources":["../../../src/animation/Tween.ts"],"names":[],"mappings":"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"}
@@ -299,7 +299,6 @@ class Tween {
299
299
  for (const key of keys) {
300
300
  const val = this._target[key];
301
301
  if (typeof val !== 'number') {
302
- console.warn(`Tween: property "${String(key)}" is not a number on target ` + `(got ${typeof val}). It will be skipped.`);
303
302
  continue;
304
303
  }
305
304
  snap[String(key)] = val;
@@ -1 +1 @@
1
- {"version":3,"file":"Tween.js","sources":["../../../../src/animation/Tween.ts"],"sourcesContent":[null],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Tween.js","sources":["../../../../src/animation/Tween.ts"],"sourcesContent":[null],"names":[],"mappings":"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"}
@@ -1,12 +1,20 @@
1
1
  import type { System } from '#core/System';
2
2
  import type { Time } from '#core/Time';
3
3
  import { Tween } from './Tween';
4
+ import { TweenSequencer } from './TweenSequencer';
5
+ /** Any object that can be driven each frame by a delta in seconds. @internal */
6
+ interface Ticker {
7
+ update(deltaSeconds: number): void;
8
+ }
4
9
  /**
5
10
  * Owns and advances a collection of {@link Tween} instances, driving them
6
11
  * once per frame from {@link Application.update}. Created tweens are tracked
7
12
  * automatically; manually constructed tweens can be opted in via
8
13
  * {@link TweenManager.add}.
9
14
  *
15
+ * Custom updatables (such as {@link TweenSequencer}) can be registered via
16
+ * {@link TweenManager.addTicker} so they share the same frame tick.
17
+ *
10
18
  * Update iteration uses a snapshot so callbacks may freely add or remove
11
19
  * tweens during the same frame without corrupting the loop. Completed and
12
20
  * stopped tweens are evicted automatically.
@@ -16,6 +24,7 @@ export declare class TweenManager implements System {
16
24
  /** App-systems tick band — tweens after audio. @internal */
17
25
  readonly order = 400;
18
26
  private _tweens;
27
+ private _tickers;
19
28
  private _destroyed;
20
29
  /**
21
30
  * Create a new Tween targeting `target`, register it with this manager, and
@@ -36,6 +45,22 @@ export declare class TweenManager implements System {
36
45
  * ```
37
46
  */
38
47
  sequence(tweens: readonly Tween[]): Tween;
48
+ /**
49
+ * Create a new {@link TweenSequencer} bound to this manager and return it.
50
+ * The sequencer registers itself automatically when {@link TweenSequencer.start}
51
+ * is called, so no manual wiring is needed.
52
+ *
53
+ * @example
54
+ * ```ts
55
+ * scene.tweens.createSequencer()
56
+ * .then(fadeIn)
57
+ * .wait(0.5)
58
+ * .then([moveLeft, scaleUp])
59
+ * .onComplete(() => console.log('done'))
60
+ * .start();
61
+ * ```
62
+ */
63
+ createSequencer(): TweenSequencer;
39
64
  /**
40
65
  * Explicitly add a stand-alone Tween (created via `new Tween(target)`)
41
66
  * to this manager so it participates in the update loop.
@@ -44,17 +69,31 @@ export declare class TweenManager implements System {
44
69
  /** Remove a tween from the manager. Called automatically on stop/complete. */
45
70
  remove(tween: Tween): this;
46
71
  /**
47
- * Advance all active tweens by the frame `delta` (read as seconds). Ticked
48
- * once per frame via {@link Application.systems}. Uses a snapshot of the list
49
- * so that callbacks that add or remove tweens do not corrupt mid-iteration.
72
+ * Register a custom updatable so it is driven each frame alongside tweens.
73
+ * Idempotent registering the same ticker twice is a no-op.
74
+ *
75
+ * Used internally by {@link TweenSequencer}.
76
+ */
77
+ addTicker(ticker: Ticker): this;
78
+ /**
79
+ * Remove a previously registered ticker. Called automatically by
80
+ * {@link TweenSequencer} when it completes or is stopped.
81
+ */
82
+ removeTicker(ticker: Ticker): this;
83
+ /**
84
+ * Advance all active tweens by the frame `delta` (read as seconds), then
85
+ * advance all registered tickers. Ticked once per frame via
86
+ * {@link Application.systems}. Uses snapshots so callbacks that add or
87
+ * remove tweens/tickers do not corrupt mid-iteration.
50
88
  */
51
89
  update(delta: Time): void;
52
90
  /**
53
- * Remove all tweens immediately. No callbacks (onComplete etc.) fire.
91
+ * Remove all tweens and tickers immediately. No callbacks fire.
54
92
  * The tweens' states are left as-is; they are simply evicted from the list.
55
93
  */
56
94
  clear(): this;
57
- /** Tear down the manager. Clears tweens and makes subsequent updates no-ops. */
95
+ /** Tear down the manager. Clears tweens and tickers and makes subsequent updates no-ops. */
58
96
  destroy(): void;
59
97
  }
98
+ export {};
60
99
  //# sourceMappingURL=TweenManager.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"TweenManager.d.ts","sourceRoot":"","sources":["../../../src/animation/TweenManager.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AAC3C,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,YAAY,CAAC;AAEvC,OAAO,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AAEhC;;;;;;;;;;GAUG;AACH,qBAAa,YAAa,YAAW,MAAM;IACzC,4DAA4D;IAC5D,SAAgB,KAAK,OAAO;IAC5B,OAAO,CAAC,OAAO,CAAe;IAC9B,OAAO,CAAC,UAAU,CAAS;IAE3B;;;OAGG;IACI,MAAM,CAAC,CAAC,SAAS,MAAM,EAAE,MAAM,EAAE,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC;IAQpD;;;;;;;;;;;;OAYG;IACI,QAAQ,CAAC,MAAM,EAAE,SAAS,KAAK,EAAE,GAAG,KAAK;IAoBhD;;;OAGG;IACI,GAAG,CAAC,KAAK,EAAE,KAAK,GAAG,IAAI;IAU9B,8EAA8E;IACvE,MAAM,CAAC,KAAK,EAAE,KAAK,GAAG,IAAI;IAUjC;;;;OAIG;IACI,MAAM,CAAC,KAAK,EAAE,IAAI,GAAG,IAAI;IAUhC;;;OAGG;IACI,KAAK,IAAI,IAAI;IAMpB,gFAAgF;IACzE,OAAO,IAAI,IAAI;CAIvB"}
1
+ {"version":3,"file":"TweenManager.d.ts","sourceRoot":"","sources":["../../../src/animation/TweenManager.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AAC3C,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,YAAY,CAAC;AAEvC,OAAO,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AAChC,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAElD,gFAAgF;AAChF,UAAU,MAAM;IACd,MAAM,CAAC,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;CACpC;AAED;;;;;;;;;;;;;GAaG;AACH,qBAAa,YAAa,YAAW,MAAM;IACzC,4DAA4D;IAC5D,SAAgB,KAAK,OAAO;IAC5B,OAAO,CAAC,OAAO,CAAe;IAC9B,OAAO,CAAC,QAAQ,CAAgB;IAChC,OAAO,CAAC,UAAU,CAAS;IAE3B;;;OAGG;IACI,MAAM,CAAC,CAAC,SAAS,MAAM,EAAE,MAAM,EAAE,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC;IAQpD;;;;;;;;;;;;OAYG;IACI,QAAQ,CAAC,MAAM,EAAE,SAAS,KAAK,EAAE,GAAG,KAAK;IAoBhD;;;;;;;;;;;;;;OAcG;IACI,eAAe,IAAI,cAAc;IAIxC;;;OAGG;IACI,GAAG,CAAC,KAAK,EAAE,KAAK,GAAG,IAAI;IAU9B,8EAA8E;IACvE,MAAM,CAAC,KAAK,EAAE,KAAK,GAAG,IAAI;IAUjC;;;;;OAKG;IACI,SAAS,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;IAQtC;;;OAGG;IACI,YAAY,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;IAUzC;;;;;OAKG;IACI,MAAM,CAAC,KAAK,EAAE,IAAI,GAAG,IAAI;IAgBhC;;;OAGG;IACI,KAAK,IAAI,IAAI;IAOpB,4FAA4F;IACrF,OAAO,IAAI,IAAI;CAIvB"}
@@ -1,4 +1,5 @@
1
1
  import { Tween } from './Tween.js';
2
+ import { TweenSequencer } from './TweenSequencer.js';
2
3
 
3
4
  /**
4
5
  * Owns and advances a collection of {@link Tween} instances, driving them
@@ -6,6 +7,9 @@ import { Tween } from './Tween.js';
6
7
  * automatically; manually constructed tweens can be opted in via
7
8
  * {@link TweenManager.add}.
8
9
  *
10
+ * Custom updatables (such as {@link TweenSequencer}) can be registered via
11
+ * {@link TweenManager.addTicker} so they share the same frame tick.
12
+ *
9
13
  * Update iteration uses a snapshot so callbacks may freely add or remove
10
14
  * tweens during the same frame without corrupting the loop. Completed and
11
15
  * stopped tweens are evicted automatically.
@@ -15,6 +19,7 @@ class TweenManager {
15
19
  /** App-systems tick band — tweens after audio. @internal */
16
20
  order = 400;
17
21
  _tweens = [];
22
+ _tickers = [];
18
23
  _destroyed = false;
19
24
  /**
20
25
  * Create a new Tween targeting `target`, register it with this manager, and
@@ -55,6 +60,24 @@ class TweenManager {
55
60
  }
56
61
  return first;
57
62
  }
63
+ /**
64
+ * Create a new {@link TweenSequencer} bound to this manager and return it.
65
+ * The sequencer registers itself automatically when {@link TweenSequencer.start}
66
+ * is called, so no manual wiring is needed.
67
+ *
68
+ * @example
69
+ * ```ts
70
+ * scene.tweens.createSequencer()
71
+ * .then(fadeIn)
72
+ * .wait(0.5)
73
+ * .then([moveLeft, scaleUp])
74
+ * .onComplete(() => console.log('done'))
75
+ * .start();
76
+ * ```
77
+ */
78
+ createSequencer() {
79
+ return new TweenSequencer(this);
80
+ }
58
81
  /**
59
82
  * Explicitly add a stand-alone Tween (created via `new Tween(target)`)
60
83
  * to this manager so it participates in the update loop.
@@ -75,9 +98,33 @@ class TweenManager {
75
98
  return this;
76
99
  }
77
100
  /**
78
- * Advance all active tweens by the frame `delta` (read as seconds). Ticked
79
- * once per frame via {@link Application.systems}. Uses a snapshot of the list
80
- * so that callbacks that add or remove tweens do not corrupt mid-iteration.
101
+ * Register a custom updatable so it is driven each frame alongside tweens.
102
+ * Idempotent registering the same ticker twice is a no-op.
103
+ *
104
+ * Used internally by {@link TweenSequencer}.
105
+ */
106
+ addTicker(ticker) {
107
+ if (!this._tickers.includes(ticker)) {
108
+ this._tickers.push(ticker);
109
+ }
110
+ return this;
111
+ }
112
+ /**
113
+ * Remove a previously registered ticker. Called automatically by
114
+ * {@link TweenSequencer} when it completes or is stopped.
115
+ */
116
+ removeTicker(ticker) {
117
+ const index = this._tickers.indexOf(ticker);
118
+ if (index !== -1) {
119
+ this._tickers.splice(index, 1);
120
+ }
121
+ return this;
122
+ }
123
+ /**
124
+ * Advance all active tweens by the frame `delta` (read as seconds), then
125
+ * advance all registered tickers. Ticked once per frame via
126
+ * {@link Application.systems}. Uses snapshots so callbacks that add or
127
+ * remove tweens/tickers do not corrupt mid-iteration.
81
128
  */
82
129
  update(delta) {
83
130
  if (this._destroyed)
@@ -86,16 +133,21 @@ class TweenManager {
86
133
  for (const tween of snapshot) {
87
134
  tween.update(delta.seconds);
88
135
  }
136
+ const tickerSnapshot = [...this._tickers];
137
+ for (const ticker of tickerSnapshot) {
138
+ ticker.update(delta.seconds);
139
+ }
89
140
  }
90
141
  /**
91
- * Remove all tweens immediately. No callbacks (onComplete etc.) fire.
142
+ * Remove all tweens and tickers immediately. No callbacks fire.
92
143
  * The tweens' states are left as-is; they are simply evicted from the list.
93
144
  */
94
145
  clear() {
95
146
  this._tweens = [];
147
+ this._tickers = [];
96
148
  return this;
97
149
  }
98
- /** Tear down the manager. Clears tweens and makes subsequent updates no-ops. */
150
+ /** Tear down the manager. Clears tweens and tickers and makes subsequent updates no-ops. */
99
151
  destroy() {
100
152
  this.clear();
101
153
  this._destroyed = true;
@@ -1 +1 @@
1
- {"version":3,"file":"TweenManager.js","sources":["../../../../src/animation/TweenManager.ts"],"sourcesContent":[null],"names":[],"mappings":";;AAKA;;;;;;;;;;AAUG;MACU,YAAY,CAAA;;IAEP,KAAK,GAAG,GAAG;IACnB,OAAO,GAAY,EAAE;IACrB,UAAU,GAAG,KAAK;AAE1B;;;AAGG;AACI,IAAA,MAAM,CAAmB,MAAS,EAAA;AACvC,QAAA,MAAM,KAAK,GAAG,IAAI,KAAK,CAAC,MAAM,CAAC;AAC/B,QAAA,KAAK,CAAC,cAAc,CAAC,IAAI,CAAC;AAC1B,QAAA,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC;AAExB,QAAA,OAAO,KAAK;IACd;AAEA;;;;;;;;;;;;AAYG;AACI,IAAA,QAAQ,CAAC,MAAwB,EAAA;AACtC,QAAA,MAAM,CAAC,KAAK,CAAC,GAAG,MAAM;AAEtB,QAAA,IAAI,KAAK,KAAK,SAAS,EAAE;AACvB,YAAA,MAAM,IAAI,KAAK,CAAC,8DAA8D,CAAC;QACjF;AAEA,QAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE;AAC1C,YAAA,MAAM,OAAO,GAAG,MAAM,CAAC,CAAC,CAAC;YACzB,MAAM,IAAI,GAAG,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC;AAC1B,YAAA,IAAI,OAAO,KAAK,SAAS,IAAI,IAAI,KAAK,SAAS;AAAE,gBAAA,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC;QACtE;AAEA,QAAA,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE;AAC1B,YAAA,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC;QACjB;AAEA,QAAA,OAAO,KAAK;IACd;AAEA;;;AAGG;AACI,IAAA,GAAG,CAAC,KAAY,EAAA;AACrB,QAAA,KAAK,CAAC,cAAc,CAAC,IAAI,CAAC;QAE1B,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE;AACjC,YAAA,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC;QAC1B;AAEA,QAAA,OAAO,IAAI;IACb;;AAGO,IAAA,MAAM,CAAC,KAAY,EAAA;QACxB,MAAM,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC;AAEzC,QAAA,IAAI,KAAK,KAAK,EAAE,EAAE;YAChB,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC;QAC/B;AAEA,QAAA,OAAO,IAAI;IACb;AAEA;;;;AAIG;AACI,IAAA,MAAM,CAAC,KAAW,EAAA;QACvB,IAAI,IAAI,CAAC,UAAU;YAAE;QAErB,MAAM,QAAQ,GAAG,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC;AAElC,QAAA,KAAK,MAAM,KAAK,IAAI,QAAQ,EAAE;AAC5B,YAAA,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC;QAC7B;IACF;AAEA;;;AAGG;IACI,KAAK,GAAA;AACV,QAAA,IAAI,CAAC,OAAO,GAAG,EAAE;AAEjB,QAAA,OAAO,IAAI;IACb;;IAGO,OAAO,GAAA;QACZ,IAAI,CAAC,KAAK,EAAE;AACZ,QAAA,IAAI,CAAC,UAAU,GAAG,IAAI;IACxB;AACD;;;;"}
1
+ {"version":3,"file":"TweenManager.js","sources":["../../../../src/animation/TweenManager.ts"],"sourcesContent":[null],"names":[],"mappings":"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"}
@@ -0,0 +1,139 @@
1
+ import type { Tween } from './Tween';
2
+ import type { TweenManager } from './TweenManager';
3
+ /**
4
+ * Lifecycle states of a {@link TweenSequencer}. Mirrors {@link TweenState}
5
+ * semantics: starts `Idle`, becomes `Active` on {@link TweenSequencer.start},
6
+ * and ends in `Complete` (all stages exhausted) or `Stopped` (cancelled via
7
+ * {@link TweenSequencer.stop}). `Paused` is reachable from `Active` only.
8
+ */
9
+ export declare enum TweenSequencerState {
10
+ Idle = "idle",
11
+ Active = "active",
12
+ Paused = "paused",
13
+ Complete = "complete",
14
+ Stopped = "stopped"
15
+ }
16
+ /**
17
+ * Composes multiple {@link Tween} instances into a multi-stage animation.
18
+ *
19
+ * Each stage added via {@link TweenSequencer.then} plays after the previous
20
+ * one finishes. Within a single stage, multiple tweens run simultaneously
21
+ * (parallel); the stage advances when **all** of them complete.
22
+ *
23
+ * Delay stages inserted via {@link TweenSequencer.wait} create a timed pause
24
+ * between stages without needing a dummy tween.
25
+ *
26
+ * The sequencer integrates with {@link TweenManager} via
27
+ * {@link TweenManager.addTicker} so it is driven automatically each frame.
28
+ * It can also be used stand-alone by calling {@link TweenSequencer.update}
29
+ * manually — in that mode the sequencer also advances its child tweens.
30
+ *
31
+ * @example
32
+ * ```ts
33
+ * app.tweens.createSequencer()
34
+ * .then(fadeIn)
35
+ * .wait(0.5)
36
+ * .then([moveLeft, scaleUp])
37
+ * .then(fadeOut)
38
+ * .onComplete(() => console.log('done!'))
39
+ * .start();
40
+ * ```
41
+ * @stable
42
+ */
43
+ export declare class TweenSequencer {
44
+ private readonly _stages;
45
+ private _state;
46
+ private readonly _manager;
47
+ /** Index into `_stages` for the current pass (0-based). */
48
+ private _currentStageIndex;
49
+ /** 1 = forward through stages, -1 = reversed (yoyo pass). */
50
+ private _direction;
51
+ /** Remaining repeat cycles. -1 = infinite. */
52
+ private _repeatCount;
53
+ /** The value configured by {@link TweenSequencer.repeat}. Preserved for restart. */
54
+ private _repeatTotal;
55
+ private _yoyo;
56
+ /** Accumulated seconds within the current delay stage. */
57
+ private _delayElapsed;
58
+ private _onStartCb;
59
+ private _onCompleteCb;
60
+ private _startFired;
61
+ constructor(manager?: TweenManager);
62
+ /** Current lifecycle state of the sequencer. */
63
+ get state(): TweenSequencerState;
64
+ /**
65
+ * Playback progress in 0..1, advancing in discrete steps as each stage
66
+ * completes. Equals `1` when the entire sequence has finished.
67
+ */
68
+ get progress(): number;
69
+ /**
70
+ * Append a stage to the sequence.
71
+ *
72
+ * - **Single tween**: the stage plays that tween, then advances.
73
+ * - **Array of tweens**: all start simultaneously; the stage advances when
74
+ * every tween in the array has completed.
75
+ */
76
+ then(tween: Tween | Tween[]): this;
77
+ /** Insert a fixed pause of `seconds` between stages. */
78
+ wait(seconds: number): this;
79
+ /**
80
+ * Number of additional repeat cycles. -1 = infinite. Default 0 (plays once).
81
+ *
82
+ * `repeat(2)` plays the full sequence three times total (initial pass + 2
83
+ * repeats).
84
+ */
85
+ repeat(count: number): this;
86
+ /**
87
+ * Reverse stage order on each repeat cycle. Only meaningful when combined
88
+ * with {@link TweenSequencer.repeat}.
89
+ */
90
+ yoyo(enabled?: boolean): this;
91
+ /**
92
+ * Register a callback fired once on the first {@link TweenSequencer.update}
93
+ * call after {@link TweenSequencer.start}.
94
+ */
95
+ onStart(cb: () => void): this;
96
+ /**
97
+ * Register a callback fired when the sequence finishes naturally (all stages
98
+ * and repeat cycles exhausted). Does NOT fire when stopped via
99
+ * {@link TweenSequencer.stop}.
100
+ */
101
+ onComplete(cb: () => void): this;
102
+ /**
103
+ * Start (or restart) the sequence from stage 0. Resets all internal state
104
+ * and re-registers with the manager if one is attached.
105
+ */
106
+ start(): this;
107
+ /**
108
+ * Pause the sequence. Tweens in the current stage are also paused. The
109
+ * elapsed timer in delay stages is frozen.
110
+ */
111
+ pause(): this;
112
+ /** Resume a paused sequence (and its current-stage tweens) from where they left off. */
113
+ resume(): this;
114
+ /**
115
+ * Stop the sequence without finishing. Active tweens are stopped.
116
+ * {@link TweenSequencer.onComplete} does NOT fire. The sequencer is removed
117
+ * from its manager if one is assigned.
118
+ */
119
+ stop(): this;
120
+ /**
121
+ * Advance the sequencer by `deltaSeconds`. Called automatically by the
122
+ * attached {@link TweenManager} each frame. When used stand-alone (no
123
+ * manager), call this manually and child tweens will also be advanced.
124
+ */
125
+ update(deltaSeconds: number): void;
126
+ /**
127
+ * Map the logical `_currentStageIndex` to the real index in `_stages`,
128
+ * accounting for yoyo reversal.
129
+ */
130
+ private _getActualStageIndex;
131
+ private _startCurrentStage;
132
+ private _advanceStage;
133
+ private _finish;
134
+ private _getCurrentStageTweens;
135
+ private _pauseCurrentStageTweens;
136
+ private _resumeCurrentStageTweens;
137
+ private _stopCurrentStageTweens;
138
+ }
139
+ //# sourceMappingURL=TweenSequencer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TweenSequencer.d.ts","sourceRoot":"","sources":["../../../src/animation/TweenSequencer.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AACrC,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAenD;;;;;GAKG;AACH,oBAAY,mBAAmB;IAC7B,IAAI,SAAS;IACb,MAAM,WAAW;IACjB,MAAM,WAAW;IACjB,QAAQ,aAAa;IACrB,OAAO,YAAY;CACpB;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AACH,qBAAa,cAAc;IACzB,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAe;IACvC,OAAO,CAAC,MAAM,CAAiD;IAC/D,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAsB;IAE/C,2DAA2D;IAC3D,OAAO,CAAC,kBAAkB,CAAK;IAE/B,6DAA6D;IAC7D,OAAO,CAAC,UAAU,CAAa;IAE/B,8CAA8C;IAC9C,OAAO,CAAC,YAAY,CAAK;IACzB,oFAAoF;IACpF,OAAO,CAAC,YAAY,CAAK;IACzB,OAAO,CAAC,KAAK,CAAS;IAEtB,0DAA0D;IAC1D,OAAO,CAAC,aAAa,CAAK;IAE1B,OAAO,CAAC,UAAU,CAA6B;IAC/C,OAAO,CAAC,aAAa,CAA6B;IAClD,OAAO,CAAC,WAAW,CAAS;gBAET,OAAO,CAAC,EAAE,YAAY;IAMzC,gDAAgD;IAChD,IAAW,KAAK,IAAI,mBAAmB,CAEtC;IAED;;;OAGG;IACH,IAAW,QAAQ,IAAI,MAAM,CAI5B;IAID;;;;;;OAMG;IACI,IAAI,CAAC,KAAK,EAAE,KAAK,GAAG,KAAK,EAAE,GAAG,IAAI;IAMzC,wDAAwD;IACjD,IAAI,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;IAKlC;;;;;OAKG;IACI,MAAM,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAKlC;;;OAGG;IACI,IAAI,CAAC,OAAO,UAAO,GAAG,IAAI;IAKjC;;;OAGG;IACI,OAAO,CAAC,EAAE,EAAE,MAAM,IAAI,GAAG,IAAI;IAKpC;;;;OAIG;IACI,UAAU,CAAC,EAAE,EAAE,MAAM,IAAI,GAAG,IAAI;IAOvC;;;OAGG;IACI,KAAK,IAAI,IAAI;IAWpB;;;OAGG;IACI,KAAK,IAAI,IAAI;IAQpB,wFAAwF;IACjF,MAAM,IAAI,IAAI;IAQrB;;;;OAIG;IACI,IAAI,IAAI,IAAI;IAWnB;;;;OAIG;IACI,MAAM,CAAC,YAAY,EAAE,MAAM,GAAG,IAAI;IA2CzC;;;OAGG;IACH,OAAO,CAAC,oBAAoB;IAK5B,OAAO,CAAC,kBAAkB;IAmB1B,OAAO,CAAC,aAAa;IA0BrB,OAAO,CAAC,OAAO;IAMf,OAAO,CAAC,sBAAsB;IAQ9B,OAAO,CAAC,wBAAwB;IAMhC,OAAO,CAAC,yBAAyB;IAMjC,OAAO,CAAC,uBAAuB;CAKhC"}