@codexo/exojs 0.14.0 → 0.15.1

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 (277) hide show
  1. package/CHANGELOG.md +183 -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/Playable.d.ts +6 -1
  17. package/dist/esm/audio/Playable.d.ts.map +1 -1
  18. package/dist/esm/audio/WorkletEffect.d.ts +34 -20
  19. package/dist/esm/audio/WorkletEffect.d.ts.map +1 -1
  20. package/dist/esm/audio/WorkletEffect.js +92 -25
  21. package/dist/esm/audio/WorkletEffect.js.map +1 -1
  22. package/dist/esm/core/Application.d.ts +43 -5
  23. package/dist/esm/core/Application.d.ts.map +1 -1
  24. package/dist/esm/core/Application.js +83 -9
  25. package/dist/esm/core/Application.js.map +1 -1
  26. package/dist/esm/core/BuildInfo.js +2 -2
  27. package/dist/esm/core/Codec.d.ts +41 -0
  28. package/dist/esm/core/Codec.d.ts.map +1 -0
  29. package/dist/esm/core/Codec.js +79 -0
  30. package/dist/esm/core/Codec.js.map +1 -0
  31. package/dist/esm/core/FixedTimestep.d.ts +28 -0
  32. package/dist/esm/core/FixedTimestep.d.ts.map +1 -0
  33. package/dist/esm/core/FixedTimestep.js +62 -0
  34. package/dist/esm/core/FixedTimestep.js.map +1 -0
  35. package/dist/esm/core/Scene.d.ts +14 -0
  36. package/dist/esm/core/Scene.d.ts.map +1 -1
  37. package/dist/esm/core/Scene.js +18 -0
  38. package/dist/esm/core/Scene.js.map +1 -1
  39. package/dist/esm/core/SceneManager.d.ts +7 -0
  40. package/dist/esm/core/SceneManager.d.ts.map +1 -1
  41. package/dist/esm/core/SceneManager.js +20 -4
  42. package/dist/esm/core/SceneManager.js.map +1 -1
  43. package/dist/esm/core/SceneNode.d.ts +46 -7
  44. package/dist/esm/core/SceneNode.d.ts.map +1 -1
  45. package/dist/esm/core/SceneNode.js +73 -12
  46. package/dist/esm/core/SceneNode.js.map +1 -1
  47. package/dist/esm/core/Stage.d.ts +7 -0
  48. package/dist/esm/core/Stage.d.ts.map +1 -1
  49. package/dist/esm/core/SystemRegistry.d.ts +5 -0
  50. package/dist/esm/core/SystemRegistry.d.ts.map +1 -1
  51. package/dist/esm/core/SystemRegistry.js +10 -0
  52. package/dist/esm/core/SystemRegistry.js.map +1 -1
  53. package/dist/esm/core/index.d.ts +4 -0
  54. package/dist/esm/core/index.d.ts.map +1 -1
  55. package/dist/esm/core/logging.d.ts +34 -0
  56. package/dist/esm/core/logging.d.ts.map +1 -0
  57. package/dist/esm/core/logging.js +59 -0
  58. package/dist/esm/core/logging.js.map +1 -0
  59. package/dist/esm/core/serialization/commonFields.d.ts.map +1 -1
  60. package/dist/esm/core/serialization/commonFields.js +6 -0
  61. package/dist/esm/core/serialization/commonFields.js.map +1 -1
  62. package/dist/esm/core/serialization/renderingSerializers.d.ts.map +1 -1
  63. package/dist/esm/core/serialization/renderingSerializers.js +14 -5
  64. package/dist/esm/core/serialization/renderingSerializers.js.map +1 -1
  65. package/dist/esm/debug/BoundingBoxesLayer.d.ts.map +1 -1
  66. package/dist/esm/debug/BoundingBoxesLayer.js +2 -1
  67. package/dist/esm/debug/BoundingBoxesLayer.js.map +1 -1
  68. package/dist/esm/debug/HitTestLayer.js +4 -4
  69. package/dist/esm/debug/HitTestLayer.js.map +1 -1
  70. package/dist/esm/debug/PerformanceLayer.js +1 -1
  71. package/dist/esm/debug/PerformanceLayer.js.map +1 -1
  72. package/dist/esm/debug/RenderPassInspectorLayer.js +2 -2
  73. package/dist/esm/debug/RenderPassInspectorLayer.js.map +1 -1
  74. package/dist/esm/index.js +7 -2
  75. package/dist/esm/index.js.map +1 -1
  76. package/dist/esm/input/Gamepad.d.ts +10 -0
  77. package/dist/esm/input/Gamepad.d.ts.map +1 -1
  78. package/dist/esm/input/Gamepad.js +12 -0
  79. package/dist/esm/input/Gamepad.js.map +1 -1
  80. package/dist/esm/input/InputManager.d.ts.map +1 -1
  81. package/dist/esm/input/InputManager.js +5 -0
  82. package/dist/esm/input/InputManager.js.map +1 -1
  83. package/dist/esm/input/InteractionManager.js +4 -4
  84. package/dist/esm/input/InteractionManager.js.map +1 -1
  85. package/dist/esm/math/AbstractVector.d.ts +4 -3
  86. package/dist/esm/math/AbstractVector.d.ts.map +1 -1
  87. package/dist/esm/math/AbstractVector.js +5 -4
  88. package/dist/esm/math/AbstractVector.js.map +1 -1
  89. package/dist/esm/math/ObservableVector.d.ts +2 -0
  90. package/dist/esm/math/ObservableVector.d.ts.map +1 -1
  91. package/dist/esm/math/ObservableVector.js +9 -0
  92. package/dist/esm/math/ObservableVector.js.map +1 -1
  93. package/dist/esm/math/Polygon.d.ts.map +1 -1
  94. package/dist/esm/math/Polygon.js +4 -1
  95. package/dist/esm/math/Polygon.js.map +1 -1
  96. package/dist/esm/math/collision-detection.d.ts.map +1 -1
  97. package/dist/esm/math/collision-detection.js +14 -14
  98. package/dist/esm/math/collision-detection.js.map +1 -1
  99. package/dist/esm/math/collision-primitives.d.ts +1 -1
  100. package/dist/esm/math/collision-primitives.d.ts.map +1 -1
  101. package/dist/esm/math/collision-primitives.js +4 -1
  102. package/dist/esm/math/collision-primitives.js.map +1 -1
  103. package/dist/esm/rendering/BackendTargetPass.d.ts +1 -1
  104. package/dist/esm/rendering/BackendTargetPass.d.ts.map +1 -1
  105. package/dist/esm/rendering/CallbackRenderPass.d.ts +14 -10
  106. package/dist/esm/rendering/CallbackRenderPass.d.ts.map +1 -1
  107. package/dist/esm/rendering/CallbackRenderPass.js +16 -11
  108. package/dist/esm/rendering/CallbackRenderPass.js.map +1 -1
  109. package/dist/esm/rendering/DrawContext.d.ts +48 -0
  110. package/dist/esm/rendering/DrawContext.d.ts.map +1 -0
  111. package/dist/esm/rendering/PassContext.d.ts +42 -0
  112. package/dist/esm/rendering/PassContext.d.ts.map +1 -0
  113. package/dist/esm/rendering/PassContext.js +48 -0
  114. package/dist/esm/rendering/PassContext.js.map +1 -0
  115. package/dist/esm/rendering/RenderBackend.d.ts +14 -0
  116. package/dist/esm/rendering/RenderBackend.d.ts.map +1 -1
  117. package/dist/esm/rendering/RenderNode.d.ts.map +1 -1
  118. package/dist/esm/rendering/RenderNode.js +2 -2
  119. package/dist/esm/rendering/RenderNode.js.map +1 -1
  120. package/dist/esm/rendering/RenderNodePass.d.ts +1 -1
  121. package/dist/esm/rendering/RenderNodePass.d.ts.map +1 -1
  122. package/dist/esm/rendering/RenderingContext.d.ts +47 -16
  123. package/dist/esm/rendering/RenderingContext.d.ts.map +1 -1
  124. package/dist/esm/rendering/RenderingContext.js +134 -36
  125. package/dist/esm/rendering/RenderingContext.js.map +1 -1
  126. package/dist/esm/rendering/TransformBuffer.d.ts +23 -0
  127. package/dist/esm/rendering/TransformBuffer.d.ts.map +1 -1
  128. package/dist/esm/rendering/TransformBuffer.js +58 -0
  129. package/dist/esm/rendering/TransformBuffer.js.map +1 -1
  130. package/dist/esm/rendering/View.d.ts +38 -0
  131. package/dist/esm/rendering/View.d.ts.map +1 -1
  132. package/dist/esm/rendering/View.js +37 -0
  133. package/dist/esm/rendering/View.js.map +1 -1
  134. package/dist/esm/rendering/filters/WebGpuShaderFilter.d.ts.map +1 -1
  135. package/dist/esm/rendering/filters/WebGpuShaderFilter.js +9 -2
  136. package/dist/esm/rendering/filters/WebGpuShaderFilter.js.map +1 -1
  137. package/dist/esm/rendering/material/MeshMaterial.d.ts +20 -1
  138. package/dist/esm/rendering/material/MeshMaterial.d.ts.map +1 -1
  139. package/dist/esm/rendering/material/MeshMaterial.js +17 -0
  140. package/dist/esm/rendering/material/MeshMaterial.js.map +1 -1
  141. package/dist/esm/rendering/material/SpriteMaterial.d.ts +20 -1
  142. package/dist/esm/rendering/material/SpriteMaterial.d.ts.map +1 -1
  143. package/dist/esm/rendering/material/SpriteMaterial.js +17 -0
  144. package/dist/esm/rendering/material/SpriteMaterial.js.map +1 -1
  145. package/dist/esm/rendering/plan/RenderEffectExecutor.d.ts.map +1 -1
  146. package/dist/esm/rendering/plan/RenderEffectExecutor.js +7 -2
  147. package/dist/esm/rendering/plan/RenderEffectExecutor.js.map +1 -1
  148. package/dist/esm/rendering/plan/RenderInstruction.d.ts +5 -2
  149. package/dist/esm/rendering/plan/RenderInstruction.d.ts.map +1 -1
  150. package/dist/esm/rendering/plan/RenderPlanBuilder.d.ts.map +1 -1
  151. package/dist/esm/rendering/plan/RenderPlanBuilder.js +23 -5
  152. package/dist/esm/rendering/plan/RenderPlanBuilder.js.map +1 -1
  153. package/dist/esm/rendering/plan/RenderScope.d.ts +7 -0
  154. package/dist/esm/rendering/plan/RenderScope.d.ts.map +1 -1
  155. package/dist/esm/rendering/primitives/Graphics.d.ts +17 -1
  156. package/dist/esm/rendering/primitives/Graphics.d.ts.map +1 -1
  157. package/dist/esm/rendering/primitives/Graphics.js +50 -15
  158. package/dist/esm/rendering/primitives/Graphics.js.map +1 -1
  159. package/dist/esm/rendering/public.d.ts +5 -5
  160. package/dist/esm/rendering/public.d.ts.map +1 -1
  161. package/dist/esm/rendering/sprite/AnimatedSprite.d.ts +57 -19
  162. package/dist/esm/rendering/sprite/AnimatedSprite.d.ts.map +1 -1
  163. package/dist/esm/rendering/sprite/AnimatedSprite.js +138 -31
  164. package/dist/esm/rendering/sprite/AnimatedSprite.js.map +1 -1
  165. package/dist/esm/rendering/sprite/Sprite.d.ts.map +1 -1
  166. package/dist/esm/rendering/sprite/Sprite.js +8 -0
  167. package/dist/esm/rendering/sprite/Sprite.js.map +1 -1
  168. package/dist/esm/rendering/text/BitmapText.d.ts.map +1 -1
  169. package/dist/esm/rendering/text/BitmapText.js +2 -0
  170. package/dist/esm/rendering/text/BitmapText.js.map +1 -1
  171. package/dist/esm/rendering/text/HTMLText.d.ts.map +1 -1
  172. package/dist/esm/rendering/text/HTMLText.js +2 -2
  173. package/dist/esm/rendering/text/HTMLText.js.map +1 -1
  174. package/dist/esm/rendering/text/Text.d.ts.map +1 -1
  175. package/dist/esm/rendering/text/Text.js +2 -0
  176. package/dist/esm/rendering/text/Text.js.map +1 -1
  177. package/dist/esm/rendering/text/TextLayout.d.ts.map +1 -1
  178. package/dist/esm/rendering/text/TextLayout.js +2 -3
  179. package/dist/esm/rendering/text/TextLayout.js.map +1 -1
  180. package/dist/esm/rendering/types.d.ts +37 -13
  181. package/dist/esm/rendering/types.d.ts.map +1 -1
  182. package/dist/esm/rendering/types.js +37 -13
  183. package/dist/esm/rendering/types.js.map +1 -1
  184. package/dist/esm/rendering/webgl2/WebGl2BackdropBlendCompositor.d.ts +41 -0
  185. package/dist/esm/rendering/webgl2/WebGl2BackdropBlendCompositor.d.ts.map +1 -0
  186. package/dist/esm/rendering/webgl2/WebGl2BackdropBlendCompositor.js +222 -0
  187. package/dist/esm/rendering/webgl2/WebGl2BackdropBlendCompositor.js.map +1 -0
  188. package/dist/esm/rendering/webgl2/WebGl2Backend.d.ts +34 -1
  189. package/dist/esm/rendering/webgl2/WebGl2Backend.d.ts.map +1 -1
  190. package/dist/esm/rendering/webgl2/WebGl2Backend.js +108 -60
  191. package/dist/esm/rendering/webgl2/WebGl2Backend.js.map +1 -1
  192. package/dist/esm/rendering/webgl2/WebGl2TextRenderer.d.ts.map +1 -1
  193. package/dist/esm/rendering/webgl2/WebGl2TextRenderer.js +50 -11
  194. package/dist/esm/rendering/webgl2/WebGl2TextRenderer.js.map +1 -1
  195. package/dist/esm/rendering/webgl2/glsl/backdrop-blend.frag.js +4 -0
  196. package/dist/esm/rendering/webgl2/glsl/backdrop-blend.frag.js.map +1 -0
  197. package/dist/esm/rendering/webgl2/glsl/backdrop-blend.vert.js +4 -0
  198. package/dist/esm/rendering/webgl2/glsl/backdrop-blend.vert.js.map +1 -0
  199. package/dist/esm/rendering/webgl2/glsl/text.vert.js +1 -1
  200. package/dist/esm/rendering/webgpu/WebGpuBackdropBlendCompositor.d.ts +72 -0
  201. package/dist/esm/rendering/webgpu/WebGpuBackdropBlendCompositor.d.ts.map +1 -0
  202. package/dist/esm/rendering/webgpu/WebGpuBackdropBlendCompositor.js +494 -0
  203. package/dist/esm/rendering/webgpu/WebGpuBackdropBlendCompositor.js.map +1 -0
  204. package/dist/esm/rendering/webgpu/WebGpuBackend.d.ts +27 -0
  205. package/dist/esm/rendering/webgpu/WebGpuBackend.d.ts.map +1 -1
  206. package/dist/esm/rendering/webgpu/WebGpuBackend.js +157 -60
  207. package/dist/esm/rendering/webgpu/WebGpuBackend.js.map +1 -1
  208. package/dist/esm/rendering/webgpu/WebGpuBlendState.d.ts.map +1 -1
  209. package/dist/esm/rendering/webgpu/WebGpuBlendState.js +5 -29
  210. package/dist/esm/rendering/webgpu/WebGpuBlendState.js.map +1 -1
  211. package/dist/esm/rendering/webgpu/WebGpuMaskCompositor.d.ts +2 -0
  212. package/dist/esm/rendering/webgpu/WebGpuMaskCompositor.d.ts.map +1 -1
  213. package/dist/esm/rendering/webgpu/WebGpuMaskCompositor.js +2 -1
  214. package/dist/esm/rendering/webgpu/WebGpuMaskCompositor.js.map +1 -1
  215. package/dist/esm/rendering/webgpu/WebGpuMeshRenderer.d.ts +4 -0
  216. package/dist/esm/rendering/webgpu/WebGpuMeshRenderer.d.ts.map +1 -1
  217. package/dist/esm/rendering/webgpu/WebGpuMeshRenderer.js +3 -1
  218. package/dist/esm/rendering/webgpu/WebGpuMeshRenderer.js.map +1 -1
  219. package/dist/esm/rendering/webgpu/WebGpuNineSliceSpriteRenderer.d.ts +2 -0
  220. package/dist/esm/rendering/webgpu/WebGpuNineSliceSpriteRenderer.d.ts.map +1 -1
  221. package/dist/esm/rendering/webgpu/WebGpuNineSliceSpriteRenderer.js +2 -1
  222. package/dist/esm/rendering/webgpu/WebGpuNineSliceSpriteRenderer.js.map +1 -1
  223. package/dist/esm/rendering/webgpu/WebGpuPassCoordinator.d.ts +8 -0
  224. package/dist/esm/rendering/webgpu/WebGpuPassCoordinator.d.ts.map +1 -1
  225. package/dist/esm/rendering/webgpu/WebGpuPassCoordinator.js +20 -0
  226. package/dist/esm/rendering/webgpu/WebGpuPassCoordinator.js.map +1 -1
  227. package/dist/esm/rendering/webgpu/WebGpuRepeatingSpriteRenderer.d.ts +6 -0
  228. package/dist/esm/rendering/webgpu/WebGpuRepeatingSpriteRenderer.d.ts.map +1 -1
  229. package/dist/esm/rendering/webgpu/WebGpuRepeatingSpriteRenderer.js +4 -1
  230. package/dist/esm/rendering/webgpu/WebGpuRepeatingSpriteRenderer.js.map +1 -1
  231. package/dist/esm/rendering/webgpu/WebGpuSpriteRenderer.d.ts +2 -0
  232. package/dist/esm/rendering/webgpu/WebGpuSpriteRenderer.d.ts.map +1 -1
  233. package/dist/esm/rendering/webgpu/WebGpuSpriteRenderer.js +2 -1
  234. package/dist/esm/rendering/webgpu/WebGpuSpriteRenderer.js.map +1 -1
  235. package/dist/esm/rendering/webgpu/WebGpuStencilClipper.d.ts +2 -0
  236. package/dist/esm/rendering/webgpu/WebGpuStencilClipper.d.ts.map +1 -1
  237. package/dist/esm/rendering/webgpu/WebGpuStencilClipper.js +2 -1
  238. package/dist/esm/rendering/webgpu/WebGpuStencilClipper.js.map +1 -1
  239. package/dist/esm/rendering/webgpu/WebGpuTextRenderer.d.ts +2 -0
  240. package/dist/esm/rendering/webgpu/WebGpuTextRenderer.d.ts.map +1 -1
  241. package/dist/esm/rendering/webgpu/WebGpuTextRenderer.js +3 -2
  242. package/dist/esm/rendering/webgpu/WebGpuTextRenderer.js.map +1 -1
  243. package/dist/esm/rendering/webgpu/WebGpuTransformStorage.d.ts +3 -1
  244. package/dist/esm/rendering/webgpu/WebGpuTransformStorage.d.ts.map +1 -1
  245. package/dist/esm/rendering/webgpu/WebGpuTransformStorage.js +29 -5
  246. package/dist/esm/rendering/webgpu/WebGpuTransformStorage.js.map +1 -1
  247. package/dist/esm/resources/Loader.d.ts +13 -0
  248. package/dist/esm/resources/Loader.d.ts.map +1 -1
  249. package/dist/esm/resources/Loader.js +67 -7
  250. package/dist/esm/resources/Loader.js.map +1 -1
  251. package/dist/esm/resources/coreAssetBindings.d.ts +11 -0
  252. package/dist/esm/resources/coreAssetBindings.d.ts.map +1 -1
  253. package/dist/esm/resources/coreAssetBindings.js +10 -2
  254. package/dist/esm/resources/coreAssetBindings.js.map +1 -1
  255. package/dist/esm/ui/ScrollContainer.d.ts +63 -0
  256. package/dist/esm/ui/ScrollContainer.d.ts.map +1 -0
  257. package/dist/esm/ui/ScrollContainer.js +99 -0
  258. package/dist/esm/ui/ScrollContainer.js.map +1 -0
  259. package/dist/esm/ui/Tooltip.d.ts +67 -0
  260. package/dist/esm/ui/Tooltip.d.ts.map +1 -0
  261. package/dist/esm/ui/Tooltip.js +133 -0
  262. package/dist/esm/ui/Tooltip.js.map +1 -0
  263. package/dist/esm/ui/index.d.ts +4 -0
  264. package/dist/esm/ui/index.d.ts.map +1 -1
  265. package/dist/exo.debug.esm.js +1 -1
  266. package/dist/exo.debug.esm.js.map +1 -1
  267. package/dist/exo.esm.js +1 -1
  268. package/dist/exo.esm.js.map +1 -1
  269. package/dist/exo.iife.js +45273 -0
  270. package/dist/exo.iife.js.map +1 -0
  271. package/dist/exo.iife.min.js +2 -0
  272. package/dist/exo.iife.min.js.map +1 -0
  273. package/package.json +15 -3
  274. package/dist/esm/rendering/Camera.d.ts +0 -34
  275. package/dist/esm/rendering/Camera.d.ts.map +0 -1
  276. package/dist/esm/rendering/Camera.js +0 -38
  277. package/dist/esm/rendering/Camera.js.map +0 -1
package/CHANGELOG.md CHANGED
@@ -4,6 +4,189 @@ 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.1] - 2026-07-04
8
+
9
+ Bugfix release. Twelve engine defects back-ported from the v0.16 line —
10
+ notably several long-standing collision-detection and vector-math errors
11
+ that affect physics-adjacent code.
12
+
13
+ ### Fixed
14
+
15
+ - **Collision: circle-vs-polygon false negatives.** `Collision.intersects.circlePoly`
16
+ used a sign-inverted frame transform, so circles deep inside a polygon or
17
+ overlapping most of its edges/vertices were reported as _not_ intersecting;
18
+ a second defect in the right-Voronoi exclusion measured the distance to the
19
+ wrong vertex. Both now mirror the (correct) `Collision.resolve.polygonCircle`.
20
+ - **Collision: circle-vs-circle MTV magnitude.** `Collision.resolve.circleCircle`
21
+ scaled the _unnormalized_ center delta by the overlap, making `projectionV`'s
22
+ magnitude `distance × overlap` instead of `overlap` as documented (and as
23
+ every other resolver computes it).
24
+ - **Positioned polygons.** `Polygon.project()` and `Polygon.contains()` (via
25
+ `Collision.intersects.pointPoly`) ignored the polygon's `x`/`y` position, so
26
+ every SAT path and point containment test was wrong for polygons placed via
27
+ their position instead of baked-in point coordinates.
28
+ - **Vector angle convention.** The `angle` getter measured from the positive
29
+ Y-axis (`atan2(x, y)`) while the angle/length setters and `PolarVector` use
30
+ the standard X-axis convention. The getter now returns `atan2(y, x)`: setting
31
+ `angle` rotates as documented, setting `length` preserves direction, and
32
+ `PolarVector.fromVector(v).toVector()` round-trips again.
33
+ - **`ObservableVector.angle`/`length` accessors.** Setter-only overrides
34
+ shadowed the inherited getters, so reads returned `undefined` and the setters
35
+ NaNed the vector. The getters are now declared alongside the overrides.
36
+ - **Text: justify with monospace fonts.** `align: 'justify'` detected word
37
+ boundaries by comparing glyph advances against the space glyph, which breaks
38
+ down when every glyph shares the same advance. Boundaries are now detected
39
+ from the characters themselves.
40
+ - **Root-absolute sub-asset paths.** The BmFont page, Tiled TMJ→TSJ→image, and
41
+ Aseprite sheet-image resolvers stripped the leading slash from root-absolute
42
+ bases, so sub-assets 404ed when an app was deployed under a sub-path.
43
+ - **Anchored sprites across texture-frame changes.** `AnimatedSprite` kept a
44
+ stale pixel origin when switching from the full atlas to a frame (rendering
45
+ far off-canvas), and origins were derived from world bounds, double-applying
46
+ scale when the anchor was set after transforming. Origins now re-derive from
47
+ local bounds on frame changes.
48
+ - **Debug layers invisible.** `BoundingBoxesLayer`, `HitTestLayer`,
49
+ `PerformanceLayer`, and `RenderPassInspectorLayer` built colors with 0..1
50
+ components where `Color` expects 0..255, drawing black-on-black.
51
+ - **Shape outline gaps.** Stroked `Graphics` primitives (`drawRectangle`,
52
+ `drawCircle`, …) never stroked the closing segment, leaving every outline
53
+ visibly open at its start corner.
54
+ - **Spatializable position setter.** `Voice.position` now accepts any `{ x, y }`
55
+ point (values are copied), matching the documented usage for moving a live
56
+ spatial voice.
57
+
58
+ ## [0.15.0] - 2026-07-02
59
+
60
+ The rendering-views and audio-effects release. Core's render surface is
61
+ reworked around `View` (folding in `Camera`), a scoped `PassContext` that
62
+ stops pass callbacks from leaking state across targets, and multi-view
63
+ viewport parity between WebGL2 and WebGPU (split-screen, picture-in-picture,
64
+ minimaps). `@codexo/exojs-audio-fx` gains ten new insert effects and a
65
+ flagship-hardened `BeatDetector` (correct tempo tracking across 50–300 BPM,
66
+ 92–99% recall, 1–4 ms beat offsets). `@codexo/exojs-ldtk`, `-aseprite`, and
67
+ `-tiled` reach format completeness (multi-world LDtk, Aseprite frame
68
+ direction/repeat/slices, structured Tiled/LDtk property values). This is a
69
+ pre-1.0 release and includes intentional breaking changes; see **Changed**
70
+ and **Removed**.
71
+
72
+ ### Added
73
+
74
+ - **View API.** `View.from(options)` (`center`/`size`/`viewport`/`rotation`/
75
+ `zoom`) and a fluent `View.setViewport(x, y, w, h)` using SFML-style
76
+ normalized (0..1) viewport rectangles, enabling split-screen,
77
+ picture-in-picture, and minimap compositions (#217).
78
+ - **Scoped pass context.** `DrawContext` and `PassContext` give a pass
79
+ callback a read-only `target`/`view` and route `clear`/`render`/`renderTo`/
80
+ `draw*` through the owning `RenderingContext`, so a callback can no longer
81
+ reset the active view or leak draws onto another target (#217).
82
+ - **`@codexo/exojs-audio-fx` — ten new insert effects.** Native:
83
+ `DistortionEffect`, `PhaserEffect`, `FlangerEffect`, `TremoloEffect`
84
+ (auto-pan), `PingPongDelayEffect`, `LimiterEffect`, `AutoWahEffect`,
85
+ `RingModulatorEffect`, `ConvolutionEffect` (real impulse-response
86
+ convolution via `ConvolverNode`). Worklet: `BitCrusherEffect`. Each follows
87
+ the dry/wet-gain, bypass-until-ready, ramped-setter template (#219, #221).
88
+ - **`WorkletEffect` dry/wet gain-staging primitive.** Dry/wet fan-out and a
89
+ `wet` getter/setter move into the `WorkletEffect` base class, plus
90
+ dry-latency compensation (a dry-path `DelayNode` time-aligned to each
91
+ worklet's algorithmic latency); `PitchShiftEffect`, `GranularEffect`, and
92
+ `VocoderEffect` migrate to emit pure wet through the shared base (#220).
93
+ - **`PitchShiftEffect` SOLA algorithm** replacing the previous approach, with
94
+ acoustic-contract tests across the worklet effects (#218).
95
+ - **`BeatDetector` flagship hardening.** Octave-error fix (mean-subtracted
96
+ ACF, log-Gaussian metric prior, subdivision-aware super-harmonic penalty,
97
+ and 3:2/2:3 hysteresis), adaptive onset detection, a bounded PLL phase
98
+ tracker, dual fast/stable tempo windows, and provisional/locked beat
99
+ states. Correct tempo across 50–300 BPM (previously locked to a
100
+ sub-harmonic above ~90 BPM), recall 92–99% (previously 11–42%), beat
101
+ offsets 1–4 ms. A seeded synthetic testbench and committed golden baseline
102
+ make the detector objectively measurable (#221).
103
+ - **`AnimatedSprite.repeat`** — finite N-cycle playback (`-1` loops
104
+ indefinitely, `1` plays once, `N` plays exactly N cycles), replacing
105
+ `loop: boolean`. Aseprite `direction` (pingpong/reverse) frame expansion,
106
+ `slices` exposure, per-frame `frameDurations` (hold-frame timing), and
107
+ `frameOffsets` (trim/`spriteSourceSize` anchoring) (#222).
108
+ - **LDtk format completeness.** External `.ldtkl` level resolution, IntGrid
109
+ value exposure, level `fieldInstances`, entity pivot correction, and
110
+ multi-world support (`worlds[]` flattened with an `ldtkWorldIid` tag,
111
+ single-world docs unaffected) (#222).
112
+ - **Structured `TilePropertyValue` variants** (Point/EntityRef/Tile) for LDtk
113
+ fields and Tiled `object`/`class`-typed custom properties, previously
114
+ dropped or left untagged (#222).
115
+ - **`WheelJoint` suspension-travel limit** (`enableLimit`/`lowerTranslation`/
116
+ `upperTranslation`), matching `PrismaticJoint`'s existing limit (#224).
117
+ - **React `useSignal` hook** bridges an engine `Signal` into React via
118
+ `useSyncExternalStore`; `ExoCanvas`/`useExoApplication` gain an `onError`
119
+ counterpart to `onReady`, wired to `Application.onError` (#224).
120
+ - **WebGPU CI lane** now runs against Mesa lavapipe (a real Vulkan software
121
+ rasterizer) as a required, blocking check, with real GPU-side pixel
122
+ readback and a WGSL compile-coverage test mirroring the existing GLSL one
123
+ (#222).
124
+
125
+ ### Changed
126
+
127
+ - **BREAKING — `Camera` folded into `View`.** The `Camera` class is removed;
128
+ `RenderingContext.camera` becomes `RenderingContext.view` (the `view` alias
129
+ is gone). `screenView` is unchanged (#217).
130
+ - **BREAKING — `CallbackRenderPass` callbacks receive a `PassContext`**
131
+ instead of the raw `RenderingContext`. The previous allocating `renderTo`
132
+ is renamed `capture()`; a new caller-owned `renderTo` (accepting `target`,
133
+ `view`, and `clear`) and coordinator-routed `context.clear(color)` are
134
+ added (#217).
135
+ - **Graphics fill is now opt-in.** `drawRectangle`/`drawCircle`/etc. no
136
+ longer build a hidden opaque-black fill mesh by default — outline-only
137
+ shapes stop silently painting a fill (#217).
138
+ - **Multi-view viewport parity.** WebGL2 partial top-left viewports
139
+ (split-screen/picture-in-picture/minimap) no longer land at the wrong edge
140
+ (GL's viewport origin is bottom-left); WebGPU's pass coordinator now
141
+ applies the active view's viewport to match. Any view used in a render
142
+ ticks its follow/shake automatically next frame — `trackView`/`untrackView`
143
+ are now only an escape hatch (#217).
144
+ - **Raw `console.*` calls routed through the DEV-gated logger.**
145
+ `Tween`/`Application`/`SceneManager`/`HTMLText` warnings and errors go
146
+ through `logger`/`warnOnce` instead of `console.*`, so they no longer ship
147
+ in production builds (#216).
148
+ - **`LimiterEffect.ratio`/`.knee`** are now configurable, matching sibling
149
+ `CompressorEffect` (defaults unchanged) (#224).
150
+ - **German (`de/`) locale pages** render the real English content directly
151
+ instead of a "translation coming soon" stub (#224).
152
+
153
+ ### Removed
154
+
155
+ - **BREAKING — `PhysicsWorldOptions.interpolation` and
156
+ `BindingOptions.drive: 'node-to-body'`** — both were documented as
157
+ "reserved, no effect yet" and referenced nowhere (#224).
158
+
159
+ ### Fixed
160
+
161
+ - **WebGL2 text rendering.** `WebGl2TextRenderer` bypassed the backend's
162
+ texture-unit cache when binding its node-data texture; when text rendered
163
+ first in a frame the atlas bound to the wrong unit and every glyph went
164
+ transparent (#215).
165
+ - **Gamepad input froze after connect.** `InputManager.updateGamepads` never
166
+ re-read `navigator.getGamepads()` for already-connected pads; button/axis
167
+ state is now polled fresh every frame (#215).
168
+ - **WebGPU shader filters rendered a black screen** (`crt-scanlines`,
169
+ `chromatic-aberration`) when the canvas' preferred texture format differed
170
+ from the filter's offscreen `rgba8unorm` output — `WebGpuShaderFilter`
171
+ cached its pipeline against whichever format was bound at first use instead
172
+ of its own output texture's format (#226).
173
+ - Audio-fx ducking logged a spurious `setTargetAtTime` out-of-range warning
174
+ every frame; its attack/release params are `[0,1]` smoothing coefficients,
175
+ not times (#215).
176
+ - Several playground examples (svg-drawable, trail-feedback,
177
+ tiled-physics-actor) fixed: a 0×0 rasterized SVG texture, a render-target
178
+ feedback loop, and a broken relative import in the playground's import map
179
+ (#215).
180
+
181
+ ### Docs
182
+
183
+ - Audio effects guide extended with all ten effects added in #218–#221;
184
+ README quickstart switched to the `load()` lifecycle hook (#223).
185
+ - Guide coverage catch-up: the full 18-mode W3C blend suite, `Tooltip`/
186
+ `ScrollContainer` widgets, loader progress signals and `Logger`, live
187
+ `sizingMode`/`clearColor`, `cullArea`, `fixedUpdate`/`frameAlpha`, and the
188
+ IIFE/CDN bundle path (#225).
189
+
7
190
  ## [0.14.0] - 2026-06-26
8
191
 
9
192
  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"}