melonjs 14.1.2 → 14.3.0

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 (381) hide show
  1. package/README.md +3 -4
  2. package/dist/melonjs.mjs/_virtual/_commonjsHelpers.js +1 -1
  3. package/dist/melonjs.mjs/_virtual/arraymultimap.js +1 -1
  4. package/dist/melonjs.mjs/_virtual/earcut.js +7 -3
  5. package/dist/melonjs.mjs/_virtual/howler.js +1 -1
  6. package/dist/melonjs.mjs/_virtual/index.js +1 -1
  7. package/dist/melonjs.mjs/_virtual/index2.js +7 -3
  8. package/dist/melonjs.mjs/_virtual/make-built-in.js +10 -0
  9. package/dist/melonjs.mjs/_virtual/multimap.js +1 -1
  10. package/dist/melonjs.mjs/_virtual/object-define-property.js +10 -0
  11. package/dist/melonjs.mjs/_virtual/object-get-own-property-descriptor.js +10 -0
  12. package/dist/melonjs.mjs/_virtual/object-get-own-property-names.js +10 -0
  13. package/dist/melonjs.mjs/_virtual/object-get-own-property-symbols.js +10 -0
  14. package/dist/melonjs.mjs/_virtual/object-property-is-enumerable.js +10 -0
  15. package/dist/melonjs.mjs/_virtual/setmultimap.js +1 -1
  16. package/dist/melonjs.mjs/_virtual/shared.js +10 -0
  17. package/dist/melonjs.mjs/application/application.js +173 -22
  18. package/dist/melonjs.mjs/application/header.js +34 -0
  19. package/dist/melonjs.mjs/application/resize.js +119 -0
  20. package/dist/melonjs.mjs/application/settings.js +28 -0
  21. package/dist/melonjs.mjs/audio/audio.js +1 -1
  22. package/dist/melonjs.mjs/camera/camera2d.js +2 -2
  23. package/dist/melonjs.mjs/entity/entity.js +1 -1
  24. package/dist/melonjs.mjs/game.js +1 -1
  25. package/dist/melonjs.mjs/geometries/ellipse.js +1 -1
  26. package/dist/melonjs.mjs/geometries/line.js +1 -1
  27. package/dist/melonjs.mjs/geometries/path2d.js +3 -3
  28. package/dist/melonjs.mjs/geometries/point.js +1 -1
  29. package/dist/melonjs.mjs/geometries/poly.js +3 -3
  30. package/dist/melonjs.mjs/geometries/rectangle.js +1 -1
  31. package/dist/melonjs.mjs/geometries/roundrect.js +1 -1
  32. package/dist/melonjs.mjs/index.js +41 -61
  33. package/dist/melonjs.mjs/input/gamepad.js +1 -1
  34. package/dist/melonjs.mjs/input/input.js +1 -1
  35. package/dist/melonjs.mjs/input/keyboard.js +1 -1
  36. package/dist/melonjs.mjs/input/pointer.js +2 -2
  37. package/dist/melonjs.mjs/input/pointerevent.js +7 -8
  38. package/dist/melonjs.mjs/lang/deprecated.js +1 -1
  39. package/dist/melonjs.mjs/level/level.js +2 -2
  40. package/dist/melonjs.mjs/level/tiled/TMXGroup.js +1 -1
  41. package/dist/melonjs.mjs/level/tiled/TMXLayer.js +2 -2
  42. package/dist/melonjs.mjs/level/tiled/TMXObject.js +1 -1
  43. package/dist/melonjs.mjs/level/tiled/TMXTile.js +1 -1
  44. package/dist/melonjs.mjs/level/tiled/TMXTileMap.js +2 -2
  45. package/dist/melonjs.mjs/level/tiled/TMXTileset.js +1 -1
  46. package/dist/melonjs.mjs/level/tiled/TMXTilesetGroup.js +1 -1
  47. package/dist/melonjs.mjs/level/tiled/TMXUtils.js +1 -1
  48. package/dist/melonjs.mjs/level/tiled/renderer/TMXHexagonalRenderer.js +1 -1
  49. package/dist/melonjs.mjs/level/tiled/renderer/TMXIsometricRenderer.js +1 -1
  50. package/dist/melonjs.mjs/level/tiled/renderer/TMXOrthogonalRenderer.js +1 -1
  51. package/dist/melonjs.mjs/level/tiled/renderer/TMXRenderer.js +1 -1
  52. package/dist/melonjs.mjs/level/tiled/renderer/TMXStaggeredRenderer.js +1 -1
  53. package/dist/melonjs.mjs/loader/loader.js +1 -1
  54. package/dist/melonjs.mjs/loader/loadingscreen.js +2 -2
  55. package/dist/melonjs.mjs/loader/melonjs_logo.png.js +1 -1
  56. package/dist/melonjs.mjs/math/color.js +1 -1
  57. package/dist/melonjs.mjs/math/math.js +1 -1
  58. package/dist/melonjs.mjs/math/matrix2.js +1 -1
  59. package/dist/melonjs.mjs/math/matrix3.js +1 -1
  60. package/dist/melonjs.mjs/math/observable_vector2.js +1 -1
  61. package/dist/melonjs.mjs/math/observable_vector3.js +1 -1
  62. package/dist/melonjs.mjs/math/vector2.js +1 -1
  63. package/dist/melonjs.mjs/math/vector3.js +1 -1
  64. package/dist/melonjs.mjs/node_modules/@teppeis/multimaps/dist/src/arraymultimap.js +3 -2
  65. package/dist/melonjs.mjs/node_modules/@teppeis/multimaps/dist/src/index.js +1 -1
  66. package/dist/melonjs.mjs/node_modules/@teppeis/multimaps/dist/src/multimap.js +3 -2
  67. package/dist/melonjs.mjs/node_modules/@teppeis/multimaps/dist/src/setmultimap.js +3 -2
  68. package/dist/melonjs.mjs/node_modules/core-js/es/string/trim-end.js +13 -0
  69. package/dist/melonjs.mjs/node_modules/core-js/es/string/trim-start.js +13 -0
  70. package/dist/melonjs.mjs/node_modules/core-js/internals/a-callable.js +22 -0
  71. package/dist/melonjs.mjs/node_modules/core-js/internals/an-object.js +21 -0
  72. package/dist/melonjs.mjs/node_modules/core-js/internals/array-includes.js +45 -0
  73. package/dist/melonjs.mjs/node_modules/core-js/internals/classof-raw.js +19 -0
  74. package/dist/melonjs.mjs/node_modules/core-js/internals/classof.js +43 -0
  75. package/dist/melonjs.mjs/node_modules/core-js/internals/copy-constructor-properties.js +32 -0
  76. package/dist/melonjs.mjs/node_modules/core-js/internals/create-non-enumerable-property.js +24 -0
  77. package/dist/melonjs.mjs/node_modules/core-js/internals/create-property-descriptor.js +17 -0
  78. package/dist/melonjs.mjs/node_modules/core-js/internals/define-built-in.js +43 -0
  79. package/dist/melonjs.mjs/node_modules/core-js/internals/define-global-property.js +23 -0
  80. package/dist/melonjs.mjs/node_modules/core-js/internals/descriptors.js +18 -0
  81. package/dist/melonjs.mjs/node_modules/core-js/internals/document-all.js +18 -0
  82. package/dist/melonjs.mjs/node_modules/core-js/internals/document-create-element.js +22 -0
  83. package/dist/melonjs.mjs/node_modules/core-js/internals/engine-user-agent.js +14 -0
  84. package/dist/melonjs.mjs/node_modules/core-js/internals/engine-v8-version.js +39 -0
  85. package/dist/melonjs.mjs/node_modules/core-js/internals/entry-unbind.js +18 -0
  86. package/dist/melonjs.mjs/node_modules/core-js/internals/enum-bug-keys.js +19 -0
  87. package/dist/melonjs.mjs/node_modules/core-js/internals/export.js +72 -0
  88. package/dist/melonjs.mjs/node_modules/core-js/internals/fails.js +16 -0
  89. package/dist/melonjs.mjs/node_modules/core-js/internals/function-bind-native.js +19 -0
  90. package/dist/melonjs.mjs/node_modules/core-js/internals/function-call.js +18 -0
  91. package/dist/melonjs.mjs/node_modules/core-js/internals/function-name.js +29 -0
  92. package/dist/melonjs.mjs/node_modules/core-js/internals/function-uncurry-this.js +22 -0
  93. package/dist/melonjs.mjs/node_modules/core-js/internals/get-built-in.js +22 -0
  94. package/dist/melonjs.mjs/node_modules/core-js/internals/get-method.js +21 -0
  95. package/dist/melonjs.mjs/node_modules/core-js/internals/global.js +25 -0
  96. package/dist/melonjs.mjs/node_modules/core-js/internals/has-own-property.js +23 -0
  97. package/dist/melonjs.mjs/node_modules/core-js/internals/hidden-keys.js +10 -0
  98. package/dist/melonjs.mjs/node_modules/core-js/internals/ie8-dom-define.js +24 -0
  99. package/dist/melonjs.mjs/node_modules/core-js/internals/indexed-object.js +28 -0
  100. package/dist/melonjs.mjs/node_modules/core-js/internals/inspect-source.js +27 -0
  101. package/dist/melonjs.mjs/node_modules/core-js/internals/internal-state.js +88 -0
  102. package/dist/melonjs.mjs/node_modules/core-js/internals/is-callable.js +22 -0
  103. package/dist/melonjs.mjs/node_modules/core-js/internals/is-forced.js +34 -0
  104. package/dist/melonjs.mjs/node_modules/core-js/internals/is-null-or-undefined.js +14 -0
  105. package/dist/melonjs.mjs/node_modules/core-js/internals/is-object.js +22 -0
  106. package/dist/melonjs.mjs/node_modules/core-js/internals/is-symbol.js +27 -0
  107. package/dist/melonjs.mjs/node_modules/core-js/internals/length-of-array-like.js +18 -0
  108. package/dist/melonjs.mjs/node_modules/core-js/internals/make-built-in.js +68 -0
  109. package/dist/melonjs.mjs/node_modules/core-js/internals/math-trunc.js +19 -0
  110. package/dist/melonjs.mjs/node_modules/core-js/internals/object-define-property.js +58 -0
  111. package/dist/melonjs.mjs/node_modules/core-js/internals/object-get-own-property-descriptor.js +41 -0
  112. package/dist/melonjs.mjs/node_modules/core-js/internals/object-get-own-property-names.js +23 -0
  113. package/dist/melonjs.mjs/node_modules/core-js/internals/object-get-own-property-symbols.js +12 -0
  114. package/dist/melonjs.mjs/node_modules/core-js/internals/object-is-prototype-of.js +14 -0
  115. package/dist/melonjs.mjs/node_modules/core-js/internals/object-keys-internal.js +35 -0
  116. package/dist/melonjs.mjs/node_modules/core-js/internals/object-property-is-enumerable.js +23 -0
  117. package/dist/melonjs.mjs/node_modules/core-js/internals/ordinary-to-primitive.js +28 -0
  118. package/dist/melonjs.mjs/node_modules/core-js/internals/own-keys.js +31 -0
  119. package/dist/melonjs.mjs/node_modules/core-js/internals/require-object-coercible.js +21 -0
  120. package/dist/melonjs.mjs/node_modules/core-js/internals/shared-key.js +21 -0
  121. package/dist/melonjs.mjs/node_modules/core-js/internals/shared-store.js +19 -0
  122. package/dist/melonjs.mjs/node_modules/core-js/internals/shared.js +24 -0
  123. package/dist/melonjs.mjs/node_modules/core-js/internals/string-trim-end.js +22 -0
  124. package/dist/melonjs.mjs/node_modules/core-js/internals/string-trim-forced.js +28 -0
  125. package/dist/melonjs.mjs/node_modules/core-js/internals/string-trim-start.js +22 -0
  126. package/dist/melonjs.mjs/node_modules/core-js/internals/string-trim.js +45 -0
  127. package/dist/melonjs.mjs/node_modules/core-js/internals/symbol-constructor-detection.js +26 -0
  128. package/dist/melonjs.mjs/node_modules/core-js/internals/to-absolute-index.js +23 -0
  129. package/dist/melonjs.mjs/node_modules/core-js/internals/to-indexed-object.js +19 -0
  130. package/dist/melonjs.mjs/node_modules/core-js/internals/to-integer-or-infinity.js +20 -0
  131. package/dist/melonjs.mjs/node_modules/core-js/internals/to-length.js +20 -0
  132. package/dist/melonjs.mjs/node_modules/core-js/internals/to-object.js +20 -0
  133. package/dist/melonjs.mjs/node_modules/core-js/internals/to-primitive.js +41 -0
  134. package/dist/melonjs.mjs/node_modules/core-js/internals/to-property-key.js +21 -0
  135. package/dist/melonjs.mjs/node_modules/core-js/internals/to-string-tag-support.js +19 -0
  136. package/dist/melonjs.mjs/node_modules/core-js/internals/to-string.js +19 -0
  137. package/dist/melonjs.mjs/node_modules/core-js/internals/try-to-string.js +18 -0
  138. package/dist/melonjs.mjs/node_modules/core-js/internals/uid.js +20 -0
  139. package/dist/melonjs.mjs/node_modules/core-js/internals/use-symbol-as-uid.js +18 -0
  140. package/dist/melonjs.mjs/node_modules/core-js/internals/v8-prototype-define-bug.js +24 -0
  141. package/dist/melonjs.mjs/node_modules/core-js/internals/weak-map-basic-detection.js +18 -0
  142. package/dist/melonjs.mjs/node_modules/core-js/internals/well-known-symbol.js +41 -0
  143. package/dist/melonjs.mjs/node_modules/core-js/internals/whitespaces.js +12 -0
  144. package/dist/melonjs.mjs/node_modules/core-js/modules/es.global-this.js +18 -0
  145. package/dist/melonjs.mjs/node_modules/core-js/modules/es.string.trim-end.js +22 -0
  146. package/dist/melonjs.mjs/node_modules/core-js/modules/es.string.trim-left.js +19 -0
  147. package/dist/melonjs.mjs/node_modules/core-js/modules/es.string.trim-right.js +19 -0
  148. package/dist/melonjs.mjs/node_modules/core-js/modules/es.string.trim-start.js +22 -0
  149. package/dist/melonjs.mjs/node_modules/earcut/src/earcut.js +4 -5
  150. package/dist/melonjs.mjs/node_modules/eventemitter3/index.js +3 -3
  151. package/dist/melonjs.mjs/node_modules/eventemitter3/index.mjs.js +9 -0
  152. package/dist/melonjs.mjs/node_modules/eventemitter3/index2.js +5 -2
  153. package/dist/melonjs.mjs/node_modules/howler/dist/howler.js +3 -2
  154. package/dist/melonjs.mjs/particles/emitter.js +1 -1
  155. package/dist/melonjs.mjs/particles/particle.js +1 -1
  156. package/dist/melonjs.mjs/particles/settings.js +1 -1
  157. package/dist/melonjs.mjs/physics/body.js +1 -1
  158. package/dist/melonjs.mjs/physics/bounds.js +1 -1
  159. package/dist/melonjs.mjs/physics/collision.js +3 -3
  160. package/dist/melonjs.mjs/physics/detector.js +174 -146
  161. package/dist/melonjs.mjs/physics/quadtree.js +1 -1
  162. package/dist/melonjs.mjs/physics/response.js +1 -1
  163. package/dist/melonjs.mjs/physics/sat.js +1 -1
  164. package/dist/melonjs.mjs/physics/world.js +10 -30
  165. package/dist/melonjs.mjs/plugin/plugin.js +4 -4
  166. package/dist/melonjs.mjs/polyfill/console.js +18 -0
  167. package/dist/melonjs.mjs/polyfill/performance.js +27 -0
  168. package/dist/melonjs.mjs/polyfill/requestAnimationFrame.js +46 -0
  169. package/dist/melonjs.mjs/polyfill/roundrect.js +242 -0
  170. package/dist/melonjs.mjs/renderable/collectable.js +1 -1
  171. package/dist/melonjs.mjs/renderable/colorlayer.js +1 -1
  172. package/dist/melonjs.mjs/renderable/container.js +3 -87
  173. package/dist/melonjs.mjs/renderable/dragndrop.js +1 -1
  174. package/dist/melonjs.mjs/renderable/imagelayer.js +2 -2
  175. package/dist/melonjs.mjs/renderable/light2d.js +1 -1
  176. package/dist/melonjs.mjs/renderable/nineslicesprite.js +1 -1
  177. package/dist/melonjs.mjs/renderable/re_container.js +1016 -0
  178. package/dist/melonjs.mjs/renderable/renderable.js +1 -1
  179. package/dist/melonjs.mjs/renderable/sprite.js +1 -1
  180. package/dist/melonjs.mjs/renderable/trigger.js +2 -2
  181. package/dist/melonjs.mjs/renderable/ui/uibaseelement.js +1 -1
  182. package/dist/melonjs.mjs/renderable/ui/uispriteelement.js +1 -1
  183. package/dist/melonjs.mjs/renderable/ui/uitextbutton.js +1 -1
  184. package/dist/melonjs.mjs/state/stage.js +2 -2
  185. package/dist/melonjs.mjs/state/state.js +2 -2
  186. package/dist/melonjs.mjs/system/device.js +9 -29
  187. package/dist/melonjs.mjs/system/dom.js +3 -2
  188. package/dist/melonjs.mjs/system/event.js +1 -1
  189. package/dist/melonjs.mjs/system/platform.js +1 -1
  190. package/dist/melonjs.mjs/system/pooling.js +1 -1
  191. package/dist/melonjs.mjs/system/save.js +1 -1
  192. package/dist/melonjs.mjs/system/timer.js +1 -1
  193. package/dist/melonjs.mjs/text/bitmaptext.js +1 -1
  194. package/dist/melonjs.mjs/text/bitmaptextdata.js +1 -1
  195. package/dist/melonjs.mjs/text/glyph.js +1 -1
  196. package/dist/melonjs.mjs/text/text.js +1 -1
  197. package/dist/melonjs.mjs/text/textmetrics.js +1 -1
  198. package/dist/melonjs.mjs/text/textstyle.js +1 -1
  199. package/dist/melonjs.mjs/tweens/easing.js +1 -1
  200. package/dist/melonjs.mjs/tweens/interpolation.js +1 -1
  201. package/dist/melonjs.mjs/tweens/tween.js +2 -2
  202. package/dist/melonjs.mjs/utils/agent.js +1 -1
  203. package/dist/melonjs.mjs/utils/array.js +1 -1
  204. package/dist/melonjs.mjs/utils/file.js +1 -1
  205. package/dist/melonjs.mjs/utils/function.js +1 -1
  206. package/dist/melonjs.mjs/utils/string.js +1 -1
  207. package/dist/melonjs.mjs/utils/utils.js +4 -29
  208. package/dist/melonjs.mjs/video/canvas/canvas_renderer.js +4 -1
  209. package/dist/melonjs.mjs/video/renderer.js +26 -6
  210. package/dist/melonjs.mjs/video/texture/atlas.js +1 -1
  211. package/dist/melonjs.mjs/video/texture/cache.js +1 -1
  212. package/dist/melonjs.mjs/video/texture/canvas_texture.js +21 -1
  213. package/dist/melonjs.mjs/video/utils/autodetect.js +27 -0
  214. package/dist/melonjs.mjs/video/utils/resize.js +116 -0
  215. package/dist/melonjs.mjs/video/video.js +20 -294
  216. package/dist/melonjs.mjs/video/webgl/buffer/vertex.js +1 -1
  217. package/dist/melonjs.mjs/video/webgl/glshader.js +2 -3
  218. package/dist/melonjs.mjs/video/webgl/shaders/primitive.frag.js +1 -1
  219. package/dist/melonjs.mjs/video/webgl/shaders/primitive.vert.js +1 -1
  220. package/dist/melonjs.mjs/video/webgl/shaders/quad.frag.js +1 -1
  221. package/dist/melonjs.mjs/video/webgl/shaders/quad.vert.js +1 -1
  222. package/dist/melonjs.mjs/video/webgl/utils/attributes.js +1 -1
  223. package/dist/melonjs.mjs/video/webgl/utils/precision.js +20 -2
  224. package/dist/melonjs.mjs/video/webgl/utils/program.js +1 -1
  225. package/dist/melonjs.mjs/video/webgl/utils/string.js +1 -1
  226. package/dist/melonjs.mjs/video/webgl/utils/uniforms.js +1 -1
  227. package/dist/melonjs.mjs/video/webgl/webgl_compositor.js +1 -1
  228. package/dist/melonjs.mjs/video/webgl/webgl_renderer.js +4 -1
  229. package/dist/melonjs.module.js +28551 -26959
  230. package/dist/types/application/application.d.ts +144 -0
  231. package/dist/types/application/header.d.ts +5 -0
  232. package/dist/types/application/resize.d.ts +5 -0
  233. package/dist/types/application/settings.d.ts +18 -0
  234. package/dist/types/audio/audio.d.ts +267 -0
  235. package/dist/types/camera/camera2d.d.ts +289 -0
  236. package/dist/types/entity/entity.d.ts +98 -0
  237. package/{src/game.js → dist/types/game.d.ts} +3 -14
  238. package/dist/types/geometries/ellipse.d.ts +154 -0
  239. package/dist/types/geometries/line.d.ts +11 -0
  240. package/dist/types/geometries/path2d.d.ts +121 -0
  241. package/dist/types/geometries/point.d.ts +53 -0
  242. package/dist/types/geometries/poly.d.ts +222 -0
  243. package/dist/types/geometries/rectangle.d.ts +176 -0
  244. package/dist/types/geometries/roundrect.d.ts +52 -0
  245. package/dist/types/index.d.ts +3 -2
  246. package/dist/types/input/gamepad.d.ts +95 -0
  247. package/dist/types/input/input.d.ts +15 -0
  248. package/dist/types/input/keyboard.d.ts +205 -0
  249. package/dist/types/input/pointer.d.ts +270 -0
  250. package/dist/types/input/pointerevent.d.ts +181 -0
  251. package/dist/types/lang/deprecated.d.ts +53 -0
  252. package/dist/types/level/level.d.ts +134 -0
  253. package/dist/types/level/tiled/TMXGroup.d.ts +82 -0
  254. package/dist/types/level/tiled/TMXLayer.d.ts +180 -0
  255. package/dist/types/level/tiled/TMXObject.d.ts +195 -0
  256. package/dist/types/level/tiled/TMXTile.d.ts +78 -0
  257. package/dist/types/level/tiled/TMXTileMap.d.ts +180 -0
  258. package/dist/types/level/tiled/TMXTileset.d.ts +94 -0
  259. package/dist/types/level/tiled/TMXTilesetGroup.d.ts +32 -0
  260. package/dist/types/level/tiled/TMXUtils.d.ts +47 -0
  261. package/dist/types/level/tiled/renderer/TMXHexagonalRenderer.d.ts +87 -0
  262. package/dist/types/level/tiled/renderer/TMXIsometricRenderer.d.ts +55 -0
  263. package/dist/types/level/tiled/renderer/TMXOrthogonalRenderer.d.ts +43 -0
  264. package/dist/types/level/tiled/renderer/TMXRenderer.d.ts +75 -0
  265. package/dist/types/level/tiled/renderer/TMXStaggeredRenderer.d.ts +8 -0
  266. package/dist/types/loader/loader.d.ts +181 -0
  267. package/dist/types/loader/loadingscreen.d.ts +18 -0
  268. package/dist/types/math/color.d.ts +170 -0
  269. package/dist/types/math/math.d.ts +165 -0
  270. package/dist/types/math/matrix2.d.ts +209 -0
  271. package/dist/types/math/matrix3.d.ts +236 -0
  272. package/dist/types/math/observable_vector2.d.ts +278 -0
  273. package/dist/types/math/observable_vector3.d.ts +277 -0
  274. package/dist/types/math/vector2.d.ts +327 -0
  275. package/dist/types/math/vector3.d.ts +332 -0
  276. package/dist/types/particles/emitter.d.ts +188 -0
  277. package/dist/types/particles/particle.d.ts +32 -0
  278. package/dist/types/particles/settings.d.ts +32 -0
  279. package/dist/types/physics/body.d.ts +330 -0
  280. package/dist/types/physics/bounds.d.ts +250 -0
  281. package/dist/types/physics/collision.d.ts +44 -0
  282. package/dist/types/physics/detector.d.ts +64 -0
  283. package/dist/types/physics/quadtree.d.ts +79 -0
  284. package/dist/types/physics/response.d.ts +37 -0
  285. package/dist/types/physics/sat.d.ts +48 -0
  286. package/dist/types/physics/world.d.ts +83 -0
  287. package/dist/types/plugin/plugin.d.ts +10 -0
  288. package/dist/types/polyfill/console.d.ts +0 -0
  289. package/dist/types/polyfill/index.d.ts +1 -0
  290. package/dist/types/polyfill/performance.d.ts +0 -0
  291. package/dist/types/polyfill/requestAnimationFrame.d.ts +1 -0
  292. package/dist/types/polyfill/roundrect.d.ts +0 -0
  293. package/dist/types/renderable/collectable.d.ts +19 -0
  294. package/dist/types/renderable/colorlayer.d.ts +28 -0
  295. package/dist/types/renderable/container.d.ts +302 -0
  296. package/dist/types/renderable/dragndrop.d.ts +118 -0
  297. package/dist/types/renderable/imagelayer.d.ts +106 -0
  298. package/dist/types/renderable/light2d.d.ts +58 -0
  299. package/dist/types/renderable/nineslicesprite.d.ts +59 -0
  300. package/dist/types/renderable/renderable.d.ts +402 -0
  301. package/dist/types/renderable/sprite.d.ts +268 -0
  302. package/dist/types/renderable/trigger.d.ts +61 -0
  303. package/dist/types/renderable/ui/uibaseelement.d.ts +95 -0
  304. package/dist/types/renderable/ui/uispriteelement.d.ts +127 -0
  305. package/dist/types/renderable/ui/uitextbutton.d.ts +54 -0
  306. package/dist/types/state/stage.d.ts +116 -0
  307. package/dist/types/state/state.d.ts +170 -0
  308. package/dist/types/system/device.d.ts +579 -0
  309. package/dist/types/system/dom.d.ts +1 -0
  310. package/dist/types/system/event.d.ts +473 -0
  311. package/dist/types/system/platform.d.ts +31 -0
  312. package/dist/types/system/pooling.d.ts +101 -0
  313. package/dist/types/system/save.d.ts +25 -0
  314. package/dist/types/system/timer.d.ts +126 -0
  315. package/dist/types/text/bitmaptext.d.ts +151 -0
  316. package/dist/types/text/bitmaptextdata.d.ts +35 -0
  317. package/dist/types/text/glyph.d.ts +28 -0
  318. package/dist/types/text/text.d.ts +173 -0
  319. package/dist/types/text/textmetrics.d.ts +47 -0
  320. package/dist/types/text/textstyle.d.ts +5 -0
  321. package/dist/types/tweens/easing.d.ts +46 -0
  322. package/dist/types/tweens/interpolation.d.ts +18 -0
  323. package/dist/types/tweens/tween.d.ts +195 -0
  324. package/dist/types/utils/agent.d.ts +21 -0
  325. package/dist/types/utils/array.d.ts +39 -0
  326. package/dist/types/utils/file.d.ts +18 -0
  327. package/dist/types/utils/function.d.ts +32 -0
  328. package/dist/types/utils/string.d.ts +50 -0
  329. package/dist/types/utils/utils.d.ts +17 -0
  330. package/dist/types/video/canvas/canvas_renderer.d.ts +380 -0
  331. package/dist/types/video/renderer.d.ts +222 -0
  332. package/dist/types/video/texture/atlas.d.ts +201 -0
  333. package/dist/types/video/texture/cache.d.ts +45 -0
  334. package/dist/types/video/texture/canvas_texture.d.ts +78 -0
  335. package/dist/types/video/utils/autodetect.d.ts +7 -0
  336. package/dist/types/video/utils/resize.d.ts +4 -0
  337. package/dist/types/video/video.d.ts +92 -0
  338. package/dist/types/video/webgl/buffer/vertex.d.ts +56 -0
  339. package/dist/types/video/webgl/glshader.d.ts +93 -0
  340. package/dist/types/video/webgl/utils/attributes.d.ts +4 -0
  341. package/dist/types/video/webgl/utils/precision.d.ts +13 -0
  342. package/dist/types/video/webgl/utils/program.d.ts +5 -0
  343. package/dist/types/video/webgl/utils/string.d.ts +5 -0
  344. package/dist/types/video/webgl/utils/uniforms.d.ts +4 -0
  345. package/dist/types/video/webgl/webgl_compositor.d.ts +174 -0
  346. package/dist/types/video/webgl/webgl_renderer.d.ts +429 -0
  347. package/package.json +14 -14
  348. package/src/application/application.js +171 -20
  349. package/src/application/header.js +25 -0
  350. package/src/application/resize.js +110 -0
  351. package/src/application/settings.js +19 -0
  352. package/src/camera/camera2d.js +1 -1
  353. package/src/index.js +34 -23
  354. package/src/input/pointer.js +1 -1
  355. package/src/input/pointerevent.js +6 -7
  356. package/src/level/level.js +1 -1
  357. package/src/level/tiled/TMXLayer.js +1 -1
  358. package/src/level/tiled/TMXTileMap.js +2 -2
  359. package/src/loader/loadingscreen.js +1 -1
  360. package/src/physics/collision.js +2 -2
  361. package/src/physics/detector.js +172 -145
  362. package/src/physics/world.js +10 -30
  363. package/src/plugin/plugin.js +1 -1
  364. package/src/renderable/container.js +7 -91
  365. package/src/renderable/imagelayer.js +1 -1
  366. package/src/renderable/trigger.js +1 -1
  367. package/src/renderable/ui/uibaseelement.js +1 -1
  368. package/src/state/stage.js +1 -1
  369. package/src/state/state.js +1 -1
  370. package/src/system/device.js +7 -27
  371. package/src/system/dom.js +2 -1
  372. package/src/tweens/tween.js +1 -1
  373. package/src/utils/utils.js +3 -28
  374. package/src/video/canvas/canvas_renderer.js +3 -0
  375. package/src/video/renderer.js +27 -7
  376. package/src/video/texture/canvas_texture.js +20 -0
  377. package/src/video/utils/autodetect.js +18 -0
  378. package/src/video/video.js +17 -291
  379. package/src/video/webgl/glshader.js +3 -4
  380. package/src/video/webgl/utils/precision.js +18 -0
  381. package/src/video/webgl/webgl_renderer.js +3 -0
@@ -0,0 +1,402 @@
1
+ /**
2
+ * @classdesc
3
+ * A base class for renderable objects.
4
+ * @augments Rect
5
+ */
6
+ export default class Renderable extends Rect {
7
+ /**
8
+ * to identify the object as a renderable object
9
+ * @ignore
10
+ */
11
+ isRenderable: boolean;
12
+ /**
13
+ * If true then physic collision and input events will not impact this renderable
14
+ * @type {boolean}
15
+ * @default true
16
+ */
17
+ isKinematic: boolean;
18
+ /**
19
+ * the renderable physic body
20
+ * @type {Body}
21
+ * @example
22
+ * // define a new Player Class
23
+ * class PlayerEntity extends me.Sprite {
24
+ * // constructor
25
+ * constructor(x, y, settings) {
26
+ * // call the parent constructor
27
+ * super(x, y , settings);
28
+ *
29
+ * // define a basic walking animation
30
+ * this.addAnimation("walk", [...]);
31
+ * // define a standing animation (using the first frame)
32
+ * this.addAnimation("stand", [...]);
33
+ * // set the standing animation as default
34
+ * this.setCurrentAnimation("stand");
35
+ *
36
+ * // add a physic body
37
+ * this.body = new me.Body(this);
38
+ * // add a default collision shape
39
+ * this.body.addShape(new me.Rect(0, 0, this.width, this.height));
40
+ * // configure max speed, friction, and initial force to be applied
41
+ * this.body.setMaxVelocity(3, 15);
42
+ * this.body.setFriction(0.4, 0);
43
+ * this.body.force.set(3, 0);
44
+ *
45
+ * // set the display to follow our position on both axis
46
+ * me.game.viewport.follow(this.pos, me.game.viewport.AXIS.BOTH);
47
+ * }
48
+ *
49
+ * ...
50
+ *
51
+ * }
52
+ */
53
+ body: Body;
54
+ /**
55
+ * the renderable default transformation matrix
56
+ * @type {Matrix2d}
57
+ */
58
+ currentTransform: Matrix2d;
59
+ /**
60
+ * (G)ame (U)nique (Id)entifier" <br>
61
+ * a GUID will be allocated for any renderable object added <br>
62
+ * to an object container (including the `me.game.world` container)
63
+ * @type {string}
64
+ */
65
+ GUID: string;
66
+ /**
67
+ * an event handler that is called when the renderable leave or enter a camera viewport
68
+ * @type {Function}
69
+ * @default undefined
70
+ * @example
71
+ * this.onVisibilityChange = function(inViewport) {
72
+ * if (inViewport === true) {
73
+ * console.log("object has entered the in a camera viewport!");
74
+ * }
75
+ * };
76
+ */
77
+ onVisibilityChange: Function;
78
+ /**
79
+ * Whether the renderable object will always update, even when outside of the viewport<br>
80
+ * @type {boolean}
81
+ * @default false
82
+ */
83
+ alwaysUpdate: boolean;
84
+ /**
85
+ * Whether to update this object when the game is paused.
86
+ * @type {boolean}
87
+ * @default false
88
+ */
89
+ updateWhenPaused: boolean;
90
+ /**
91
+ * make the renderable object persistent over level changes<br>
92
+ * @type {boolean}
93
+ * @default false
94
+ */
95
+ isPersistent: boolean;
96
+ /**
97
+ * If true, this renderable will be rendered using screen coordinates,
98
+ * as opposed to world coordinates. Use this, for example, to define UI elements.
99
+ * @type {boolean}
100
+ * @default false
101
+ */
102
+ floating: boolean;
103
+ /**
104
+ * The anchor point is used for attachment behavior, and/or when applying transformations.<br>
105
+ * The coordinate system places the origin at the top left corner of the frame (0, 0) and (1, 1) means the bottom-right corner<br>
106
+ * <img src="images/anchor_point.png"/><br>
107
+ * a Renderable's anchor point defaults to (0.5,0.5), which corresponds to the center position.<br>
108
+ * <br>
109
+ * <i><b>Note:</b> Object created through Tiled will have their anchorPoint set to (0, 0) to match Tiled Level editor implementation.
110
+ * To specify a value through Tiled, use a json expression like `json:{"x":0.5,"y":0.5}`. </i>
111
+ * @type {ObservableVector2d}
112
+ * @default <0.5,0.5>
113
+ */
114
+ anchorPoint: ObservableVector2d;
115
+ /**
116
+ * When enabled, an object container will automatically apply
117
+ * any defined transformation before calling the child draw method.
118
+ * @type {boolean}
119
+ * @default true
120
+ * @example
121
+ * // enable "automatic" transformation when the object is activated
122
+ * onActivateEvent: function () {
123
+ * // reset the transformation matrix
124
+ * this.currentTransform.identity();
125
+ * // ensure the anchor point is the renderable center
126
+ * this.anchorPoint.set(0.5, 0.5);
127
+ * // enable auto transform
128
+ * this.autoTransform = true;
129
+ * ....
130
+ * }
131
+ */
132
+ autoTransform: boolean;
133
+ /**
134
+ * Define the renderable opacity<br>
135
+ * Set to zero if you do not wish an object to be drawn
136
+ * @see Renderable#setOpacity
137
+ * @see Renderable#getOpacity
138
+ * @type {number}
139
+ * @default 1.0
140
+ */
141
+ alpha: number;
142
+ /**
143
+ * a reference to the parent object that contains this renderable
144
+ * @type {Container|Entity}
145
+ * @default undefined
146
+ */
147
+ ancestor: Container | Entity;
148
+ /**
149
+ * A mask limits rendering elements to the shape and position of the given mask object.
150
+ * So, if the renderable is larger than the mask, only the intersecting part of the renderable will be visible.
151
+ * @type {Rect|RoundRect|Polygon|Line|Ellipse}
152
+ * @default undefined
153
+ * @example
154
+ * // apply a mask in the shape of a Star
155
+ * myNPCSprite.mask = new me.Polygon(myNPCSprite.width / 2, 0, [
156
+ * // draw a star
157
+ * {x: 0, y: 0},
158
+ * {x: 14, y: 30},
159
+ * {x: 47, y: 35},
160
+ * {x: 23, y: 57},
161
+ * {x: 44, y: 90},
162
+ * {x: 0, y: 62},
163
+ * {x: -44, y: 90},
164
+ * {x: -23, y: 57},
165
+ * {x: -47, y: 35},
166
+ * {x: -14, y: 30}
167
+ * ]);
168
+ */
169
+ mask: Rect | RoundRect | Polygon | Line | Ellipse;
170
+ /**
171
+ * the blend mode to be applied to this renderable (see renderer setBlendMode for available blend mode)
172
+ * @type {string}
173
+ * @default "normal"
174
+ * @see CanvasRenderer#setBlendMode
175
+ * @see WebGLRenderer#setBlendMode
176
+ */
177
+ blendMode: string;
178
+ /**
179
+ * The name of the renderable
180
+ * @type {string}
181
+ * @default ""
182
+ */
183
+ name: string;
184
+ /**
185
+ * Position of the Renderable relative to its parent container
186
+ * @public
187
+ * @type {ObservableVector3d}
188
+ */
189
+ public pos: ObservableVector3d;
190
+ /**
191
+ * when true the renderable will be redrawn during the next update cycle
192
+ * @type {boolean}
193
+ * @default false
194
+ */
195
+ isDirty: boolean;
196
+ _flip: {
197
+ x: boolean;
198
+ y: boolean;
199
+ };
200
+ _inViewport: boolean;
201
+ /**
202
+ * Whether the renderable object is floating, or contained in a floating container
203
+ * @see Renderable#floating
204
+ * @type {boolean}
205
+ */
206
+ get isFloating(): boolean;
207
+ set tint(arg: Color);
208
+ /**
209
+ * define a tint for this renderable. a (255, 255, 255) r, g, b value will remove the tint effect.
210
+ * @type {Color}
211
+ * @default (255, 255, 255)
212
+ * @example
213
+ * // add a red tint to this renderable
214
+ * this.tint.setColor(255, 128, 128);
215
+ * // remove the tint
216
+ * this.tint.setColor(255, 255, 255);
217
+ */
218
+ get tint(): Color;
219
+ _tint: object | undefined;
220
+ set inViewport(arg: boolean);
221
+ /**
222
+ * Whether the renderable object is visible and within the viewport
223
+ * @type {boolean}
224
+ * @default false
225
+ */
226
+ get inViewport(): boolean;
227
+ /**
228
+ * returns true if this renderable is flipped on the horizontal axis
229
+ * @public
230
+ * @see Renderable#flipX
231
+ * @type {boolean}
232
+ */
233
+ public get isFlippedX(): boolean;
234
+ /**
235
+ * returns true if this renderable is flipped on the vertical axis
236
+ * @public
237
+ * @see Renderable#flipY
238
+ * @type {boolean}
239
+ */
240
+ public get isFlippedY(): boolean;
241
+ /**
242
+ * get the renderable alpha channel value<br>
243
+ * @returns {number} current opacity value between 0 and 1
244
+ */
245
+ getOpacity(): number;
246
+ /**
247
+ * set the renderable alpha channel value<br>
248
+ * @param {number} alpha - opacity value between 0.0 and 1.0
249
+ */
250
+ setOpacity(alpha: number): void;
251
+ /**
252
+ * flip the renderable on the horizontal axis (around the center of the renderable)
253
+ * @see Matrix2d#scaleX
254
+ * @param {boolean} [flip=true] - `true` to flip this renderable.
255
+ * @returns {Renderable} Reference to this object for method chaining
256
+ */
257
+ flipX(flip?: boolean | undefined): Renderable;
258
+ /**
259
+ * flip the renderable on the vertical axis (around the center of the renderable)
260
+ * @see Matrix2d#scaleY
261
+ * @param {boolean} [flip=true] - `true` to flip this renderable.
262
+ * @returns {Renderable} Reference to this object for method chaining
263
+ */
264
+ flipY(flip?: boolean | undefined): Renderable;
265
+ /**
266
+ * multiply the renderable currentTransform with the given matrix
267
+ * @see Renderable#currentTransform
268
+ * @param {Matrix2d} m - the transformation matrix
269
+ * @returns {Renderable} Reference to this object for method chaining
270
+ */
271
+ transform(m: Matrix2d): Renderable;
272
+ /**
273
+ * return the angle to the specified target
274
+ * @param {Renderable|Vector2d|Vector3d} target
275
+ * @returns {number} angle in radians
276
+ */
277
+ angleTo(target: Renderable | Vector2d | Vector3d): number;
278
+ /**
279
+ * return the distance to the specified target
280
+ * @param {Renderable|Vector2d|Vector3d} target
281
+ * @returns {number} distance
282
+ */
283
+ distanceTo(target: Renderable | Vector2d | Vector3d): number;
284
+ /**
285
+ * Rotate this renderable towards the given target.
286
+ * @param {Renderable|Vector2d|Vector3d} target - the renderable or position to look at
287
+ * @returns {Renderable} Reference to this object for method chaining
288
+ */
289
+ lookAt(target: Renderable | Vector2d | Vector3d): Renderable;
290
+ /**
291
+ * Rotate this renderable by the specified angle (in radians).
292
+ * @param {number} angle - The angle to rotate (in radians)
293
+ * @param {Vector2d|ObservableVector2d} [v] - an optional point to rotate around
294
+ * @returns {Renderable} Reference to this object for method chaining
295
+ */
296
+ rotate(angle: number, v?: Vector2d | ObservableVector2d): Renderable;
297
+ /**
298
+ * scale the renderable around his anchor point. Scaling actually applies changes
299
+ * to the currentTransform member wich is used by the renderer to scale the object
300
+ * when rendering. It does not scale the object itself. For example if the renderable
301
+ * is an image, the image.width and image.height properties are unaltered but the currentTransform
302
+ * member will be changed.
303
+ * @param {number} x - a number representing the abscissa of the scaling vector.
304
+ * @param {number} [y=x] - a number representing the ordinate of the scaling vector.
305
+ * @returns {Renderable} Reference to this object for method chaining
306
+ */
307
+ scale(x: number, y?: number | undefined): Renderable;
308
+ /**
309
+ * scale the renderable around his anchor point
310
+ * @param {Vector2d} v - scaling vector
311
+ * @returns {Renderable} Reference to this object for method chaining
312
+ */
313
+ scaleV(v: Vector2d): Renderable;
314
+ /**
315
+ * update function (automatically called by melonJS).
316
+ * @param {number} dt - time since the last update in milliseconds.
317
+ * @returns {boolean} true if the renderable is dirty
318
+ */
319
+ update(dt: number): boolean;
320
+ /**
321
+ * update the renderable's bounding rect (private)
322
+ * @ignore
323
+ */
324
+ updateBoundsPos(newX: any, newY: any): void;
325
+ /**
326
+ * return the renderable absolute position in the game world
327
+ * @returns {Vector2d}
328
+ */
329
+ getAbsolutePosition(): Vector2d;
330
+ _absPos: object | undefined;
331
+ /**
332
+ * called when the anchor point value is changed
333
+ * @private
334
+ * @param {number} x - the new X value to be set for the anchor
335
+ * @param {number} y - the new Y value to be set for the anchor
336
+ */
337
+ private onAnchorUpdate;
338
+ /**
339
+ * Prepare the rendering context before drawing (automatically called by melonJS).
340
+ * This will apply any defined transforms, anchor point, tint or blend mode and translate the context accordingly to this renderable position.
341
+ * @see Renderable#draw
342
+ * @see Renderable#postDraw
343
+ * @param {CanvasRenderer|WebGLRenderer} renderer - a renderer object
344
+ */
345
+ preDraw(renderer: CanvasRenderer | WebGLRenderer): void;
346
+ /**
347
+ * Draw this renderable (automatically called by melonJS).
348
+ * All draw operations for renderable are made respectively
349
+ * to the position or transforms set or applied by the preDraw method.
350
+ * The main draw loop will first call preDraw() to prepare the context for drawing the renderable,
351
+ * then draw() to draw the renderable, and finally postDraw() to clear the context.
352
+ * If you override this method, be mindful about the drawing logic; for example if you draw a shape
353
+ * from the draw method, you should make sure that your draw it at the 0, 0 coordinates.
354
+ * @see Renderable#preDraw
355
+ * @see Renderable#postDraw
356
+ * @param {CanvasRenderer|WebGLRenderer} renderer - a renderer instance
357
+ * @param {Camera2d} [viewport] - the viewport to (re)draw
358
+ */
359
+ draw(renderer: CanvasRenderer | WebGLRenderer, viewport?: any): void;
360
+ /**
361
+ * restore the rendering context after drawing (automatically called by melonJS).
362
+ * @see Renderable#preDraw
363
+ * @see Renderable#draw
364
+ * @param {CanvasRenderer|WebGLRenderer} renderer - a renderer object
365
+ */
366
+ postDraw(renderer: CanvasRenderer | WebGLRenderer): void;
367
+ /**
368
+ * onCollision callback, triggered in case of collision,
369
+ * when this renderable body is colliding with another one
370
+ * @param {ResponseObject} response - the collision response object
371
+ * @param {Renderable} other - the other renderable touching this one (a reference to response.a or response.b)
372
+ * @returns {boolean} true if the object should respond to the collision (its position and velocity will be corrected)
373
+ * @example
374
+ * // colision handler
375
+ * onCollision(response) {
376
+ * if (response.b.body.collisionType === me.collision.types.ENEMY_OBJECT) {
377
+ * // makes the other object solid, by substracting the overlap vector to the current position
378
+ * this.pos.sub(response.overlapV);
379
+ * this.hurt();
380
+ * // not solid
381
+ * return false;
382
+ * }
383
+ * // Make the object solid
384
+ * return true;
385
+ * },
386
+ */
387
+ onCollision(response: ResponseObject, other: Renderable): boolean;
388
+ /**
389
+ * Destroy function<br>
390
+ * @ignore
391
+ */
392
+ destroy(...args: any[]): void;
393
+ /**
394
+ * OnDestroy Notification function<br>
395
+ * Called by engine before deleting the object
396
+ */
397
+ onDestroyEvent(): void;
398
+ }
399
+ import Rect from "./../geometries/rectangle.js";
400
+ import ObservableVector2d from "./../math/observable_vector2.js";
401
+ import ObservableVector3d from "./../math/observable_vector3.js";
402
+ import Color from "./../math/color.js";
@@ -0,0 +1,268 @@
1
+ /**
2
+ * @classdesc
3
+ * An object to display a fixed or animated sprite on screen.
4
+ * @augments Renderable
5
+ */
6
+ export default class Sprite extends Renderable {
7
+ /**
8
+ * @param {number} x - the x coordinates of the sprite object
9
+ * @param {number} y - the y coordinates of the sprite object
10
+ * @param {object} settings - Configuration parameters for the Sprite object
11
+ * @param {HTMLImageElement|HTMLCanvasElement|TextureAtlas|string} settings.image - reference to spritesheet image, a texture atlas or to a texture atlas
12
+ * @param {string} [settings.name=""] - name of this object
13
+ * @param {string} [settings.region] - region name of a specific region to use when using a texture atlas, see {@link TextureAtlas}
14
+ * @param {number} [settings.framewidth] - Width of a single frame within the spritesheet
15
+ * @param {number} [settings.frameheight] - Height of a single frame within the spritesheet
16
+ * @param {string|Color} [settings.tint] - a tint to be applied to this sprite
17
+ * @param {number} [settings.flipX] - flip the sprite on the horizontal axis
18
+ * @param {number} [settings.flipY] - flip the sprite on the vertical axis
19
+ * @param {Vector2d} [settings.anchorPoint={x:0.5, y:0.5}] - Anchor point to draw the frame at (defaults to the center of the frame).
20
+ * @example
21
+ * // create a single sprite from a standalone image, with anchor in the center
22
+ * var sprite = new me.Sprite(0, 0, {
23
+ * image : "PlayerTexture",
24
+ * framewidth : 64,
25
+ * frameheight : 64,
26
+ * anchorPoint : new me.Vector2d(0.5, 0.5)
27
+ * });
28
+ *
29
+ * // create a single sprite from a packed texture
30
+ * game.texture = new me.TextureAtlas(
31
+ * me.loader.getJSON("texture"),
32
+ * me.loader.getImage("texture")
33
+ * );
34
+ * var sprite = new me.Sprite(0, 0, {
35
+ * image : game.texture,
36
+ * region : "npc2.png",
37
+ * });
38
+ */
39
+ constructor(x: number, y: number, settings: {
40
+ image: HTMLImageElement | HTMLCanvasElement | TextureAtlas | string;
41
+ name?: string | undefined;
42
+ region?: string | undefined;
43
+ framewidth?: number | undefined;
44
+ frameheight?: number | undefined;
45
+ tint?: string | Color | undefined;
46
+ flipX?: number | undefined;
47
+ flipY?: number | undefined;
48
+ anchorPoint?: any;
49
+ });
50
+ /**
51
+ * pause and resume animation
52
+ * @public
53
+ * @type {boolean}
54
+ * @default false
55
+ * @name Sprite#animationpause
56
+ */
57
+ public animationpause: boolean;
58
+ /**
59
+ * animation cycling speed (delay between frame in ms)
60
+ * @public
61
+ * @type {number}
62
+ * @default 100
63
+ * @name Sprite#animationspeed
64
+ */
65
+ public animationspeed: number;
66
+ /**
67
+ * global offset for the position to draw from on the source image.
68
+ * @public
69
+ * @type {Vector2d}
70
+ * @default <0.0,0.0>
71
+ * @name offset
72
+ * @memberof Sprite#
73
+ */
74
+ public offset: Vector2d;
75
+ /**
76
+ * The source texture object this sprite object is using
77
+ * @public
78
+ * @type {TextureAtlas}
79
+ * @name source
80
+ * @memberof Sprite#
81
+ */
82
+ public source: TextureAtlas;
83
+ anim: {};
84
+ resetAnim: Function | (() => Sprite) | undefined;
85
+ current: {
86
+ name: string;
87
+ length: number;
88
+ offset: object;
89
+ width: number;
90
+ height: number;
91
+ angle: number;
92
+ idx: number;
93
+ };
94
+ dt: number;
95
+ _flicker: {
96
+ isFlickering: boolean;
97
+ duration: number;
98
+ callback: null;
99
+ state: boolean;
100
+ };
101
+ image: HTMLCanvasElement | HTMLImageElement;
102
+ textureAtlas: any;
103
+ atlasIndices: any;
104
+ /**
105
+ * return the flickering state of the object
106
+ * @name isFlickering
107
+ * @memberof Sprite
108
+ * @returns {boolean}
109
+ */
110
+ isFlickering(): boolean;
111
+ /**
112
+ * make the object flicker
113
+ * @name flicker
114
+ * @memberof Sprite
115
+ * @param {number} duration - expressed in milliseconds
116
+ * @param {Function} callback - Function to call when flickering ends
117
+ * @returns {Sprite} Reference to this object for method chaining
118
+ * @example
119
+ * // make the object flicker for 1 second
120
+ * // and then remove it
121
+ * this.flicker(1000, function () {
122
+ * me.game.world.removeChild(this);
123
+ * });
124
+ */
125
+ flicker(duration: number, callback: Function): Sprite;
126
+ /**
127
+ * add an animation <br>
128
+ * For fixed-sized cell sprite sheet, the index list must follow the
129
+ * logic as per the following example :<br>
130
+ * <img src="images/spritesheet_grid.png"/>
131
+ * @name addAnimation
132
+ * @memberof Sprite
133
+ * @param {string} name - animation id
134
+ * @param {number[]|string[]|object[]} index - list of sprite index or name
135
+ * defining the animation. Can also use objects to specify delay for each frame, see below
136
+ * @param {number} [animationspeed] - cycling speed for animation in ms
137
+ * @returns {number} frame amount of frame added to the animation (delay between each frame).
138
+ * @see Sprite#animationspeed
139
+ * @example
140
+ * // walking animation
141
+ * this.addAnimation("walk", [ 0, 1, 2, 3, 4, 5 ]);
142
+ * // standing animation
143
+ * this.addAnimation("stand", [ 11, 12 ]);
144
+ * // eating animation
145
+ * this.addAnimation("eat", [ 6, 6 ]);
146
+ * // rolling animation
147
+ * this.addAnimation("roll", [ 7, 8, 9, 10 ]);
148
+ * // slower animation
149
+ * this.addAnimation("roll", [ 7, 8, 9, 10 ], 200);
150
+ * // or get more specific with delay for each frame. Good solution instead of repeating:
151
+ * this.addAnimation("turn", [{ name: 0, delay: 200 }, { name: 1, delay: 100 }])
152
+ * // can do this with atlas values as well:
153
+ * this.addAnimation("turn", [{ name: "turnone", delay: 200 }, { name: "turntwo", delay: 100 }])
154
+ * // define an dying animation that stop on the last frame
155
+ * this.addAnimation("die", [{ name: 3, delay: 200 }, { name: 4, delay: 100 }, { name: 5, delay: Infinity }])
156
+ * // set the standing animation as default
157
+ * this.setCurrentAnimation("stand");
158
+ */
159
+ addAnimation(name: string, index: number[] | string[] | object[], animationspeed?: number | undefined): number;
160
+ /**
161
+ * set the current animation
162
+ * this will always change the animation & set the frame to zero
163
+ * @name setCurrentAnimation
164
+ * @memberof Sprite
165
+ * @param {string} name - animation id
166
+ * @param {string|Function} [resetAnim] - animation id to switch to when complete, or callback
167
+ * @param {boolean} [preserve_dt=false] - if false will reset the elapsed time counter since last frame
168
+ * @returns {Sprite} Reference to this object for method chaining
169
+ * @example
170
+ * // set "walk" animation
171
+ * this.setCurrentAnimation("walk");
172
+ *
173
+ * // set "walk" animation if it is not the current animation
174
+ * if (this.isCurrentAnimation("walk")) {
175
+ * this.setCurrentAnimation("walk");
176
+ * }
177
+ *
178
+ * // set "eat" animation, and switch to "walk" when complete
179
+ * this.setCurrentAnimation("eat", "walk");
180
+ *
181
+ * // set "die" animation, and remove the object when finished
182
+ * this.setCurrentAnimation("die", (function () {
183
+ * me.game.world.removeChild(this);
184
+ * return false; // do not reset to first frame
185
+ * }).bind(this));
186
+ *
187
+ * // set "attack" animation, and pause for a short duration
188
+ * this.setCurrentAnimation("die", (function () {
189
+ * this.animationpause = true;
190
+ *
191
+ * // back to "standing" animation after 1 second
192
+ * setTimeout(function () {
193
+ * this.setCurrentAnimation("standing");
194
+ * }, 1000);
195
+ *
196
+ * return false; // do not reset to first frame
197
+ * }).bind(this));
198
+ */
199
+ setCurrentAnimation(name: string, resetAnim?: string | Function | undefined, preserve_dt?: boolean | undefined): Sprite;
200
+ /**
201
+ * reverse the given or current animation if none is specified
202
+ * @name reverseAnimation
203
+ * @memberof Sprite
204
+ * @param {string} [name] - animation id
205
+ * @returns {Sprite} Reference to this object for method chaining
206
+ * @see Sprite#animationspeed
207
+ */
208
+ reverseAnimation(name?: string | undefined): Sprite;
209
+ /**
210
+ * return true if the specified animation is the current one.
211
+ * @name isCurrentAnimation
212
+ * @memberof Sprite
213
+ * @param {string} name - animation id
214
+ * @returns {boolean}
215
+ * @example
216
+ * if (!this.isCurrentAnimation("walk")) {
217
+ * // do something funny...
218
+ * }
219
+ */
220
+ isCurrentAnimation(name: string): boolean;
221
+ /**
222
+ * change the current texture atlas region for this sprite
223
+ * @see Texture.getRegion
224
+ * @name setRegion
225
+ * @memberof Sprite
226
+ * @param {object} region - typically returned through me.Texture.getRegion()
227
+ * @returns {Sprite} Reference to this object for method chaining
228
+ * @example
229
+ * // change the sprite to "shadedDark13.png";
230
+ * mySprite.setRegion(game.texture.getRegion("shadedDark13.png"));
231
+ */
232
+ setRegion(region: object): Sprite;
233
+ /**
234
+ * force the current animation frame index.
235
+ * @name setAnimationFrame
236
+ * @memberof Sprite
237
+ * @param {number} [idx=0] - animation frame index
238
+ * @returns {Sprite} Reference to this object for method chaining
239
+ * @example
240
+ * // reset the current animation to the first frame
241
+ * this.setAnimationFrame();
242
+ */
243
+ setAnimationFrame(idx?: number | undefined): Sprite;
244
+ /**
245
+ * return the current animation frame index.
246
+ * @name getCurrentAnimationFrame
247
+ * @memberof Sprite
248
+ * @returns {number} current animation frame index
249
+ */
250
+ getCurrentAnimationFrame(): number;
251
+ /**
252
+ * Returns the frame object by the index.
253
+ * @name getAnimationFrameObjectByIndex
254
+ * @memberof Sprite
255
+ * @ignore
256
+ * @param {number} id - the frame id
257
+ * @returns {number} if using number indices. Returns {object} containing frame data if using texture atlas
258
+ */
259
+ getAnimationFrameObjectByIndex(id: number): number;
260
+ /**
261
+ * Destroy function<br>
262
+ * @ignore
263
+ */
264
+ destroy(): void;
265
+ }
266
+ import Renderable from "./renderable.js";
267
+ import { TextureAtlas } from "./../video/texture/atlas.js";
268
+ import Color from "../math/color.js";