excalibur 0.33.0-alpha.26 → 0.33.0-alpha.262

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 (337) hide show
  1. package/.gitmodules +3 -0
  2. package/.nvmrc +1 -1
  3. package/CHANGELOG.md +186 -8
  4. package/build/{dist → esm}/actions/action/move-by.d.ts +1 -4
  5. package/build/{dist → esm}/actions/action/move-to.d.ts +1 -4
  6. package/build/{dist → esm}/actions/action/rotate-by.d.ts +9 -3
  7. package/build/{dist → esm}/actions/action-context.d.ts +9 -43
  8. package/build/{dist → esm}/actions/actions-component.d.ts +3 -41
  9. package/build/{dist → esm}/actions/index.d.ts +0 -2
  10. package/build/{dist → esm}/actor.d.ts +32 -30
  11. package/build/{dist → esm}/camera.d.ts +13 -10
  12. package/build/{dist → esm}/collision/body-component.d.ts +38 -20
  13. package/build/{dist → esm}/collision/bounding-box.d.ts +3 -10
  14. package/build/{dist → esm}/collision/collider-component.d.ts +80 -4
  15. package/build/{dist → esm}/collision/colliders/circle-collider.d.ts +8 -0
  16. package/build/{dist → esm}/collision/colliders/closest-line-jump-table.d.ts +1 -1
  17. package/build/{dist → esm}/collision/colliders/collider.d.ts +7 -1
  18. package/build/{dist/collision/colliders/shape.d.ts → esm/collision/colliders/colliders.d.ts} +50 -0
  19. package/build/{dist → esm}/collision/colliders/collision-jump-table.d.ts +2 -1
  20. package/build/{dist → esm}/collision/colliders/composite-collider.d.ts +3 -2
  21. package/build/{dist → esm}/collision/colliders/edge-collider.d.ts +25 -1
  22. package/build/{dist → esm}/collision/colliders/polygon-collider.d.ts +23 -0
  23. package/build/esm/collision/colliders/sat-shape.d.ts +27 -0
  24. package/build/{dist → esm}/collision/colliders/separating-axis.d.ts +11 -6
  25. package/build/{dist → esm}/collision/collision-system.d.ts +5 -0
  26. package/build/{dist → esm}/collision/detection/collision-contact.d.ts +6 -0
  27. package/build/{dist → esm}/collision/detection/dynamic-tree.d.ts +9 -11
  28. package/build/{dist → esm}/collision/detection/pair.d.ts +9 -0
  29. package/build/{dist → esm}/collision/detection/quad-tree.d.ts +2 -2
  30. package/build/{dist → esm}/collision/detection/sparse-hash-grid-collision-processor.d.ts +7 -2
  31. package/build/{dist → esm}/collision/detection/sparse-hash-grid.d.ts +11 -3
  32. package/build/{dist → esm}/collision/group/collision-group-manager.d.ts +1 -1
  33. package/build/{dist → esm}/collision/index.d.ts +2 -1
  34. package/build/{dist → esm}/collision/physics-config.d.ts +7 -0
  35. package/build/{dist → esm}/collision/physics-world.d.ts +34 -33
  36. package/build/esm/collision/solver/realistic-solver.d.ts +50 -0
  37. package/build/{dist → esm}/collision/solver/solver.d.ts +4 -2
  38. package/build/{dist → esm}/color.d.ts +42 -2
  39. package/build/{dist → esm}/debug/debug-config.d.ts +16 -0
  40. package/build/{dist → esm}/director/director.d.ts +13 -8
  41. package/build/{dist → esm}/director/slide.d.ts +2 -2
  42. package/build/{dist → esm}/director/transition.d.ts +1 -4
  43. package/build/{dist → esm}/engine.d.ts +58 -8
  44. package/build/{dist → esm}/entity-component-system/component.d.ts +7 -1
  45. package/build/{dist → esm}/entity-component-system/components/motion-component.d.ts +1 -0
  46. package/build/esm/entity-component-system/components/pause-component.d.ts +11 -0
  47. package/build/{dist → esm}/entity-component-system/components/tags-component.d.ts +1 -0
  48. package/build/{dist → esm}/entity-component-system/components/transform-component.d.ts +24 -0
  49. package/build/{dist → esm}/entity-component-system/entity.d.ts +0 -10
  50. package/build/{dist → esm}/entity-component-system/index.d.ts +1 -1
  51. package/build/{dist → esm}/entity-component-system/query.d.ts +1 -1
  52. package/build/{dist → esm}/entity-component-system/system.d.ts +7 -0
  53. package/build/{dist → esm}/entity-component-system/world.d.ts +1 -5
  54. package/build/{dist → esm}/events/media-events.d.ts +2 -2
  55. package/build/{dist → esm}/events.d.ts +22 -2
  56. package/build/esm/excalibur.development.js +36938 -33946
  57. package/build/esm/excalibur.js +36938 -33946
  58. package/build/esm/excalibur.min.development.js +18202 -23031
  59. package/build/esm/excalibur.min.js +18202 -23031
  60. package/build/{dist → esm}/graphics/animation.d.ts +15 -5
  61. package/build/{dist → esm}/graphics/context/circle-renderer/circle-renderer.d.ts +5 -0
  62. package/build/{dist → esm}/graphics/context/debug-text.d.ts +13 -1
  63. package/build/{dist → esm}/graphics/context/excalibur-graphics-context-2d-canvas.d.ts +13 -3
  64. package/build/{dist → esm}/graphics/context/excalibur-graphics-context-webgl.d.ts +43 -6
  65. package/build/{dist → esm}/graphics/context/excalibur-graphics-context.d.ts +108 -4
  66. package/build/esm/graphics/context/framebuffer.d.ts +154 -0
  67. package/build/esm/graphics/context/glsl.d.ts +47 -0
  68. package/build/{dist → esm}/graphics/context/material-renderer/material-renderer.d.ts +1 -0
  69. package/build/esm/graphics/context/material.d.ts +208 -0
  70. package/build/esm/graphics/context/shader-pipeline/effects/bloom-effect.d.ts +80 -0
  71. package/build/esm/graphics/context/shader-pipeline/effects/blur-passes.d.ts +75 -0
  72. package/build/esm/graphics/context/shader-pipeline/effects/glow-passes.d.ts +93 -0
  73. package/build/esm/graphics/context/shader-pipeline/shader-pass.d.ts +138 -0
  74. package/build/esm/graphics/context/shader-pipeline/shader-pipeline.d.ts +91 -0
  75. package/build/{dist → esm}/graphics/context/shader.d.ts +43 -6
  76. package/build/{dist → esm}/graphics/context/texture-loader.d.ts +1 -1
  77. package/build/{dist → esm}/graphics/context/webgl-util.d.ts +2 -2
  78. package/build/{dist → esm}/graphics/debug-graphics-component.d.ts +1 -0
  79. package/build/{dist → esm}/graphics/filtering.d.ts +1 -1
  80. package/build/{dist → esm}/graphics/font-common.d.ts +2 -2
  81. package/build/{dist → esm}/graphics/font-text-instance.d.ts +29 -8
  82. package/build/{dist → esm}/graphics/font.d.ts +4 -3
  83. package/build/{dist → esm}/graphics/graphics-component.d.ts +80 -15
  84. package/build/{dist → esm}/graphics/graphics-group.d.ts +6 -0
  85. package/build/{dist → esm}/graphics/image-source.d.ts +2 -1
  86. package/build/{dist → esm}/graphics/index.d.ts +8 -0
  87. package/build/{dist → esm}/graphics/parallax-component.d.ts +1 -0
  88. package/build/{dist → esm}/graphics/post-processor/color-blindness-post-processor.d.ts +3 -5
  89. package/build/esm/graphics/post-processor/post-processor.d.ts +66 -0
  90. package/build/esm/graphics/post-processor/shader-pipeline-post-processor.d.ts +45 -0
  91. package/build/{dist → esm}/graphics/sprite-font.d.ts +3 -3
  92. package/build/{dist → esm}/index.d.ts +7 -5
  93. package/build/{dist → esm}/input/gamepad.d.ts +4 -7
  94. package/build/{dist → esm}/input/keyboard.d.ts +3 -3
  95. package/build/{dist → esm}/input/pointer-component.d.ts +1 -0
  96. package/build/{dist → esm}/input/pointer-event-receiver.d.ts +3 -0
  97. package/build/{dist → esm}/label.d.ts +2 -2
  98. package/build/esm/lighting/cone-light-component.d.ts +47 -0
  99. package/build/esm/lighting/darkness-component.d.ts +34 -0
  100. package/build/esm/lighting/flicker-options.d.ts +17 -0
  101. package/build/esm/lighting/flicker-system.d.ts +19 -0
  102. package/build/esm/lighting/index.d.ts +8 -0
  103. package/build/esm/lighting/light-occluder-component.d.ts +66 -0
  104. package/build/esm/lighting/lighting-config.d.ts +47 -0
  105. package/build/esm/lighting/lighting-system.d.ts +153 -0
  106. package/build/esm/lighting/point-light-component.d.ts +46 -0
  107. package/build/{dist → esm}/math/affine-matrix.d.ts +8 -1
  108. package/build/esm/math/coord-plane.d.ts +52 -0
  109. package/build/{dist → esm}/math/graph.d.ts +14 -3
  110. package/build/{dist → esm}/math/index.d.ts +2 -0
  111. package/build/{dist → esm}/math/line-segment.d.ts +1 -1
  112. package/build/{dist → esm}/math/matrix.d.ts +25 -0
  113. package/build/{dist → esm}/math/ray.d.ts +1 -1
  114. package/build/{dist → esm}/math/transform.d.ts +9 -0
  115. package/build/{dist → esm}/math/vector.d.ts +16 -13
  116. package/build/esm/math/vector3.d.ts +163 -0
  117. package/build/esm/math/vector4.d.ts +157 -0
  118. package/build/{dist → esm}/particles/gpu-particle-emitter.d.ts +2 -2
  119. package/build/{dist → esm}/particles/particle-emitter.d.ts +2 -2
  120. package/build/{dist → esm}/particles/particles.d.ts +8 -2
  121. package/build/esm/plugin.d.ts +253 -0
  122. package/build/{dist → esm}/resources/resource.d.ts +8 -0
  123. package/build/{dist → esm}/resources/sound/sound-manager.d.ts +1 -1
  124. package/build/{dist → esm}/resources/sound/sound.d.ts +5 -1
  125. package/build/{dist → esm}/scene.d.ts +18 -6
  126. package/build/{dist → esm}/screen-element.d.ts +2 -2
  127. package/build/{dist → esm}/screen.d.ts +97 -29
  128. package/build/{dist → esm}/tile-map/isometric-entity-component.d.ts +1 -0
  129. package/build/{dist → esm}/tile-map/isometric-map.d.ts +0 -10
  130. package/build/{dist → esm}/tile-map/tile-map.d.ts +13 -0
  131. package/build/{dist → esm}/timer.d.ts +5 -8
  132. package/build/{dist/util/pool.d.ts → esm/util/arena-pool.d.ts} +15 -4
  133. package/build/{dist → esm}/util/browser.d.ts +8 -0
  134. package/build/{dist → esm}/util/detector.d.ts +1 -1
  135. package/build/{dist → esm}/util/draw-util.d.ts +2 -2
  136. package/build/{dist → esm}/util/index.d.ts +1 -1
  137. package/build/esm/util/pause-system.d.ts +18 -0
  138. package/build/{dist → esm}/util/rental-pool.d.ts +1 -0
  139. package/build/esm/util/serializer.d.ts +128 -0
  140. package/build/{dist → esm}/util/sound.d.ts +1 -0
  141. package/build/{dist → esm}/util/state-machine.d.ts +1 -1
  142. package/build/esm/util/string.d.ts +6 -0
  143. package/eslint.config.mjs +4 -10
  144. package/package.json +41 -49
  145. package/vite.config.common.js +1 -1
  146. package/vite.config.ts +3 -2
  147. package/vitest.config.ts +4 -4
  148. package/.devcontainer/devcontainer.json +0 -26
  149. package/.husky/pre-commit +0 -1
  150. package/build/dist/collision/solver/realistic-solver.d.ts +0 -28
  151. package/build/dist/entity-component-system/tag-query.d.ts +0 -28
  152. package/build/dist/excalibur.development.js +0 -34200
  153. package/build/dist/excalibur.js +0 -34200
  154. package/build/dist/excalibur.min.development.js +0 -931
  155. package/build/dist/excalibur.min.js +0 -931
  156. package/build/dist/graphics/context/material.d.ts +0 -102
  157. package/build/dist/graphics/context/render-source.d.ts +0 -7
  158. package/build/dist/graphics/context/render-target.d.ts +0 -60
  159. package/build/dist/graphics/post-processor/post-processor.d.ts +0 -36
  160. package/build/dist/math/coord-plane.d.ts +0 -15
  161. package/build/dist/util/decorators.d.ts +0 -15
  162. package/build/dist/util/easing-functions.d.ts +0 -89
  163. package/deno.json +0 -10
  164. package/playground/README.md +0 -71
  165. package/playground/index.html +0 -75
  166. package/playground/package-lock.json +0 -1954
  167. package/playground/package.json +0 -27
  168. package/playground/public/favicon.ico +0 -0
  169. package/playground/public/icon.png +0 -0
  170. package/playground/public/logo-white@2x.png +0 -0
  171. package/playground/public/logo@2x.png +0 -0
  172. package/playground/public/player-run.png +0 -0
  173. package/playground/public/rpg-audio/License.txt +0 -21
  174. package/playground/public/rpg-audio/audio/handleCoins.ogg +0 -0
  175. package/playground/public/social.jpg +0 -0
  176. package/playground/public/social.png +0 -0
  177. package/playground/public/tiny-town/License.txt +0 -22
  178. package/playground/public/tiny-town/tilemap/tilemap.png +0 -0
  179. package/playground/tsconfig.json +0 -26
  180. package/playground/tsdown.config.ts +0 -13
  181. package/playground/vite.config.ts +0 -5
  182. /package/build/{dist → esm}/actions/action/action-sequence.d.ts +0 -0
  183. /package/build/{dist → esm}/actions/action/blink.d.ts +0 -0
  184. /package/build/{dist → esm}/actions/action/call-method.d.ts +0 -0
  185. /package/build/{dist → esm}/actions/action/curve-by.d.ts +0 -0
  186. /package/build/{dist → esm}/actions/action/curve-to.d.ts +0 -0
  187. /package/build/{dist → esm}/actions/action/delay.d.ts +0 -0
  188. /package/build/{dist → esm}/actions/action/die.d.ts +0 -0
  189. /package/build/{dist → esm}/actions/action/ease-by.d.ts +0 -0
  190. /package/build/{dist → esm}/actions/action/ease-to.d.ts +0 -0
  191. /package/build/{dist → esm}/actions/action/fade.d.ts +0 -0
  192. /package/build/{dist → esm}/actions/action/flash.d.ts +0 -0
  193. /package/build/{dist → esm}/actions/action/follow.d.ts +0 -0
  194. /package/build/{dist → esm}/actions/action/meet.d.ts +0 -0
  195. /package/build/{dist → esm}/actions/action/parallel-actions.d.ts +0 -0
  196. /package/build/{dist → esm}/actions/action/repeat-forever.d.ts +0 -0
  197. /package/build/{dist → esm}/actions/action/repeat.d.ts +0 -0
  198. /package/build/{dist → esm}/actions/action/rotate-to.d.ts +0 -0
  199. /package/build/{dist → esm}/actions/action/scale-by.d.ts +0 -0
  200. /package/build/{dist → esm}/actions/action/scale-to.d.ts +0 -0
  201. /package/build/{dist → esm}/actions/action-queue.d.ts +0 -0
  202. /package/build/{dist → esm}/actions/action.d.ts +0 -0
  203. /package/build/{dist → esm}/actions/actionable.d.ts +0 -0
  204. /package/build/{dist → esm}/actions/actions-system.d.ts +0 -0
  205. /package/build/{dist → esm}/collision/collision-type.d.ts +0 -0
  206. /package/build/{dist → esm}/collision/detection/collision-processor.d.ts +0 -0
  207. /package/build/{dist → esm}/collision/detection/dynamic-tree-collision-processor.d.ts +0 -0
  208. /package/build/{dist → esm}/collision/detection/ray-cast-hit.d.ts +0 -0
  209. /package/build/{dist → esm}/collision/detection/ray-cast-options.d.ts +0 -0
  210. /package/build/{dist → esm}/collision/detection/spatial-partition-strategy.d.ts +0 -0
  211. /package/build/{dist → esm}/collision/group/collision-group.d.ts +0 -0
  212. /package/build/{dist → esm}/collision/integrator.d.ts +0 -0
  213. /package/build/{dist → esm}/collision/island.d.ts +0 -0
  214. /package/build/{dist → esm}/collision/motion-system.d.ts +0 -0
  215. /package/build/{dist → esm}/collision/side.d.ts +0 -0
  216. /package/build/{dist → esm}/collision/solver/arcade-solver.d.ts +0 -0
  217. /package/build/{dist → esm}/collision/solver/contact-bias.d.ts +0 -0
  218. /package/build/{dist → esm}/collision/solver/contact-constraint-point.d.ts +0 -0
  219. /package/build/{dist → esm}/collision/solver-strategy.d.ts +0 -0
  220. /package/build/{dist → esm}/context.d.ts +0 -0
  221. /package/build/{dist → esm}/debug/debug-flags.d.ts +0 -0
  222. /package/build/{dist → esm}/debug/debug-system.d.ts +0 -0
  223. /package/build/{dist → esm}/debug/index.d.ts +0 -0
  224. /package/build/{dist → esm}/deprecated.d.ts +0 -0
  225. /package/build/{dist → esm}/director/cross-fade.d.ts +0 -0
  226. /package/build/{dist → esm}/director/default-loader.d.ts +0 -0
  227. /package/build/{dist → esm}/director/fade-in-out.d.ts +0 -0
  228. /package/build/{dist → esm}/director/index.d.ts +0 -0
  229. /package/build/{dist → esm}/director/loader.d.ts +0 -0
  230. /package/build/{dist → esm}/entity-component-system/entity-manager.d.ts +0 -0
  231. /package/build/{dist → esm}/entity-component-system/priority.d.ts +0 -0
  232. /package/build/{dist → esm}/entity-component-system/query-manager.d.ts +0 -0
  233. /package/build/{dist → esm}/entity-component-system/system-manager.d.ts +0 -0
  234. /package/build/{dist → esm}/entity-component-system/types.d.ts +0 -0
  235. /package/build/{dist → esm}/event-emitter.d.ts +0 -0
  236. /package/build/{dist → esm}/events/ex-event.d.ts +0 -0
  237. /package/build/{dist → esm}/events/pointer-events.d.ts +0 -0
  238. /package/build/{dist → esm}/excalibur.d.ts +0 -0
  239. /package/build/{dist → esm}/flags.d.ts +0 -0
  240. /package/build/{dist → esm}/garbage-collector.d.ts +0 -0
  241. /package/build/{dist → esm}/graphics/canvas.d.ts +0 -0
  242. /package/build/{dist → esm}/graphics/circle.d.ts +0 -0
  243. /package/build/{dist → esm}/graphics/context/debug-circle-renderer/debug-circle-renderer.d.ts +0 -0
  244. /package/build/{dist → esm}/graphics/context/debug-line-renderer/debug-line-renderer.d.ts +0 -0
  245. /package/build/{dist → esm}/graphics/context/debug-point-renderer/debug-point-renderer.d.ts +0 -0
  246. /package/build/{dist → esm}/graphics/context/draw-call.d.ts +0 -0
  247. /package/build/{dist → esm}/graphics/context/image-renderer/image-renderer.d.ts +0 -0
  248. /package/build/{dist → esm}/graphics/context/image-renderer-v2/image-renderer-v2.d.ts +0 -0
  249. /package/build/{dist → esm}/graphics/context/particle-renderer/particle-renderer.d.ts +0 -0
  250. /package/build/{dist → esm}/graphics/context/quad-index-buffer.d.ts +0 -0
  251. /package/build/{dist → esm}/graphics/context/rectangle-renderer/rectangle-renderer.d.ts +0 -0
  252. /package/build/{dist → esm}/graphics/context/renderer.d.ts +0 -0
  253. /package/build/{dist → esm}/graphics/context/screen-pass-painter/screen-pass-painter.d.ts +0 -0
  254. /package/build/{dist → esm}/graphics/context/state-stack.d.ts +0 -0
  255. /package/build/{dist → esm}/graphics/context/transform-stack.d.ts +0 -0
  256. /package/build/{dist → esm}/graphics/context/uniform-buffer.d.ts +0 -0
  257. /package/build/{dist → esm}/graphics/context/vertex-buffer.d.ts +0 -0
  258. /package/build/{dist → esm}/graphics/context/vertex-layout.d.ts +0 -0
  259. /package/build/{dist → esm}/graphics/debug.d.ts +0 -0
  260. /package/build/{dist → esm}/graphics/font-cache.d.ts +0 -0
  261. /package/build/{dist → esm}/graphics/graphic.d.ts +0 -0
  262. /package/build/{dist → esm}/graphics/graphics-diagnostics.d.ts +0 -0
  263. /package/build/{dist → esm}/graphics/graphics-system.d.ts +0 -0
  264. /package/build/{dist → esm}/graphics/line.d.ts +0 -0
  265. /package/build/{dist → esm}/graphics/nine-slice.d.ts +0 -0
  266. /package/build/{dist → esm}/graphics/offscreen-system.d.ts +0 -0
  267. /package/build/{dist → esm}/graphics/polygon.d.ts +0 -0
  268. /package/build/{dist → esm}/graphics/post-processor/color-blindness-mode.d.ts +0 -0
  269. /package/build/{dist → esm}/graphics/post-processor/screen-shader.d.ts +0 -0
  270. /package/build/{dist → esm}/graphics/raster.d.ts +0 -0
  271. /package/build/{dist → esm}/graphics/rectangle.d.ts +0 -0
  272. /package/build/{dist → esm}/graphics/sprite-sheet.d.ts +0 -0
  273. /package/build/{dist → esm}/graphics/sprite.d.ts +0 -0
  274. /package/build/{dist → esm}/graphics/text.d.ts +0 -0
  275. /package/build/{dist → esm}/graphics/tiled-animation.d.ts +0 -0
  276. /package/build/{dist → esm}/graphics/tiled-sprite.d.ts +0 -0
  277. /package/build/{dist → esm}/graphics/transform-interpolation.d.ts +0 -0
  278. /package/build/{dist → esm}/graphics/wrapping.d.ts +0 -0
  279. /package/build/{dist → esm}/id.d.ts +0 -0
  280. /package/build/{dist → esm}/input/capture-pointer-config.d.ts +0 -0
  281. /package/build/{dist → esm}/input/input-host.d.ts +0 -0
  282. /package/build/{dist → esm}/input/input-mapper.d.ts +0 -0
  283. /package/build/{dist → esm}/input/native-pointer-button.d.ts +0 -0
  284. /package/build/{dist → esm}/input/pointer-abstraction.d.ts +0 -0
  285. /package/build/{dist → esm}/input/pointer-button.d.ts +0 -0
  286. /package/build/{dist → esm}/input/pointer-event.d.ts +0 -0
  287. /package/build/{dist → esm}/input/pointer-events-to-object-dispatcher.d.ts +0 -0
  288. /package/build/{dist → esm}/input/pointer-scope.d.ts +0 -0
  289. /package/build/{dist → esm}/input/pointer-system.d.ts +0 -0
  290. /package/build/{dist → esm}/input/pointer-type.d.ts +0 -0
  291. /package/build/{dist → esm}/input/wheel-delta-mode.d.ts +0 -0
  292. /package/build/{dist → esm}/input/wheel-event.d.ts +0 -0
  293. /package/build/{dist → esm}/interfaces/audio-implementation.d.ts +0 -0
  294. /package/build/{dist → esm}/interfaces/audio.d.ts +0 -0
  295. /package/build/{dist → esm}/interfaces/clonable.d.ts +0 -0
  296. /package/build/{dist → esm}/interfaces/evented.d.ts +0 -0
  297. /package/build/{dist → esm}/interfaces/index.d.ts +0 -0
  298. /package/build/{dist → esm}/interfaces/lifecycle-events.d.ts +0 -0
  299. /package/build/{dist → esm}/interfaces/loadable.d.ts +0 -0
  300. /package/build/{dist → esm}/interfaces/pointer-event-handlers.d.ts +0 -0
  301. /package/build/{dist → esm}/math/bezier-curve.d.ts +0 -0
  302. /package/build/{dist → esm}/math/easings.d.ts +0 -0
  303. /package/build/{dist → esm}/math/global-coordinates.d.ts +0 -0
  304. /package/build/{dist → esm}/math/lerp.d.ts +0 -0
  305. /package/build/{dist → esm}/math/projection.d.ts +0 -0
  306. /package/build/{dist → esm}/math/random.d.ts +0 -0
  307. /package/build/{dist → esm}/math/rotation-type.d.ts +0 -0
  308. /package/build/{dist → esm}/math/util.d.ts +0 -0
  309. /package/build/{dist → esm}/math/vector-view.d.ts +0 -0
  310. /package/build/{dist → esm}/math/watch-vector.d.ts +0 -0
  311. /package/build/{dist → esm}/particles/emitter-type.d.ts +0 -0
  312. /package/build/{dist → esm}/particles/gpu-particle-renderer.d.ts +0 -0
  313. /package/build/{dist → esm}/particles/index.d.ts +0 -0
  314. /package/build/{dist → esm}/polyfill.d.ts +0 -0
  315. /package/build/{dist → esm}/resources/font.d.ts +0 -0
  316. /package/build/{dist → esm}/resources/gif.d.ts +0 -0
  317. /package/build/{dist → esm}/resources/index.d.ts +0 -0
  318. /package/build/{dist → esm}/resources/sound/audio-context.d.ts +0 -0
  319. /package/build/{dist → esm}/resources/sound/index.d.ts +0 -0
  320. /package/build/{dist → esm}/resources/sound/web-audio-instance.d.ts +0 -0
  321. /package/build/{dist → esm}/tile-map/index.d.ts +0 -0
  322. /package/build/{dist → esm}/tile-map/isometric-entity-system.d.ts +0 -0
  323. /package/build/{dist → esm}/trigger.d.ts +0 -0
  324. /package/build/{dist → esm}/util/assert.d.ts +0 -0
  325. /package/build/{dist → esm}/util/clock.d.ts +0 -0
  326. /package/build/{dist → esm}/util/coroutine.d.ts +0 -0
  327. /package/build/{dist → esm}/util/fps.d.ts +0 -0
  328. /package/build/{dist → esm}/util/future.d.ts +0 -0
  329. /package/build/{dist → esm}/util/iframe.d.ts +0 -0
  330. /package/build/{dist → esm}/util/log.d.ts +0 -0
  331. /package/build/{dist → esm}/util/observable.d.ts +0 -0
  332. /package/build/{dist → esm}/util/required.d.ts +0 -0
  333. /package/build/{dist → esm}/util/semaphore.d.ts +0 -0
  334. /package/build/{dist → esm}/util/toaster.d.ts +0 -0
  335. /package/build/{dist → esm}/util/util.d.ts +0 -0
  336. /package/build/{dist → esm}/util/watch.d.ts +0 -0
  337. /package/build/{dist → esm}/util/web-audio.d.ts +0 -0
package/.gitmodules CHANGED
@@ -0,0 +1,3 @@
1
+ [submodule "site/vendor/docusaurus-plugin-typedoc-api"]
2
+ path = site/vendor/docusaurus-plugin-typedoc-api
3
+ url = https://github.com/excaliburjs/docusaurus-plugin-typedoc-api.git
package/.nvmrc CHANGED
@@ -1 +1 @@
1
- 24.11.0
1
+ 24.16.0
package/CHANGELOG.md CHANGED
@@ -7,27 +7,198 @@ This project adheres to [Semantic Versioning](http://semver.org/).
7
7
 
8
8
  ### Breaking Changes
9
9
 
10
- -
10
+ - Behavior change - Excalibur screen space is now consistently rooted at the top-left of the safe content area (`Screen.contentArea`) across the whole API. Previously the clipping display modes (`FitScreenAndFill`, `FitContainerAndFill`, `FitScreenAndZoom`, `FitContainerAndZoom`) disagreed about where screen space started: `CoordPlane.Screen` entities and pointer events were rooted at the content area's corner, but `Screen.worldToScreenCoordinates` returned raw canvas/resolution coordinates and `Screen.contentArea.left/top` carried the canvas-space inset. Every API now shares the single content-area-rooted definition, which fixes several pointer, transition, and `unsafeArea` bugs in the clipping display modes, but is a breaking change for code that relied on the old canvas-rooted values:
11
+ - `Screen.worldToScreenCoordinates(point)` now returns coordinates rooted at the content area (previously the raw camera projection in canvas/resolution coordinates). `Screen.screenToWorldCoordinates` is the exact inverse, as before.
12
+ - `Screen.contentArea` is now always rooted at `(0, 0)`, and `Screen.unsafeArea.topLeft` is negative by the clip amount. The canvas-space inset that `contentArea.left/top` used to carry is available from the new `Screen.contentAreaOffset`.
13
+ - Display modes that never clip (`Fixed`, `FitScreen`, `FillScreen`, `FitContainer`, `FillContainer`) have a `(0, 0)` offset and are unaffected.
14
+
15
+ If you need the old canvas-rooted values, for example to position an HTML overlay over the canvas, shim them by adding `Screen.contentAreaOffset` back:
16
+
17
+ ```typescript
18
+ // Before: worldToScreenCoordinates returned canvas coordinates
19
+ const canvasPos = engine.screen.worldToScreenCoordinates(actor.pos).add(engine.screen.contentAreaOffset);
20
+
21
+ // Before: contentArea.topLeft was the safe area corner in canvas coordinates
22
+ const safeAreaCorner = engine.screen.contentAreaOffset.clone();
23
+ ```
24
+ - Behavior change - `rotateBy({angleRadiansOffset, duration})` with no `rotationType` now rotates by exactly the signed offset provided, preserving full and multiple turns, instead of taking the shortest path to the canonicalized target orientation. Offsets larger than `Math.PI` now travel in the direction of their sign (previously they rotated the shorter way around), and `2 * Math.PI` performs a full revolution (previously a no-op). Pass an explicit `rotationType` to keep path-based behavior
25
+ - Behavior change - TileMap now uses 'separate' as the `compositeStrategy` as a better default. Commonly TileMap is used to build levels, so this default aligns with the common use.
26
+ - Removed old legacy `ex.EasingFunctions` in favor of the [0, 1] common easing functions
27
+ - Removed EaseTo/EaseBy/actor.actions.(easeTo|easeBy) Action in favor of MoveTo/MoveBy/actor.actions.(moveTo|moveBy) Action with easing support
28
+ - Removed `body.sleeping` in favor of `isSleeping`
29
+ - Removed `entity.active` in favor of `isActive`
30
+ - Removed `actor.getGlobalPos()` in favor of `actor.globalPos` getter/setter
31
+ - Removed `actor.getGlobalRotation()` in favor of `actor.globalRotation` getter/setter
32
+ - Removed `actor.getGlobalScale()` in favor of `actor.globalScale` getter/setter
33
+ - Removed `BoundingBox.draw` in favor of `BoundingBox.debug`
34
+ - Removed typo in `engine.isFullScreen` now `engine.isFullscreen`
35
+ - Removed unused `tag-query.ts`
36
+ - Removed `world.queryTags`, `world.query(...)` can query tags
37
+ - Removed `Animation.durationPerFrameMs` in favor of `Animation.durationPerFrame`
38
+ - Removed `Vector.size` in favor of `Vector.magnitude`
39
+ - Behavior change - Font/Text now render more accurately and faster be using less texture space, this unfortunately is a breaking change becuase text will render slightly different.
40
+ - Breaking change - `Material.update()` now passes a `MaterialContext` to its callback instead of the composite `Shader`. The context carries the material's declarative `uniforms` dictionary (the recommended way to change values — they reach the composite shader and are forwarded to every pipeline pass), plus `shaders`/`shadersByName` for direct access to every compiled shader the material drives. Update code like `material.update(shader => shader.trySetUniformFloatVector('iMouse', pos))` to `material.update(context => context.uniforms.iMouse = pos)`
41
+ - Build: Docusaurus now throws the build on broken markdown links, broken anchors, and broken markdown images instead of warning. Any custom docs/blog content must have valid internal links, anchors, and images.
42
+ - Build: The engine `tsconfig.json` now uses `module: "esnext"` with `moduleResolution: "bundler"` (previously `module: "es2015"` / `moduleResolution: "node"`), and `downlevelIteration` has been removed. The per-package `tsconfig.json` overrides in `director`, `entity-component-system`, `graphics`, and `resources` have been removed in favor of the single engine `tsconfig.json`. Consumers importing source directly may need bundler-compatible tooling.
43
+ - Build: TypeDoc runner has been replaced by `site/scripts/gen-typedoc-api.mjs`.
11
44
 
12
45
  ### Deprecated
13
46
 
14
- -
47
+ - `ex.Pool` renamed to `ex.ArenaPool`
15
48
 
16
49
  ### Added
17
50
 
18
- -
51
+ - Added an optional `System.dispose(world, scene)` lifecycle hook, called by the `SystemManager` when a system is removed after having been initialized — use it to release resources the system provisioned in `initialize` (entities it added, observable subscriptions, etc.). The `LightingSystem` uses it to remove its provisioned overlay and unsubscribe its component queries when lighting is disabled at runtime
52
+ - Added multipass **shader pipelines** for composing shader effects that need more than one pass (blur, bloom, glow), built on an explicit source→destination dataflow with no hidden bind state:
53
+ - New `ex.Framebuffer` and `ex.MultisampleFramebuffer` primitives that are both a render destination and a texture source (`framebuffer.texture`, `framebuffer.glFramebuffer`, `framebuffer.texelSize`), with `resize()`, `clear()`, and `dispose()`. These replace the internal (never exported) `RenderTarget`/`RenderSource` classes inside the WebGL context. Reading a `MultisampleFramebuffer.texture` resolves the MSAA samples automatically.
54
+ - New `ex.ShaderPass`: applies a fragment shader to an image, framebuffer, or texture and produces a new image — the building block for custom effects. `pass.draw(source, destination)` for the simple case, or `pass.draw({ sources: { u_smaller: quarterResolution, u_larger: halfResolution }, destination, uniforms })` for multiple named sampler sources and per-draw uniforms. Convention uniforms are provided (`u_image`, `u_resolution`, `u_texelSize`, `u_time_ms`, `u_elapsed_ms`) and fragments are authored with the `glsl` tag's straight-alpha conventions.
55
+ - New `ex.ShaderPipeline` linear chain (`source → pass0 → pass1 → ... → destination`) with per-pass `scale` for downsample/upsample and `u_original` bound for composite passes. Any object implementing `ex.ShaderPipelineLike` (`process(source, destination)`) can be used instead for custom non-linear graphs.
56
+ - `ex.Material` can now run multipass pipelines, with `MaterialOptions` typed as a union so only valid combinations compile:
57
+ - `fragmentSource` only — single-pass custom shading of the graphic, exactly as before
58
+ - `passes` only — run a multipass effect (fragment strings, `ShaderPass`es, or an effect object like `BloomEffect`) on the graphic offscreen; a default passthrough composite draws the result
59
+ - `passes` + `fragmentSource` — the fragment shader becomes the **final composite**: it draws the pipeline's output (bound as `u_graphic`) on screen, which is where screen-space work like `u_screen_texture` belongs
60
+ - `padding` (with `passes`) — extra transparent source pixels around the graphic so blur/glow halos are not clipped to the quad
61
+ - the material's custom `uniforms` and built-ins (`u_opacity`, `u_color`, `u_graphic_resolution`, `u_size`) are forwarded to every pass
62
+ - `ex.PostProcessor` is now built around a single `process(source, destination)` hook (`initialize` is optional, so `ShaderPipelineLike` effect objects can be added with `addPostProcessor` directly); the legacy `getShader`/`getLayout` single-pass path still works but is deprecated for removal in v1. `ex.ShaderPipelinePostProcessor` builds a fullscreen post processor from `passes` (mirroring `Material`: a list of fragment sources/`ShaderPass`es, or a `ShaderPipelineLike` effect), chaining with other post processors in order. `ColorBlindnessPostProcessor` is now implemented on `ShaderPass` internally.
63
+ - New built-in effects usable per-graphic or fullscreen, each a `ShaderPipelineLike` object with live-tunable settings:
64
+ - `ex.BlurEffect({ graphicsContext, scale, strength })` — separable gaussian blur, animate `blur.strength` any time
65
+ - `ex.GlowEffect({ graphicsContext, color, scale, strength, intensity })` — outer glow: the graphic's silhouette is tinted, blurred, and composited back under the original (pair with `Material` `padding` so the halo has room); `color`/`strength`/`intensity` are live properties
66
+ - `ex.BloomEffect({ graphicsContext, threshold, intensity, levels })` — progressive downsample/upsample ladder bloom implemented as a custom pass graph, with live-tunable `threshold`/`intensity`
67
+ - The underlying pass factories `ex.createBlurPasses(...)`/`ex.createGlowPasses(...)` are also exported for splicing into custom pass chains
68
+
69
+ ```typescript
70
+ const blur = new ex.BlurEffect({ graphicsContext, strength: 2 });
71
+ actor.graphics.material = new ex.Material({
72
+ graphicsContext,
73
+ passes: blur,
74
+ padding: 16 // blur can bleed 16px outside the sprite without clipping
75
+ });
76
+ blur.strength = 4; // live-tunable any time
77
+
78
+ // fullscreen: effects can be added as post processors directly
79
+ game.graphicsContext.addPostProcessor(new ex.BloomEffect({ graphicsContext, threshold: 0.6 }));
80
+ ```
81
+
82
+ - Added an opt-in 2D lighting simulation, enabled with the new `lighting: true` engine option (default `false`). When enabled every scene gets a `FlickerSystem` and `LightingSystem` that render darkness veils, point/cone lights with flicker, and occluder shadows via the new `DarknessComponent`, `PointLightComponent`, `ConeLightComponent`, and `LightOccluderComponent` components. The overlay is rasterized with the 2D Canvas API and re-uploaded to the GPU every frame, which carries a performance penalty — this is why the feature is off by default. The systems can also be added manually to individual scenes with `scene.world.add(new ex.LightingSystem())` without enabling the engine option.
83
+
84
+ ```typescript
85
+ const game = new ex.Engine({ lighting: true });
86
+ const lamp = new ex.Actor({ pos: ex.vec(100, 100) });
87
+ lamp.addComponent(new ex.PointLightComponent({ color: ex.Color.fromRGB(255, 200, 80), radius: 200 }));
88
+ ```
89
+
90
+ Pass a `LightingConfig` object instead of `true` to tune the simulation's defaults — including the ambient brightness floor/color assumed everywhere a scene has no explicit `DarknessComponent` override:
91
+
92
+ ```typescript
93
+ const game = new ex.Engine({
94
+ lighting: {
95
+ enabled: true,
96
+ zIndex: 100, // z-index of the lighting overlay
97
+ cullPadding: 64, // world-pixel padding around the camera frustum when culling lights/occluders
98
+ ambientIntensity: 0.1, // ambient brightness floor (0.0 to 1.0)
99
+ ambientColor: ex.Color.fromRGB(60, 60, 200), // tints the darkness veil toward this color
100
+ tintAlphaFactor: 0.35, // fraction of a light's intensity used for its colored tint
101
+ shadowNearOpacity: 0.92, // occluder shadow opacity at the occluder's edge
102
+ shadowMidOpacity: 0.6 // occluder shadow opacity at 40% of the shadow's reach
103
+ }
104
+ });
105
+ ```
106
+
107
+ Any entity with a collider-like shape can cast a dynamic shadow by adding a `LightOccluderComponent`:
108
+
109
+ ```typescript
110
+ const crate = new ex.Actor({ pos: ex.vec(300, 200), width: 40, height: 40 });
111
+ crate.addComponent(new ex.LightOccluderComponent({ shape: { kind: 'box', width: 40, height: 40 } }));
112
+ ```
113
+ - Materials are now enumerable for debugging and tooling (like the Excalibur Dev Tools browser extension): every `Material` has a unique `material.id` and public `material.vertexSource`/`material.fragmentSource` getters, and is automatically registered with its context, retrievable via `game.graphicsContext.materials`. The registry holds materials weakly so it does not prevent garbage collection.
114
+ - Added the `ex.glsl` tagged template literal for authoring `Material` fragment shaders. It lights up GLSL syntax highlighting, adds the `#version`/`precision` boilerplate, injects the `pixel_texture()` pixel art filter on demand, and handles alpha premultiplication automatically.
115
+
116
+ Excalibur's pipeline is premultiplied end to end, which makes hand written shaders easy to get subtly wrong in both directions: introducing your own alpha without premultiplying blends too bright, and premultiplying a `texture()` sample that is already premultiplied darkens antialiased edges. Shaders written with the tag instead get a straight (un-premultiplied) alpha authoring space, so ordinary alpha math just works:
117
+
118
+ ```typescript
119
+ const material = game.graphicsContext.createMaterial({
120
+ name: 'fade',
121
+ fragmentSource: ex.glsl`
122
+ in vec2 v_uv;
123
+ uniform sampler2D u_graphic;
124
+ out vec4 fragColor;
125
+
126
+ void main() {
127
+ vec4 color = texture(u_graphic, v_uv);
128
+ color.a *= 0.5; // no manual premultiply needed
129
+ fragColor = color;
130
+ }`
131
+ });
132
+ ```
133
+
134
+ Sample non-color data with `ex_texture_raw(tex, uv)` to bypass the conversion, or add `#pragma excalibur premultiply(off)` to opt a shader out entirely.
135
+
136
+ - Added new lerp modes for color which can be chosen by aptional parameter in `Color.lerp` or by calling different methods:
137
+ ```typescript
138
+ Color.lerp(colorA, colorB, t); // 'hsl' by default
139
+ // eqivalent to:
140
+ Color.lerpHSL(colorA, colorB, t);
141
+
142
+ Color.lerp(colorA, colorB, t, 'rgb');
143
+ // eqivalent to:
144
+ Color.lerpRGB(colorA, colorB, t);
145
+
146
+ Color.lerp(colorA, colorB, t, 'lrgb');
147
+ // equivalent to:
148
+ Color.lerpLRGB(colorA, colorB, t);
149
+ ```
150
+ - Added `Color.fromFloatArray([0.0, 0.0, 0.0, 1.0])` and `Color.toFloatArray()`
151
+ - Sound objects can be created from `Blob`s:
152
+ ```typescript
153
+ const sound = await Sound.fromBlob(instanceOfBlob)
154
+ sound.play()
155
+ ```
156
+ - Docs: The API documentation pipeline has been rebuilt around a vendored fork of `docusaurus-plugin-typedoc-api` (added as a git submodule under `site/vendor/docusaurus-plugin-typedoc-api`). The new `site/scripts/gen-typedoc-api.mjs` generates TypeDoc output and an `api-symbol-index.json` consumed by the docs site.
157
+ ```bash
158
+ # in site/
159
+ npm run build:docusaurus-plugin-typedoc-api # build the vendored plugin
160
+ npm run api:generate # run typedoc + normalize
161
+ ```
162
+ - Docs: New `remark-api-symbol-links` plugin (`site/plugins/remark-api-symbol-links.mjs`) resolves `[[Symbol]]` markdown links to the generated TypeDoc API pages using the symbol index, replacing the external `remark-typedoc-symbol-links` package.
19
163
 
20
164
  ### Fixed
21
165
 
22
- -
166
+ - Fixed issue where `rotateBy({…})` would not rotate at all for a full-turn offset (`2 * Math.PI` normalized to a zero-length rotation) and would rotate the wrong way for offsets larger than `Math.PI`. When no `rotationType` is provided, `rotateBy` now rotates by exactly the signed offset given, preserving full and multiple turns; when a `rotationType` is provided, the offset determines the target orientation and the type picks the travel path as before. Also fixed an angular velocity spike of ±2π on frames where a multi-turn rotation wrapped past the canonical angle range
167
+ - Fixed issue where a pointer's normalized id could change mid-contact. `PointerEventReceiver` normalized native pointer ids by sorting all active native ids and using the array index, so an already-tracked pointer (e.g. a touch in a multi-touch gesture) was silently re-assigned a different id when another pointer went down or up, routing its subsequent events to the wrong `PointerAbstraction`. Normalized ids are now stable for the lifetime of the contact; the smallest freed id is reused for new contacts (so a lone new touch always lands back on `pointers.primary`); cancelled contacts (`pointercancel`/`touchcancel`) free their id and clear their down state instead of leaking; and the mouse keeps its id reserved after mouse-up since it persists as a hover pointer
168
+ - Fixed issue where a cancelled pointer (`pointercancel`/`touchcancel`) left entities in a phantom hover/drag state. Entities now receive `pointerleave` (and `pointerdragend`/`pointerdragleave` when the cancelled contact was dragging) before `pointercancel`, mirroring the pointer-up flow and the browser's own post-cancel event order, since the browser never sends another move/up event for a cancelled pointer
169
+ - Fixed issue where the post processor `u_time_ms` uniform accumulated elapsed time once per post processor per update, advancing N times too fast with N post processors installed
170
+ - Fixed issue where Local-space particles could be double-returned to the object pool, causing the same Particle instance to be active in two slots simultaneously
171
+ - Fixed issue where window resize events were handled twice when using window-based display modes (FitScreen, FitScreenAndFill, FitScreenAndZoom, FillScreen), causing double resolution/viewport computation and double canvas size writes
172
+ - Fixed Matrix and AffineMatrix scale/rotation decomposition bug where getScaleX/getScaleY used wrong basis components for non-uniform scale combined with rotation, causing swapped scale values and corrupt transforms. Also fixed setRotation and setScaleX/setScaleY to operate on correct column basis vectors.
173
+ - Fixed issue where `Resource.load()` would hang forever on network errors (DNS failure, CORS block, offline), deadlocking the loader and all scene navigation. The promise now rejects with a `ResourceLoadingError` containing the resource path and a descriptive message
174
+ - Fixed issue where `ImageSource.load()` would hang forever below 100% with nothing logged when a response could not be decoded as an image, for example a corrupt image, or a `200 OK` that returned HTML/error content with a content type other than `text/html`. The `HTMLImageElement.onerror` is now handled so `ImageSource.load()` and `ImageSource.ready` reject with an error that is also logged to the console, which lets the `Loader` fail fast instead of deadlocking. `ImageSource.fromHtmlCanvasElement()` no longer hangs when a canvas cannot be turned into a blob, and blob object urls from failed decodes are now released
175
+ - Fixed issue where `Gif.isLoaded()` always returned `true` because it checked `!!this.data` on an empty array, causing Gifs to be silently skipped by the loader and never parsed
176
+ - Fixed issue where `scaleTo({…})` and `scaleBy({…})` actions would cause entities to keep scaling indefinitely after the action completed, due to a copy-paste bug that zeroed `angularVelocity` instead of `scaleFactor`
177
+ - Fixed issue where `scaleTo({…})` and `scaleBy({…})` actions used a live reference to the entity's scale vector as the interpolation start point, causing the easing curve to be corrupted if the entity's scale changed during the action
178
+ - Fixed issue where the first action in a sequence would not execute after calling `clearActions()` mid-execution. All action types now properly reset their initialization state when stopped, resolving issue #3468
179
+ - Performance: Font/Text now use smaller texture sizes, improving performance on Safari especially when rendering text
180
+ - Fixed `Color.screen()` blend mode bug where both operands were incorrectly using the parameter color instead of `this` and the parameter
181
+ - Fixed `Color.toRGBA()` logic error in alpha check condition (`||` changed to `&&`)
182
+ - Fixed `Color.toHSLA()` to output valid CSS format with degrees for hue and percentages for saturation/lightness
183
+ - Fixed `Color.toHex()` to properly clamp RGB values to 0-255 range
184
+ - Docs: Fixed broken internal links, anchors, and `[[Symbol]]` references across the docs and blog (e.g. `#sprites` → `/docs/sprites`, `#ExcaliburGraphicsContext` → `/docs/graphics-context`), and replaced invalid `[[Actor.update]]` symbol links with plain `Actor.update` references where the member is not part of the public API surface
185
+ - Docs: Fixed incorrect JSDoc `@param`/`@returns` tags and removed dead commented-out code blocks in engine source (e.g. `CollisionSolver`, `BoundingBox.draw`) that produced invalid TypeDoc output
186
+ - Fixed `BoundingBox.intersect()` return type to be explicitly `Vector | null` (callers already null-checked, but the type was not reflected)
23
187
 
24
188
  ### Updates
25
189
 
26
- -
190
+ - Deps: Upgraded to TypeScript 6.0.3 (from 5.6.3) and typescript-eslint 8.63.0 (from 8.38.0); engine source updated for TS6 strictness (non-null assertions, `null` → `undefined` defaults, optional fields)
191
+ - Deps: Upgraded to Docusaurus 3.10.1 (from 3.5.2) across the docs site, including `@docusaurus/*` packages, theme/preset packages, and the mdx-loader
192
+ - Deps: Upgraded to TypeDoc 0.28.19 (vendored plugin) and removed the top-level `typedoc` devDependency / `overrides`
193
+ - Deps: Upgraded Vitest 4.1.8 → 4.1.10 and Vite 8.0.16 → 8.1.4; browser API is now enabled with `allowWrite`/`allowExec` in the unit config, and the Vitest API host was changed from `0.0.0.0` to `127.0.0.1`
194
+ - Deps: Upgraded `coveralls-next` 6.0.1 → 6.0.2
195
+ - Deps: Removed unused `@types/marked` devDependency and `wallaby.js` test runner config
196
+ - CI: API doc generation now runs as part of `npm run all:ci` (via `npm run apidocs` → `site/scripts/gen-typedoc-api.mjs`); the dedicated `typedoc` CI job in the build workflow has been removed
197
+ - CI: The `eslint` config dropped the obsolete `parserOptions.project` overrides now that typescript-eslint handles project context differently
27
198
 
28
199
  ### Changed
29
200
 
30
- -
201
+ - API documentation are now generated into the Docusaurus build directory (`site/generated/`, gitignored) and copied into `.docusaurus/generated/` during `site` build, instead of the legacy `docs/api/` output location
31
202
 
32
203
  <!--------------------------------- DO NOT EDIT BELOW THIS LINE --------------------------------->
33
204
  <!--------------------------------- DO NOT EDIT BELOW THIS LINE --------------------------------->
@@ -1308,11 +1479,18 @@ const hits = engine.currentScene.physics.rayCast(
1308
1479
 
1309
1480
  ### Updates
1310
1481
 
1311
- -
1482
+ - Deps: Upgraded to TypeScript 6.0.3 (from 5.6.3) and typescript-eslint 8.63.0 (from 8.38.0); engine source updated for TS6 strictness (non-null assertions, `null` → `undefined` defaults, optional fields)
1483
+ - Deps: Upgraded to Docusaurus 3.10.1 (from 3.5.2) across the docs site, including `@docusaurus/*` packages, theme/preset packages, and the mdx-loader
1484
+ - Deps: Upgraded to TypeDoc 0.28.19 (vendored plugin) and removed the top-level `typedoc` devDependency / `overrides`
1485
+ - Deps: Upgraded Vitest 4.1.8 → 4.1.10 and Vite 8.0.16 → 8.1.4; browser API is now enabled with `allowWrite`/`allowExec` in the unit config, and the Vitest API host was changed from `0.0.0.0` to `127.0.0.1`
1486
+ - Deps: Upgraded `coveralls-next` 6.0.1 → 6.0.2
1487
+ - Deps: Removed unused `@types/marked` devDependency and `wallaby.js` test runner config
1488
+ - CI: API doc generation now runs as part of `npm run all:ci` (via `npm run apidocs` → `site/scripts/gen-typedoc-api.mjs`); the dedicated `typedoc` CI job in the build workflow has been removed
1489
+ - CI: The `eslint` config dropped the obsolete `parserOptions.project` overrides now that typescript-eslint handles project context differently
1312
1490
 
1313
1491
  ### Changed
1314
1492
 
1315
- -
1493
+ - API documentation are now generated into the Docusaurus build directory (`site/generated/`, gitignored) and copied into `.docusaurus/generated/` during `site` build, instead of the legacy `docs/api/` output location
1316
1494
 
1317
1495
  ## [v0.28.2]
1318
1496
 
@@ -1,12 +1,11 @@
1
1
  import type { Entity } from '../../entity-component-system/entity';
2
2
  import type { Easing } from '../../math';
3
3
  import { Vector } from '../../math/vector';
4
- import type { EasingFunction } from '../../util/easing-functions';
5
4
  import type { Action } from '../action';
6
5
  export interface MoveByOptions {
7
6
  offset: Vector;
8
7
  duration: number;
9
- easing?: Easing | EasingFunction;
8
+ easing?: Easing;
10
9
  }
11
10
  /**
12
11
  *
@@ -24,9 +23,7 @@ export declare class MoveByWithOptions implements Action {
24
23
  private _stopped;
25
24
  private _motion;
26
25
  private _offset;
27
- private _legacyEasing;
28
26
  private _easing;
29
- private _useLegacyEasing;
30
27
  constructor(entity: Entity, options: MoveByOptions);
31
28
  update(elapsed: number): void;
32
29
  isComplete(entity: Entity): boolean;
@@ -1,12 +1,11 @@
1
1
  import type { Entity } from '../../entity-component-system/entity';
2
2
  import type { Easing } from '../../math';
3
3
  import { Vector } from '../../math/vector';
4
- import type { EasingFunction } from '../../util/easing-functions';
5
4
  import type { Action } from '../action';
6
5
  export interface MoveToOptions {
7
6
  pos: Vector;
8
7
  duration: number;
9
- easing?: Easing | EasingFunction;
8
+ easing?: Easing;
10
9
  }
11
10
  /**
12
11
  *
@@ -24,8 +23,6 @@ export declare class MoveToWithOptions implements Action {
24
23
  private _stopped;
25
24
  private _motion;
26
25
  private _easing;
27
- private _legacyEasing;
28
- private _useLegacyEasing;
29
26
  constructor(entity: Entity, options: MoveToOptions);
30
27
  update(elapsed: number): void;
31
28
  isComplete(entity: Entity): boolean;
@@ -11,7 +11,12 @@ export interface RotateByOptions {
11
11
  */
12
12
  duration: number;
13
13
  /**
14
- * Optionally provide type of rotation, default is RotationType.ShortestPath
14
+ * Optionally provide type of rotation. When omitted the entity rotates by exactly the
15
+ * signed offset provided, preserving full turns (an offset of 2 PI performs a full revolution).
16
+ * When provided, the offset determines the target orientation and the rotation type picks
17
+ * the travel path to it. Non-zero full-turn multiples of 2 PI travel one full revolution in
18
+ * the requested direction for Clockwise, CounterClockwise, and LongestPath, while
19
+ * ShortestPath will not move.
15
20
  */
16
21
  rotationType?: RotationType;
17
22
  }
@@ -30,8 +35,9 @@ export declare class RotateByWithOptions implements Action {
30
35
  private _motion;
31
36
  private _offset;
32
37
  private _startAngle;
33
- private _rotationType;
34
- private _endAngle;
38
+ private _rotationType?;
39
+ private _travel;
40
+ private _currentAngle;
35
41
  constructor(entity: Entity, options: RotateByOptions);
36
42
  update(elapsed: number): void;
37
43
  isComplete(): boolean;
@@ -1,4 +1,3 @@
1
- import type { EasingFunction } from '../util/easing-functions';
2
1
  import { ActionQueue } from './action-queue';
3
2
  import type { MoveByOptions } from './action/move-by';
4
3
  import type { MoveToOptions } from './action/move-to';
@@ -42,48 +41,9 @@ export declare class ActionContext {
42
41
  * @param options
43
42
  */
44
43
  curveTo(options: CurveToOptions): ActionContext;
45
- /**
46
- * This method will move an actor to the specified `x` and `y` position over the
47
- * specified duration using a given {@apilink EasingFunctions} and return back the actor. This
48
- * method is part of the actor 'Action' fluent API allowing action chaining.
49
- * @param pos The x,y vector location to move the actor to
50
- * @param duration The time it should take the actor to move to the new location in milliseconds
51
- * @param easingFcn Use {@apilink EasingFunction} or a custom function to use to calculate position, Default is {@apilink EasingFunctions.Linear}
52
- * @deprecated use new moveTo({pos: Vector, duration: number, easing: EasingFunction})
53
- */
54
- easeTo(pos: Vector, duration: number, easingFcn?: EasingFunction): ActionContext;
55
- /**
56
- * This method will move an actor to the specified `x` and `y` position over the
57
- * specified duration using a given {@apilink EasingFunctions} and return back the actor. This
58
- * method is part of the actor 'Action' fluent API allowing action chaining.
59
- * @param x The x location to move the actor to
60
- * @param y The y location to move the actor to
61
- * @param duration The time it should take the actor to move to the new location in milliseconds
62
- * @param easingFcn Use {@apilink EasingFunction} or a custom function to use to calculate position, Default is {@apilink EasingFunctions.Linear}
63
- * @deprecated use new moveTo({pos: Vector, duration: number, easing: EasingFunction})
64
- */
65
- easeTo(x: number, y: number, duration: number, easingFcn?: EasingFunction): ActionContext;
66
- /**
67
- * This method will move an actor by a specified vector offset relative to the current position given
68
- * a duration and a {@apilink EasingFunction}. This method is part of the actor 'Action' fluent API allowing action chaining.
69
- * @param offset Vector offset relative to the current position
70
- * @param duration The duration in milliseconds
71
- * @param easingFcn Use {@apilink EasingFunction} or a custom function to use to calculate position, Default is {@apilink EasingFunctions.Linear}
72
- * @deprecated use new moveBy({offset: Vector, duration: number, easing: EasingFunction})
73
- */
74
- easeBy(offset: Vector, duration: number, easingFcn?: EasingFunction): ActionContext;
75
- /**
76
- * This method will move an actor by a specified x and y offset relative to the current position given
77
- * a duration and a {@apilink EasingFunction}. This method is part of the actor 'Action' fluent API allowing action chaining.
78
- * @param offset Vector offset relative to the current position
79
- * @param duration The duration in milliseconds
80
- * @param easingFcn Use {@apilink EasingFunction} or a custom function to use to calculate position, Default is {@apilink EasingFunctions.Linear}
81
- * @deprecated use new moveBy({offset: Vector, duration: number, easing: EasingFunction})
82
- */
83
- easeBy(offsetX: number, offsetY: number, duration: number, easingFcn?: EasingFunction): ActionContext;
84
44
  /**
85
45
  * Moves an actor to a specified {@link Vector} in a given duration in milliseconds.
86
- * You may optionally specify an {@link EasingFunction}
46
+ * You may optionally specify an {@link Easing}
87
47
  * @param options
88
48
  */
89
49
  moveTo(options: MoveToOptions): ActionContext;
@@ -106,10 +66,17 @@ export declare class ActionContext {
106
66
  moveTo(x: number, y: number, speed: number): ActionContext;
107
67
  /**
108
68
  * Moves an actor by a specified offset {@link Vector} in a given duration in milliseconds.
109
- * You may optionally specify an {@link EasingFunction}
69
+ * You may optionally specify an {@link Easing}
110
70
  * @param options
111
71
  */
112
72
  moveBy(options: MoveByOptions): ActionContext;
73
+ /**
74
+ * This method will move an actor by the specified x offset and y offset from its current position, at a certain speed.
75
+ * This method is part of the actor 'Action' fluent API allowing action chaining.
76
+ * @param offset The Vector offset to apply to this actor
77
+ * @param speed The speed in pixels per second the actor should move
78
+ */
79
+ moveBy(offset: Vector, speed: number): ActionContext;
113
80
  /**
114
81
  * This method will move an actor by the specified x offset and y offset from its current position, at a certain speed.
115
82
  * This method is part of the actor 'Action' fluent API allowing action chaining.
@@ -117,7 +84,6 @@ export declare class ActionContext {
117
84
  * @param yOffset The y location to move the actor to
118
85
  * @param speed The speed in pixels per second the actor should move
119
86
  */
120
- moveBy(offset: Vector, speed: number): ActionContext;
121
87
  moveBy(xOffset: number, yOffset: number, speed: number): ActionContext;
122
88
  /**
123
89
  * Rotates an actor to a specified angle over a duration in milliseconds,
@@ -5,7 +5,6 @@ import type { Actor } from '../actor';
5
5
  import { MotionComponent } from '../entity-component-system/components/motion-component';
6
6
  import { TransformComponent } from '../entity-component-system/components/transform-component';
7
7
  import type { Vector, RotationType } from '../math';
8
- import type { EasingFunction } from '../util/easing-functions';
9
8
  import type { ActionQueue } from './action-queue';
10
9
  import type { Action } from './action';
11
10
  import type { Color } from '../color';
@@ -16,6 +15,7 @@ import type { MoveByOptions, RotateByOptions, RotateToOptions, ScaleByOptions, S
16
15
  export interface ActionContextMethods extends Pick<ActionContext, keyof ActionContext> {
17
16
  }
18
17
  export declare class ActionsComponent extends Component implements ActionContextMethods {
18
+ private static _NAME;
19
19
  dependencies: (typeof TransformComponent | typeof MotionComponent)[];
20
20
  private _ctx;
21
21
  onAdd(entity: Entity): void;
@@ -52,47 +52,9 @@ export declare class ActionsComponent extends Component implements ActionContext
52
52
  * @param options
53
53
  */
54
54
  curveTo(options: CurveToOptions): ActionContext;
55
- /**
56
- * This method will move an actor to the specified `x` and `y` position over the
57
- * specified duration using a given {@apilink EasingFunctions} and return back the actor. This
58
- * method is part of the actor 'Action' fluent API allowing action chaining.
59
- * @param pos The x,y vector location to move the actor to
60
- * @param duration The time it should take the actor to move to the new location in milliseconds
61
- * @param easingFcn Use {@apilink EasingFunctions} or a custom function to use to calculate position, Default is {@apilink EasingFunctions.Linear}
62
- * @deprecated use new moveTo({pos: Vector, duration: number, easing: EasingFunction})
63
- */
64
- easeTo(pos: Vector, duration: number, easingFcn?: EasingFunction): ActionContext;
65
- /**
66
- * This method will move an actor to the specified `x` and `y` position over the
67
- * specified duration using a given {@apilink EasingFunctions} and return back the actor. This
68
- * method is part of the actor 'Action' fluent API allowing action chaining.
69
- * @param x The x location to move the actor to
70
- * @param y The y location to move the actor to
71
- * @param duration The time it should take the actor to move to the new location in milliseconds
72
- * @param easingFcn Use {@apilink EasingFunctions} or a custom function to use to calculate position, Default is {@apilink EasingFunctions.Linear}
73
- * @deprecated use new moveTo({pos: Vector, duration: number, easing: EasingFunction})
74
- */
75
- easeTo(x: number, y: number, duration: number, easingFcn?: EasingFunction): ActionContext;
76
- /**
77
- *
78
- * @param offset
79
- * @param duration
80
- * @param easingFcn
81
- * @deprecated use new moveBy({pos: Vector, duration: number, easing: EasingFunction})
82
- */
83
- easeBy(offset: Vector, duration: number, easingFcn?: EasingFunction): ActionContext;
84
- /**
85
- *
86
- * @param offsetX
87
- * @param offsetY
88
- * @param duration
89
- * @param easingFcn
90
- * @deprecated use new moveBy({pos: Vector, duration: number, easing: EasingFunction})
91
- */
92
- easeBy(offsetX: number, offsetY: number, duration: number, easingFcn?: EasingFunction): ActionContext;
93
55
  /**
94
56
  * Moves an actor to a specified {@link Vector} in a given duration in milliseconds.
95
- * You may optionally specify an {@link EasingFunction}
57
+ * You may optionally specify an {@link Easing}
96
58
  * @param options
97
59
  */
98
60
  moveTo(options: MoveToOptions): ActionContext;
@@ -115,7 +77,7 @@ export declare class ActionsComponent extends Component implements ActionContext
115
77
  moveTo(x: number, y: number, speed: number): ActionContext;
116
78
  /**
117
79
  * Moves an actor by a specified offset {@link Vector} in a given duration in milliseconds.
118
- * You may optionally specify an {@link EasingFunction}
80
+ * You may optionally specify an {@link Easing}
119
81
  * @param options
120
82
  */
121
83
  moveBy(options: MoveByOptions): ActionContext;
@@ -8,8 +8,6 @@ export * from './action/repeat';
8
8
  export * from './action/repeat-forever';
9
9
  export * from './action/blink';
10
10
  export * from './action/die';
11
- export * from './action/ease-to';
12
- export * from './action/ease-by';
13
11
  export * from './action/fade';
14
12
  export * from './action/follow';
15
13
  export * from './action/meet';