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,253 @@
1
+ import { BoundingBox } from '../BoundingBox';
2
+ import { CollisionJumpTable } from './CollisionJumpTable';
3
+ import { CircleCollider } from './CircleCollider';
4
+ import { PolygonCollider } from './PolygonCollider';
5
+ import { Projection } from '../../Math/projection';
6
+ import { Line } from '../../Math/line';
7
+ import { Vector } from '../../Math/vector';
8
+ import { Color } from '../../Color';
9
+ import { Collider } from './Collider';
10
+ import { ClosestLineJumpTable } from './ClosestLineJumpTable';
11
+ /**
12
+ * Edge is a single line collider to create collisions with a single line.
13
+ */
14
+ export class EdgeCollider extends Collider {
15
+ constructor(options) {
16
+ var _a;
17
+ super();
18
+ this.begin = options.begin || Vector.Zero;
19
+ this.end = options.end || Vector.Zero;
20
+ this.offset = (_a = options.offset) !== null && _a !== void 0 ? _a : Vector.Zero;
21
+ }
22
+ /**
23
+ * Returns a clone of this Edge, not associated with any collider
24
+ */
25
+ clone() {
26
+ return new EdgeCollider({
27
+ begin: this.begin.clone(),
28
+ end: this.end.clone()
29
+ });
30
+ }
31
+ get worldPos() {
32
+ var _a;
33
+ const tx = this._transform;
34
+ return (_a = tx === null || tx === void 0 ? void 0 : tx.globalPos.add(this.offset)) !== null && _a !== void 0 ? _a : this.offset;
35
+ }
36
+ /**
37
+ * Get the center of the collision area in world coordinates
38
+ */
39
+ get center() {
40
+ const pos = this.begin.average(this.end).add(this._getBodyPos());
41
+ return pos;
42
+ }
43
+ _getBodyPos() {
44
+ var _a;
45
+ const tx = this._transform;
46
+ const bodyPos = (_a = tx === null || tx === void 0 ? void 0 : tx.globalPos) !== null && _a !== void 0 ? _a : Vector.Zero;
47
+ return bodyPos;
48
+ }
49
+ _getTransformedBegin() {
50
+ const tx = this._transform;
51
+ const angle = tx ? tx.globalRotation : 0;
52
+ return this.begin.rotate(angle).add(this._getBodyPos());
53
+ }
54
+ _getTransformedEnd() {
55
+ const tx = this._transform;
56
+ const angle = tx ? tx.globalRotation : 0;
57
+ return this.end.rotate(angle).add(this._getBodyPos());
58
+ }
59
+ /**
60
+ * Returns the slope of the line in the form of a vector
61
+ */
62
+ getSlope() {
63
+ const begin = this._getTransformedBegin();
64
+ const end = this._getTransformedEnd();
65
+ const distance = begin.distance(end);
66
+ return end.sub(begin).scale(1 / distance);
67
+ }
68
+ /**
69
+ * Returns the length of the line segment in pixels
70
+ */
71
+ getLength() {
72
+ const begin = this._getTransformedBegin();
73
+ const end = this._getTransformedEnd();
74
+ const distance = begin.distance(end);
75
+ return distance;
76
+ }
77
+ /**
78
+ * Tests if a point is contained in this collision area
79
+ */
80
+ contains() {
81
+ return false;
82
+ }
83
+ /**
84
+ * @inheritdoc
85
+ */
86
+ rayCast(ray, max = Infinity) {
87
+ const numerator = this._getTransformedBegin().sub(ray.pos);
88
+ // Test is line and ray are parallel and non intersecting
89
+ if (ray.dir.cross(this.getSlope()) === 0 && numerator.cross(ray.dir) !== 0) {
90
+ return null;
91
+ }
92
+ // Lines are parallel
93
+ const divisor = ray.dir.cross(this.getSlope());
94
+ if (divisor === 0) {
95
+ return null;
96
+ }
97
+ const t = numerator.cross(this.getSlope()) / divisor;
98
+ if (t >= 0 && t <= max) {
99
+ const u = numerator.cross(ray.dir) / divisor / this.getLength();
100
+ if (u >= 0 && u <= 1) {
101
+ return ray.getPoint(t);
102
+ }
103
+ }
104
+ return null;
105
+ }
106
+ /**
107
+ * Returns the closes line between this and another collider, from this -> collider
108
+ * @param shape
109
+ */
110
+ getClosestLineBetween(shape) {
111
+ if (shape instanceof CircleCollider) {
112
+ return ClosestLineJumpTable.CircleEdgeClosestLine(shape, this);
113
+ }
114
+ else if (shape instanceof PolygonCollider) {
115
+ return ClosestLineJumpTable.PolygonEdgeClosestLine(shape, this).flip();
116
+ }
117
+ else if (shape instanceof EdgeCollider) {
118
+ return ClosestLineJumpTable.EdgeEdgeClosestLine(this, shape);
119
+ }
120
+ else {
121
+ throw new Error(`Polygon could not collide with unknown CollisionShape ${typeof shape}`);
122
+ }
123
+ }
124
+ /**
125
+ * @inheritdoc
126
+ */
127
+ collide(shape) {
128
+ if (shape instanceof CircleCollider) {
129
+ return CollisionJumpTable.CollideCircleEdge(shape, this);
130
+ }
131
+ else if (shape instanceof PolygonCollider) {
132
+ return CollisionJumpTable.CollidePolygonEdge(shape, this);
133
+ }
134
+ else if (shape instanceof EdgeCollider) {
135
+ return CollisionJumpTable.CollideEdgeEdge();
136
+ }
137
+ else {
138
+ throw new Error(`Edge could not collide with unknown CollisionShape ${typeof shape}`);
139
+ }
140
+ }
141
+ /**
142
+ * Find the point on the collider furthest in the direction specified
143
+ */
144
+ getFurthestPoint(direction) {
145
+ const transformedBegin = this._getTransformedBegin();
146
+ const transformedEnd = this._getTransformedEnd();
147
+ if (direction.dot(transformedBegin) > 0) {
148
+ return transformedBegin;
149
+ }
150
+ else {
151
+ return transformedEnd;
152
+ }
153
+ }
154
+ _boundsFromBeginEnd(begin, end, padding = 10) {
155
+ // A perfectly vertical or horizontal edge would have a bounds 0 width or height
156
+ // this causes problems for the collision system so we give them some padding
157
+ return new BoundingBox(Math.min(begin.x, end.x) - padding, Math.min(begin.y, end.y) - padding, Math.max(begin.x, end.x) + padding, Math.max(begin.y, end.y) + padding);
158
+ }
159
+ /**
160
+ * Get the axis aligned bounding box for the edge collider in world space
161
+ */
162
+ get bounds() {
163
+ const transformedBegin = this._getTransformedBegin();
164
+ const transformedEnd = this._getTransformedEnd();
165
+ return this._boundsFromBeginEnd(transformedBegin, transformedEnd);
166
+ }
167
+ /**
168
+ * Get the axis aligned bounding box for the edge collider in local space
169
+ */
170
+ get localBounds() {
171
+ return this._boundsFromBeginEnd(this.begin, this.end);
172
+ }
173
+ /**
174
+ * Returns this edge represented as a line in world coordinates
175
+ */
176
+ asLine() {
177
+ return new Line(this._getTransformedBegin(), this._getTransformedEnd());
178
+ }
179
+ /**
180
+ * Return this edge as a line in local line coordinates (relative to the position)
181
+ */
182
+ asLocalLine() {
183
+ return new Line(this.begin, this.end);
184
+ }
185
+ /**
186
+ * Get the axis associated with the edge
187
+ */
188
+ get axes() {
189
+ const e = this._getTransformedEnd().sub(this._getTransformedBegin());
190
+ const edgeNormal = e.normal();
191
+ const axes = [];
192
+ axes.push(edgeNormal);
193
+ axes.push(edgeNormal.negate());
194
+ axes.push(edgeNormal.normal());
195
+ axes.push(edgeNormal.normal().negate());
196
+ return axes;
197
+ }
198
+ /**
199
+ * Get the moment of inertia for an edge
200
+ * https://en.wikipedia.org/wiki/List_of_moments_of_inertia
201
+ */
202
+ getInertia(mass) {
203
+ const length = this.end.sub(this.begin).distance() / 2;
204
+ return mass * length * length;
205
+ }
206
+ /**
207
+ * @inheritdoc
208
+ */
209
+ update(transform) {
210
+ this._transform = transform;
211
+ }
212
+ /**
213
+ * Project the edge along a specified axis
214
+ */
215
+ project(axis) {
216
+ const scalars = [];
217
+ const points = [this._getTransformedBegin(), this._getTransformedEnd()];
218
+ const len = points.length;
219
+ for (let i = 0; i < len; i++) {
220
+ scalars.push(points[i].dot(axis));
221
+ }
222
+ return new Projection(Math.min.apply(Math, scalars), Math.max.apply(Math, scalars));
223
+ }
224
+ draw(ctx, color = Color.Green, pos = Vector.Zero) {
225
+ const begin = this.begin.add(pos);
226
+ const end = this.end.add(pos);
227
+ ctx.strokeStyle = color.toString();
228
+ ctx.beginPath();
229
+ ctx.moveTo(begin.x, begin.y);
230
+ ctx.lineTo(end.x, end.y);
231
+ ctx.closePath();
232
+ ctx.stroke();
233
+ }
234
+ debug(ex, color) {
235
+ const begin = this._getTransformedBegin();
236
+ const end = this._getTransformedEnd();
237
+ ex.drawLine(begin, end, color, 2);
238
+ ex.drawCircle(begin, 2, color);
239
+ ex.drawCircle(end, 2, color);
240
+ }
241
+ /* istanbul ignore next */
242
+ debugDraw(ctx, color = Color.Red) {
243
+ const begin = this._getTransformedBegin();
244
+ const end = this._getTransformedEnd();
245
+ ctx.strokeStyle = color.toString();
246
+ ctx.beginPath();
247
+ ctx.moveTo(begin.x, begin.y);
248
+ ctx.lineTo(end.x, end.y);
249
+ ctx.closePath();
250
+ ctx.stroke();
251
+ }
252
+ }
253
+ //# sourceMappingURL=EdgeCollider.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"EdgeCollider.js","sourceRoot":"","sources":["../../../../src/engine/Collision/Colliders/EdgeCollider.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,389 @@
1
+ import { Color } from '../../Color';
2
+ import { BoundingBox } from '../BoundingBox';
3
+ import { EdgeCollider } from './EdgeCollider';
4
+ import { CollisionJumpTable } from './CollisionJumpTable';
5
+ import { CircleCollider } from './CircleCollider';
6
+ import { Projection } from '../../Math/projection';
7
+ import { Line } from '../../Math/line';
8
+ import { Vector } from '../../Math/vector';
9
+ import { Ray } from '../../Math/ray';
10
+ import { ClosestLineJumpTable } from './ClosestLineJumpTable';
11
+ import { Collider } from './Collider';
12
+ /**
13
+ * Polygon collider for detecting collisions
14
+ */
15
+ export class PolygonCollider extends Collider {
16
+ constructor(options) {
17
+ var _a;
18
+ super();
19
+ this._transformedPoints = [];
20
+ this._axes = [];
21
+ this._sides = [];
22
+ this._localSides = [];
23
+ this.offset = (_a = options.offset) !== null && _a !== void 0 ? _a : Vector.Zero;
24
+ const winding = !!options.clockwiseWinding;
25
+ this.points = (winding ? options.points.reverse() : options.points) || [];
26
+ // calculate initial transformation
27
+ this._calculateTransformation();
28
+ }
29
+ /**
30
+ * Returns a clone of this ConvexPolygon, not associated with any collider
31
+ */
32
+ clone() {
33
+ return new PolygonCollider({
34
+ offset: this.offset.clone(),
35
+ points: this.points.map((p) => p.clone())
36
+ });
37
+ }
38
+ /**
39
+ * Returns the world position of the collider, which is the current body transform plus any defined offset
40
+ */
41
+ get worldPos() {
42
+ if (this._transform) {
43
+ return this._transform.pos.add(this.offset);
44
+ }
45
+ return this.offset;
46
+ }
47
+ /**
48
+ * Get the center of the collider in world coordinates
49
+ */
50
+ get center() {
51
+ return this.bounds.center;
52
+ }
53
+ /**
54
+ * Calculates the underlying transformation from the body relative space to world space
55
+ */
56
+ _calculateTransformation() {
57
+ const transform = this._transform;
58
+ const pos = transform ? transform.globalPos.add(this.offset) : this.offset;
59
+ const angle = transform ? transform.globalRotation : 0;
60
+ const scale = transform ? transform.globalScale : Vector.One;
61
+ const len = this.points.length;
62
+ this._transformedPoints.length = 0; // clear out old transform
63
+ for (let i = 0; i < len; i++) {
64
+ this._transformedPoints[i] = this.points[i].scale(scale).rotate(angle).add(pos);
65
+ }
66
+ }
67
+ /**
68
+ * Gets the points that make up the polygon in world space, from actor relative space (if specified)
69
+ */
70
+ getTransformedPoints() {
71
+ this._calculateTransformation();
72
+ return this._transformedPoints;
73
+ }
74
+ /**
75
+ * Gets the sides of the polygon in world space
76
+ */
77
+ getSides() {
78
+ if (this._sides.length) {
79
+ return this._sides;
80
+ }
81
+ const lines = [];
82
+ const points = this.getTransformedPoints();
83
+ const len = points.length;
84
+ for (let i = 0; i < len; i++) {
85
+ // This winding is important
86
+ lines.push(new Line(points[i], points[(i + 1) % len]));
87
+ }
88
+ this._sides = lines;
89
+ return this._sides;
90
+ }
91
+ /**
92
+ * Returns the local coordinate space sides
93
+ */
94
+ getLocalSides() {
95
+ if (this._localSides.length) {
96
+ return this._localSides;
97
+ }
98
+ const lines = [];
99
+ const points = this.points;
100
+ const len = points.length;
101
+ for (let i = 0; i < len; i++) {
102
+ // This winding is important
103
+ lines.push(new Line(points[i], points[(i + 1) % len]));
104
+ }
105
+ this._localSides = lines;
106
+ return this._localSides;
107
+ }
108
+ /**
109
+ * Given a direction vector find the world space side that is most in that direction
110
+ * @param direction
111
+ */
112
+ findSide(direction) {
113
+ const sides = this.getSides();
114
+ let bestSide = sides[0];
115
+ let maxDistance = -Number.MAX_VALUE;
116
+ for (let side = 0; side < sides.length; side++) {
117
+ const currentSide = sides[side];
118
+ const sideNormal = currentSide.normal();
119
+ const mostDirection = sideNormal.dot(direction);
120
+ if (mostDirection > maxDistance) {
121
+ bestSide = currentSide;
122
+ maxDistance = mostDirection;
123
+ }
124
+ }
125
+ return bestSide;
126
+ }
127
+ /**
128
+ * Given a direction vector find the local space side that is most in that direction
129
+ * @param direction
130
+ */
131
+ findLocalSide(direction) {
132
+ const sides = this.getLocalSides();
133
+ let bestSide = sides[0];
134
+ let maxDistance = -Number.MAX_VALUE;
135
+ for (let side = 0; side < sides.length; side++) {
136
+ const currentSide = sides[side];
137
+ const sideNormal = currentSide.normal();
138
+ const mostDirection = sideNormal.dot(direction);
139
+ if (mostDirection > maxDistance) {
140
+ bestSide = currentSide;
141
+ maxDistance = mostDirection;
142
+ }
143
+ }
144
+ return bestSide;
145
+ }
146
+ /**
147
+ * Get the axis associated with the convex polygon
148
+ */
149
+ get axes() {
150
+ if (this._axes.length) {
151
+ return this._axes;
152
+ }
153
+ const axes = this.getSides().map((s) => s.normal());
154
+ this._axes = axes;
155
+ return this._axes;
156
+ }
157
+ update(transform) {
158
+ this._transform = transform;
159
+ this._sides.length = 0;
160
+ this._localSides.length = 0;
161
+ this._axes.length = 0;
162
+ this._transformedPoints.length = 0;
163
+ this.getTransformedPoints();
164
+ this.getSides();
165
+ this.getLocalSides();
166
+ }
167
+ /**
168
+ * Tests if a point is contained in this collider in world space
169
+ */
170
+ contains(point) {
171
+ // Always cast to the right, as long as we cast in a consistent fixed direction we
172
+ // will be fine
173
+ const testRay = new Ray(point, new Vector(1, 0));
174
+ const intersectCount = this.getSides().reduce(function (accum, side) {
175
+ if (testRay.intersect(side) >= 0) {
176
+ return accum + 1;
177
+ }
178
+ return accum;
179
+ }, 0);
180
+ if (intersectCount % 2 === 0) {
181
+ return false;
182
+ }
183
+ return true;
184
+ }
185
+ getClosestLineBetween(collider) {
186
+ if (collider instanceof CircleCollider) {
187
+ return ClosestLineJumpTable.PolygonCircleClosestLine(this, collider);
188
+ }
189
+ else if (collider instanceof PolygonCollider) {
190
+ return ClosestLineJumpTable.PolygonPolygonClosestLine(this, collider);
191
+ }
192
+ else if (collider instanceof EdgeCollider) {
193
+ return ClosestLineJumpTable.PolygonEdgeClosestLine(this, collider);
194
+ }
195
+ else {
196
+ throw new Error(`Polygon could not collide with unknown CollisionShape ${typeof collider}`);
197
+ }
198
+ }
199
+ /**
200
+ * Returns a collision contact if the 2 colliders collide, otherwise collide will
201
+ * return null.
202
+ * @param collider
203
+ */
204
+ collide(collider) {
205
+ if (collider instanceof CircleCollider) {
206
+ return CollisionJumpTable.CollideCirclePolygon(collider, this);
207
+ }
208
+ else if (collider instanceof PolygonCollider) {
209
+ return CollisionJumpTable.CollidePolygonPolygon(this, collider);
210
+ }
211
+ else if (collider instanceof EdgeCollider) {
212
+ return CollisionJumpTable.CollidePolygonEdge(this, collider);
213
+ }
214
+ else {
215
+ throw new Error(`Polygon could not collide with unknown CollisionShape ${typeof collider}`);
216
+ }
217
+ }
218
+ /**
219
+ * Find the point on the collider furthest in the direction specified
220
+ */
221
+ getFurthestPoint(direction) {
222
+ const pts = this.getTransformedPoints();
223
+ let furthestPoint = null;
224
+ let maxDistance = -Number.MAX_VALUE;
225
+ for (let i = 0; i < pts.length; i++) {
226
+ const distance = direction.dot(pts[i]);
227
+ if (distance > maxDistance) {
228
+ maxDistance = distance;
229
+ furthestPoint = pts[i];
230
+ }
231
+ }
232
+ return furthestPoint;
233
+ }
234
+ /**
235
+ * Find the local point on the collider furthest in the direction specified
236
+ * @param direction
237
+ */
238
+ getFurthestLocalPoint(direction) {
239
+ const pts = this.points;
240
+ let furthestPoint = pts[0];
241
+ let maxDistance = -Number.MAX_VALUE;
242
+ for (let i = 0; i < pts.length; i++) {
243
+ const distance = direction.dot(pts[i]);
244
+ if (distance > maxDistance) {
245
+ maxDistance = distance;
246
+ furthestPoint = pts[i];
247
+ }
248
+ }
249
+ return furthestPoint;
250
+ }
251
+ /**
252
+ * Finds the closes face to the point using perpendicular distance
253
+ * @param point point to test against polygon
254
+ */
255
+ getClosestFace(point) {
256
+ const sides = this.getSides();
257
+ let min = Number.POSITIVE_INFINITY;
258
+ let faceIndex = -1;
259
+ let distance = -1;
260
+ for (let i = 0; i < sides.length; i++) {
261
+ const dist = sides[i].distanceToPoint(point);
262
+ if (dist < min) {
263
+ min = dist;
264
+ faceIndex = i;
265
+ distance = dist;
266
+ }
267
+ }
268
+ if (faceIndex !== -1) {
269
+ return {
270
+ distance: sides[faceIndex].normal().scale(distance),
271
+ face: sides[faceIndex]
272
+ };
273
+ }
274
+ return null;
275
+ }
276
+ /**
277
+ * Get the axis aligned bounding box for the polygon collider in world coordinates
278
+ */
279
+ get bounds() {
280
+ var _a, _b, _c;
281
+ const tx = this._transform;
282
+ const scale = (_a = tx === null || tx === void 0 ? void 0 : tx.globalScale) !== null && _a !== void 0 ? _a : Vector.One;
283
+ const rotation = (_b = tx === null || tx === void 0 ? void 0 : tx.globalRotation) !== null && _b !== void 0 ? _b : 0;
284
+ const pos = ((_c = tx === null || tx === void 0 ? void 0 : tx.globalPos) !== null && _c !== void 0 ? _c : Vector.Zero).add(this.offset);
285
+ return this.localBounds.scale(scale).rotate(rotation).translate(pos);
286
+ }
287
+ /**
288
+ * Get the axis aligned bounding box for the polygon collider in local coordinates
289
+ */
290
+ get localBounds() {
291
+ return BoundingBox.fromPoints(this.points);
292
+ }
293
+ /**
294
+ * Get the moment of inertia for an arbitrary polygon
295
+ * https://en.wikipedia.org/wiki/List_of_moments_of_inertia
296
+ */
297
+ getInertia(mass) {
298
+ let numerator = 0;
299
+ let denominator = 0;
300
+ for (let i = 0; i < this.points.length; i++) {
301
+ const iplusone = (i + 1) % this.points.length;
302
+ const crossTerm = this.points[iplusone].cross(this.points[i]);
303
+ numerator +=
304
+ crossTerm *
305
+ (this.points[i].dot(this.points[i]) + this.points[i].dot(this.points[iplusone]) + this.points[iplusone].dot(this.points[iplusone]));
306
+ denominator += crossTerm;
307
+ }
308
+ return (mass / 6) * (numerator / denominator);
309
+ }
310
+ /**
311
+ * Casts a ray into the polygon and returns a vector representing the point of contact (in world space) or null if no collision.
312
+ */
313
+ rayCast(ray, max = Infinity) {
314
+ // find the minimum contact time greater than 0
315
+ // contact times less than 0 are behind the ray and we don't want those
316
+ const sides = this.getSides();
317
+ const len = sides.length;
318
+ let minContactTime = Number.MAX_VALUE;
319
+ let contactIndex = -1;
320
+ for (let i = 0; i < len; i++) {
321
+ const contactTime = ray.intersect(sides[i]);
322
+ if (contactTime >= 0 && contactTime < minContactTime && contactTime <= max) {
323
+ minContactTime = contactTime;
324
+ contactIndex = i;
325
+ }
326
+ }
327
+ // contact was found
328
+ if (contactIndex >= 0) {
329
+ return ray.getPoint(minContactTime);
330
+ }
331
+ // no contact found
332
+ return null;
333
+ }
334
+ /**
335
+ * Project the edges of the polygon along a specified axis
336
+ */
337
+ project(axis) {
338
+ const points = this.getTransformedPoints();
339
+ const len = points.length;
340
+ let min = Number.MAX_VALUE;
341
+ let max = -Number.MAX_VALUE;
342
+ for (let i = 0; i < len; i++) {
343
+ const scalar = points[i].dot(axis);
344
+ min = Math.min(min, scalar);
345
+ max = Math.max(max, scalar);
346
+ }
347
+ return new Projection(min, max);
348
+ }
349
+ draw(ctx, color = Color.Green, pos = Vector.Zero) {
350
+ const effectiveOffset = pos.add(this.offset);
351
+ ctx.beginPath();
352
+ ctx.fillStyle = color.toString();
353
+ const firstPoint = this.points[0].add(effectiveOffset);
354
+ ctx.moveTo(firstPoint.x, firstPoint.y);
355
+ // Points are relative
356
+ this.points
357
+ .map((p) => p.add(effectiveOffset))
358
+ .forEach(function (point) {
359
+ ctx.lineTo(point.x, point.y);
360
+ });
361
+ ctx.lineTo(firstPoint.x, firstPoint.y);
362
+ ctx.closePath();
363
+ ctx.fill();
364
+ }
365
+ debug(ex, color) {
366
+ const firstPoint = this.getTransformedPoints()[0];
367
+ const points = [firstPoint, ...this.getTransformedPoints(), firstPoint];
368
+ for (let i = 0; i < points.length - 1; i++) {
369
+ ex.drawLine(points[i], points[i + 1], color, 2);
370
+ ex.drawCircle(points[i], 2, color);
371
+ ex.drawCircle(points[i + 1], 2, color);
372
+ }
373
+ }
374
+ /* istanbul ignore next */
375
+ debugDraw(ctx, color = Color.Red) {
376
+ ctx.beginPath();
377
+ ctx.strokeStyle = color.toString();
378
+ // Iterate through the supplied points and construct a 'polygon'
379
+ const firstPoint = this.getTransformedPoints()[0];
380
+ ctx.moveTo(firstPoint.x, firstPoint.y);
381
+ this.getTransformedPoints().forEach(function (point) {
382
+ ctx.lineTo(point.x, point.y);
383
+ });
384
+ ctx.lineTo(firstPoint.x, firstPoint.y);
385
+ ctx.closePath();
386
+ ctx.stroke();
387
+ }
388
+ }
389
+ //# sourceMappingURL=PolygonCollider.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PolygonCollider.js","sourceRoot":"","sources":["../../../../src/engine/Collision/Colliders/PolygonCollider.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AACpC,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAC7C,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC9C,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAElD,OAAO,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AACnD,OAAO,EAAE,IAAI,EAAE,MAAM,iBAAiB,CAAC;AACvC,OAAO,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAC3C,OAAO,EAAE,GAAG,EAAE,MAAM,gBAAgB,CAAC;AACrC,OAAO,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AAE9D,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAkBtC;;GAEG;AACH,MAAM,OAAO,eAAgB,SAAQ,QAAQ;IAkB3C,YAAY,OAA+B;;QACzC,KAAK,EAAE,CAAC;QANF,uBAAkB,GAAa,EAAE,CAAC;QAClC,UAAK,GAAa,EAAE,CAAC;QACrB,WAAM,GAAW,EAAE,CAAC;QACpB,gBAAW,GAAW,EAAE,CAAC;QAI/B,IAAI,CAAC,MAAM,GAAG,MAAA,OAAO,CAAC,MAAM,mCAAI,MAAM,CAAC,IAAI,CAAC;QAC5C,MAAM,OAAO,GAAG,CAAC,CAAC,OAAO,CAAC,gBAAgB,CAAC;QAC3C,IAAI,CAAC,MAAM,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;QAE1E,mCAAmC;QACnC,IAAI,CAAC,wBAAwB,EAAE,CAAC;IAClC,CAAC;IAED;;OAEG;IACI,KAAK;QACV,OAAO,IAAI,eAAe,CAAC;YACzB,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE;YAC3B,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC;SAC1C,CAAC,CAAC;IACL,CAAC;IAED;;OAEG;IACH,IAAW,QAAQ;QACjB,IAAI,IAAI,CAAC,UAAU,EAAE;YACnB,OAAO,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;SAC7C;QACD,OAAO,IAAI,CAAC,MAAM,CAAC;IACrB,CAAC;IAED;;OAEG;IACH,IAAW,MAAM;QACf,OAAO,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC;IAC5B,CAAC;IAED;;OAEG;IACK,wBAAwB;QAC9B,MAAM,SAAS,GAAG,IAAI,CAAC,UAAgC,CAAC;QAExD,MAAM,GAAG,GAAG,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC;QAC3E,MAAM,KAAK,GAAG,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC;QACvD,MAAM,KAAK,GAAG,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC;QAE7D,MAAM,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC;QAC/B,IAAI,CAAC,kBAAkB,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,0BAA0B;QAC9D,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,EAAE,CAAC,EAAE,EAAE;YAC5B,IAAI,CAAC,kBAAkB,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;SACjF;IACH,CAAC;IAED;;OAEG;IACI,oBAAoB;QACzB,IAAI,CAAC,wBAAwB,EAAE,CAAC;QAChC,OAAO,IAAI,CAAC,kBAAkB,CAAC;IACjC,CAAC;IAED;;OAEG;IACI,QAAQ;QACb,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE;YACtB,OAAO,IAAI,CAAC,MAAM,CAAC;SACpB;QACD,MAAM,KAAK,GAAG,EAAE,CAAC;QACjB,MAAM,MAAM,GAAG,IAAI,CAAC,oBAAoB,EAAE,CAAC;QAC3C,MAAM,GAAG,GAAG,MAAM,CAAC,MAAM,CAAC;QAC1B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,EAAE,CAAC,EAAE,EAAE;YAC5B,4BAA4B;YAC5B,KAAK,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC;SACxD;QACD,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;QACpB,OAAO,IAAI,CAAC,MAAM,CAAC;IACrB,CAAC;IAED;;OAEG;IACI,aAAa;QAClB,IAAI,IAAI,CAAC,WAAW,CAAC,MAAM,EAAE;YAC3B,OAAO,IAAI,CAAC,WAAW,CAAC;SACzB;QACD,MAAM,KAAK,GAAG,EAAE,CAAC;QACjB,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;QAC3B,MAAM,GAAG,GAAG,MAAM,CAAC,MAAM,CAAC;QAC1B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,EAAE,CAAC,EAAE,EAAE;YAC5B,4BAA4B;YAC5B,KAAK,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC;SACxD;QACD,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC;QACzB,OAAO,IAAI,CAAC,WAAW,CAAC;IAC1B,CAAC;IAED;;;OAGG;IACI,QAAQ,CAAC,SAAiB;QAC/B,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC;QAC9B,IAAI,QAAQ,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;QACxB,IAAI,WAAW,GAAG,CAAC,MAAM,CAAC,SAAS,CAAC;QACpC,KAAK,IAAI,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,KAAK,CAAC,MAAM,EAAE,IAAI,EAAE,EAAE;YAC9C,MAAM,WAAW,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC;YAChC,MAAM,UAAU,GAAG,WAAW,CAAC,MAAM,EAAE,CAAC;YACxC,MAAM,aAAa,GAAG,UAAU,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;YAChD,IAAI,aAAa,GAAG,WAAW,EAAE;gBAC/B,QAAQ,GAAG,WAAW,CAAC;gBACvB,WAAW,GAAG,aAAa,CAAC;aAC7B;SACF;QACD,OAAO,QAAQ,CAAC;IAClB,CAAC;IAED;;;OAGG;IACI,aAAa,CAAC,SAAiB;QACpC,MAAM,KAAK,GAAG,IAAI,CAAC,aAAa,EAAE,CAAC;QACnC,IAAI,QAAQ,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;QACxB,IAAI,WAAW,GAAG,CAAC,MAAM,CAAC,SAAS,CAAC;QACpC,KAAK,IAAI,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,KAAK,CAAC,MAAM,EAAE,IAAI,EAAE,EAAE;YAC9C,MAAM,WAAW,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC;YAChC,MAAM,UAAU,GAAG,WAAW,CAAC,MAAM,EAAE,CAAC;YACxC,MAAM,aAAa,GAAG,UAAU,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;YAChD,IAAI,aAAa,GAAG,WAAW,EAAE;gBAC/B,QAAQ,GAAG,WAAW,CAAC;gBACvB,WAAW,GAAG,aAAa,CAAC;aAC7B;SACF;QACD,OAAO,QAAQ,CAAC;IAClB,CAAC;IAED;;OAEG;IACH,IAAW,IAAI;QACb,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE;YACrB,OAAO,IAAI,CAAC,KAAK,CAAC;SACnB;QACD,MAAM,IAAI,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC;QACpD,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;QAClB,OAAO,IAAI,CAAC,KAAK,CAAC;IACpB,CAAC;IAEM,MAAM,CAAC,SAAoB;QAChC,IAAI,CAAC,UAAU,GAAG,SAAS,CAAC;QAC5B,IAAI,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC;QACvB,IAAI,CAAC,WAAW,CAAC,MAAM,GAAG,CAAC,CAAC;QAC5B,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC;QACtB,IAAI,CAAC,kBAAkB,CAAC,MAAM,GAAG,CAAC,CAAC;QACnC,IAAI,CAAC,oBAAoB,EAAE,CAAC;QAC5B,IAAI,CAAC,QAAQ,EAAE,CAAC;QAChB,IAAI,CAAC,aAAa,EAAE,CAAC;IACvB,CAAC;IAED;;OAEG;IACI,QAAQ,CAAC,KAAa;QAC3B,kFAAkF;QAClF,eAAe;QACf,MAAM,OAAO,GAAG,IAAI,GAAG,CAAC,KAAK,EAAE,IAAI,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;QACjD,MAAM,cAAc,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,UAAU,KAAK,EAAE,IAAI;YACjE,IAAI,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;gBAChC,OAAO,KAAK,GAAG,CAAC,CAAC;aAClB;YACD,OAAO,KAAK,CAAC;QACf,CAAC,EAAE,CAAC,CAAC,CAAC;QAEN,IAAI,cAAc,GAAG,CAAC,KAAK,CAAC,EAAE;YAC5B,OAAO,KAAK,CAAC;SACd;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IAEM,qBAAqB,CAAC,QAAkB;QAC7C,IAAI,QAAQ,YAAY,cAAc,EAAE;YACtC,OAAO,oBAAoB,CAAC,wBAAwB,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;SACtE;aAAM,IAAI,QAAQ,YAAY,eAAe,EAAE;YAC9C,OAAO,oBAAoB,CAAC,yBAAyB,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;SACvE;aAAM,IAAI,QAAQ,YAAY,YAAY,EAAE;YAC3C,OAAO,oBAAoB,CAAC,sBAAsB,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;SACpE;aAAM;YACL,MAAM,IAAI,KAAK,CAAC,yDAAyD,OAAO,QAAQ,EAAE,CAAC,CAAC;SAC7F;IACH,CAAC;IAED;;;;OAIG;IACI,OAAO,CAAC,QAAkB;QAC/B,IAAI,QAAQ,YAAY,cAAc,EAAE;YACtC,OAAO,kBAAkB,CAAC,oBAAoB,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;SAChE;aAAM,IAAI,QAAQ,YAAY,eAAe,EAAE;YAC9C,OAAO,kBAAkB,CAAC,qBAAqB,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;SACjE;aAAM,IAAI,QAAQ,YAAY,YAAY,EAAE;YAC3C,OAAO,kBAAkB,CAAC,kBAAkB,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;SAC9D;aAAM;YACL,MAAM,IAAI,KAAK,CAAC,yDAAyD,OAAO,QAAQ,EAAE,CAAC,CAAC;SAC7F;IACH,CAAC;IAED;;OAEG;IACI,gBAAgB,CAAC,SAAiB;QACvC,MAAM,GAAG,GAAG,IAAI,CAAC,oBAAoB,EAAE,CAAC;QACxC,IAAI,aAAa,GAAG,IAAI,CAAC;QACzB,IAAI,WAAW,GAAG,CAAC,MAAM,CAAC,SAAS,CAAC;QACpC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;YACnC,MAAM,QAAQ,GAAG,SAAS,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;YACvC,IAAI,QAAQ,GAAG,WAAW,EAAE;gBAC1B,WAAW,GAAG,QAAQ,CAAC;gBACvB,aAAa,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC;aACxB;SACF;QACD,OAAO,aAAa,CAAC;IACvB,CAAC;IAED;;;OAGG;IACI,qBAAqB,CAAC,SAAiB;QAC5C,MAAM,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC;QACxB,IAAI,aAAa,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC;QAC3B,IAAI,WAAW,GAAG,CAAC,MAAM,CAAC,SAAS,CAAC;QACpC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;YACnC,MAAM,QAAQ,GAAG,SAAS,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;YACvC,IAAI,QAAQ,GAAG,WAAW,EAAE;gBAC1B,WAAW,GAAG,QAAQ,CAAC;gBACvB,aAAa,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC;aACxB;SACF;QACD,OAAO,aAAa,CAAC;IACvB,CAAC;IAED;;;OAGG;IACI,cAAc,CAAC,KAAa;QACjC,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC;QAC9B,IAAI,GAAG,GAAG,MAAM,CAAC,iBAAiB,CAAC;QACnC,IAAI,SAAS,GAAG,CAAC,CAAC,CAAC;QACnB,IAAI,QAAQ,GAAG,CAAC,CAAC,CAAC;QAClB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;YACrC,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC;YAC7C,IAAI,IAAI,GAAG,GAAG,EAAE;gBACd,GAAG,GAAG,IAAI,CAAC;gBACX,SAAS,GAAG,CAAC,CAAC;gBACd,QAAQ,GAAG,IAAI,CAAC;aACjB;SACF;QAED,IAAI,SAAS,KAAK,CAAC,CAAC,EAAE;YACpB,OAAO;gBACL,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC,CAAC,MAAM,EAAE,CAAC,KAAK,CAAC,QAAQ,CAAC;gBACnD,IAAI,EAAE,KAAK,CAAC,SAAS,CAAC;aACvB,CAAC;SACH;QAED,OAAO,IAAI,CAAC;IACd,CAAC;IAED;;OAEG;IACH,IAAW,MAAM;;QACf,MAAM,EAAE,GAAG,IAAI,CAAC,UAAgC,CAAC;QACjD,MAAM,KAAK,GAAG,MAAA,EAAE,aAAF,EAAE,uBAAF,EAAE,CAAE,WAAW,mCAAI,MAAM,CAAC,GAAG,CAAC;QAC5C,MAAM,QAAQ,GAAG,MAAA,EAAE,aAAF,EAAE,uBAAF,EAAE,CAAE,cAAc,mCAAI,CAAC,CAAC;QACzC,MAAM,GAAG,GAAG,CAAC,MAAA,EAAE,aAAF,EAAE,uBAAF,EAAE,CAAE,SAAS,mCAAI,MAAM,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAC5D,OAAO,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;IACvE,CAAC;IAED;;OAEG;IACH,IAAW,WAAW;QACpB,OAAO,WAAW,CAAC,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IAC7C,CAAC;IAED;;;OAGG;IACI,UAAU,CAAC,IAAY;QAC5B,IAAI,SAAS,GAAG,CAAC,CAAC;QAClB,IAAI,WAAW,GAAG,CAAC,CAAC;QACpB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;YAC3C,MAAM,QAAQ,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC;YAC9C,MAAM,SAAS,GAAG,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;YAC9D,SAAS;gBACP,SAAS;oBACT,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;YACtI,WAAW,IAAI,SAAS,CAAC;SAC1B;QACD,OAAO,CAAC,IAAI,GAAG,CAAC,CAAC,GAAG,CAAC,SAAS,GAAG,WAAW,CAAC,CAAC;IAChD,CAAC;IAED;;OAEG;IACI,OAAO,CAAC,GAAQ,EAAE,MAAc,QAAQ;QAC7C,+CAA+C;QAC/C,uEAAuE;QACvE,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC;QAC9B,MAAM,GAAG,GAAG,KAAK,CAAC,MAAM,CAAC;QACzB,IAAI,cAAc,GAAG,MAAM,CAAC,SAAS,CAAC;QACtC,IAAI,YAAY,GAAG,CAAC,CAAC,CAAC;QACtB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,EAAE,CAAC,EAAE,EAAE;YAC5B,MAAM,WAAW,GAAG,GAAG,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;YAC5C,IAAI,WAAW,IAAI,CAAC,IAAI,WAAW,GAAG,cAAc,IAAI,WAAW,IAAI,GAAG,EAAE;gBAC1E,cAAc,GAAG,WAAW,CAAC;gBAC7B,YAAY,GAAG,CAAC,CAAC;aAClB;SACF;QAED,oBAAoB;QACpB,IAAI,YAAY,IAAI,CAAC,EAAE;YACrB,OAAO,GAAG,CAAC,QAAQ,CAAC,cAAc,CAAC,CAAC;SACrC;QAED,mBAAmB;QACnB,OAAO,IAAI,CAAC;IACd,CAAC;IAED;;OAEG;IACI,OAAO,CAAC,IAAY;QACzB,MAAM,MAAM,GAAG,IAAI,CAAC,oBAAoB,EAAE,CAAC;QAC3C,MAAM,GAAG,GAAG,MAAM,CAAC,MAAM,CAAC;QAC1B,IAAI,GAAG,GAAG,MAAM,CAAC,SAAS,CAAC;QAC3B,IAAI,GAAG,GAAG,CAAC,MAAM,CAAC,SAAS,CAAC;QAC5B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,EAAE,CAAC,EAAE,EAAE;YAC5B,MAAM,MAAM,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;YACnC,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;YAC5B,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;SAC7B;QAED,OAAO,IAAI,UAAU,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;IAClC,CAAC;IAEM,IAAI,CAAC,GAA6B,EAAE,QAAe,KAAK,CAAC,KAAK,EAAE,MAAc,MAAM,CAAC,IAAI;QAC9F,MAAM,eAAe,GAAG,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAC7C,GAAG,CAAC,SAAS,EAAE,CAAC;QAChB,GAAG,CAAC,SAAS,GAAG,KAAK,CAAC,QAAQ,EAAE,CAAC;QAEjC,MAAM,UAAU,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC;QACvD,GAAG,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,EAAE,UAAU,CAAC,CAAC,CAAC,CAAC;QAEvC,sBAAsB;QACtB,IAAI,CAAC,MAAM;aACR,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC;aAClC,OAAO,CAAC,UAAU,KAAK;YACtB,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC;QAC/B,CAAC,CAAC,CAAC;QACL,GAAG,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,EAAE,UAAU,CAAC,CAAC,CAAC,CAAC;QACvC,GAAG,CAAC,SAAS,EAAE,CAAC;QAChB,GAAG,CAAC,IAAI,EAAE,CAAC;IACb,CAAC;IACM,KAAK,CAAC,EAA4B,EAAE,KAAY;QACrD,MAAM,UAAU,GAAG,IAAI,CAAC,oBAAoB,EAAE,CAAC,CAAC,CAAC,CAAC;QAClD,MAAM,MAAM,GAAG,CAAC,UAAU,EAAE,GAAG,IAAI,CAAC,oBAAoB,EAAE,EAAE,UAAU,CAAC,CAAC;QACxE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE;YAC1C,EAAE,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC;YAChD,EAAE,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,KAAK,CAAC,CAAC;YACnC,EAAE,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,KAAK,CAAC,CAAC;SACxC;IACH,CAAC;IAED,0BAA0B;IACnB,SAAS,CAAC,GAA6B,EAAE,QAAe,KAAK,CAAC,GAAG;QACtE,GAAG,CAAC,SAAS,EAAE,CAAC;QAChB,GAAG,CAAC,WAAW,GAAG,KAAK,CAAC,QAAQ,EAAE,CAAC;QACnC,gEAAgE;QAChE,MAAM,UAAU,GAAG,IAAI,CAAC,oBAAoB,EAAE,CAAC,CAAC,CAAC,CAAC;QAClD,GAAG,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,EAAE,UAAU,CAAC,CAAC,CAAC,CAAC;QACvC,IAAI,CAAC,oBAAoB,EAAE,CAAC,OAAO,CAAC,UAAU,KAAK;YACjD,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC;QAC/B,CAAC,CAAC,CAAC;QACH,GAAG,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,EAAE,UAAU,CAAC,CAAC,CAAC,CAAC;QACvC,GAAG,CAAC,SAAS,EAAE,CAAC;QAChB,GAAG,CAAC,MAAM,EAAE,CAAC;IACf,CAAC;CACF"}