melonjs 14.0.2 → 14.1.1

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 (219) hide show
  1. package/README.md +2 -0
  2. package/dist/melonjs.mjs/_virtual/_commonjsHelpers.js +10 -0
  3. package/dist/melonjs.mjs/_virtual/arraymultimap.js +10 -0
  4. package/dist/melonjs.mjs/_virtual/earcut.js +10 -0
  5. package/dist/melonjs.mjs/_virtual/howler.js +10 -0
  6. package/dist/melonjs.mjs/_virtual/index.js +10 -0
  7. package/dist/melonjs.mjs/_virtual/index2.js +10 -0
  8. package/dist/melonjs.mjs/_virtual/multimap.js +10 -0
  9. package/dist/melonjs.mjs/_virtual/setmultimap.js +10 -0
  10. package/dist/melonjs.mjs/application/application.js +238 -0
  11. package/dist/melonjs.mjs/audio/audio.js +536 -0
  12. package/dist/melonjs.mjs/camera/camera2d.js +731 -0
  13. package/dist/melonjs.mjs/entity/entity.js +247 -0
  14. package/dist/melonjs.mjs/game.js +29 -0
  15. package/dist/melonjs.mjs/geometries/ellipse.js +274 -0
  16. package/dist/melonjs.mjs/geometries/line.js +115 -0
  17. package/dist/melonjs.mjs/geometries/path2d.js +318 -0
  18. package/dist/melonjs.mjs/geometries/point.js +88 -0
  19. package/dist/melonjs.mjs/geometries/poly.js +498 -0
  20. package/dist/melonjs.mjs/geometries/rectangle.js +374 -0
  21. package/dist/melonjs.mjs/geometries/roundrect.js +167 -0
  22. package/dist/melonjs.mjs/index.js +248 -0
  23. package/dist/melonjs.mjs/input/gamepad.js +501 -0
  24. package/dist/melonjs.mjs/input/input.js +26 -0
  25. package/dist/melonjs.mjs/input/keyboard.js +470 -0
  26. package/dist/melonjs.mjs/input/pointer.js +393 -0
  27. package/dist/melonjs.mjs/input/pointerevent.js +818 -0
  28. package/dist/melonjs.mjs/lang/deprecated.js +157 -0
  29. package/dist/melonjs.mjs/level/level.js +297 -0
  30. package/dist/melonjs.mjs/level/tiled/TMXGroup.js +141 -0
  31. package/dist/melonjs.mjs/level/tiled/TMXLayer.js +446 -0
  32. package/dist/melonjs.mjs/level/tiled/TMXObject.js +355 -0
  33. package/dist/melonjs.mjs/level/tiled/TMXTile.js +193 -0
  34. package/dist/melonjs.mjs/level/tiled/TMXTileMap.js +636 -0
  35. package/dist/melonjs.mjs/level/tiled/TMXTileset.js +309 -0
  36. package/dist/melonjs.mjs/level/tiled/TMXTilesetGroup.js +81 -0
  37. package/dist/melonjs.mjs/level/tiled/TMXUtils.js +367 -0
  38. package/dist/melonjs.mjs/level/tiled/renderer/TMXHexagonalRenderer.js +504 -0
  39. package/dist/melonjs.mjs/level/tiled/renderer/TMXIsometricRenderer.js +218 -0
  40. package/dist/melonjs.mjs/level/tiled/renderer/TMXOrthogonalRenderer.js +155 -0
  41. package/dist/melonjs.mjs/level/tiled/renderer/TMXRenderer.js +124 -0
  42. package/dist/melonjs.mjs/level/tiled/renderer/TMXStaggeredRenderer.js +107 -0
  43. package/dist/melonjs.mjs/loader/loader.js +801 -0
  44. package/dist/melonjs.mjs/loader/loadingscreen.js +120 -0
  45. package/dist/melonjs.mjs/loader/melonjs_logo.png.js +11 -0
  46. package/dist/melonjs.mjs/math/color.js +616 -0
  47. package/dist/melonjs.mjs/math/math.js +218 -0
  48. package/dist/melonjs.mjs/math/matrix2.js +501 -0
  49. package/dist/melonjs.mjs/math/matrix3.js +679 -0
  50. package/dist/melonjs.mjs/math/observable_vector2.js +469 -0
  51. package/dist/melonjs.mjs/math/observable_vector3.js +559 -0
  52. package/dist/melonjs.mjs/math/vector2.js +526 -0
  53. package/dist/melonjs.mjs/math/vector3.js +567 -0
  54. package/dist/melonjs.mjs/node_modules/@teppeis/multimaps/dist/src/arraymultimap.js +73 -0
  55. package/dist/melonjs.mjs/node_modules/@teppeis/multimaps/dist/src/index.js +21 -0
  56. package/dist/melonjs.mjs/node_modules/@teppeis/multimaps/dist/src/multimap.js +324 -0
  57. package/dist/melonjs.mjs/node_modules/@teppeis/multimaps/dist/src/setmultimap.js +69 -0
  58. package/dist/melonjs.mjs/node_modules/earcut/src/earcut.js +691 -0
  59. package/dist/melonjs.mjs/node_modules/eventemitter3/index.js +350 -0
  60. package/dist/melonjs.mjs/node_modules/howler/dist/howler.js +3241 -0
  61. package/dist/melonjs.mjs/particles/emitter.js +265 -0
  62. package/dist/melonjs.mjs/particles/particle.js +186 -0
  63. package/dist/melonjs.mjs/particles/settings.js +319 -0
  64. package/dist/melonjs.mjs/physics/body.js +702 -0
  65. package/dist/melonjs.mjs/physics/bounds.js +459 -0
  66. package/dist/melonjs.mjs/physics/collision.js +132 -0
  67. package/dist/melonjs.mjs/physics/detector.js +194 -0
  68. package/dist/melonjs.mjs/physics/quadtree.js +394 -0
  69. package/dist/melonjs.mjs/physics/response.js +57 -0
  70. package/dist/melonjs.mjs/physics/sat.js +483 -0
  71. package/dist/melonjs.mjs/physics/world.js +219 -0
  72. package/dist/melonjs.mjs/plugin/plugin.js +141 -0
  73. package/dist/melonjs.mjs/renderable/collectable.js +60 -0
  74. package/dist/melonjs.mjs/renderable/colorlayer.js +78 -0
  75. package/dist/melonjs.mjs/renderable/container.js +1016 -0
  76. package/dist/melonjs.mjs/renderable/dragndrop.js +224 -0
  77. package/dist/melonjs.mjs/renderable/imagelayer.js +305 -0
  78. package/dist/melonjs.mjs/renderable/light2d.js +155 -0
  79. package/dist/melonjs.mjs/renderable/nineslicesprite.js +246 -0
  80. package/dist/melonjs.mjs/renderable/renderable.js +781 -0
  81. package/dist/melonjs.mjs/renderable/sprite.js +653 -0
  82. package/dist/melonjs.mjs/renderable/trigger.js +156 -0
  83. package/dist/melonjs.mjs/renderable/ui/uibaseelement.js +212 -0
  84. package/dist/melonjs.mjs/renderable/ui/uispriteelement.js +225 -0
  85. package/dist/melonjs.mjs/renderable/ui/uitextbutton.js +127 -0
  86. package/dist/melonjs.mjs/state/stage.js +236 -0
  87. package/dist/melonjs.mjs/state/state.js +596 -0
  88. package/dist/melonjs.mjs/system/device.js +909 -0
  89. package/dist/melonjs.mjs/system/dom.js +78 -0
  90. package/dist/melonjs.mjs/system/event.js +537 -0
  91. package/dist/melonjs.mjs/system/platform.js +41 -0
  92. package/dist/melonjs.mjs/system/pooling.js +209 -0
  93. package/dist/melonjs.mjs/system/save.js +157 -0
  94. package/dist/melonjs.mjs/system/timer.js +286 -0
  95. package/dist/melonjs.mjs/text/bitmaptext.js +363 -0
  96. package/dist/melonjs.mjs/text/bitmaptextdata.js +198 -0
  97. package/dist/melonjs.mjs/text/glyph.js +65 -0
  98. package/dist/melonjs.mjs/text/text.js +452 -0
  99. package/dist/melonjs.mjs/text/textmetrics.js +175 -0
  100. package/dist/melonjs.mjs/text/textstyle.js +23 -0
  101. package/dist/melonjs.mjs/tweens/easing.js +336 -0
  102. package/dist/melonjs.mjs/tweens/interpolation.js +112 -0
  103. package/dist/melonjs.mjs/tweens/tween.js +479 -0
  104. package/dist/melonjs.mjs/utils/agent.js +76 -0
  105. package/dist/melonjs.mjs/utils/array.js +63 -0
  106. package/dist/melonjs.mjs/utils/file.js +42 -0
  107. package/dist/melonjs.mjs/utils/function.js +70 -0
  108. package/dist/melonjs.mjs/utils/string.js +82 -0
  109. package/dist/melonjs.mjs/utils/utils.js +173 -0
  110. package/dist/melonjs.mjs/video/canvas/canvas_renderer.js +806 -0
  111. package/dist/melonjs.mjs/video/renderer.js +410 -0
  112. package/dist/melonjs.mjs/video/texture/atlas.js +519 -0
  113. package/dist/melonjs.mjs/video/texture/cache.js +143 -0
  114. package/dist/melonjs.mjs/video/texture/canvas_texture.js +144 -0
  115. package/dist/melonjs.mjs/video/video.js +462 -0
  116. package/dist/melonjs.mjs/video/webgl/buffer/vertex.js +142 -0
  117. package/dist/melonjs.mjs/video/webgl/glshader.js +167 -0
  118. package/dist/melonjs.mjs/video/webgl/shaders/primitive.frag.js +10 -0
  119. package/dist/melonjs.mjs/video/webgl/shaders/primitive.vert.js +10 -0
  120. package/dist/melonjs.mjs/video/webgl/shaders/quad.frag.js +10 -0
  121. package/dist/melonjs.mjs/video/webgl/shaders/quad.vert.js +10 -0
  122. package/dist/melonjs.mjs/video/webgl/utils/attributes.js +25 -0
  123. package/dist/melonjs.mjs/video/webgl/utils/precision.js +20 -0
  124. package/dist/melonjs.mjs/video/webgl/utils/program.js +67 -0
  125. package/dist/melonjs.mjs/video/webgl/utils/string.js +25 -0
  126. package/dist/melonjs.mjs/video/webgl/utils/uniforms.js +92 -0
  127. package/dist/melonjs.mjs/video/webgl/webgl_compositor.js +494 -0
  128. package/dist/melonjs.mjs/video/webgl/webgl_renderer.js +1035 -0
  129. package/dist/melonjs.module.d.ts +1298 -1359
  130. package/dist/melonjs.module.js +2072 -3520
  131. package/package.json +21 -16
  132. package/src/application/application.js +4 -5
  133. package/src/audio/audio.js +32 -32
  134. package/src/camera/camera2d.js +32 -33
  135. package/src/entity/entity.js +18 -19
  136. package/src/geometries/ellipse.js +17 -18
  137. package/src/geometries/line.js +6 -7
  138. package/src/geometries/path2d.js +33 -34
  139. package/src/geometries/point.js +1 -2
  140. package/src/geometries/poly.js +16 -18
  141. package/src/geometries/rectangle.js +19 -20
  142. package/src/geometries/roundrect.js +9 -10
  143. package/src/input/gamepad.js +15 -15
  144. package/src/input/keyboard.js +12 -12
  145. package/src/input/pointer.js +6 -6
  146. package/src/input/pointerevent.js +12 -12
  147. package/src/lang/deprecated.js +12 -12
  148. package/src/level/level.js +25 -25
  149. package/src/level/tiled/TMXLayer.js +23 -24
  150. package/src/level/tiled/TMXTile.js +6 -7
  151. package/src/level/tiled/TMXTileMap.js +8 -10
  152. package/src/level/tiled/TMXTileset.js +3 -4
  153. package/src/level/tiled/TMXTilesetGroup.js +1 -2
  154. package/src/level/tiled/TMXUtils.js +5 -5
  155. package/src/level/tiled/renderer/TMXHexagonalRenderer.js +3 -4
  156. package/src/level/tiled/renderer/TMXIsometricRenderer.js +3 -4
  157. package/src/level/tiled/renderer/TMXOrthogonalRenderer.js +2 -3
  158. package/src/level/tiled/renderer/TMXRenderer.js +20 -21
  159. package/src/level/tiled/renderer/TMXStaggeredRenderer.js +1 -2
  160. package/src/loader/loader.js +20 -20
  161. package/src/math/color.js +21 -22
  162. package/src/math/math.js +16 -16
  163. package/src/math/matrix2.js +17 -18
  164. package/src/math/matrix3.js +26 -27
  165. package/src/math/observable_vector2.js +15 -16
  166. package/src/math/observable_vector3.js +17 -18
  167. package/src/math/vector2.js +10 -11
  168. package/src/math/vector3.js +11 -12
  169. package/src/particles/emitter.js +7 -8
  170. package/src/particles/particle.js +3 -4
  171. package/src/physics/body.js +29 -30
  172. package/src/physics/bounds.js +10 -10
  173. package/src/physics/collision.js +2 -2
  174. package/src/physics/detector.js +6 -6
  175. package/src/physics/quadtree.js +18 -23
  176. package/src/physics/sat.js +31 -31
  177. package/src/physics/world.js +6 -7
  178. package/src/plugin/plugin.js +5 -5
  179. package/src/renderable/collectable.js +4 -6
  180. package/src/renderable/colorlayer.js +6 -8
  181. package/src/renderable/container.js +25 -27
  182. package/src/renderable/dragndrop.js +14 -14
  183. package/src/renderable/imagelayer.js +14 -15
  184. package/src/renderable/light2d.js +4 -5
  185. package/src/renderable/nineslicesprite.js +17 -18
  186. package/src/renderable/renderable.js +26 -28
  187. package/src/renderable/sprite.js +29 -30
  188. package/src/renderable/trigger.js +16 -17
  189. package/src/renderable/ui/uibaseelement.js +8 -9
  190. package/src/renderable/ui/uispriteelement.js +8 -8
  191. package/src/renderable/ui/uitextbutton.js +15 -15
  192. package/src/state/stage.js +8 -9
  193. package/src/state/state.js +17 -17
  194. package/src/system/device.js +11 -11
  195. package/src/system/event.js +10 -10
  196. package/src/system/pooling.js +9 -9
  197. package/src/system/save.js +2 -2
  198. package/src/system/timer.js +10 -10
  199. package/src/text/bitmaptext.js +19 -20
  200. package/src/text/bitmaptextdata.js +3 -4
  201. package/src/text/glyph.js +1 -2
  202. package/src/text/text.js +24 -25
  203. package/src/text/textmetrics.js +9 -10
  204. package/src/tweens/tween.js +20 -21
  205. package/src/utils/agent.js +5 -5
  206. package/src/utils/array.js +4 -4
  207. package/src/utils/file.js +2 -2
  208. package/src/utils/function.js +6 -6
  209. package/src/utils/string.js +5 -5
  210. package/src/utils/utils.js +4 -4
  211. package/src/video/canvas/canvas_renderer.js +72 -73
  212. package/src/video/renderer.js +27 -28
  213. package/src/video/texture/atlas.js +22 -22
  214. package/src/video/texture/canvas_texture.js +9 -9
  215. package/src/video/video.js +17 -17
  216. package/src/video/webgl/buffer/vertex.js +1 -2
  217. package/src/video/webgl/glshader.js +12 -12
  218. package/src/video/webgl/webgl_compositor.js +42 -43
  219. package/src/video/webgl/webgl_renderer.js +76 -77
@@ -0,0 +1,246 @@
1
+ /*!
2
+ * melonJS Game Engine - v14.1.1
3
+ * http://www.melonjs.org
4
+ * melonjs is licensed under the MIT License.
5
+ * http://www.opensource.org/licenses/mit-license
6
+ * @copyright (C) 2011 - 2022 Olivier Biot (AltByte Pte Ltd)
7
+ */
8
+ import Sprite from './sprite.js';
9
+
10
+ /**
11
+ * @classdesc
12
+ * A NineSliceSprite is similar to a Sprite, but it uses 9-slice scaling to strech its inner area to fit the size of the Renderable,
13
+ * by proportionally scaling a sprite by splitting it in a grid of nine parts (with only parts 1, 3, 7, 9 not being scaled). <br>
14
+ * <img src="images/9-slice-scaling.png"/><br>
15
+ * @see https://en.wikipedia.org/wiki/9-slice_scaling
16
+ * @augments Sprite
17
+ */
18
+ class NineSliceSprite extends Sprite {
19
+ /**
20
+ * @param {number} x - the x coordinates of the sprite object
21
+ * @param {number} y - the y coordinates of the sprite object
22
+ * @param {object} settings - Configuration parameters for the Sprite object
23
+ * @param {number} settings.width - the width of the Renderable over which the sprite needs to be stretched
24
+ * @param {number} settings.height - the height of the Renderable over which the sprite needs to be stretched
25
+ * @param {number} [settings.insetx] - the width of a corner over which the sprite is unscaled (default is a quarter of the sprite width)
26
+ * @param {number} [settings.insety] - the height of a corner over which the sprite is unscaled (default is a quarter of the sprite height)
27
+ * @param {HTMLImageElement|HTMLCanvasElement|TextureAtlas|string} settings.image - reference to spritesheet image, a texture atlas or to a texture atlas
28
+ * @param {string} [settings.name=""] - name of this object
29
+ * @param {string} [settings.region] - region name of a specific region to use when using a texture atlas, see {@link TextureAtlas}
30
+ * @param {number} [settings.framewidth] - Width of a single frame within the spritesheet
31
+ * @param {number} [settings.frameheight] - Height of a single frame within the spritesheet
32
+ * @param {string|Color} [settings.tint] - a tint to be applied to this sprite
33
+ * @param {number} [settings.flipX] - flip the sprite on the horizontal axis
34
+ * @param {number} [settings.flipY] - flip the sprite on the vertical axis
35
+ * @param {Vector2d} [settings.anchorPoint={x:0.5, y:0.5}] - Anchor point to draw the frame at (defaults to the center of the frame).
36
+ * @example
37
+ * this.panelSprite = new me.NineSliceSprite(0, 0, {
38
+ * image : game.texture,
39
+ * region : "grey_panel",
40
+ * width : this.width,
41
+ * height : this.height
42
+ * });
43
+ */
44
+ constructor(x, y, settings) {
45
+ // call the super constructor
46
+ super(x, y, settings);
47
+
48
+ // ensure mandatory properties are defined
49
+ if ((typeof settings.width !== "number") || (typeof settings.height !== "number")) {
50
+ throw new Error("height and width properties are mandatory");
51
+ }
52
+
53
+ // adjust the nss sprite size accordingly to the target "expanded" size
54
+ this.width = Math.floor(settings.width);
55
+ this.height = Math.floor(settings.height);
56
+
57
+ // nine slice sprite specific internal variables
58
+ this.nss_width = this.width;
59
+ this.nss_height = this.height;
60
+
61
+ this.insetx = settings.insetx;
62
+ this.insety = settings.insety;
63
+ }
64
+
65
+ /**
66
+ * width of the NineSliceSprite
67
+ * @public
68
+ * @type {number}
69
+ * @name width
70
+ */
71
+ get width() {
72
+ return super.width;
73
+ }
74
+ set width(value) {
75
+ super.width = this.nss_width = value;
76
+ }
77
+
78
+ /**
79
+ * height of the NineSliceSprite
80
+ * @public
81
+ * @type {number}
82
+ * @name height
83
+ */
84
+ get height() {
85
+ return super.height;
86
+ }
87
+ set height(value) {
88
+ super.height = this.nss_height = value;
89
+ }
90
+
91
+ /**
92
+ * @ignore
93
+ */
94
+ draw(renderer) {
95
+ // the frame to draw
96
+ var frame = this.current;
97
+
98
+ // cache the current position and size
99
+ var dx = this.pos.x,
100
+ dy = this.pos.y;
101
+
102
+ var w = frame.width,
103
+ h = frame.height;
104
+
105
+ // frame offset in the texture/atlas
106
+ var frame_offset = frame.offset;
107
+ var g_offset = this.offset;
108
+
109
+
110
+ // remove image's TexturePacker/ShoeBox rotation
111
+ if (frame.angle !== 0) {
112
+ renderer.translate(-dx, -dy);
113
+ renderer.rotate(frame.angle);
114
+ dx -= h;
115
+ w = frame.height;
116
+ h = frame.width;
117
+ }
118
+
119
+ var sx = g_offset.x + frame_offset.x,
120
+ sy = g_offset.y + frame_offset.y;
121
+
122
+ // should this be configurable ?
123
+ var corner_width = this.insetx || w / 4,
124
+ corner_height = this.insety || h / 4;
125
+
126
+ // OPTIMIZE ME !
127
+
128
+ // DRAW CORNERS
129
+
130
+ // Top Left
131
+ renderer.drawImage(
132
+ this.image,
133
+ sx, // sx
134
+ sy, // sy
135
+ corner_width, corner_height, // sw,sh
136
+ dx, dy, // dx,dy
137
+ corner_width, corner_height // dw,dh
138
+ );
139
+
140
+ // Top Right
141
+ renderer.drawImage(
142
+ this.image,
143
+ sx + w - corner_width, // sx
144
+ sy, // sy
145
+ corner_width, corner_height, // sw,sh
146
+ dx + this.nss_width - corner_width, // dx
147
+ dy, // dy
148
+ corner_width, corner_height // dw,dh
149
+ );
150
+ // Bottom Left
151
+ renderer.drawImage(
152
+ this.image,
153
+ sx, // sx
154
+ sy + h - corner_height, // sy
155
+ corner_width, corner_height, // sw,sh
156
+ dx, // dx
157
+ dy + this.nss_height - corner_height, // dy
158
+ corner_width, corner_height // dw,dh
159
+ );
160
+ // Bottom Right
161
+ renderer.drawImage(
162
+ this.image,
163
+ sx + w - corner_width, // sx
164
+ sy + h - corner_height, // sy
165
+ corner_width, corner_height, // sw,sh
166
+ dx + this.nss_width - corner_width, //dx
167
+ dy + this.nss_height - corner_height, // dy
168
+ corner_width, corner_height // dw,dh
169
+ );
170
+
171
+
172
+ // DRAW SIDES and CENTER
173
+ var image_center_width = w - (corner_width << 1);
174
+ var image_center_height = h - (corner_height << 1);
175
+
176
+ var target_center_width = this.nss_width - (corner_width << 1);
177
+ var target_center_height = this.nss_height - (corner_height << 1);
178
+
179
+ //Top center
180
+ renderer.drawImage(
181
+ this.image,
182
+ sx + corner_width, // sx
183
+ sy, // sy
184
+ image_center_width, // sw
185
+ corner_height, // sh
186
+ dx + corner_width, // dx
187
+ dy, // dy
188
+ target_center_width, // dw
189
+ corner_height // dh
190
+ );
191
+
192
+ //Bottom center
193
+ renderer.drawImage(
194
+ this.image,
195
+ sx + corner_width, // sx
196
+ sy + h - corner_height, // sy
197
+ image_center_width, // sw
198
+ corner_height, // sh
199
+ dx + corner_width, // dx
200
+ dy + this.nss_height - corner_height, // dx
201
+ target_center_width, // dw
202
+ corner_height // dh
203
+ );
204
+
205
+ // Middle Left
206
+ renderer.drawImage(
207
+ this.image,
208
+ sx, // sx
209
+ sy + corner_height, // sy
210
+ corner_width, // sw
211
+ image_center_height, // sh
212
+ dx, // dx
213
+ dy + corner_height, // dy
214
+ corner_width, // dw
215
+ target_center_height // dh
216
+ );
217
+
218
+ // Middle Right
219
+ renderer.drawImage(
220
+ this.image,
221
+ sx + w - corner_width, // sx
222
+ sy + corner_height, // sy
223
+ corner_width, // sw
224
+ image_center_height, // sh
225
+ dx + this.nss_width - corner_width, // dx
226
+ dy + corner_height, // dy
227
+ corner_width, // dw
228
+ target_center_height // dh
229
+ );
230
+
231
+ // Middle Center
232
+ renderer.drawImage(
233
+ this.image,
234
+ sx + corner_width, // sx
235
+ sy + corner_height, // sy
236
+ image_center_width, // sw
237
+ image_center_height, // sh
238
+ dx + corner_width, // dx
239
+ dy + corner_height, // dy
240
+ target_center_width, // dw
241
+ target_center_height // dh
242
+ );
243
+ }
244
+ }
245
+
246
+ export { NineSliceSprite as default };