@fi4f/hg 0.0.10 → 0.0.12

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 (117) hide show
  1. package/README.md +57 -0
  2. package/dist/asset.d.ts +46 -0
  3. package/dist/asset.d.ts.map +1 -0
  4. package/dist/{core/asset.js → asset.js} +5 -30
  5. package/dist/asset.js.map +1 -0
  6. package/dist/{core/cache.d.ts → cache.d.ts} +17 -19
  7. package/dist/cache.d.ts.map +1 -0
  8. package/dist/{core/cache.js → cache.js} +5 -43
  9. package/dist/cache.js.map +1 -0
  10. package/dist/canvas.d.ts +4 -0
  11. package/dist/canvas.d.ts.map +1 -0
  12. package/dist/canvas.js +12 -0
  13. package/dist/canvas.js.map +1 -0
  14. package/dist/el.d.ts +6 -0
  15. package/dist/el.d.ts.map +1 -0
  16. package/dist/el.js +7 -0
  17. package/dist/el.js.map +1 -0
  18. package/dist/event.d.ts.map +1 -0
  19. package/dist/event.js.map +1 -0
  20. package/dist/hg.d.ts +13 -12
  21. package/dist/hg.d.ts.map +1 -1
  22. package/dist/hg.js +14 -13
  23. package/dist/hg.js.map +1 -1
  24. package/dist/index.d.ts +24 -0
  25. package/dist/index.d.ts.map +1 -0
  26. package/dist/index.js +40 -0
  27. package/dist/index.js.map +1 -0
  28. package/dist/matrix2.d.ts +152 -0
  29. package/dist/matrix2.d.ts.map +1 -0
  30. package/dist/matrix2.js +262 -0
  31. package/dist/matrix2.js.map +1 -0
  32. package/dist/matrix3.d.ts +196 -0
  33. package/dist/matrix3.d.ts.map +1 -0
  34. package/dist/matrix3.js +352 -0
  35. package/dist/matrix3.js.map +1 -0
  36. package/dist/matrix4.d.ts +253 -0
  37. package/dist/matrix4.d.ts.map +1 -0
  38. package/dist/matrix4.js +465 -0
  39. package/dist/matrix4.js.map +1 -0
  40. package/dist/{core/scene.d.ts → scene.d.ts} +2 -3
  41. package/dist/scene.d.ts.map +1 -0
  42. package/dist/scene.js.map +1 -0
  43. package/dist/sprite.d.ts +24 -0
  44. package/dist/sprite.d.ts.map +1 -0
  45. package/dist/sprite.js +49 -0
  46. package/dist/sprite.js.map +1 -0
  47. package/dist/stage.d.ts +100 -0
  48. package/dist/stage.d.ts.map +1 -0
  49. package/dist/stage.js +303 -0
  50. package/dist/stage.js.map +1 -0
  51. package/dist/vector2.d.ts +114 -0
  52. package/dist/vector2.d.ts.map +1 -0
  53. package/dist/vector2.js +168 -0
  54. package/dist/vector2.js.map +1 -0
  55. package/dist/vector3.d.ts +126 -0
  56. package/dist/vector3.d.ts.map +1 -0
  57. package/dist/vector3.js +190 -0
  58. package/dist/vector3.js.map +1 -0
  59. package/dist/vector4.d.ts +135 -0
  60. package/dist/vector4.d.ts.map +1 -0
  61. package/dist/vector4.js +209 -0
  62. package/dist/vector4.js.map +1 -0
  63. package/dist/version.d.ts.map +1 -0
  64. package/dist/version.js.map +1 -0
  65. package/package.json +1 -1
  66. package/dist/core/asset.d.ts +0 -71
  67. package/dist/core/asset.d.ts.map +0 -1
  68. package/dist/core/asset.js.map +0 -1
  69. package/dist/core/cache.d.ts.map +0 -1
  70. package/dist/core/cache.js.map +0 -1
  71. package/dist/core/event.d.ts.map +0 -1
  72. package/dist/core/event.js.map +0 -1
  73. package/dist/core/scene.d.ts.map +0 -1
  74. package/dist/core/scene.js.map +0 -1
  75. package/dist/core/stage.d.ts +0 -130
  76. package/dist/core/stage.d.ts.map +0 -1
  77. package/dist/core/stage.js +0 -308
  78. package/dist/core/stage.js.map +0 -1
  79. package/dist/math/index.d.ts +0 -6
  80. package/dist/math/index.d.ts.map +0 -1
  81. package/dist/math/index.js +0 -6
  82. package/dist/math/index.js.map +0 -1
  83. package/dist/math/matrix2.d.ts +0 -58
  84. package/dist/math/matrix2.d.ts.map +0 -1
  85. package/dist/math/matrix2.js +0 -178
  86. package/dist/math/matrix2.js.map +0 -1
  87. package/dist/math/matrix3.d.ts +0 -92
  88. package/dist/math/matrix3.d.ts.map +0 -1
  89. package/dist/math/matrix3.js +0 -255
  90. package/dist/math/matrix3.js.map +0 -1
  91. package/dist/math/matrix4.d.ts +0 -138
  92. package/dist/math/matrix4.d.ts.map +0 -1
  93. package/dist/math/matrix4.js +0 -352
  94. package/dist/math/matrix4.js.map +0 -1
  95. package/dist/math/vector2.d.ts +0 -38
  96. package/dist/math/vector2.d.ts.map +0 -1
  97. package/dist/math/vector2.js +0 -67
  98. package/dist/math/vector2.js.map +0 -1
  99. package/dist/math/vector3.d.ts +0 -34
  100. package/dist/math/vector3.d.ts.map +0 -1
  101. package/dist/math/vector3.js +0 -74
  102. package/dist/math/vector3.js.map +0 -1
  103. package/dist/math/vector4.d.ts +0 -39
  104. package/dist/math/vector4.d.ts.map +0 -1
  105. package/dist/math/vector4.js +0 -81
  106. package/dist/math/vector4.js.map +0 -1
  107. package/dist/util/types.d.ts +0 -2
  108. package/dist/util/types.d.ts.map +0 -1
  109. package/dist/util/types.js +0 -2
  110. package/dist/util/types.js.map +0 -1
  111. package/dist/util/version.d.ts.map +0 -1
  112. package/dist/util/version.js.map +0 -1
  113. /package/dist/{core/event.d.ts → event.d.ts} +0 -0
  114. /package/dist/{core/event.js → event.js} +0 -0
  115. /package/dist/{core/scene.js → scene.js} +0 -0
  116. /package/dist/{util/version.d.ts → version.d.ts} +0 -0
  117. /package/dist/{util/version.js → version.js} +0 -0
@@ -0,0 +1,465 @@
1
+ import { Vector4 } from "./vector4.js";
2
+ import { add, sub, mul, div, mod } from "./el.js";
3
+ export const Matrix4 = {
4
+ /** Constant index for the xx-component of a Matrix4 */
5
+ XX: 0,
6
+ /** Constant index for the xy-component of a Matrix4 */
7
+ XY: 1,
8
+ /** Constant index for the xz-component of a Matrix4 */
9
+ XZ: 2,
10
+ /** Constant index for the xw-component of a Matrix4 */
11
+ XW: 3,
12
+ /** Constant index for the yx-component of a Matrix4 */
13
+ YX: 4,
14
+ /** Constant index for the yy-component of a Matrix4 */
15
+ YY: 5,
16
+ /** Constant index for the yz-component of a Matrix4 */
17
+ YZ: 6,
18
+ /** Constant index for the yw-component of a Matrix4 */
19
+ YW: 7,
20
+ /** Constant index for the zx-component of a Matrix4 */
21
+ ZX: 8,
22
+ /** Constant index for the zy-component of a Matrix4 */
23
+ ZY: 9,
24
+ /** Constant index for the zz-component of a Matrix4 */
25
+ ZZ: 10,
26
+ /** Constant index for the zw-component of a Matrix4 */
27
+ ZW: 11,
28
+ /** Constant index for the wx-component of a Matrix4 */
29
+ WX: 12,
30
+ /** Constant index for the wy-component of a Matrix4 */
31
+ WY: 13,
32
+ /** Constant index for the wz-component of a Matrix4 */
33
+ WZ: 14,
34
+ /** Constant index for the ww-component of a Matrix4 */
35
+ WW: 15,
36
+ /** A collection of getters for Matrix4 objects */
37
+ Get: {
38
+ /** Get the xx-component of a Matrix4 */
39
+ xx(a) { return a[Matrix4.XX]; },
40
+ /** Get the xy-component of a Matrix4 */
41
+ xy(a) { return a[Matrix4.XY]; },
42
+ /** Get the xz-component of a Matrix4 */
43
+ xz(a) { return a[Matrix4.XZ]; },
44
+ /** Get the xw-component of a Matrix4 */
45
+ xw(a) { return a[Matrix4.XW]; },
46
+ /** Get the yx-component of a Matrix4 */
47
+ yx(a) { return a[Matrix4.YX]; },
48
+ /** Get the yy-component of a Matrix4 */
49
+ yy(a) { return a[Matrix4.YY]; },
50
+ /** Get the yz-component of a Matrix4 */
51
+ yz(a) { return a[Matrix4.YZ]; },
52
+ /** Get the yw-component of a Matrix4 */
53
+ yw(a) { return a[Matrix4.YW]; },
54
+ /** Get the zx-component of a Matrix4 */
55
+ zx(a) { return a[Matrix4.ZX]; },
56
+ /** Get the zy-component of a Matrix4 */
57
+ zy(a) { return a[Matrix4.ZY]; },
58
+ /** Get the zz-component of a Matrix4 */
59
+ zz(a) { return a[Matrix4.ZZ]; },
60
+ /** Get the zw-component of a Matrix4 */
61
+ zw(a) { return a[Matrix4.ZW]; },
62
+ /** Get the wx-component of a Matrix4 */
63
+ wx(a) { return a[Matrix4.WX]; },
64
+ /** Get the wy-component of a Matrix4 */
65
+ wy(a) { return a[Matrix4.WY]; },
66
+ /** Get the wz-component of a Matrix4 */
67
+ wz(a) { return a[Matrix4.WZ]; },
68
+ /** Get the ww-component of a Matrix4 */
69
+ ww(a) { return a[Matrix4.WW]; },
70
+ /** Get the 0th row of a Matrix4 as a Vector4 */
71
+ r0(a) {
72
+ return [
73
+ a[Matrix4.XX],
74
+ a[Matrix4.XY],
75
+ a[Matrix4.XZ],
76
+ a[Matrix4.XW]
77
+ ];
78
+ },
79
+ /** Get the 1st row of a Matrix4 as a Vector4 */
80
+ r1(a) {
81
+ return [
82
+ a[Matrix4.YX],
83
+ a[Matrix4.YY],
84
+ a[Matrix4.YZ],
85
+ a[Matrix4.YW]
86
+ ];
87
+ },
88
+ /** Get the 2nd row of a Matrix4 as a Vector4 */
89
+ r2(a) {
90
+ return [
91
+ a[Matrix4.ZX],
92
+ a[Matrix4.ZY],
93
+ a[Matrix4.ZZ],
94
+ a[Matrix4.ZW]
95
+ ];
96
+ },
97
+ /** Get the 3rd row of a Matrix4 as a Vector4 */
98
+ r3(a) {
99
+ return [
100
+ a[Matrix4.WX],
101
+ a[Matrix4.WY],
102
+ a[Matrix4.WZ],
103
+ a[Matrix4.WW]
104
+ ];
105
+ },
106
+ /** Get the i-th row of a Matrix4 as a Vector4 */
107
+ row(a, i) {
108
+ switch (i) {
109
+ case 0: return Matrix4.Get.r0(a);
110
+ case 1: return Matrix4.Get.r1(a);
111
+ case 2: return Matrix4.Get.r2(a);
112
+ case 3: return Matrix4.Get.r3(a);
113
+ }
114
+ },
115
+ /** Get the 0th column of a Matrix4 as a Vector4 */
116
+ c0(a) {
117
+ return [
118
+ a[Matrix4.XX],
119
+ a[Matrix4.YX],
120
+ a[Matrix4.ZX],
121
+ a[Matrix4.WX]
122
+ ];
123
+ },
124
+ /** Get the 1st column of a Matrix4 as a Vector4 */
125
+ c1(a) {
126
+ return [
127
+ a[Matrix4.XY],
128
+ a[Matrix4.YY],
129
+ a[Matrix4.ZY],
130
+ a[Matrix4.WY]
131
+ ];
132
+ },
133
+ /** Get the 2nd column of a Matrix4 as a Vector4 */
134
+ c2(a) {
135
+ return [
136
+ a[Matrix4.XZ],
137
+ a[Matrix4.YZ],
138
+ a[Matrix4.ZZ],
139
+ a[Matrix4.WZ]
140
+ ];
141
+ },
142
+ /** Get the 3rd column of a Matrix4 as a Vector4 */
143
+ c3(a) {
144
+ return [
145
+ a[Matrix4.XW],
146
+ a[Matrix4.YW],
147
+ a[Matrix4.ZW],
148
+ a[Matrix4.WW]
149
+ ];
150
+ },
151
+ /** Get the j-th column of a Matrix4 as a Vector4 */
152
+ col(a, j) {
153
+ switch (j) {
154
+ case 0: return Matrix4.Get.c0(a);
155
+ case 1: return Matrix4.Get.c1(a);
156
+ case 2: return Matrix4.Get.c2(a);
157
+ case 3: return Matrix4.Get.c3(a);
158
+ }
159
+ },
160
+ },
161
+ /** A collection of setters for Matrix4 objects */
162
+ Set: {
163
+ /** Set the xx-component of a Matrix4 */
164
+ xx(a, xx) { return a[Matrix4.XX] = xx; },
165
+ /** Set the xy-component of a Matrix4 */
166
+ xy(a, xy) { return a[Matrix4.XY] = xy; },
167
+ /** Set the xz-component of a Matrix4 */
168
+ xz(a, xz) { return a[Matrix4.XZ] = xz; },
169
+ /** Set the xw-component of a Matrix4 */
170
+ xw(a, xw) { return a[Matrix4.XW] = xw; },
171
+ /** Set the yx-component of a Matrix4 */
172
+ yx(a, yx) { return a[Matrix4.YX] = yx; },
173
+ /** Set the yy-component of a Matrix4 */
174
+ yy(a, yy) { return a[Matrix4.YY] = yy; },
175
+ /** Set the yz-component of a Matrix4 */
176
+ yz(a, yz) { return a[Matrix4.YZ] = yz; },
177
+ /** Set the yw-component of a Matrix4 */
178
+ yw(a, yw) { return a[Matrix4.YW] = yw; },
179
+ /** Set the zx-component of a Matrix4 */
180
+ zx(a, zx) { return a[Matrix4.ZX] = zx; },
181
+ /** Set the zy-component of a Matrix4 */
182
+ zy(a, zy) { return a[Matrix4.ZY] = zy; },
183
+ /** Set the zz-component of a Matrix4 */
184
+ zz(a, zz) { return a[Matrix4.ZZ] = zz; },
185
+ /** Set the zw-component of a Matrix4 */
186
+ zw(a, zw) { return a[Matrix4.ZW] = zw; },
187
+ /** Set the wx-component of a Matrix4 */
188
+ wx(a, wx) { return a[Matrix4.WX] = wx; },
189
+ /** Set the wy-component of a Matrix4 */
190
+ wy(a, wy) { return a[Matrix4.WY] = wy; },
191
+ /** Set the wz-component of a Matrix4 */
192
+ wz(a, wz) { return a[Matrix4.WZ] = wz; },
193
+ /** Set the ww-component of a Matrix4 */
194
+ ww(a, ww) { return a[Matrix4.WW] = ww; },
195
+ /** Set the 0th row of a Matrix4 */
196
+ r0(a, [xx, xy, xz, xw]) {
197
+ a[Matrix4.XX] = xx;
198
+ a[Matrix4.XY] = xy;
199
+ a[Matrix4.XZ] = xz;
200
+ a[Matrix4.XW] = xw;
201
+ return [xx, xy, xz, xw];
202
+ },
203
+ /** Set the 1st row of a Matrix4 */
204
+ r1(a, [yx, yy, yz, yw]) {
205
+ a[Matrix4.YX] = yx;
206
+ a[Matrix4.YY] = yy;
207
+ a[Matrix4.YZ] = yz;
208
+ a[Matrix4.YW] = yw;
209
+ return [yx, yy, yz, yw];
210
+ },
211
+ /** Set the 2nd row of a Matrix4 */
212
+ r2(a, [zx, zy, zz, zw]) {
213
+ a[Matrix4.ZX] = zx;
214
+ a[Matrix4.ZY] = zy;
215
+ a[Matrix4.ZZ] = zz;
216
+ a[Matrix4.ZW] = zw;
217
+ return [zx, zy, zz, zw];
218
+ },
219
+ /** Set the 3rd row of a Matrix4 */
220
+ r3(a, [wx, wy, wz, ww]) {
221
+ a[Matrix4.WX] = wx;
222
+ a[Matrix4.WY] = wy;
223
+ a[Matrix4.WZ] = wz;
224
+ a[Matrix4.WW] = ww;
225
+ return [wx, wy, wz, ww];
226
+ },
227
+ /** Set the i-th row of a Matrix4 */
228
+ row(a, i, ri) {
229
+ switch (i) {
230
+ case 0: return Matrix4.Set.r0(a, ri);
231
+ case 1: return Matrix4.Set.r1(a, ri);
232
+ case 2: return Matrix4.Set.r2(a, ri);
233
+ case 3: return Matrix4.Set.r3(a, ri);
234
+ }
235
+ },
236
+ /** Set the 0th column of a Matrix4 */
237
+ c0(a, [xx, yx, zx, wx]) {
238
+ a[Matrix4.XX] = xx;
239
+ a[Matrix4.YX] = yx;
240
+ a[Matrix4.ZX] = zx;
241
+ a[Matrix4.WX] = wx;
242
+ return [xx, yx, zx, wx];
243
+ },
244
+ /** Set the 1st column of a Matrix4 */
245
+ c1(a, [xy, yy, zy, wy]) {
246
+ a[Matrix4.XY] = xy;
247
+ a[Matrix4.YY] = yy;
248
+ a[Matrix4.ZY] = zy;
249
+ a[Matrix4.WY] = wy;
250
+ return [xy, yy, zy, wy];
251
+ },
252
+ /** Set the 2nd column of a Matrix4 */
253
+ c2(a, [xz, yz, zz, wz]) {
254
+ a[Matrix4.XZ] = xz;
255
+ a[Matrix4.YZ] = yz;
256
+ a[Matrix4.ZZ] = zz;
257
+ a[Matrix4.WZ] = wz;
258
+ return [xz, yz, zz, wz];
259
+ },
260
+ /** Set the 3rd column of a Matrix4 */
261
+ c3(a, [xw, yw, zw, ww]) {
262
+ a[Matrix4.XW] = xw;
263
+ a[Matrix4.YW] = yw;
264
+ a[Matrix4.ZW] = zw;
265
+ a[Matrix4.WW] = ww;
266
+ return [xw, yw, zw, ww];
267
+ },
268
+ /** Set the j-th column of a Matrix4 */
269
+ col(a, j, cj) {
270
+ switch (j) {
271
+ case 0: return Matrix4.Set.c0(a, cj);
272
+ case 1: return Matrix4.Set.c1(a, cj);
273
+ case 2: return Matrix4.Set.c2(a, cj);
274
+ case 3: return Matrix4.Set.c3(a, cj);
275
+ }
276
+ },
277
+ },
278
+ /** Construct an identity Matrix4 with an optional scale factor */
279
+ id(a = 1) {
280
+ return [
281
+ a, 0, 0, 0,
282
+ 0, a, 0, 0,
283
+ 0, 0, a, 0,
284
+ 0, 0, 0, a
285
+ ];
286
+ },
287
+ /**
288
+ * Construct a Matrix4 from a variadic array of numbers.
289
+ *
290
+ * Constructs a uniform Matrix4 when `a.length === 1`
291
+ * ```js
292
+ * Matrix4.new(1) // [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1]
293
+ * ```
294
+ *
295
+ * Otherwise constructs a standard zero-padded row-major Matrix4
296
+ * ```js
297
+ * Matrix4.new( ) // [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
298
+ * Matrix4.new(1, 2 ) // [1, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
299
+ * Matrix4.new(1, 2, 3, 4) // [1, 2, 3, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
300
+ * ```
301
+ */
302
+ new(...a) {
303
+ if (a.length === 1)
304
+ return [
305
+ a[Matrix4.XX], a[Matrix4.XX], a[Matrix4.XX], a[Matrix4.XX],
306
+ a[Matrix4.XX], a[Matrix4.XX], a[Matrix4.XX], a[Matrix4.XX],
307
+ a[Matrix4.XX], a[Matrix4.XX], a[Matrix4.XX], a[Matrix4.XX],
308
+ a[Matrix4.XX], a[Matrix4.XX], a[Matrix4.XX], a[Matrix4.XX]
309
+ ];
310
+ else
311
+ return [
312
+ a[Matrix4.XX] ?? 0, a[Matrix4.XY] ?? 0, a[Matrix4.XZ] ?? 0, a[Matrix4.XW] ?? 0,
313
+ a[Matrix4.YX] ?? 0, a[Matrix4.YY] ?? 0, a[Matrix4.YZ] ?? 0, a[Matrix4.YW] ?? 0,
314
+ a[Matrix4.ZX] ?? 0, a[Matrix4.ZY] ?? 0, a[Matrix4.ZZ] ?? 0, a[Matrix4.ZW] ?? 0,
315
+ a[Matrix4.WX] ?? 0, a[Matrix4.WY] ?? 0, a[Matrix4.WZ] ?? 0, a[Matrix4.WW] ?? 0
316
+ ];
317
+ },
318
+ /**
319
+ * Constructs a Matrix4 from a number or an array of numbers.
320
+ *
321
+ * Constructs a uniform Matrix4 when `a` is a number
322
+ * ```js
323
+ * Matrix4.from(1) // [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1]
324
+ * ```
325
+ *
326
+ * Otherwise constructs a standard zero-padded Matrix4
327
+ * ```js
328
+ * Matrix4.from([ ]) // [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
329
+ * Matrix4.from([1 ]) // [1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
330
+ * Matrix4.from([1, 2 ]) // [1, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
331
+ * Matrix4.from([1, 2, 3, 4]) // [1, 2, 3, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
332
+ * ```
333
+ */
334
+ from(a) {
335
+ if (typeof a === "number")
336
+ return [
337
+ a, a, a, a,
338
+ a, a, a, a,
339
+ a, a, a, a,
340
+ a, a, a, a
341
+ ];
342
+ else
343
+ return [
344
+ a[Matrix4.XX] ?? 0, a[Matrix4.XY] ?? 0, a[Matrix4.XZ] ?? 0, a[Matrix4.XW] ?? 0,
345
+ a[Matrix4.YX] ?? 0, a[Matrix4.YY] ?? 0, a[Matrix4.YZ] ?? 0, a[Matrix4.YW] ?? 0,
346
+ a[Matrix4.ZX] ?? 0, a[Matrix4.ZY] ?? 0, a[Matrix4.ZZ] ?? 0, a[Matrix4.ZW] ?? 0,
347
+ a[Matrix4.WX] ?? 0, a[Matrix4.WY] ?? 0, a[Matrix4.WZ] ?? 0, a[Matrix4.WW] ?? 0
348
+ ];
349
+ },
350
+ /**
351
+ * Perform an element-wise operation on two Matrix4 objects.
352
+ * Number-like arguments are promoted to uniform Matrix4 objects
353
+ * before performing the operation. Constructs a new Matrix4 when an
354
+ * output argument is not provided.
355
+ */
356
+ el(op, a, b, out = Matrix4.new()) {
357
+ const [xxa, xya, xza, xwa, yxa, yya, yza, ywa, zxa, zya, zza, zwa, wxa, wya, wza, wwa] = Matrix4.from(a);
358
+ const [xxb, xyb, xzb, xwb, yxb, yyb, yzb, ywb, zxb, zyb, zzb, zwb, wxb, wyb, wzb, wwb] = Matrix4.from(b);
359
+ Matrix4.Set.xx(out, op(xxa, xxb));
360
+ Matrix4.Set.xy(out, op(xya, xyb));
361
+ Matrix4.Set.xz(out, op(xza, xzb));
362
+ Matrix4.Set.xw(out, op(xwa, xwb));
363
+ Matrix4.Set.yx(out, op(yxa, yxb));
364
+ Matrix4.Set.yy(out, op(yya, yyb));
365
+ Matrix4.Set.yz(out, op(yza, yzb));
366
+ Matrix4.Set.yw(out, op(ywa, ywb));
367
+ Matrix4.Set.zx(out, op(zxa, zxb));
368
+ Matrix4.Set.zy(out, op(zya, zyb));
369
+ Matrix4.Set.zz(out, op(zza, zzb));
370
+ Matrix4.Set.zw(out, op(zwa, zwb));
371
+ Matrix4.Set.wx(out, op(wxa, wxb));
372
+ Matrix4.Set.wy(out, op(wya, wyb));
373
+ Matrix4.Set.wz(out, op(wza, wzb));
374
+ Matrix4.Set.ww(out, op(wwa, wwb));
375
+ return out;
376
+ },
377
+ /**
378
+ * Compute the sum of two Matrix4 objects. Number-like arguments are
379
+ * promoted to uniform Matrix4 objects before performing the operation.
380
+ * Constructs a new Matrix4 when an output argument is not provided.
381
+ */
382
+ add(a, b, out = Matrix4.new()) {
383
+ return Matrix4.el(add, a, b, out);
384
+ },
385
+ /**
386
+ * Compute the difference of two Matrix4 objects. Number-like arguments
387
+ * are promoted to uniform Matrix4 objects before performing the
388
+ * operation. Constructs a new Matrix4 when an output argument is not
389
+ * provided.
390
+ */
391
+ sub(a, b, out = Matrix4.new()) {
392
+ return Matrix4.el(sub, a, b, out);
393
+ },
394
+ /**
395
+ * Compute the hadamard (element-wise) product of two Matrix4 objects.
396
+ * Number-like arguments are promoted to uniform Matrix4 objects before
397
+ * performing the operation. Constructs a new Matrix4 when an output
398
+ * argument is not provided.
399
+ */
400
+ hmul(a, b, out = Matrix4.new()) {
401
+ return Matrix4.el(mul, a, b, out);
402
+ },
403
+ /**
404
+ * Compute the hadamard (element-wise) quotient of two Matrix4 objects.
405
+ * Number-like arguments are promoted to uniform Matrix4 objects before
406
+ * performing the operation. Constructs a new Matrix4 when an output
407
+ * argument is not provided.
408
+ */
409
+ hdiv(a, b, out = Matrix4.new()) {
410
+ return Matrix4.el(div, a, b, out);
411
+ },
412
+ /**
413
+ * Compute the hadamard (element-wise) remainder of two Matrix4 objects.
414
+ * Number-like arguments are promoted to uniform Matrix4 objects before
415
+ * performing the operation. Constructs a new Matrix4 when an output
416
+ * argument is not provided.
417
+ */
418
+ hmod(a, b, out = Matrix4.new()) {
419
+ return Matrix4.el(mod, a, b, out);
420
+ },
421
+ /**
422
+ * Compute the standard product of two Matrix4 objects. Number-like arguments are
423
+ * promoted to uniform Matrix4 objects before performing the operation.
424
+ * Constructs a new Matrix4 when an output argument is not provided.
425
+ */
426
+ mul(a, b, out = Matrix4.new()) {
427
+ const A = Matrix4.from(a);
428
+ const B = Matrix4.from(b);
429
+ const r0 = Matrix4.Get.r0(A);
430
+ const r1 = Matrix4.Get.r1(A);
431
+ const r2 = Matrix4.Get.r2(A);
432
+ const r3 = Matrix4.Get.r3(A);
433
+ const c0 = Matrix4.Get.c0(B);
434
+ const c1 = Matrix4.Get.c1(B);
435
+ const c2 = Matrix4.Get.c2(B);
436
+ const c3 = Matrix4.Get.c3(B);
437
+ Matrix4.Set.xx(out, Vector4.dot(r0, c0));
438
+ Matrix4.Set.xy(out, Vector4.dot(r0, c1));
439
+ Matrix4.Set.xz(out, Vector4.dot(r0, c2));
440
+ Matrix4.Set.xw(out, Vector4.dot(r0, c3));
441
+ Matrix4.Set.yx(out, Vector4.dot(r1, c0));
442
+ Matrix4.Set.yy(out, Vector4.dot(r1, c1));
443
+ Matrix4.Set.yz(out, Vector4.dot(r1, c2));
444
+ Matrix4.Set.yw(out, Vector4.dot(r1, c3));
445
+ Matrix4.Set.zx(out, Vector4.dot(r2, c0));
446
+ Matrix4.Set.zy(out, Vector4.dot(r2, c1));
447
+ Matrix4.Set.zz(out, Vector4.dot(r2, c2));
448
+ Matrix4.Set.zw(out, Vector4.dot(r2, c3));
449
+ Matrix4.Set.wx(out, Vector4.dot(r3, c0));
450
+ Matrix4.Set.wy(out, Vector4.dot(r3, c1));
451
+ Matrix4.Set.wz(out, Vector4.dot(r3, c2));
452
+ Matrix4.Set.ww(out, Vector4.dot(r3, c3));
453
+ return out;
454
+ },
455
+ /**
456
+ * Convert a Matrix4 into its string representation.
457
+ * ```js
458
+ * Matrix4.toString([1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16]) // "mat4<1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16>"
459
+ * ```
460
+ */
461
+ toString([xx, xy, xz, xw, yx, yy, yz, yw, zx, zy, zz, zw, wx, wy, wz, ww]) {
462
+ return `mat4<${xx}, ${xy}, ${xz}, ${xw}, ${yx}, ${yy}, ${yz}, ${yw}, ${zx}, ${zy}, ${zz}, ${zw}, ${wx}, ${wy}, ${wz}, ${ww}>`;
463
+ }
464
+ };
465
+ //# sourceMappingURL=matrix4.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"matrix4.js","sourceRoot":"","sources":["../src/matrix4.ts"],"names":[],"mappings":"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,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;QAC1G,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,CAAA;QACjC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,CAAA;QACjC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,CAAA;QACjC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,CAAA;QACjC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,CAAA;QACjC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,CAAA;QACjC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,CAAA;QACjC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,CAAA;QACjC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,CAAA;QACjC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,CAAA;QACjC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,CAAA;QACjC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,CAAA;QACjC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,CAAA;QACjC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,CAAA;QACjC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,CAAA;QACjC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,CAAA;QACjC,OAAO,GAAG,CAAA;IACZ,CAAC;IAED;;;;OAIG;IACH,GAAG,CAAC,CAAmB,EAAE,CAAmB,EAAE,MAAe,OAAO,CAAC,GAAG,EAAE;QACxE,OAAO,OAAO,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,CAAA;IACnC,CAAC;IAED;;;;;OAKG;IACH,GAAG,CAAC,CAAmB,EAAE,CAAmB,EAAE,MAAe,OAAO,CAAC,GAAG,EAAE;QACxE,OAAO,OAAO,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,CAAA;IACnC,CAAC;IAED;;;;;OAKG;IACH,IAAI,CAAC,CAAmB,EAAE,CAAmB,EAAE,MAAe,OAAO,CAAC,GAAG,EAAE;QACzE,OAAO,OAAO,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,CAAA;IACnC,CAAC;IAED;;;;;OAKG;IACH,IAAI,CAAC,CAAmB,EAAE,CAAmB,EAAE,MAAe,OAAO,CAAC,GAAG,EAAE;QACzE,OAAO,OAAO,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,CAAA;IACnC,CAAC;IAED;;;;;OAKG;IACH,IAAI,CAAC,CAAmB,EAAE,CAAmB,EAAE,MAAe,OAAO,CAAC,GAAG,EAAE;QACzE,OAAO,OAAO,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,CAAA;IACnC,CAAC;IAED;;;;OAIG;IACH,GAAG,CAAC,CAAmB,EAAE,CAAmB,EAAE,MAAe,OAAO,CAAC,GAAG,EAAE;QACxE,MAAM,CAAC,GAAI,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;QAC1B,MAAM,CAAC,GAAI,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;QAC1B,MAAM,EAAE,GAAG,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAA;QAC5B,MAAM,EAAE,GAAG,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAA;QAC5B,MAAM,EAAE,GAAG,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAA;QAC5B,MAAM,EAAE,GAAG,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAA;QAC5B,MAAM,EAAE,GAAG,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAA;QAC5B,MAAM,EAAE,GAAG,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAA;QAC5B,MAAM,EAAE,GAAG,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAA;QAC5B,MAAM,EAAE,GAAG,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAA;QAC5B,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,OAAO,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,CAAA;QACxC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,OAAO,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,CAAA;QACxC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,OAAO,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,CAAA;QACxC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,OAAO,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,CAAA;QACxC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,OAAO,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,CAAA;QACxC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,OAAO,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,CAAA;QACxC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,OAAO,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,CAAA;QACxC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,OAAO,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,CAAA;QACxC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,OAAO,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,CAAA;QACxC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,OAAO,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,CAAA;QACxC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,OAAO,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,CAAA;QACxC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,OAAO,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,CAAA;QACxC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,OAAO,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,CAAA;QACxC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,OAAO,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,CAAA;QACxC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,OAAO,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,CAAA;QACxC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,OAAO,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,CAAA;QACxC,OAAO,GAAG,CAAA;IACZ,CAAC;IAED;;;;;OAKG;IACH,QAAQ,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAW;QACjF,OAAO,QAAQ,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,GAAY,CAAA;IACxI,CAAC;CACF,CAAA"}
@@ -1,4 +1,3 @@
1
- import type { Maybe } from "../util/types.js";
2
1
  import type { Stage } from "./stage.js";
3
2
  export type Scene = {
4
3
  doUpdate?: boolean;
@@ -28,7 +27,7 @@ export declare namespace Scene {
28
27
  };
29
28
  }
30
29
  export declare const Scene: {
31
- doesUpdate(a: Maybe<Scene>): a is Scene.DoesUpdate;
32
- doesRender(a: Maybe<Scene>): a is Scene.Renderable;
30
+ doesUpdate(a: Scene | undefined): a is Scene.DoesUpdate;
31
+ doesRender(a: Scene | undefined): a is Scene.Renderable;
33
32
  };
34
33
  //# sourceMappingURL=scene.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"scene.d.ts","sourceRoot":"","sources":["../src/scene.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,YAAY,CAAA;AAEvC,MAAM,MAAM,KAAK,GAAG;IAClB,QAAS,CAAC,EAAE,OAAO,CAAA;IACnB,QAAS,CAAC,EAAE,OAAO,CAAA;IAEnB,QAAS,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,IAAI,CAAA;IAClC,QAAS,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,IAAI,CAAA;IAClC,QAAS,CAAC,EAAE,CAAC,OAAO,EAAE,KAAK,CAAC,aAAa,KAAK,IAAI,CAAA;IAClD,QAAS,CAAC,EAAE,CAAC,OAAO,EAAE,KAAK,CAAC,aAAa,KAAK,IAAI,CAAA;CACnD,CAAA;AAED,yBAAiB,KAAK,CAAC;IACrB,KAAY,aAAa,GAAG;QAC1B,KAAK,EAAE,KAAK,CAAA;QACZ,CAAC,EAAG,MAAM,CAAA;QACV,EAAE,EAAE,MAAM,CAAA;KACX,CAAA;IAED,KAAY,aAAa,GAAG;QAC1B,KAAK,EAAE,KAAK,CAAA;QACZ,CAAC,EAAG,MAAM,CAAA;QACV,EAAE,EAAE,MAAM,CAAA;QACV,CAAC,EAAG,iCAAiC,CAAA;KACtC,CAAA;IAED,KAAY,UAAU,GAAG;QACvB,QAAQ,CAAC,OAAO,EAAE,aAAa,GAAG,IAAI,CAAA;KACvC,CAAA;IAED,KAAY,UAAU,GAAG;QACvB,QAAQ,CAAC,OAAO,EAAE,aAAa,GAAG,IAAI,CAAA;KACvC,CAAA;CACF;AAED,eAAO,MAAM,KAAK;kBACF,KAAK,GAAG,SAAS,GAAG,CAAC,IAAI,KAAK,CAAC,UAAU;kBAIzC,KAAK,GAAG,SAAS,GAAG,CAAC,IAAI,KAAK,CAAC,UAAU;CAGxD,CAAA"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"scene.js","sourceRoot":"","sources":["../src/scene.ts"],"names":[],"mappings":"AAmCA,MAAM,CAAC,MAAM,KAAK,GAAG;IACnB,UAAU,CAAC,CAAoB;QAC7B,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,QAAQ,IAAI,IAAI,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,CAAA;IACpD,CAAC;IAED,UAAU,CAAC,CAAoB;QAC7B,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,QAAQ,IAAI,IAAI,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,CAAA;IACpD,CAAC;CACF,CAAA"}
@@ -0,0 +1,24 @@
1
+ import type { Scene } from "./scene.js";
2
+ export type Sprite = {
3
+ frames: Array<Sprite.Frame>;
4
+ atlas: HTMLImageElement;
5
+ state: number;
6
+ speed: number;
7
+ frame: number;
8
+ x: number;
9
+ y: number;
10
+ w: number;
11
+ h: number;
12
+ };
13
+ export declare namespace Sprite {
14
+ type Frame = {
15
+ sx: number;
16
+ sy: number;
17
+ sw: number;
18
+ sh: number;
19
+ };
20
+ }
21
+ export declare const Sprite: {
22
+ draw(context: Scene.RenderContext, sprite: Sprite): void;
23
+ };
24
+ //# sourceMappingURL=sprite.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sprite.d.ts","sourceRoot":"","sources":["../src/sprite.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,YAAY,CAAA;AAQvC,MAAM,MAAM,MAAM,GAAG;IACnB,MAAM,EAAE,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA;IAC3B,KAAK,EAAG,gBAAgB,CAAA;IACxB,KAAK,EAAG,MAAM,CAAC;IACf,KAAK,EAAG,MAAM,CAAC;IACf,KAAK,EAAG,MAAM,CAAC;IACf,CAAC,EAAE,MAAM,CAAC;IAAC,CAAC,EAAE,MAAM,CAAA;IACpB,CAAC,EAAE,MAAM,CAAC;IAAC,CAAC,EAAE,MAAM,CAAA;CACrB,CAAA;AAGD,yBAAiB,MAAM,CAAC;IACtB,KAAY,KAAK,GAAG;QAClB,EAAE,EAAE,MAAM,CAAC;QAAC,EAAE,EAAE,MAAM,CAAC;QACvB,EAAE,EAAE,MAAM,CAAC;QAAC,EAAE,EAAE,MAAM,CAAC;KACxB,CAAA;CACF;AAMD,eAAO,MAAM,MAAM;kBACH,KAAK,CAAC,aAAa,UAAU,MAAM;CAkDlD,CAAA"}
package/dist/sprite.js ADDED
@@ -0,0 +1,49 @@
1
+ const PLAYING = 1; // play once
2
+ const STOPPED = 0;
3
+ const LOOPING = -1;
4
+ function wrap(n, m) {
5
+ return (n % m + m) % m;
6
+ }
7
+ export const Sprite = {
8
+ draw(context, sprite) {
9
+ // if sprite is not stopped
10
+ if (sprite.state !== 0) {
11
+ // advance sprite frame
12
+ sprite.frame += sprite.speed * context.dt;
13
+ // if stepping forward
14
+ if (sprite.speed >= 0) {
15
+ // positive integer quotient (number of times frame has cross the frame boundary)
16
+ const loops = Math.floor(sprite.frame / sprite.frames.length);
17
+ // if sprite state is > 0 decrement but don't go below 0, else vanilla decrement
18
+ if (sprite.state > 0)
19
+ sprite.state = Math.max(sprite.state - loops, 0);
20
+ else
21
+ sprite.state = (sprite.state - loops);
22
+ // if sprite state is 0 then set frame to end, else wrap frame
23
+ if (sprite.state === 0)
24
+ sprite.frame = sprite.frames.length - 1;
25
+ else
26
+ sprite.frame = wrap(sprite.frame, sprite.frames.length);
27
+ // if stepping backward
28
+ }
29
+ else {
30
+ // negative integer quotient (number of times frame has cross the frame boundary)
31
+ const loops = Math.floor(sprite.frame / sprite.frames.length) - 1;
32
+ // if sprite state is < 0 decrement but don't go above 0, else vanilla decrement
33
+ if (sprite.state > 0)
34
+ sprite.state = Math.min(sprite.state + loops, 0);
35
+ else
36
+ sprite.state = (sprite.state + loops);
37
+ // if sprite state is 0 then set frame to start, else wrap frame
38
+ if (sprite.state === 0)
39
+ sprite.frame = 0;
40
+ else
41
+ sprite.frame = wrap(sprite.frame, sprite.frames.length);
42
+ }
43
+ }
44
+ // draw the sprite frame
45
+ const frame = sprite.frames[Math.floor(sprite.frame)];
46
+ context.g.drawImage(sprite.atlas, frame.sx, frame.sy, frame.sw, frame.sh, sprite.x, sprite.y, sprite.w, sprite.h);
47
+ }
48
+ };
49
+ //# sourceMappingURL=sprite.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sprite.js","sourceRoot":"","sources":["../src/sprite.ts"],"names":[],"mappings":"AAGA,MAAM,OAAO,GAAI,CAAC,CAAA,CAAC,YAAY;AAC/B,MAAM,OAAO,GAAI,CAAC,CAAA;AAClB,MAAM,OAAO,GAAG,CAAC,CAAC,CAAA;AAqBlB,SAAS,IAAI,CAAC,CAAS,EAAE,CAAS;IAChC,OAAO,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAA;AACxB,CAAC;AAED,MAAM,CAAC,MAAM,MAAM,GAAG;IACpB,IAAI,CAAC,OAA4B,EAAE,MAAc;QAC/C,2BAA2B;QAC3B,IAAI,MAAM,CAAC,KAAK,KAAK,CAAC,EAAE,CAAC;YACvB,uBAAuB;YACvB,MAAM,CAAC,KAAK,IAAI,MAAM,CAAC,KAAK,GAAG,OAAO,CAAC,EAAE,CAAA;YAEzC,sBAAsB;YACtB,IAAI,MAAM,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC;gBACtB,iFAAiF;gBACjF,MAAM,KAAK,GAAI,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,GAAG,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAA;gBAE9D,gFAAgF;gBAChF,IAAI,MAAM,CAAC,KAAK,GAAG,CAAC;oBAClB,MAAM,CAAC,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,KAAK,GAAG,KAAK,EAAE,CAAC,CAAC,CAAA;;oBAEhD,MAAM,CAAC,KAAK,GAAW,CAAC,MAAM,CAAC,KAAK,GAAG,KAAK,CAAI,CAAA;gBAElD,8DAA8D;gBAC9D,IAAI,MAAM,CAAC,KAAK,KAAK,CAAC;oBACpB,MAAM,CAAC,KAAK,GAAG,MAAM,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAA;;oBAEvC,MAAM,CAAC,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAA;gBAE3D,uBAAuB;YACvB,CAAC;iBAAsB,CAAC;gBACtB,iFAAiF;gBACjF,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,GAAG,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,CAAA;gBAEjE,gFAAgF;gBAChF,IAAI,MAAM,CAAC,KAAK,GAAG,CAAC;oBAClB,MAAM,CAAC,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,KAAK,GAAG,KAAK,EAAE,CAAC,CAAC,CAAA;;oBAEhD,MAAM,CAAC,KAAK,GAAW,CAAC,MAAM,CAAC,KAAK,GAAG,KAAK,CAAI,CAAA;gBAElD,gEAAgE;gBAChE,IAAI,MAAM,CAAC,KAAK,KAAK,CAAC;oBACpB,MAAM,CAAC,KAAK,GAAG,CAAC,CAAA;;oBAEhB,MAAM,CAAC,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAA;YAC3D,CAAC;QACH,CAAC;QAED,wBAAwB;QACxB,MAAM,KAAK,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAE,CAAA;QACtD,OAAO,CAAC,CAAC,CAAC,SAAS,CACjB,MAAM,CAAC,KAAK,EACZ,KAAK,CAAC,EAAE,EAAE,KAAK,CAAC,EAAE,EAAE,KAAK,CAAC,EAAE,EAAE,KAAK,CAAC,EAAE,EACtC,MAAM,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,CACvC,CAAA;IACH,CAAC;CACF,CAAA"}