@fi4f/hg 0.0.11 → 0.0.13

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 (124) 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 -7
  7. package/dist/cache.d.ts.map +1 -0
  8. package/dist/{core/cache.js → cache.js} +5 -6
  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.map +1 -0
  15. package/dist/el.js.map +1 -0
  16. package/dist/event.d.ts.map +1 -0
  17. package/dist/event.js.map +1 -0
  18. package/dist/hg.d.ts +13 -13
  19. package/dist/hg.d.ts.map +1 -1
  20. package/dist/hg.js +14 -14
  21. package/dist/hg.js.map +1 -1
  22. package/dist/index.d.ts +24 -0
  23. package/dist/index.d.ts.map +1 -0
  24. package/dist/index.js.map +1 -0
  25. package/dist/matrix2.d.ts +152 -0
  26. package/dist/matrix2.d.ts.map +1 -0
  27. package/dist/matrix2.js +262 -0
  28. package/dist/matrix2.js.map +1 -0
  29. package/dist/matrix3.d.ts +196 -0
  30. package/dist/matrix3.d.ts.map +1 -0
  31. package/dist/matrix3.js +352 -0
  32. package/dist/matrix3.js.map +1 -0
  33. package/dist/matrix4.d.ts +253 -0
  34. package/dist/matrix4.d.ts.map +1 -0
  35. package/dist/matrix4.js +465 -0
  36. package/dist/matrix4.js.map +1 -0
  37. package/dist/{core/scene.d.ts → scene.d.ts} +2 -3
  38. package/dist/scene.d.ts.map +1 -0
  39. package/dist/scene.js.map +1 -0
  40. package/dist/sprite.d.ts.map +1 -0
  41. package/dist/sprite.js.map +1 -0
  42. package/dist/stage.d.ts +100 -0
  43. package/dist/stage.d.ts.map +1 -0
  44. package/dist/stage.js +303 -0
  45. package/dist/stage.js.map +1 -0
  46. package/dist/vector2.d.ts +114 -0
  47. package/dist/vector2.d.ts.map +1 -0
  48. package/dist/vector2.js +168 -0
  49. package/dist/vector2.js.map +1 -0
  50. package/dist/vector3.d.ts +126 -0
  51. package/dist/vector3.d.ts.map +1 -0
  52. package/dist/vector3.js +190 -0
  53. package/dist/vector3.js.map +1 -0
  54. package/dist/vector4.d.ts +135 -0
  55. package/dist/vector4.d.ts.map +1 -0
  56. package/dist/vector4.js +209 -0
  57. package/dist/vector4.js.map +1 -0
  58. package/dist/version.d.ts.map +1 -0
  59. package/dist/version.js.map +1 -0
  60. package/package.json +1 -1
  61. package/dist/core/asset.d.ts +0 -71
  62. package/dist/core/asset.d.ts.map +0 -1
  63. package/dist/core/asset.js.map +0 -1
  64. package/dist/core/atlas.d.ts +0 -2
  65. package/dist/core/atlas.d.ts.map +0 -1
  66. package/dist/core/atlas.js +0 -2
  67. package/dist/core/atlas.js.map +0 -1
  68. package/dist/core/cache.d.ts.map +0 -1
  69. package/dist/core/cache.js.map +0 -1
  70. package/dist/core/event.d.ts.map +0 -1
  71. package/dist/core/event.js.map +0 -1
  72. package/dist/core/index.d.ts +0 -14
  73. package/dist/core/index.d.ts.map +0 -1
  74. package/dist/core/index.js.map +0 -1
  75. package/dist/core/scene.d.ts.map +0 -1
  76. package/dist/core/scene.js.map +0 -1
  77. package/dist/core/sprite.d.ts.map +0 -1
  78. package/dist/core/sprite.js.map +0 -1
  79. package/dist/core/stage.d.ts +0 -130
  80. package/dist/core/stage.d.ts.map +0 -1
  81. package/dist/core/stage.js +0 -308
  82. package/dist/core/stage.js.map +0 -1
  83. package/dist/math/el.d.ts.map +0 -1
  84. package/dist/math/el.js.map +0 -1
  85. package/dist/math/matrix2.d.ts +0 -70
  86. package/dist/math/matrix2.d.ts.map +0 -1
  87. package/dist/math/matrix2.js +0 -180
  88. package/dist/math/matrix2.js.map +0 -1
  89. package/dist/math/matrix3.d.ts +0 -108
  90. package/dist/math/matrix3.d.ts.map +0 -1
  91. package/dist/math/matrix3.js +0 -257
  92. package/dist/math/matrix3.js.map +0 -1
  93. package/dist/math/matrix4.d.ts +0 -158
  94. package/dist/math/matrix4.d.ts.map +0 -1
  95. package/dist/math/matrix4.js +0 -354
  96. package/dist/math/matrix4.js.map +0 -1
  97. package/dist/math/vector2.d.ts +0 -38
  98. package/dist/math/vector2.d.ts.map +0 -1
  99. package/dist/math/vector2.js +0 -67
  100. package/dist/math/vector2.js.map +0 -1
  101. package/dist/math/vector3.d.ts +0 -34
  102. package/dist/math/vector3.d.ts.map +0 -1
  103. package/dist/math/vector3.js +0 -74
  104. package/dist/math/vector3.js.map +0 -1
  105. package/dist/math/vector4.d.ts +0 -39
  106. package/dist/math/vector4.d.ts.map +0 -1
  107. package/dist/math/vector4.js +0 -81
  108. package/dist/math/vector4.js.map +0 -1
  109. package/dist/util/types.d.ts +0 -2
  110. package/dist/util/types.d.ts.map +0 -1
  111. package/dist/util/types.js +0 -2
  112. package/dist/util/types.js.map +0 -1
  113. package/dist/util/version.d.ts.map +0 -1
  114. package/dist/util/version.js.map +0 -1
  115. /package/dist/{math/el.d.ts → el.d.ts} +0 -0
  116. /package/dist/{math/el.js → el.js} +0 -0
  117. /package/dist/{core/event.d.ts → event.d.ts} +0 -0
  118. /package/dist/{core/event.js → event.js} +0 -0
  119. /package/dist/{core/index.js → index.js} +0 -0
  120. /package/dist/{core/scene.js → scene.js} +0 -0
  121. /package/dist/{core/sprite.d.ts → sprite.d.ts} +0 -0
  122. /package/dist/{core/sprite.js → sprite.js} +0 -0
  123. /package/dist/{util/version.d.ts → version.d.ts} +0 -0
  124. /package/dist/{util/version.js → version.js} +0 -0
@@ -1,308 +0,0 @@
1
- import { Event } from "./event.js";
2
- import { Scene } from "./scene.js";
3
- import { Vector2 } from "../math/vector2.js";
4
- const FRAME_INFO = "stage:frame-info";
5
- const UPDATE_INFO = "stage:update-info";
6
- const RENDER_INFO = "stage:render-info";
7
- const CANVAS_INFO = "stage:canvas-info";
8
- // events
9
- const RESIZE = "stage:resize";
10
- const CHANGE = "stage:change";
11
- export const Stage = {
12
- RESIZE, CHANGE,
13
- new(c, o) {
14
- const configureDebug = o?.debug ?? false;
15
- const configureW = o?.w ?? 0;
16
- const configureH = o?.h ?? 0;
17
- const configureUpdatesPerSecond = o?.ups ?? 0;
18
- const configureRendersPerSecond = o?.rps ?? 0;
19
- const configureLogicalBackground = o?.lbg ?? "#000";
20
- const configureVirtualBackground = o?.vbg ?? "#fff";
21
- const configureScaleIncrement = o?.si;
22
- const configureImageSmoothing = o?.is;
23
- const logicalCanvasElement = c;
24
- const virtualCanvasElement = new OffscreenCanvas(configureW || logicalCanvasElement.width, configureH || logicalCanvasElement.height);
25
- const logicalCanvasContext = logicalCanvasElement.getContext("2d");
26
- const virtualCanvasContext = virtualCanvasElement.getContext("2d");
27
- logicalCanvasContext.imageSmoothingEnabled = !!configureImageSmoothing;
28
- virtualCanvasContext.imageSmoothingEnabled = !!configureImageSmoothing;
29
- if (configureImageSmoothing) {
30
- logicalCanvasContext.imageSmoothingQuality = configureImageSmoothing;
31
- virtualCanvasContext.imageSmoothingQuality = configureImageSmoothing;
32
- }
33
- let virtualScale = Math.min(logicalCanvasElement.width / virtualCanvasElement.width, logicalCanvasElement.height / virtualCanvasElement.height);
34
- if (configureScaleIncrement)
35
- virtualScale = Math.floor(virtualScale / configureScaleIncrement) * configureScaleIncrement;
36
- const millisPerUpdate = configureUpdatesPerSecond ? 1000 / configureUpdatesPerSecond : 0;
37
- const millisPerRender = configureRendersPerSecond ? 1000 / configureRendersPerSecond : 0;
38
- const stage = {
39
- configureDebug,
40
- configureW,
41
- configureH,
42
- configureUpdatesPerSecond,
43
- configureRendersPerSecond,
44
- configureLogicalBackground,
45
- configureVirtualBackground,
46
- configureScaleIncrement,
47
- configureImageSmoothing,
48
- logicalCanvasElement,
49
- virtualCanvasElement,
50
- logicalCanvasContext,
51
- virtualCanvasContext,
52
- virtualScale,
53
- eventTree: Event.Tree.new(),
54
- debugInfo: new Map(),
55
- lastUpdate: 0,
56
- lastRender: 0,
57
- millisPerUpdate,
58
- millisPerRender,
59
- framesPerSecond: 0,
60
- updatesPerSecond: 0,
61
- rendersPerSecond: 0,
62
- averageMillisPerUpdate: 0,
63
- minimumMillisPerUpdate: 0,
64
- maximumMillisPerUpdate: 0,
65
- averageMillisPerRender: 0,
66
- minimumMillisPerRender: 0,
67
- maximumMillisPerRender: 0,
68
- oneSecondAccumulator: 0,
69
- updateAccumulator: 0,
70
- renderAccumulator: 0,
71
- framesPerSecondAccumulator: 0,
72
- updatesPerSecondAccumulator: 0,
73
- rendersPerSecondAccumulator: 0,
74
- averageMillisPerUpdateAccumulator: 0,
75
- minimumMillisPerUpdateAccumulator: Infinity,
76
- maximumMillisPerUpdateAccumulator: 0,
77
- averageMillisPerRenderAccumulator: 0,
78
- minimumMillisPerRenderAccumulator: Infinity,
79
- maximumMillisPerRenderAccumulator: 0,
80
- };
81
- // ensure these debug infos appear near the top of each debug view
82
- Stage.setDebugInfo(stage, FRAME_INFO, undefined);
83
- Stage.setDebugInfo(stage, UPDATE_INFO, undefined);
84
- Stage.setDebugInfo(stage, RENDER_INFO, undefined);
85
- Stage.setDebugInfo(stage, CANVAS_INFO, undefined);
86
- new ResizeObserver(() => resize(stage)).observe(c);
87
- Stage.listen(stage, RESIZE, wh => onResize(stage, wh));
88
- Stage.listen(stage, CHANGE, sc => onChange(stage, sc));
89
- requestAnimationFrame(firstFrame => requestAnimationFrame(lastFrame => requestAnimationFrame(thisFrame => animate(stage, firstFrame, lastFrame, thisFrame))));
90
- return stage;
91
- },
92
- getLogicalSize(stage) {
93
- return Vector2.new(stage.logicalCanvasElement.width, stage.logicalCanvasElement.height);
94
- },
95
- getVirtualSize(stage) {
96
- return Vector2.new(stage.virtualCanvasElement.width, stage.virtualCanvasElement.height);
97
- },
98
- getVirtualScale(stage) {
99
- return stage.virtualScale;
100
- },
101
- change(stage, scene) {
102
- Stage.dispatch(stage, CHANGE, scene);
103
- },
104
- listen(stage, type, listener, o) {
105
- Event.listen(stage.eventTree, type, listener, o);
106
- },
107
- deafen(stage, type, listener, o) {
108
- Event.deafen(stage.eventTree, type, listener, o);
109
- },
110
- dispatch(stage, type, event, o) {
111
- Event.dispatch(stage.eventTree, type, event, o);
112
- },
113
- poll(stage) {
114
- Event.poll(stage.eventTree);
115
- },
116
- getDebugInfo(stage, id) {
117
- return stage.debugInfo.get(id);
118
- },
119
- setDebugInfo(stage, id, info) {
120
- stage.debugInfo.set(id, info);
121
- }
122
- };
123
- function resize(stage) {
124
- const w = stage.logicalCanvasElement.getBoundingClientRect().width;
125
- const h = stage.logicalCanvasElement.getBoundingClientRect().height;
126
- Stage.dispatch(stage, RESIZE, [w, h]);
127
- }
128
- function onResize(stage, [w, h]) {
129
- stage.logicalCanvasElement.width = w;
130
- stage.logicalCanvasElement.height = h;
131
- stage.virtualCanvasElement = new OffscreenCanvas(stage.configureW || stage.logicalCanvasElement.width, stage.configureH || stage.logicalCanvasElement.height);
132
- stage.logicalCanvasContext = stage.logicalCanvasElement.getContext("2d");
133
- stage.virtualCanvasContext = stage.virtualCanvasElement.getContext("2d");
134
- stage.logicalCanvasContext.imageSmoothingEnabled = !!stage.configureImageSmoothing;
135
- stage.virtualCanvasContext.imageSmoothingEnabled = !!stage.configureImageSmoothing;
136
- if (stage.configureImageSmoothing) {
137
- stage.logicalCanvasContext.imageSmoothingQuality = stage.configureImageSmoothing;
138
- stage.virtualCanvasContext.imageSmoothingQuality = stage.configureImageSmoothing;
139
- }
140
- stage.virtualScale = Math.min(stage.logicalCanvasElement.width / stage.virtualCanvasElement.width, stage.logicalCanvasElement.height / stage.virtualCanvasElement.height);
141
- if (stage.configureScaleIncrement)
142
- stage.virtualScale = Math.floor(stage.virtualScale / stage.configureScaleIncrement) * stage.configureScaleIncrement;
143
- Stage.setDebugInfo(stage, CANVAS_INFO, getCanvasInfo(stage));
144
- }
145
- function onChange(stage, scene) {
146
- if (stage.scene && stage.scene.onDetach)
147
- stage.scene.onDetach(stage);
148
- stage.scene = scene;
149
- if (stage.scene && stage.scene.onAttach)
150
- stage.scene.onAttach(stage);
151
- }
152
- function update(stage, t, dt) {
153
- Stage.poll(stage);
154
- if (Scene.doesUpdate(stage.scene))
155
- stage.scene.onUpdate({ stage, t, dt });
156
- }
157
- function render(stage, t, dt) {
158
- const f = stage.logicalCanvasContext;
159
- const g = stage.virtualCanvasContext;
160
- f.resetTransform();
161
- g.resetTransform();
162
- f.fillStyle = stage.configureLogicalBackground;
163
- const [lw, lh] = Stage.getLogicalSize(stage);
164
- f.fillRect(0, 0, lw, lh);
165
- g.fillStyle = stage.configureVirtualBackground;
166
- const [vw, vh] = Stage.getVirtualSize(stage);
167
- g.fillRect(0, 0, vw, vh);
168
- const vs = Stage.getVirtualScale(stage);
169
- f.translate(lw / 2 - vw * vs / 2, lh / 2 - vh * vs / 2);
170
- f.scale(vs, vs);
171
- if (Scene.doesRender(stage.scene))
172
- stage.scene.onRender({ stage, t, dt, g });
173
- f.drawImage(stage.virtualCanvasElement, 0, 0);
174
- if (stage.configureDebug && stage.configureDebug !== "print")
175
- paintDebugInfos(stage);
176
- }
177
- function animate(stage, firstFrame, lastFrame, thisFrame) {
178
- const delta = thisFrame - lastFrame;
179
- stage.oneSecondAccumulator += delta;
180
- stage.updateAccumulator += delta;
181
- stage.renderAccumulator += delta;
182
- stage.framesPerSecondAccumulator += 1;
183
- if (stage.updateAccumulator >= stage.millisPerUpdate) {
184
- const t = (thisFrame - firstFrame) / 1000;
185
- const dt = (thisFrame - stage.lastUpdate) / 1000;
186
- const a = performance.now();
187
- update(stage, t, dt);
188
- const b = performance.now();
189
- const millisThisUpdate = b - a;
190
- stage.lastUpdate = thisFrame;
191
- stage.updatesPerSecondAccumulator += 1;
192
- stage.updateAccumulator -= stage.millisPerUpdate;
193
- stage.averageMillisPerUpdateAccumulator += millisThisUpdate;
194
- stage.minimumMillisPerUpdateAccumulator = Math.min(millisThisUpdate, stage.minimumMillisPerUpdateAccumulator);
195
- stage.maximumMillisPerUpdateAccumulator = Math.max(millisThisUpdate, stage.maximumMillisPerUpdateAccumulator);
196
- }
197
- if (stage.renderAccumulator >= stage.millisPerRender) {
198
- const t = (thisFrame - firstFrame) / 1000;
199
- const dt = (thisFrame - stage.lastRender) / 1000;
200
- const a = performance.now();
201
- render(stage, t, dt);
202
- const b = performance.now();
203
- const millisThisRender = b - a;
204
- stage.lastRender = thisFrame;
205
- stage.rendersPerSecondAccumulator += 1;
206
- stage.renderAccumulator -= stage.millisPerRender;
207
- stage.averageMillisPerRenderAccumulator += millisThisRender;
208
- stage.minimumMillisPerRenderAccumulator = Math.min(millisThisRender, stage.minimumMillisPerRenderAccumulator);
209
- stage.maximumMillisPerRenderAccumulator = Math.max(millisThisRender, stage.maximumMillisPerRenderAccumulator);
210
- }
211
- if (stage.oneSecondAccumulator >= 1000) {
212
- // update metrics
213
- stage.framesPerSecond = stage.framesPerSecondAccumulator;
214
- stage.updatesPerSecond = stage.updatesPerSecondAccumulator;
215
- stage.rendersPerSecond = stage.rendersPerSecondAccumulator;
216
- stage.averageMillisPerUpdate = stage.averageMillisPerUpdateAccumulator / stage.updatesPerSecondAccumulator;
217
- stage.minimumMillisPerUpdate = stage.minimumMillisPerUpdateAccumulator;
218
- stage.maximumMillisPerUpdate = stage.maximumMillisPerUpdateAccumulator;
219
- stage.averageMillisPerRender = stage.averageMillisPerRenderAccumulator / stage.rendersPerSecondAccumulator;
220
- stage.minimumMillisPerRender = stage.minimumMillisPerRenderAccumulator;
221
- stage.maximumMillisPerRender = stage.maximumMillisPerRenderAccumulator;
222
- // reset accumulators
223
- stage.framesPerSecondAccumulator = 0;
224
- stage.updatesPerSecondAccumulator = 0;
225
- stage.rendersPerSecondAccumulator = 0;
226
- stage.averageMillisPerUpdateAccumulator = 0;
227
- stage.minimumMillisPerUpdateAccumulator = Infinity;
228
- stage.maximumMillisPerUpdateAccumulator = 0;
229
- stage.averageMillisPerRenderAccumulator = 0;
230
- stage.minimumMillisPerRenderAccumulator = Infinity;
231
- stage.maximumMillisPerRenderAccumulator = 0;
232
- stage.oneSecondAccumulator -= 1000;
233
- Stage.setDebugInfo(stage, FRAME_INFO, getFrameInfo(stage));
234
- Stage.setDebugInfo(stage, UPDATE_INFO, getUpdateInfo(stage));
235
- Stage.setDebugInfo(stage, RENDER_INFO, getRenderInfo(stage));
236
- if (stage.configureDebug && stage.configureDebug !== "paint")
237
- printDebugInfos(stage);
238
- }
239
- requestAnimationFrame(nextFrame => animate(stage, firstFrame, thisFrame, nextFrame));
240
- }
241
- function getFrameInfo(stage) {
242
- return `FRAME ${stage.framesPerSecond.toFixed(0)} hz`;
243
- }
244
- function getUpdateInfo(stage) {
245
- return `UPDATE ${stage.updatesPerSecond.toFixed(0)} hz @ ${stage.averageMillisPerUpdate.toFixed(2)} [${stage.minimumMillisPerUpdate.toFixed(2)} - ${stage.maximumMillisPerUpdate.toFixed(2)}] of ${stage.millisPerUpdate.toFixed(2)} ms`;
246
- }
247
- function getRenderInfo(stage) {
248
- return `RENDER ${stage.rendersPerSecond.toFixed(0)} hz @ ${stage.averageMillisPerRender.toFixed(2)} [${stage.minimumMillisPerRender.toFixed(2)} - ${stage.maximumMillisPerRender.toFixed(2)}] of ${stage.millisPerRender.toFixed(2)} ms`;
249
- }
250
- function getCanvasInfo(stage) {
251
- const [lw, lh] = Stage.getLogicalSize(stage);
252
- const [vw, vh] = Stage.getVirtualSize(stage);
253
- const vs = Stage.getVirtualScale(stage);
254
- return `CANVAS ${lw}x${lh} ${vw}x${vh} ${(100 * vs).toFixed(2)}%`;
255
- }
256
- function printDebugInfos(stage) {
257
- let infos = "*** DEBUG ***\n";
258
- for (const [id, info] of stage.debugInfo) {
259
- if (!info)
260
- continue;
261
- infos += `${info}\n`;
262
- }
263
- console.log(infos);
264
- }
265
- function paintDebugInfos(stage) {
266
- const g = stage.logicalCanvasContext;
267
- const configureDebugBackground = "#000a";
268
- const configureDebugForeground = "#ffff";
269
- const configurePaddingX = 10;
270
- const configurePaddingY = 10;
271
- const configureSpacingY = 0;
272
- const configureFont = "16px monospace";
273
- g.resetTransform();
274
- g.font = configureFont;
275
- let w = 0;
276
- let h = 0;
277
- for (const [id, info] of stage.debugInfo) {
278
- if (!info)
279
- continue;
280
- const tm = g.measureText(info);
281
- w = Math.max(w, tm.width);
282
- h += (tm.fontBoundingBoxAscent +
283
- tm.fontBoundingBoxDescent +
284
- configureSpacingY);
285
- }
286
- if (h > 0) {
287
- w += configurePaddingX * 2;
288
- h += configurePaddingY * 2;
289
- h -= configureSpacingY;
290
- }
291
- // draw background
292
- g.fillStyle = configureDebugBackground;
293
- g.fillRect(0, 0, w, h);
294
- // draw foreground
295
- g.fillStyle = configureDebugForeground;
296
- let x = configurePaddingX;
297
- let y = configurePaddingY;
298
- for (const [id, info] of stage.debugInfo) {
299
- if (!info)
300
- continue;
301
- const tm = g.measureText(info);
302
- g.fillText(info, x, y + tm.fontBoundingBoxAscent);
303
- y += (configureSpacingY +
304
- tm.fontBoundingBoxAscent +
305
- tm.fontBoundingBoxDescent);
306
- }
307
- }
308
- //# sourceMappingURL=stage.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"stage.js","sourceRoot":"","sources":["../../src/core/stage.ts"],"names":[],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"el.d.ts","sourceRoot":"","sources":["../../src/math/el.ts"],"names":[],"mappings":"AACA,wBAAgB,GAAG,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,UAAkB;AAC1D,wBAAgB,GAAG,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,UAAkB;AAC1D,wBAAgB,GAAG,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,UAAkB;AAC1D,wBAAgB,GAAG,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,UAAkB;AAC1D,wBAAgB,GAAG,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,UAAkB"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"el.js","sourceRoot":"","sources":["../../src/math/el.ts"],"names":[],"mappings":"AAAA,0BAA0B;AAC1B,MAAM,UAAU,GAAG,CAAC,CAAS,EAAE,CAAS,IAAI,OAAO,CAAC,GAAG,CAAC,CAAA,CAAC,CAAC;AAC1D,MAAM,UAAU,GAAG,CAAC,CAAS,EAAE,CAAS,IAAI,OAAO,CAAC,GAAG,CAAC,CAAA,CAAC,CAAC;AAC1D,MAAM,UAAU,GAAG,CAAC,CAAS,EAAE,CAAS,IAAI,OAAO,CAAC,GAAG,CAAC,CAAA,CAAC,CAAC;AAC1D,MAAM,UAAU,GAAG,CAAC,CAAS,EAAE,CAAS,IAAI,OAAO,CAAC,GAAG,CAAC,CAAA,CAAC,CAAC;AAC1D,MAAM,UAAU,GAAG,CAAC,CAAS,EAAE,CAAS,IAAI,OAAO,CAAC,GAAG,CAAC,CAAA,CAAC,CAAC"}
@@ -1,70 +0,0 @@
1
- import { Vector2 } from "./vector2.js";
2
- export type Matrix2 = [
3
- number,
4
- number,
5
- number,
6
- number
7
- ];
8
- declare function xx(a: Matrix2, xx?: number): number;
9
- declare function xy(a: Matrix2, xy?: number): number;
10
- declare function yx(a: Matrix2, yx?: number): number;
11
- declare function yy(a: Matrix2, yy?: number): number;
12
- declare function r0(a: Matrix2, r0?: number | Vector2): [number, number];
13
- declare function r1(a: Matrix2, r1?: number | Vector2): [number, number];
14
- declare function c0(a: Matrix2, c0?: number | Vector2): [number, number];
15
- declare function c1(a: Matrix2, c1?: number | Vector2): [number, number];
16
- declare function row(a: Matrix2, i: 0 | 1, ri?: number | Vector2): [number, number];
17
- declare function col(a: Matrix2, j: 0 | 1, cj?: number | Vector2): [number, number];
18
- export declare const Matrix2: {
19
- XX: 0;
20
- XY: 1;
21
- YX: 2;
22
- YY: 3;
23
- __get__: {
24
- xx(a: Matrix2): number;
25
- xy(a: Matrix2): number;
26
- yx(a: Matrix2): number;
27
- yy(a: Matrix2): number;
28
- r0(a: Matrix2): [number, number];
29
- r1(a: Matrix2): [number, number];
30
- c0(a: Matrix2): [number, number];
31
- c1(a: Matrix2): [number, number];
32
- row(a: Matrix2, i: 0 | 1): [number, number];
33
- col(a: Matrix2, j: 0 | 1): [number, number];
34
- };
35
- __set__: {
36
- xx(a: Matrix2, xx: number): number;
37
- xy(a: Matrix2, xy: number): number;
38
- yx(a: Matrix2, yx: number): number;
39
- yy(a: Matrix2, yy: number): number;
40
- r0(a: Matrix2, r0: number | Vector2): [number, number];
41
- r1(a: Matrix2, r1: number | Vector2): [number, number];
42
- c0(a: Matrix2, c0: number | Vector2): [number, number];
43
- c1(a: Matrix2, c1: number | Vector2): [number, number];
44
- row(a: Matrix2, i: 0 | 1, ri: number | Vector2): [number, number];
45
- col(a: Matrix2, j: 0 | 1, cj: number | Vector2): [number, number];
46
- };
47
- xx: typeof xx;
48
- xy: typeof xy;
49
- yx: typeof yx;
50
- yy: typeof yy;
51
- r0: typeof r0;
52
- r1: typeof r1;
53
- c0: typeof c0;
54
- c1: typeof c1;
55
- row: typeof row;
56
- col: typeof col;
57
- id(a?: number): [number, number, number, number];
58
- "new"(...a: Array<number>): [number, number, number, number];
59
- from(a: number | Array<number>): [number, number, number, number];
60
- el(op: (a: number, b: number) => number, a: number | Matrix2, b: number | Matrix2, out?: Matrix2): Matrix2;
61
- add(a: number | Matrix2, b: number | Matrix2, out?: Matrix2): Matrix2;
62
- sub(a: number | Matrix2, b: number | Matrix2, out?: Matrix2): Matrix2;
63
- hmul(a: number | Matrix2, b: number | Matrix2, out?: Matrix2): Matrix2;
64
- hdiv(a: number | Matrix2, b: number | Matrix2, out?: Matrix2): Matrix2;
65
- hmod(a: number | Matrix2, b: number | Matrix2, out?: Matrix2): Matrix2;
66
- mul(a: number | Matrix2, b: number | Matrix2, out?: Matrix2): Matrix2;
67
- toString(a: number | Matrix2): string;
68
- };
69
- export {};
70
- //# sourceMappingURL=matrix2.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"matrix2.d.ts","sourceRoot":"","sources":["../../src/math/matrix2.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAGvC,MAAM,MAAM,OAAO,GAAG;IACpB,MAAM;IAAE,MAAM;IACd,MAAM;IAAE,MAAM;CACf,CAAA;AA+ED,iBAAS,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,EAAG,CAAC,EAAE,MAAM,UAEnC;AAED,iBAAS,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,EAAG,CAAC,EAAE,MAAM,UAEnC;AAED,iBAAS,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,EAAG,CAAC,EAAE,MAAM,UAEnC;AAED,iBAAS,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,EAAG,CAAC,EAAE,MAAM,UAEnC;AAED,iBAAS,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,EAAG,CAAC,EAAE,MAAM,GAAG,OAAO,oBAE7C;AAED,iBAAS,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,EAAG,CAAC,EAAE,MAAM,GAAG,OAAO,oBAE7C;AAED,iBAAS,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,EAAG,CAAC,EAAE,MAAM,GAAG,OAAO,oBAE7C;AAED,iBAAS,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,EAAG,CAAC,EAAE,MAAM,GAAG,OAAO,oBAE7C;AAED,iBAAS,GAAG,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,EAAG,CAAC,EAAE,MAAM,GAAG,OAAO,oBAExD;AAED,iBAAS,GAAG,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,EAAG,CAAC,EAAE,MAAM,GAAG,OAAO,oBAExD;AAED,eAAO,MAAM,OAAO;;;;;;cA/GZ,OAAO;cACP,OAAO;cACP,OAAO;cACP,OAAO;cAEP,OAAO;cACP,OAAO;cAEP,OAAO;cACP,OAAO;eAEN,OAAO,KAAK,CAAC,GAAG,CAAC;eAKjB,OAAO,KAAK,CAAC,GAAG,CAAC;;;cAOlB,OAAO,MAAM,MAAM;cACnB,OAAO,MAAM,MAAM;cACnB,OAAO,MAAM,MAAM;cACnB,OAAO,MAAM,MAAM;cAEnB,OAAO,MAAM,MAAM,GAAG,OAAO;cAO7B,OAAO,MAAM,MAAM,GAAG,OAAO;cAO7B,OAAO,MAAM,MAAM,GAAG,OAAO;cAO7B,OAAO,MAAM,MAAM,GAAG,OAAO;eAO5B,OAAO,KAAK,CAAC,GAAG,CAAC,MAAM,MAAM,GAAG,OAAO;eAOvC,OAAO,KAAK,CAAC,GAAG,CAAC,MAAM,MAAM,GAAG,OAAO;;;;;;;;;;;;WAwDxC,MAAM;gBAOF,KAAK,CAAC,MAAM,CAAC;YAWf,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC;WAWvB,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,KAAK,MAAM,KAAK,MAAM,GAAG,OAAO,KAAK,MAAM,GAAG,OAAO,QAAO,OAAO;WAUxF,MAAM,GAAG,OAAO,KAAK,MAAM,GAAG,OAAO,QAAO,OAAO;WAInD,MAAM,GAAG,OAAO,KAAK,MAAM,GAAG,OAAO,QAAO,OAAO;YAIlD,MAAM,GAAG,OAAO,KAAK,MAAM,GAAG,OAAO,QAAO,OAAO;YAInD,MAAM,GAAG,OAAO,KAAK,MAAM,GAAG,OAAO,QAAO,OAAO;YAInD,MAAM,GAAG,OAAO,KAAK,MAAM,GAAG,OAAO,QAAO,OAAO;WAIpD,MAAM,GAAG,OAAO,KAAK,MAAM,GAAG,OAAO,QAAO,OAAO;gBAgB9C,MAAM,GAAG,OAAO;CAO7B,CAAA"}
@@ -1,180 +0,0 @@
1
- import { Vector2 } from "./vector2.js";
2
- import { add, sub, mul, div, mod } from "./el.js";
3
- const XX = 0;
4
- const XY = 1;
5
- const YX = 2;
6
- const YY = 3;
7
- const __get__ = {
8
- xx(a) { return a[XX]; },
9
- xy(a) { return a[XY]; },
10
- yx(a) { return a[YX]; },
11
- yy(a) { return a[YY]; },
12
- r0(a) { return [a[XX], a[XY]]; },
13
- r1(a) { return [a[YX], a[YY]]; },
14
- c0(a) { return [a[XX], a[YX]]; },
15
- c1(a) { return [a[XY], a[YY]]; },
16
- row(a, i) {
17
- switch (i) {
18
- case 0: return __get__.r0(a);
19
- case 1: return __get__.r1(a);
20
- }
21
- },
22
- col(a, j) {
23
- switch (j) {
24
- case 0: return __get__.c0(a);
25
- case 1: return __get__.c1(a);
26
- }
27
- },
28
- };
29
- const __set__ = {
30
- xx(a, xx) { return a[XX] = xx; },
31
- xy(a, xy) { return a[XY] = xy; },
32
- yx(a, yx) { return a[YX] = yx; },
33
- yy(a, yy) { return a[YY] = yy; },
34
- r0(a, r0) {
35
- const [x, y] = Vector2.from(r0);
36
- __set__.xx(a, x);
37
- __set__.xy(a, y);
38
- return [x, y];
39
- },
40
- r1(a, r1) {
41
- const [x, y] = Vector2.from(r1);
42
- __set__.yx(a, x);
43
- __set__.yy(a, y);
44
- return [x, y];
45
- },
46
- c0(a, c0) {
47
- const [x, y] = Vector2.from(c0);
48
- __set__.xx(a, x);
49
- __set__.yx(a, y);
50
- return [x, y];
51
- },
52
- c1(a, c1) {
53
- const [x, y] = Vector2.from(c1);
54
- __set__.xy(a, x);
55
- __set__.yy(a, y);
56
- return [x, y];
57
- },
58
- row(a, i, ri) {
59
- switch (i) {
60
- case 0: return __set__.r0(a, ri);
61
- case 1: return __set__.r1(a, ri);
62
- }
63
- },
64
- col(a, j, cj) {
65
- switch (j) {
66
- case 0: return __set__.c0(a, cj);
67
- case 1: return __set__.c1(a, cj);
68
- }
69
- },
70
- };
71
- function xx(a, xx) {
72
- return xx === undefined ? __get__.xx(a) : __set__.xx(a, xx);
73
- }
74
- function xy(a, xy) {
75
- return xy === undefined ? __get__.xy(a) : __set__.xy(a, xy);
76
- }
77
- function yx(a, yx) {
78
- return yx === undefined ? __get__.yx(a) : __set__.yx(a, yx);
79
- }
80
- function yy(a, yy) {
81
- return yy === undefined ? __get__.yy(a) : __set__.yy(a, yy);
82
- }
83
- function r0(a, r0) {
84
- return r0 === undefined ? __get__.r0(a) : __set__.r0(a, r0);
85
- }
86
- function r1(a, r1) {
87
- return r1 === undefined ? __get__.r1(a) : __set__.r1(a, r1);
88
- }
89
- function c0(a, c0) {
90
- return c0 === undefined ? __get__.c0(a) : __set__.c0(a, c0);
91
- }
92
- function c1(a, c1) {
93
- return c1 === undefined ? __get__.c1(a) : __set__.c1(a, c1);
94
- }
95
- function row(a, i, ri) {
96
- return ri === undefined ? __get__.row(a, i) : __set__.row(a, i, ri);
97
- }
98
- function col(a, j, cj) {
99
- return cj === undefined ? __get__.col(a, j) : __set__.col(a, j, cj);
100
- }
101
- export const Matrix2 = {
102
- XX, XY, YX, YY,
103
- __get__,
104
- __set__,
105
- xx, xy, yx, yy,
106
- r0, r1, c0, c1,
107
- row, col,
108
- id(a = 1) {
109
- return [
110
- a, 0,
111
- 0, a
112
- ];
113
- },
114
- new(...a) {
115
- if (a.length === 1)
116
- return [
117
- a[XX], a[XX],
118
- a[XX], a[XX]
119
- ];
120
- else
121
- return [
122
- a[XX] ?? 0, a[XY] ?? 0,
123
- a[YX] ?? 0, a[YY] ?? 0
124
- ];
125
- },
126
- from(a) {
127
- if (typeof a === "number")
128
- return [
129
- a, a,
130
- a, a
131
- ];
132
- else
133
- return [
134
- a[XX] ?? 0, a[XY] ?? 0,
135
- a[YX] ?? 0, a[YY] ?? 0
136
- ];
137
- },
138
- el(op, a, b, out = Matrix2.new()) {
139
- const [xxa, xya, yxa, yya] = Matrix2.from(a);
140
- const [xxb, xyb, yxb, yyb] = Matrix2.from(b);
141
- __set__.xx(out, op(xxa, xxb));
142
- __set__.xy(out, op(xya, xyb));
143
- __set__.yx(out, op(yxa, yxb));
144
- __set__.yy(out, op(yya, yyb));
145
- return out;
146
- },
147
- add(a, b, out = Matrix2.new()) {
148
- return Matrix2.el(add, a, b, out);
149
- },
150
- sub(a, b, out = Matrix2.new()) {
151
- return Matrix2.el(sub, a, b, out);
152
- },
153
- hmul(a, b, out = Matrix2.new()) {
154
- return Matrix2.el(mul, a, b, out);
155
- },
156
- hdiv(a, b, out = Matrix2.new()) {
157
- return Matrix2.el(div, a, b, out);
158
- },
159
- hmod(a, b, out = Matrix2.new()) {
160
- return Matrix2.el(mod, a, b, out);
161
- },
162
- mul(a, b, out = Matrix2.new()) {
163
- const A = Matrix2.from(a);
164
- const B = Matrix2.from(b);
165
- const r0 = __get__.r0(A);
166
- const r1 = __get__.r1(A);
167
- const c0 = __get__.c0(B);
168
- const c1 = __get__.c1(B);
169
- __set__.xx(out, Vector2.dot(r0, c0));
170
- __set__.xy(out, Vector2.dot(r0, c1));
171
- __set__.yx(out, Vector2.dot(r1, c0));
172
- __set__.yy(out, Vector2.dot(r1, c1));
173
- return out;
174
- },
175
- toString(a) {
176
- const [xx, xy, yx, yy] = Matrix2.from(a);
177
- return `mat2<${xx}, ${xy}, ${yx}, ${yy}>`;
178
- }
179
- };
180
- //# sourceMappingURL=matrix2.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"matrix2.js","sourceRoot":"","sources":["../../src/math/matrix2.ts"],"names":[],"mappings":"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"}