@vpmedia/phaser 1.0.1 → 1.0.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 (112) hide show
  1. package/README.md +20 -3
  2. package/dist/phaser.cjs +1 -1
  3. package/dist/phaser.cjs.LICENSE.txt +1 -1
  4. package/dist/phaser.cjs.map +1 -1
  5. package/dist/phaser.js +1 -1
  6. package/dist/phaser.js.LICENSE.txt +1 -1
  7. package/dist/phaser.js.map +1 -1
  8. package/package.json +23 -17
  9. package/src/index.js +142 -0
  10. package/src/phaser/core/animation.js +355 -0
  11. package/src/phaser/core/animation_manager.js +238 -0
  12. package/src/phaser/core/animation_parser.js +133 -0
  13. package/src/phaser/core/array_set.js +107 -0
  14. package/src/phaser/core/cache.js +558 -0
  15. package/src/phaser/core/const.js +106 -0
  16. package/src/phaser/core/device.js +67 -0
  17. package/src/phaser/core/device_util.js +388 -0
  18. package/src/phaser/core/dom.js +207 -0
  19. package/src/phaser/core/event_manager.js +243 -0
  20. package/src/phaser/core/factory.js +74 -0
  21. package/src/phaser/core/frame.js +75 -0
  22. package/src/phaser/core/frame_data.js +84 -0
  23. package/src/phaser/core/frame_util.js +33 -0
  24. package/src/phaser/core/game.js +412 -0
  25. package/src/phaser/core/input.js +401 -0
  26. package/src/phaser/core/input_button.js +102 -0
  27. package/src/phaser/core/input_handler.js +687 -0
  28. package/src/phaser/core/input_mouse.js +289 -0
  29. package/src/phaser/core/input_mspointer.js +197 -0
  30. package/src/phaser/core/input_pointer.js +427 -0
  31. package/src/phaser/core/input_touch.js +157 -0
  32. package/src/phaser/core/loader.js +1057 -0
  33. package/src/phaser/core/loader_parser.js +109 -0
  34. package/src/phaser/core/raf.js +46 -0
  35. package/src/phaser/core/raf_fb.js +75 -0
  36. package/src/phaser/core/raf_to.js +34 -0
  37. package/src/phaser/core/scale_manager.js +806 -0
  38. package/src/phaser/core/scene.js +65 -0
  39. package/src/phaser/core/scene_manager.js +309 -0
  40. package/src/phaser/core/signal.js +175 -0
  41. package/src/phaser/core/signal_binding.js +69 -0
  42. package/src/phaser/core/sound.js +538 -0
  43. package/src/phaser/core/sound_manager.js +364 -0
  44. package/src/phaser/core/stage.js +108 -0
  45. package/src/phaser/core/time.js +203 -0
  46. package/src/phaser/core/timer.js +276 -0
  47. package/src/phaser/core/timer_event.js +21 -0
  48. package/src/phaser/core/tween.js +329 -0
  49. package/src/phaser/core/tween_data.js +258 -0
  50. package/src/phaser/core/tween_easing.js +341 -0
  51. package/src/phaser/core/tween_manager.js +185 -0
  52. package/src/phaser/core/world.js +18 -0
  53. package/src/phaser/display/bitmap_text.js +322 -0
  54. package/src/phaser/display/button.js +194 -0
  55. package/src/phaser/display/canvas/buffer.js +36 -0
  56. package/src/phaser/display/canvas/graphics.js +227 -0
  57. package/src/phaser/display/canvas/masker.js +39 -0
  58. package/src/phaser/display/canvas/pool.js +126 -0
  59. package/src/phaser/display/canvas/renderer.js +123 -0
  60. package/src/phaser/display/canvas/tinter.js +144 -0
  61. package/src/phaser/display/canvas/util.js +159 -0
  62. package/src/phaser/display/display_object.js +597 -0
  63. package/src/phaser/display/graphics.js +723 -0
  64. package/src/phaser/display/graphics_data.js +27 -0
  65. package/src/phaser/display/graphics_data_util.js +15 -0
  66. package/src/phaser/display/group.js +227 -0
  67. package/src/phaser/display/image.js +288 -0
  68. package/src/phaser/display/sprite_batch.js +15 -0
  69. package/src/phaser/display/sprite_util.js +250 -0
  70. package/src/phaser/display/text.js +1089 -0
  71. package/src/phaser/display/webgl/abstract_filter.js +25 -0
  72. package/src/phaser/display/webgl/base_texture.js +68 -0
  73. package/src/phaser/display/webgl/blend_manager.js +35 -0
  74. package/src/phaser/display/webgl/earcut.js +662 -0
  75. package/src/phaser/display/webgl/earcut_node.js +28 -0
  76. package/src/phaser/display/webgl/fast_sprite_batch.js +242 -0
  77. package/src/phaser/display/webgl/filter_manager.js +46 -0
  78. package/src/phaser/display/webgl/filter_texture.js +61 -0
  79. package/src/phaser/display/webgl/graphics.js +624 -0
  80. package/src/phaser/display/webgl/graphics_data.js +42 -0
  81. package/src/phaser/display/webgl/mask_manager.js +36 -0
  82. package/src/phaser/display/webgl/render_texture.js +81 -0
  83. package/src/phaser/display/webgl/renderer.js +234 -0
  84. package/src/phaser/display/webgl/shader/complex.js +74 -0
  85. package/src/phaser/display/webgl/shader/fast.js +97 -0
  86. package/src/phaser/display/webgl/shader/normal.js +225 -0
  87. package/src/phaser/display/webgl/shader/primitive.js +72 -0
  88. package/src/phaser/display/webgl/shader/strip.js +77 -0
  89. package/src/phaser/display/webgl/shader_manager.js +89 -0
  90. package/src/phaser/display/webgl/sprite_batch.js +320 -0
  91. package/src/phaser/display/webgl/stencil_manager.js +170 -0
  92. package/src/phaser/display/webgl/texture.js +117 -0
  93. package/src/phaser/display/webgl/texture_util.js +34 -0
  94. package/src/phaser/display/webgl/util.js +78 -0
  95. package/src/phaser/geom/circle.js +186 -0
  96. package/src/phaser/geom/ellipse.js +65 -0
  97. package/src/phaser/geom/line.js +190 -0
  98. package/src/phaser/geom/matrix.js +147 -0
  99. package/src/phaser/geom/point.js +164 -0
  100. package/src/phaser/geom/polygon.js +140 -0
  101. package/src/phaser/geom/rectangle.js +306 -0
  102. package/src/phaser/geom/rounded_rectangle.js +36 -0
  103. package/src/phaser/geom/util/circle.js +122 -0
  104. package/src/phaser/geom/util/ellipse.js +34 -0
  105. package/src/phaser/geom/util/line.js +135 -0
  106. package/src/phaser/geom/util/matrix.js +53 -0
  107. package/src/phaser/geom/util/point.js +296 -0
  108. package/src/phaser/geom/util/polygon.js +28 -0
  109. package/src/phaser/geom/util/rectangle.js +229 -0
  110. package/src/phaser/geom/util/rounded_rectangle.js +32 -0
  111. package/src/phaser/util/math.js +297 -0
  112. package/src/phaser/util/string.js +32 -0
@@ -0,0 +1,250 @@
1
+ /**
2
+ * @author Andras Csizmadia <andras@vpmedia.hu>
3
+ * @author Richard Davey <rich@photonstorm.com>
4
+ * @copyright Copyright (c) 2018-present Richard Davey, Photon Storm Ltd., Andras Csizmadia <andras@vpmedia.hu> (www.vpmedia.hu)
5
+ */
6
+ import { getTintedTexture } from './canvas/tinter';
7
+ import { getIdentityMatrix } from '../geom/util/matrix';
8
+ import { SCALE_LINEAR } from '../core/const';
9
+
10
+ /**
11
+ *
12
+ * @param {object} target TBD
13
+ * @param {object} texture TBD
14
+ * @param {boolean} destroyBase TBD
15
+ */
16
+ export function setTexture(target, texture, destroyBase = false) {
17
+ if (destroyBase) {
18
+ target.texture.baseTexture.destroy();
19
+ }
20
+ target.texture.baseTexture.skipRender = false;
21
+ target.texture = texture;
22
+ target.texture.valid = true;
23
+ target.cachedTint = -1;
24
+ }
25
+
26
+ /**
27
+ *
28
+ * @param {object} target TBD
29
+ * @param {object} matrix TBD
30
+ * @returns {object} TBD
31
+ */
32
+ export function getBounds(target, matrix = null) {
33
+ // TODO verify
34
+ if (target.currentBounds) {
35
+ return target.currentBounds;
36
+ }
37
+ const width = target.texture.frame.width;
38
+ const height = target.texture.frame.height;
39
+ let w0 = width * (1 - target.anchor.x);
40
+ let w1 = width * -target.anchor.x;
41
+ let h0 = height * (1 - target.anchor.y);
42
+ let h1 = height * -target.anchor.y;
43
+ const worldTransform = matrix || target.worldTransform;
44
+ let a = worldTransform.a;
45
+ const b = worldTransform.b;
46
+ const c = worldTransform.c;
47
+ let d = worldTransform.d;
48
+ const tx = worldTransform.tx;
49
+ const ty = worldTransform.ty;
50
+ let maxX = -Infinity;
51
+ let maxY = -Infinity;
52
+ let minX = Infinity;
53
+ let minY = Infinity;
54
+ if (b === 0 && c === 0) {
55
+ // scale may be negative!
56
+ if (a < 0) {
57
+ a *= -1;
58
+ const temp = w0;
59
+ w0 = -w1;
60
+ w1 = -temp;
61
+ }
62
+ if (d < 0) {
63
+ d *= -1;
64
+ const temp = h0;
65
+ h0 = -h1;
66
+ h1 = -temp;
67
+ }
68
+ // this means there is no rotation going on right? RIGHT?
69
+ // if thats the case then we can avoid checking the bound values! yay
70
+ minX = a * w1 + tx;
71
+ maxX = a * w0 + tx;
72
+ minY = d * h1 + ty;
73
+ maxY = d * h0 + ty;
74
+ } else {
75
+ const x1 = a * w1 + c * h1 + tx;
76
+ const y1 = d * h1 + b * w1 + ty;
77
+ const x2 = a * w0 + c * h1 + tx;
78
+ const y2 = d * h1 + b * w0 + ty;
79
+ const x3 = a * w0 + c * h0 + tx;
80
+ const y3 = d * h0 + b * w0 + ty;
81
+ const x4 = a * w1 + c * h0 + tx;
82
+ const y4 = d * h0 + b * w1 + ty;
83
+ minX = x1 < minX ? x1 : minX;
84
+ minX = x2 < minX ? x2 : minX;
85
+ minX = x3 < minX ? x3 : minX;
86
+ minX = x4 < minX ? x4 : minX;
87
+ minY = y1 < minY ? y1 : minY;
88
+ minY = y2 < minY ? y2 : minY;
89
+ minY = y3 < minY ? y3 : minY;
90
+ minY = y4 < minY ? y4 : minY;
91
+ maxX = x1 > maxX ? x1 : maxX;
92
+ maxX = x2 > maxX ? x2 : maxX;
93
+ maxX = x3 > maxX ? x3 : maxX;
94
+ maxX = x4 > maxX ? x4 : maxX;
95
+ maxY = y1 > maxY ? y1 : maxY;
96
+ maxY = y2 > maxY ? y2 : maxY;
97
+ maxY = y3 > maxY ? y3 : maxY;
98
+ maxY = y4 > maxY ? y4 : maxY;
99
+ }
100
+ const bounds = target.cachedBounds;
101
+ bounds.x = minX;
102
+ bounds.width = maxX - minX;
103
+ bounds.y = minY;
104
+ bounds.height = maxY - minY;
105
+ target.currentBounds = bounds;
106
+ return bounds;
107
+ }
108
+
109
+ /**
110
+ *
111
+ * @param {object} target TBD
112
+ * @returns {object} TBD
113
+ */
114
+ export function getLocalBounds(target) {
115
+ const matrixCache = target.worldTransform;
116
+ target.worldTransform = getIdentityMatrix();
117
+ let i;
118
+ for (i = 0; i < target.children.length; i += 1) {
119
+ target.children[i].updateTransform();
120
+ }
121
+ const bounds = target.getBounds();
122
+ target.worldTransform = matrixCache;
123
+ for (i = 0; i < target.children.length; i += 1) {
124
+ target.children[i].updateTransform();
125
+ }
126
+ return bounds;
127
+ }
128
+
129
+ /**
130
+ *
131
+ * @param {object} target TBD
132
+ * @param {object} renderSession TBD
133
+ * @param {object} matrix TBD
134
+ */
135
+ export function renderWebGL(target, renderSession, matrix) {
136
+ // if the sprite is not visible or the alpha is 0 then no need to render this element
137
+ if (!target.visible || target.alpha <= 0 || !target.renderable) {
138
+ return;
139
+ }
140
+ // They provided an alternative rendering matrix, so use it
141
+ let wt = target.worldTransform;
142
+ if (matrix) {
143
+ wt = matrix;
144
+ }
145
+ // A quick check to see if this element has a mask or a filter.
146
+ if (target._mask || target._filters) {
147
+ const spriteBatch = renderSession.spriteBatch;
148
+ // push filter first as we need to ensure the stencil buffer is correct for any masking
149
+ if (target._filters) {
150
+ spriteBatch.flush();
151
+ renderSession.filterManager.pushFilter(target._filterBlock);
152
+ }
153
+ if (target._mask) {
154
+ spriteBatch.stop();
155
+ renderSession.maskManager.pushMask(target.mask, renderSession);
156
+ spriteBatch.start();
157
+ }
158
+ // add this sprite to the batch
159
+ spriteBatch.render(target);
160
+ // now loop through the children and make sure they get rendered
161
+ for (let i = 0; i < target.children.length; i += 1) {
162
+ target.children[i].renderWebGL(renderSession);
163
+ }
164
+ // time to stop the sprite batch as either a mask element or a filter draw will happen next
165
+ spriteBatch.stop();
166
+ if (target._mask) renderSession.maskManager.popMask(target._mask, renderSession);
167
+ if (target._filters) renderSession.filterManager.popFilter();
168
+ spriteBatch.start();
169
+ } else {
170
+ renderSession.spriteBatch.render(target);
171
+ // Render children!
172
+ for (let i = 0; i < target.children.length; i += 1) {
173
+ target.children[i].renderWebGL(renderSession, wt);
174
+ }
175
+ }
176
+ }
177
+
178
+ /**
179
+ *
180
+ * @param {object} target TBD
181
+ * @param {object} renderSession TBD
182
+ * @param {object} matrix TBD
183
+ */
184
+ export function renderCanvas(target, renderSession, matrix) {
185
+ // If the sprite is not visible or the alpha is 0 then no need to render this element
186
+ if (!target.visible || target.alpha === 0 || !target.renderable || target.texture.crop.width <= 0 || target.texture.crop.height <= 0) {
187
+ return;
188
+ }
189
+ let wt = target.worldTransform;
190
+ // If they provided an alternative rendering matrix then use it
191
+ if (matrix) {
192
+ wt = matrix;
193
+ }
194
+ if (target.blendMode !== renderSession.currentBlendMode) {
195
+ renderSession.currentBlendMode = target.blendMode;
196
+ renderSession.context.globalCompositeOperation = window.PhaserRegistry.blendModesCanvas[renderSession.currentBlendMode];
197
+ }
198
+ if (target._mask) {
199
+ renderSession.maskManager.pushMask(target._mask, renderSession);
200
+ }
201
+ // Ignore null sources
202
+ if (target.texture.valid) {
203
+ const resolution = target.texture.baseTexture.resolution / renderSession.resolution;
204
+ renderSession.context.globalAlpha = target.worldAlpha;
205
+
206
+ // If smoothingEnabled is supported and we need to change the smoothing property for this texture
207
+ if (renderSession.smoothProperty && renderSession.scaleMode !== target.texture.baseTexture.scaleMode) {
208
+ renderSession.scaleMode = target.texture.baseTexture.scaleMode;
209
+ renderSession.context[renderSession.smoothProperty] = (renderSession.scaleMode === SCALE_LINEAR);
210
+ }
211
+ // If the texture is trimmed we offset by the trim x/y, otherwise we use the frame dimensions
212
+ let dx = (target.texture.trim) ? target.texture.trim.x - target.anchor.x * target.texture.trim.width : target.anchor.x * -target.texture.frame.width;
213
+ let dy = (target.texture.trim) ? target.texture.trim.y - target.anchor.y * target.texture.trim.height : target.anchor.y * -target.texture.frame.height;
214
+ const tx = (wt.tx * renderSession.resolution) + renderSession.shakeX;
215
+ const ty = (wt.ty * renderSession.resolution) + renderSession.shakeY;
216
+ // Allow for pixel rounding
217
+ if (renderSession.roundPixels) {
218
+ renderSession.context.setTransform(wt.a, wt.b, wt.c, wt.d, tx | 0, ty | 0);
219
+ dx |= 0;
220
+ dy |= 0;
221
+ } else {
222
+ renderSession.context.setTransform(wt.a, wt.b, wt.c, wt.d, tx, ty);
223
+ }
224
+ let cw = target.texture.crop.width;
225
+ let ch = target.texture.crop.height;
226
+ dx /= resolution;
227
+ dy /= resolution;
228
+ if (target.tint !== 0xFFFFFF) {
229
+ if (target.texture.requiresReTint || target.cachedTint !== target.tint) {
230
+ target.tintedTexture = getTintedTexture(target, target.tint);
231
+ target.cachedTint = target.tint;
232
+ target.texture.requiresReTint = false;
233
+ }
234
+ renderSession.context.drawImage(target.tintedTexture, 0, 0, cw, ch, dx, dy, cw / resolution, ch / resolution);
235
+ } else {
236
+ const cx = target.texture.crop.x;
237
+ const cy = target.texture.crop.y;
238
+ // https://github.com/photonstorm/phaser-ce/pull/61
239
+ cw = Math.floor(cw);
240
+ ch = Math.floor(ch);
241
+ renderSession.context.drawImage(target.texture.baseTexture.source, cx, cy, cw, ch, dx, dy, cw / resolution, ch / resolution);
242
+ }
243
+ }
244
+ for (let i = 0; i < target.children.length; i += 1) {
245
+ target.children[i].renderCanvas(renderSession);
246
+ }
247
+ if (target._mask) {
248
+ renderSession.maskManager.popMask(renderSession);
249
+ }
250
+ }