excalibur 0.33.0-alpha.21 → 0.33.0-alpha.222

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 (350) hide show
  1. package/.git-blame-ignore-revs +2 -1
  2. package/.gitmodules +3 -0
  3. package/.nvmrc +1 -1
  4. package/CHANGELOG.md +183 -8
  5. package/build/dist/{Actions/Action/ActionSequence.d.ts → actions/action/action-sequence.d.ts} +3 -3
  6. package/build/dist/{Actions/Action/Blink.d.ts → actions/action/blink.d.ts} +2 -2
  7. package/build/dist/{Actions/Action/CallMethod.d.ts → actions/action/call-method.d.ts} +1 -1
  8. package/build/dist/{Actions/Action/CurveBy.d.ts → actions/action/curve-by.d.ts} +3 -3
  9. package/build/dist/{Actions/Action/CurveTo.d.ts → actions/action/curve-to.d.ts} +3 -3
  10. package/build/dist/{Actions/Action/Delay.d.ts → actions/action/delay.d.ts} +1 -1
  11. package/build/dist/{Actions/Action/Die.d.ts → actions/action/die.d.ts} +2 -2
  12. package/build/dist/{Actions/Action/EaseBy.d.ts → actions/action/ease-by.d.ts} +2 -2
  13. package/build/dist/{Actions/Action/EaseTo.d.ts → actions/action/ease-to.d.ts} +2 -2
  14. package/build/dist/{Actions/Action/Fade.d.ts → actions/action/fade.d.ts} +2 -2
  15. package/build/dist/{Actions/Action/Flash.d.ts → actions/action/flash.d.ts} +3 -3
  16. package/build/dist/{Actions/Action/Follow.d.ts → actions/action/follow.d.ts} +2 -2
  17. package/build/dist/{Actions/Action/Meet.d.ts → actions/action/meet.d.ts} +2 -2
  18. package/build/dist/{Actions/Action/MoveBy.d.ts → actions/action/move-by.d.ts} +5 -8
  19. package/build/dist/{Actions/Action/MoveTo.d.ts → actions/action/move-to.d.ts} +5 -8
  20. package/build/dist/{Actions/Action/ParallelActions.d.ts → actions/action/parallel-actions.d.ts} +2 -2
  21. package/build/dist/{Actions/Action/RepeatForever.d.ts → actions/action/repeat-forever.d.ts} +3 -3
  22. package/build/dist/{Actions/Action/Repeat.d.ts → actions/action/repeat.d.ts} +3 -3
  23. package/build/dist/{Actions/Action/RotateBy.d.ts → actions/action/rotate-by.d.ts} +12 -6
  24. package/build/dist/{Actions/Action/RotateTo.d.ts → actions/action/rotate-to.d.ts} +3 -3
  25. package/build/dist/{Actions/Action/ScaleBy.d.ts → actions/action/scale-by.d.ts} +3 -3
  26. package/build/dist/{Actions/Action/ScaleTo.d.ts → actions/action/scale-to.d.ts} +3 -3
  27. package/build/dist/{Actions/ActionContext.d.ts → actions/action-context.d.ts} +23 -57
  28. package/build/dist/{Actions/ActionQueue.d.ts → actions/action-queue.d.ts} +2 -2
  29. package/build/dist/{Actions/Action.d.ts → actions/action.d.ts} +1 -1
  30. package/build/dist/{Actions/Actionable.d.ts → actions/actionable.d.ts} +1 -1
  31. package/build/dist/{Actions/ActionsComponent.d.ts → actions/actions-component.d.ts} +16 -54
  32. package/build/dist/{Actions/ActionsSystem.d.ts → actions/actions-system.d.ts} +3 -3
  33. package/build/dist/actions/index.d.ts +25 -0
  34. package/build/dist/{Actor.d.ts → actor.d.ts} +58 -56
  35. package/build/dist/{Camera.d.ts → camera.d.ts} +24 -21
  36. package/build/dist/{Collision/BodyComponent.d.ts → collision/body-component.d.ts} +41 -33
  37. package/build/dist/{Collision/BoundingBox.d.ts → collision/bounding-box.d.ts} +8 -15
  38. package/build/dist/{Collision/ColliderComponent.d.ts → collision/collider-component.d.ts} +83 -13
  39. package/build/dist/{Collision/Colliders/CircleCollider.d.ts → collision/colliders/circle-collider.d.ts} +11 -11
  40. package/build/dist/{Collision/Colliders/ClosestLineJumpTable.d.ts → collision/colliders/closest-line-jump-table.d.ts} +5 -5
  41. package/build/dist/{Collision/Colliders/Collider.d.ts → collision/colliders/collider.d.ts} +16 -16
  42. package/build/dist/{Collision/Colliders/CollisionJumpTable.d.ts → collision/colliders/collision-jump-table.d.ts} +5 -5
  43. package/build/dist/{Collision/Colliders/CompositeCollider.d.ts → collision/colliders/composite-collider.d.ts} +14 -13
  44. package/build/dist/{Collision/Colliders/EdgeCollider.d.ts → collision/colliders/edge-collider.d.ts} +11 -11
  45. package/build/dist/{Collision/Colliders/PolygonCollider.d.ts → collision/colliders/polygon-collider.d.ts} +11 -11
  46. package/build/dist/{Collision/Colliders/SeparatingAxis.d.ts → collision/colliders/separating-axis.d.ts} +7 -7
  47. package/build/dist/collision/colliders/shape.d.ts +102 -0
  48. package/build/dist/{Collision/CollisionSystem.d.ts → collision/collision-system.d.ts} +9 -9
  49. package/build/dist/{Collision/Detection/CollisionContact.d.ts → collision/detection/collision-contact.d.ts} +4 -4
  50. package/build/dist/{Collision/Detection/CollisionProcessor.d.ts → collision/detection/collision-processor.d.ts} +10 -10
  51. package/build/dist/{Collision/Detection/DynamicTreeCollisionProcessor.d.ts → collision/detection/dynamic-tree-collision-processor.d.ts} +13 -13
  52. package/build/dist/{Collision/Detection/DynamicTree.d.ts → collision/detection/dynamic-tree.d.ts} +14 -16
  53. package/build/dist/{Collision/Detection/Pair.d.ts → collision/detection/pair.d.ts} +3 -3
  54. package/build/dist/{Collision/Detection/QuadTree.d.ts → collision/detection/quad-tree.d.ts} +4 -4
  55. package/build/dist/{Collision/Detection/RayCastHit.d.ts → collision/detection/ray-cast-hit.d.ts} +3 -3
  56. package/build/dist/{Collision/Detection/RayCastOptions.d.ts → collision/detection/ray-cast-options.d.ts} +2 -2
  57. package/build/dist/{Collision/Detection/SparseHashGridCollisionProcessor.d.ts → collision/detection/sparse-hash-grid-collision-processor.d.ts} +17 -17
  58. package/build/dist/{Collision/Detection/SparseHashGrid.d.ts → collision/detection/sparse-hash-grid.d.ts} +6 -3
  59. package/build/dist/{Collision/Group/CollisionGroupManager.d.ts → collision/group/collision-group-manager.d.ts} +2 -2
  60. package/build/dist/collision/index.d.ts +38 -0
  61. package/build/dist/{Collision/Integrator.d.ts → collision/integrator.d.ts} +3 -3
  62. package/build/dist/{Collision/Island.d.ts → collision/island.d.ts} +2 -2
  63. package/build/dist/{Collision/MotionSystem.d.ts → collision/motion-system.d.ts} +5 -5
  64. package/build/dist/{Collision/PhysicsConfig.d.ts → collision/physics-config.d.ts} +5 -5
  65. package/build/dist/collision/physics-world.d.ts +73 -0
  66. package/build/dist/{Collision/Side.d.ts → collision/side.d.ts} +1 -1
  67. package/build/dist/{Collision/Solver/ArcadeSolver.d.ts → collision/solver/arcade-solver.d.ts} +4 -4
  68. package/build/dist/{Collision/Solver/ContactConstraintPoint.d.ts → collision/solver/contact-constraint-point.d.ts} +2 -2
  69. package/build/dist/{Collision/Solver/RealisticSolver.d.ts → collision/solver/realistic-solver.d.ts} +5 -5
  70. package/build/dist/{Collision/Solver/Solver.d.ts → collision/solver/solver.d.ts} +1 -2
  71. package/build/dist/{Color.d.ts → color.d.ts} +43 -3
  72. package/build/dist/{Debug/DebugConfig.d.ts → debug/debug-config.d.ts} +21 -5
  73. package/build/dist/{Debug/DebugFlags.d.ts → debug/debug-flags.d.ts} +2 -2
  74. package/build/dist/{Debug/DebugSystem.d.ts → debug/debug-system.d.ts} +4 -4
  75. package/build/dist/debug/index.d.ts +3 -0
  76. package/build/dist/{Director/CrossFade.d.ts → director/cross-fade.d.ts} +5 -5
  77. package/build/dist/{Director/DefaultLoader.d.ts → director/default-loader.d.ts} +5 -5
  78. package/build/dist/{Director/Director.d.ts → director/director.d.ts} +13 -8
  79. package/build/dist/{Director/FadeInOut.d.ts → director/fade-in-out.d.ts} +5 -5
  80. package/build/dist/director/index.d.ts +7 -0
  81. package/build/dist/{Director/Loader.d.ts → director/loader.d.ts} +9 -9
  82. package/build/dist/{Director/Slide.d.ts → director/slide.d.ts} +6 -6
  83. package/build/dist/{Director/Transition.d.ts → director/transition.d.ts} +7 -10
  84. package/build/dist/{Engine.d.ts → engine.d.ts} +89 -39
  85. package/build/dist/{EntityComponentSystem/Component.d.ts → entity-component-system/component.d.ts} +8 -2
  86. package/build/dist/{EntityComponentSystem/Components/MotionComponent.d.ts → entity-component-system/components/motion-component.d.ts} +3 -2
  87. package/build/dist/entity-component-system/components/pause-component.d.ts +11 -0
  88. package/build/dist/{EntityComponentSystem/Components/TagsComponent.d.ts → entity-component-system/components/tags-component.d.ts} +2 -1
  89. package/build/dist/{EntityComponentSystem/Components/TransformComponent.d.ts → entity-component-system/components/transform-component.d.ts} +30 -6
  90. package/build/dist/{EntityComponentSystem/EntityManager.d.ts → entity-component-system/entity-manager.d.ts} +3 -3
  91. package/build/dist/{EntityComponentSystem/Entity.d.ts → entity-component-system/entity.d.ts} +12 -22
  92. package/build/dist/entity-component-system/index.d.ts +13 -0
  93. package/build/dist/{EntityComponentSystem/QueryManager.d.ts → entity-component-system/query-manager.d.ts} +5 -5
  94. package/build/dist/{EntityComponentSystem/Query.d.ts → entity-component-system/query.d.ts} +4 -4
  95. package/build/dist/{EntityComponentSystem/SystemManager.d.ts → entity-component-system/system-manager.d.ts} +4 -4
  96. package/build/dist/{EntityComponentSystem/System.d.ts → entity-component-system/system.d.ts} +9 -2
  97. package/build/dist/{EntityComponentSystem/World.d.ts → entity-component-system/world.d.ts} +10 -14
  98. package/build/dist/{Events/MediaEvents.d.ts → events/media-events.d.ts} +6 -6
  99. package/build/dist/{Events/PointerEvents.d.ts → events/pointer-events.d.ts} +3 -3
  100. package/build/dist/{Events.d.ts → events.d.ts} +37 -17
  101. package/build/dist/excalibur.development.js +36173 -34114
  102. package/build/dist/excalibur.js +36173 -34114
  103. package/build/dist/excalibur.min.development.js +197 -88
  104. package/build/dist/excalibur.min.js +197 -88
  105. package/build/dist/{Graphics/Animation.d.ts → graphics/animation.d.ts} +20 -10
  106. package/build/dist/{Graphics/Canvas.d.ts → graphics/canvas.d.ts} +3 -3
  107. package/build/dist/{Graphics/Circle.d.ts → graphics/circle.d.ts} +2 -2
  108. package/build/dist/{Graphics/Context → graphics/context}/circle-renderer/circle-renderer.d.ts +8 -3
  109. package/build/dist/{Graphics/Context → graphics/context}/debug-circle-renderer/debug-circle-renderer.d.ts +3 -3
  110. package/build/dist/{Graphics/Context → graphics/context}/debug-line-renderer/debug-line-renderer.d.ts +3 -3
  111. package/build/dist/{Graphics/Context → graphics/context}/debug-point-renderer/debug-point-renderer.d.ts +3 -3
  112. package/build/dist/graphics/context/debug-text.d.ts +40 -0
  113. package/build/dist/{Graphics/Context → graphics/context}/draw-call.d.ts +2 -2
  114. package/build/dist/{Graphics/Context/ExcaliburGraphicsContext2DCanvas.d.ts → graphics/context/excalibur-graphics-context-2d-canvas.d.ts} +16 -7
  115. package/build/dist/{Graphics/Context/ExcaliburGraphicsContextWebGL.d.ts → graphics/context/excalibur-graphics-context-webgl.d.ts} +49 -12
  116. package/build/dist/{Graphics/Context/ExcaliburGraphicsContext.d.ts → graphics/context/excalibur-graphics-context.d.ts} +114 -10
  117. package/build/dist/graphics/context/framebuffer.d.ts +154 -0
  118. package/build/dist/graphics/context/glsl.d.ts +47 -0
  119. package/build/dist/{Graphics/Context → graphics/context}/image-renderer/image-renderer.d.ts +2 -2
  120. package/build/dist/{Graphics/Context → graphics/context}/image-renderer-v2/image-renderer-v2.d.ts +2 -2
  121. package/build/dist/{Graphics/Context → graphics/context}/material-renderer/material-renderer.d.ts +3 -2
  122. package/build/dist/graphics/context/material.d.ts +189 -0
  123. package/build/dist/{Graphics/Context → graphics/context}/particle-renderer/particle-renderer.d.ts +2 -2
  124. package/build/dist/{Graphics/Context → graphics/context}/rectangle-renderer/rectangle-renderer.d.ts +3 -3
  125. package/build/dist/{Graphics/Context → graphics/context}/renderer.d.ts +1 -1
  126. package/build/dist/{Graphics/Context → graphics/context}/screen-pass-painter/screen-pass-painter.d.ts +2 -2
  127. package/build/dist/graphics/context/shader-pipeline/effects/bloom-effect.d.ts +74 -0
  128. package/build/dist/graphics/context/shader-pipeline/effects/blur-passes.d.ts +70 -0
  129. package/build/dist/graphics/context/shader-pipeline/effects/glow-passes.d.ts +88 -0
  130. package/build/dist/graphics/context/shader-pipeline/shader-pass.d.ts +136 -0
  131. package/build/dist/graphics/context/shader-pipeline/shader-pipeline.d.ts +80 -0
  132. package/build/dist/{Graphics/Context → graphics/context}/shader.d.ts +11 -4
  133. package/build/dist/{Graphics/Context → graphics/context}/state-stack.d.ts +2 -2
  134. package/build/dist/{Graphics/Context → graphics/context}/texture-loader.d.ts +5 -5
  135. package/build/dist/{Graphics/Context → graphics/context}/transform-stack.d.ts +1 -1
  136. package/build/dist/{Graphics/Context → graphics/context}/webgl-util.d.ts +2 -2
  137. package/build/dist/{Graphics/DebugGraphicsComponent.d.ts → graphics/debug-graphics-component.d.ts} +4 -3
  138. package/build/dist/{Graphics/Debug.d.ts → graphics/debug.d.ts} +6 -6
  139. package/build/dist/{Graphics/FontCache.d.ts → graphics/font-cache.d.ts} +4 -4
  140. package/build/dist/{Graphics/FontCommon.d.ts → graphics/font-common.d.ts} +6 -6
  141. package/build/dist/{Graphics/FontTextInstance.d.ts → graphics/font-text-instance.d.ts} +29 -8
  142. package/build/dist/{Graphics/Font.d.ts → graphics/font.d.ts} +12 -11
  143. package/build/dist/{Graphics/Graphic.d.ts → graphics/graphic.d.ts} +5 -5
  144. package/build/dist/{Graphics/GraphicsComponent.d.ts → graphics/graphics-component.d.ts} +83 -18
  145. package/build/dist/{Graphics/GraphicsGroup.d.ts → graphics/graphics-group.d.ts} +12 -6
  146. package/build/dist/{Graphics/GraphicsSystem.d.ts → graphics/graphics-system.d.ts} +5 -5
  147. package/build/dist/{Graphics/ImageSource.d.ts → graphics/image-source.d.ts} +7 -6
  148. package/build/dist/graphics/index.d.ts +55 -0
  149. package/build/dist/{Graphics/Line.d.ts → graphics/line.d.ts} +5 -5
  150. package/build/dist/{Graphics/NineSlice.d.ts → graphics/nine-slice.d.ts} +5 -5
  151. package/build/dist/{Graphics/OffscreenSystem.d.ts → graphics/offscreen-system.d.ts} +5 -5
  152. package/build/dist/graphics/parallax-component.d.ts +7 -0
  153. package/build/dist/{Graphics/Polygon.d.ts → graphics/polygon.d.ts} +3 -3
  154. package/build/dist/{Graphics/PostProcessor/ColorBlindnessPostProcessor.d.ts → graphics/post-processor/color-blindness-post-processor.d.ts} +6 -8
  155. package/build/dist/graphics/post-processor/post-processor.d.ts +66 -0
  156. package/build/dist/{Graphics/PostProcessor/ScreenShader.d.ts → graphics/post-processor/screen-shader.d.ts} +3 -3
  157. package/build/dist/graphics/post-processor/shader-pipeline-post-processor.d.ts +45 -0
  158. package/build/dist/{Graphics/Raster.d.ts → graphics/raster.d.ts} +6 -6
  159. package/build/dist/{Graphics/Rectangle.d.ts → graphics/rectangle.d.ts} +2 -2
  160. package/build/dist/{Graphics/SpriteFont.d.ts → graphics/sprite-font.d.ts} +8 -8
  161. package/build/dist/{Graphics/SpriteSheet.d.ts → graphics/sprite-sheet.d.ts} +7 -7
  162. package/build/dist/{Graphics/Sprite.d.ts → graphics/sprite.d.ts} +4 -4
  163. package/build/dist/{Graphics/Text.d.ts → graphics/text.d.ts} +7 -7
  164. package/build/dist/{Graphics/TiledAnimation.d.ts → graphics/tiled-animation.d.ts} +7 -7
  165. package/build/dist/{Graphics/TiledSprite.d.ts → graphics/tiled-sprite.d.ts} +7 -7
  166. package/build/dist/{Graphics/TransformInterpolation.d.ts → graphics/transform-interpolation.d.ts} +1 -1
  167. package/build/dist/index.d.ts +68 -66
  168. package/build/dist/{Input/Gamepad.d.ts → input/gamepad.d.ts} +7 -10
  169. package/build/dist/{Input/InputHost.d.ts → input/input-host.d.ts} +5 -5
  170. package/build/dist/{Input/InputMapper.d.ts → input/input-mapper.d.ts} +3 -3
  171. package/build/dist/{Input/Keyboard.d.ts → input/keyboard.d.ts} +6 -6
  172. package/build/dist/{Input/PointerAbstraction.d.ts → input/pointer-abstraction.d.ts} +5 -5
  173. package/build/dist/{Input/PointerComponent.d.ts → input/pointer-component.d.ts} +3 -2
  174. package/build/dist/{Input/PointerEventReceiver.d.ts → input/pointer-event-receiver.d.ts} +11 -8
  175. package/build/dist/{Input/PointerEvent.d.ts → input/pointer-event.d.ts} +4 -4
  176. package/build/dist/{Input/PointerEventsToObjectDispatcher.d.ts → input/pointer-events-to-object-dispatcher.d.ts} +3 -3
  177. package/build/dist/{Input/PointerSystem.d.ts → input/pointer-system.d.ts} +4 -4
  178. package/build/dist/{Input/WheelEvent.d.ts → input/wheel-event.d.ts} +1 -1
  179. package/build/dist/{Interfaces/AudioImplementation.d.ts → interfaces/audio-implementation.d.ts} +1 -1
  180. package/build/dist/{Interfaces/Evented.d.ts → interfaces/evented.d.ts} +1 -1
  181. package/build/dist/interfaces/index.d.ts +7 -0
  182. package/build/dist/{Interfaces/LifecycleEvents.d.ts → interfaces/lifecycle-events.d.ts} +4 -4
  183. package/build/dist/{Interfaces/PointerEventHandlers.d.ts → interfaces/pointer-event-handlers.d.ts} +3 -3
  184. package/build/dist/{Label.d.ts → label.d.ts} +8 -8
  185. package/build/dist/lighting/cone-light-component.d.ts +47 -0
  186. package/build/dist/lighting/darkness-component.d.ts +34 -0
  187. package/build/dist/lighting/flicker-options.d.ts +17 -0
  188. package/build/dist/lighting/flicker-system.d.ts +19 -0
  189. package/build/dist/lighting/index.d.ts +8 -0
  190. package/build/dist/lighting/light-occluder-component.d.ts +66 -0
  191. package/build/dist/lighting/lighting-config.d.ts +47 -0
  192. package/build/dist/lighting/lighting-system.d.ts +153 -0
  193. package/build/dist/lighting/point-light-component.d.ts +46 -0
  194. package/build/dist/{Math → math}/affine-matrix.d.ts +1 -1
  195. package/build/dist/math/coord-plane.d.ts +52 -0
  196. package/build/dist/{Math → math}/global-coordinates.d.ts +1 -1
  197. package/build/dist/{Math → math}/graph.d.ts +14 -3
  198. package/build/dist/{Math → math}/index.d.ts +1 -1
  199. package/build/dist/{Math → math}/line-segment.d.ts +1 -1
  200. package/build/dist/{Math → math}/ray.d.ts +1 -1
  201. package/build/dist/{Math → math}/util.d.ts +1 -1
  202. package/build/dist/{Math → math}/vector.d.ts +8 -14
  203. package/build/dist/{Particles/GpuParticleEmitter.d.ts → particles/gpu-particle-emitter.d.ts} +11 -11
  204. package/build/dist/{Particles/GpuParticleRenderer.d.ts → particles/gpu-particle-renderer.d.ts} +5 -5
  205. package/build/dist/particles/index.d.ts +5 -0
  206. package/build/dist/{Particles/ParticleEmitter.d.ts → particles/particle-emitter.d.ts} +6 -6
  207. package/build/dist/{Particles/Particles.d.ts → particles/particles.d.ts} +18 -12
  208. package/build/dist/plugin.d.ts +253 -0
  209. package/build/dist/{Resources/Font.d.ts → resources/font.d.ts} +4 -4
  210. package/build/dist/{Resources/Gif.d.ts → resources/gif.d.ts} +5 -5
  211. package/build/dist/resources/index.d.ts +4 -0
  212. package/build/dist/{Resources/Resource.d.ts → resources/resource.d.ts} +11 -3
  213. package/build/dist/resources/sound/index.d.ts +4 -0
  214. package/build/dist/{Resources/Sound/SoundManager.d.ts → resources/sound/sound-manager.d.ts} +1 -1
  215. package/build/dist/{Resources/Sound/Sound.d.ts → resources/sound/sound.d.ts} +13 -9
  216. package/build/dist/{Resources/Sound/WebAudioInstance.d.ts → resources/sound/web-audio-instance.d.ts} +1 -1
  217. package/build/dist/{Scene.d.ts → scene.d.ts} +36 -24
  218. package/build/dist/{ScreenElement.d.ts → screen-element.d.ts} +4 -4
  219. package/build/dist/{Screen.d.ts → screen.d.ts} +103 -35
  220. package/build/dist/tile-map/index.d.ts +4 -0
  221. package/build/dist/{TileMap/IsometricEntityComponent.d.ts → tile-map/isometric-entity-component.d.ts} +3 -2
  222. package/build/dist/tile-map/isometric-entity-system.d.ts +12 -0
  223. package/build/dist/{TileMap/IsometricMap.d.ts → tile-map/isometric-map.d.ts} +13 -23
  224. package/build/dist/{TileMap/TileMap.d.ts → tile-map/tile-map.d.ts} +31 -18
  225. package/build/dist/{Timer.d.ts → timer.d.ts} +6 -9
  226. package/build/dist/{Trigger.d.ts → trigger.d.ts} +6 -6
  227. package/build/dist/{Util/Pool.d.ts → util/arena-pool.d.ts} +15 -4
  228. package/build/dist/{Util/Browser.d.ts → util/browser.d.ts} +8 -0
  229. package/build/dist/{Util/Clock.d.ts → util/clock.d.ts} +1 -1
  230. package/build/dist/{Util/Coroutine.d.ts → util/coroutine.d.ts} +2 -2
  231. package/build/dist/{Util/Detector.d.ts → util/detector.d.ts} +1 -1
  232. package/build/dist/{Util/DrawUtil.d.ts → util/draw-util.d.ts} +4 -4
  233. package/build/dist/util/index.d.ts +6 -0
  234. package/build/dist/{Util/Log.d.ts → util/log.d.ts} +3 -3
  235. package/build/dist/util/pause-system.d.ts +14 -0
  236. package/build/dist/{Util/RentalPool.d.ts → util/rental-pool.d.ts} +1 -0
  237. package/build/dist/util/serializer.d.ts +128 -0
  238. package/build/dist/{Util/Sound.d.ts → util/sound.d.ts} +1 -0
  239. package/build/dist/{Util/StateMachine.d.ts → util/state-machine.d.ts} +1 -1
  240. package/build/dist/util/string.d.ts +6 -0
  241. package/build/dist/{Util/Util.d.ts → util/util.d.ts} +2 -2
  242. package/build/esm/excalibur.development.js +35534 -33933
  243. package/build/esm/excalibur.js +35534 -33933
  244. package/build/esm/excalibur.min.development.js +17614 -23031
  245. package/build/esm/excalibur.min.js +17614 -23031
  246. package/eslint.config.mjs +6 -11
  247. package/package.json +33 -38
  248. package/vite.config.common.js +1 -1
  249. package/vite.config.ts +2 -1
  250. package/vitest.config.ts +4 -4
  251. package/.devcontainer/devcontainer.json +0 -26
  252. package/.husky/pre-commit +0 -1
  253. package/build/dist/Actions/index.d.ts +0 -27
  254. package/build/dist/Collision/Colliders/Shape.d.ts +0 -52
  255. package/build/dist/Collision/Index.d.ts +0 -38
  256. package/build/dist/Collision/PhysicsWorld.d.ts +0 -73
  257. package/build/dist/Debug/index.d.ts +0 -3
  258. package/build/dist/Director/index.d.ts +0 -7
  259. package/build/dist/EntityComponentSystem/TagQuery.d.ts +0 -28
  260. package/build/dist/EntityComponentSystem/index.d.ts +0 -13
  261. package/build/dist/Graphics/Context/debug-text.d.ts +0 -28
  262. package/build/dist/Graphics/Context/material.d.ts +0 -102
  263. package/build/dist/Graphics/Context/render-source.d.ts +0 -7
  264. package/build/dist/Graphics/Context/render-target.d.ts +0 -60
  265. package/build/dist/Graphics/ParallaxComponent.d.ts +0 -6
  266. package/build/dist/Graphics/PostProcessor/PostProcessor.d.ts +0 -36
  267. package/build/dist/Graphics/index.d.ts +0 -47
  268. package/build/dist/Interfaces/Index.d.ts +0 -7
  269. package/build/dist/Math/coord-plane.d.ts +0 -15
  270. package/build/dist/Particles/index.d.ts +0 -5
  271. package/build/dist/Resources/Index.d.ts +0 -4
  272. package/build/dist/Resources/Sound/Index.d.ts +0 -4
  273. package/build/dist/TileMap/IsometricEntitySystem.d.ts +0 -12
  274. package/build/dist/TileMap/index.d.ts +0 -4
  275. package/build/dist/Util/Decorators.d.ts +0 -15
  276. package/build/dist/Util/EasingFunctions.d.ts +0 -89
  277. package/build/dist/Util/Index.d.ts +0 -6
  278. package/deno.json +0 -10
  279. package/playground/README.md +0 -71
  280. package/playground/index.html +0 -75
  281. package/playground/package-lock.json +0 -1954
  282. package/playground/package.json +0 -27
  283. package/playground/public/favicon.ico +0 -0
  284. package/playground/public/icon.png +0 -0
  285. package/playground/public/logo-white@2x.png +0 -0
  286. package/playground/public/logo@2x.png +0 -0
  287. package/playground/public/player-run.png +0 -0
  288. package/playground/public/rpg-audio/License.txt +0 -21
  289. package/playground/public/rpg-audio/audio/handleCoins.ogg +0 -0
  290. package/playground/public/social.jpg +0 -0
  291. package/playground/public/social.png +0 -0
  292. package/playground/public/tiny-town/License.txt +0 -22
  293. package/playground/public/tiny-town/tilemap/tilemap.png +0 -0
  294. package/playground/tsconfig.json +0 -26
  295. package/playground/tsdown.config.ts +0 -13
  296. package/playground/vite.config.ts +0 -5
  297. /package/build/dist/{Collision/CollisionType.d.ts → collision/collision-type.d.ts} +0 -0
  298. /package/build/dist/{Collision/Detection/SpatialPartitionStrategy.d.ts → collision/detection/spatial-partition-strategy.d.ts} +0 -0
  299. /package/build/dist/{Collision/Group/CollisionGroup.d.ts → collision/group/collision-group.d.ts} +0 -0
  300. /package/build/dist/{Collision/Solver/ContactBias.d.ts → collision/solver/contact-bias.d.ts} +0 -0
  301. /package/build/dist/{Collision/SolverStrategy.d.ts → collision/solver-strategy.d.ts} +0 -0
  302. /package/build/dist/{Context.d.ts → context.d.ts} +0 -0
  303. /package/build/dist/{Deprecated.d.ts → deprecated.d.ts} +0 -0
  304. /package/build/dist/{EntityComponentSystem/Priority.d.ts → entity-component-system/priority.d.ts} +0 -0
  305. /package/build/dist/{EntityComponentSystem/Types.d.ts → entity-component-system/types.d.ts} +0 -0
  306. /package/build/dist/{EventEmitter.d.ts → event-emitter.d.ts} +0 -0
  307. /package/build/dist/{Events/ExEvent.d.ts → events/ex-event.d.ts} +0 -0
  308. /package/build/dist/{Flags.d.ts → flags.d.ts} +0 -0
  309. /package/build/dist/{GarbageCollector.d.ts → garbage-collector.d.ts} +0 -0
  310. /package/build/dist/{Graphics/Context → graphics/context}/quad-index-buffer.d.ts +0 -0
  311. /package/build/dist/{Graphics/Context → graphics/context}/uniform-buffer.d.ts +0 -0
  312. /package/build/dist/{Graphics/Context → graphics/context}/vertex-buffer.d.ts +0 -0
  313. /package/build/dist/{Graphics/Context → graphics/context}/vertex-layout.d.ts +0 -0
  314. /package/build/dist/{Graphics/Filtering.d.ts → graphics/filtering.d.ts} +0 -0
  315. /package/build/dist/{Graphics/GraphicsDiagnostics.d.ts → graphics/graphics-diagnostics.d.ts} +0 -0
  316. /package/build/dist/{Graphics/PostProcessor/ColorBlindnessMode.d.ts → graphics/post-processor/color-blindness-mode.d.ts} +0 -0
  317. /package/build/dist/{Graphics/Wrapping.d.ts → graphics/wrapping.d.ts} +0 -0
  318. /package/build/dist/{Id.d.ts → id.d.ts} +0 -0
  319. /package/build/dist/{Input/CapturePointerConfig.d.ts → input/capture-pointer-config.d.ts} +0 -0
  320. /package/build/dist/{Input/NativePointerButton.d.ts → input/native-pointer-button.d.ts} +0 -0
  321. /package/build/dist/{Input/PointerButton.d.ts → input/pointer-button.d.ts} +0 -0
  322. /package/build/dist/{Input/PointerScope.d.ts → input/pointer-scope.d.ts} +0 -0
  323. /package/build/dist/{Input/PointerType.d.ts → input/pointer-type.d.ts} +0 -0
  324. /package/build/dist/{Input/WheelDeltaMode.d.ts → input/wheel-delta-mode.d.ts} +0 -0
  325. /package/build/dist/{Interfaces/Audio.d.ts → interfaces/audio.d.ts} +0 -0
  326. /package/build/dist/{Interfaces/Clonable.d.ts → interfaces/clonable.d.ts} +0 -0
  327. /package/build/dist/{Interfaces/Loadable.d.ts → interfaces/loadable.d.ts} +0 -0
  328. /package/build/dist/{Math → math}/bezier-curve.d.ts +0 -0
  329. /package/build/dist/{Math → math}/easings.d.ts +0 -0
  330. /package/build/dist/{Math → math}/lerp.d.ts +0 -0
  331. /package/build/dist/{Math → math}/matrix.d.ts +0 -0
  332. /package/build/dist/{Math → math}/projection.d.ts +0 -0
  333. /package/build/dist/{Math/Random.d.ts → math/random.d.ts} +0 -0
  334. /package/build/dist/{Math → math}/rotation-type.d.ts +0 -0
  335. /package/build/dist/{Math → math}/transform.d.ts +0 -0
  336. /package/build/dist/{Math → math}/vector-view.d.ts +0 -0
  337. /package/build/dist/{Math → math}/watch-vector.d.ts +0 -0
  338. /package/build/dist/{Particles/EmitterType.d.ts → particles/emitter-type.d.ts} +0 -0
  339. /package/build/dist/{Polyfill.d.ts → polyfill.d.ts} +0 -0
  340. /package/build/dist/{Resources/Sound/AudioContext.d.ts → resources/sound/audio-context.d.ts} +0 -0
  341. /package/build/dist/{Util/Assert.d.ts → util/assert.d.ts} +0 -0
  342. /package/build/dist/{Util/Fps.d.ts → util/fps.d.ts} +0 -0
  343. /package/build/dist/{Util/Future.d.ts → util/future.d.ts} +0 -0
  344. /package/build/dist/{Util/IFrame.d.ts → util/iframe.d.ts} +0 -0
  345. /package/build/dist/{Util/Observable.d.ts → util/observable.d.ts} +0 -0
  346. /package/build/dist/{Util/Required.d.ts → util/required.d.ts} +0 -0
  347. /package/build/dist/{Util/Semaphore.d.ts → util/semaphore.d.ts} +0 -0
  348. /package/build/dist/{Util/Toaster.d.ts → util/toaster.d.ts} +0 -0
  349. /package/build/dist/{Util/Watch.d.ts → util/watch.d.ts} +0 -0
  350. /package/build/dist/{Util/WebAudio.d.ts → util/web-audio.d.ts} +0 -0
@@ -1,2 +1,3 @@
1
1
  9223608d57af6efe3205baa924c16b8f4788bd5b
2
- 3cf93825d0a90e93651f058bfd200df0c43f47db
2
+ 3cf93825d0a90e93651f058bfd200df0c43f47db
3
+ 11edff9e62a6ecc4b2dadea4eaca2645f5a86dea
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,195 @@ 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
+ - 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.
41
+ - 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.
42
+ - Build: TypeDoc runner has been replaced by `site/scripts/gen-typedoc-api.mjs`.
11
43
 
12
44
  ### Deprecated
13
45
 
14
- -
46
+ - `ex.Pool` renamed to `ex.ArenaPool`
15
47
 
16
48
  ### Added
17
49
 
18
- -
50
+ - 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
51
+ - 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:
52
+ - 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.
53
+ - 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.
54
+ - 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.
55
+ - `ex.Material` can now run multipass pipelines, with `MaterialOptions` typed as a union so only valid combinations compile:
56
+ - `fragmentSource` only — single-pass custom shading of the graphic, exactly as before
57
+ - `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
58
+ - `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
59
+ - `padding` (with `passes`) — extra transparent source pixels around the graphic so blur/glow halos are not clipped to the quad
60
+ - the material's custom `uniforms` and built-ins (`u_opacity`, `u_color`, `u_graphic_resolution`, `u_size`) are forwarded to every pass
61
+ - `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.
62
+ - New built-in effects usable per-graphic or fullscreen, each a `ShaderPipelineLike` object with live-tunable settings:
63
+ - `ex.BlurEffect({ graphicsContext, scale, strength })` — separable gaussian blur, animate `blur.strength` any time
64
+ - `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
65
+ - `ex.BloomEffect({ graphicsContext, threshold, intensity, levels })` — progressive downsample/upsample ladder bloom implemented as a custom pass graph, with live-tunable `threshold`/`intensity`
66
+ - The underlying pass factories `ex.createBlurPasses(...)`/`ex.createGlowPasses(...)` are also exported for splicing into custom pass chains
67
+
68
+ ```typescript
69
+ const blur = new ex.BlurEffect({ graphicsContext, strength: 2 });
70
+ actor.graphics.material = new ex.Material({
71
+ graphicsContext,
72
+ passes: blur,
73
+ padding: 16 // blur can bleed 16px outside the sprite without clipping
74
+ });
75
+ blur.strength = 4; // live-tunable any time
76
+
77
+ // fullscreen: effects can be added as post processors directly
78
+ game.graphicsContext.addPostProcessor(new ex.BloomEffect({ graphicsContext, threshold: 0.6 }));
79
+ ```
80
+
81
+ - 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.
82
+
83
+ ```typescript
84
+ const game = new ex.Engine({ lighting: true });
85
+ const lamp = new ex.Actor({ pos: ex.vec(100, 100) });
86
+ lamp.addComponent(new ex.PointLightComponent({ color: ex.Color.fromRGB(255, 200, 80), radius: 200 }));
87
+ ```
88
+
89
+ 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:
90
+
91
+ ```typescript
92
+ const game = new ex.Engine({
93
+ lighting: {
94
+ enabled: true,
95
+ zIndex: 100, // z-index of the lighting overlay
96
+ cullPadding: 64, // world-pixel padding around the camera frustum when culling lights/occluders
97
+ ambientIntensity: 0.1, // ambient brightness floor (0.0 to 1.0)
98
+ ambientColor: ex.Color.fromRGB(60, 60, 200), // tints the darkness veil toward this color
99
+ tintAlphaFactor: 0.35, // fraction of a light's intensity used for its colored tint
100
+ shadowNearOpacity: 0.92, // occluder shadow opacity at the occluder's edge
101
+ shadowMidOpacity: 0.6 // occluder shadow opacity at 40% of the shadow's reach
102
+ }
103
+ });
104
+ ```
105
+
106
+ Any entity with a collider-like shape can cast a dynamic shadow by adding a `LightOccluderComponent`:
107
+
108
+ ```typescript
109
+ const crate = new ex.Actor({ pos: ex.vec(300, 200), width: 40, height: 40 });
110
+ crate.addComponent(new ex.LightOccluderComponent({ shape: { kind: 'box', width: 40, height: 40 } }));
111
+ ```
112
+ - 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.
113
+ - 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.
114
+
115
+ 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:
116
+
117
+ ```typescript
118
+ const material = game.graphicsContext.createMaterial({
119
+ name: 'fade',
120
+ fragmentSource: ex.glsl`
121
+ in vec2 v_uv;
122
+ uniform sampler2D u_graphic;
123
+ out vec4 fragColor;
124
+
125
+ void main() {
126
+ vec4 color = texture(u_graphic, v_uv);
127
+ color.a *= 0.5; // no manual premultiply needed
128
+ fragColor = color;
129
+ }`
130
+ });
131
+ ```
132
+
133
+ 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.
134
+
135
+ - Added new lerp modes for color which can be chosen by aptional parameter in `Color.lerp` or by calling different methods:
136
+ ```typescript
137
+ Color.lerp(colorA, colorB, t); // 'hsl' by default
138
+ // eqivalent to:
139
+ Color.lerpHSL(colorA, colorB, t);
140
+
141
+ Color.lerp(colorA, colorB, t, 'rgb');
142
+ // eqivalent to:
143
+ Color.lerpRGB(colorA, colorB, t);
144
+
145
+ Color.lerp(colorA, colorB, t, 'lrgb');
146
+ // equivalent to:
147
+ Color.lerpLRGB(colorA, colorB, t);
148
+ ```
149
+ - Added `Color.fromFloatArray([0.0, 0.0, 0.0, 1.0])` and `Color.toFloatArray()`
150
+ - Sound objects can be created from `Blob`s:
151
+ ```typescript
152
+ const sound = await Sound.fromBlob(instanceOfBlob)
153
+ sound.play()
154
+ ```
155
+ - 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.
156
+ ```bash
157
+ # in site/
158
+ npm run build:docusaurus-plugin-typedoc-api # build the vendored plugin
159
+ npm run api:generate # run typedoc + normalize
160
+ ```
161
+ - 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
162
 
20
163
  ### Fixed
21
164
 
22
- -
165
+ - 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
166
+ - 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
167
+ - 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
168
+ - 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
169
+ - 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
170
+ - 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.
171
+ - 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
172
+ - 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
173
+ - 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`
174
+ - 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
175
+ - 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
176
+ - Performance: Font/Text now use smaller texture sizes, improving performance on Safari especially when rendering text
177
+ - Fixed `Color.screen()` blend mode bug where both operands were incorrectly using the parameter color instead of `this` and the parameter
178
+ - Fixed `Color.toRGBA()` logic error in alpha check condition (`||` changed to `&&`)
179
+ - Fixed `Color.toHSLA()` to output valid CSS format with degrees for hue and percentages for saturation/lightness
180
+ - Fixed `Color.toHex()` to properly clamp RGB values to 0-255 range
181
+ - 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
182
+ - 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
183
+ - Fixed `BoundingBox.intersect()` return type to be explicitly `Vector | null` (callers already null-checked, but the type was not reflected)
23
184
 
24
185
  ### Updates
25
186
 
26
- -
187
+ - 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)
188
+ - 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
189
+ - Deps: Upgraded to TypeDoc 0.28.19 (vendored plugin) and removed the top-level `typedoc` devDependency / `overrides`
190
+ - 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`
191
+ - Deps: Upgraded `coveralls-next` 6.0.1 → 6.0.2
192
+ - Deps: Removed unused `@types/marked` devDependency and `wallaby.js` test runner config
193
+ - 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
194
+ - CI: The `eslint` config dropped the obsolete `parserOptions.project` overrides now that typescript-eslint handles project context differently
27
195
 
28
196
  ### Changed
29
197
 
30
- -
198
+ - 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
199
 
32
200
  <!--------------------------------- DO NOT EDIT BELOW THIS LINE --------------------------------->
33
201
  <!--------------------------------- DO NOT EDIT BELOW THIS LINE --------------------------------->
@@ -1308,11 +1476,18 @@ const hits = engine.currentScene.physics.rayCast(
1308
1476
 
1309
1477
  ### Updates
1310
1478
 
1311
- -
1479
+ - 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)
1480
+ - 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
1481
+ - Deps: Upgraded to TypeDoc 0.28.19 (vendored plugin) and removed the top-level `typedoc` devDependency / `overrides`
1482
+ - 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`
1483
+ - Deps: Upgraded `coveralls-next` 6.0.1 → 6.0.2
1484
+ - Deps: Removed unused `@types/marked` devDependency and `wallaby.js` test runner config
1485
+ - 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
1486
+ - CI: The `eslint` config dropped the obsolete `parserOptions.project` overrides now that typescript-eslint handles project context differently
1312
1487
 
1313
1488
  ### Changed
1314
1489
 
1315
- -
1490
+ - 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
1491
 
1317
1492
  ## [v0.28.2]
1318
1493
 
@@ -1,6 +1,6 @@
1
- import type { Entity } from '../../EntityComponentSystem';
2
- import type { Action } from '../Action';
3
- import { ActionContext } from '../ActionContext';
1
+ import type { Entity } from '../../entity-component-system';
2
+ import type { Action } from '../action';
3
+ import { ActionContext } from '../action-context';
4
4
  /**
5
5
  * Action that can represent a sequence of actions, this can be useful in conjunction with
6
6
  * {@apilink ParallelActions} to run multiple sequences in parallel.
@@ -1,5 +1,5 @@
1
- import type { Entity } from '../../EntityComponentSystem/Entity';
2
- import type { Action } from '../Action';
1
+ import type { Entity } from '../../entity-component-system/entity';
2
+ import type { Action } from '../action';
3
3
  export declare class Blink implements Action {
4
4
  id: number;
5
5
  private _graphics;
@@ -1,4 +1,4 @@
1
- import type { Action } from '../Action';
1
+ import type { Action } from '../action';
2
2
  export declare class CallMethod implements Action {
3
3
  id: number;
4
4
  private _method;
@@ -1,6 +1,6 @@
1
- import type { Entity } from '../../EntityComponentSystem';
2
- import type { Vector } from '../../Math';
3
- import type { Action } from '../Action';
1
+ import type { Entity } from '../../entity-component-system';
2
+ import type { Vector } from '../../math';
3
+ import type { Action } from '../action';
4
4
  export interface CurveByOptions {
5
5
  /**
6
6
  * Bezier Curve relative to the current actor position to move
@@ -1,6 +1,6 @@
1
- import type { Entity } from '../../EntityComponentSystem';
2
- import type { Vector } from '../../Math';
3
- import type { Action } from '../Action';
1
+ import type { Entity } from '../../entity-component-system';
2
+ import type { Vector } from '../../math';
3
+ import type { Action } from '../action';
4
4
  export interface CurveToOptions {
5
5
  /**
6
6
  * Bezier Curve in world coordinates to animate towards
@@ -1,4 +1,4 @@
1
- import type { Action } from '../Action';
1
+ import type { Action } from '../action';
2
2
  export declare class Delay implements Action {
3
3
  id: number;
4
4
  private _elapsedTime;
@@ -1,5 +1,5 @@
1
- import type { Entity } from '../../EntityComponentSystem/Entity';
2
- import type { Action } from '../Action';
1
+ import type { Entity } from '../../entity-component-system/entity';
2
+ import type { Action } from '../action';
3
3
  export declare class Die implements Action {
4
4
  id: number;
5
5
  private _entity;
@@ -1,5 +1,5 @@
1
- import type { Entity } from '../../EntityComponentSystem/Entity';
2
- import type { Action } from '../Action';
1
+ import type { Entity } from '../../entity-component-system/entity';
2
+ import type { Action } from '../action';
3
3
  /**
4
4
  * @deprecated use moveBy({offset: Vector, duration: number, easing: EasingFunction})
5
5
  */
@@ -1,5 +1,5 @@
1
- import type { Entity } from '../../EntityComponentSystem/Entity';
2
- import type { Action } from '../Action';
1
+ import type { Entity } from '../../entity-component-system/entity';
2
+ import type { Action } from '../action';
3
3
  /**
4
4
  * @deprecated use moveTo({pos: Vector, duration: number, easing: EasingFunction})
5
5
  */
@@ -1,5 +1,5 @@
1
- import type { Entity } from '../../EntityComponentSystem/Entity';
2
- import type { Action } from '../Action';
1
+ import type { Entity } from '../../entity-component-system/entity';
2
+ import type { Action } from '../action';
3
3
  export declare class Fade implements Action {
4
4
  id: number;
5
5
  private _graphics;
@@ -1,6 +1,6 @@
1
- import type { Entity } from '../../EntityComponentSystem/Entity';
2
- import type { Action } from '../Action';
3
- import type { Color } from '../../Color';
1
+ import type { Entity } from '../../entity-component-system/entity';
2
+ import type { Action } from '../action';
3
+ import type { Color } from '../../color';
4
4
  export declare class Flash implements Action {
5
5
  id: number;
6
6
  private _graphics;
@@ -1,5 +1,5 @@
1
- import type { Entity } from '../../EntityComponentSystem/Entity';
2
- import type { Action } from '../Action';
1
+ import type { Entity } from '../../entity-component-system/entity';
2
+ import type { Action } from '../action';
3
3
  export declare class Follow implements Action {
4
4
  id: number;
5
5
  private _tx;
@@ -1,5 +1,5 @@
1
- import type { Entity } from '../../EntityComponentSystem/Entity';
2
- import type { Action } from '../Action';
1
+ import type { Entity } from '../../entity-component-system/entity';
2
+ import type { Action } from '../action';
3
3
  export declare class Meet implements Action {
4
4
  id: number;
5
5
  private _tx;
@@ -1,12 +1,11 @@
1
- import type { Entity } from '../../EntityComponentSystem/Entity';
2
- import type { Easing } from '../../Math';
3
- import { Vector } from '../../Math/vector';
4
- import type { EasingFunction } from '../../Util/EasingFunctions';
5
- import type { Action } from '../Action';
1
+ import type { Entity } from '../../entity-component-system/entity';
2
+ import type { Easing } from '../../math';
3
+ import { Vector } from '../../math/vector';
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
- import type { Entity } from '../../EntityComponentSystem/Entity';
2
- import type { Easing } from '../../Math';
3
- import { Vector } from '../../Math/vector';
4
- import type { EasingFunction } from '../../Util/EasingFunctions';
5
- import type { Action } from '../Action';
1
+ import type { Entity } from '../../entity-component-system/entity';
2
+ import type { Easing } from '../../math';
3
+ import { Vector } from '../../math/vector';
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;
@@ -1,5 +1,5 @@
1
- import type { Entity } from '../../EntityComponentSystem';
2
- import type { Action } from '../Action';
1
+ import type { Entity } from '../../entity-component-system';
2
+ import type { Action } from '../action';
3
3
  /**
4
4
  * Action that can run multiple {@apilink Action}s or {@apilink ActionSequence}s at the same time
5
5
  */
@@ -1,6 +1,6 @@
1
- import type { Entity } from '../../EntityComponentSystem/Entity';
2
- import type { Action } from '../Action';
3
- import { ActionContext } from '../ActionContext';
1
+ import type { Entity } from '../../entity-component-system/entity';
2
+ import type { Action } from '../action';
3
+ import { ActionContext } from '../action-context';
4
4
  /**
5
5
  * RepeatForever Action implementation, it is recommended you use the fluent action
6
6
  * context API.
@@ -1,6 +1,6 @@
1
- import type { Entity } from '../../EntityComponentSystem/Entity';
2
- import type { Action } from '../Action';
3
- import { ActionContext } from '../ActionContext';
1
+ import type { Entity } from '../../entity-component-system/entity';
2
+ import type { Action } from '../action';
3
+ import { ActionContext } from '../action-context';
4
4
  export declare class Repeat implements Action {
5
5
  id: number;
6
6
  private _actionQueue;
@@ -1,6 +1,6 @@
1
- import type { Action } from '../Action';
2
- import type { Entity } from '../../EntityComponentSystem/Entity';
3
- import { RotationType } from '../../Math';
1
+ import type { Action } from '../action';
2
+ import type { Entity } from '../../entity-component-system/entity';
3
+ import { RotationType } from '../../math';
4
4
  export interface RotateByOptions {
5
5
  /**
6
6
  * Angle in radians to offset from the current and rotate
@@ -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,6 +1,6 @@
1
- import type { Action } from '../Action';
2
- import { RotationType } from '../../Math';
3
- import type { Entity } from '../../EntityComponentSystem/Entity';
1
+ import type { Action } from '../action';
2
+ import { RotationType } from '../../math';
3
+ import type { Entity } from '../../entity-component-system/entity';
4
4
  export interface RotateToOptions {
5
5
  /**
6
6
  * Absolute angle to rotate to in radians
@@ -1,6 +1,6 @@
1
- import { Vector } from '../../Math/vector';
2
- import type { Entity } from '../../EntityComponentSystem/Entity';
3
- import type { Action } from '../Action';
1
+ import { Vector } from '../../math/vector';
2
+ import type { Entity } from '../../entity-component-system/entity';
3
+ import type { Action } from '../action';
4
4
  export interface ScaleByOptions {
5
5
  /**
6
6
  * Absolute scale to change to
@@ -1,6 +1,6 @@
1
- import { Vector } from '../../Math/vector';
2
- import type { Action } from '../Action';
3
- import type { Entity } from '../../EntityComponentSystem/Entity';
1
+ import { Vector } from '../../math/vector';
2
+ import type { Action } from '../action';
3
+ import type { Entity } from '../../entity-component-system/entity';
4
4
  export interface ScaleToOptions {
5
5
  /**
6
6
  * Absolute scale to change to