@tolokoban/tgd 2.0.100 → 2.0.102

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 (164) hide show
  1. package/lib/dist/color/color.d.ts +4 -0
  2. package/lib/dist/color/color.d.ts.map +1 -1
  3. package/lib/dist/color/color.js +21 -1
  4. package/lib/dist/context/context.d.ts +3 -0
  5. package/lib/dist/context/context.d.ts.map +1 -1
  6. package/lib/dist/context/context.js +10 -7
  7. package/lib/dist/context/logic.d.ts +2 -2
  8. package/lib/dist/context/logic.js +2 -2
  9. package/lib/dist/context/ubo-manager.d.ts +10 -0
  10. package/lib/dist/context/ubo-manager.d.ts.map +1 -0
  11. package/lib/dist/context/ubo-manager.js +23 -0
  12. package/lib/dist/dataset/dataset.d.ts +8 -3
  13. package/lib/dist/dataset/dataset.d.ts.map +1 -1
  14. package/lib/dist/dataset/dataset.js +35 -12
  15. package/lib/dist/filter/blur.d.ts +1 -0
  16. package/lib/dist/filter/blur.d.ts.map +1 -1
  17. package/lib/dist/filter/blur.js +3 -1
  18. package/lib/dist/filter/filter.d.ts +4 -1
  19. package/lib/dist/filter/filter.d.ts.map +1 -1
  20. package/lib/dist/filter/filter.js +4 -1
  21. package/lib/dist/filter/hue-rotation.d.ts +2 -1
  22. package/lib/dist/filter/hue-rotation.d.ts.map +1 -1
  23. package/lib/dist/filter/hue-rotation.js +3 -2
  24. package/lib/dist/index.d.ts +1 -0
  25. package/lib/dist/index.d.ts.map +1 -1
  26. package/lib/dist/index.js +2 -1
  27. package/lib/dist/interface/transformable.d.ts +1 -1
  28. package/lib/dist/loader/image.d.ts +3 -3
  29. package/lib/dist/loader/image.d.ts.map +1 -1
  30. package/lib/dist/loader/image.js +10 -22
  31. package/lib/dist/material/glass.js +3 -3
  32. package/lib/dist/material/material.d.ts +3 -7
  33. package/lib/dist/material/material.d.ts.map +1 -1
  34. package/lib/dist/material/material.js +1 -1
  35. package/lib/dist/painter/background-with-depth/background-with-depth.d.ts +1 -1
  36. package/lib/dist/painter/background-with-depth/background-with-depth.js +2 -2
  37. package/lib/dist/painter/filter/filter.d.ts +7 -9
  38. package/lib/dist/painter/filter/filter.d.ts.map +1 -1
  39. package/lib/dist/painter/filter/filter.js +41 -47
  40. package/lib/dist/painter/fragment-shader/fragment-shader.d.ts +2 -2
  41. package/lib/dist/painter/fragment-shader/fragment-shader.js +2 -2
  42. package/lib/dist/painter/framebuffer-msaa.d.ts +23 -12
  43. package/lib/dist/painter/framebuffer-msaa.d.ts.map +1 -1
  44. package/lib/dist/painter/framebuffer-msaa.js +60 -9
  45. package/lib/dist/painter/framebuffer.d.ts +19 -18
  46. package/lib/dist/painter/framebuffer.d.ts.map +1 -1
  47. package/lib/dist/painter/framebuffer.js +76 -19
  48. package/lib/dist/painter/gizmo/gizmo.d.ts +31 -0
  49. package/lib/dist/painter/gizmo/gizmo.d.ts.map +1 -0
  50. package/lib/dist/painter/gizmo/gizmo.js +186 -0
  51. package/lib/dist/painter/gizmo/index.d.ts +2 -0
  52. package/lib/dist/painter/gizmo/index.d.ts.map +1 -0
  53. package/lib/dist/painter/gizmo/index.js +2 -0
  54. package/lib/dist/painter/gizmo/painters/axes.1.d.ts +14 -0
  55. package/lib/dist/painter/gizmo/painters/axes.1.d.ts.map +1 -0
  56. package/lib/dist/painter/gizmo/painters/axes.1.js +50 -0
  57. package/lib/dist/painter/gizmo/painters/axes.d.ts +16 -0
  58. package/lib/dist/painter/gizmo/painters/axes.d.ts.map +1 -0
  59. package/lib/dist/painter/gizmo/painters/axes.js +81 -0
  60. package/lib/dist/painter/gizmo/painters/consts.d.ts +4 -0
  61. package/lib/dist/painter/gizmo/painters/consts.d.ts.map +1 -0
  62. package/lib/dist/painter/gizmo/painters/consts.js +4 -0
  63. package/lib/dist/painter/gizmo/painters/mask.d.ts +14 -0
  64. package/lib/dist/painter/gizmo/painters/mask.d.ts.map +1 -0
  65. package/lib/dist/painter/gizmo/painters/mask.js +90 -0
  66. package/lib/dist/painter/gizmo/painters/normal.1.d.ts +21 -0
  67. package/lib/dist/painter/gizmo/painters/normal.1.d.ts.map +1 -0
  68. package/lib/dist/painter/gizmo/painters/normal.1.js +111 -0
  69. package/lib/dist/painter/gizmo/painters/normal.d.ts +17 -0
  70. package/lib/dist/painter/gizmo/painters/normal.d.ts.map +1 -0
  71. package/lib/dist/painter/gizmo/painters/normal.js +87 -0
  72. package/lib/dist/painter/gizmo/painters/tips.d.ts +18 -0
  73. package/lib/dist/painter/gizmo/painters/tips.d.ts.map +1 -0
  74. package/lib/dist/painter/gizmo/painters/tips.js +44 -0
  75. package/lib/dist/painter/gizmo/tips.d.ts +22 -0
  76. package/lib/dist/painter/gizmo/tips.d.ts.map +1 -0
  77. package/lib/dist/painter/gizmo/tips.js +51 -0
  78. package/lib/dist/painter/group-camera.d.ts +4 -2
  79. package/lib/dist/painter/group-camera.d.ts.map +1 -1
  80. package/lib/dist/painter/group-camera.js +7 -3
  81. package/lib/dist/painter/group.d.ts +6 -6
  82. package/lib/dist/painter/group.d.ts.map +1 -1
  83. package/lib/dist/painter/group.js +19 -13
  84. package/lib/dist/painter/index.d.ts +3 -0
  85. package/lib/dist/painter/index.d.ts.map +1 -1
  86. package/lib/dist/painter/index.js +4 -1
  87. package/lib/dist/painter/lod/lod.d.ts +1 -1
  88. package/lib/dist/painter/lod/lod.js +2 -2
  89. package/lib/dist/painter/logic.d.ts +2 -2
  90. package/lib/dist/painter/logic.js +2 -2
  91. package/lib/dist/painter/mesh/gltf/gltf.d.ts +2 -8
  92. package/lib/dist/painter/mesh/gltf/gltf.d.ts.map +1 -1
  93. package/lib/dist/painter/mesh/gltf/gltf.js +1 -1
  94. package/lib/dist/painter/mesh/mesh/mesh.d.ts +7 -16
  95. package/lib/dist/painter/mesh/mesh/mesh.d.ts.map +1 -1
  96. package/lib/dist/painter/mesh/mesh/mesh.js +21 -9
  97. package/lib/dist/painter/node/node.d.ts +3 -3
  98. package/lib/dist/painter/node/node.js +4 -4
  99. package/lib/dist/painter/overlay/index.d.ts +2 -0
  100. package/lib/dist/painter/overlay/index.d.ts.map +1 -0
  101. package/lib/dist/painter/overlay/index.js +2 -0
  102. package/lib/dist/painter/overlay/overlay.d.ts +77 -0
  103. package/lib/dist/painter/overlay/overlay.d.ts.map +1 -0
  104. package/lib/dist/painter/overlay/overlay.js +196 -0
  105. package/lib/dist/painter/painter.d.ts +1 -1
  106. package/lib/dist/painter/program.d.ts +70 -0
  107. package/lib/dist/painter/program.d.ts.map +1 -0
  108. package/lib/dist/painter/program.js +250 -0
  109. package/lib/dist/painter/scissor.d.ts +1 -1
  110. package/lib/dist/painter/scissor.js +2 -2
  111. package/lib/dist/painter/segments/segments-morphing.d.ts +4 -13
  112. package/lib/dist/painter/segments/segments-morphing.d.ts.map +1 -1
  113. package/lib/dist/painter/segments/segments-morphing.js +3 -3
  114. package/lib/dist/painter/segments/segments.d.ts +4 -13
  115. package/lib/dist/painter/segments/segments.d.ts.map +1 -1
  116. package/lib/dist/painter/segments/segments.js +3 -3
  117. package/lib/dist/painter/sprites/sprites.d.ts +5 -0
  118. package/lib/dist/painter/sprites/sprites.d.ts.map +1 -1
  119. package/lib/dist/painter/sprites/sprites.js +20 -9
  120. package/lib/dist/painter/state/state.js +4 -4
  121. package/lib/dist/painter/tubes/tubes.d.ts +4 -13
  122. package/lib/dist/painter/tubes/tubes.d.ts.map +1 -1
  123. package/lib/dist/painter/tubes/tubes.js +2 -2
  124. package/lib/dist/painter/x-ray/x-ray.d.ts +3 -11
  125. package/lib/dist/painter/x-ray/x-ray.d.ts.map +1 -1
  126. package/lib/dist/painter/x-ray/x-ray.js +3 -3
  127. package/lib/dist/parser/gltf/gltf.d.ts +2 -5
  128. package/lib/dist/parser/gltf/gltf.d.ts.map +1 -1
  129. package/lib/dist/parser/gltf/gltf.js +1 -1
  130. package/lib/dist/program/program.d.ts +2 -0
  131. package/lib/dist/program/program.d.ts.map +1 -1
  132. package/lib/dist/program/program.js +43 -8
  133. package/lib/dist/shader/fragment.d.ts.map +1 -1
  134. package/lib/dist/shader/fragment.js +3 -3
  135. package/lib/dist/shader/vertex.d.ts +3 -1
  136. package/lib/dist/shader/vertex.d.ts.map +1 -1
  137. package/lib/dist/shader/vertex.js +8 -6
  138. package/lib/dist/texture/texture-depth.d.ts +3 -11
  139. package/lib/dist/texture/texture-depth.d.ts.map +1 -1
  140. package/lib/dist/texture/texture-depth.js +1 -1
  141. package/lib/dist/texture/texture2d.d.ts +5 -11
  142. package/lib/dist/texture/texture2d.d.ts.map +1 -1
  143. package/lib/dist/texture/texture2d.js +3 -3
  144. package/lib/dist/time/interval/interval.d.ts +3 -3
  145. package/lib/dist/time/interval/interval.js +6 -6
  146. package/lib/dist/types/painter.d.ts +1 -1
  147. package/lib/dist/types/program.d.ts +3 -2
  148. package/lib/dist/types/program.d.ts.map +1 -1
  149. package/lib/dist/uniform/index.d.ts +3 -0
  150. package/lib/dist/uniform/index.d.ts.map +1 -0
  151. package/lib/dist/uniform/index.js +3 -0
  152. package/lib/dist/uniform/ubo-camera.d.ts +9 -0
  153. package/lib/dist/uniform/ubo-camera.d.ts.map +1 -0
  154. package/lib/dist/uniform/ubo-camera.js +20 -0
  155. package/lib/dist/uniform/uniform-buffer-object.d.ts +56 -0
  156. package/lib/dist/uniform/uniform-buffer-object.d.ts.map +1 -0
  157. package/lib/dist/uniform/uniform-buffer-object.js +347 -0
  158. package/lib/dist/utils/array.d.ts +2 -0
  159. package/lib/dist/utils/array.d.ts.map +1 -0
  160. package/lib/dist/utils/array.js +6 -0
  161. package/lib/dist/utils/index.d.ts +1 -0
  162. package/lib/dist/utils/index.d.ts.map +1 -1
  163. package/lib/dist/utils/index.js +2 -1
  164. package/package.json +2 -2
@@ -0,0 +1,14 @@
1
+ import { TgdContext } from "../../../context";
2
+ import { TgdPainter } from "../../painter";
3
+ export declare class PainterTipsMask extends TgdPainter {
4
+ private readonly context;
5
+ size: number;
6
+ private readonly prg;
7
+ private readonly vao;
8
+ constructor(context: TgdContext, options: {
9
+ size: number;
10
+ });
11
+ delete(): void;
12
+ paint(time: number, delta: number): void;
13
+ }
14
+ //# sourceMappingURL=mask.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mask.d.ts","sourceRoot":"","sources":["../../../../src/painter/gizmo/painters/mask.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAA;AAEzC,OAAO,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAA;AAMjD,qBAAa,eAAgB,SAAQ,UAAU;IAOvC,OAAO,CAAC,QAAQ,CAAC,OAAO;IANrB,IAAI,EAAE,MAAM,CAAA;IAEnB,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAY;IAChC,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAgB;gBAGf,OAAO,EAAE,UAAU,EACpC,OAAO,EAAE;QAAE,IAAI,EAAE,MAAM,CAAA;KAAE;IAoE7B,MAAM,IAAI,IAAI;IAKd,KAAK,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI;CAgB3C"}
@@ -0,0 +1,90 @@
1
+ import { TgdDataset } from "./../../../dataset/index.js";
2
+ import { TgdPainter } from "./../../painter.js";
3
+ import { TgdPainterState } from "./../../state/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
+ export class PainterTipsMask extends TgdPainter {
8
+ constructor(context, options) {
9
+ super();
10
+ this.context = context;
11
+ this.size = options.size;
12
+ const prg = new TgdProgram(context.gl, {
13
+ vert: new TgdShaderVertex({
14
+ uniforms: {
15
+ uniIndex: "float",
16
+ uniTransfoMatrix: "mat4",
17
+ uniModelViewMatrix: "mat4",
18
+ uniProjectionMatrix: "mat4",
19
+ uniRadius: "float",
20
+ uniScreenHeightInPixels: "float",
21
+ },
22
+ attributes: {
23
+ attPoint: "vec3",
24
+ attIndex: "float",
25
+ },
26
+ varying: {
27
+ varIndex: "float",
28
+ },
29
+ mainCode: [
30
+ "varIndex = attIndex;",
31
+ "vec4 point = uniModelViewMatrix * vec4(attPoint.xyz, 1.0);",
32
+ "vec4 shift = point + vec4(0, uniRadius, 0, 0);",
33
+ "gl_Position = uniProjectionMatrix * point;",
34
+ "vec4 screenShift = uniProjectionMatrix * shift;",
35
+ "gl_PointSize = max(",
36
+ ["8.0,", "abs(screenShift.y - gl_Position.y) * uniScreenHeightInPixels / gl_Position.w"],
37
+ ");",
38
+ ],
39
+ }),
40
+ frag: new TgdShaderFragment({
41
+ uniforms: {
42
+ uniTexture: "sampler2D",
43
+ },
44
+ outputs: {
45
+ FragColor: "vec4",
46
+ },
47
+ mainCode: [
48
+ "vec2 v = 2.0 * (gl_PointCoord - vec2(.5));",
49
+ "float d = dot(v, v);",
50
+ "if (d > 1.0) discard;",
51
+ `FragColor = vec4(vec3(varIndex), 1.0);`,
52
+ ],
53
+ }),
54
+ });
55
+ this.prg = prg;
56
+ const dataset = new TgdDataset({
57
+ attPoint: "vec3",
58
+ attIndex: "float",
59
+ });
60
+ // prettier-ignore
61
+ dataset.set("attPoint", new Float32Array([
62
+ +1, 0, 0, 0, +1, 0, 0, 0, +1, -1, 0, 0, 0, -1, 0, 0, 0, -1,
63
+ ]));
64
+ // prettier-ignore
65
+ dataset.set("attIndex", new Float32Array([1 / 8, 2 / 8, 3 / 8, 4 / 8, 5 / 8, 6 / 8]));
66
+ const vao = new TgdVertexArray(context.gl, prg, [dataset]);
67
+ this.vao = vao;
68
+ }
69
+ delete() {
70
+ this.prg.delete();
71
+ this.vao.delete();
72
+ }
73
+ paint(time, delta) {
74
+ const { context, prg, vao } = this;
75
+ const { gl, camera } = context;
76
+ prg.use();
77
+ prg.uniform1f("uniRadius", 0.333);
78
+ prg.uniform1f("uniScreenHeightInPixels", this.size);
79
+ prg.uniformMatrix4fv("uniModelViewMatrix", camera.matrixModelView);
80
+ prg.uniformMatrix4fv("uniProjectionMatrix", camera.matrixProjection);
81
+ vao.bind();
82
+ TgdPainterState.do(context, {
83
+ depth: "less",
84
+ blend: "off",
85
+ action: () => gl.drawArrays(gl.POINTS, 0, 6),
86
+ });
87
+ vao.unbind();
88
+ }
89
+ }
90
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFzay5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9wYWludGVyL2dpem1vL3BhaW50ZXJzL21hc2sudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGNBQWMsQ0FBQTtBQUN6QyxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sc0JBQXNCLENBQUE7QUFDakQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLG9CQUFvQixDQUFBO0FBQ3BELE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxjQUFjLENBQUE7QUFDekMsT0FBTyxFQUFFLGlCQUFpQixFQUFFLGVBQWUsRUFBRSxNQUFNLGFBQWEsQ0FBQTtBQUNoRSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sVUFBVSxDQUFBO0FBRXpDLE1BQU0sT0FBTyxlQUFnQixTQUFRLFVBQVU7SUFNM0MsWUFDcUIsT0FBbUIsRUFDcEMsT0FBeUI7UUFFekIsS0FBSyxFQUFFLENBQUE7UUFIVSxZQUFPLEdBQVAsT0FBTyxDQUFZO1FBSXBDLElBQUksQ0FBQyxJQUFJLEdBQUcsT0FBTyxDQUFDLElBQUksQ0FBQTtRQUN4QixNQUFNLEdBQUcsR0FBRyxJQUFJLFVBQVUsQ0FBQyxPQUFPLENBQUMsRUFBRSxFQUFFO1lBQ25DLElBQUksRUFBRSxJQUFJLGVBQWUsQ0FBQztnQkFDdEIsUUFBUSxFQUFFO29CQUNOLFFBQVEsRUFBRSxPQUFPO29CQUNqQixnQkFBZ0IsRUFBRSxNQUFNO29CQUN4QixrQkFBa0IsRUFBRSxNQUFNO29CQUMxQixtQkFBbUIsRUFBRSxNQUFNO29CQUMzQixTQUFTLEVBQUUsT0FBTztvQkFDbEIsdUJBQXVCLEVBQUUsT0FBTztpQkFDbkM7Z0JBQ0QsVUFBVSxFQUFFO29CQUNSLFFBQVEsRUFBRSxNQUFNO29CQUNoQixRQUFRLEVBQUUsT0FBTztpQkFDcEI7Z0JBQ0QsT0FBTyxFQUFFO29CQUNMLFFBQVEsRUFBRSxPQUFPO2lCQUNwQjtnQkFDRCxRQUFRLEVBQUU7b0JBQ04sc0JBQXNCO29CQUN0Qiw0REFBNEQ7b0JBQzVELGdEQUFnRDtvQkFDaEQsNENBQTRDO29CQUM1QyxpREFBaUQ7b0JBQ2pELHFCQUFxQjtvQkFDckIsQ0FBQyxNQUFNLEVBQUUsOEVBQThFLENBQUM7b0JBQ3hGLElBQUk7aUJBQ1A7YUFDSixDQUFDO1lBQ0YsSUFBSSxFQUFFLElBQUksaUJBQWlCLENBQUM7Z0JBQ3hCLFFBQVEsRUFBRTtvQkFDTixVQUFVLEVBQUUsV0FBVztpQkFDMUI7Z0JBQ0QsT0FBTyxFQUFFO29CQUNMLFNBQVMsRUFBRSxNQUFNO2lCQUNwQjtnQkFDRCxRQUFRLEVBQUU7b0JBQ04sNENBQTRDO29CQUM1QyxzQkFBc0I7b0JBQ3RCLHVCQUF1QjtvQkFDdkIsd0NBQXdDO2lCQUMzQzthQUNKLENBQUM7U0FDTCxDQUFDLENBQUE7UUFDRixJQUFJLENBQUMsR0FBRyxHQUFHLEdBQUcsQ0FBQTtRQUNkLE1BQU0sT0FBTyxHQUFHLElBQUksVUFBVSxDQUFDO1lBQzNCLFFBQVEsRUFBRSxNQUFNO1lBQ2hCLFFBQVEsRUFBRSxPQUFPO1NBQ3BCLENBQUMsQ0FBQTtRQUNGLGtCQUFrQjtRQUNsQixPQUFPLENBQUMsR0FBRyxDQUNoQixVQUFVLEVBQ1YsSUFBSSxZQUFZLENBQUM7WUFDaEIsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDO1NBQzFELENBQUMsQ0FDRixDQUFBO1FBQ0ssa0JBQWtCO1FBQ2xCLE9BQU8sQ0FBQyxHQUFHLENBQ2hCLFVBQVUsRUFDVixJQUFJLFlBQVksQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FDNUQsQ0FBQTtRQUNLLE1BQU0sR0FBRyxHQUFHLElBQUksY0FBYyxDQUFDLE9BQU8sQ0FBQyxFQUFFLEVBQUUsR0FBRyxFQUFFLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQTtRQUMxRCxJQUFJLENBQUMsR0FBRyxHQUFHLEdBQUcsQ0FBQTtJQUNsQixDQUFDO0lBRUQsTUFBTTtRQUNGLElBQUksQ0FBQyxHQUFHLENBQUMsTUFBTSxFQUFFLENBQUE7UUFDakIsSUFBSSxDQUFDLEdBQUcsQ0FBQyxNQUFNLEVBQUUsQ0FBQTtJQUNyQixDQUFDO0lBRUQsS0FBSyxDQUFDLElBQVksRUFBRSxLQUFhO1FBQzdCLE1BQU0sRUFBRSxPQUFPLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLElBQUksQ0FBQTtRQUNsQyxNQUFNLEVBQUUsRUFBRSxFQUFFLE1BQU0sRUFBRSxHQUFHLE9BQU8sQ0FBQTtRQUM5QixHQUFHLENBQUMsR0FBRyxFQUFFLENBQUE7UUFDVCxHQUFHLENBQUMsU0FBUyxDQUFDLFdBQVcsRUFBRSxLQUFLLENBQUMsQ0FBQTtRQUNqQyxHQUFHLENBQUMsU0FBUyxDQUFDLHlCQUF5QixFQUFFLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQTtRQUNuRCxHQUFHLENBQUMsZ0JBQWdCLENBQUMsb0JBQW9CLEVBQUUsTUFBTSxDQUFDLGVBQWUsQ0FBQyxDQUFBO1FBQ2xFLEdBQUcsQ0FBQyxnQkFBZ0IsQ0FBQyxxQkFBcUIsRUFBRSxNQUFNLENBQUMsZ0JBQWdCLENBQUMsQ0FBQTtRQUNwRSxHQUFHLENBQUMsSUFBSSxFQUFFLENBQUE7UUFDVixlQUFlLENBQUMsRUFBRSxDQUFDLE9BQU8sRUFBRTtZQUN4QixLQUFLLEVBQUUsTUFBTTtZQUNiLEtBQUssRUFBRSxLQUFLO1lBQ1osTUFBTSxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxVQUFVLENBQUMsRUFBRSxDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDO1NBQy9DLENBQUMsQ0FBQTtRQUNGLEdBQUcsQ0FBQyxNQUFNLEVBQUUsQ0FBQTtJQUNoQixDQUFDO0NBQ0oifQ==
@@ -0,0 +1,21 @@
1
+ import { TgdContext } from "../../../context";
2
+ import { TgdPainter } from "../../painter";
3
+ import { TgdTexture2D } from "../../../texture";
4
+ interface PainterTipsNormalOptions {
5
+ texture: TgdTexture2D;
6
+ size: number;
7
+ }
8
+ export declare class PainterTipsNormal extends TgdPainter {
9
+ private readonly context;
10
+ static create(context: TgdContext, options: Omit<PainterTipsNormalOptions, "texture">): Promise<PainterTipsNormal>;
11
+ index: number;
12
+ size: number;
13
+ private readonly texture;
14
+ private readonly prg;
15
+ private readonly vao;
16
+ private constructor();
17
+ delete(): void;
18
+ paint(time: number, delta: number): void;
19
+ }
20
+ export {};
21
+ //# sourceMappingURL=normal.1.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"normal.1.d.ts","sourceRoot":"","sources":["../../../../src/painter/gizmo/painters/normal.1.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAA;AAEzC,OAAO,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAA;AAIjD,OAAO,EAAE,YAAY,EAAE,MAAM,cAAc,CAAA;AAI3C,UAAU,wBAAwB;IAC9B,OAAO,EAAE,YAAY,CAAA;IACrB,IAAI,EAAE,MAAM,CAAA;CACf;AAED,qBAAa,iBAAkB,SAAQ,UAAU;IAczC,OAAO,CAAC,QAAQ,CAAC,OAAO;WAbR,MAAM,CAAC,OAAO,EAAE,UAAU,EAAE,OAAO,EAAE,IAAI,CAAC,wBAAwB,EAAE,SAAS,CAAC;IAK3F,KAAK,SAAK;IACV,IAAI,EAAE,MAAM,CAAA;IAEnB,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAc;IACtC,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAY;IAChC,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAgB;IAEpC,OAAO;IA+EP,MAAM,IAAI,IAAI;IAMd,KAAK,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI;CAkB3C"}
@@ -0,0 +1,111 @@
1
+ import { __awaiter } from "tslib";
2
+ import { TgdDataset } from "./../../../dataset/index.js";
3
+ import { TgdPainter } from "./../../painter.js";
4
+ import { TgdPainterState } from "./../../state/index.js";
5
+ import { TgdProgram } from "./../../../program/index.js";
6
+ import { TgdShaderFragment, TgdShaderVertex } from "./../../../shader/index.js";
7
+ import { TgdVertexArray } from "./../../../vao/index.js";
8
+ import { createTipsTexture } from "./tips.js";
9
+ export class PainterTipsNormal extends TgdPainter {
10
+ static create(context, options) {
11
+ return __awaiter(this, void 0, void 0, function* () {
12
+ const texture = yield createTipsTexture(context);
13
+ return new PainterTipsNormal(context, Object.assign({ texture }, options));
14
+ });
15
+ }
16
+ constructor(context, options) {
17
+ super();
18
+ this.context = context;
19
+ this.index = -1;
20
+ this.size = options.size;
21
+ this.texture = options.texture;
22
+ const prg = new TgdProgram(context.gl, {
23
+ vert: new TgdShaderVertex({
24
+ uniforms: {
25
+ uniIndex: "float",
26
+ uniTransfoMatrix: "mat4",
27
+ uniModelViewMatrix: "mat4",
28
+ uniProjectionMatrix: "mat4",
29
+ uniRadius: "float",
30
+ uniScreenHeightInPixels: "float",
31
+ },
32
+ attributes: {
33
+ attPoint: "vec3",
34
+ attUV: "vec2",
35
+ attIndex: "float",
36
+ },
37
+ varying: {
38
+ varUV: "vec2",
39
+ varLight: "float",
40
+ },
41
+ mainCode: [
42
+ "varUV = attUV;",
43
+ "varLight = (attIndex == uniIndex) ? 0.5 : 0.0;",
44
+ "vec4 point = uniModelViewMatrix * vec4(attPoint.xyz, 1.0);",
45
+ "vec4 shift = point + vec4(0, uniRadius, 0, 0);",
46
+ "gl_Position = uniProjectionMatrix * point;",
47
+ "vec4 screenShift = uniProjectionMatrix * shift;",
48
+ "gl_PointSize = max(",
49
+ ["8.0,", "abs(screenShift.y - gl_Position.y) * uniScreenHeightInPixels / gl_Position.w"],
50
+ ");",
51
+ ],
52
+ }),
53
+ frag: new TgdShaderFragment({
54
+ uniforms: {
55
+ uniTexture: "sampler2D",
56
+ },
57
+ outputs: {
58
+ FragColor: "vec4",
59
+ },
60
+ mainCode: [
61
+ `vec4 color = texture(uniTexture, varUV + gl_PointCoord * vec2(${1 / 3}, 0.5));`,
62
+ `if (color.a < ${1 / 0xff}) discard;`,
63
+ "color.xyz *= 1.0 - varLight;",
64
+ "color.xyz += vec3(varLight);",
65
+ "FragColor = color;",
66
+ ],
67
+ }),
68
+ });
69
+ this.prg = prg;
70
+ const dataset = new TgdDataset({
71
+ attPoint: "vec3",
72
+ attUV: "vec2",
73
+ attIndex: "float",
74
+ });
75
+ const U = 1 / 3;
76
+ const V = 1 / 2;
77
+ // prettier-ignore
78
+ dataset.set("attPoint", new Float32Array([
79
+ +1, 0, 0, 0, +1, 0, 0, 0, +1, -1, 0, 0, 0, -1, 0, 0, 0, -1,
80
+ ]));
81
+ // prettier-ignore
82
+ dataset.set("attUV", new Float32Array([0, 0, U, 0, 2 * U, 0, 0, V, U, V, 2 * U, V]));
83
+ dataset.set("attIndex", new Float32Array([0, 1, 2, 3, 4, 5]));
84
+ const vao = new TgdVertexArray(context.gl, prg, [dataset], new Uint8Array([0, 1, 2, 3, 4, 5]));
85
+ this.vao = vao;
86
+ }
87
+ delete() {
88
+ this.texture.delete();
89
+ this.prg.delete();
90
+ this.vao.delete();
91
+ }
92
+ paint(time, delta) {
93
+ const { context, prg, vao, texture, index } = this;
94
+ const { gl, camera } = context;
95
+ prg.use();
96
+ prg.uniform1f("uniIndex", index);
97
+ prg.uniform1f("uniRadius", 0.333);
98
+ prg.uniform1f("uniScreenHeightInPixels", this.size);
99
+ prg.uniformMatrix4fv("uniModelViewMatrix", camera.matrixModelView);
100
+ prg.uniformMatrix4fv("uniProjectionMatrix", camera.matrixProjection);
101
+ texture.activate(0, prg, "uniTexture");
102
+ vao.bind();
103
+ TgdPainterState.do(context, {
104
+ depth: "less",
105
+ blend: "alpha",
106
+ action: () => gl.drawElements(gl.POINTS, 6, gl.UNSIGNED_BYTE, 0),
107
+ });
108
+ vao.unbind();
109
+ }
110
+ }
111
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibm9ybWFsLjEuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvcGFpbnRlci9naXptby9wYWludGVycy9ub3JtYWwuMS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQ0EsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGNBQWMsQ0FBQTtBQUN6QyxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sc0JBQXNCLENBQUE7QUFDakQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLG9CQUFvQixDQUFBO0FBQ3BELE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxjQUFjLENBQUE7QUFDekMsT0FBTyxFQUFFLGlCQUFpQixFQUFFLGVBQWUsRUFBRSxNQUFNLGFBQWEsQ0FBQTtBQUVoRSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sVUFBVSxDQUFBO0FBQ3pDLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLFFBQVEsQ0FBQTtBQU8xQyxNQUFNLE9BQU8saUJBQWtCLFNBQVEsVUFBVTtJQUN0QyxNQUFNLENBQU8sTUFBTSxDQUFDLE9BQW1CLEVBQUUsT0FBa0Q7O1lBQzlGLE1BQU0sT0FBTyxHQUFHLE1BQU0saUJBQWlCLENBQUMsT0FBTyxDQUFDLENBQUE7WUFDaEQsT0FBTyxJQUFJLGlCQUFpQixDQUFDLE9BQU8sa0JBQUksT0FBTyxJQUFLLE9BQU8sRUFBRyxDQUFBO1FBQ2xFLENBQUM7S0FBQTtJQVNELFlBQ3FCLE9BQW1CLEVBQ3BDLE9BQWlDO1FBRWpDLEtBQUssRUFBRSxDQUFBO1FBSFUsWUFBTyxHQUFQLE9BQU8sQ0FBWTtRQVJqQyxVQUFLLEdBQUcsQ0FBQyxDQUFDLENBQUE7UUFZYixJQUFJLENBQUMsSUFBSSxHQUFHLE9BQU8sQ0FBQyxJQUFJLENBQUE7UUFDeEIsSUFBSSxDQUFDLE9BQU8sR0FBRyxPQUFPLENBQUMsT0FBTyxDQUFBO1FBQzlCLE1BQU0sR0FBRyxHQUFHLElBQUksVUFBVSxDQUFDLE9BQU8sQ0FBQyxFQUFF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
@@ -0,0 +1,17 @@
1
+ import { TgdContext } from "../../../context";
2
+ import { TgdTexture2D } from "../../../texture";
3
+ import { TgdPainterProgram } from "../../program";
4
+ import { TgdUniformBufferObject } from "../../../uniform";
5
+ interface PainterTipsNormalOptions {
6
+ texture: TgdTexture2D;
7
+ size: number;
8
+ uniformCamera: TgdUniformBufferObject;
9
+ }
10
+ export declare class PainterTipsNormal extends TgdPainterProgram {
11
+ static create(context: TgdContext, options: Omit<PainterTipsNormalOptions, "texture">): Promise<PainterTipsNormal>;
12
+ index: number;
13
+ size: number;
14
+ private constructor();
15
+ }
16
+ export {};
17
+ //# sourceMappingURL=normal.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"normal.d.ts","sourceRoot":"","sources":["../../../../src/painter/gizmo/painters/normal.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAA;AACzC,OAAO,EAAE,YAAY,EAAE,MAAM,cAAc,CAAA;AAE3C,OAAO,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAA;AACxD,OAAO,EAAE,sBAAsB,EAAE,MAAM,cAAc,CAAA;AAErD,UAAU,wBAAwB;IAC9B,OAAO,EAAE,YAAY,CAAA;IACrB,IAAI,EAAE,MAAM,CAAA;IACZ,aAAa,EAAE,sBAAsB,CAAA;CACxC;AAED,qBAAa,iBAAkB,SAAQ,iBAAiB;WAChC,MAAM,CAAC,OAAO,EAAE,UAAU,EAAE,OAAO,EAAE,IAAI,CAAC,wBAAwB,EAAE,SAAS,CAAC;IAK3F,KAAK,SAAK;IACV,IAAI,EAAE,MAAM,CAAA;IAEnB,OAAO;CAyEV"}
@@ -0,0 +1,87 @@
1
+ import { __awaiter } from "tslib";
2
+ import { createTipsTexture } from "./tips.js";
3
+ import { TgdPainterProgram } from "./../../program.js";
4
+ import { TgdUniformBufferObject } from "./../../../uniform/index.js";
5
+ export class PainterTipsNormal extends TgdPainterProgram {
6
+ static create(context, options) {
7
+ return __awaiter(this, void 0, void 0, function* () {
8
+ const texture = yield createTipsTexture(context);
9
+ return new PainterTipsNormal(context, Object.assign({ texture }, options));
10
+ });
11
+ }
12
+ constructor(context, { uniformCamera, size, texture }) {
13
+ const uniformPainter = new TgdUniformBufferObject(context, {
14
+ uniforms: {
15
+ uniIndex: "float",
16
+ uniRadius: "float",
17
+ uniScreenHeightInPixels: "float",
18
+ },
19
+ values: {
20
+ uniRadius: 0.333,
21
+ },
22
+ });
23
+ const U = 1 / 3;
24
+ const V = 1 / 2;
25
+ super(context, {
26
+ drawMode: "POINTS",
27
+ textures: {
28
+ uniTexture: texture,
29
+ },
30
+ uniforms: {
31
+ uniformCamera,
32
+ uniformPainter,
33
+ },
34
+ dataset: {
35
+ attribs: {
36
+ attPoint: {
37
+ type: "vec3",
38
+ data: new Float32Array([+1, 0, 0, 0, +1, 0, 0, 0, +1, -1, 0, 0, 0, -1, 0, 0, 0, -1]),
39
+ },
40
+ attUV: { type: "vec2", data: new Float32Array([0, 0, U, 0, 2 * U, 0, 0, V, U, V, 2 * U, V]) },
41
+ attIndex: { type: "float", data: new Float32Array([0, 1, 2, 3, 4, 5]) },
42
+ },
43
+ },
44
+ varying: {
45
+ varUV: "vec2",
46
+ varLight: "float",
47
+ },
48
+ vert: {
49
+ mainCode: [
50
+ "varUV = attUV;",
51
+ "varLight = (attIndex == uniIndex) ? 0.5 : 0.0;",
52
+ "vec4 point = uniModelViewMatrix * vec4(attPoint.xyz, 1.0);",
53
+ "vec4 shift = point + vec4(0, uniRadius, 0, 0);",
54
+ "gl_Position = uniProjectionMatrix * point;",
55
+ "vec4 screenShift = uniProjectionMatrix * shift;",
56
+ "gl_PointSize = max(",
57
+ ["8.0,", "abs(screenShift.y - gl_Position.y) * uniScreenHeightInPixels / gl_Position.w"],
58
+ ");",
59
+ ],
60
+ },
61
+ frag: {
62
+ mainCode: [
63
+ `vec4 color = texture(uniTexture, varUV + gl_PointCoord * vec2(${1 / 3}, 0.5));`,
64
+ `if (color.a < ${1 / 0xff}) discard;`,
65
+ "color.xyz *= 1.0 - varLight;",
66
+ "color.xyz += vec3(varLight);",
67
+ "FragColor = color;",
68
+ ],
69
+ },
70
+ state: {
71
+ depth: "less",
72
+ blend: "alpha",
73
+ },
74
+ onEnter: () => {
75
+ uniformPainter.values.uniIndex = this.index;
76
+ uniformPainter.values.uniScreenHeightInPixels = this.size;
77
+ },
78
+ onDelete: () => {
79
+ texture.delete();
80
+ uniformPainter.delete();
81
+ },
82
+ });
83
+ this.index = -1;
84
+ this.size = size;
85
+ }
86
+ }
87
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibm9ybWFsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL3BhaW50ZXIvZ2l6bW8vcGFpbnRlcnMvbm9ybWFsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFFQSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxRQUFRLENBQUE7QUFDMUMsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sc0JBQXNCLENBQUE7QUFDeEQsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sY0FBYyxDQUFBO0FBUXJELE1BQU0sT0FBTyxpQkFBa0IsU0FBUSxpQkFBaUI7SUFDN0MsTUFBTSxDQUFPLE1BQU0sQ0FBQyxPQUFtQixFQUFFLE9BQWtEOztZQUM5RixNQUFNLE9BQU8sR0FBRyxNQUFNLGlCQUFpQixDQUFDLE9BQU8sQ0FBQyxDQUFBO1lBQ2hELE9BQU8sSUFBSSxpQkFBaUIsQ0FBQyxPQUFPLGtCQUFJLE9BQU8sSUFBSyxPQUFPLEVBQUcsQ0FBQTtRQUNsRSxDQUFDO0tBQUE7SUFLRCxZQUFvQixPQUFtQixFQUFFLEVBQUUsYUFBYSxFQUFFLElBQUksRUFBRSxPQUFPLEVBQTRCO1FBQy9GLE1BQU0sY0FBYyxHQUFHLElBQUksc0JBQXNCLENBQUMsT0FBTyxFQUFFO1lBQ3ZELFFBQVEsRUFBRTtnQkFDTixRQUFRLEVBQUUsT0FBTztnQkFDakIsU0FBUyxFQUFFLE9BQU87Z0JBQ2xCLHVCQUF1QixFQUFFLE9BQU87YUFDbkM7WUFDRCxNQUFNLEVBQUU7Z0JBQ0osU0FBUyxFQUFFLEtBQUs7YUFDbkI7U0FDSixDQUFDLENBQUE7UUFDRixNQUFNLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFBO1FBQ2YsTUFBTSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQTtRQUNmLEtBQUssQ0FBQyxPQUFPLEVBQUU7WUFDWCxRQUFRLEVBQUUsUUFBUTtZQUNsQixRQUFRLEVBQUU7Z0JBQ04sVUFBVSxFQUFFLE9BQU87YUFDdEI7WUFD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
@@ -0,0 +1,18 @@
1
+ import type { TgdContext } from "../../../context";
2
+ import { TgdTexture2D } from "../../../texture";
3
+ interface TipsOptions {
4
+ /**
5
+ * Resulting image will be 3*size × 2*size.
6
+ */
7
+ size: number;
8
+ /**
9
+ * Tips' scale
10
+ */
11
+ scale: number;
12
+ red: string;
13
+ green: string;
14
+ blue: string;
15
+ }
16
+ export declare function createTipsTexture(context: TgdContext, { size, red, green, blue }?: Partial<TipsOptions>): Promise<TgdTexture2D>;
17
+ export {};
18
+ //# sourceMappingURL=tips.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tips.d.ts","sourceRoot":"","sources":["../../../../src/painter/gizmo/painters/tips.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,cAAc,CAAA;AAE9C,OAAO,EAAE,YAAY,EAAE,MAAM,cAAc,CAAA;AAK3C,UAAU,WAAW;IACjB;;OAEG;IACH,IAAI,EAAE,MAAM,CAAA;IACZ;;OAEG;IACH,KAAK,EAAE,MAAM,CAAA;IACb,GAAG,EAAE,MAAM,CAAA;IACX,KAAK,EAAE,MAAM,CAAA;IACb,IAAI,EAAE,MAAM,CAAA;CACf;AAED,wBAAsB,iBAAiB,CACnC,OAAO,EAAE,UAAU,EACnB,EAAE,IAAW,EAAE,GAAS,EAAE,KAAa,EAAE,IAAW,EAAE,GAAE,OAAO,CAAC,WAAW,CAAM,GAClF,OAAO,CAAC,YAAY,CAAC,CAUvB"}
@@ -0,0 +1,44 @@
1
+ import { __awaiter } from "tslib";
2
+ import { TgdColor } from "./../../../color/index.js";
3
+ import { tgdLoadCanvasFromSvg } from "./../../../loader/index.js";
4
+ import { TgdTexture2D } from "./../../../texture/index.js";
5
+ import { RED, GREEN, BLUE } from "./consts.js";
6
+ const SIZE = 128;
7
+ export function createTipsTexture(context_1) {
8
+ return __awaiter(this, arguments, void 0, function* (context, { size = SIZE, red = RED, green = GREEN, blue = BLUE } = {}) {
9
+ const canvas = yield tgdLoadCanvasFromSvg(makeTipsSVG(size, red, green, blue));
10
+ const texture = new TgdTexture2D(context, {
11
+ params: {
12
+ magFilter: "LINEAR",
13
+ minFilter: "LINEAR",
14
+ },
15
+ load: canvas,
16
+ });
17
+ return texture;
18
+ });
19
+ }
20
+ function makeTipsSVG(size, red, green, blue) {
21
+ return `<svg xmlns="http://www.w3.org/2000/svg" width="${3 * size}" height="${2 * size}" viewBox="0 0 ${3 * size} ${2 * size}">
22
+ <style>
23
+ text {
24
+ font: bold ${(80 * size) / 128}px sans-serif;
25
+ dominant-baseline: middle;
26
+ text-anchor: middle;
27
+ transform: translateY(${(8 * size) / 128}px);
28
+ }
29
+ </style>
30
+ ${[red, green, blue].map((color, index) => {
31
+ const x = (0.5 + index) * size;
32
+ const y1 = size * 0.5;
33
+ const y2 = y1 + size;
34
+ const r1 = (55 * size) / 128;
35
+ const r2 = (50 * size) / 128;
36
+ const stroke = (8 * size) / 128;
37
+ const back = TgdColor.fromString(color).alphaMul(0.25).toString();
38
+ return `<circle fill="${color}" cx="${x}" cy="${y1}" r="${r1}" />
39
+ <text fill="#000" x="${x}" y="${y1}">${"XYZ".charAt(index)}</text>
40
+ <circle stroke="${color}" fill="${back}" stroke-width="${stroke}" cx="${x}" cy="${y2}" r="${r2}"/>`;
41
+ })}
42
+ </svg>`;
43
+ }
44
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGlwcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9wYWludGVyL2dpem1vL3BhaW50ZXJzL3RpcHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxZQUFZLENBQUE7QUFFckMsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sYUFBYSxDQUFBO0FBQ2xELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxjQUFjLENBQUE7QUFDM0MsT0FBTyxFQUFFLEdBQUcsRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFLE1BQU0sVUFBVSxDQUFBO0FBRTNDLE1BQU0sSUFBSSxHQUFHLEdBQUcsQ0FBQTtBQWdCaEIsTUFBTSxVQUFnQixpQkFBaUI7eURBQ25DLE9BQW1CLEVBQ25CLEVBQUUsSUFBSSxHQUFHLElBQUksRUFBRSxHQUFHLEdBQUcsR0FBRyxFQUFFLEtBQUssR0FBRyxLQUFLLEVBQUUsSUFBSSxHQUFHLElBQUksS0FBMkIsRUFBRTtRQUVqRixNQUFNLE1BQU0sR0FBRyxNQUFNLG9CQUFvQixDQUFDLFdBQVcsQ0FBQyxJQUFJLEVBQUUsR0FBRyxFQUFFLEtBQUssRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFBO1FBQzlFLE1BQU0sT0FBTyxHQUFHLElBQUksWUFBWSxDQUFDLE9BQU8sRUFBRTtZQUN0QyxNQUFNLEVBQUU7Z0JBQ0osU0FBUyxFQUFFLFFBQVE7Z0JBQ25CLFNBQVMsRUFBRSxRQUFRO2FBQ3RCO1lBQ0QsSUFBSSxFQUFFLE1BQU07U0FDZixDQUFDLENBQUE7UUFDRixPQUFPLE9BQU8sQ0FBQTtJQUNsQixDQUFDO0NBQUE7QUFFRCxTQUFTLFdBQVcsQ0FBQyxJQUFZLEVBQUUsR0FBVyxFQUFFLEtBQWEsRUFBRSxJQUFZO0lBQ3ZFLE9BQU8sa0RBQWtELENBQUMsR0FBRyxJQUFJLGFBQzdELENBQUMsR0FBRyxJQUNSLGtCQUFrQixDQUFDLEdBQUcsSUFBSSxJQUFJLENBQUMsR0FBRyxJQUFJOzs7aUJBR3pCLENBQUMsRUFBRSxHQUFHLElBQUksQ0FBQyxHQUFHLEdBQUc7Ozs0QkFHTixDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsR0FBRyxHQUFHOzs7RUFHMUMsQ0FBQyxHQUFHLEVBQUUsS0FBSyxFQUFFLElBQUksQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEtBQUssRUFBRSxLQUFLLEVBQUUsRUFBRTtRQUN0QyxNQUFNLENBQUMsR0FBRyxDQUFDLEdBQUcsR0FBRyxLQUFLLENBQUMsR0FBRyxJQUFJLENBQUE7UUFDOUIsTUFBTSxFQUFFLEdBQUcsSUFBSSxHQUFHLEdBQUcsQ0FBQTtRQUNyQixNQUFNLEVBQUUsR0FBRyxFQUFFLEdBQUcsSUFBSSxDQUFBO1FBQ3BCLE1BQU0sRUFBRSxHQUFHLENBQUMsRUFBRSxHQUFHLElBQUksQ0FBQyxHQUFHLEdBQUcsQ0FBQTtRQUM1QixNQUFNLEVBQUUsR0FBRyxDQUFDLEVBQUUsR0FBRyxJQUFJLENBQUMsR0FBRyxHQUFHLENBQUE7UUFDNUIsTUFBTSxNQUFNLEdBQUcsQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLEdBQUcsR0FBRyxDQUFBO1FBQy9CLE1BQU0sSUFBSSxHQUFHLFFBQVEsQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDLFFBQVEsRUFBRSxDQUFBO1FBQ2pFLE9BQU8saUJBQWlCLEtBQUssU0FBUyxDQUFDLFNBQVMsRUFBRSxRQUFRLEVBQUU7dUJBQ3pDLENBQUMsUUFBUSxFQUFFLEtBQUssS0FBSyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUM7a0JBQ3hDLEtBQUssV0FBVyxJQUFJLG1CQUFtQixNQUFNLFNBQVMsQ0FBQyxTQUFTLEVBQUUsUUFBUSxFQUFFLEtBQUssQ0FBQTtJQUNuRyxDQUFDLENBQUM7T0FDSyxDQUFBO0FBQ1AsQ0FBQyJ9
@@ -0,0 +1,22 @@
1
+ import { TgdContext } from "../../context";
2
+ import { TgdPainter } from "../painter";
3
+ import { PainterTipsNormal } from "./painters/normal";
4
+ interface SpritesOptions {
5
+ /**
6
+ * Resulting image will be 3*size × 2*size.
7
+ */
8
+ size: number;
9
+ /**
10
+ * Tips' scale
11
+ */
12
+ scale: number;
13
+ red: string;
14
+ green: string;
15
+ blue: string;
16
+ }
17
+ export declare function createTipsPainter(context: TgdContext, { size, red, green, blue }?: Partial<SpritesOptions>): Promise<{
18
+ tipsNormal: PainterTipsNormal;
19
+ tipsMask: TgdPainter;
20
+ }>;
21
+ export {};
22
+ //# sourceMappingURL=tips.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tips.d.ts","sourceRoot":"","sources":["../../../src/painter/gizmo/tips.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAA;AAGzC,OAAO,EAAE,UAAU,EAAE,MAAM,YAAY,CAAA;AACvC,OAAO,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAA;AAQrD,UAAU,cAAc;IACpB;;OAEG;IACH,IAAI,EAAE,MAAM,CAAA;IACZ;;OAEG;IACH,KAAK,EAAE,MAAM,CAAA;IACb,GAAG,EAAE,MAAM,CAAA;IACX,KAAK,EAAE,MAAM,CAAA;IACb,IAAI,EAAE,MAAM,CAAA;CACf;AAED,wBAAsB,iBAAiB,CACnC,OAAO,EAAE,UAAU,EACnB,EAAE,IAAU,EAAE,GAAO,EAAE,KAAS,EAAE,IAAQ,EAAE,GAAE,OAAO,CAAC,cAAc,CAAM,GAC3E,OAAO,CAAC;IAAE,UAAU,EAAE,iBAAiB,CAAC;IAAC,QAAQ,EAAE,UAAU,CAAA;CAAE,CAAC,CAalE"}
@@ -0,0 +1,51 @@
1
+ import { __awaiter } from "tslib";
2
+ import { TgdTexture2D } from "./../../texture/index.js";
3
+ import { tgdLoadCanvasFromSvg } from "./../../loader/index.js";
4
+ import { TgdColor } from "./../../color/index.js";
5
+ import { PainterTipsNormal } from "./painters/normal.js";
6
+ import { PainterTipsMask } from "./painters/mask.js";
7
+ const SIZE = 256;
8
+ const R = "#F63652FF";
9
+ const G = "#70A41CFF";
10
+ const B = "#2F84E3FF";
11
+ export function createTipsPainter(context_1) {
12
+ return __awaiter(this, arguments, void 0, function* (context, { size = 128, red = R, green = G, blue = B } = {}) {
13
+ const canvas = yield tgdLoadCanvasFromSvg(makeTipsSVG(size, red, green, blue));
14
+ const texture = new TgdTexture2D(context, {
15
+ params: {
16
+ magFilter: "LINEAR",
17
+ minFilter: "LINEAR",
18
+ },
19
+ load: canvas,
20
+ });
21
+ return {
22
+ tipsNormal: new PainterTipsNormal(context, { texture }),
23
+ tipsMask: new PainterTipsMask(context),
24
+ };
25
+ });
26
+ }
27
+ function makeTipsSVG(size, red, green, blue) {
28
+ return `<svg xmlns="http://www.w3.org/2000/svg" width="${3 * size}" height="${2 * size}" viewBox="0 0 ${3 * size} ${2 * size}">
29
+ <style>
30
+ text {
31
+ font: bold ${(80 * size) / 128}px sans-serif;
32
+ dominant-baseline: middle;
33
+ text-anchor: middle;
34
+ transform: translateY(${(8 * size) / 128}px);
35
+ }
36
+ </style>
37
+ ${[red, green, blue].map((color, index) => {
38
+ const x = (0.5 + index) * size;
39
+ const y1 = size * 0.5;
40
+ const y2 = y1 + size;
41
+ const r1 = (55 * size) / 128;
42
+ const r2 = (50 * size) / 128;
43
+ const stroke = (8 * size) / 128;
44
+ const back = TgdColor.fromString(color).alphaMul(0.25).toString();
45
+ return `<circle fill="${color}" cx="${x}" cy="${y1}" r="${r1}" />
46
+ <text fill="#000" x="${x}" y="${y1}">${"XYZ".charAt(index)}</text>
47
+ <circle stroke="${color}" fill="${back}" stroke-width="${stroke}" cx="${x}" cy="${y2}" r="${r2}"/>`;
48
+ })}
49
+ </svg>`;
50
+ }
51
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGlwcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9wYWludGVyL2dpem1vL3RpcHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxjQUFjLENBQUE7QUFFM0MsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sYUFBYSxDQUFBO0FBQ2xELE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxZQUFZLENBQUE7QUFFckMsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sbUJBQW1CLENBQUE7QUFDckQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLGlCQUFpQixDQUFBO0FBRWpELE1BQU0sSUFBSSxHQUFHLEdBQUcsQ0FBQTtBQUNoQixNQUFNLENBQUMsR0FBRyxXQUFXLENBQUE7QUFDckIsTUFBTSxDQUFDLEdBQUcsV0FBVyxDQUFBO0FBQ3JCLE1BQU0sQ0FBQyxHQUFHLFdBQVcsQ0FBQTtBQWdCckIsTUFBTSxVQUFnQixpQkFBaUI7eURBQ25DLE9BQW1CLEVBQ25CLEVBQUUsSUFBSSxHQUFHLEdBQUcsRUFBRSxHQUFHLEdBQUcsQ0FBQyxFQUFFLEtBQUssR0FBRyxDQUFDLEVBQUUsSUFBSSxHQUFHLENBQUMsS0FBOEIsRUFBRTtRQUUxRSxNQUFNLE1BQU0sR0FBRyxNQUFNLG9CQUFvQixDQUFDLFdBQVcsQ0FBQyxJQUFJLEVBQUUsR0FBRyxFQUFFLEtBQUssRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFBO1FBQzlFLE1BQU0sT0FBTyxHQUFHLElBQUksWUFBWSxDQUFDLE9BQU8sRUFBRTtZQUN0QyxNQUFNLEVBQUU7Z0JBQ0osU0FBUyxFQUFFLFFBQVE7Z0JBQ25CLFNBQVMsRUFBRSxRQUFRO2FBQ3RCO1lBQ0QsSUFBSSxFQUFFLE1BQU07U0FDZixDQUFDLENBQUE7UUFDRixPQUFPO1lBQ0gsVUFBVSxFQUFFLElBQUksaUJBQWlCLENBQUMsT0FBTyxFQUFFLEVBQUUsT0FBTyxFQUFFLENBQUM7WUFDdkQsUUFBUSxFQUFFLElBQUksZUFBZSxDQUFDLE9BQU8sQ0FBQztTQUN6QyxDQUFBO0lBQ0wsQ0FBQztDQUFBO0FBRUQsU0FBUyxXQUFXLENBQUMsSUFBWSxFQUFFLEdBQVcsRUFBRSxLQUFhLEVBQUUsSUFBWTtJQUN2RSxPQUFPLGtEQUFrRCxDQUFDLEdBQUcsSUFBSSxhQUM3RCxDQUFDLEdBQUcsSUFDUixrQkFBa0IsQ0FBQyxHQUFHLElBQUksSUFBSSxDQUFDLEdBQUcsSUFBSTs7O2lCQUd6QixDQUFDLEVBQUUsR0FBRyxJQUFJLENBQUMsR0FBRyxHQUFHOzs7NEJBR04sQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLEdBQUcsR0FBRzs7O0VBRzFDLENBQUMsR0FBRyxFQUFFLEtBQUssRUFBRSxJQUFJLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxLQUFLLEVBQUUsS0FBSyxFQUFFLEVBQUU7UUFDdEMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxHQUFHLEdBQUcsS0FBSyxDQUFDLEdBQUcsSUFBSSxDQUFBO1FBQzlCLE1BQU0sRUFBRSxHQUFHLElBQUksR0FBRyxHQUFHLENBQUE7UUFDckIsTUFBTSxFQUFFLEdBQUcsRUFBRSxHQUFHLElBQUksQ0FBQTtRQUNwQixNQUFNLEVBQUUsR0FBRyxDQUFDLEVBQUUsR0FBRyxJQUFJLENBQUMsR0FBRyxHQUFHLENBQUE7UUFDNUIsTUFBTSxFQUFFLEdBQUcsQ0FBQyxFQUFFLEdBQUcsSUFBSSxDQUFDLEdBQUcsR0FBRyxDQUFBO1FBQzVCLE1BQU0sTUFBTSxHQUFHLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxHQUFHLEdBQUcsQ0FBQTtRQUMvQixNQUFNLElBQUksR0FBRyxRQUFRLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQyxRQUFRLEVBQUUsQ0FBQTtRQUNqRSxPQUFPLGlCQUFpQixLQUFLLFNBQVMsQ0FBQyxTQUFTLEVBQUUsUUFBUSxFQUFFO3VCQUN6QyxDQUFDLFFBQVEsRUFBRSxLQUFLLEtBQUssQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDO2tCQUN4QyxLQUFLLFdBQVcsSUFBSSxtQkFBbUIsTUFBTSxTQUFTLENBQUMsU0FBUyxFQUFFLFFBQVEsRUFBRSxLQUFLLENBQUE7SUFDbkcsQ0FBQyxDQUFDO09BQ0ssQ0FBQTtBQUNQLENBQUMifQ==
@@ -2,9 +2,11 @@ import { TgdCamera } from "../camera";
2
2
  import { TgdPainterGroup } from "./group";
3
3
  import { TgdContext } from "../context";
4
4
  import { TgdPainter } from "./painter";
5
+ import { TgdPainterFunction } from "../types/painter";
5
6
  export interface TgdPainterGroupCameraOptions {
7
+ name?: string;
6
8
  camera?: TgdCamera;
7
- children?: TgdPainter[];
9
+ children?: (TgdPainter | TgdPainterFunction)[];
8
10
  }
9
11
  /**
10
12
  * This group uses a special camera, then rollback to the saved one.
@@ -13,6 +15,6 @@ export declare class TgdPainterGroupCamera extends TgdPainterGroup {
13
15
  private readonly context;
14
16
  camera: TgdCamera;
15
17
  constructor(context: TgdContext, options?: TgdPainterGroupCameraOptions);
16
- paint(time: number, delay: number): void;
18
+ paint(time: number, delta: number): void;
17
19
  }
18
20
  //# sourceMappingURL=group-camera.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"group-camera.d.ts","sourceRoot":"","sources":["../../src/painter/group-camera.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAA;AACvC,OAAO,EAAE,eAAe,EAAE,MAAM,SAAS,CAAA;AACzC,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAA;AACzC,OAAO,EAAE,UAAU,EAAE,MAAM,WAAW,CAAA;AAEtC,MAAM,WAAW,4BAA4B;IACzC,MAAM,CAAC,EAAE,SAAS,CAAA;IAClB,QAAQ,CAAC,EAAE,UAAU,EAAE,CAAA;CAC1B;AAED;;GAEG;AACH,qBAAa,qBAAsB,SAAQ,eAAe;IAIlD,OAAO,CAAC,QAAQ,CAAC,OAAO;IAHrB,MAAM,EAAE,SAAS,CAAA;gBAGH,OAAO,EAAE,UAAU,EACpC,OAAO,GAAE,4BAAiC;IAM9C,KAAK,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI;CAO3C"}
1
+ {"version":3,"file":"group-camera.d.ts","sourceRoot":"","sources":["../../src/painter/group-camera.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAA;AACvC,OAAO,EAAE,eAAe,EAAE,MAAM,SAAS,CAAA;AACzC,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAA;AACzC,OAAO,EAAE,UAAU,EAAE,MAAM,WAAW,CAAA;AACtC,OAAO,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAA;AAEvD,MAAM,WAAW,4BAA4B;IACzC,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,MAAM,CAAC,EAAE,SAAS,CAAA;IAClB,QAAQ,CAAC,EAAE,CAAC,UAAU,GAAG,kBAAkB,CAAC,EAAE,CAAA;CACjD;AAED;;GAEG;AACH,qBAAa,qBAAsB,SAAQ,eAAe;IAIlD,OAAO,CAAC,QAAQ,CAAC,OAAO;IAHrB,MAAM,EAAE,SAAS,CAAA;gBAGH,OAAO,EAAE,UAAU,EACpC,OAAO,GAAE,4BAAiC;IAQ9C,KAAK,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI;CAO3C"}
@@ -7,14 +7,18 @@ export class TgdPainterGroupCamera extends TgdPainterGroup {
7
7
  var _a;
8
8
  super(options.children);
9
9
  this.context = context;
10
+ if (options.name)
11
+ this.name = options.name;
12
+ else
13
+ this.name = `GroupCamera/${this.name}`;
10
14
  this.camera = (_a = options.camera) !== null && _a !== void 0 ? _a : context.camera;
11
15
  }
12
- paint(time, delay) {
16
+ paint(time, delta) {
13
17
  const { context } = this;
14
18
  const savedCamera = context.camera;
15
19
  context.camera = this.camera;
16
- super.paint(time, delay);
20
+ super.paint(time, delta);
17
21
  context.camera = savedCamera;
18
22
  }
19
23
  }
20
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ3JvdXAtY2FtZXJhLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3BhaW50ZXIvZ3JvdXAtY2FtZXJhLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxTQUFTLENBQUE7QUFTekM7O0dBRUc7QUFDSCxNQUFNLE9BQU8scUJBQXNCLFNBQVEsZUFBZTtJQUd0RCxZQUNxQixPQUFtQixFQUNwQyxVQUF3QyxFQUFFOztRQUUxQyxLQUFLLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxDQUFBO1FBSE4sWUFBTyxHQUFQLE9BQU8sQ0FBWTtRQUlwQyxJQUFJLENBQUMsTUFBTSxHQUFHLE1BQUEsT0FBTyxDQUFDLE1BQU0sbUNBQUksT0FBTyxDQUFDLE1BQU0sQ0FBQTtJQUNsRCxDQUFDO0lBRUQsS0FBSyxDQUFDLElBQVksRUFBRSxLQUFhO1FBQzdCLE1BQU0sRUFBRSxPQUFPLEVBQUUsR0FBRyxJQUFJLENBQUE7UUFDeEIsTUFBTSxXQUFXLEdBQUcsT0FBTyxDQUFDLE1BQU0sQ0FBQTtRQUNsQyxPQUFPLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUE7UUFDNUIsS0FBSyxDQUFDLEtBQUssQ0FBQyxJQUFJLEVBQUUsS0FBSyxDQUFDLENBQUE7UUFDeEIsT0FBTyxDQUFDLE1BQU0sR0FBRyxXQUFXLENBQUE7SUFDaEMsQ0FBQztDQUNKIn0=
24
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ3JvdXAtY2FtZXJhLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3BhaW50ZXIvZ3JvdXAtY2FtZXJhLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxTQUFTLENBQUE7QUFXekM7O0dBRUc7QUFDSCxNQUFNLE9BQU8scUJBQXNCLFNBQVEsZUFBZTtJQUd0RCxZQUNxQixPQUFtQixFQUNwQyxVQUF3QyxFQUFFOztRQUUxQyxLQUFLLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxDQUFBO1FBSE4sWUFBTyxHQUFQLE9BQU8sQ0FBWTtRQUlwQyxJQUFJLE9BQU8sQ0FBQyxJQUFJO1lBQUUsSUFBSSxDQUFDLElBQUksR0FBRyxPQUFPLENBQUMsSUFBSSxDQUFBOztZQUNyQyxJQUFJLENBQUMsSUFBSSxHQUFHLGVBQWUsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFBO1FBQzNDLElBQUksQ0FBQyxNQUFNLEdBQUcsTUFBQSxPQUFPLENBQUMsTUFBTSxtQ0FBSSxPQUFPLENBQUMsTUFBTSxDQUFBO0lBQ2xELENBQUM7SUFFRCxLQUFLLENBQUMsSUFBWSxFQUFFLEtBQWE7UUFDN0IsTUFBTSxFQUFFLE9BQU8sRUFBRSxHQUFHLElBQUksQ0FBQTtRQUN4QixNQUFNLFdBQVcsR0FBRyxPQUFPLENBQUMsTUFBTSxDQUFBO1FBQ2xDLE9BQU8sQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQTtRQUM1QixLQUFLLENBQUMsS0FBSyxDQUFDLElBQUksRUFBRSxLQUFLLENBQUMsQ0FBQTtRQUN4QixPQUFPLENBQUMsTUFBTSxHQUFHLFdBQVcsQ0FBQTtJQUNoQyxDQUFDO0NBQ0oifQ==
@@ -2,10 +2,10 @@ import { TgdLogic } from "../context";
2
2
  import type { TgdPainterFunction } from "../types/painter";
3
3
  import { type TgdDebugPainterHierarchy, TgdPainter } from "./painter";
4
4
  export type TgdPainterGroupOptions = {
5
- onEnter?(time: number, delay: number): void;
6
- onExit?(time: number, delay: number): void;
5
+ onEnter?(time: number, delta: number): void;
6
+ onExit?(time: number, delta: number): void;
7
7
  name?: string;
8
- children?: TgdPainter[];
8
+ children?: (TgdPainter | TgdPainterFunction)[];
9
9
  };
10
10
  /**
11
11
  * Group several painters together.
@@ -21,11 +21,11 @@ export declare class TgdPainterGroup extends TgdPainter {
21
21
  protected readonly painters: TgdPainter[];
22
22
  private readonly logics;
23
23
  constructor();
24
- constructor(painters?: TgdPainter[], options?: TgdPainterGroupOptions);
24
+ constructor(painters?: (TgdPainter | TgdPainterFunction)[], options?: TgdPainterGroupOptions);
25
25
  constructor(options?: TgdPainterGroupOptions);
26
26
  forEachChild(callback: (child: TgdPainter, index: number) => void): void;
27
27
  has(painter: TgdPainter): boolean;
28
- add(...painters: TgdPainter[]): void;
28
+ add(...painters: (TgdPainter | TgdPainterFunction)[]): void;
29
29
  addFirst(...painters: TgdPainter[]): void;
30
30
  remove(...painters: TgdPainter[]): void;
31
31
  removeWithoutDeleting(...painters: TgdPainter[]): void;
@@ -38,7 +38,7 @@ export declare class TgdPainterGroup extends TgdPainter {
38
38
  */
39
39
  removeAll(deleteRemovedPainters?: boolean): void;
40
40
  delete(): void;
41
- paint(time: number, delay: number): void;
41
+ paint(time: number, delta: number): void;
42
42
  get hierarchy(): TgdDebugPainterHierarchy;
43
43
  debugHierarchy(caption?: string): void;
44
44
  private recursiveDebug;
@@ -1 +1 @@
1
- {"version":3,"file":"group.d.ts","sourceRoot":"","sources":["../../src/painter/group.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAA;AAEvC,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAA;AAC5D,OAAO,EAAE,KAAK,wBAAwB,EAAE,UAAU,EAAE,MAAM,WAAW,CAAA;AAErE,MAAM,MAAM,sBAAsB,GAAG;IACjC,OAAO,CAAC,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI,CAAA;IAC3C,MAAM,CAAC,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI,CAAA;IAC1C,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,QAAQ,CAAC,EAAE,UAAU,EAAE,CAAA;CAC1B,CAAA;AAED;;GAEG;AACH,qBAAa,eAAgB,SAAQ,UAAU;IAC3C;;OAEG;IACH,SAAgB,KAAK,WAAiB;IAC/B,MAAM,UAAO;IACb,OAAO,EAAE,kBAAkB,GAAG,SAAS,CAAA;IACvC,MAAM,EAAE,kBAAkB,GAAG,SAAS,CAAA;IAC7C,SAAS,CAAC,QAAQ,CAAC,QAAQ,EAAE,UAAU,EAAE,CAAA;IAEzC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAmD;;gBAG9D,QAAQ,CAAC,EAAE,UAAU,EAAE,EAAE,OAAO,CAAC,EAAE,sBAAsB;gBACzD,OAAO,CAAC,EAAE,sBAAsB;IA4B5C,YAAY,CAAC,QAAQ,EAAE,CAAC,KAAK,EAAE,UAAU,EAAE,KAAK,EAAE,MAAM,KAAK,IAAI;IAIjE,GAAG,CAAC,OAAO,EAAE,UAAU,GAAG,OAAO;IAIjC,GAAG,CAAC,GAAG,QAAQ,EAAE,UAAU,EAAE;IAM7B,QAAQ,CAAC,GAAG,QAAQ,EAAE,UAAU,EAAE;IAOlC,MAAM,CAAC,GAAG,QAAQ,EAAE,UAAU,EAAE;IAUhC,qBAAqB,CAAC,GAAG,QAAQ,EAAE,UAAU,EAAE;IAS/C;;;;;;OAMG;IACH,SAAS,CAAC,qBAAqB,UAAO;IAStC,MAAM,IAAI,IAAI;IAKd,KAAK,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI;IAgBxC,IAAI,SAAS,IAAI,wBAAwB,CAIxC;IAED,cAAc,CAAC,OAAO,CAAC,EAAE,MAAM;IAS/B,OAAO,CAAC,cAAc;CASzB"}
1
+ {"version":3,"file":"group.d.ts","sourceRoot":"","sources":["../../src/painter/group.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAA;AAEvC,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAA;AAC5D,OAAO,EAAE,KAAK,wBAAwB,EAAE,UAAU,EAAE,MAAM,WAAW,CAAA;AAGrE,MAAM,MAAM,sBAAsB,GAAG;IACjC,OAAO,CAAC,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI,CAAA;IAC3C,MAAM,CAAC,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI,CAAA;IAC1C,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,QAAQ,CAAC,EAAE,CAAC,UAAU,GAAG,kBAAkB,CAAC,EAAE,CAAA;CACjD,CAAA;AAED;;GAEG;AACH,qBAAa,eAAgB,SAAQ,UAAU;IAC3C;;OAEG;IACH,SAAgB,KAAK,WAAiB;IAC/B,MAAM,UAAO;IACb,OAAO,EAAE,kBAAkB,GAAG,SAAS,CAAA;IACvC,MAAM,EAAE,kBAAkB,GAAG,SAAS,CAAA;IAC7C,SAAS,CAAC,QAAQ,CAAC,QAAQ,EAAE,UAAU,EAAE,CAAA;IAEzC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAmD;;gBAG9D,QAAQ,CAAC,EAAE,CAAC,UAAU,GAAG,kBAAkB,CAAC,EAAE,EAAE,OAAO,CAAC,EAAE,sBAAsB;gBAChF,OAAO,CAAC,EAAE,sBAAsB;IA4B5C,YAAY,CAAC,QAAQ,EAAE,CAAC,KAAK,EAAE,UAAU,EAAE,KAAK,EAAE,MAAM,KAAK,IAAI;IAIjE,GAAG,CAAC,OAAO,EAAE,UAAU,GAAG,OAAO;IAIjC,GAAG,CAAC,GAAG,QAAQ,EAAE,CAAC,UAAU,GAAG,kBAAkB,CAAC,EAAE;IAUpD,QAAQ,CAAC,GAAG,QAAQ,EAAE,UAAU,EAAE;IAOlC,MAAM,CAAC,GAAG,QAAQ,EAAE,UAAU,EAAE;IAUhC,qBAAqB,CAAC,GAAG,QAAQ,EAAE,UAAU,EAAE;IAS/C;;;;;;OAMG;IACH,SAAS,CAAC,qBAAqB,UAAO;IAStC,MAAM,IAAI,IAAI;IAKd,KAAK,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI;IAgBxC,IAAI,SAAS,IAAI,wBAAwB,CAIxC;IAED,cAAc,CAAC,OAAO,CAAC,EAAE,MAAM;IAS/B,OAAO,CAAC,cAAc;CASzB"}