@tolokoban/tgd 2.0.80 → 2.0.82

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 (78) hide show
  1. package/lib/dist/buffer/buffer.d.ts +1 -1
  2. package/lib/dist/buffer/buffer.d.ts.map +1 -1
  3. package/lib/dist/buffer/buffer.js +1 -1
  4. package/lib/dist/code/color.d.ts.map +1 -1
  5. package/lib/dist/context/context.d.ts.map +1 -1
  6. package/lib/dist/context/context.js +6 -3
  7. package/lib/dist/dataset/dataset.d.ts +16 -2
  8. package/lib/dist/dataset/dataset.d.ts.map +1 -1
  9. package/lib/dist/dataset/dataset.js +42 -1
  10. package/lib/dist/event/event.d.ts +1 -1
  11. package/lib/dist/event/event.d.ts.map +1 -1
  12. package/lib/dist/input/gamepad.d.ts +15 -0
  13. package/lib/dist/input/gamepad.d.ts.map +1 -0
  14. package/lib/dist/input/gamepad.js +52 -0
  15. package/lib/dist/input/index.d.ts +1 -0
  16. package/lib/dist/input/index.d.ts.map +1 -1
  17. package/lib/dist/input/index.js +2 -1
  18. package/lib/dist/input/inputs.d.ts +2 -0
  19. package/lib/dist/input/inputs.d.ts.map +1 -1
  20. package/lib/dist/input/inputs.js +3 -1
  21. package/lib/dist/material/flat-texture.d.ts +10 -0
  22. package/lib/dist/material/flat-texture.d.ts.map +1 -0
  23. package/lib/dist/material/flat-texture.js +29 -0
  24. package/lib/dist/material/index.d.ts +1 -0
  25. package/lib/dist/material/index.d.ts.map +1 -1
  26. package/lib/dist/material/index.js +2 -1
  27. package/lib/dist/math/math.d.ts +1 -0
  28. package/lib/dist/math/math.d.ts.map +1 -1
  29. package/lib/dist/math/math.js +7 -1
  30. package/lib/dist/math/vec2.d.ts +1 -0
  31. package/lib/dist/math/vec2.d.ts.map +1 -1
  32. package/lib/dist/math/vec2.js +4 -1
  33. package/lib/dist/painter/group-camera.d.ts +18 -0
  34. package/lib/dist/painter/group-camera.d.ts.map +1 -0
  35. package/lib/dist/painter/group-camera.js +20 -0
  36. package/lib/dist/painter/index.d.ts +1 -0
  37. package/lib/dist/painter/index.d.ts.map +1 -1
  38. package/lib/dist/painter/index.js +2 -1
  39. package/lib/dist/painter/segments/index.d.ts +1 -0
  40. package/lib/dist/painter/segments/index.d.ts.map +1 -1
  41. package/lib/dist/painter/segments/index.js +2 -1
  42. package/lib/dist/painter/segments/segments-morphing.d.ts +80 -0
  43. package/lib/dist/painter/segments/segments-morphing.d.ts.map +1 -0
  44. package/lib/dist/painter/segments/segments-morphing.js +213 -0
  45. package/lib/dist/painter/segments/segments.d.ts +42 -7
  46. package/lib/dist/painter/segments/segments.d.ts.map +1 -1
  47. package/lib/dist/painter/segments/segments.js +93 -25
  48. package/lib/dist/painter/sprites/index.d.ts +1 -0
  49. package/lib/dist/painter/sprites/index.d.ts.map +1 -1
  50. package/lib/dist/painter/sprites/index.js +2 -1
  51. package/lib/dist/painter/sprites/sprites-abstract.d.ts +25 -0
  52. package/lib/dist/painter/sprites/sprites-abstract.d.ts.map +1 -0
  53. package/lib/dist/painter/sprites/sprites-abstract.js +9 -0
  54. package/lib/dist/painter/sprites/sprites-hue.d.ts +26 -0
  55. package/lib/dist/painter/sprites/sprites-hue.d.ts.map +1 -0
  56. package/lib/dist/painter/sprites/sprites-hue.js +66 -0
  57. package/lib/dist/painter/sprites/sprites.d.ts +67 -24
  58. package/lib/dist/painter/sprites/sprites.d.ts.map +1 -1
  59. package/lib/dist/painter/sprites/sprites.js +160 -57
  60. package/lib/dist/painter/sprites/types.d.ts +4 -0
  61. package/lib/dist/painter/sprites/types.d.ts.map +1 -1
  62. package/lib/dist/types/program.d.ts +4 -1
  63. package/lib/dist/types/program.d.ts.map +1 -1
  64. package/lib/dist/vao/vao.d.ts +6 -0
  65. package/lib/dist/vao/vao.d.ts.map +1 -1
  66. package/lib/dist/vao/vao.js +30 -8
  67. package/package.json +2 -1
  68. package/lib/dist/painter/segments.backup/index.d.ts +0 -2
  69. package/lib/dist/painter/segments.backup/index.d.ts.map +0 -1
  70. package/lib/dist/painter/segments.backup/index.js +0 -2
  71. package/lib/dist/painter/segments.backup/segments.d.ts +0 -95
  72. package/lib/dist/painter/segments.backup/segments.d.ts.map +0 -1
  73. package/lib/dist/painter/segments.backup/segments.frag +0 -22
  74. package/lib/dist/painter/segments.backup/segments.js +0 -223
  75. package/lib/dist/painter/segments.backup/segments.vert +0 -121
  76. package/lib/dist/painter/sprites/sprite.d.ts +0 -31
  77. package/lib/dist/painter/sprites/sprite.d.ts.map +0 -1
  78. package/lib/dist/painter/sprites/sprite.js +0 -80
@@ -7,6 +7,7 @@ import { tgdCanvasCreatePalette } from "./../../utils/index.js";
7
7
  import { TgdMaterialFaceOrientation } from "./../../material/index.js";
8
8
  import { makeCapsule } from "./capsule.js";
9
9
  import { TgdShaderFragment, TgdShaderVertex } from "./../../shader/index.js";
10
+ import { TgdTransfo } from "./../../math/index.js";
10
11
  /**
11
12
  * @example
12
13
  * ```
@@ -29,17 +30,35 @@ import { TgdShaderFragment, TgdShaderVertex } from "./../../shader/index.js";
29
30
  * ```
30
31
  */
31
32
  export class TgdPainterSegments extends TgdPainter {
33
+ static createDataset({ attXYZR0 = "attXYZR0", attUV0 = "attUV0", attInfluence0 = "attInfluence0", attXYZR1 = "attXYZR1", attUV1 = "attUV1", attInfluence1 = "attInfluence1", buffer, usage, target, } = {}) {
34
+ const dataset = new TgdDataset({
35
+ [attXYZR0]: "vec4",
36
+ [attUV0]: "vec2",
37
+ [attInfluence0]: "float",
38
+ [attXYZR1]: "vec4",
39
+ [attUV1]: "vec2",
40
+ [attInfluence1]: "float",
41
+ }, {
42
+ divisor: 1,
43
+ buffer,
44
+ usage,
45
+ target,
46
+ });
47
+ return dataset;
48
+ }
32
49
  // private readonly painter: TgdPainter
33
50
  constructor(context, options) {
34
51
  var _a, _b, _c, _d;
35
52
  super();
36
53
  this.context = context;
54
+ this.transfo = new TgdTransfo();
37
55
  this.minRadius = 1;
38
56
  this.radiusMultiplier = 1;
39
57
  this.radiusConstant = 1;
40
58
  this.radiusSwitch = 0;
41
- this.name = `TgdPainter#${this.id}`;
42
- const { roundness = 3, minRadius = 1, makeDataset } = options;
59
+ this.instanceCount = 0;
60
+ this.name = `TgdPainterSegments#${this.id}`;
61
+ const { roundness = 3, minRadius = 1, dataset } = options;
43
62
  const geometry = makeCapsule(roundness);
44
63
  const material = (_a = options.material) !== null && _a !== void 0 ? _a : new TgdMaterialFaceOrientation();
45
64
  this.material = material;
@@ -91,7 +110,7 @@ export class TgdPainterSegments extends TgdPainter {
91
110
  `float radius = max(`,
92
111
  [
93
112
  `xyzr.w,`,
94
- `uniMinRadius * (uniProjectionMatrix * uniModelViewMatrix * vec4(center, 1)).w`,
113
+ `uniMinRadius * (uniProjectionMatrix * uniModelViewMatrix * uniTransfoMatrix * vec4(center, 1)).w`,
95
114
  ],
96
115
  `);`,
97
116
  `vec3 dir = attXYZR1.xyz - attXYZR0.xyz;`,
@@ -111,7 +130,7 @@ export class TgdPainterSegments extends TgdPainter {
111
130
  `normal = mat * normal;`,
112
131
  ],
113
132
  `}`,
114
- `gl_Position = uniProjectionMatrix * uniModelViewMatrix * vec4(pos, 1);`,
133
+ `gl_Position = uniProjectionMatrix * uniModelViewMatrix * uniTransfoMatrix * vec4(pos, 1);`,
115
134
  "applyMaterial();",
116
135
  "varNormal = normal;",
117
136
  ],
@@ -133,10 +152,35 @@ export class TgdPainterSegments extends TgdPainter {
133
152
  frag,
134
153
  });
135
154
  this.prg = prg;
136
- const instance = makeDataset();
137
- this.vao = new TgdVertexArray(context.gl, prg, [geometry.dataset, instance], geometry.elements);
155
+ if (dataset instanceof TgdPainterSegments) {
156
+ if (dataset.vao.gl !== context.gl) {
157
+ throw new Error("[TgdPainterSegments] You cannot share a VAO accross different contexts!");
158
+ }
159
+ this.vao = dataset.vao;
160
+ this.vao.share();
161
+ this.instanceCount = dataset.instanceCount;
162
+ }
163
+ else if (dataset) {
164
+ const instance = extract(dataset);
165
+ instance.addAttributes({
166
+ attXYZR0: "vec4",
167
+ attUV0: "vec2",
168
+ attInfluence0: "float",
169
+ attXYZR1: "vec4",
170
+ attUV1: "vec2",
171
+ attInfluence1: "float",
172
+ });
173
+ this.vao = new TgdVertexArray(context.gl, prg, [geometry.dataset, instance], geometry.elements);
174
+ this.instanceCount = instance.count;
175
+ }
176
+ else {
177
+ console.error("[TgdPainterSegments] options =", options); // @FIXME: Remove this line written on 2026-02-04 at 19:53
178
+ throw new Error("option `dataset` of TgdPainterSegments is undefined!");
179
+ }
138
180
  this.vertexCount = (_d = (_c = geometry.elements) === null || _c === void 0 ? void 0 : _c.length) !== null && _d !== void 0 ? _d : 0;
139
- this.instanceCount = instance.count;
181
+ }
182
+ getBuffer() {
183
+ return this.vao.getBuffer(1);
140
184
  }
141
185
  delete() {
142
186
  this.vao.delete();
@@ -150,6 +194,7 @@ export class TgdPainterSegments extends TgdPainter {
150
194
  prg.use();
151
195
  (_b = (_a = this.material).setUniforms) === null || _b === void 0 ? void 0 : _b.call(_a, { program: prg, camera, time, delay });
152
196
  prg.uniform1f("uniMinRadius", (this.minRadius * 2) / gl.drawingBufferHeight);
197
+ prg.uniformMatrix4fv("uniTransfoMatrix", this.transfo.matrix);
153
198
  prg.uniformMatrix4fv("uniModelViewMatrix", camera.matrixModelView);
154
199
  prg.uniformMatrix4fv("uniProjectionMatrix", camera.matrixProjection);
155
200
  material.applyState(gl, () => {
@@ -168,29 +213,47 @@ export class TgdPainterSegmentsData {
168
213
  this.attXYZR1 = [];
169
214
  this.attUV1 = [];
170
215
  this.attInfluence1 = [];
171
- this.makeDataset = () => {
172
- const dataset = new TgdDataset({
173
- attXYZR0: "vec4",
174
- attUV0: "vec2",
175
- attInfluence0: "float",
176
- attXYZR1: "vec4",
177
- attUV1: "vec2",
178
- attInfluence1: "float",
179
- }, {
180
- divisor: 1,
181
- });
182
- dataset.set("attXYZR0", new Float32Array(this.attXYZR0));
183
- dataset.set("attUV0", new Float32Array(this.attUV0));
184
- dataset.set("attInfluence0", new Float32Array(this.attInfluence0));
185
- dataset.set("attXYZR1", new Float32Array(this.attXYZR1));
186
- dataset.set("attUV1", new Float32Array(this.attUV1));
187
- dataset.set("attInfluence1", new Float32Array(this.attInfluence1));
216
+ /**
217
+ * You can rename the attributes if you need to use
218
+ * them in another Painter.
219
+ */
220
+ this.makeDataset = (args = {}) => {
221
+ const dataset = TgdPainterSegments.createDataset(args);
222
+ const { attXYZR0 = "attXYZR0", attUV0 = "attUV0", attInfluence0 = "attInfluence0", attXYZR1 = "attXYZR1", attUV1 = "attUV1", attInfluence1 = "attInfluence1", } = args;
223
+ dataset.set(attXYZR0, new Float32Array(this.attXYZR0));
224
+ dataset.set(attUV0, new Float32Array(this.attUV0));
225
+ dataset.set(attInfluence0, new Float32Array(this.attInfluence0));
226
+ dataset.set(attXYZR1, new Float32Array(this.attXYZR1));
227
+ dataset.set(attUV1, new Float32Array(this.attUV1));
228
+ dataset.set(attInfluence1, new Float32Array(this.attInfluence1));
188
229
  return dataset;
189
230
  };
190
231
  }
191
232
  get count() {
192
233
  return this._count;
193
234
  }
235
+ getXYZR0(index) {
236
+ var _a, _b, _c, _d;
237
+ const arr = this.attXYZR0;
238
+ const offset = index * 4;
239
+ return [
240
+ (_a = arr[offset + 0]) !== null && _a !== void 0 ? _a : 0,
241
+ (_b = arr[offset + 1]) !== null && _b !== void 0 ? _b : 0,
242
+ (_c = arr[offset + 2]) !== null && _c !== void 0 ? _c : 0,
243
+ (_d = arr[offset + 3]) !== null && _d !== void 0 ? _d : 0,
244
+ ];
245
+ }
246
+ getXYZR1(index) {
247
+ var _a, _b, _c, _d;
248
+ const arr = this.attXYZR1;
249
+ const offset = index * 4;
250
+ return [
251
+ (_a = arr[offset + 0]) !== null && _a !== void 0 ? _a : 0,
252
+ (_b = arr[offset + 1]) !== null && _b !== void 0 ? _b : 0,
253
+ (_c = arr[offset + 2]) !== null && _c !== void 0 ? _c : 0,
254
+ (_d = arr[offset + 3]) !== null && _d !== void 0 ? _d : 0,
255
+ ];
256
+ }
194
257
  /**
195
258
  * @param XYZR0 (x,y,z) and radius of point A.
196
259
  * @param XYZR1 (x,y,z) and radius of point B.
@@ -209,4 +272,9 @@ export class TgdPainterSegmentsData {
209
272
  this._count++;
210
273
  }
211
274
  }
212
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VnbWVudHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvcGFpbnRlci9zZWdtZW50cy9zZWdtZW50cy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sY0FBYyxDQUFBO0FBQ3pDLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQTtBQUVqRCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sVUFBVSxDQUFBO0FBRXpDLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxjQUFjLENBQUE7QUFDM0MsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGNBQWMsQ0FBQTtBQUN6QyxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxZQUFZLENBQUE7QUFFbkQsT0FBTyxFQUFlLDBCQUEwQixFQUFFLE1BQU0sZUFBZSxDQUFBO0FBQ3ZFLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxXQUFXLENBQUE7QUFDdkMsT0FBTyxFQUFFLGlCQUFpQixFQUFFLGVBQWUsRUFBRSxNQUFNLGFBQWEsQ0FBQTtBQW1CaEU7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBb0JHO0FBQ0gsTUFBTSxPQUFPLGtCQUFtQixTQUFRLFVBQVU7SUFhOUMsdUNBQXVDO0lBRXZDLFlBQ3VCLE9BR2xCLEVBQ0QsT0FFQzs7UUFFRCxLQUFLLEVBQUUsQ0FBQTtRQVJZLFlBQU8sR0FBUCxPQUFPLENBR3pCO1FBakJFLGNBQVMsR0FBVyxDQUFDLENBQUE7UUFDckIscUJBQWdCLEdBQUcsQ0FBQyxDQUFBO1FBQ3BCLG1CQUFjLEdBQUcsQ0FBQyxDQUFBO1FBQ2xCLGlCQUFZLEdBQUcsQ0FBQyxDQUFBO1FBb0JuQixJQUFJLENBQUMsSUFBSSxHQUFHLGNBQWMsSUFBSSxDQUFDLEVBQUUsRUFBRSxDQUFBO1FBQ25DLE1BQU0sRUFBRSxTQUFTLEdBQUcsQ0FBQyxFQUFFLFNBQVMsR0FBRyxDQUFDLEVBQUUsV0FBVyxFQUFFLEdB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
275
+ function extract(arg) {
276
+ if (typeof arg === "function")
277
+ return arg();
278
+ return arg;
279
+ }
280
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VnbWVudHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvcGFpbnRlci9zZWdtZW50cy9zZWdtZW50cy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sY0FBYyxDQUFBO0FBQ3pDLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQTtBQUVqRCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sVUFBVSxDQUFBO0FBQ3pDLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxjQUFjLENBQUE7QUFDM0MsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGNBQWMsQ0FBQTtBQUN6QyxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxZQUFZLENBQUE7QUFFbkQsT0FBTyxFQUFlLDBCQUEwQixFQUFFLE1BQU0sZUFBZSxDQUFBO0FBQ3ZFLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxXQUFXLENBQUE7QUFDdkMsT0FBTyxFQUFFLGlCQUFpQixFQUFFLGVBQWUsRUFBRSxNQUFNLGFBQWEsQ0FBQTtBQUNoRSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sV0FBVyxDQUFBO0FBa0N0Qzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FvQkc7QUFDSCxNQUFNLE9BQU8sa0JBQW1CLFNBQVEsVUFBVTtJQUM5QyxNQUFNLENBQUMsYUFBYSxDQUFDLEVBQ2pCLFFBQVEsR0FBRyxVQUFVLEVBQ3JCLE1BQU0sR0FBRyxRQUFRLEVBQ2pCLGFBQWEsR0FBRyxlQUFlLEVBQy9CLFFBQVEsR0FBRyxVQUFVLEVBQ3JCLE1BQU0sR0FBRyxRQUFRLEVBQ2pCLGFBQWEsR0FBRyxlQUFlLEVBQy9CLE1BQU0sRUFDTixLQUFLLEVBQ0wsTUFBTSxNQVdMLEVBQUU7UUFDSCxNQUFNLE9BQU8sR0FBRyxJQUFJLFVBQVUsQ0FDMUI7WUFDSSxDQUFDLFFBQVEsQ0FBQyxFQUFFLE1BQU07WUFDbEIsQ0FBQyxNQUFNLENBQUMs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
@@ -1,2 +1,3 @@
1
1
  export * from "./sprites";
2
+ export * from "./sprites-hue";
2
3
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/painter/sprites/index.ts"],"names":[],"mappings":"AAAA,cAAc,WAAW,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/painter/sprites/index.ts"],"names":[],"mappings":"AAAA,cAAc,WAAW,CAAA;AACzB,cAAc,eAAe,CAAA"}
@@ -1,2 +1,3 @@
1
1
  export * from "./sprites.js";
2
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvcGFpbnRlci9zcHJpdGVzL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsV0FBVyxDQUFBIn0=
2
+ export * from "./sprites-hue.js";
3
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvcGFpbnRlci9zcHJpdGVzL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsV0FBVyxDQUFBO0FBQ3pCLGNBQWMsZUFBZSxDQUFBIn0=
@@ -0,0 +1,25 @@
1
+ import type { TgdInterfaceTransformable } from "../../interface";
2
+ import { TgdTransfo } from "../../math";
3
+ import { TgdPainter } from "../painter";
4
+ import type { TgdSprite } from "./types";
5
+ export type { TgdSprite } from "./types";
6
+ export declare abstract class TgdPainterSpritesAbstract<Base extends TgdSprite, Type extends Base> extends TgdPainter implements TgdInterfaceTransformable {
7
+ readonly transfo: TgdTransfo;
8
+ abstract list(): ReadonlyArray<Type>;
9
+ abstract forEach(callback: (sprite: Type) => void): void;
10
+ abstract filter(test: (sprite: Type) => boolean): ReadonlyArray<Type>;
11
+ abstract get count(): number;
12
+ abstract get capacity(): number;
13
+ /**
14
+ * Delete all sprites.
15
+ */
16
+ abstract clear(): void;
17
+ abstract add(data: Omit<Type, keyof Base> & Partial<Omit<Type, "id">>): Type;
18
+ abstract remove(sprite: {
19
+ id: number;
20
+ }): void;
21
+ abstract delete(): void;
22
+ abstract paint(): void;
23
+ abstract debug(caption?: string): void;
24
+ }
25
+ //# sourceMappingURL=sprites-abstract.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sprites-abstract.d.ts","sourceRoot":"","sources":["../../../src/painter/sprites/sprites-abstract.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,gBAAgB,CAAA;AAC/D,OAAO,EAAE,UAAU,EAAE,MAAM,WAAW,CAAA;AACtC,OAAO,EAAE,UAAU,EAAE,MAAM,YAAY,CAAA;AACvC,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,SAAS,CAAA;AAExC,YAAY,EAAE,SAAS,EAAE,MAAM,SAAS,CAAA;AAExC,8BAAsB,yBAAyB,CACvC,IAAI,SAAS,SAAS,EACtB,IAAI,SAAS,IAAI,CAErB,SAAQ,UACR,YAAW,yBAAyB;IAEpC,SAAgB,OAAO,aAAmB;IAE1C,QAAQ,CAAC,IAAI,IAAI,aAAa,CAAC,IAAI,CAAC;IAEpC,QAAQ,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC,MAAM,EAAE,IAAI,KAAK,IAAI,GAAG,IAAI;IAExD,QAAQ,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,MAAM,EAAE,IAAI,KAAK,OAAO,GAAG,aAAa,CAAC,IAAI,CAAC;IAErE,QAAQ,KAAK,KAAK,IAAI,MAAM,CAAA;IAE5B,QAAQ,KAAK,QAAQ,IAAI,MAAM,CAAA;IAE/B;;OAEG;IACH,QAAQ,CAAC,KAAK,IAAI,IAAI;IAEtB,QAAQ,CAAC,GAAG,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,MAAM,IAAI,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,GAAG,IAAI;IAE5E,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE;QAAE,EAAE,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI;IAE7C,QAAQ,CAAC,MAAM,IAAI,IAAI;IACvB,QAAQ,CAAC,KAAK,IAAI,IAAI;IAEtB,QAAQ,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI;CACzC"}
@@ -0,0 +1,9 @@
1
+ import { TgdTransfo } from "./../../math/index.js";
2
+ import { TgdPainter } from "../painter.js";
3
+ export class TgdPainterSpritesAbstract extends TgdPainter {
4
+ constructor() {
5
+ super(...arguments);
6
+ this.transfo = new TgdTransfo();
7
+ }
8
+ }
9
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3ByaXRlcy1hYnN0cmFjdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9wYWludGVyL3Nwcml0ZXMvc3ByaXRlcy1hYnN0cmFjdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sV0FBVyxDQUFBO0FBQ3RDLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxZQUFZLENBQUE7QUFLdkMsTUFBTSxPQUFnQix5QkFJbEIsU0FBUSxVQUFVO0lBSnRCOztRQU9vQixZQUFPLEdBQUcsSUFBSSxVQUFVLEVBQUUsQ0FBQTtJQXlCOUMsQ0FBQztDQUFBIn0=
@@ -0,0 +1,26 @@
1
+ import type { TgdContext } from "../../context";
2
+ import type { TgdSpriteHue } from "./types";
3
+ import { TgdPainterSpritesOptions } from "./sprites";
4
+ import { TgdPainterSpritesAbstract } from "./sprites-abstract";
5
+ export type { TgdSpriteHue } from "./types";
6
+ export declare class TgdPainterSpritesHue<T extends TgdSpriteHue = TgdSpriteHue> extends TgdPainterSpritesAbstract<TgdSpriteHue, T> {
7
+ private readonly parent;
8
+ constructor(context: TgdContext, options: TgdPainterSpritesOptions);
9
+ get count(): number;
10
+ get capacity(): number;
11
+ list(): ReadonlyArray<T>;
12
+ forEach(callback: (sprite: T) => void): void;
13
+ filter(test: (sprite: T) => boolean): ReadonlyArray<T>;
14
+ /**
15
+ * Delete all sprites.
16
+ */
17
+ clear(): void;
18
+ add(data: Omit<T, keyof TgdSpriteHue> & Partial<Omit<T, "id">>): T;
19
+ remove(sprite: {
20
+ id: number;
21
+ }): void;
22
+ delete(): void;
23
+ paint(): void;
24
+ debug(caption?: string): void;
25
+ }
26
+ //# sourceMappingURL=sprites-hue.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sprites-hue.d.ts","sourceRoot":"","sources":["../../../src/painter/sprites/sprites-hue.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,cAAc,CAAA;AAC9C,OAAO,KAAK,EAAa,YAAY,EAAE,MAAM,SAAS,CAAA;AACtD,OAAO,EAAqB,wBAAwB,EAAE,MAAM,WAAW,CAAA;AAEvE,OAAO,EAAE,yBAAyB,EAAE,MAAM,oBAAoB,CAAA;AAE9D,YAAY,EAAE,YAAY,EAAE,MAAM,SAAS,CAAA;AAE3C,qBAAa,oBAAoB,CAC7B,CAAC,SAAS,YAAY,GAAG,YAAY,CACvC,SAAQ,yBAAyB,CAAC,YAAY,EAAE,CAAC,CAAC;IAChD,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAsB;gBAEjC,OAAO,EAAE,UAAU,EAAE,OAAO,EAAE,wBAAwB;IAyBlE,IAAI,KAAK,WAER;IAED,IAAI,QAAQ,WAEX;IAED,IAAI,IAAI,aAAa,CAAC,CAAC,CAAC;IAIxB,OAAO,CAAC,QAAQ,EAAE,CAAC,MAAM,EAAE,CAAC,KAAK,IAAI;IAIrC,MAAM,CAAC,IAAI,EAAE,CAAC,MAAM,EAAE,CAAC,KAAK,OAAO,GAAG,aAAa,CAAC,CAAC,CAAC;IAItD;;OAEG;IACH,KAAK;IAIL,GAAG,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,EAAE,MAAM,YAAY,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,GAAG,CAAC;IAUlE,MAAM,CAAC,MAAM,EAAE;QAAE,EAAE,EAAE,MAAM,CAAA;KAAE;IAS7B,MAAM,IAAI,IAAI;IAId,KAAK,IAAI,IAAI;IAIb,KAAK,CAAC,OAAO,CAAC,EAAE,MAAM;CAGzB"}
@@ -0,0 +1,66 @@
1
+ import { TgdPainterSprites } from "./sprites.js";
2
+ import { tgdCodeFunction_shiftHue } from "./../../code/index.js";
3
+ import { TgdPainterSpritesAbstract } from "./sprites-abstract.js";
4
+ export class TgdPainterSpritesHue extends TgdPainterSpritesAbstract {
5
+ constructor(context, options) {
6
+ super();
7
+ this.parent = new TgdPainterSprites(context, Object.assign(Object.assign({}, options), { attributes: {
8
+ attHue: "float",
9
+ }, attributesSetter(attributes, key, value, offset) {
10
+ if (key !== "hue" || typeof value !== "number")
11
+ return;
12
+ attributes.attHue.set(value, offset);
13
+ }, varyings: {
14
+ varHue: "float",
15
+ }, vert: {
16
+ code: ["varHue = attHue;"],
17
+ }, frag: {
18
+ functions: tgdCodeFunction_shiftHue(),
19
+ code: ["color.rgb = shiftHue(color.rgb, varHue);"],
20
+ } }));
21
+ }
22
+ get count() {
23
+ return this.parent.count;
24
+ }
25
+ get capacity() {
26
+ return this.parent.capacity;
27
+ }
28
+ list() {
29
+ return this.parent.list();
30
+ }
31
+ forEach(callback) {
32
+ this.parent.forEach(callback);
33
+ }
34
+ filter(test) {
35
+ return this.parent.filter(test);
36
+ }
37
+ /**
38
+ * Delete all sprites.
39
+ */
40
+ clear() {
41
+ this.parent.clear();
42
+ }
43
+ add(data) {
44
+ const info = Object.assign({ hue: 0 }, data);
45
+ const sprite = this.parent.add(info);
46
+ sprite.hue = info.hue;
47
+ return sprite;
48
+ }
49
+ remove(sprite) {
50
+ this.parent.remove(sprite);
51
+ }
52
+ // protected updateAccessors() {
53
+ // super.updateAccessors()
54
+ // this.attributes.attHue.dataset = this.datasetInstances
55
+ // }
56
+ delete() {
57
+ this.parent.delete();
58
+ }
59
+ paint() {
60
+ this.parent.paint();
61
+ }
62
+ debug(caption) {
63
+ this.parent.debug(caption);
64
+ }
65
+ }
66
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3ByaXRlcy1odWUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvcGFpbnRlci9zcHJpdGVzL3Nwcml0ZXMtaHVlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUdBLE9BQU8sRUFBRSxpQkFBaUIsRUFBNEIsTUFBTSxXQUFXLENBQUE7QUFDdkUsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sV0FBVyxDQUFBO0FBQ3BELE9BQU8sRUFBRSx5QkFBeUIsRUFBRSxNQUFNLG9CQUFvQixDQUFBO0FBSTlELE1BQU0sT0FBTyxvQkFFWCxTQUFRLHlCQUEwQztJQUdoRCxZQUFZLE9BQW1CLEVBQUUsT0FBaUM7UUFDOUQsS0FBSyxFQUFFLENBQUE7UUFDUCxJQUFJLENBQUMsTUFBTSxHQUFHLElBQUksaUJBQWlCLENBQUksT0FBTyxrQ0FDdkMsT0FBTyxLQUNWLFVBQVUsRUFBRTtnQkFDUixNQUFNLEVBQUUsT0FBTzthQUNsQixFQUNELGdCQUFnQixDQUFDLFVBQVUsRUFBRSxHQUFHLEVBQUUsS0FBSyxFQUFFLE1BQU07Z0JBQzNDLElBQUksR0FBRyxLQUFLLEtBQUssSUFBSSxPQUFPLEtBQUssS0FBSyxRQUFRO29CQUFFLE9BQU07Z0JBRXRELFVBQVUsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLEtBQUssRUFBRSxNQUFNLENBQUMsQ0FBQTtZQUN4QyxDQUFDLEVBQ0QsUUFBUSxFQUFFO2dCQUNOLE1BQU0sRUFBRSxPQUFPO2FBQ2xCLEVBQ0QsSUFBSSxFQUFFO2dCQUNGLElBQUksRUFBRSxDQUFDLGtCQUFrQixDQUFDO2FBQzdCLEVBQ0QsSUFBSSxFQUFFO2dCQUNGLFNBQVMsRUFBRSx3QkFBd0IsRUFBRTtnQkFDckMsSUFBSSxFQUFFLENBQUMsMENBQTBDLENBQUM7YUFDckQsSUFDSCxDQUFBO0lBQ04sQ0FBQztJQUVELElBQUksS0FBSztRQUNMLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUE7SUFDNUIsQ0FBQztJQUVELElBQUksUUFBUTtRQUNSLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUE7SUFDL0IsQ0FBQztJQUVELElBQUk7UUFDQSxPQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxFQUFFLENBQUE7SUFDN0IsQ0FBQztJQUVELE9BQU8sQ0FBQyxRQUE2QjtRQUNqQyxJQUFJLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsQ0FBQTtJQUNqQyxDQUFDO0lBRUQsTUFBTSxDQUFDLElBQTRCO1FBQy9CLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUE7SUFDbkMsQ0FBQztJQUVEOztPQUVHO0lBQ0gsS0FBSztRQUNELElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxFQUFFLENBQUE7SUFDdkIsQ0FBQztJQUVELEdBQUcsQ0FBQyxJQUEwRDtRQUMxRCxNQUFNLElBQUksR0FBRyxnQkFDVCxHQUFHLEVBQUUsQ0FBQyxJQUNILElBQUksQ0FDMkMsQ0FBQTtRQUN0RCxNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQTtRQUNwQyxNQUFNLENBQUMsR0FBRyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUE7UUFDckIsT0FBTyxNQUFNLENBQUE7SUFDakIsQ0FBQztJQUVELE1BQU0sQ0FBQyxNQUFzQjtRQUN6QixJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQTtJQUM5QixDQUFDO0lBRUQsZ0NBQWdDO0lBQ2hDLDhCQUE4QjtJQUM5Qiw2REFBNkQ7SUFDN0QsSUFBSTtJQUVKLE1BQU07UUFDRixJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sRUFBRSxDQUFBO0lBQ3hCLENBQUM7SUFFRCxLQUFLO1FBQ0QsSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLEVBQUUsQ0FBQTtJQUN2QixDQUFDO0lBRUQsS0FBSyxDQUFDLE9BQWdCO1FBQ2xCLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFBO0lBQzlCLENBQUM7Q0FDSiJ9
@@ -1,9 +1,14 @@
1
1
  import type { TgdContext } from "../../context";
2
- import type { TgdInterfaceTransformable } from "../../interface";
3
- import { TgdTransfo } from "../../math";
2
+ import { TgdDataset, TgdDatasetTypeRecord } from "../../dataset";
3
+ import { TgdTransfo, TgdVec2 } from "../../math";
4
+ import { TgdProgram } from "../../program";
5
+ import { TgdCodeBloc, TgdCodeFunctions } from "../../shader";
4
6
  import type { TgdTexture2D } from "../../texture";
5
- import { TgdPainter } from "../painter";
7
+ import { TgdVertexArray } from "../../vao";
8
+ import { AccessorProxy } from "./accessor";
6
9
  import type { AtlasItem, TgdSprite } from "./types";
10
+ import { WebglAttributeType } from "../../types";
11
+ import { TgdPainterSpritesAbstract } from "./sprites-abstract";
7
12
  export type { TgdSprite } from "./types";
8
13
  export type TgdPainterSpritesAtlas = AtlasItem[];
9
14
  export interface TgdPainterSpritesOptions {
@@ -22,40 +27,78 @@ export interface TgdPainterSpritesOptions {
22
27
  * Default: 1
23
28
  */
24
29
  initialCapacity?: number;
30
+ attributes?: TgdDatasetTypeRecord;
31
+ attributesSetter?(attributes: Record<keyof TgdDatasetTypeRecord, AccessorProxy>, key: string | symbol, value: unknown, offset: number): void;
32
+ varyings?: {
33
+ [name: string]: WebglAttributeType;
34
+ };
35
+ vert?: {
36
+ functions?: TgdCodeFunctions | (() => TgdCodeFunctions);
37
+ code?: TgdCodeBloc | (() => TgdCodeBloc);
38
+ };
39
+ frag?: {
40
+ functions?: TgdCodeFunctions | (() => TgdCodeFunctions);
41
+ code?: TgdCodeBloc | (() => TgdCodeBloc);
42
+ };
25
43
  }
26
- export declare class TgdPainterSprites extends TgdPainter implements TgdInterfaceTransformable {
27
- private readonly context;
28
- private readonly options;
44
+ type Sprite<T extends TgdSprite> = T & {
45
+ _offset: number;
46
+ };
47
+ export declare class TgdPainterSprites<T extends TgdSprite = TgdSprite> extends TgdPainterSpritesAbstract<TgdSprite, T> {
48
+ protected readonly context: TgdContext;
49
+ protected readonly options: TgdPainterSpritesOptions;
29
50
  readonly transfo: TgdTransfo;
30
51
  readonly texture: TgdTexture2D;
31
- private readonly datasetInstances;
32
- private readonly prg;
33
- private readonly vao;
52
+ protected readonly datasetInstances: TgdDataset;
53
+ protected readonly prg: TgdProgram;
54
+ protected readonly vao: TgdVertexArray;
34
55
  /**
35
56
  * Number of actual sprites.
36
57
  *
37
58
  * The capacity can be get with `this.dataset.count`.
38
59
  */
39
- private _count;
40
- private readonly attPosition;
41
- private readonly attCos;
42
- private readonly attSin;
43
- private readonly attScale;
44
- private readonly attUV;
45
- private readonly attSize;
46
- private readonly attOrigin;
47
- private readonly uniAtlasRatio;
48
- private dirty;
60
+ protected _count: number;
61
+ protected readonly sprites: Sprite<T>[];
62
+ /**
63
+ * Map[id] = index in array `sprites`
64
+ */
65
+ protected readonly spriteIndexes: Map<number, number>;
66
+ protected readonly attPosition: AccessorProxy;
67
+ protected readonly attCos: AccessorProxy;
68
+ protected readonly attSin: AccessorProxy;
69
+ protected readonly attScale: AccessorProxy;
70
+ protected readonly attUV: AccessorProxy;
71
+ protected readonly attSize: AccessorProxy;
72
+ protected readonly attOrigin: AccessorProxy;
73
+ protected readonly attributes: Record<string, AccessorProxy>;
74
+ protected readonly uniAtlasRatio: TgdVec2;
75
+ protected dirty: boolean;
76
+ private static id;
49
77
  constructor(context: TgdContext, options: TgdPainterSpritesOptions);
78
+ list(): ReadonlyArray<T>;
79
+ forEach(callback: (sprite: T) => void): void;
80
+ filter(test: (sprite: T) => boolean): ReadonlyArray<T>;
50
81
  get count(): number;
51
- private set count(value);
82
+ protected set count(value: number);
52
83
  get capacity(): number;
53
- private set capacity(value);
54
- spriteCreate(data?: Partial<TgdSprite>): TgdSprite;
55
- spriteDelete(sprite: TgdSprite): void;
84
+ protected set capacity(value: number);
85
+ /**
86
+ * Delete all sprites.
87
+ */
88
+ clear(): void;
89
+ add(data: Omit<T, keyof TgdSprite> & Partial<Omit<T, "id">>): T;
90
+ protected initialize(sprite: T, info: T): void;
91
+ protected interceptSetter(key: string | symbol, value: unknown, { offset, atlas, }: {
92
+ id: number;
93
+ offset: number;
94
+ atlas: TgdPainterSpritesAtlas;
95
+ }): boolean;
96
+ remove(sprite: {
97
+ id: number;
98
+ }): boolean;
56
99
  delete(): void;
57
100
  paint(): void;
58
101
  debug(caption?: string): void;
59
- private updateAccessors;
102
+ protected updateAccessors(): void;
60
103
  }
61
104
  //# sourceMappingURL=sprites.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"sprites.d.ts","sourceRoot":"","sources":["../../../src/painter/sprites/sprites.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,cAAc,CAAA;AAG9C,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,gBAAgB,CAAA;AAC/D,OAAO,EAAE,UAAU,EAAW,MAAM,WAAW,CAAA;AAG/C,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,cAAc,CAAA;AAEhD,OAAO,EAAE,UAAU,EAAE,MAAM,YAAY,CAAA;AAGvC,OAAO,KAAK,EAAY,SAAS,EAAE,SAAS,EAAE,MAAM,SAAS,CAAA;AAE7D,YAAY,EAAE,SAAS,EAAE,MAAM,SAAS,CAAA;AACxC,MAAM,MAAM,sBAAsB,GAAG,SAAS,EAAE,CAAA;AAEhD,MAAM,WAAW,wBAAwB;IACrC,OAAO,EAAE,YAAY,CAAA;IACrB,KAAK,EAAE,sBAAsB,CAAA;IAC7B;;;;OAIG;IACH,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB;;;;;OAKG;IACH,eAAe,CAAC,EAAE,MAAM,CAAA;CAC3B;AAID,qBAAa,iBACT,SAAQ,UACR,YAAW,yBAAyB;IAyBhC,OAAO,CAAC,QAAQ,CAAC,OAAO;IACxB,OAAO,CAAC,QAAQ,CAAC,OAAO;IAxB5B,SAAgB,OAAO,aAAmB;IAC1C,SAAgB,OAAO,EAAE,YAAY,CAAA;IAErC,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAY;IAC7C,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAY;IAChC,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAgB;IACpC;;;;OAIG;IACH,OAAO,CAAC,MAAM,CAAI;IAClB,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAmC;IAC/D,OAAO,CAAC,QAAQ,CAAC,MAAM,CAA8B;IACrD,OAAO,CAAC,QAAQ,CAAC,MAAM,CAA8B;IACrD,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAgC;IACzD,OAAO,CAAC,QAAQ,CAAC,KAAK,CAA6B;IACnD,OAAO,CAAC,QAAQ,CAAC,OAAO,CAA+B;IACvD,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAiC;IAC3D,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAoB;IAClD,OAAO,CAAC,KAAK,CAAO;gBAGC,OAAO,EAAE,UAAU,EACnB,OAAO,EAAE,wBAAwB;IAkHtD,IAAI,KAAK,IAGgB,MAAM,CAD9B;IACD,OAAO,KAAK,KAAK,QAMhB;IAED,IAAI,QAAQ,IAGgB,MAAM,CADjC;IACD,OAAO,KAAK,QAAQ,QAInB;IAED,YAAY,CAAC,IAAI,GAAE,OAAO,CAAC,SAAS,CAAM,GAAG,SAAS;IA2BtD,YAAY,CAAC,MAAM,EAAE,SAAS;IAI9B,MAAM,IAAI,IAAI;IAKd,KAAK,IAAI,IAAI;IAmBb,KAAK,CAAC,OAAO,CAAC,EAAE,MAAM;IA8CtB,OAAO,CAAC,eAAe;CAU1B"}
1
+ {"version":3,"file":"sprites.d.ts","sourceRoot":"","sources":["../../../src/painter/sprites/sprites.ts"],"names":[],"mappings":"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"}