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,367 @@
1
+ import { Color } from './Color';
2
+ import { WebAudio } from './Util/WebAudio';
3
+ import { Class } from './Class';
4
+ import * as DrawUtil from './Util/DrawUtil';
5
+ import logoImg from './Loader.logo.png';
6
+ import loaderCss from './Loader.css';
7
+ import { Canvas } from './Graphics/Canvas';
8
+ import { delay } from './Util/Util';
9
+ import { ImageFiltering } from './Graphics/Filtering';
10
+ import { clamp } from './Math/util';
11
+ /**
12
+ * Pre-loading assets
13
+ *
14
+ * The loader provides a mechanism to preload multiple resources at
15
+ * one time. The loader must be passed to the engine in order to
16
+ * trigger the loading progress bar.
17
+ *
18
+ * The [[Loader]] itself implements [[Loadable]] so you can load loaders.
19
+ *
20
+ * ## Example: Pre-loading resources for a game
21
+ *
22
+ * ```js
23
+ * // create a loader
24
+ * var loader = new ex.Loader();
25
+ *
26
+ * // create a resource dictionary (best practice is to keep a separate file)
27
+ * var resources = {
28
+ * TextureGround: new ex.Texture("/images/textures/ground.png"),
29
+ * SoundDeath: new ex.Sound("/sound/death.wav", "/sound/death.mp3")
30
+ * };
31
+ *
32
+ * // loop through dictionary and add to loader
33
+ * for (var loadable in resources) {
34
+ * if (resources.hasOwnProperty(loadable)) {
35
+ * loader.addResource(resources[loadable]);
36
+ * }
37
+ * }
38
+ *
39
+ * // start game
40
+ * game.start(loader).then(function () {
41
+ * console.log("Game started!");
42
+ * });
43
+ * ```
44
+ *
45
+ * ## Customize the Loader
46
+ *
47
+ * The loader can be customized to show different, text, logo, background color, and button.
48
+ *
49
+ * ```typescript
50
+ * const loader = new ex.Loader([playerTexture]);
51
+ *
52
+ * // The loaders button text can simply modified using this
53
+ * loader.playButtonText = 'Start the best game ever';
54
+ *
55
+ * // The logo can be changed by inserting a base64 image string here
56
+ *
57
+ * loader.logo = 'data:image/png;base64,iVBORw...';
58
+ * loader.logoWidth = 15;
59
+ * loader.logoHeight = 14;
60
+ *
61
+ * // The background color can be changed like so by supplying a valid CSS color string
62
+ *
63
+ * loader.backgroundColor = 'red'
64
+ * loader.backgroundColor = '#176BAA'
65
+ *
66
+ * // To build a completely new button
67
+ * loader.startButtonFactory = () => {
68
+ * let myButton = document.createElement('button');
69
+ * myButton.textContent = 'The best button';
70
+ * return myButton;
71
+ * };
72
+ *
73
+ * engine.start(loader).then(() => {});
74
+ * ```
75
+ */
76
+ export class Loader extends Class {
77
+ /**
78
+ * @param loadables Optionally provide the list of resources you want to load at constructor time
79
+ */
80
+ constructor(loadables) {
81
+ super();
82
+ this.canvas = new Canvas({
83
+ filtering: ImageFiltering.Blended,
84
+ smoothing: true,
85
+ draw: this.draw.bind(this)
86
+ });
87
+ this._resourceList = [];
88
+ this._index = 0;
89
+ this._playButtonShown = false;
90
+ this._resourceCount = 0;
91
+ this._numLoaded = 0;
92
+ this._progressCounts = {};
93
+ this._totalCounts = {};
94
+ // logo drawing stuff
95
+ // base64 string encoding of the excalibur logo (logo-white.png)
96
+ this.logo = logoImg;
97
+ this.logoWidth = 468;
98
+ this.logoHeight = 118;
99
+ /**
100
+ * Gets or sets the color of the loading bar, default is [[Color.White]]
101
+ */
102
+ this.loadingBarColor = Color.White;
103
+ /**
104
+ * Gets or sets the background color of the loader as a hex string
105
+ */
106
+ this.backgroundColor = '#176BAA';
107
+ this.suppressPlayButton = false;
108
+ /** Loads the css from Loader.css */
109
+ this._playButtonStyles = loaderCss.toString();
110
+ /**
111
+ * Get/set play button text
112
+ */
113
+ this.playButtonText = 'Play game';
114
+ /**
115
+ * Return a html button element for excalibur to use as a play button
116
+ */
117
+ this.startButtonFactory = () => {
118
+ let buttonElement = document.getElementById('excalibur-play');
119
+ if (!buttonElement) {
120
+ buttonElement = document.createElement('button');
121
+ }
122
+ buttonElement.id = 'excalibur-play';
123
+ buttonElement.textContent = this.playButtonText;
124
+ buttonElement.style.display = 'none';
125
+ return buttonElement;
126
+ };
127
+ this._isLoadedPromise = new Promise(resolve => {
128
+ this._isLoadedResolve = resolve;
129
+ });
130
+ if (loadables) {
131
+ this.addResources(loadables);
132
+ }
133
+ }
134
+ get _image() {
135
+ if (!this._imageElement) {
136
+ this._imageElement = new Image();
137
+ this._imageElement.src = this.logo;
138
+ }
139
+ return this._imageElement;
140
+ }
141
+ get playButtonRootElement() {
142
+ return this._playButtonRootElement;
143
+ }
144
+ get playButtonElement() {
145
+ return this._playButtonElement;
146
+ }
147
+ get _playButton() {
148
+ const existingRoot = document.getElementById('excalibur-play-root');
149
+ if (existingRoot) {
150
+ this._playButtonRootElement = existingRoot;
151
+ }
152
+ if (!this._playButtonRootElement) {
153
+ this._playButtonRootElement = document.createElement('div');
154
+ this._playButtonRootElement.id = 'excalibur-play-root';
155
+ this._playButtonRootElement.style.position = 'absolute';
156
+ document.body.appendChild(this._playButtonRootElement);
157
+ }
158
+ if (!this._styleBlock) {
159
+ this._styleBlock = document.createElement('style');
160
+ this._styleBlock.textContent = this._playButtonStyles;
161
+ document.head.appendChild(this._styleBlock);
162
+ }
163
+ if (!this._playButtonElement) {
164
+ this._playButtonElement = this.startButtonFactory();
165
+ this._playButtonRootElement.appendChild(this._playButtonElement);
166
+ }
167
+ return this._playButtonElement;
168
+ }
169
+ wireEngine(engine) {
170
+ this._engine = engine;
171
+ this.canvas.width = this._engine.canvas.width;
172
+ this.canvas.height = this._engine.canvas.height;
173
+ }
174
+ /**
175
+ * Add a resource to the loader to load
176
+ * @param loadable Resource to add
177
+ */
178
+ addResource(loadable) {
179
+ const key = this._index++;
180
+ this._resourceList.push(loadable);
181
+ this._progressCounts[key] = 0;
182
+ this._totalCounts[key] = 1;
183
+ this._resourceCount++;
184
+ }
185
+ /**
186
+ * Add a list of resources to the loader to load
187
+ * @param loadables The list of resources to load
188
+ */
189
+ addResources(loadables) {
190
+ let i = 0;
191
+ const len = loadables.length;
192
+ for (i; i < len; i++) {
193
+ this.addResource(loadables[i]);
194
+ }
195
+ }
196
+ /**
197
+ * Returns true if the loader has completely loaded all resources
198
+ */
199
+ isLoaded() {
200
+ return this._numLoaded === this._resourceCount;
201
+ }
202
+ /**
203
+ * Shows the play button and returns a promise that resolves when clicked
204
+ */
205
+ async showPlayButton() {
206
+ var _a, _b;
207
+ if (this.suppressPlayButton) {
208
+ this.hidePlayButton();
209
+ // Delay is to give the logo a chance to show, otherwise don't delay
210
+ await delay(500, (_a = this._engine) === null || _a === void 0 ? void 0 : _a.clock);
211
+ }
212
+ else {
213
+ const resizeHandler = () => {
214
+ this._positionPlayButton();
215
+ };
216
+ if ((_b = this._engine) === null || _b === void 0 ? void 0 : _b.browser) {
217
+ this._engine.browser.window.on('resize', resizeHandler);
218
+ }
219
+ this._playButtonShown = true;
220
+ this._playButton.style.display = 'block';
221
+ document.body.addEventListener('keyup', (evt) => {
222
+ if (evt.key === 'Enter') {
223
+ this._playButton.click();
224
+ }
225
+ });
226
+ this._positionPlayButton();
227
+ const playButtonClicked = new Promise((resolve) => {
228
+ const startButtonHandler = (e) => {
229
+ var _a;
230
+ // We want to stop propagation to keep bubbling to the engine pointer handlers
231
+ e.stopPropagation();
232
+ // Hide Button after click
233
+ this.hidePlayButton();
234
+ if ((_a = this._engine) === null || _a === void 0 ? void 0 : _a.browser) {
235
+ this._engine.browser.window.off('resize', resizeHandler);
236
+ }
237
+ resolve();
238
+ };
239
+ this._playButton.addEventListener('click', startButtonHandler);
240
+ this._playButton.addEventListener('touchend', startButtonHandler);
241
+ this._playButton.addEventListener('pointerup', startButtonHandler);
242
+ });
243
+ return await playButtonClicked;
244
+ }
245
+ }
246
+ hidePlayButton() {
247
+ this._playButtonShown = false;
248
+ this._playButton.style.display = 'none';
249
+ }
250
+ /**
251
+ * Clean up generated elements for the loader
252
+ */
253
+ dispose() {
254
+ if (this._playButtonRootElement.parentElement) {
255
+ this._playButtonRootElement.removeChild(this._playButtonElement);
256
+ document.body.removeChild(this._playButtonRootElement);
257
+ document.head.removeChild(this._styleBlock);
258
+ this._playButtonRootElement = null;
259
+ this._playButtonElement = null;
260
+ this._styleBlock = null;
261
+ }
262
+ }
263
+ update(_engine, _delta) {
264
+ // override me
265
+ }
266
+ areResourcesLoaded() {
267
+ return this._isLoadedPromise;
268
+ }
269
+ /**
270
+ * Begin loading all of the supplied resources, returning a promise
271
+ * that resolves when loading of all is complete AND the user has clicked the "Play button"
272
+ */
273
+ async load() {
274
+ var _a, _b;
275
+ await ((_a = this._image) === null || _a === void 0 ? void 0 : _a.decode()); // decode logo if it exists
276
+ await Promise.all(this._resourceList.map((r) => r.load().finally(() => {
277
+ // capture progress
278
+ this._numLoaded++;
279
+ })));
280
+ this._isLoadedResolve();
281
+ // short delay in showing the button for aesthetics
282
+ await delay(200, (_b = this._engine) === null || _b === void 0 ? void 0 : _b.clock);
283
+ await this.showPlayButton();
284
+ // Unlock browser AudioContext in after user gesture
285
+ // See: https://github.com/excaliburjs/Excalibur/issues/262
286
+ // See: https://github.com/excaliburjs/Excalibur/issues/1031
287
+ await WebAudio.unlock();
288
+ return (this.data = this._resourceList);
289
+ }
290
+ markResourceComplete() {
291
+ this._numLoaded++;
292
+ }
293
+ /**
294
+ * Returns the progress of the loader as a number between [0, 1] inclusive.
295
+ */
296
+ get progress() {
297
+ return this._resourceCount > 0 ? clamp(this._numLoaded, 0, this._resourceCount) / this._resourceCount : 1;
298
+ }
299
+ _positionPlayButton() {
300
+ if (this._engine) {
301
+ const screenHeight = this._engine.screen.viewport.height;
302
+ const screenWidth = this._engine.screen.viewport.width;
303
+ if (this._playButtonRootElement) {
304
+ const left = this._engine.canvas.offsetLeft;
305
+ const top = this._engine.canvas.offsetTop;
306
+ const buttonWidth = this._playButton.clientWidth;
307
+ const buttonHeight = this._playButton.clientHeight;
308
+ if (this.playButtonPosition) {
309
+ this._playButtonRootElement.style.left = `${this.playButtonPosition.x}px`;
310
+ this._playButtonRootElement.style.top = `${this.playButtonPosition.y}px`;
311
+ }
312
+ else {
313
+ this._playButtonRootElement.style.left = `${left + screenWidth / 2 - buttonWidth / 2}px`;
314
+ this._playButtonRootElement.style.top = `${top + screenHeight / 2 - buttonHeight / 2 + 100}px`;
315
+ }
316
+ }
317
+ }
318
+ }
319
+ /**
320
+ * Loader draw function. Draws the default Excalibur loading screen.
321
+ * Override `logo`, `logoWidth`, `logoHeight` and `backgroundColor` properties
322
+ * to customize the drawing, or just override entire method.
323
+ */
324
+ draw(ctx) {
325
+ const canvasHeight = this._engine.canvasHeight / this._engine.pixelRatio;
326
+ const canvasWidth = this._engine.canvasWidth / this._engine.pixelRatio;
327
+ this._positionPlayButton();
328
+ ctx.fillStyle = this.backgroundColor;
329
+ ctx.fillRect(0, 0, canvasWidth, canvasHeight);
330
+ let logoY = canvasHeight / 2;
331
+ const width = Math.min(this.logoWidth, canvasWidth * 0.75);
332
+ let logoX = canvasWidth / 2 - width / 2;
333
+ if (this.logoPosition) {
334
+ logoX = this.logoPosition.x;
335
+ logoY = this.logoPosition.y;
336
+ }
337
+ const imageHeight = Math.floor(width * (this.logoHeight / this.logoWidth)); // OG height/width factor
338
+ const oldAntialias = this._engine.getAntialiasing();
339
+ this._engine.setAntialiasing(true);
340
+ if (!this.logoPosition) {
341
+ ctx.drawImage(this._image, 0, 0, this.logoWidth, this.logoHeight, logoX, logoY - imageHeight - 20, width, imageHeight);
342
+ }
343
+ else {
344
+ ctx.drawImage(this._image, 0, 0, this.logoWidth, this.logoHeight, logoX, logoY, width, imageHeight);
345
+ }
346
+ // loading box
347
+ if (!this.suppressPlayButton && this._playButtonShown) {
348
+ this._engine.setAntialiasing(oldAntialias);
349
+ return;
350
+ }
351
+ let loadingX = logoX;
352
+ let loadingY = logoY;
353
+ if (this.loadingBarPosition) {
354
+ loadingX = this.loadingBarPosition.x;
355
+ loadingY = this.loadingBarPosition.y;
356
+ }
357
+ ctx.lineWidth = 2;
358
+ DrawUtil.roundRect(ctx, loadingX, loadingY, width, 20, 10, this.loadingBarColor);
359
+ const progress = width * this.progress;
360
+ const margin = 5;
361
+ const progressWidth = progress - margin * 2;
362
+ const height = 20 - margin * 2;
363
+ DrawUtil.roundRect(ctx, loadingX + margin, loadingY + margin, progressWidth > 10 ? progressWidth : 10, height, 5, null, this.loadingBarColor);
364
+ this._engine.setAntialiasing(oldAntialias);
365
+ }
366
+ }
367
+ //# sourceMappingURL=Loader.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Loader.js","sourceRoot":"","sources":["../../src/engine/Loader.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AAChC,OAAO,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAG3C,OAAO,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AAChC,OAAO,KAAK,QAAQ,MAAM,iBAAiB,CAAC;AAE5C,OAAO,OAAO,MAAM,mBAAmB,CAAC;AACxC,OAAO,SAAS,MAAM,cAAc,CAAC;AACrC,OAAO,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAE3C,OAAO,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AACpC,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AAEpC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgEG;AACH,MAAM,OAAO,MAAO,SAAQ,KAAK;IAiH/B;;OAEG;IACH,YAAY,SAA2B;QACrC,KAAK,EAAE,CAAC;QApHH,WAAM,GAAW,IAAI,MAAM,CAAC;YACjC,SAAS,EAAE,cAAc,CAAC,OAAO;YACjC,SAAS,EAAE,IAAI;YACf,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC;SAC3B,CAAC,CAAC;QACK,kBAAa,GAAoB,EAAE,CAAC;QACpC,WAAM,GAAG,CAAC,CAAC;QAEX,qBAAgB,GAAY,KAAK,CAAC;QAClC,mBAAc,GAAW,CAAC,CAAC;QAC3B,eAAU,GAAW,CAAC,CAAC;QACvB,oBAAe,GAA8B,EAAE,CAAC;QAChD,iBAAY,GAA8B,EAAE,CAAC;QAGrD,qBAAqB;QAErB,gEAAgE;QACzD,SAAI,GAAG,OAAO,CAAC;QACf,cAAS,GAAG,GAAG,CAAC;QAChB,eAAU,GAAG,GAAG,CAAC;QAiBxB;;WAEG;QACI,oBAAe,GAAU,KAAK,CAAC,KAAK,CAAC;QAE5C;;WAEG;QACI,oBAAe,GAAW,SAAS,CAAC;QAYpC,uBAAkB,GAAY,KAAK,CAAC;QAU3C,oCAAoC;QAC1B,sBAAiB,GAAW,SAAS,CAAC,QAAQ,EAAE,CAAC;QAwB3D;;WAEG;QACI,mBAAc,GAAW,WAAW,CAAC;QAE5C;;WAEG;QACI,uBAAkB,GAAG,GAAG,EAAE;YAC/B,IAAI,aAAa,GAAsB,QAAQ,CAAC,cAAc,CAAC,gBAAgB,CAAsB,CAAC;YACtG,IAAI,CAAC,aAAa,EAAE;gBAClB,aAAa,GAAG,QAAQ,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;aAClD;YAED,aAAa,CAAC,EAAE,GAAG,gBAAgB,CAAC;YACpC,aAAa,CAAC,WAAW,GAAG,IAAI,CAAC,cAAc,CAAC;YAChD,aAAa,CAAC,KAAK,CAAC,OAAO,GAAG,MAAM,CAAC;YACrC,OAAO,aAAa,CAAC;QACvB,CAAC,CAAC;QAwHM,qBAAgB,GAAG,IAAI,OAAO,CAAO,OAAO,CAAC,EAAE;YACrD,IAAI,CAAC,gBAAgB,GAAG,OAAO,CAAC;QAClC,CAAC,CAAC,CAAC;QAlHD,IAAI,SAAS,EAAE;YACb,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC;SAC9B;IACH,CAAC;IAzED,IAAc,MAAM;QAClB,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE;YACvB,IAAI,CAAC,aAAa,GAAG,IAAI,KAAK,EAAE,CAAC;YACjC,IAAI,CAAC,aAAa,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC;SACpC;QAED,OAAO,IAAI,CAAC,aAAa,CAAC;IAC5B,CAAC;IAGD,IAAW,qBAAqB;QAC9B,OAAO,IAAI,CAAC,sBAAsB,CAAC;IACrC,CAAC;IACD,IAAW,iBAAiB;QAC1B,OAAO,IAAI,CAAC,kBAAkB,CAAC;IACjC,CAAC;IAMD,IAAc,WAAW;QACvB,MAAM,YAAY,GAAG,QAAQ,CAAC,cAAc,CAAC,qBAAqB,CAAC,CAAC;QACpE,IAAI,YAAY,EAAE;YAChB,IAAI,CAAC,sBAAsB,GAAG,YAAY,CAAC;SAC5C;QACD,IAAI,CAAC,IAAI,CAAC,sBAAsB,EAAE;YAChC,IAAI,CAAC,sBAAsB,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;YAC5D,IAAI,CAAC,sBAAsB,CAAC,EAAE,GAAG,qBAAqB,CAAC;YACvD,IAAI,CAAC,sBAAsB,CAAC,KAAK,CAAC,QAAQ,GAAG,UAAU,CAAC;YACxD,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAC;SACxD;QACD,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE;YACrB,IAAI,CAAC,WAAW,GAAG,QAAQ,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;YACnD,IAAI,CAAC,WAAW,CAAC,WAAW,GAAG,IAAI,CAAC,iBAAiB,CAAC;YACtD,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;SAC7C;QACD,IAAI,CAAC,IAAI,CAAC,kBAAkB,EAAE;YAC5B,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC,kBAAkB,EAAE,CAAC;YACpD,IAAI,CAAC,sBAAsB,CAAC,WAAW,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC;SAClE;QACD,OAAO,IAAI,CAAC,kBAAkB,CAAC;IACjC,CAAC;IAiCM,UAAU,CAAC,MAAc;QAC9B,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC;QACtB,IAAI,CAAC,MAAM,CAAC,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC;QAC9C,IAAI,CAAC,MAAM,CAAC,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC;IAClD,CAAC;IAED;;;OAGG;IACI,WAAW,CAAC,QAAuB;QACxC,MAAM,GAAG,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC;QAC1B,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAClC,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QAC9B,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QAC3B,IAAI,CAAC,cAAc,EAAE,CAAC;IACxB,CAAC;IAED;;;OAGG;IACI,YAAY,CAAC,SAA0B;QAC5C,IAAI,CAAC,GAAG,CAAC,CAAC;QACV,MAAM,GAAG,GAAG,SAAS,CAAC,MAAM,CAAC;QAE7B,KAAK,CAAC,EAAE,CAAC,GAAG,GAAG,EAAE,CAAC,EAAE,EAAE;YACpB,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC;SAChC;IACH,CAAC;IAED;;OAEG;IACI,QAAQ;QACb,OAAO,IAAI,CAAC,UAAU,KAAK,IAAI,CAAC,cAAc,CAAC;IACjD,CAAC;IAED;;OAEG;IACI,KAAK,CAAC,cAAc;;QACzB,IAAI,IAAI,CAAC,kBAAkB,EAAE;YAC3B,IAAI,CAAC,cAAc,EAAE,CAAC;YACtB,oEAAoE;YACpE,MAAM,KAAK,CAAC,GAAG,EAAE,MAAA,IAAI,CAAC,OAAO,0CAAE,KAAK,CAAC,CAAC;SACvC;aAAM;YACL,MAAM,aAAa,GAAG,GAAG,EAAE;gBACzB,IAAI,CAAC,mBAAmB,EAAE,CAAC;YAC7B,CAAC,CAAC;YACF,IAAI,MAAA,IAAI,CAAC,OAAO,0CAAE,OAAO,EAAE;gBACzB,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC,QAAQ,EAAE,aAAa,CAAC,CAAC;aACzD;YACD,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC;YAC7B,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,OAAO,GAAG,OAAO,CAAC;YACzC,QAAQ,CAAC,IAAI,CAAC,gBAAgB,CAAC,OAAO,EAAE,CAAC,GAAkB,EAAE,EAAE;gBAC7D,IAAI,GAAG,CAAC,GAAG,KAAK,OAAO,EAAE;oBACvB,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE,CAAC;iBAC1B;YACH,CAAC,CAAC,CAAC;YACH,IAAI,CAAC,mBAAmB,EAAE,CAAC;YAC3B,MAAM,iBAAiB,GAAG,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,EAAE;gBACtD,MAAM,kBAAkB,GAAG,CAAC,CAAQ,EAAE,EAAE;;oBACtC,8EAA8E;oBAC9E,CAAC,CAAC,eAAe,EAAE,CAAC;oBACpB,0BAA0B;oBAC1B,IAAI,CAAC,cAAc,EAAE,CAAC;oBACtB,IAAI,MAAA,IAAI,CAAC,OAAO,0CAAE,OAAO,EAAE;wBACzB,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,QAAQ,EAAE,aAAa,CAAC,CAAC;qBAC1D;oBACD,OAAO,EAAE,CAAC;gBACZ,CAAC,CAAC;gBACF,IAAI,CAAC,WAAW,CAAC,gBAAgB,CAAC,OAAO,EAAE,kBAAkB,CAAC,CAAC;gBAC/D,IAAI,CAAC,WAAW,CAAC,gBAAgB,CAAC,UAAU,EAAE,kBAAkB,CAAC,CAAC;gBAClE,IAAI,CAAC,WAAW,CAAC,gBAAgB,CAAC,WAAW,EAAE,kBAAkB,CAAC,CAAC;YACrE,CAAC,CAAC,CAAC;YAEH,OAAO,MAAM,iBAAiB,CAAC;SAChC;IACH,CAAC;IAEM,cAAc;QACnB,IAAI,CAAC,gBAAgB,GAAG,KAAK,CAAC;QAC9B,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,OAAO,GAAG,MAAM,CAAC;IAC1C,CAAC;IAED;;OAEG;IACI,OAAO;QACZ,IAAI,IAAI,CAAC,sBAAsB,CAAC,aAAa,EAAE;YAC7C,IAAI,CAAC,sBAAsB,CAAC,WAAW,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC;YACjE,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAC;YACvD,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;YAC5C,IAAI,CAAC,sBAAsB,GAAG,IAAI,CAAC;YACnC,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC;YAC/B,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;SACzB;IACH,CAAC;IAED,MAAM,CAAC,OAAe,EAAE,MAAc;QACpC,cAAc;IAChB,CAAC;IAQM,kBAAkB;QACvB,OAAO,IAAI,CAAC,gBAAgB,CAAC;IAC/B,CAAC;IAED;;;OAGG;IACI,KAAK,CAAC,IAAI;;QACf,MAAM,CAAA,MAAA,IAAI,CAAC,MAAM,0CAAE,MAAM,EAAE,CAAA,CAAC,CAAC,2BAA2B;QAExD,MAAM,OAAO,CAAC,GAAG,CACf,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAC3B,CAAC,CAAC,IAAI,EAAE,CAAC,OAAO,CAAC,GAAG,EAAE;YACpB,mBAAmB;YACnB,IAAI,CAAC,UAAU,EAAE,CAAC;QACpB,CAAC,CAAC,CACH,CACF,CAAC;QACF,IAAI,CAAC,gBAAgB,EAAE,CAAC;QAExB,mDAAmD;QACnD,MAAM,KAAK,CAAC,GAAG,EAAE,MAAA,IAAI,CAAC,OAAO,0CAAE,KAAK,CAAC,CAAC;QAEtC,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;QAC5B,oDAAoD;QACpD,2DAA2D;QAC3D,4DAA4D;QAC5D,MAAM,QAAQ,CAAC,MAAM,EAAE,CAAC;QAExB,OAAO,CAAC,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,aAAa,CAAC,CAAC;IAC1C,CAAC;IAEM,oBAAoB;QACzB,IAAI,CAAC,UAAU,EAAE,CAAC;IACpB,CAAC;IAED;;OAEG;IACH,IAAW,QAAQ;QACjB,OAAO,IAAI,CAAC,cAAc,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC,EAAE,IAAI,CAAC,cAAc,CAAC,GAAG,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC;IAC5G,CAAC;IAEO,mBAAmB;QACzB,IAAI,IAAI,CAAC,OAAO,EAAE;YAChB,MAAM,YAAY,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC;YACzD,MAAM,WAAW,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC;YACvD,IAAI,IAAI,CAAC,sBAAsB,EAAE;gBAC/B,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,UAAU,CAAC;gBAC5C,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,SAAS,CAAC;gBAC1C,MAAM,WAAW,GAAG,IAAI,CAAC,WAAW,CAAC,WAAW,CAAC;gBACjD,MAAM,YAAY,GAAG,IAAI,CAAC,WAAW,CAAC,YAAY,CAAC;gBACnD,IAAI,IAAI,CAAC,kBAAkB,EAAE;oBAC3B,IAAI,CAAC,sBAAsB,CAAC,KAAK,CAAC,IAAI,GAAG,GAAG,IAAI,CAAC,kBAAkB,CAAC,CAAC,IAAI,CAAC;oBAC1E,IAAI,CAAC,sBAAsB,CAAC,KAAK,CAAC,GAAG,GAAG,GAAG,IAAI,CAAC,kBAAkB,CAAC,CAAC,IAAI,CAAC;iBAC1E;qBAAM;oBACL,IAAI,CAAC,sBAAsB,CAAC,KAAK,CAAC,IAAI,GAAG,GAAG,IAAI,GAAG,WAAW,GAAG,CAAC,GAAG,WAAW,GAAG,CAAC,IAAI,CAAC;oBACzF,IAAI,CAAC,sBAAsB,CAAC,KAAK,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,YAAY,GAAG,CAAC,GAAG,YAAY,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC;iBAChG;aACF;SACF;IACH,CAAC;IAED;;;;OAIG;IACI,IAAI,CAAC,GAA6B;QACvC,MAAM,YAAY,GAAG,IAAI,CAAC,OAAO,CAAC,YAAY,GAAG,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC;QACzE,MAAM,WAAW,GAAG,IAAI,CAAC,OAAO,CAAC,WAAW,GAAG,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC;QAEvE,IAAI,CAAC,mBAAmB,EAAE,CAAC;QAE3B,GAAG,CAAC,SAAS,GAAG,IAAI,CAAC,eAAe,CAAC;QACrC,GAAG,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,EAAE,WAAW,EAAE,YAAY,CAAC,CAAC;QAE9C,IAAI,KAAK,GAAG,YAAY,GAAG,CAAC,CAAC;QAC7B,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,EAAE,WAAW,GAAG,IAAI,CAAC,CAAC;QAC3D,IAAI,KAAK,GAAG,WAAW,GAAG,CAAC,GAAG,KAAK,GAAG,CAAC,CAAC;QAExC,IAAI,IAAI,CAAC,YAAY,EAAE;YACrB,KAAK,GAAG,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC;YAC5B,KAAK,GAAG,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC;SAC7B;QAED,MAAM,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG,CAAC,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,yBAAyB;QACrG,MAAM,YAAY,GAAG,IAAI,CAAC,OAAO,CAAC,eAAe,EAAE,CAAC;QACpD,IAAI,CAAC,OAAO,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC;QACnC,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE;YACtB,GAAG,CAAC,SAAS,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,UAAU,EAAE,KAAK,EAAE,KAAK,GAAG,WAAW,GAAG,EAAE,EAAE,KAAK,EAAE,WAAW,CAAC,CAAC;SACxH;aAAM;YACL,GAAG,CAAC,SAAS,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,UAAU,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,WAAW,CAAC,CAAC;SACrG;QAED,cAAc;QACd,IAAI,CAAC,IAAI,CAAC,kBAAkB,IAAI,IAAI,CAAC,gBAAgB,EAAE;YACrD,IAAI,CAAC,OAAO,CAAC,eAAe,CAAC,YAAY,CAAC,CAAC;YAC3C,OAAO;SACR;QAED,IAAI,QAAQ,GAAG,KAAK,CAAC;QACrB,IAAI,QAAQ,GAAG,KAAK,CAAC;QACrB,IAAI,IAAI,CAAC,kBAAkB,EAAE;YAC3B,QAAQ,GAAG,IAAI,CAAC,kBAAkB,CAAC,CAAC,CAAC;YACrC,QAAQ,GAAG,IAAI,CAAC,kBAAkB,CAAC,CAAC,CAAC;SACtC;QAED,GAAG,CAAC,SAAS,GAAG,CAAC,CAAC;QAClB,QAAQ,CAAC,SAAS,CAAC,GAAG,EAAE,QAAQ,EAAE,QAAQ,EAAE,KAAK,EAAE,EAAE,EAAE,EAAE,EAAE,IAAI,CAAC,eAAe,CAAC,CAAC;QACjF,MAAM,QAAQ,GAAG,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC;QACvC,MAAM,MAAM,GAAG,CAAC,CAAC;QACjB,MAAM,aAAa,GAAG,QAAQ,GAAG,MAAM,GAAG,CAAC,CAAC;QAC5C,MAAM,MAAM,GAAG,EAAE,GAAG,MAAM,GAAG,CAAC,CAAC;QAC/B,QAAQ,CAAC,SAAS,CAChB,GAAG,EACH,QAAQ,GAAG,MAAM,EACjB,QAAQ,GAAG,MAAM,EACjB,aAAa,GAAG,EAAE,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE,EACvC,MAAM,EACN,CAAC,EACD,IAAI,EACJ,IAAI,CAAC,eAAe,CACrB,CAAC;QACF,IAAI,CAAC,OAAO,CAAC,eAAe,CAAC,YAAY,CAAC,CAAC;IAC7C,CAAC;CACF"}
@@ -0,0 +1,10 @@
1
+ export * from './vector';
2
+ export * from './vector-view';
3
+ export * from './matrix';
4
+ export * from './Random';
5
+ export * from './global-coordinates';
6
+ export * from './line';
7
+ export * from './projection';
8
+ export * from './ray';
9
+ export * from './util';
10
+ //# sourceMappingURL=Index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Index.js","sourceRoot":"","sources":["../../../src/engine/Math/Index.ts"],"names":[],"mappings":"AAAA,cAAc,UAAU,CAAC;AACzB,cAAc,eAAe,CAAC;AAC9B,cAAc,UAAU,CAAC;AACzB,cAAc,UAAU,CAAC;AACzB,cAAc,sBAAsB,CAAC;AACrC,cAAc,QAAQ,CAAC;AACvB,cAAc,cAAc,CAAC;AAC7B,cAAc,OAAO,CAAC;AACtB,cAAc,QAAQ,CAAC"}
@@ -0,0 +1,239 @@
1
+ /**
2
+ * @module
3
+ * Pseudo-Random Utility
4
+ *
5
+ * A pseudo-random utility to add seeded random support for help in
6
+ * generating things like terrain or reproducible randomness. Uses the
7
+ * [Mersenne Twister](https://en.wikipedia.org/wiki/Mersenne_Twister) algorithm.
8
+ */
9
+ /**
10
+ * 32-bit mask
11
+ */
12
+ const BITMASK32 = 0xffffffff;
13
+ /**
14
+ * Pseudo-random number generator following the Mersenne_Twister algorithm. Given a seed this generator will produce the same sequence
15
+ * of numbers each time it is called.
16
+ * See https://en.wikipedia.org/wiki/Mersenne_Twister for more details.
17
+ * Uses the MT19937-32 (2002) implementation documented here http://www.math.sci.hiroshima-u.ac.jp/~m-mat/MT/MT2002/emt19937ar.html
18
+ *
19
+ * Api inspired by http://chancejs.com/# https://github.com/chancejs/chancejs
20
+ */
21
+ export class Random {
22
+ /**
23
+ * If no seed is specified, the Date.now() is used
24
+ */
25
+ constructor(seed) {
26
+ this.seed = seed;
27
+ // Separation point of one one word, the number of bits in the lower bitmask 0 <= r <= w-1
28
+ this._lowerMask = 0x7fffffff; // 31 bits same as _r
29
+ this._upperMask = 0x80000000; // 34 high bits
30
+ // Word size, 64 bits
31
+ this._w = 32;
32
+ // Degree of recurrence
33
+ this._n = 624;
34
+ // Middle word, an offset used in the recurrence defining the series x, 1<=m<n
35
+ this._m = 397;
36
+ // coefficients of teh rational normal form twist matrix
37
+ this._a = 0x9908b0df;
38
+ // tempering bit shifts and masks
39
+ this._u = 11;
40
+ this._s = 7;
41
+ this._b = 0x9d2c5680;
42
+ this._t = 15;
43
+ this._c = 0xefc60000;
44
+ this._l = 18;
45
+ this._f = 1812433253;
46
+ this._mt = new Array(this._n);
47
+ // need to mask to support higher bit machines
48
+ this._mt[0] = (seed || Date.now()) >>> 0;
49
+ for (let i = 1; i < this._n; i++) {
50
+ const s = this._mt[i - 1] ^ (this._mt[i - 1] >>> (this._w - 2));
51
+ // numbers are bigger than the JS max safe int, add in 16-bit chunks to prevent IEEE rounding errors on high bits
52
+ this._mt[i] = (((this._f * ((s & 0xffff0000) >>> 16)) << 16) + this._f * (s & 0xffff) + i) >>> 0;
53
+ }
54
+ this._index = this._n;
55
+ }
56
+ /**
57
+ * Apply the twist
58
+ */
59
+ _twist() {
60
+ const mag01 = [0x0, this._a];
61
+ let y = 0, i = 0;
62
+ for (; i < this._n - this._m; i++) {
63
+ y = (this._mt[i] & this._upperMask) | (this._mt[i + 1] & this._lowerMask);
64
+ this._mt[i] = this._mt[i + this._m] ^ (y >>> 1) ^ (mag01[y & 0x1] & BITMASK32);
65
+ }
66
+ for (; i < this._n - 1; i++) {
67
+ y = (this._mt[i] & this._upperMask) | (this._mt[i + 1] & this._lowerMask);
68
+ this._mt[i] = this._mt[i + (this._m - this._n)] ^ (y >>> 1) ^ (mag01[y & 0x1] & BITMASK32);
69
+ }
70
+ y = (this._mt[this._n - 1] & this._upperMask) | (this._mt[0] & this._lowerMask);
71
+ this._mt[this._n - 1] = this._mt[this._m - 1] ^ (y >>> 1) ^ (mag01[y & 0x1] & BITMASK32);
72
+ this._index = 0;
73
+ }
74
+ /**
75
+ * Return next 32 bit integer number in sequence
76
+ */
77
+ nextInt() {
78
+ if (this._index >= this._n) {
79
+ this._twist();
80
+ }
81
+ let y = this._mt[this._index++];
82
+ y ^= y >>> this._u;
83
+ y ^= (y << this._s) & this._b;
84
+ y ^= (y << this._t) & this._c;
85
+ y ^= y >>> this._l;
86
+ return y >>> 0;
87
+ }
88
+ /**
89
+ * Return a random floating point number between [0, 1)
90
+ */
91
+ next() {
92
+ return this.nextInt() * (1.0 / 4294967296.0); // divided by 2^32
93
+ }
94
+ /**
95
+ * Return a random floating point in range [min, max) min is included, max is not included
96
+ */
97
+ floating(min, max) {
98
+ return (max - min) * this.next() + min;
99
+ }
100
+ /**
101
+ * Return a random integer in range [min, max] min is included, max is included.
102
+ * Implemented with rejection sampling, see https://medium.com/@betable/tifu-by-using-math-random-f1c308c4fd9d#.i13tdiu5a
103
+ */
104
+ integer(min, max) {
105
+ return Math.floor((max - min + 1) * this.next() + min);
106
+ }
107
+ /**
108
+ * Returns true or false randomly with 50/50 odds by default.
109
+ * By default the likelihood of returning a true is .5 (50%).
110
+ * @param likelihood takes values between [0, 1]
111
+ */
112
+ bool(likelihood = 0.5) {
113
+ return this.next() <= likelihood;
114
+ }
115
+ /**
116
+ * Returns one element from an array at random
117
+ */
118
+ pickOne(array) {
119
+ return array[this.integer(0, array.length - 1)];
120
+ }
121
+ /**
122
+ * Returns a new array random picking elements from the original
123
+ * @param array Original array to pick from
124
+ * @param numPicks can be any positive number
125
+ * @param allowDuplicates indicates whether the returned set is allowed duplicates (it does not mean there will always be duplicates
126
+ * just that it is possible)
127
+ */
128
+ pickSet(array, numPicks, allowDuplicates = false) {
129
+ if (allowDuplicates) {
130
+ return this._pickSetWithDuplicates(array, numPicks);
131
+ }
132
+ else {
133
+ return this._pickSetWithoutDuplicates(array, numPicks);
134
+ }
135
+ }
136
+ /**
137
+ * Returns a new array randomly picking elements in the original (not reused)
138
+ * @param array Array to pick elements out of
139
+ * @param numPicks must be less than or equal to the number of elements in the array.
140
+ */
141
+ _pickSetWithoutDuplicates(array, numPicks) {
142
+ if (numPicks > array.length || numPicks < 0) {
143
+ throw new Error('Invalid number of elements to pick, must pick a value 0 < n <= length');
144
+ }
145
+ if (numPicks === array.length) {
146
+ return array;
147
+ }
148
+ const result = new Array(numPicks);
149
+ let currentPick = 0;
150
+ const tempArray = array.slice(0);
151
+ while (currentPick < numPicks) {
152
+ const index = this.integer(0, tempArray.length - 1);
153
+ result[currentPick++] = tempArray[index];
154
+ tempArray.splice(index, 1);
155
+ }
156
+ return result;
157
+ }
158
+ /**
159
+ * Returns a new array random picking elements from the original allowing duplicates
160
+ * @param array Array to pick elements out of
161
+ * @param numPicks can be any positive number
162
+ */
163
+ _pickSetWithDuplicates(array, numPicks) {
164
+ // Typescript numbers are all floating point, so do we add check for int? (or floor the input?)
165
+ if (numPicks < 0) {
166
+ throw new Error('Invalid number of elements to pick, must pick a value 0 <= n < MAX_INT');
167
+ }
168
+ const result = new Array(numPicks);
169
+ for (let i = 0; i < numPicks; i++) {
170
+ result[i] = this.pickOne(array);
171
+ }
172
+ return result;
173
+ }
174
+ /**
175
+ * Returns a new array that has its elements shuffled. Using the Fisher/Yates method
176
+ * https://en.wikipedia.org/wiki/Fisher%E2%80%93Yates_shuffle
177
+ */
178
+ shuffle(array) {
179
+ const tempArray = array.slice(0);
180
+ let swap = null;
181
+ for (let i = 0; i < tempArray.length - 2; i++) {
182
+ const randomIndex = this.integer(i, tempArray.length - 1);
183
+ swap = tempArray[i];
184
+ tempArray[i] = tempArray[randomIndex];
185
+ tempArray[randomIndex] = swap;
186
+ }
187
+ return tempArray;
188
+ }
189
+ /**
190
+ * Generate a list of random integer numbers
191
+ * @param length the length of the final array
192
+ * @param min the minimum integer number to generate inclusive
193
+ * @param max the maximum integer number to generate inclusive
194
+ */
195
+ range(length, min, max) {
196
+ const result = new Array(length);
197
+ for (let i = 0; i < length; i++) {
198
+ result[i] = this.integer(min, max);
199
+ }
200
+ return result;
201
+ }
202
+ /**
203
+ * Returns the result of a d4 dice roll
204
+ */
205
+ d4() {
206
+ return this.integer(1, 4);
207
+ }
208
+ /**
209
+ * Returns the result of a d6 dice roll
210
+ */
211
+ d6() {
212
+ return this.integer(1, 6);
213
+ }
214
+ /**
215
+ * Returns the result of a d8 dice roll
216
+ */
217
+ d8() {
218
+ return this.integer(1, 8);
219
+ }
220
+ /**
221
+ * Returns the result of a d10 dice roll
222
+ */
223
+ d10() {
224
+ return this.integer(1, 10);
225
+ }
226
+ /**
227
+ * Returns the result of a d12 dice roll
228
+ */
229
+ d12() {
230
+ return this.integer(1, 12);
231
+ }
232
+ /**
233
+ * Returns the result of a d20 dice roll
234
+ */
235
+ d20() {
236
+ return this.integer(1, 20);
237
+ }
238
+ }
239
+ //# sourceMappingURL=Random.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Random.js","sourceRoot":"","sources":["../../../src/engine/Math/Random.ts"],"names":[],"mappings":"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"}