@tolokoban/tgd 2.0.78 → 2.0.80

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 (142) hide show
  1. package/lib/dist/camera/camera.d.ts +14 -2
  2. package/lib/dist/camera/camera.d.ts.map +1 -1
  3. package/lib/dist/camera/camera.js +89 -8
  4. package/lib/dist/controller/camera/orbit.d.ts +3 -3
  5. package/lib/dist/controller/camera/orbit.d.ts.map +1 -1
  6. package/lib/dist/controller/camera/orbit.js +5 -6
  7. package/lib/dist/dataset/dataset.d.ts +8 -2
  8. package/lib/dist/dataset/dataset.d.ts.map +1 -1
  9. package/lib/dist/dataset/dataset.js +23 -14
  10. package/lib/dist/debug/console.d.ts +5 -0
  11. package/lib/dist/debug/console.d.ts.map +1 -1
  12. package/lib/dist/debug/console.js +22 -1
  13. package/lib/dist/geometry/box.d.ts +4 -2
  14. package/lib/dist/geometry/box.d.ts.map +1 -1
  15. package/lib/dist/geometry/box.js +26 -20
  16. package/lib/dist/geometry/index.d.ts +1 -0
  17. package/lib/dist/geometry/index.d.ts.map +1 -1
  18. package/lib/dist/geometry/index.js +2 -1
  19. package/lib/dist/geometry/sphere-ico.d.ts +19 -0
  20. package/lib/dist/geometry/sphere-ico.d.ts.map +1 -0
  21. package/lib/dist/geometry/sphere-ico.js +78 -0
  22. package/lib/dist/index.d.ts +1 -0
  23. package/lib/dist/index.d.ts.map +1 -1
  24. package/lib/dist/index.js +2 -1
  25. package/lib/dist/material/global.d.ts +3 -3
  26. package/lib/dist/material/global.d.ts.map +1 -1
  27. package/lib/dist/material/global.js +9 -9
  28. package/lib/dist/math/transfo.d.ts +4 -3
  29. package/lib/dist/math/transfo.d.ts.map +1 -1
  30. package/lib/dist/math/transfo.js +2 -2
  31. package/lib/dist/math/vec2.d.ts +3 -3
  32. package/lib/dist/math/vec2.d.ts.map +1 -1
  33. package/lib/dist/math/vec2.js +4 -4
  34. package/lib/dist/math/vec3.d.ts +5 -5
  35. package/lib/dist/math/vec3.d.ts.map +1 -1
  36. package/lib/dist/math/vec3.js +5 -4
  37. package/lib/dist/math/vec4.d.ts +4 -4
  38. package/lib/dist/math/vec4.d.ts.map +1 -1
  39. package/lib/dist/math/vec4.js +18 -17
  40. package/lib/dist/painter/debug/index.d.ts +1 -0
  41. package/lib/dist/painter/debug/index.d.ts.map +1 -1
  42. package/lib/dist/painter/debug/index.js +2 -1
  43. package/lib/dist/painter/debug/point/index.d.ts +2 -0
  44. package/lib/dist/painter/debug/point/index.d.ts.map +1 -0
  45. package/lib/dist/painter/debug/point/index.js +2 -0
  46. package/lib/dist/painter/debug/point/point.d.ts +17 -0
  47. package/lib/dist/painter/debug/point/point.d.ts.map +1 -0
  48. package/lib/dist/painter/debug/point/point.js +55 -0
  49. package/lib/dist/painter/debug/stencil/stencil.d.ts +1 -1
  50. package/lib/dist/painter/debug/stencil/stencil.d.ts.map +1 -1
  51. package/lib/dist/painter/debug/stencil/stencil.js +5 -5
  52. package/lib/dist/painter/group.d.ts +11 -3
  53. package/lib/dist/painter/group.d.ts.map +1 -1
  54. package/lib/dist/painter/group.js +24 -10
  55. package/lib/dist/painter/index.d.ts +2 -0
  56. package/lib/dist/painter/index.d.ts.map +1 -1
  57. package/lib/dist/painter/index.js +3 -1
  58. package/lib/dist/painter/lod/cache.d.ts +9 -0
  59. package/lib/dist/painter/lod/cache.d.ts.map +1 -0
  60. package/lib/dist/painter/lod/cache.js +60 -0
  61. package/lib/dist/painter/lod/index.d.ts +2 -0
  62. package/lib/dist/painter/lod/index.d.ts.map +1 -0
  63. package/lib/dist/painter/lod/index.js +2 -0
  64. package/lib/dist/painter/lod/lod.d.ts +61 -0
  65. package/lib/dist/painter/lod/lod.d.ts.map +1 -0
  66. package/lib/dist/painter/lod/lod.js +72 -0
  67. package/lib/dist/painter/lod/octree.d.ts +8 -0
  68. package/lib/dist/painter/lod/octree.d.ts.map +1 -0
  69. package/lib/dist/painter/lod/octree.js +61 -0
  70. package/lib/dist/painter/mesh/mesh/mesh.d.ts +6 -6
  71. package/lib/dist/painter/mesh/mesh/mesh.d.ts.map +1 -1
  72. package/lib/dist/painter/mesh/mesh/mesh.js +7 -6
  73. package/lib/dist/painter/node/node.d.ts +4 -3
  74. package/lib/dist/painter/node/node.d.ts.map +1 -1
  75. package/lib/dist/painter/node/node.js +27 -12
  76. package/lib/dist/painter/painter.d.ts +1 -0
  77. package/lib/dist/painter/painter.d.ts.map +1 -1
  78. package/lib/dist/painter/painter.js +4 -1
  79. package/lib/dist/painter/sprites/accessor.d.ts +13 -0
  80. package/lib/dist/painter/sprites/accessor.d.ts.map +1 -0
  81. package/lib/dist/painter/sprites/accessor.js +24 -0
  82. package/lib/dist/painter/sprites/index.d.ts +2 -0
  83. package/lib/dist/painter/sprites/index.d.ts.map +1 -0
  84. package/lib/dist/painter/sprites/index.js +2 -0
  85. package/lib/dist/painter/sprites/sprite.d.ts +31 -0
  86. package/lib/dist/painter/sprites/sprite.d.ts.map +1 -0
  87. package/lib/dist/painter/sprites/sprite.js +80 -0
  88. package/lib/dist/painter/sprites/sprites.d.ts +61 -0
  89. package/lib/dist/painter/sprites/sprites.d.ts.map +1 -0
  90. package/lib/dist/painter/sprites/sprites.js +259 -0
  91. package/lib/dist/painter/sprites/types.d.ts +38 -0
  92. package/lib/dist/painter/sprites/types.d.ts.map +1 -0
  93. package/lib/dist/painter/sprites/types.js +2 -0
  94. package/lib/dist/program/program.d.ts +2 -1
  95. package/lib/dist/program/program.d.ts.map +1 -1
  96. package/lib/dist/program/program.js +5 -1
  97. package/lib/dist/texture/texture-depth.d.ts.map +1 -1
  98. package/lib/dist/texture/texture-depth.js +2 -4
  99. package/lib/dist/texture/texture2d.d.ts +7 -1
  100. package/lib/dist/texture/texture2d.d.ts.map +1 -1
  101. package/lib/dist/texture/texture2d.js +14 -3
  102. package/lib/dist/texture/types.d.ts +9 -0
  103. package/lib/dist/texture/types.d.ts.map +1 -0
  104. package/lib/dist/texture/types.js +20 -0
  105. package/lib/dist/time/index.d.ts +2 -0
  106. package/lib/dist/time/index.d.ts.map +1 -0
  107. package/lib/dist/time/index.js +2 -0
  108. package/lib/dist/time/interval/index.d.ts +2 -0
  109. package/lib/dist/time/interval/index.d.ts.map +1 -0
  110. package/lib/dist/time/interval/index.js +2 -0
  111. package/lib/dist/time/interval/interval.d.ts +16 -0
  112. package/lib/dist/time/interval/interval.d.ts.map +1 -0
  113. package/lib/dist/time/interval/interval.js +24 -0
  114. package/lib/dist/types/gltf.d.ts +1 -1
  115. package/lib/dist/types/gltf.d.ts.map +1 -1
  116. package/lib/dist/types/gltf.js +2 -2
  117. package/lib/dist/types/guards.d.ts +86 -4
  118. package/lib/dist/types/guards.d.ts.map +1 -1
  119. package/lib/dist/types/guards.js +180 -44
  120. package/lib/dist/utils/canvas.js +1 -1
  121. package/lib/dist/vao/vao.d.ts +3 -3
  122. package/lib/dist/vao/vao.d.ts.map +1 -1
  123. package/lib/dist/vao/vao.js +1 -1
  124. package/package.json +1 -1
  125. package/lib/dist/material/bsdf.d.ts +0 -25
  126. package/lib/dist/material/bsdf.d.ts.map +0 -1
  127. package/lib/dist/material/bsdf.js +0 -98
  128. package/lib/dist/material/principled.d.ts +0 -25
  129. package/lib/dist/material/principled.d.ts.map +0 -1
  130. package/lib/dist/material/principled.js +0 -112
  131. package/lib/dist/material/solid.d.ts +0 -22
  132. package/lib/dist/material/solid.d.ts.map +0 -1
  133. package/lib/dist/material/solid.js +0 -20
  134. package/lib/dist/types/input-keyboard.d.ts +0 -8
  135. package/lib/dist/types/input-keyboard.d.ts.map +0 -1
  136. package/lib/dist/types/input-keyboard.js +0 -2
  137. package/lib/dist/utils/math.d.ts +0 -19
  138. package/lib/dist/utils/math.d.ts.map +0 -1
  139. package/lib/dist/utils/math.js +0 -59
  140. package/lib/dist/utils/math.test.d.ts +0 -2
  141. package/lib/dist/utils/math.test.d.ts.map +0 -1
  142. package/lib/dist/utils/math.test.js +0 -22
@@ -0,0 +1,13 @@
1
+ import { TgdDataset } from "../../dataset";
2
+ import { Accessor } from "./types";
3
+ export declare class AccessorProxy implements Accessor {
4
+ readonly attributeName: string;
5
+ private accessor;
6
+ private _dataset;
7
+ constructor(attributeName: string);
8
+ get dataset(): TgdDataset | undefined;
9
+ set dataset(value: TgdDataset | undefined);
10
+ readonly get: (index: number, dimension?: number | undefined) => number;
11
+ readonly set: (value: number, index: number, dimension?: number | undefined) => void;
12
+ }
13
+ //# sourceMappingURL=accessor.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"accessor.d.ts","sourceRoot":"","sources":["../../../src/painter/sprites/accessor.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAA;AACzC,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAA;AAElC,qBAAa,aAAc,YAAW,QAAQ;aAId,aAAa,EAAE,MAAM;IAHjD,OAAO,CAAC,QAAQ,CAAwB;IACxC,OAAO,CAAC,QAAQ,CAAoC;gBAExB,aAAa,EAAE,MAAM;IAEjD,IAAI,OAAO,IAGQ,UAAU,GAAG,SAAS,CADxC;IACD,IAAI,OAAO,CAAC,KAAK,EAAE,UAAU,GAAG,SAAS,EAKxC;IACD,QAAQ,CAAC,GAAG,GAAI,OAAO,MAAM,EAAE,YAAY,MAAM,GAAG,SAAS,YAChB;IAE7C,QAAQ,CAAC,GAAG,GACR,OAAO,MAAM,EACb,OAAO,MAAM,EACb,YAAY,MAAM,GAAG,SAAS,UAMjC;CACJ"}
@@ -0,0 +1,24 @@
1
+ export class AccessorProxy {
2
+ constructor(attributeName) {
3
+ this.attributeName = attributeName;
4
+ this.accessor = null;
5
+ this._dataset = undefined;
6
+ this.get = (index, dimension) => { var _a, _b; return (_b = (_a = this.accessor) === null || _a === void 0 ? void 0 : _a.get(index, dimension)) !== null && _b !== void 0 ? _b : 0; };
7
+ this.set = (value, index, dimension) => {
8
+ const { accessor } = this;
9
+ if (!accessor)
10
+ return;
11
+ accessor.set(value, index, dimension);
12
+ };
13
+ }
14
+ get dataset() {
15
+ return this._dataset;
16
+ }
17
+ set dataset(value) {
18
+ this._dataset = value;
19
+ if (value) {
20
+ this.accessor = value.getAttribAccessor(this.attributeName);
21
+ }
22
+ }
23
+ }
24
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWNjZXNzb3IuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvcGFpbnRlci9zcHJpdGVzL2FjY2Vzc29yLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUdBLE1BQU0sT0FBTyxhQUFhO0lBSXRCLFlBQTRCLGFBQXFCO1FBQXJCLGtCQUFhLEdBQWIsYUFBYSxDQUFRO1FBSHpDLGFBQVEsR0FBb0IsSUFBSSxDQUFBO1FBQ2hDLGFBQVEsR0FBMkIsU0FBUyxDQUFBO1FBYTNDLFFBQUcsR0FBRyxDQUFDLEtBQWEsRUFBRSxTQUE4QixFQUFFLEVBQUUsZUFDN0QsT0FBQSxNQUFBLE1BQUEsSUFBSSxDQUFDLFFBQVEsMENBQUUsR0FBRyxDQUFDLEtBQUssRUFBRSxTQUFTLENBQUMsbUNBQUksQ0FBQyxDQUFBLEVBQUEsQ0FBQTtRQUVwQyxRQUFHLEdBQUcsQ0FDWCxLQUFhLEVBQ2IsS0FBYSxFQUNiLFNBQThCLEVBQ2hDLEVBQUU7WUFDQSxNQUFNLEVBQUUsUUFBUSxFQUFFLEdBQUcsSUFBSSxDQUFBO1lBQ3pCLElBQUksQ0FBQyxRQUFRO2dCQUFFLE9BQU07WUFFckIsUUFBUSxDQUFDLEdBQUcsQ0FBQyxLQUFLLEVBQUUsS0FBSyxFQUFFLFNBQVMsQ0FBQyxDQUFBO1FBQ3pDLENBQUMsQ0FBQTtJQXZCbUQsQ0FBQztJQUVyRCxJQUFJLE9BQU87UUFDUCxPQUFPLElBQUksQ0FBQyxRQUFRLENBQUE7SUFDeEIsQ0FBQztJQUNELElBQUksT0FBTyxDQUFDLEtBQTZCO1FBQ3JDLElBQUksQ0FBQyxRQUFRLEdBQUcsS0FBSyxDQUFBO1FBQ3JCLElBQUksS0FBSyxFQUFFLENBQUM7WUFDUixJQUFJLENBQUMsUUFBUSxHQUFHLEtBQUssQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUE7UUFDL0QsQ0FBQztJQUNMLENBQUM7Q0FjSiJ9
@@ -0,0 +1,2 @@
1
+ export * from "./sprites";
2
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/painter/sprites/index.ts"],"names":[],"mappings":"AAAA,cAAc,WAAW,CAAA"}
@@ -0,0 +1,2 @@
1
+ export * from "./sprites.js";
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvcGFpbnRlci9zcHJpdGVzL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsV0FBVyxDQUFBIn0=
@@ -0,0 +1,31 @@
1
+ import type { Accessor, AtlasItem, TgdSprite } from "./types";
2
+ export declare class Sprite implements TgdSprite {
3
+ private readonly atlas;
4
+ private readonly raiseDirtyFlag;
5
+ private readonly attPosition;
6
+ private readonly attCos;
7
+ private readonly attSin;
8
+ private readonly attScale;
9
+ private readonly attUV;
10
+ private readonly attSize;
11
+ private readonly attOrigin;
12
+ offset: number;
13
+ private _index;
14
+ private _angle;
15
+ constructor(atlas: AtlasItem[], raiseDirtyFlag: () => void, attPosition: Accessor, attCos: Accessor, attSin: Accessor, attScale: Accessor, attUV: Accessor, attSize: Accessor, attOrigin: Accessor);
16
+ get index(): number;
17
+ set index(value: number);
18
+ get x(): number;
19
+ set x(value: number);
20
+ get y(): number;
21
+ set y(value: number);
22
+ get z(): number;
23
+ set z(value: number);
24
+ get angle(): number;
25
+ set angle(value: number);
26
+ get scaleX(): number;
27
+ set scaleX(value: number);
28
+ get scaleY(): number;
29
+ set scaleY(value: number);
30
+ }
31
+ //# sourceMappingURL=sprite.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sprite.d.ts","sourceRoot":"","sources":["../../../src/painter/sprites/sprite.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,SAAS,CAAA;AAE7D,qBAAa,MAAO,YAAW,SAAS;IAOhC,OAAO,CAAC,QAAQ,CAAC,KAAK;IACtB,OAAO,CAAC,QAAQ,CAAC,cAAc;IAC/B,OAAO,CAAC,QAAQ,CAAC,WAAW;IAC5B,OAAO,CAAC,QAAQ,CAAC,MAAM;IACvB,OAAO,CAAC,QAAQ,CAAC,MAAM;IACvB,OAAO,CAAC,QAAQ,CAAC,QAAQ;IACzB,OAAO,CAAC,QAAQ,CAAC,KAAK;IACtB,OAAO,CAAC,QAAQ,CAAC,OAAO;IACxB,OAAO,CAAC,QAAQ,CAAC,SAAS;IAdvB,MAAM,SAAI;IAEjB,OAAO,CAAC,MAAM,CAAI;IAClB,OAAO,CAAC,MAAM,CAAI;gBAGG,KAAK,EAAE,SAAS,EAAE,EAClB,cAAc,EAAE,MAAM,IAAI,EAC1B,WAAW,EAAE,QAAQ,EACrB,MAAM,EAAE,QAAQ,EAChB,MAAM,EAAE,QAAQ,EAChB,QAAQ,EAAE,QAAQ,EAClB,KAAK,EAAE,QAAQ,EACf,OAAO,EAAE,QAAQ,EACjB,SAAS,EAAE,QAAQ;IAGxC,IAAI,KAAK,IAGQ,MAAM,CADtB;IACD,IAAI,KAAK,CAAC,KAAK,EAAE,MAAM,EAYtB;IAED,IAAI,CAAC,IAGQ,MAAM,CADlB;IACD,IAAI,CAAC,CAAC,KAAK,EAAE,MAAM,EAGlB;IAED,IAAI,CAAC,IAGQ,MAAM,CADlB;IACD,IAAI,CAAC,CAAC,KAAK,EAAE,MAAM,EAGlB;IAED,IAAI,CAAC,IAGQ,MAAM,CADlB;IACD,IAAI,CAAC,CAAC,KAAK,EAAE,MAAM,EAGlB;IAED,IAAI,KAAK,IAGQ,MAAM,CADtB;IACD,IAAI,KAAK,CAAC,KAAK,EAAE,MAAM,EAOtB;IAED,IAAI,MAAM,IAGQ,MAAM,CADvB;IACD,IAAI,MAAM,CAAC,KAAK,EAAE,MAAM,EAGvB;IAED,IAAI,MAAM,IAGQ,MAAM,CADvB;IACD,IAAI,MAAM,CAAC,KAAK,EAAE,MAAM,EAGvB;CACJ"}
@@ -0,0 +1,80 @@
1
+ export class Sprite {
2
+ constructor(atlas, raiseDirtyFlag, attPosition, attCos, attSin, attScale, attUV, attSize, attOrigin) {
3
+ this.atlas = atlas;
4
+ this.raiseDirtyFlag = raiseDirtyFlag;
5
+ this.attPosition = attPosition;
6
+ this.attCos = attCos;
7
+ this.attSin = attSin;
8
+ this.attScale = attScale;
9
+ this.attUV = attUV;
10
+ this.attSize = attSize;
11
+ this.attOrigin = attOrigin;
12
+ this.offset = 0;
13
+ this._index = 0;
14
+ this._angle = 0;
15
+ }
16
+ get index() {
17
+ return this._index;
18
+ }
19
+ set index(value) {
20
+ var _a, _b, _c;
21
+ this._index = value;
22
+ const item = this.atlas[value];
23
+ const { offset } = this;
24
+ this.attUV.set(item.x, offset, 0);
25
+ this.attUV.set(item.y, offset, 1);
26
+ this.attUV.set((_a = item.z) !== null && _a !== void 0 ? _a : 0, offset, 2);
27
+ this.attSize.set(item.width, offset, 0);
28
+ this.attSize.set(item.height, offset, 1);
29
+ this.attOrigin.set((_b = item.originX) !== null && _b !== void 0 ? _b : 0, offset, 0);
30
+ this.attOrigin.set((_c = item.originY) !== null && _c !== void 0 ? _c : 0, offset, 1);
31
+ this.raiseDirtyFlag();
32
+ }
33
+ get x() {
34
+ return this.attPosition.get(this.offset, 0);
35
+ }
36
+ set x(value) {
37
+ this.attPosition.set(value, this.offset, 0);
38
+ this.raiseDirtyFlag();
39
+ }
40
+ get y() {
41
+ return this.attPosition.get(this.offset, 1);
42
+ }
43
+ set y(value) {
44
+ this.attPosition.set(value, this.offset, 1);
45
+ this.raiseDirtyFlag();
46
+ }
47
+ get z() {
48
+ return this.attPosition.get(this.offset, 2);
49
+ }
50
+ set z(value) {
51
+ this.attPosition.set(value, this.offset, 2);
52
+ this.raiseDirtyFlag();
53
+ }
54
+ get angle() {
55
+ return this._angle;
56
+ }
57
+ set angle(value) {
58
+ if (this._angle === value)
59
+ return;
60
+ this._angle = value;
61
+ this.attCos.set(Math.cos(value), this.offset);
62
+ this.attSin.set(Math.sin(value), this.offset);
63
+ this.raiseDirtyFlag();
64
+ }
65
+ get scaleX() {
66
+ return this.attScale.get(this.offset, 0);
67
+ }
68
+ set scaleX(value) {
69
+ this.attScale.set(value, this.offset, 0);
70
+ this.raiseDirtyFlag();
71
+ }
72
+ get scaleY() {
73
+ return this.attScale.get(this.offset, 1);
74
+ }
75
+ set scaleY(value) {
76
+ this.attScale.set(value, this.offset, 1);
77
+ this.raiseDirtyFlag();
78
+ }
79
+ }
80
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3ByaXRlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL3BhaW50ZXIvc3ByaXRlcy9zcHJpdGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUEsTUFBTSxPQUFPLE1BQU07SUFNZixZQUNxQixLQUFrQixFQUNsQixjQUEwQixFQUMxQixXQUFxQixFQUNyQixNQUFnQixFQUNoQixNQUFnQixFQUNoQixRQUFrQixFQUNsQixLQUFlLEVBQ2YsT0FBaUIsRUFDakIsU0FBbUI7UUFSbkIsVUFBSyxHQUFMLEtBQUssQ0FBYTtRQUNsQixtQkFBYyxHQUFkLGNBQWMsQ0FBWTtRQUMxQixnQkFBVyxHQUFYLFdBQVcsQ0FBVTtRQUNyQixXQUFNLEdBQU4sTUFBTSxDQUFVO1FBQ2hCLFdBQU0sR0FBTixNQUFNLENBQVU7UUFDaEIsYUFBUSxHQUFSLFFBQVEsQ0FBVTtRQUNsQixVQUFLLEdBQUwsS0FBSyxDQUFVO1FBQ2YsWUFBTyxHQUFQLE9BQU8sQ0FBVTtRQUNqQixjQUFTLEdBQVQsU0FBUyxDQUFVO1FBZGpDLFdBQU0sR0FBRyxDQUFDLENBQUE7UUFFVCxXQUFNLEdBQUcsQ0FBQyxDQUFBO1FBQ1YsV0FBTSxHQUFHLENBQUMsQ0FBQTtJQVlmLENBQUM7SUFFSixJQUFJLEtBQUs7UUFDTCxPQUFPLElBQUksQ0FBQyxNQUFNLENBQUE7SUFDdEIsQ0FBQztJQUNELElBQUksS0FBSyxDQUFDLEtBQWE7O1FBQ25CLElBQUksQ0FBQyxNQUFNLEdBQUcsS0FBSyxDQUFBO1FBQ25CLE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUE7UUFDOUIsTUFBTSxFQUFFLE1BQU0sRUFBRSxHQUFHLElBQUksQ0FBQTtRQUN2QixJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxFQUFFLE1BQU0sRUFBRSxDQUFDLENBQUMsQ0FBQTtRQUNqQyxJQUFJLENBQUMsS0FBSyxDQUFDLEdB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
@@ -0,0 +1,61 @@
1
+ import type { TgdContext } from "../../context";
2
+ import type { TgdInterfaceTransformable } from "../../interface";
3
+ import { TgdTransfo } from "../../math";
4
+ import type { TgdTexture2D } from "../../texture";
5
+ import { TgdPainter } from "../painter";
6
+ import type { AtlasItem, TgdSprite } from "./types";
7
+ export type { TgdSprite } from "./types";
8
+ export type TgdPainterSpritesAtlas = AtlasItem[];
9
+ export interface TgdPainterSpritesOptions {
10
+ texture: TgdTexture2D;
11
+ atlas: TgdPainterSpritesAtlas;
12
+ /**
13
+ * The biggest square contained in the atlas has a size of `atlasUnit`.
14
+ *
15
+ * Default: 1
16
+ */
17
+ atlasUnit?: number;
18
+ /**
19
+ * If there is not enough space when adding a sprite,
20
+ * the capacity will be doubled.
21
+ *
22
+ * Default: 1
23
+ */
24
+ initialCapacity?: number;
25
+ }
26
+ export declare class TgdPainterSprites extends TgdPainter implements TgdInterfaceTransformable {
27
+ private readonly context;
28
+ private readonly options;
29
+ readonly transfo: TgdTransfo;
30
+ readonly texture: TgdTexture2D;
31
+ private readonly datasetInstances;
32
+ private readonly prg;
33
+ private readonly vao;
34
+ /**
35
+ * Number of actual sprites.
36
+ *
37
+ * The capacity can be get with `this.dataset.count`.
38
+ */
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;
49
+ constructor(context: TgdContext, options: TgdPainterSpritesOptions);
50
+ get count(): number;
51
+ private set count(value);
52
+ get capacity(): number;
53
+ private set capacity(value);
54
+ spriteCreate(data?: Partial<TgdSprite>): TgdSprite;
55
+ spriteDelete(sprite: TgdSprite): void;
56
+ delete(): void;
57
+ paint(): void;
58
+ debug(caption?: string): void;
59
+ private updateAccessors;
60
+ }
61
+ //# sourceMappingURL=sprites.d.ts.map
@@ -0,0 +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"}
@@ -0,0 +1,259 @@
1
+ import { TgdDataset } from "./../../dataset/index.js";
2
+ import { TgdConsole } from "./../../debug/index.js";
3
+ import { TgdTransfo, TgdVec2 } from "./../../math/index.js";
4
+ import { TgdProgram } from "./../../program/index.js";
5
+ import { TgdShaderFragment, TgdShaderVertex } from "./../../shader/index.js";
6
+ import { TgdVertexArray } from "./../../vao/index.js";
7
+ import { TgdPainter } from "../painter.js";
8
+ import { AccessorProxy } from "./accessor.js";
9
+ import { Sprite } from "./sprite.js";
10
+ const DEBUG_COL_SIZE = 8;
11
+ export class TgdPainterSprites extends TgdPainter {
12
+ constructor(context, options) {
13
+ var _a, _b;
14
+ super();
15
+ this.context = context;
16
+ this.options = options;
17
+ this.transfo = new TgdTransfo();
18
+ /**
19
+ * Number of actual sprites.
20
+ *
21
+ * The capacity can be get with `this.dataset.count`.
22
+ */
23
+ this._count = 0;
24
+ this.attPosition = new AccessorProxy("attPosition");
25
+ this.attCos = new AccessorProxy("attCos");
26
+ this.attSin = new AccessorProxy("attSin");
27
+ this.attScale = new AccessorProxy("attScale");
28
+ this.attUV = new AccessorProxy("attUV");
29
+ this.attSize = new AccessorProxy("attSize");
30
+ this.attOrigin = new AccessorProxy("attOrigin");
31
+ this.uniAtlasRatio = new TgdVec2(1, 1);
32
+ this.dirty = true;
33
+ const { texture } = options;
34
+ this.texture = texture;
35
+ if (texture.width > texture.height) {
36
+ this.uniAtlasRatio.x = texture.width / texture.height;
37
+ this.uniAtlasRatio.y = 1;
38
+ }
39
+ else {
40
+ this.uniAtlasRatio.x = 1;
41
+ this.uniAtlasRatio.y = texture.height / texture.width;
42
+ }
43
+ this.uniAtlasRatio.scale((_a = options.atlasUnit) !== null && _a !== void 0 ? _a : 1);
44
+ const prg = new TgdProgram(context.gl, {
45
+ vert: new TgdShaderVertex({
46
+ uniforms: {
47
+ uniTransfoMatrix: "mat4",
48
+ uniModelViewMatrix: "mat4",
49
+ uniProjectionMatrix: "mat4",
50
+ uniAtlasRatio: "vec2",
51
+ },
52
+ attributes: {
53
+ attPosition: "vec3",
54
+ attCos: "float",
55
+ attSin: "float",
56
+ attScale: "vec2",
57
+ attUV: "vec3",
58
+ attSize: "vec2",
59
+ attOrigin: "vec2",
60
+ attCorners: "vec4",
61
+ },
62
+ varying: {
63
+ varUV: "vec2",
64
+ },
65
+ mainCode: [
66
+ "varUV = attUV.xy + attSize * attCorners.zw;",
67
+ "vec4 position = vec4((attCorners.xy - attOrigin) * attScale * attSize * uniAtlasRatio, 0.0, 1.0);",
68
+ "mat4 rotation = mat4(",
69
+ [
70
+ "attCos, attSin, 0, 0,",
71
+ "-attSin, attCos, 0, 0,",
72
+ "0, 0, 1, 0,",
73
+ "0, 0, 0, 1",
74
+ ],
75
+ ");",
76
+ "position = rotation * position;",
77
+ "position += vec4(attPosition, 0.0);",
78
+ "gl_Position = uniProjectionMatrix * uniModelViewMatrix * uniTransfoMatrix * position;",
79
+ "gl_PointSize = 32.0;",
80
+ ],
81
+ }).code,
82
+ frag: new TgdShaderFragment({
83
+ uniforms: {
84
+ uniTexture: "sampler2D",
85
+ },
86
+ varying: { varUV: "vec2" },
87
+ outputs: {
88
+ FragColor: "vec4",
89
+ },
90
+ mainCode: [
91
+ "vec4 color = texture(uniTexture, varUV);",
92
+ `if (color.a < ${1 / 0xff}) discard;`,
93
+ "FragColor = color;",
94
+ // "vec4 GREEN = vec4(0, 1, 0, 1);",
95
+ // "vec4 RED = vec4(1, 0, 0, 1);",
96
+ // "if (varCorners.x == 0.0) FragColor = GREEN;",
97
+ // "else FragColor = RED;",
98
+ // "FragColor.a = 1.0;",
99
+ ],
100
+ }).code,
101
+ });
102
+ this.prg = prg;
103
+ prg.debug();
104
+ const datasetFrame = new TgdDataset({
105
+ /**
106
+ * (x, y, u, v)
107
+ */
108
+ attCorners: "vec4",
109
+ });
110
+ // prettier-ignore
111
+ datasetFrame.set("attCorners", new Float32Array([
112
+ -1, -1, 0, 1,
113
+ +1, -1, 1, 1,
114
+ -1, +1, 0, 0,
115
+ +1, +1, 1, 0,
116
+ ]));
117
+ const datasetInstances = new TgdDataset({
118
+ attPosition: "vec3",
119
+ attCos: "float",
120
+ attSin: "float",
121
+ attScale: "vec2",
122
+ attUV: "vec3",
123
+ attSize: "vec2",
124
+ attOrigin: "vec2",
125
+ }, {
126
+ divisor: 1,
127
+ usage: "DYNAMIC_DRAW",
128
+ });
129
+ datasetInstances.count = (_b = options.initialCapacity) !== null && _b !== void 0 ? _b : 1;
130
+ this.datasetInstances = datasetInstances;
131
+ const vao = new TgdVertexArray(context.gl, prg, [
132
+ datasetInstances,
133
+ datasetFrame,
134
+ ]);
135
+ this.vao = vao;
136
+ this.updateAccessors();
137
+ }
138
+ get count() {
139
+ return this._count;
140
+ }
141
+ set count(value) {
142
+ this._count = value;
143
+ while (value > this.capacity) {
144
+ this.capacity = 2 * Math.max(1, this.capacity);
145
+ this.updateAccessors();
146
+ }
147
+ }
148
+ get capacity() {
149
+ return this.datasetInstances.count;
150
+ }
151
+ set capacity(value) {
152
+ if (this.datasetInstances.count === value)
153
+ return;
154
+ this.datasetInstances.count = value;
155
+ }
156
+ spriteCreate(data = {}) {
157
+ var _a, _b, _c, _d, _e, _f, _g;
158
+ const offset = this.count;
159
+ this.count++;
160
+ const sprite = new Sprite(this.options.atlas, () => {
161
+ this.dirty = true;
162
+ }, this.attPosition, this.attCos, this.attSin, this.attScale, this.attUV, this.attSize, this.attOrigin);
163
+ sprite.offset = offset;
164
+ sprite.angle = (_a = data.angle) !== null && _a !== void 0 ? _a : 0;
165
+ sprite.index = (_b = data.index) !== null && _b !== void 0 ? _b : 0;
166
+ sprite.scaleX = (_c = data.scaleX) !== null && _c !== void 0 ? _c : 1;
167
+ sprite.scaleY = (_d = data.scaleY) !== null && _d !== void 0 ? _d : 1;
168
+ sprite.x = (_e = data.x) !== null && _e !== void 0 ? _e : 0;
169
+ sprite.y = (_f = data.y) !== null && _f !== void 0 ? _f : 0;
170
+ sprite.z = (_g = data.z) !== null && _g !== void 0 ? _g : 0;
171
+ return sprite;
172
+ }
173
+ spriteDelete(sprite) {
174
+ throw new Error("Not implemented yet!");
175
+ }
176
+ delete() {
177
+ this.prg.delete();
178
+ this.vao.delete();
179
+ }
180
+ paint() {
181
+ const { context, datasetInstances, vao, prg, transfo, texture } = this;
182
+ if (this.dirty) {
183
+ this.dirty = false;
184
+ vao.updateDataset(datasetInstances);
185
+ }
186
+ const { gl, camera } = context;
187
+ prg.use();
188
+ texture.activate(0, prg, "uniTexture");
189
+ prg.uniform2fv("uniAtlasRatio", this.uniAtlasRatio);
190
+ prg.uniformMatrix4fv("uniTransfoMatrix", transfo.matrix);
191
+ prg.uniformMatrix4fv("uniModelViewMatrix", camera.matrixModelView);
192
+ prg.uniformMatrix4fv("uniProjectionMatrix", camera.matrixProjection);
193
+ vao.bind();
194
+ gl.drawArraysInstanced(gl.TRIANGLE_STRIP, 0, 4, datasetInstances.count);
195
+ // gl.drawArraysInstanced(gl.POINTS, 0, 4, datasetInstances.count)
196
+ vao.unbind();
197
+ }
198
+ debug(caption) {
199
+ const out = new TgdConsole({ text: caption !== null && caption !== void 0 ? caption : this.name, bold: true });
200
+ out.nl();
201
+ out.add("count: ").add(`${this.count}`, { color: "yellow" }).nl();
202
+ out.add("capacity: ").add(`${this.capacity}`, { color: "yellow" }).nl();
203
+ const spc = " ".repeat(DEBUG_COL_SIZE);
204
+ const head = (value) => value.slice(0, DEBUG_COL_SIZE).padStart(DEBUG_COL_SIZE, " ");
205
+ const fields = {
206
+ position: [this.attPosition, 3],
207
+ scale: [this.attScale, 2],
208
+ uv: [this.attUV, 3],
209
+ size: [this.attSize, 2],
210
+ origin: [this.attOrigin, 2],
211
+ cos: [this.attCos, 1],
212
+ sin: [this.attSin, 1],
213
+ };
214
+ const columns = Object.keys(fields);
215
+ const hr = `${columns.map(() => "-".repeat(DEBUG_COL_SIZE)).join("|")}|\n`;
216
+ if (this.count > 0) {
217
+ out.add(hr)
218
+ .add(columns.map(head).join("|"), {
219
+ bold: true,
220
+ })
221
+ .add("|")
222
+ .nl()
223
+ .add(hr);
224
+ for (let index = 0; index < this.count; index++) {
225
+ for (let dim = 0; dim < 3; dim++) {
226
+ for (const [accessor, maxDim] of Object.values(fields)) {
227
+ if (dim < maxDim) {
228
+ out.add(pad(accessor, index, dim));
229
+ }
230
+ else {
231
+ out.add(spc);
232
+ }
233
+ out.add("|");
234
+ }
235
+ out.nl();
236
+ }
237
+ out.add(hr);
238
+ }
239
+ }
240
+ out.debug();
241
+ this.transfo.debug("Transfo");
242
+ }
243
+ updateAccessors() {
244
+ const { datasetInstances } = this;
245
+ this.attPosition.dataset = datasetInstances;
246
+ this.attCos.dataset = datasetInstances;
247
+ this.attSin.dataset = datasetInstances;
248
+ this.attScale.dataset = datasetInstances;
249
+ this.attUV.dataset = datasetInstances;
250
+ this.attSize.dataset = datasetInstances;
251
+ this.attOrigin.dataset = datasetInstances;
252
+ }
253
+ }
254
+ function pad(accessor, index, dimension = 0) {
255
+ return `${accessor.get(index, dimension)}`
256
+ .slice(0, DEBUG_COL_SIZE)
257
+ .padStart(DEBUG_COL_SIZE, " ");
258
+ }
259
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3ByaXRlcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9wYWludGVyL3Nwcml0ZXMvc3ByaXRlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sY0FBYyxDQUFBO0FBQ3pDLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxZQUFZLENBQUE7QUFFdkMsT0FBTyxFQUFFLFVBQVUsRUFBRSxPQUFPLEVBQUUsTUFBTSxXQUFXLENBQUE7QUFDL0MsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGNBQWMsQ0FBQTtBQUN6QyxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsZUFBZSxFQUFFLE1BQU0sYUFBYSxDQUFBO0FBRWhFLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxVQUFVLENBQUE7QUFDekMsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLFlBQVksQ0FBQTtBQUN2QyxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sWUFBWSxDQUFBO0FBQzFDLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxVQUFVLENBQUE7QUF3QmpDLE1BQU0sY0FBYyxHQUFHLENBQUMsQ0FBQTtBQUV4QixNQUFNLE9BQU8saUJBQ1QsU0FBUSxVQUFVO0lBeUJsQixZQUNxQixPQUFtQixFQUNuQixPQUFpQzs7UUFFbEQsS0FBSyxFQUFFLENBQUE7UUFIVSxZQUFPLEdBQVAsT0FBTyxDQUFZO1FBQ25CLFlBQU8sR0FBUCxPQUFPLENBQTBCO1FBeEJ0QyxZQUFPLEdBQUcsSUFBSSxVQUFVLEVBQUUsQ0FBQTtRQU0xQzs7OztXQUlHO1FBQ0ssV0FBTSxHQUFHLENBQUMsQ0FBQTtRQUNELGdCQUFXLEdBQUcsSUFBSSxhQUFhLENBQUMsYUFBYSxDQUFDLENBQUE7UUFDOUMsV0FBTSxHQUFHLElBQUksYUFBYSxDQUFDLFFBQVEsQ0FBQyxDQUFBO1FBQ3BDLFdBQU0sR0FBRyxJQUFJLGFBQWEsQ0FBQyxRQUFRLENBQUMsQ0FBQTtR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
@@ -0,0 +1,38 @@
1
+ export interface TgdSprite {
2
+ x: number;
3
+ y: number;
4
+ z: number;
5
+ angle: number;
6
+ scaleX: number;
7
+ scaleY: number;
8
+ /**
9
+ * Index of the sprite in the atlas.
10
+ */
11
+ index: number;
12
+ }
13
+ export interface AtlasItem {
14
+ x: number;
15
+ y: number;
16
+ z?: number;
17
+ width: number;
18
+ height: number;
19
+ /**
20
+ * Point which is considered the center
21
+ * Usually between -1 (left) and +1 (right).
22
+ *
23
+ * Default: 0
24
+ */
25
+ originX?: number;
26
+ /**
27
+ * Point which is considered the center
28
+ * Usually between -1 (bottom) and +1 (top).
29
+ *
30
+ * Default: 0
31
+ */
32
+ originY?: number;
33
+ }
34
+ export interface Accessor {
35
+ get: (index: number, dimension?: number | undefined) => number;
36
+ set: (value: number, index: number, dimension?: number | undefined) => void;
37
+ }
38
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/painter/sprites/types.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,SAAS;IACtB,CAAC,EAAE,MAAM,CAAA;IACT,CAAC,EAAE,MAAM,CAAA;IACT,CAAC,EAAE,MAAM,CAAA;IACT,KAAK,EAAE,MAAM,CAAA;IACb,MAAM,EAAE,MAAM,CAAA;IACd,MAAM,EAAE,MAAM,CAAA;IACd;;OAEG;IACH,KAAK,EAAE,MAAM,CAAA;CAChB;AAED,MAAM,WAAW,SAAS;IACtB,CAAC,EAAE,MAAM,CAAA;IACT,CAAC,EAAE,MAAM,CAAA;IACT,CAAC,CAAC,EAAE,MAAM,CAAA;IACV,KAAK,EAAE,MAAM,CAAA;IACb,MAAM,EAAE,MAAM,CAAA;IACd;;;;;OAKG;IACH,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB;;;;;OAKG;IACH,OAAO,CAAC,EAAE,MAAM,CAAA;CACnB;AAED,MAAM,WAAW,QAAQ;IACrB,GAAG,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,MAAM,GAAG,SAAS,KAAK,MAAM,CAAA;IAC9D,GAAG,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,MAAM,GAAG,SAAS,KAAK,IAAI,CAAA;CAC9E"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvcGFpbnRlci9zcHJpdGVzL3R5cGVzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIifQ==
@@ -1,4 +1,4 @@
1
- import { TgdMat2, TgdMat3, TgdMat4, TgdVec3, TgdVec4 } from "../math";
1
+ import { TgdMat2, TgdMat3, TgdMat4, TgdVec2, TgdVec3, TgdVec4 } from "../math";
2
2
  import { TgdProgramOptions } from "../types";
3
3
  /**
4
4
  * This class helps to manage a WebGLProgram.
@@ -23,6 +23,7 @@ export declare class TgdProgram {
23
23
  getUniformLocation(name: string): WebGLUniformLocation;
24
24
  uniform1f(name: string, value: number): void;
25
25
  uniform2f(name: string, x: number, y: number): void;
26
+ uniform2fv(name: string, vec2: TgdVec2): void;
26
27
  uniform3f(name: string, x: number, y: number, z: number): void;
27
28
  uniform3fv(name: string, vec3: TgdVec3): void;
28
29
  uniform4f(name: string, x: number, y: number, z: number, w: number): void;
@@ -1 +1 @@
1
- {"version":3,"file":"program.d.ts","sourceRoot":"","sources":["../../src/program/program.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"program.d.ts","sourceRoot":"","sources":["../../src/program/program.ts"],"names":[],"mappings":"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"}