excalibur 0.25.2 → 0.25.3

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 (446) hide show
  1. package/CHANGELOG.md +7 -2
  2. package/build/dist/Actions/Action/Blink.js +51 -0
  3. package/build/dist/Actions/Action/Blink.js.map +1 -0
  4. package/build/dist/Actions/Action/CallMethod.js +21 -0
  5. package/build/dist/Actions/Action/CallMethod.js.map +1 -0
  6. package/build/dist/Actions/Action/Delay.js +25 -0
  7. package/build/dist/Actions/Action/Delay.js.map +1 -0
  8. package/build/dist/Actions/Action/Die.js +22 -0
  9. package/build/dist/Actions/Action/Die.js.map +1 -0
  10. package/build/dist/Actions/Action/EaseTo.js +69 -0
  11. package/build/dist/Actions/Action/EaseTo.js.map +1 -0
  12. package/build/dist/Actions/Action/Fade.js +46 -0
  13. package/build/dist/Actions/Action/Fade.js.map +1 -0
  14. package/build/dist/Actions/Action/Follow.js +55 -0
  15. package/build/dist/Actions/Action/Follow.js.map +1 -0
  16. package/build/dist/Actions/Action/Meet.js +52 -0
  17. package/build/dist/Actions/Action/Meet.js.map +1 -0
  18. package/build/dist/Actions/Action/MoveBy.js +47 -0
  19. package/build/dist/Actions/Action/MoveBy.js.map +1 -0
  20. package/build/dist/Actions/Action/MoveTo.js +40 -0
  21. package/build/dist/Actions/Action/MoveTo.js.map +1 -0
  22. package/build/dist/Actions/Action/Repeat.js +31 -0
  23. package/build/dist/Actions/Action/Repeat.js.map +1 -0
  24. package/build/dist/Actions/Action/RepeatForever.js +37 -0
  25. package/build/dist/Actions/Action/RepeatForever.js.map +1 -0
  26. package/build/dist/Actions/Action/RotateBy.js +91 -0
  27. package/build/dist/Actions/Action/RotateBy.js.map +1 -0
  28. package/build/dist/Actions/Action/RotateTo.js +90 -0
  29. package/build/dist/Actions/Action/RotateTo.js.map +1 -0
  30. package/build/dist/Actions/Action/ScaleBy.js +45 -0
  31. package/build/dist/Actions/Action/ScaleBy.js.map +1 -0
  32. package/build/dist/Actions/Action/ScaleTo.js +56 -0
  33. package/build/dist/Actions/Action/ScaleTo.js.map +1 -0
  34. package/build/dist/Actions/Action.js +2 -0
  35. package/build/dist/Actions/Action.js.map +1 -0
  36. package/build/dist/Actions/ActionContext.js +305 -0
  37. package/build/dist/Actions/ActionContext.js.map +1 -0
  38. package/build/dist/Actions/ActionQueue.js +87 -0
  39. package/build/dist/Actions/ActionQueue.js.map +1 -0
  40. package/build/dist/Actions/Actionable.js +2 -0
  41. package/build/dist/Actions/Actionable.js.map +1 -0
  42. package/build/dist/Actions/ActionsComponent.js +198 -0
  43. package/build/dist/Actions/ActionsComponent.js.map +1 -0
  44. package/build/dist/Actions/ActionsSystem.js +18 -0
  45. package/build/dist/Actions/ActionsSystem.js.map +1 -0
  46. package/build/dist/Actions/Index.js +22 -0
  47. package/build/dist/Actions/Index.js.map +1 -0
  48. package/build/dist/Actions/RotationType.js +27 -0
  49. package/build/dist/Actions/RotationType.js.map +1 -0
  50. package/build/dist/Actor.js +831 -0
  51. package/build/dist/Actor.js.map +1 -0
  52. package/build/dist/Camera.js +663 -0
  53. package/build/dist/Camera.js.map +1 -0
  54. package/build/dist/Class.js +48 -0
  55. package/build/dist/Class.js.map +1 -0
  56. package/build/dist/Collision/BodyComponent.js +351 -0
  57. package/build/dist/Collision/BodyComponent.js.map +1 -0
  58. package/build/dist/Collision/BoundingBox.js +361 -0
  59. package/build/dist/Collision/BoundingBox.js.map +1 -0
  60. package/build/dist/Collision/ColliderComponent.js +198 -0
  61. package/build/dist/Collision/ColliderComponent.js.map +1 -0
  62. package/build/dist/Collision/Colliders/CircleCollider.js +264 -0
  63. package/build/dist/Collision/Colliders/CircleCollider.js.map +1 -0
  64. package/build/dist/Collision/Colliders/ClosestLineJumpTable.js +211 -0
  65. package/build/dist/Collision/Colliders/ClosestLineJumpTable.js.map +1 -0
  66. package/build/dist/Collision/Colliders/Collider.js +26 -0
  67. package/build/dist/Collision/Colliders/Collider.js.map +1 -0
  68. package/build/dist/Collision/Colliders/CollisionJumpTable.js +301 -0
  69. package/build/dist/Collision/Colliders/CollisionJumpTable.js.map +1 -0
  70. package/build/dist/Collision/Colliders/CompositeCollider.js +232 -0
  71. package/build/dist/Collision/Colliders/CompositeCollider.js.map +1 -0
  72. package/build/dist/Collision/Colliders/EdgeCollider.js +253 -0
  73. package/build/dist/Collision/Colliders/EdgeCollider.js.map +1 -0
  74. package/build/dist/Collision/Colliders/PolygonCollider.js +389 -0
  75. package/build/dist/Collision/Colliders/PolygonCollider.js.map +1 -0
  76. package/build/dist/Collision/Colliders/SeparatingAxis.js +67 -0
  77. package/build/dist/Collision/Colliders/SeparatingAxis.js.map +1 -0
  78. package/build/dist/Collision/Colliders/Shape.js +102 -0
  79. package/build/dist/Collision/Colliders/Shape.js.map +1 -0
  80. package/build/dist/Collision/CollisionSystem.js +116 -0
  81. package/build/dist/Collision/CollisionSystem.js.map +1 -0
  82. package/build/dist/Collision/CollisionType.js +33 -0
  83. package/build/dist/Collision/CollisionType.js.map +1 -0
  84. package/build/dist/Collision/Detection/CollisionContact.js +46 -0
  85. package/build/dist/Collision/Detection/CollisionContact.js.map +1 -0
  86. package/build/dist/Collision/Detection/CollisionProcessor.js +2 -0
  87. package/build/dist/Collision/Detection/CollisionProcessor.js.map +1 -0
  88. package/build/dist/Collision/Detection/DynamicTree.js +442 -0
  89. package/build/dist/Collision/Detection/DynamicTree.js.map +1 -0
  90. package/build/dist/Collision/Detection/DynamicTreeCollisionProcessor.js +211 -0
  91. package/build/dist/Collision/Detection/DynamicTreeCollisionProcessor.js.map +1 -0
  92. package/build/dist/Collision/Detection/Pair.js +92 -0
  93. package/build/dist/Collision/Detection/Pair.js.map +1 -0
  94. package/build/dist/Collision/Group/CollisionGroup.js +114 -0
  95. package/build/dist/Collision/Group/CollisionGroup.js.map +1 -0
  96. package/build/dist/Collision/Group/CollisionGroupManager.js +52 -0
  97. package/build/dist/Collision/Group/CollisionGroupManager.js.map +1 -0
  98. package/build/dist/Collision/Index.js +29 -0
  99. package/build/dist/Collision/Index.js.map +1 -0
  100. package/build/dist/Collision/Integrator.js +11 -0
  101. package/build/dist/Collision/Integrator.js.map +1 -0
  102. package/build/dist/Collision/MotionSystem.js +42 -0
  103. package/build/dist/Collision/MotionSystem.js.map +1 -0
  104. package/build/dist/Collision/Physics.js +163 -0
  105. package/build/dist/Collision/Physics.js.map +1 -0
  106. package/build/dist/Collision/Side.js +51 -0
  107. package/build/dist/Collision/Side.js.map +1 -0
  108. package/build/dist/Collision/Solver/ArcadeSolver.js +101 -0
  109. package/build/dist/Collision/Solver/ArcadeSolver.js.map +1 -0
  110. package/build/dist/Collision/Solver/ContactConstraintPoint.js +83 -0
  111. package/build/dist/Collision/Solver/ContactConstraintPoint.js.map +1 -0
  112. package/build/dist/Collision/Solver/RealisticSolver.js +248 -0
  113. package/build/dist/Collision/Solver/RealisticSolver.js.map +1 -0
  114. package/build/dist/Collision/Solver/Solver.js +37 -0
  115. package/build/dist/Collision/Solver/Solver.js.map +1 -0
  116. package/build/dist/Color.js +461 -0
  117. package/build/dist/Color.js.map +1 -0
  118. package/build/dist/Configurable.js +32 -0
  119. package/build/dist/Configurable.js.map +1 -0
  120. package/build/dist/Debug/Debug.js +375 -0
  121. package/build/dist/Debug/Debug.js.map +1 -0
  122. package/build/dist/Debug/DebugFlags.js +40 -0
  123. package/build/dist/Debug/DebugFlags.js.map +1 -0
  124. package/build/dist/Debug/DebugSystem.js +251 -0
  125. package/build/dist/Debug/DebugSystem.js.map +1 -0
  126. package/build/dist/Debug/index.js +4 -0
  127. package/build/dist/Debug/index.js.map +1 -0
  128. package/build/dist/Deprecated.js +2 -0
  129. package/build/dist/Deprecated.js.map +1 -0
  130. package/build/dist/Drawing/Animation.js +294 -0
  131. package/build/dist/Drawing/Animation.js.map +1 -0
  132. package/build/dist/Drawing/CanvasDrawComponent.js +16 -0
  133. package/build/dist/Drawing/CanvasDrawComponent.js.map +1 -0
  134. package/build/dist/Drawing/CanvasDrawingSystem.js +95 -0
  135. package/build/dist/Drawing/CanvasDrawingSystem.js.map +1 -0
  136. package/build/dist/Drawing/Index.js +10 -0
  137. package/build/dist/Drawing/Index.js.map +1 -0
  138. package/build/dist/Drawing/Polygon.js +139 -0
  139. package/build/dist/Drawing/Polygon.js.map +1 -0
  140. package/build/dist/Drawing/Sprite.js +355 -0
  141. package/build/dist/Drawing/Sprite.js.map +1 -0
  142. package/build/dist/Drawing/SpriteEffects.js +246 -0
  143. package/build/dist/Drawing/SpriteEffects.js.map +1 -0
  144. package/build/dist/Drawing/SpriteSheet.js +413 -0
  145. package/build/dist/Drawing/SpriteSheet.js.map +1 -0
  146. package/build/dist/Drawing/Texture.js +69 -0
  147. package/build/dist/Drawing/Texture.js.map +1 -0
  148. package/build/dist/Engine.d.ts +4 -1
  149. package/build/dist/Engine.js +985 -0
  150. package/build/dist/Engine.js.map +1 -0
  151. package/build/dist/EntityComponentSystem/Component.js +65 -0
  152. package/build/dist/EntityComponentSystem/Component.js.map +1 -0
  153. package/build/dist/EntityComponentSystem/Components/MotionComponent.js +33 -0
  154. package/build/dist/EntityComponentSystem/Components/MotionComponent.js.map +1 -0
  155. package/build/dist/EntityComponentSystem/Components/TransformComponent.js +249 -0
  156. package/build/dist/EntityComponentSystem/Components/TransformComponent.js.map +1 -0
  157. package/build/dist/EntityComponentSystem/Entity.js +452 -0
  158. package/build/dist/EntityComponentSystem/Entity.js.map +1 -0
  159. package/build/dist/EntityComponentSystem/EntityManager.js +128 -0
  160. package/build/dist/EntityComponentSystem/EntityManager.js.map +1 -0
  161. package/build/dist/EntityComponentSystem/Query.js +91 -0
  162. package/build/dist/EntityComponentSystem/Query.js.map +1 -0
  163. package/build/dist/EntityComponentSystem/QueryManager.js +90 -0
  164. package/build/dist/EntityComponentSystem/QueryManager.js.map +1 -0
  165. package/build/dist/EntityComponentSystem/System.js +76 -0
  166. package/build/dist/EntityComponentSystem/System.js.map +1 -0
  167. package/build/dist/EntityComponentSystem/SystemManager.js +102 -0
  168. package/build/dist/EntityComponentSystem/SystemManager.js.map +1 -0
  169. package/build/dist/EntityComponentSystem/Util.js +5 -0
  170. package/build/dist/EntityComponentSystem/Util.js.map +1 -0
  171. package/build/dist/EntityComponentSystem/World.js +55 -0
  172. package/build/dist/EntityComponentSystem/World.js.map +1 -0
  173. package/build/dist/EntityComponentSystem/index.js +11 -0
  174. package/build/dist/EntityComponentSystem/index.js.map +1 -0
  175. package/build/dist/EventDispatcher.js +114 -0
  176. package/build/dist/EventDispatcher.js.map +1 -0
  177. package/build/dist/Events/ExEvent.js +12 -0
  178. package/build/dist/Events/ExEvent.js.map +1 -0
  179. package/build/dist/Events/MediaEvents.js +75 -0
  180. package/build/dist/Events/MediaEvents.js.map +1 -0
  181. package/build/dist/Events/PointerEvents.js +52 -0
  182. package/build/dist/Events/PointerEvents.js.map +1 -0
  183. package/build/dist/Events.js +497 -0
  184. package/build/dist/Events.js.map +1 -0
  185. package/build/dist/Flags.js +90 -0
  186. package/build/dist/Flags.js.map +1 -0
  187. package/build/dist/Graphics/Animation.js +310 -0
  188. package/build/dist/Graphics/Animation.js.map +1 -0
  189. package/build/dist/Graphics/Canvas.js +38 -0
  190. package/build/dist/Graphics/Canvas.js.map +1 -0
  191. package/build/dist/Graphics/Circle.js +47 -0
  192. package/build/dist/Graphics/Circle.js.map +1 -0
  193. package/build/dist/Graphics/Context/ExcaliburGraphicsContext.js +2 -0
  194. package/build/dist/Graphics/Context/ExcaliburGraphicsContext.js.map +1 -0
  195. package/build/dist/Graphics/Context/ExcaliburGraphicsContext2DCanvas.js +207 -0
  196. package/build/dist/Graphics/Context/ExcaliburGraphicsContext2DCanvas.js.map +1 -0
  197. package/build/dist/Graphics/Context/ExcaliburGraphicsContextWebGL.js +331 -0
  198. package/build/dist/Graphics/Context/ExcaliburGraphicsContextWebGL.js.map +1 -0
  199. package/build/dist/Graphics/Context/circle-renderer/circle-renderer.js +160 -0
  200. package/build/dist/Graphics/Context/circle-renderer/circle-renderer.js.map +1 -0
  201. package/build/dist/Graphics/Context/debug-text.js +47 -0
  202. package/build/dist/Graphics/Context/debug-text.js.map +1 -0
  203. package/build/dist/Graphics/Context/image-renderer/image-renderer.js +209 -0
  204. package/build/dist/Graphics/Context/image-renderer/image-renderer.js.map +1 -0
  205. package/build/dist/Graphics/Context/line-renderer/line-renderer.js +87 -0
  206. package/build/dist/Graphics/Context/line-renderer/line-renderer.js.map +1 -0
  207. package/build/dist/Graphics/Context/point-renderer/point-renderer.js +82 -0
  208. package/build/dist/Graphics/Context/point-renderer/point-renderer.js.map +1 -0
  209. package/build/dist/Graphics/Context/quad-index-buffer.js +69 -0
  210. package/build/dist/Graphics/Context/quad-index-buffer.js.map +1 -0
  211. package/build/dist/Graphics/Context/rectangle-renderer/rectangle-renderer.js +272 -0
  212. package/build/dist/Graphics/Context/rectangle-renderer/rectangle-renderer.js.map +1 -0
  213. package/build/dist/Graphics/Context/render-source.js +16 -0
  214. package/build/dist/Graphics/Context/render-source.js.map +1 -0
  215. package/build/dist/Graphics/Context/render-target.js +65 -0
  216. package/build/dist/Graphics/Context/render-target.js.map +1 -0
  217. package/build/dist/Graphics/Context/renderer.js +2 -0
  218. package/build/dist/Graphics/Context/renderer.js.map +1 -0
  219. package/build/dist/Graphics/Context/screen-pass-painter/screen-pass-painter.js +53 -0
  220. package/build/dist/Graphics/Context/screen-pass-painter/screen-pass-painter.js.map +1 -0
  221. package/build/dist/Graphics/Context/shader.js +236 -0
  222. package/build/dist/Graphics/Context/shader.js.map +1 -0
  223. package/build/dist/Graphics/Context/state-stack.js +27 -0
  224. package/build/dist/Graphics/Context/state-stack.js.map +1 -0
  225. package/build/dist/Graphics/Context/texture-loader.d.ts +8 -0
  226. package/build/dist/Graphics/Context/texture-loader.js +121 -0
  227. package/build/dist/Graphics/Context/texture-loader.js.map +1 -0
  228. package/build/dist/Graphics/Context/transform-stack.js +30 -0
  229. package/build/dist/Graphics/Context/transform-stack.js.map +1 -0
  230. package/build/dist/Graphics/Context/vertex-buffer.js +45 -0
  231. package/build/dist/Graphics/Context/vertex-buffer.js.map +1 -0
  232. package/build/dist/Graphics/Context/vertex-layout.js +93 -0
  233. package/build/dist/Graphics/Context/vertex-layout.js.map +1 -0
  234. package/build/dist/Graphics/Context/webgl-adapter.js +19 -0
  235. package/build/dist/Graphics/Context/webgl-adapter.js.map +1 -0
  236. package/build/dist/Graphics/Context/webgl-util.js +105 -0
  237. package/build/dist/Graphics/Context/webgl-util.js.map +1 -0
  238. package/build/dist/Graphics/DebugGraphicsComponent.js +15 -0
  239. package/build/dist/Graphics/DebugGraphicsComponent.js.map +1 -0
  240. package/build/dist/Graphics/Filtering.js +17 -0
  241. package/build/dist/Graphics/Filtering.js.map +1 -0
  242. package/build/dist/Graphics/Font.js +293 -0
  243. package/build/dist/Graphics/Font.js.map +1 -0
  244. package/build/dist/Graphics/FontCommon.js +109 -0
  245. package/build/dist/Graphics/FontCommon.js.map +1 -0
  246. package/build/dist/Graphics/Graphic.js +200 -0
  247. package/build/dist/Graphics/Graphic.js.map +1 -0
  248. package/build/dist/Graphics/GraphicsComponent.js +290 -0
  249. package/build/dist/Graphics/GraphicsComponent.js.map +1 -0
  250. package/build/dist/Graphics/GraphicsDiagnostics.js +9 -0
  251. package/build/dist/Graphics/GraphicsDiagnostics.js.map +1 -0
  252. package/build/dist/Graphics/GraphicsGroup.js +69 -0
  253. package/build/dist/Graphics/GraphicsGroup.js.map +1 -0
  254. package/build/dist/Graphics/GraphicsSystem.js +153 -0
  255. package/build/dist/Graphics/GraphicsSystem.js.map +1 -0
  256. package/build/dist/Graphics/ImageSource.js +116 -0
  257. package/build/dist/Graphics/ImageSource.js.map +1 -0
  258. package/build/dist/Graphics/Polygon.js +59 -0
  259. package/build/dist/Graphics/Polygon.js.map +1 -0
  260. package/build/dist/Graphics/PostProcessor/ColorBlindnessMode.js +7 -0
  261. package/build/dist/Graphics/PostProcessor/ColorBlindnessMode.js.map +1 -0
  262. package/build/dist/Graphics/PostProcessor/ColorBlindnessPostProcessor.js +52 -0
  263. package/build/dist/Graphics/PostProcessor/ColorBlindnessPostProcessor.js.map +1 -0
  264. package/build/dist/Graphics/PostProcessor/PostProcessor.js +2 -0
  265. package/build/dist/Graphics/PostProcessor/PostProcessor.js.map +1 -0
  266. package/build/dist/Graphics/PostProcessor/ScreenShader.js +56 -0
  267. package/build/dist/Graphics/PostProcessor/ScreenShader.js.map +1 -0
  268. package/build/dist/Graphics/Raster.js +207 -0
  269. package/build/dist/Graphics/Raster.js.map +1 -0
  270. package/build/dist/Graphics/Rectangle.js +29 -0
  271. package/build/dist/Graphics/Rectangle.js.map +1 -0
  272. package/build/dist/Graphics/Sprite.js +103 -0
  273. package/build/dist/Graphics/Sprite.js.map +1 -0
  274. package/build/dist/Graphics/SpriteFont.js +120 -0
  275. package/build/dist/Graphics/SpriteFont.js.map +1 -0
  276. package/build/dist/Graphics/SpriteSheet.js +115 -0
  277. package/build/dist/Graphics/SpriteSheet.js.map +1 -0
  278. package/build/dist/Graphics/Text.js +94 -0
  279. package/build/dist/Graphics/Text.js.map +1 -0
  280. package/build/dist/Graphics/index.js +42 -0
  281. package/build/dist/Graphics/index.js.map +1 -0
  282. package/build/dist/Id.js +8 -0
  283. package/build/dist/Id.js.map +1 -0
  284. package/build/dist/Input/CapturePointerConfig.js +5 -0
  285. package/build/dist/Input/CapturePointerConfig.js.map +1 -0
  286. package/build/dist/Input/EngineInput.js +2 -0
  287. package/build/dist/Input/EngineInput.js.map +1 -0
  288. package/build/dist/Input/Gamepad.js +358 -0
  289. package/build/dist/Input/Gamepad.js.map +1 -0
  290. package/build/dist/Input/Index.js +22 -0
  291. package/build/dist/Input/Index.js.map +1 -0
  292. package/build/dist/Input/Keyboard.js +267 -0
  293. package/build/dist/Input/Keyboard.js.map +1 -0
  294. package/build/dist/Input/NativePointerButton.js +12 -0
  295. package/build/dist/Input/NativePointerButton.js.map +1 -0
  296. package/build/dist/Input/PointerAbstraction.js +41 -0
  297. package/build/dist/Input/PointerAbstraction.js.map +1 -0
  298. package/build/dist/Input/PointerButton.js +12 -0
  299. package/build/dist/Input/PointerButton.js.map +1 -0
  300. package/build/dist/Input/PointerComponent.js +28 -0
  301. package/build/dist/Input/PointerComponent.js.map +1 -0
  302. package/build/dist/Input/PointerEvent.js +25 -0
  303. package/build/dist/Input/PointerEvent.js.map +1 -0
  304. package/build/dist/Input/PointerEventReceiver.js +414 -0
  305. package/build/dist/Input/PointerEventReceiver.js.map +1 -0
  306. package/build/dist/Input/PointerScope.js +16 -0
  307. package/build/dist/Input/PointerScope.js.map +1 -0
  308. package/build/dist/Input/PointerSystem.js +217 -0
  309. package/build/dist/Input/PointerSystem.js.map +1 -0
  310. package/build/dist/Input/PointerType.js +11 -0
  311. package/build/dist/Input/PointerType.js.map +1 -0
  312. package/build/dist/Input/WheelDeltaMode.js +7 -0
  313. package/build/dist/Input/WheelDeltaMode.js.map +1 -0
  314. package/build/dist/Input/WheelEvent.js +21 -0
  315. package/build/dist/Input/WheelEvent.js.map +1 -0
  316. package/build/dist/Interfaces/Audio.js +2 -0
  317. package/build/dist/Interfaces/Audio.js.map +1 -0
  318. package/build/dist/Interfaces/AudioImplementation.js +11 -0
  319. package/build/dist/Interfaces/AudioImplementation.js.map +1 -0
  320. package/build/dist/Interfaces/Clonable.js +2 -0
  321. package/build/dist/Interfaces/Clonable.js.map +1 -0
  322. package/build/dist/Interfaces/Drawable.js +2 -0
  323. package/build/dist/Interfaces/Drawable.js.map +1 -0
  324. package/build/dist/Interfaces/Evented.js +2 -0
  325. package/build/dist/Interfaces/Evented.js.map +1 -0
  326. package/build/dist/Interfaces/Index.js +10 -0
  327. package/build/dist/Interfaces/Index.js.map +1 -0
  328. package/build/dist/Interfaces/LifecycleEvents.js +51 -0
  329. package/build/dist/Interfaces/LifecycleEvents.js.map +1 -0
  330. package/build/dist/Interfaces/Loadable.js +2 -0
  331. package/build/dist/Interfaces/Loadable.js.map +1 -0
  332. package/build/dist/Interfaces/PointerEventHandlers.js +2 -0
  333. package/build/dist/Interfaces/PointerEventHandlers.js.map +1 -0
  334. package/build/dist/Interfaces/Trait.js +2 -0
  335. package/build/dist/Interfaces/Trait.js.map +1 -0
  336. package/build/dist/Label.js +273 -0
  337. package/build/dist/Label.js.map +1 -0
  338. package/build/dist/Loader.js +367 -0
  339. package/build/dist/Loader.js.map +1 -0
  340. package/build/dist/Math/Index.js +10 -0
  341. package/build/dist/Math/Index.js.map +1 -0
  342. package/build/dist/Math/Random.js +239 -0
  343. package/build/dist/Math/Random.js.map +1 -0
  344. package/build/dist/Math/global-coordinates.js +30 -0
  345. package/build/dist/Math/global-coordinates.js.map +1 -0
  346. package/build/dist/Math/line.js +194 -0
  347. package/build/dist/Math/line.js.map +1 -0
  348. package/build/dist/Math/matrix.js +446 -0
  349. package/build/dist/Math/matrix.js.map +1 -0
  350. package/build/dist/Math/projection.js +24 -0
  351. package/build/dist/Math/projection.js.map +1 -0
  352. package/build/dist/Math/ray.js +52 -0
  353. package/build/dist/Math/ray.js.map +1 -0
  354. package/build/dist/Math/util.js +82 -0
  355. package/build/dist/Math/util.js.map +1 -0
  356. package/build/dist/Math/vector-view.js +25 -0
  357. package/build/dist/Math/vector-view.js.map +1 -0
  358. package/build/dist/Math/vector.js +326 -0
  359. package/build/dist/Math/vector.js.map +1 -0
  360. package/build/dist/Particles.js +449 -0
  361. package/build/dist/Particles.js.map +1 -0
  362. package/build/dist/Polyfill.js +56 -0
  363. package/build/dist/Polyfill.js.map +1 -0
  364. package/build/dist/Promises.js +205 -0
  365. package/build/dist/Promises.js.map +1 -0
  366. package/build/dist/Resources/Gif.js +479 -0
  367. package/build/dist/Resources/Gif.js.map +1 -0
  368. package/build/dist/Resources/Index.js +4 -0
  369. package/build/dist/Resources/Index.js.map +1 -0
  370. package/build/dist/Resources/Resource.js +74 -0
  371. package/build/dist/Resources/Resource.js.map +1 -0
  372. package/build/dist/Resources/Sound/AudioContext.js +16 -0
  373. package/build/dist/Resources/Sound/AudioContext.js.map +1 -0
  374. package/build/dist/Resources/Sound/Index.js +4 -0
  375. package/build/dist/Resources/Sound/Index.js.map +1 -0
  376. package/build/dist/Resources/Sound/Sound.js +240 -0
  377. package/build/dist/Resources/Sound/Sound.js.map +1 -0
  378. package/build/dist/Resources/Sound/WebAudioInstance.js +160 -0
  379. package/build/dist/Resources/Sound/WebAudioInstance.js.map +1 -0
  380. package/build/dist/Scene.js +458 -0
  381. package/build/dist/Scene.js.map +1 -0
  382. package/build/dist/Screen.js +634 -0
  383. package/build/dist/Screen.js.map +1 -0
  384. package/build/dist/ScreenElement.js +29 -0
  385. package/build/dist/ScreenElement.js.map +1 -0
  386. package/build/dist/TileMap.js +488 -0
  387. package/build/dist/TileMap.js.map +1 -0
  388. package/build/dist/Timer.js +198 -0
  389. package/build/dist/Timer.js.map +1 -0
  390. package/build/dist/Traits/Index.js +5 -0
  391. package/build/dist/Traits/Index.js.map +1 -0
  392. package/build/dist/Traits/OffscreenCulling.js +35 -0
  393. package/build/dist/Traits/OffscreenCulling.js.map +1 -0
  394. package/build/dist/Trigger.js +113 -0
  395. package/build/dist/Trigger.js.map +1 -0
  396. package/build/dist/Util/Actors.js +19 -0
  397. package/build/dist/Util/Actors.js.map +1 -0
  398. package/build/dist/Util/Browser.js +66 -0
  399. package/build/dist/Util/Browser.js.map +1 -0
  400. package/build/dist/Util/Clock.js +219 -0
  401. package/build/dist/Util/Clock.js.map +1 -0
  402. package/build/dist/Util/CullingBox.js +104 -0
  403. package/build/dist/Util/CullingBox.js.map +1 -0
  404. package/build/dist/Util/Decorators.js +78 -0
  405. package/build/dist/Util/Decorators.js.map +1 -0
  406. package/build/dist/Util/Detector.js +167 -0
  407. package/build/dist/Util/Detector.js.map +1 -0
  408. package/build/dist/Util/DrawUtil.js +117 -0
  409. package/build/dist/Util/DrawUtil.js.map +1 -0
  410. package/build/dist/Util/EasingFunctions.js +118 -0
  411. package/build/dist/Util/EasingFunctions.js.map +1 -0
  412. package/build/dist/Util/Fps.js +47 -0
  413. package/build/dist/Util/Fps.js.map +1 -0
  414. package/build/dist/Util/Index.js +7 -0
  415. package/build/dist/Util/Index.js.map +1 -0
  416. package/build/dist/Util/Log.js +195 -0
  417. package/build/dist/Util/Log.js.map +1 -0
  418. package/build/dist/Util/Observable.js +60 -0
  419. package/build/dist/Util/Observable.js.map +1 -0
  420. package/build/dist/Util/Pool.js +66 -0
  421. package/build/dist/Util/Pool.js.map +1 -0
  422. package/build/dist/Util/SortedList.js +261 -0
  423. package/build/dist/Util/SortedList.js.map +1 -0
  424. package/build/dist/Util/Sound.js +22 -0
  425. package/build/dist/Util/Sound.js.map +1 -0
  426. package/build/dist/Util/Util.js +294 -0
  427. package/build/dist/Util/Util.js.map +1 -0
  428. package/build/dist/Util/Watch.js +67 -0
  429. package/build/dist/Util/Watch.js.map +1 -0
  430. package/build/dist/Util/WebAudio.js +62 -0
  431. package/build/dist/Util/WebAudio.js.map +1 -0
  432. package/build/dist/excalibur.js +101 -22
  433. package/build/dist/excalibur.js.map +1 -1
  434. package/build/dist/excalibur.min.js +1 -1
  435. package/build/dist/excalibur.min.js.LICENSE.txt +1 -1
  436. package/build/dist/excalibur.min.js.map +1 -1
  437. package/build/dist/index.js +74 -0
  438. package/build/dist/index.js.map +1 -0
  439. package/build/esm/Engine.d.ts +4 -1
  440. package/build/esm/Graphics/Context/texture-loader.d.ts +8 -0
  441. package/build/esm/excalibur.js +101 -22
  442. package/build/esm/excalibur.js.map +1 -1
  443. package/build/esm/excalibur.min.js +1 -1
  444. package/build/esm/excalibur.min.js.LICENSE.txt +1 -1
  445. package/build/esm/excalibur.min.js.map +1 -1
  446. package/package.json +23 -22
@@ -0,0 +1,663 @@
1
+ import { EasingFunctions } from './Util/EasingFunctions';
2
+ import { Vector, vec } from './Math/vector';
3
+ import { removeItemFromArray } from './Util/Util';
4
+ import { PreUpdateEvent, PostUpdateEvent, InitializeEvent } from './Events';
5
+ import { Class } from './Class';
6
+ import { BoundingBox } from './Collision/BoundingBox';
7
+ import { Logger } from './Util/Log';
8
+ import { watchAny } from './Util/Watch';
9
+ import { Matrix } from './Math/matrix';
10
+ /**
11
+ * Container to house convenience strategy methods
12
+ * @internal
13
+ */
14
+ export class StrategyContainer {
15
+ constructor(camera) {
16
+ this.camera = camera;
17
+ }
18
+ /**
19
+ * Creates and adds the [[LockCameraToActorStrategy]] on the current camera.
20
+ * @param actor The actor to lock the camera to
21
+ */
22
+ lockToActor(actor) {
23
+ this.camera.addStrategy(new LockCameraToActorStrategy(actor));
24
+ }
25
+ /**
26
+ * Creates and adds the [[LockCameraToActorAxisStrategy]] on the current camera
27
+ * @param actor The actor to lock the camera to
28
+ * @param axis The axis to follow the actor on
29
+ */
30
+ lockToActorAxis(actor, axis) {
31
+ this.camera.addStrategy(new LockCameraToActorAxisStrategy(actor, axis));
32
+ }
33
+ /**
34
+ * Creates and adds the [[ElasticToActorStrategy]] on the current camera
35
+ * If cameraElasticity < cameraFriction < 1.0, the behavior will be a dampened spring that will slowly end at the target without bouncing
36
+ * If cameraFriction < cameraElasticity < 1.0, the behavior will be an oscillating spring that will over
37
+ * correct and bounce around the target
38
+ *
39
+ * @param actor Target actor to elastically follow
40
+ * @param cameraElasticity [0 - 1.0] The higher the elasticity the more force that will drive the camera towards the target
41
+ * @param cameraFriction [0 - 1.0] The higher the friction the more that the camera will resist motion towards the target
42
+ */
43
+ elasticToActor(actor, cameraElasticity, cameraFriction) {
44
+ this.camera.addStrategy(new ElasticToActorStrategy(actor, cameraElasticity, cameraFriction));
45
+ }
46
+ /**
47
+ * Creates and adds the [[RadiusAroundActorStrategy]] on the current camera
48
+ * @param actor Target actor to follow when it is "radius" pixels away
49
+ * @param radius Number of pixels away before the camera will follow
50
+ */
51
+ radiusAroundActor(actor, radius) {
52
+ this.camera.addStrategy(new RadiusAroundActorStrategy(actor, radius));
53
+ }
54
+ /**
55
+ * Creates and adds the [[LimitCameraBoundsStrategy]] on the current camera
56
+ * @param box The bounding box to limit the camera to.
57
+ */
58
+ limitCameraBounds(box) {
59
+ this.camera.addStrategy(new LimitCameraBoundsStrategy(box));
60
+ }
61
+ }
62
+ /**
63
+ * Camera axis enum
64
+ */
65
+ export var Axis;
66
+ (function (Axis) {
67
+ Axis[Axis["X"] = 0] = "X";
68
+ Axis[Axis["Y"] = 1] = "Y";
69
+ })(Axis || (Axis = {}));
70
+ /**
71
+ * Lock a camera to the exact x/y position of an actor.
72
+ */
73
+ export class LockCameraToActorStrategy {
74
+ constructor(target) {
75
+ this.target = target;
76
+ this.action = (target, _cam, _eng, _delta) => {
77
+ const center = target.center;
78
+ return center;
79
+ };
80
+ }
81
+ }
82
+ /**
83
+ * Lock a camera to a specific axis around an actor.
84
+ */
85
+ export class LockCameraToActorAxisStrategy {
86
+ constructor(target, axis) {
87
+ this.target = target;
88
+ this.axis = axis;
89
+ this.action = (target, cam, _eng, _delta) => {
90
+ const center = target.center;
91
+ const currentFocus = cam.getFocus();
92
+ if (this.axis === Axis.X) {
93
+ return new Vector(center.x, currentFocus.y);
94
+ }
95
+ else {
96
+ return new Vector(currentFocus.x, center.y);
97
+ }
98
+ };
99
+ }
100
+ }
101
+ /**
102
+ * Using [Hook's law](https://en.wikipedia.org/wiki/Hooke's_law), elastically move the camera towards the target actor.
103
+ */
104
+ export class ElasticToActorStrategy {
105
+ /**
106
+ * If cameraElasticity < cameraFriction < 1.0, the behavior will be a dampened spring that will slowly end at the target without bouncing
107
+ * If cameraFriction < cameraElasticity < 1.0, the behavior will be an oscillating spring that will over
108
+ * correct and bounce around the target
109
+ *
110
+ * @param target Target actor to elastically follow
111
+ * @param cameraElasticity [0 - 1.0] The higher the elasticity the more force that will drive the camera towards the target
112
+ * @param cameraFriction [0 - 1.0] The higher the friction the more that the camera will resist motion towards the target
113
+ */
114
+ constructor(target, cameraElasticity, cameraFriction) {
115
+ this.target = target;
116
+ this.cameraElasticity = cameraElasticity;
117
+ this.cameraFriction = cameraFriction;
118
+ this.action = (target, cam, _eng, _delta) => {
119
+ const position = target.center;
120
+ let focus = cam.getFocus();
121
+ let cameraVel = cam.vel.clone();
122
+ // Calculate the stretch vector, using the spring equation
123
+ // F = kX
124
+ // https://en.wikipedia.org/wiki/Hooke's_law
125
+ // Apply to the current camera velocity
126
+ const stretch = position.sub(focus).scale(this.cameraElasticity); // stretch is X
127
+ cameraVel = cameraVel.add(stretch);
128
+ // Calculate the friction (-1 to apply a force in the opposition of motion)
129
+ // Apply to the current camera velocity
130
+ const friction = cameraVel.scale(-1).scale(this.cameraFriction);
131
+ cameraVel = cameraVel.add(friction);
132
+ // Update position by velocity deltas
133
+ focus = focus.add(cameraVel);
134
+ return focus;
135
+ };
136
+ }
137
+ }
138
+ export class RadiusAroundActorStrategy {
139
+ /**
140
+ *
141
+ * @param target Target actor to follow when it is "radius" pixels away
142
+ * @param radius Number of pixels away before the camera will follow
143
+ */
144
+ constructor(target, radius) {
145
+ this.target = target;
146
+ this.radius = radius;
147
+ this.action = (target, cam, _eng, _delta) => {
148
+ const position = target.center;
149
+ const focus = cam.getFocus();
150
+ const direction = position.sub(focus);
151
+ const distance = direction.size;
152
+ if (distance >= this.radius) {
153
+ const offset = distance - this.radius;
154
+ return focus.add(direction.normalize().scale(offset));
155
+ }
156
+ return focus;
157
+ };
158
+ }
159
+ }
160
+ /**
161
+ * Prevent a camera from going beyond the given camera dimensions.
162
+ */
163
+ export class LimitCameraBoundsStrategy {
164
+ constructor(target) {
165
+ this.target = target;
166
+ /**
167
+ * Useful for limiting the camera to a [[TileMap]]'s dimensions, or a specific area inside the map.
168
+ *
169
+ * Note that this strategy does not perform any movement by itself.
170
+ * It only sets the camera position to within the given bounds when the camera has gone beyond them.
171
+ * Thus, it is a good idea to combine it with other camera strategies and set this strategy as the last one.
172
+ *
173
+ * Make sure that the camera bounds are at least as large as the viewport size.
174
+ *
175
+ * @param target The bounding box to limit the camera to
176
+ */
177
+ this.boundSizeChecked = false; // Check and warn only once
178
+ this.action = (target, cam, _eng, _delta) => {
179
+ const focus = cam.getFocus();
180
+ if (!this.boundSizeChecked) {
181
+ if (target.bottom - target.top < _eng.drawHeight || target.right - target.left < _eng.drawWidth) {
182
+ Logger.getInstance().warn('Camera bounds should not be smaller than the engine viewport');
183
+ }
184
+ this.boundSizeChecked = true;
185
+ }
186
+ let focusX = focus.x;
187
+ let focusY = focus.y;
188
+ if (focus.x < target.left + _eng.halfDrawWidth) {
189
+ focusX = target.left + _eng.halfDrawWidth;
190
+ }
191
+ else if (focus.x > target.right - _eng.halfDrawWidth) {
192
+ focusX = target.right - _eng.halfDrawWidth;
193
+ }
194
+ if (focus.y < target.top + _eng.halfDrawHeight) {
195
+ focusY = target.top + _eng.halfDrawHeight;
196
+ }
197
+ else if (focus.y > target.bottom - _eng.halfDrawHeight) {
198
+ focusY = target.bottom - _eng.halfDrawHeight;
199
+ }
200
+ return vec(focusX, focusY);
201
+ };
202
+ }
203
+ }
204
+ /**
205
+ * Cameras
206
+ *
207
+ * [[Camera]] is the base class for all Excalibur cameras. Cameras are used
208
+ * to move around your game and set focus. They are used to determine
209
+ * what is "off screen" and can be used to scale the game.
210
+ *
211
+ */
212
+ export class Camera extends Class {
213
+ constructor() {
214
+ super(...arguments);
215
+ this.transform = Matrix.identity();
216
+ this.inverse = Matrix.identity();
217
+ this._cameraStrategies = [];
218
+ this.strategy = new StrategyContainer(this);
219
+ /**
220
+ * Get or set current zoom of the camera, defaults to 1
221
+ */
222
+ this._z = 1;
223
+ /**
224
+ * Get or set rate of change in zoom, defaults to 0
225
+ */
226
+ this.dz = 0;
227
+ /**
228
+ * Get or set zoom acceleration
229
+ */
230
+ this.az = 0;
231
+ /**
232
+ * Current rotation of the camera
233
+ */
234
+ this.rotation = 0;
235
+ /**
236
+ * Current angular velocity
237
+ * @deprecated will be removed in v0.26.0, use angularVelocity
238
+ */
239
+ this.rx = 0;
240
+ /**
241
+ * Get or set the camera's position
242
+ */
243
+ this._posChanged = false;
244
+ this._pos = watchAny(Vector.Zero, () => (this._posChanged = true));
245
+ /**
246
+ * Get or set the camera's velocity
247
+ */
248
+ this.vel = Vector.Zero;
249
+ /**
250
+ * Get or set the camera's acceleration
251
+ */
252
+ this.acc = Vector.Zero;
253
+ this._cameraMoving = false;
254
+ this._currentLerpTime = 0;
255
+ this._lerpDuration = 1000; // 1 second
256
+ this._lerpStart = null;
257
+ this._lerpEnd = null;
258
+ //camera effects
259
+ this._isShaking = false;
260
+ this._shakeMagnitudeX = 0;
261
+ this._shakeMagnitudeY = 0;
262
+ this._shakeDuration = 0;
263
+ this._elapsedShakeTime = 0;
264
+ this._xShake = 0;
265
+ this._yShake = 0;
266
+ this._isZooming = false;
267
+ this._zoomStart = 1;
268
+ this._zoomEnd = 1;
269
+ this._currentZoomTime = 0;
270
+ this._zoomDuration = 0;
271
+ this._zoomEasing = EasingFunctions.EaseInOutCubic;
272
+ this._easing = EasingFunctions.EaseInOutCubic;
273
+ this._halfWidth = 0;
274
+ this._halfHeight = 0;
275
+ this._viewport = null;
276
+ this._isInitialized = false;
277
+ }
278
+ get zoom() {
279
+ return this._z;
280
+ }
281
+ set zoom(val) {
282
+ this._z = val;
283
+ if (this._engine) {
284
+ this._halfWidth = this._engine.halfDrawWidth;
285
+ this._halfHeight = this._engine.halfDrawHeight;
286
+ }
287
+ }
288
+ /**
289
+ * Get or set the camera's angular velocity
290
+ */
291
+ get angularVelocity() {
292
+ return this.rx;
293
+ }
294
+ set angularVelocity(value) {
295
+ this.rx = value;
296
+ }
297
+ get pos() {
298
+ return this._pos;
299
+ }
300
+ set pos(vec) {
301
+ this._pos = watchAny(vec, () => (this._posChanged = true));
302
+ this._posChanged = true;
303
+ }
304
+ /**
305
+ * Get the camera's x position
306
+ */
307
+ get x() {
308
+ return this.pos.x;
309
+ }
310
+ /**
311
+ * Set the camera's x position (cannot be set when following an [[Actor]] or when moving)
312
+ */
313
+ set x(value) {
314
+ if (!this._follow && !this._cameraMoving) {
315
+ this.pos = vec(value, this.pos.y);
316
+ }
317
+ }
318
+ /**
319
+ * Get the camera's y position
320
+ */
321
+ get y() {
322
+ return this.pos.y;
323
+ }
324
+ /**
325
+ * Set the camera's y position (cannot be set when following an [[Actor]] or when moving)
326
+ */
327
+ set y(value) {
328
+ if (!this._follow && !this._cameraMoving) {
329
+ this.pos = vec(this.pos.x, value);
330
+ }
331
+ }
332
+ /**
333
+ * Get or set the camera's x velocity
334
+ */
335
+ get dx() {
336
+ return this.vel.x;
337
+ }
338
+ set dx(value) {
339
+ this.vel = vec(value, this.vel.y);
340
+ }
341
+ /**
342
+ * Get or set the camera's y velocity
343
+ */
344
+ get dy() {
345
+ return this.vel.y;
346
+ }
347
+ set dy(value) {
348
+ this.vel = vec(this.vel.x, value);
349
+ }
350
+ /**
351
+ * Get or set the camera's x acceleration
352
+ */
353
+ get ax() {
354
+ return this.acc.x;
355
+ }
356
+ set ax(value) {
357
+ this.acc = vec(value, this.acc.y);
358
+ }
359
+ /**
360
+ * Get or set the camera's y acceleration
361
+ */
362
+ get ay() {
363
+ return this.acc.y;
364
+ }
365
+ set ay(value) {
366
+ this.acc = vec(this.acc.x, value);
367
+ }
368
+ /**
369
+ * Returns the focal point of the camera, a new point giving the x and y position of the camera
370
+ */
371
+ getFocus() {
372
+ return this.pos;
373
+ }
374
+ /**
375
+ * This moves the camera focal point to the specified position using specified easing function. Cannot move when following an Actor.
376
+ *
377
+ * @param pos The target position to move to
378
+ * @param duration The duration in milliseconds the move should last
379
+ * @param [easingFn] An optional easing function ([[ex.EasingFunctions.EaseInOutCubic]] by default)
380
+ * @returns A [[Promise]] that resolves when movement is finished, including if it's interrupted.
381
+ * The [[Promise]] value is the [[Vector]] of the target position. It will be rejected if a move cannot be made.
382
+ */
383
+ move(pos, duration, easingFn = EasingFunctions.EaseInOutCubic) {
384
+ if (typeof easingFn !== 'function') {
385
+ throw 'Please specify an EasingFunction';
386
+ }
387
+ // cannot move when following an actor
388
+ if (this._follow) {
389
+ return Promise.reject(pos);
390
+ }
391
+ // resolve existing promise, if any
392
+ if (this._lerpPromise && this._lerpResolve) {
393
+ this._lerpResolve(pos);
394
+ }
395
+ this._lerpPromise = new Promise((resolve) => {
396
+ this._lerpResolve = resolve;
397
+ });
398
+ this._lerpStart = this.getFocus().clone();
399
+ this._lerpDuration = duration;
400
+ this._lerpEnd = pos;
401
+ this._currentLerpTime = 0;
402
+ this._cameraMoving = true;
403
+ this._easing = easingFn;
404
+ return this._lerpPromise;
405
+ }
406
+ /**
407
+ * Sets the camera to shake at the specified magnitudes for the specified duration
408
+ * @param magnitudeX The x magnitude of the shake
409
+ * @param magnitudeY The y magnitude of the shake
410
+ * @param duration The duration of the shake in milliseconds
411
+ */
412
+ shake(magnitudeX, magnitudeY, duration) {
413
+ this._isShaking = true;
414
+ this._shakeMagnitudeX = magnitudeX;
415
+ this._shakeMagnitudeY = magnitudeY;
416
+ this._shakeDuration = duration;
417
+ }
418
+ /**
419
+ * Zooms the camera in or out by the specified scale over the specified duration.
420
+ * If no duration is specified, it take effect immediately.
421
+ * @param scale The scale of the zoom
422
+ * @param duration The duration of the zoom in milliseconds
423
+ */
424
+ zoomOverTime(scale, duration = 0, easingFn = EasingFunctions.EaseInOutCubic) {
425
+ this._zoomPromise = new Promise((resolve) => {
426
+ this._zoomResolve = resolve;
427
+ });
428
+ if (duration) {
429
+ this._isZooming = true;
430
+ this._zoomEasing = easingFn;
431
+ this._currentZoomTime = 0;
432
+ this._zoomDuration = duration;
433
+ this._zoomStart = this.zoom;
434
+ this._zoomEnd = scale;
435
+ }
436
+ else {
437
+ this._isZooming = false;
438
+ this.zoom = scale;
439
+ return Promise.resolve(true);
440
+ }
441
+ return this._zoomPromise;
442
+ }
443
+ /**
444
+ * Gets the bounding box of the viewport of this camera in world coordinates
445
+ */
446
+ get viewport() {
447
+ if (this._viewport) {
448
+ return this._viewport;
449
+ }
450
+ return new BoundingBox(0, 0, 0, 0);
451
+ }
452
+ /**
453
+ * Adds a new camera strategy to this camera
454
+ * @param cameraStrategy Instance of an [[CameraStrategy]]
455
+ */
456
+ addStrategy(cameraStrategy) {
457
+ this._cameraStrategies.push(cameraStrategy);
458
+ }
459
+ /**
460
+ * Removes a camera strategy by reference
461
+ * @param cameraStrategy Instance of an [[CameraStrategy]]
462
+ */
463
+ removeStrategy(cameraStrategy) {
464
+ removeItemFromArray(cameraStrategy, this._cameraStrategies);
465
+ }
466
+ /**
467
+ * Clears all camera strategies from the camera
468
+ */
469
+ clearAllStrategies() {
470
+ this._cameraStrategies.length = 0;
471
+ }
472
+ /**
473
+ * It is not recommended that internal excalibur methods be overridden, do so at your own risk.
474
+ *
475
+ * Internal _preupdate handler for [[onPreUpdate]] lifecycle event
476
+ * @internal
477
+ */
478
+ _preupdate(engine, delta) {
479
+ this.emit('preupdate', new PreUpdateEvent(engine, delta, this));
480
+ this.onPreUpdate(engine, delta);
481
+ }
482
+ /**
483
+ * Safe to override onPreUpdate lifecycle event handler. Synonymous with `.on('preupdate', (evt) =>{...})`
484
+ *
485
+ * `onPreUpdate` is called directly before a scene is updated.
486
+ */
487
+ onPreUpdate(_engine, _delta) {
488
+ // Overridable
489
+ }
490
+ /**
491
+ * It is not recommended that internal excalibur methods be overridden, do so at your own risk.
492
+ *
493
+ * Internal _preupdate handler for [[onPostUpdate]] lifecycle event
494
+ * @internal
495
+ */
496
+ _postupdate(engine, delta) {
497
+ this.emit('postupdate', new PostUpdateEvent(engine, delta, this));
498
+ this.onPostUpdate(engine, delta);
499
+ }
500
+ /**
501
+ * Safe to override onPostUpdate lifecycle event handler. Synonymous with `.on('preupdate', (evt) =>{...})`
502
+ *
503
+ * `onPostUpdate` is called directly after a scene is updated.
504
+ */
505
+ onPostUpdate(_engine, _delta) {
506
+ // Overridable
507
+ }
508
+ get isInitialized() {
509
+ return this._isInitialized;
510
+ }
511
+ _initialize(_engine) {
512
+ if (!this.isInitialized) {
513
+ this._engine = _engine;
514
+ this._screen = _engine.screen;
515
+ const currentRes = this._screen.resolution;
516
+ let center = vec(currentRes.width / 2, currentRes.height / 2);
517
+ if (!this._engine.loadingComplete) {
518
+ // If there was a loading screen, we peek the configured resolution
519
+ const res = this._screen.peekResolution();
520
+ if (res) {
521
+ center = vec(res.width / 2, res.height / 2);
522
+ }
523
+ }
524
+ this._halfWidth = center.x;
525
+ this._halfHeight = center.y;
526
+ // If the user has not set the camera pos, apply default center screen position
527
+ if (!this._posChanged) {
528
+ this.pos = center;
529
+ }
530
+ // First frame bootstrap
531
+ // Ensure camera tx is correct
532
+ this.updateTransform();
533
+ // Run strategies for first frame
534
+ this.runStrategies(_engine, _engine.clock.elapsed());
535
+ // Setup the first frame viewport
536
+ this.updateViewport();
537
+ this.onInitialize(_engine);
538
+ super.emit('initialize', new InitializeEvent(_engine, this));
539
+ this._isInitialized = true;
540
+ }
541
+ }
542
+ /**
543
+ * Safe to override onPostUpdate lifecycle event handler. Synonymous with `.on('preupdate', (evt) =>{...})`
544
+ *
545
+ * `onPostUpdate` is called directly after a scene is updated.
546
+ */
547
+ onInitialize(_engine) {
548
+ // Overridable
549
+ }
550
+ on(eventName, handler) {
551
+ super.on(eventName, handler);
552
+ }
553
+ off(eventName, handler) {
554
+ super.off(eventName, handler);
555
+ }
556
+ once(eventName, handler) {
557
+ super.once(eventName, handler);
558
+ }
559
+ runStrategies(engine, delta) {
560
+ for (const s of this._cameraStrategies) {
561
+ this.pos = s.action.call(s, s.target, this, engine, delta);
562
+ }
563
+ }
564
+ updateViewport() {
565
+ // recalc viewport
566
+ this._viewport = new BoundingBox(this.x - this._halfWidth, this.y - this._halfHeight, this.x + this._halfWidth, this.y + this._halfHeight);
567
+ }
568
+ update(_engine, delta) {
569
+ this._initialize(_engine);
570
+ this._preupdate(_engine, delta);
571
+ // Update placements based on linear algebra
572
+ this.pos = this.pos.add(this.vel.scale(delta / 1000));
573
+ this.zoom += (this.dz * delta) / 1000;
574
+ this.vel = this.vel.add(this.acc.scale(delta / 1000));
575
+ this.dz += (this.az * delta) / 1000;
576
+ this.rotation += (this.angularVelocity * delta) / 1000;
577
+ if (this._isZooming) {
578
+ if (this._currentZoomTime < this._zoomDuration) {
579
+ const zoomEasing = this._zoomEasing;
580
+ const newZoom = zoomEasing(this._currentZoomTime, this._zoomStart, this._zoomEnd, this._zoomDuration);
581
+ this.zoom = newZoom;
582
+ this._currentZoomTime += delta;
583
+ }
584
+ else {
585
+ this._isZooming = false;
586
+ this.zoom = this._zoomEnd;
587
+ this._currentZoomTime = 0;
588
+ this._zoomResolve(true);
589
+ }
590
+ }
591
+ if (this._cameraMoving) {
592
+ if (this._currentLerpTime < this._lerpDuration) {
593
+ const moveEasing = EasingFunctions.CreateVectorEasingFunction(this._easing);
594
+ const lerpPoint = moveEasing(this._currentLerpTime, this._lerpStart, this._lerpEnd, this._lerpDuration);
595
+ this.pos = lerpPoint;
596
+ this._currentLerpTime += delta;
597
+ }
598
+ else {
599
+ this.pos = this._lerpEnd;
600
+ const end = this._lerpEnd.clone();
601
+ this._lerpStart = null;
602
+ this._lerpEnd = null;
603
+ this._currentLerpTime = 0;
604
+ this._cameraMoving = false;
605
+ // Order matters here, resolve should be last so any chain promises have a clean slate
606
+ this._lerpResolve(end);
607
+ }
608
+ }
609
+ if (this._isDoneShaking()) {
610
+ this._isShaking = false;
611
+ this._elapsedShakeTime = 0;
612
+ this._shakeMagnitudeX = 0;
613
+ this._shakeMagnitudeY = 0;
614
+ this._shakeDuration = 0;
615
+ this._xShake = 0;
616
+ this._yShake = 0;
617
+ }
618
+ else {
619
+ this._elapsedShakeTime += delta;
620
+ this._xShake = ((Math.random() * this._shakeMagnitudeX) | 0) + 1;
621
+ this._yShake = ((Math.random() * this._shakeMagnitudeY) | 0) + 1;
622
+ }
623
+ this.updateTransform();
624
+ this.runStrategies(_engine, delta);
625
+ this.updateViewport();
626
+ this._postupdate(_engine, delta);
627
+ }
628
+ draw(ctx) {
629
+ // Apply transform
630
+ if (ctx instanceof CanvasRenderingContext2D) {
631
+ // TODO This will be removed in v0.26.0
632
+ const focus = this.getFocus();
633
+ // center the camera
634
+ const newCanvasWidth = this._screen.resolution.width / this.zoom;
635
+ const newCanvasHeight = this._screen.resolution.height / this.zoom;
636
+ const cameraPos = vec(-focus.x + newCanvasWidth / 2 + this._xShake, -focus.y + newCanvasHeight / 2 + this._yShake);
637
+ ctx.scale(this.zoom, this.zoom);
638
+ ctx.translate(cameraPos.x, cameraPos.y);
639
+ }
640
+ else {
641
+ ctx.multiply(this.transform);
642
+ }
643
+ }
644
+ updateTransform() {
645
+ // center the camera
646
+ const newCanvasWidth = this._screen.resolution.width / this.zoom;
647
+ const newCanvasHeight = this._screen.resolution.height / this.zoom;
648
+ const cameraPos = vec(-this.x + newCanvasWidth / 2 + this._xShake, -this.y + newCanvasHeight / 2 + this._yShake);
649
+ // Calculate camera transform
650
+ this.transform.reset();
651
+ this.transform.scale(this.zoom, this.zoom);
652
+ this.transform.translate(cameraPos.x, cameraPos.y);
653
+ this.transform.getAffineInverse(this.inverse);
654
+ }
655
+ /* istanbul ignore next */
656
+ debugDraw(_ctx) {
657
+ // pass
658
+ }
659
+ _isDoneShaking() {
660
+ return !this._isShaking || this._elapsedShakeTime >= this._shakeDuration;
661
+ }
662
+ }
663
+ //# sourceMappingURL=Camera.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Camera.js","sourceRoot":"","sources":["../../src/engine/Camera.ts"],"names":[],"mappings":"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"}