@tolokoban/tgd 2.0.29 → 2.0.30

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 (107) hide show
  1. package/lib/dist/canvas/gizmo/gizmo.js +2 -2
  2. package/lib/dist/canvas/landscape/landscape.js +2 -2
  3. package/lib/dist/context/context.d.ts +14 -31
  4. package/lib/dist/context/context.d.ts.map +1 -1
  5. package/lib/dist/context/context.js +54 -69
  6. package/lib/dist/factory/mesh-glb.js +2 -2
  7. package/lib/dist/geometry/gltf.d.ts +12 -0
  8. package/lib/dist/geometry/gltf.d.ts.map +1 -0
  9. package/lib/dist/geometry/gltf.js +36 -0
  10. package/lib/dist/geometry/index.d.ts +1 -0
  11. package/lib/dist/geometry/index.d.ts.map +1 -1
  12. package/lib/dist/geometry/index.js +2 -1
  13. package/lib/dist/geometry/tools/marching-cubes/marching-cubes.js +15 -5
  14. package/lib/dist/index.d.ts +1 -0
  15. package/lib/dist/index.d.ts.map +1 -1
  16. package/lib/dist/index.js +2 -1
  17. package/lib/dist/loader/binary.d.ts.map +1 -1
  18. package/lib/dist/loader/binary.js +3 -1
  19. package/lib/dist/material/face-orientation.d.ts +4 -0
  20. package/lib/dist/material/face-orientation.d.ts.map +1 -1
  21. package/lib/dist/material/face-orientation.js +6 -2
  22. package/lib/dist/material/ghost.d.ts +2 -2
  23. package/lib/dist/material/ghost.d.ts.map +1 -1
  24. package/lib/dist/material/ghost.js +1 -1
  25. package/lib/dist/material/hull.d.ts +14 -1
  26. package/lib/dist/material/hull.d.ts.map +1 -1
  27. package/lib/dist/material/hull.js +18 -6
  28. package/lib/dist/material/index.d.ts +1 -0
  29. package/lib/dist/material/index.d.ts.map +1 -1
  30. package/lib/dist/material/index.js +2 -1
  31. package/lib/dist/material/material.d.ts +7 -2
  32. package/lib/dist/material/material.d.ts.map +1 -1
  33. package/lib/dist/material/material.js +9 -1
  34. package/lib/dist/material/toon.d.ts +38 -0
  35. package/lib/dist/material/toon.d.ts.map +1 -0
  36. package/lib/dist/material/toon.js +95 -0
  37. package/lib/dist/math/mat4.d.ts +1 -0
  38. package/lib/dist/math/mat4.d.ts.map +1 -1
  39. package/lib/dist/math/mat4.js +18 -1
  40. package/lib/dist/math/transfo.d.ts.map +1 -1
  41. package/lib/dist/math/transfo.js +13 -4
  42. package/lib/dist/painter/axes/axes.d.ts +4 -0
  43. package/lib/dist/painter/axes/axes.d.ts.map +1 -1
  44. package/lib/dist/painter/axes/axes.js +14 -1
  45. package/lib/dist/painter/framebuffer-msaa.d.ts +87 -0
  46. package/lib/dist/painter/framebuffer-msaa.d.ts.map +1 -0
  47. package/lib/dist/painter/framebuffer-msaa.js +241 -0
  48. package/lib/dist/painter/framebuffer.js +11 -5
  49. package/lib/dist/painter/group.d.ts +9 -3
  50. package/lib/dist/painter/group.d.ts.map +1 -1
  51. package/lib/dist/painter/group.js +42 -4
  52. package/lib/dist/painter/index.d.ts +3 -1
  53. package/lib/dist/painter/index.d.ts.map +1 -1
  54. package/lib/dist/painter/index.js +4 -2
  55. package/lib/dist/painter/mesh/gltf/gltf.d.ts +2 -2
  56. package/lib/dist/painter/mesh/gltf/gltf.d.ts.map +1 -1
  57. package/lib/dist/painter/mesh/gltf/gltf.js +6 -4
  58. package/lib/dist/painter/mesh/mesh/mesh.d.ts.map +1 -1
  59. package/lib/dist/painter/mesh/mesh/mesh.js +22 -16
  60. package/lib/dist/painter/node/node.d.ts +1 -1
  61. package/lib/dist/painter/node/node.d.ts.map +1 -1
  62. package/lib/dist/painter/node/node.js +1 -1
  63. package/lib/dist/painter/painter.d.ts +2 -2
  64. package/lib/dist/painter/painter.d.ts.map +1 -1
  65. package/lib/dist/painter/painter.js +2 -2
  66. package/lib/dist/painter/segments/capsule.d.ts +11 -0
  67. package/lib/dist/painter/segments/capsule.d.ts.map +1 -0
  68. package/lib/dist/painter/segments/capsule.js +109 -0
  69. package/lib/dist/painter/segments/segments.d.ts +22 -27
  70. package/lib/dist/painter/segments/segments.d.ts.map +1 -1
  71. package/lib/dist/painter/segments/segments.js +134 -139
  72. package/lib/dist/painter/segments.backup/index.d.ts +2 -0
  73. package/lib/dist/painter/segments.backup/index.d.ts.map +1 -0
  74. package/lib/dist/painter/segments.backup/index.js +2 -0
  75. package/lib/dist/painter/segments.backup/segments.d.ts +95 -0
  76. package/lib/dist/painter/segments.backup/segments.d.ts.map +1 -0
  77. package/lib/dist/painter/segments.backup/segments.frag +22 -0
  78. package/lib/dist/painter/segments.backup/segments.js +223 -0
  79. package/lib/dist/painter/segments.backup/segments.vert +121 -0
  80. package/lib/dist/painter/skybox/skybox.d.ts.map +1 -1
  81. package/lib/dist/painter/skybox/skybox.js +4 -3
  82. package/lib/dist/painter/x-ray/index.d.ts +2 -0
  83. package/lib/dist/painter/x-ray/index.d.ts.map +1 -0
  84. package/lib/dist/painter/x-ray/index.js +2 -0
  85. package/lib/dist/painter/x-ray/x-ray.d.ts +20 -0
  86. package/lib/dist/painter/x-ray/x-ray.d.ts.map +1 -0
  87. package/lib/dist/painter/x-ray/x-ray.js +60 -0
  88. package/lib/dist/parser/gltf/gltf.d.ts +4 -4
  89. package/lib/dist/parser/gltf/gltf.d.ts.map +1 -1
  90. package/lib/dist/parser/gltf/gltf.js +29 -17
  91. package/lib/dist/program/program.js +2 -2
  92. package/lib/dist/sound.d.ts +8 -0
  93. package/lib/dist/sound.d.ts.map +1 -0
  94. package/lib/dist/sound.js +43 -0
  95. package/lib/dist/texture/texture-cube.d.ts +2 -3
  96. package/lib/dist/texture/texture-cube.d.ts.map +1 -1
  97. package/lib/dist/texture/texture-cube.js +14 -19
  98. package/lib/dist/texture/texture2d.d.ts +3 -2
  99. package/lib/dist/texture/texture2d.d.ts.map +1 -1
  100. package/lib/dist/texture/texture2d.js +56 -19
  101. package/lib/dist/utils/action/camera.d.ts.map +1 -1
  102. package/lib/dist/utils/action/camera.js +1 -2
  103. package/lib/dist/utils/framebuffer.d.ts +1 -0
  104. package/lib/dist/utils/framebuffer.d.ts.map +1 -1
  105. package/lib/dist/utils/framebuffer.js +19 -1
  106. package/lib/dist/webgl/texture/texture2d.js +3 -3
  107. package/package.json +1 -1
@@ -0,0 +1,109 @@
1
+ import { TgdDataset } from "./../../dataset/index.js";
2
+ import { TgdGeometry } from "./../../geometry/index.js";
3
+ const TAU = 2 * Math.PI;
4
+ /**
5
+ * The capsule is a 3D shape mae of a cylinder
6
+ * and two hemispheres, all of radius 1.
7
+ * The roundness gives use the number of faces around the cylinder.
8
+ * Every vertex has 4 coordinates: x, y, z, and a number that will
9
+ * be 0.0 for bottom tip, and 1.1 for top tip.
10
+ * The cylinder is aligned along Z axis.
11
+ */
12
+ export function makeCapsule(roundness) {
13
+ roundness = Math.max(3, roundness);
14
+ const tips = [];
15
+ const offset = [];
16
+ const elements = [];
17
+ const angleStep = TAU / roundness;
18
+ for (let face = 0; face < roundness; face++) {
19
+ const angle = angleStep * face;
20
+ const x = Math.cos(angle);
21
+ const y = Math.sin(angle);
22
+ offset.push(x, y, +1);
23
+ tips.push(1);
24
+ offset.push(x, y, -1);
25
+ tips.push(0);
26
+ const top1 = face * 2;
27
+ const bottom1 = top1 + 1;
28
+ const top2 = ((face + 1) % roundness) * 2;
29
+ const bottom2 = top2 + 1;
30
+ elements.push(top2, top1, bottom1);
31
+ elements.push(top2, bottom1, bottom2);
32
+ }
33
+ const rings = Math.max(2, Math.ceil(roundness / 2));
34
+ const angleStepRing = (0.5 * Math.PI) / rings;
35
+ for (let ring = 1; ring < rings; ring++) {
36
+ const phi = angleStepRing * ring;
37
+ const z = Math.sin(phi);
38
+ const radius = Math.cos(phi);
39
+ for (let face1 = 0; face1 < roundness; face1++) {
40
+ const angle = angleStep * face1;
41
+ const x = Math.cos(angle) * radius;
42
+ const y = Math.sin(angle) * radius;
43
+ offset.push(x, y, z + 1);
44
+ tips.push(1);
45
+ offset.push(x, y, -z - 1);
46
+ tips.push(0);
47
+ const face2 = (face1 + 1) % roundness;
48
+ const idx0 = (ring - 1) * roundness * 2;
49
+ const idx1 = ring * roundness * 2;
50
+ const top1r0 = idx0 + face1 * 2;
51
+ const top2r0 = idx0 + face2 * 2;
52
+ const top1r1 = idx1 + face1 * 2;
53
+ const top2r1 = idx1 + face2 * 2;
54
+ elements.push(top1r0, top2r0, top2r1);
55
+ elements.push(top2r1, top1r1, top1r0);
56
+ elements.push(top1r0 + 1, top2r1 + 1, top2r0 + 1);
57
+ elements.push(top2r1 + 1, top1r0 + 1, top1r1 + 1);
58
+ }
59
+ }
60
+ offset.push(0, 0, +2);
61
+ tips.push(1);
62
+ offset.push(0, 0, -2);
63
+ tips.push(0);
64
+ const baseIndex = tips.length - 2 * (roundness + 1);
65
+ const endIndex = tips.length - 2;
66
+ for (let face0 = 0; face0 < roundness; face0++) {
67
+ const face1 = (face0 + 1) % roundness;
68
+ const idx0 = face0 * 2 + baseIndex;
69
+ const idx1 = face1 * 2 + baseIndex;
70
+ elements.push(idx0 + 0, idx1 + 0, endIndex + 0);
71
+ elements.push(idx1 + 1, idx0 + 1, endIndex + 1);
72
+ }
73
+ const capsule = new TgdDataset({
74
+ attTip: "float",
75
+ POSITION: "vec3",
76
+ NORMAL: "vec3",
77
+ });
78
+ capsule.set("POSITION", new Float32Array(offset));
79
+ capsule.set("attTip", new Float32Array(tips));
80
+ const geometry = new TgdGeometry({
81
+ dataset: capsule,
82
+ elements: new Uint16Array(elements),
83
+ computeNormalsIfMissing: true,
84
+ // attPosition: "attPosition",
85
+ // attNormal: "attNormal",
86
+ });
87
+ const { set, get } = capsule.getAttribAccessor("NORMAL");
88
+ // The cylinder must be really flat
89
+ for (let idx = 0; idx < roundness * 2; idx += 2) {
90
+ set(0, idx, 2);
91
+ set(0, idx + 1, 2);
92
+ const x = (get(idx, 0) + get(idx + 1, 0)) / 2;
93
+ const y = (get(idx, 1) + get(idx + 1, 1)) / 2;
94
+ set(x, idx, 0);
95
+ set(y, idx, 1);
96
+ set(x, idx + 1, 0);
97
+ set(y, idx + 1, 1);
98
+ }
99
+ // We collapse the cylinder because it will
100
+ // be instantiated with two tips points and radii.
101
+ for (let idx = 0; idx < tips.length; idx++) {
102
+ const shiftZ = tips[idx] === 0 ? +1 : -1;
103
+ offset[idx * 3 + 2] += shiftZ;
104
+ }
105
+ capsule.set("POSITION", new Float32Array(offset));
106
+ capsule.set("attTip", new Float32Array(tips));
107
+ return geometry;
108
+ }
109
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2Fwc3VsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9wYWludGVyL3NlZ21lbnRzL2NhcHN1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGNBQWMsQ0FBQTtBQUN6QyxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZUFBZSxDQUFBO0FBRTNDLE1BQU0sR0FBRyxHQUFHLENBQUMsR0FBRyxJQUFJLENBQUMsRUFBRSxDQUFBO0FBRXZCOzs7Ozs7O0dBT0c7QUFDSCxNQUFNLFVBQVUsV0FBVyxDQUFDLFNBQWlCO0lBQ3pDLFNBQVMsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxTQUFTLENBQUMsQ0FBQTtJQUNsQyxNQUFNLElBQUksR0FBYSxFQUFFLENBQUE7SUFDekIsTUFBTSxNQUFNLEdBQWEsRUFBRSxDQUFBO0lBQzNCLE1BQU0sUUFBUSxHQUFhLEVBQUUsQ0FBQTtJQUM3QixNQUFNLFNBQVMsR0FBRyxHQUFHLEdBQUcsU0FBUyxDQUFBO0lBQ2pDLEtBQUssSUFBSSxJQUFJLEdBQUcsQ0FBQyxFQUFFLElBQUksR0FBRyxTQUFTLEVBQUUsSUFBSSxFQUFFLEVBQUUsQ0FBQztRQUMxQyxNQUFNLEtBQUssR0FBRyxTQUFTLEdBQUcsSUFBSSxDQUFBO1FBQzlCLE1BQU0sQ0FBQyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUE7UUFDekIsTUFBTSxDQUFDLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQTtRQUN6QixNQUFNLENBQUMsSUFBSSxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQTtRQUNyQixJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFBO1FBQ1osTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENB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
@@ -3,16 +3,11 @@ import { TgdPainter } from "../painter";
3
3
  import { ArrayNumber2, ArrayNumber4 } from "../../types";
4
4
  import { TgdTexture2D } from "../../texture";
5
5
  import { TgdCamera } from "../../camera";
6
+ import { TgdMaterial } from "../../material";
6
7
  export type TgdPainterSegmentsOptions = {
7
8
  /**
8
- * How round the tip will be?
9
- * - **0** means that the tip is flat.
10
- * - **1** will gives you a triangled tip.
11
- * - **>1** starts to have a semi-circle shape.
12
- *
13
- * **0** is the fastest to render, but you will have
14
- * a bad connection at joints between segments.
15
- *
9
+ * Number of faces around the cylinder.
10
+ * Min is 3.
16
11
  * Default to **3**.
17
12
  */
18
13
  roundness: number;
@@ -20,6 +15,10 @@ export type TgdPainterSegmentsOptions = {
20
15
  * With orthographic camera, this is a value in pixels.
21
16
  */
22
17
  minRadius: number;
18
+ /**
19
+ * Material to apply to the resulting mesh.
20
+ */
21
+ material?: TgdMaterial;
23
22
  };
24
23
  /**
25
24
  * @example
@@ -52,15 +51,11 @@ export declare class TgdPainterSegments extends TgdPainter {
52
51
  radiusMultiplier: number;
53
52
  radiusConstant: number;
54
53
  radiusSwitch: number;
55
- light: number;
56
- shiftZ: number;
57
- contrast: number;
58
- specularIntensity: number;
59
- specularExponent: number;
60
54
  private readonly vao;
61
55
  private readonly prg;
62
56
  private readonly vertexCount;
63
57
  private readonly instanceCount;
58
+ private readonly material;
64
59
  constructor(context: {
65
60
  gl: WebGL2RenderingContext;
66
61
  camera: TgdCamera;
@@ -68,27 +63,27 @@ export declare class TgdPainterSegments extends TgdPainter {
68
63
  makeDataset: () => InstanceDataset;
69
64
  });
70
65
  delete(): void;
71
- paint(_time: number, _delay: number): void;
66
+ paint(time: number, delay: number): void;
72
67
  }
73
68
  type InstanceDataset = TgdDataset;
74
69
  export declare class TgdPainterSegmentsData {
75
70
  private _count;
76
- private readonly attAxyzr;
77
- private readonly attAuv;
78
- private readonly attAinfluence;
79
- private readonly attBxyzr;
80
- private readonly attBuv;
81
- private readonly attBinfluence;
71
+ private readonly attXYZR0;
72
+ private readonly attUV0;
73
+ private readonly attInfluence0;
74
+ private readonly attXYZR1;
75
+ private readonly attUV1;
76
+ private readonly attInfluence1;
82
77
  get count(): number;
83
78
  /**
84
- * @param Axyzr (x,y,z) and radius of point A.
85
- * @param Bxyzr (x,y,z) and radius of point B.
86
- * @param Auv Texture coordinates for point A.
87
- * @param Buv Texture coordinates for point B.
88
- * @param radiusMultiplierInfluenceA If you put 0, the radius won't change regardless to the currently applied radius multiplicator.
89
- * @param radiusMultiplierInfluenceB
79
+ * @param XYZR0 (x,y,z) and radius of point A.
80
+ * @param XYZR1 (x,y,z) and radius of point B.
81
+ * @param UV0 Texture coordinates for point A.
82
+ * @param UV1 Texture coordinates for point B.
83
+ * @param radiusMultiplierInfluence0 If you put 0, the radius won't change regardless to the currently applied radius multiplicator.
84
+ * @param radiusMultiplierInfluence1
90
85
  */
91
- add(Axyzr: ArrayNumber4, Bxyzr: ArrayNumber4, Auv?: ArrayNumber2, Buv?: ArrayNumber2, radiusMultiplierInfluenceA?: number, radiusMultiplierInfluenceB?: number): void;
86
+ add(XYZR0: ArrayNumber4, XYZR1: ArrayNumber4, UV0?: ArrayNumber2, UV1?: ArrayNumber2, radiusMultiplierInfluence0?: number, radiusMultiplierInfluence1?: number): void;
92
87
  readonly makeDataset: () => InstanceDataset;
93
88
  }
94
89
  export {};
@@ -1 +1 @@
1
- {"version":3,"file":"segments.d.ts","sourceRoot":"","sources":["../../../src/painter/segments/segments.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAA;AACzC,OAAO,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAA;AACjD,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,YAAY,CAAA;AAKvD,OAAO,EAAE,YAAY,EAAE,MAAM,cAAc,CAAA;AAG3C,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAA;AAGvC,MAAM,MAAM,yBAAyB,GAAG;IACpC;;;;;;;;;;OAUG;IACH,SAAS,EAAE,MAAM,CAAA;IACjB;;OAEG;IACH,SAAS,EAAE,MAAM,CAAA;CACpB,CAAA;AAED;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,qBAAa,kBAAmB,SAAQ,UAAU;IAkB1C,SAAS,CAAC,QAAQ,CAAC,OAAO,EAAE;QACxB,EAAE,EAAE,sBAAsB,CAAA;QAC1B,MAAM,EAAE,SAAS,CAAA;KACpB;IApBE,YAAY,EAAE,YAAY,CAAA;IAC1B,SAAS,EAAE,MAAM,CAAI;IACrB,gBAAgB,SAAI;IACpB,cAAc,SAAI;IAClB,YAAY,SAAI;IAChB,KAAK,SAAI;IACT,MAAM,SAAI;IACV,QAAQ,SAAM;IACd,iBAAiB,SAAM;IACvB,gBAAgB,SAAK;IAE5B,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAgB;IACpC,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAY;IAChC,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAQ;IACpC,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAQ;gBAGf,OAAO,EAAE;QACxB,EAAE,EAAE,sBAAsB,CAAA;QAC1B,MAAM,EAAE,SAAS,CAAA;KACpB,EACD,OAAO,EAAE,OAAO,CAAC,yBAAyB,CAAC,GAAG;QAC1C,WAAW,EAAE,MAAM,eAAe,CAAA;KACrC;IAsCL,MAAM,IAAI,IAAI;IAId,KAAK,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI;CA4C7C;AAED,KAAK,eAAe,GAAG,UAAU,CAAA;AAEjC,qBAAa,sBAAsB;IAC/B,OAAO,CAAC,MAAM,CAAI;IAClB,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAe;IACxC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAe;IACtC,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAe;IAC7C,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAe;IACxC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAe;IACtC,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAe;IAE7C,IAAI,KAAK,WAER;IAED;;;;;;;OAOG;IACH,GAAG,CACC,KAAK,EAAE,YAAY,EACnB,KAAK,EAAE,YAAY,EACnB,GAAG,GAAE,YAAqB,EAC1B,GAAG,GAAE,YAAqB,EAC1B,0BAA0B,SAAI,EAC9B,0BAA0B,SAAI;IAWlC,QAAQ,CAAC,WAAW,QAAO,eAAe,CAqBzC;CACJ"}
1
+ {"version":3,"file":"segments.d.ts","sourceRoot":"","sources":["../../../src/painter/segments/segments.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAA;AACzC,OAAO,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAA;AACjD,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,YAAY,CAAA;AAIvD,OAAO,EAAE,YAAY,EAAE,MAAM,cAAc,CAAA;AAG3C,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAA;AAIvC,OAAO,EAAE,WAAW,EAA8B,MAAM,eAAe,CAAA;AAIvE,MAAM,MAAM,yBAAyB,GAAG;IACpC;;;;OAIG;IACH,SAAS,EAAE,MAAM,CAAA;IACjB;;OAEG;IACH,SAAS,EAAE,MAAM,CAAA;IACjB;;OAEG;IACH,QAAQ,CAAC,EAAE,WAAW,CAAA;CACzB,CAAA;AAED;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,qBAAa,kBAAmB,SAAQ,UAAU;IAgB1C,SAAS,CAAC,QAAQ,CAAC,OAAO,EAAE;QACxB,EAAE,EAAE,sBAAsB,CAAA;QAC1B,MAAM,EAAE,SAAS,CAAA;KACpB;IAlBE,YAAY,EAAE,YAAY,CAAA;IAC1B,SAAS,EAAE,MAAM,CAAI;IACrB,gBAAgB,SAAI;IACpB,cAAc,SAAI;IAClB,YAAY,SAAI;IAEvB,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAgB;IACpC,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAY;IAChC,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAQ;IACpC,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAQ;IACtC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAa;gBAKf,OAAO,EAAE;QACxB,EAAE,EAAE,sBAAsB,CAAA;QAC1B,MAAM,EAAE,SAAS,CAAA;KACpB,EACD,OAAO,EAAE,OAAO,CAAC,yBAAyB,CAAC,GAAG;QAC1C,WAAW,EAAE,MAAM,eAAe,CAAA;KACrC;IA0HL,MAAM,IAAI,IAAI;IAMd,KAAK,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI;CAyB3C;AAED,KAAK,eAAe,GAAG,UAAU,CAAA;AAEjC,qBAAa,sBAAsB;IAC/B,OAAO,CAAC,MAAM,CAAI;IAClB,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAe;IACxC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAe;IACtC,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAe;IAC7C,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAe;IACxC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAe;IACtC,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAe;IAE7C,IAAI,KAAK,WAER;IAED;;;;;;;OAOG;IACH,GAAG,CACC,KAAK,EAAE,YAAY,EACnB,KAAK,EAAE,YAAY,EACnB,GAAG,GAAE,YAAqB,EAC1B,GAAG,GAAE,YAAqB,EAC1B,0BAA0B,SAAI,EAC9B,0BAA0B,SAAI;IAWlC,QAAQ,CAAC,WAAW,QAAO,eAAe,CAqBzC;CACJ"}
@@ -1,13 +1,12 @@
1
- /* eslint-disable unicorn/no-useless-spread */
2
1
  import { TgdDataset } from "./../../dataset/index.js";
3
2
  import { TgdPainter } from "./../painter.js";
4
3
  import { TgdVertexArray } from "./../../vao/index.js";
5
- import FRAG from "./segments.frag";
6
- import VERT from "./segments.vert";
7
4
  import { TgdTexture2D } from "./../../texture/index.js";
8
5
  import { TgdProgram } from "./../../program/index.js";
9
6
  import { tgdCanvasCreatePalette } from "./../../utils/index.js";
10
- import { TgdVec3 } from "./../../math/index.js";
7
+ import { TgdMaterialFaceOrientation } from "./../../material/index.js";
8
+ import { makeCapsule } from "./capsule.js";
9
+ import { TgdShaderFragment, TgdShaderVertex } from "./../../shader/index.js";
11
10
  /**
12
11
  * @example
13
12
  * ```
@@ -30,19 +29,19 @@ import { TgdVec3 } from "./../../math/index.js";
30
29
  * ```
31
30
  */
32
31
  export class TgdPainterSegments extends TgdPainter {
32
+ // private readonly painter: TgdPainter
33
33
  constructor(context, options) {
34
+ var _a, _b, _c, _d;
34
35
  super();
35
36
  this.context = context;
36
- this.minRadius = 0;
37
+ this.minRadius = 1;
37
38
  this.radiusMultiplier = 1;
38
39
  this.radiusConstant = 1;
39
40
  this.radiusSwitch = 0;
40
- this.light = 1;
41
- this.shiftZ = 0;
42
- this.contrast = 0.3;
43
- this.specularIntensity = 0.4;
44
- this.specularExponent = 30;
45
- const { roundness = 3, minRadius = 0, makeDataset } = options;
41
+ const { roundness = 3, minRadius = 1, makeDataset } = options;
42
+ const geometry = makeCapsule(roundness);
43
+ const material = (_a = options.material) !== null && _a !== void 0 ? _a : new TgdMaterialFaceOrientation();
44
+ this.material = material;
46
45
  this.minRadius = minRadius;
47
46
  if (roundness > 127) {
48
47
  throw new Error("[TgdPainterSegments] Max roundness is 127!");
@@ -58,71 +57,140 @@ export class TgdPainterSegments extends TgdPainter {
58
57
  wrapS: "CLAMP_TO_EDGE",
59
58
  wrapT: "CLAMP_TO_EDGE",
60
59
  })
61
- .loadBitmap(tgdCanvasCreatePalette(["#f44", "#4f4", "#44f"]));
60
+ .loadBitmap(tgdCanvasCreatePalette(["#f44", "#ff4", "#4f4", "#4ff", "#44f"]));
61
+ const vert = new TgdShaderVertex({
62
+ uniforms: Object.assign({ uniTransfoMatrix: "mat4", uniModelViewMatrix: "mat4", uniProjectionMatrix: "mat4", uniMinRadius: "float" }, material.uniforms),
63
+ attributes: {
64
+ [geometry.attPosition]: "vec3",
65
+ [geometry.attNormal]: "vec3",
66
+ attTip: "float",
67
+ attXYZR0: "vec4",
68
+ attXYZR1: "vec4",
69
+ attUV0: "vec2",
70
+ attUV1: "vec2",
71
+ },
72
+ varying: material.varyings,
73
+ functions: {
74
+ applyMaterial: [
75
+ "void applyMaterial() {",
76
+ [material.vertexShaderCode],
77
+ "}",
78
+ ],
79
+ getPosition: [
80
+ "vec4 getPosition(vec4 pos) {",
81
+ [(_b = material.vertexShaderCodeForGetPosition) !== null && _b !== void 0 ? _b : "return pos;"],
82
+ "}",
83
+ ],
84
+ },
85
+ mainCode: [
86
+ `vec3 normal = NORMAL;`,
87
+ `vec3 pos = POSITION;`,
88
+ `vec4 xyzr = mix(attXYZR0, attXYZR1, attTip);`,
89
+ `vec3 center = xyzr.xyz;`,
90
+ `float radius = max(`,
91
+ [
92
+ `xyzr.w,`,
93
+ `uniMinRadius * (uniProjectionMatrix * uniModelViewMatrix * vec4(center, 1)).w`,
94
+ ],
95
+ `);`,
96
+ `vec3 dir = attXYZR1.xyz - attXYZR0.xyz;`,
97
+ `float len = length(dir);`,
98
+ `if (len == 0.0) {`,
99
+ [`// Just a sphere`, `pos *= radius;`, `pos += center.xyz;`],
100
+ `} else {`,
101
+ [
102
+ `// Full capsule`,
103
+ `vec3 Z = dir / len;`,
104
+ `vec3 v = abs(Z.z) > 0.7 ? vec3(1,0,0) : vec3(0,0,1);`,
105
+ `vec3 Y = cross(v, Z);`,
106
+ `vec3 X = cross(Y, Z);`,
107
+ `mat3 mat = mat3(X, Y, Z);`,
108
+ `pos *= radius;`,
109
+ `pos = mat * pos + center.xyz;`,
110
+ `normal = mat * normal;`,
111
+ ],
112
+ `}`,
113
+ `gl_Position = uniProjectionMatrix * uniModelViewMatrix * vec4(pos, 1);`,
114
+ "applyMaterial();",
115
+ "varNormal = normal;",
116
+ ],
117
+ }).code;
118
+ const frag = new TgdShaderFragment({
119
+ uniforms: material.uniforms,
120
+ outputs: { FragColor: "vec4" },
121
+ varying: material.varyings,
122
+ functions: {
123
+ applyMaterial: [
124
+ "vec4 applyMaterial() {",
125
+ [material.fragmentShaderCode],
126
+ "}",
127
+ ],
128
+ },
129
+ mainCode: [`FragColor = applyMaterial();`],
130
+ }).code;
62
131
  const prg = new TgdProgram(context.gl, {
63
- vert: VERT,
64
- frag: FRAG,
132
+ vert,
133
+ frag,
65
134
  });
135
+ prg.debug();
66
136
  this.prg = prg;
67
- const { capsule, elements } = makeCapsule(roundness);
137
+ // this.painter = new TgdPainterMesh(context, {
138
+ // geometry,
139
+ // material: new TgdMaterialFaceOrientation(),
140
+ // })
68
141
  const instance = makeDataset();
69
- instance.debug();
70
- this.vao = new TgdVertexArray(context.gl, prg, [capsule, instance], elements);
71
- this.vertexCount = elements.length;
142
+ this.vao = new TgdVertexArray(context.gl, prg, [geometry.dataset, instance], geometry.elements);
143
+ this.vertexCount = (_d = (_c = geometry.elements) === null || _c === void 0 ? void 0 : _c.length) !== null && _d !== void 0 ? _d : 0;
72
144
  this.instanceCount = instance.count;
73
145
  }
74
146
  delete() {
75
147
  this.vao.delete();
148
+ this.prg.delete();
149
+ // this.painter.delete()
76
150
  }
77
- paint(_time, _delay) {
78
- const { context, prg, vao, colorTexture, vertexCount, instanceCount, light, radiusMultiplier, radiusConstant, radiusSwitch, shiftZ, contrast, specularIntensity, specularExponent, } = this;
151
+ paint(time, delay) {
152
+ // this.painter.paint(_time, _delay)
153
+ const { context, prg, vao, vertexCount, instanceCount, material } = this;
79
154
  const { gl, camera } = context;
80
155
  gl.disable(gl.DITHER);
81
156
  prg.use();
82
- const minRadius = (this.minRadius * camera.spaceHeightAtTarget) /
83
- (camera.zoom * camera.screenHeight);
84
- prg.uniform1f("uniMinRadius", minRadius);
85
- prg.uniform1f("uniLight", light);
86
- prg.uniform1f("uniShiftZ", shiftZ);
87
- prg.uniform1f("uniRadiusMultiplier", radiusMultiplier);
88
- prg.uniform1f("uniRadiusConstant", radiusConstant);
89
- prg.uniform1f("uniRadiusSwitch", radiusSwitch);
90
- prg.uniform1f("uniContrast", contrast);
91
- prg.uniform1f("uniSpecularIntensity", specularIntensity);
92
- prg.uniform1f("uniSpecularExponent", specularExponent);
93
- colorTexture.activate(0, prg, "uniTexture");
157
+ this.material.setUniforms(prg, time, delay);
158
+ prg.uniform1f("uniMinRadius", (this.minRadius * 2) / gl.drawingBufferHeight);
94
159
  prg.uniformMatrix4fv("uniModelViewMatrix", camera.matrixModelView);
95
160
  prg.uniformMatrix4fv("uniProjectionMatrix", camera.matrixProjection);
96
- vao.bind();
97
- gl.drawElementsInstanced(gl.TRIANGLES, vertexCount, gl.UNSIGNED_BYTE, 0, instanceCount);
161
+ material.applyState(gl, () => {
162
+ vao.bind();
163
+ gl.drawElementsInstanced(gl.TRIANGLES, vertexCount, gl.UNSIGNED_SHORT, 0, instanceCount);
164
+ vao.unbind();
165
+ });
98
166
  }
99
167
  }
100
168
  export class TgdPainterSegmentsData {
101
169
  constructor() {
102
170
  this._count = 0;
103
- this.attAxyzr = [];
104
- this.attAuv = [];
105
- this.attAinfluence = [];
106
- this.attBxyzr = [];
107
- this.attBuv = [];
108
- this.attBinfluence = [];
171
+ this.attXYZR0 = [];
172
+ this.attUV0 = [];
173
+ this.attInfluence0 = [];
174
+ this.attXYZR1 = [];
175
+ this.attUV1 = [];
176
+ this.attInfluence1 = [];
109
177
  this.makeDataset = () => {
110
178
  const dataset = new TgdDataset({
111
- attAxyzr: "vec4",
112
- attAuv: "vec2",
113
- attAinfluence: "float",
114
- attBxyzr: "vec4",
115
- attBuv: "vec2",
116
- attBinfluence: "float",
179
+ attXYZR0: "vec4",
180
+ attUV0: "vec2",
181
+ attInfluence0: "float",
182
+ attXYZR1: "vec4",
183
+ attUV1: "vec2",
184
+ attInfluence1: "float",
117
185
  }, {
118
186
  divisor: 1,
119
187
  });
120
- dataset.set("attAxyzr", new Float32Array(this.attAxyzr));
121
- dataset.set("attAuv", new Float32Array(this.attAuv));
122
- dataset.set("attAinfluence", new Float32Array(this.attAinfluence));
123
- dataset.set("attBxyzr", new Float32Array(this.attBxyzr));
124
- dataset.set("attBuv", new Float32Array(this.attBuv));
125
- dataset.set("attBinfluence", new Float32Array(this.attBinfluence));
188
+ dataset.set("attXYZR0", new Float32Array(this.attXYZR0));
189
+ dataset.set("attUV0", new Float32Array(this.attUV0));
190
+ dataset.set("attInfluence0", new Float32Array(this.attInfluence0));
191
+ dataset.set("attXYZR1", new Float32Array(this.attXYZR1));
192
+ dataset.set("attUV1", new Float32Array(this.attUV1));
193
+ dataset.set("attInfluence1", new Float32Array(this.attInfluence1));
126
194
  return dataset;
127
195
  };
128
196
  }
@@ -130,94 +198,21 @@ export class TgdPainterSegmentsData {
130
198
  return this._count;
131
199
  }
132
200
  /**
133
- * @param Axyzr (x,y,z) and radius of point A.
134
- * @param Bxyzr (x,y,z) and radius of point B.
135
- * @param Auv Texture coordinates for point A.
136
- * @param Buv Texture coordinates for point B.
137
- * @param radiusMultiplierInfluenceA If you put 0, the radius won't change regardless to the currently applied radius multiplicator.
138
- * @param radiusMultiplierInfluenceB
201
+ * @param XYZR0 (x,y,z) and radius of point A.
202
+ * @param XYZR1 (x,y,z) and radius of point B.
203
+ * @param UV0 Texture coordinates for point A.
204
+ * @param UV1 Texture coordinates for point B.
205
+ * @param radiusMultiplierInfluence0 If you put 0, the radius won't change regardless to the currently applied radius multiplicator.
206
+ * @param radiusMultiplierInfluence1
139
207
  */
140
- add(Axyzr, Bxyzr, Auv = [0, 0], Buv = [0, 0], radiusMultiplierInfluenceA = 1, radiusMultiplierInfluenceB = 1) {
141
- this.attAxyzr.push(...Axyzr);
142
- this.attAuv.push(...Auv);
143
- this.attAinfluence.push(radiusMultiplierInfluenceA);
144
- this.attBxyzr.push(...Bxyzr);
145
- this.attBuv.push(...Buv);
146
- this.attBinfluence.push(radiusMultiplierInfluenceB);
208
+ add(XYZR0, XYZR1, UV0 = [0, 0], UV1 = [0, 0], radiusMultiplierInfluence0 = 1, radiusMultiplierInfluence1 = 1) {
209
+ this.attXYZR0.push(...XYZR0);
210
+ this.attUV0.push(...UV0);
211
+ this.attInfluence0.push(radiusMultiplierInfluence0);
212
+ this.attXYZR1.push(...XYZR1);
213
+ this.attUV1.push(...UV1);
214
+ this.attInfluence1.push(radiusMultiplierInfluence1);
147
215
  this._count++;
148
216
  }
149
217
  }
150
- /**
151
- * The capsule is a 2D shape (x,y) that will be used
152
- * as a pattern for the segment.
153
- * The segment will expand this template along Y axis.
154
- * The tip pointing toward +Y is called A.
155
- * The tip pointing toward -Y is called B.
156
- * The z coodinates indicates to which tip the point
157
- * is attached: 0 for A and 1 for B.
158
- */
159
- function makeCapsule(roundness) {
160
- // prettier-ignore
161
- const offset = [
162
- ...[0, 0, 0], // 0
163
- ...[1, 0, 0], // 1
164
- ...[-1, 0, 0], // 2
165
- ...[0, 0, 1], // 3
166
- ...[1, 0, 1], // 4
167
- ...[-1, 0, 1], // 5
168
- ];
169
- // prettier-ignore
170
- const normal = [
171
- ...[0, 0, 1], // 0
172
- ...[1, 0, 0], // 1
173
- ...[-1, 0, 0], // 2
174
- ...[0, 0, 1], // 3
175
- ...[1, 0, 0], // 4
176
- ...[-1, 0, 0], // 5
177
- ];
178
- // prettier-ignore
179
- const elements = [
180
- 0, 3, 1,
181
- 3, 4, 1,
182
- 0, 2, 5,
183
- 3, 0, 5,
184
- ];
185
- if (roundness > 0) {
186
- let oldIndexA = 1;
187
- let oldIndexB = 4;
188
- let elementIndex = 6;
189
- // Temporary variable to prevent multiple new() calls.
190
- const n = new TgdVec3();
191
- for (let roundnessStep = 0; roundnessStep < roundness; roundnessStep++) {
192
- const ang = (Math.PI * (roundnessStep + 1)) / (roundness + 1);
193
- const x = Math.cos(ang);
194
- const y = Math.sin(ang);
195
- // We set z to 0 because it's related to tip A.
196
- offset.push(x, y, 0);
197
- n.from([x, 0, 1 - Math.abs(x)]); //.normalize()
198
- normal.push(n.x, n.y, n.z);
199
- elements.push(0, oldIndexA, elementIndex);
200
- oldIndexA = elementIndex;
201
- elementIndex++;
202
- // We set z to 1 because it's related to tip B.
203
- offset.push(x, -y, 1);
204
- n.from([x, 0, 1 - Math.abs(x)]).normalize();
205
- normal.push(n.x, n.y, n.z);
206
- elements.push(3, elementIndex, oldIndexB);
207
- oldIndexB = elementIndex;
208
- elementIndex++;
209
- }
210
- elements.push(0, oldIndexA, 2, 3, 5, oldIndexB);
211
- }
212
- const capsule = new TgdDataset({
213
- attOffset: "vec3",
214
- attNormal: "vec3",
215
- });
216
- capsule.set("attOffset", new Float32Array(offset));
217
- capsule.set("attNormal", new Float32Array(normal));
218
- return {
219
- capsule,
220
- elements: new Uint8Array(elements),
221
- };
222
- }
223
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VnbWVudHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvcGFpbnRlci9zZWdtZW50cy9zZWdtZW50cy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSw4Q0FBOEM7QUFDOUMsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGNBQWMsQ0FBQTtBQUN6QyxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sc0JBQXNCLENBQUE7QUFFakQsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLFVBQVUsQ0FBQTtBQUV6QyxPQUFPLElBQUksTUFBTSxpQkFBaUIsQ0FBQTtBQUNsQyxPQUFPLElBQUksTUFBTSxpQkFBaUIsQ0FBQTtBQUNsQyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sY0FBYyxDQUFBO0FBQzNDLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxjQUFjLENBQUE7QUFDekMsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sWUFBWSxDQUFBO0FBRW5ELE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxXQUFXLENBQUE7QUFxQm5DOzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQW9CRztBQUNILE1BQU0sT0FBTyxrQkFBbUIsU0FBUSxVQUFVO0lBaUI5QyxZQUN1QixPQUdsQixFQUNELE9BRUM7UUFFRCxLQUFLLEVBQUUsQ0FBQTtRQVJZLFlBQU8sR0FBUCxPQUFPLENBR3pCO1FBbkJFLGNBQVMsR0FBVyxDQUFDLENBQUE7UUFDckIscUJBQWdCLEdBQUcsQ0FBQyxDQUFBO1FBQ3BCLG1CQUFjLEdBQUcsQ0FBQyxDQUFBO1FBQ2xCLGlCQUFZLEdBQUcsQ0FBQyxDQUFBO1FBQ2hCLFVBQUssR0FBRyxDQUFDLENBQUE7UUFDVCxXQUFNLEdBQUcsQ0FBQyxDQUFBO1FBQ1YsYUFBUSxHQUFHLEdBQUcsQ0FBQTtRQUNkLHNCQUFpQixHQUFHLEdBQUcsQ0FBQTtRQUN2QixxQkFBZ0IsR0FBRyxFQUFFLENBQUE7UUFpQnhCLE1BQU0sRUFBRSxTQUFTLEdB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
218
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VnbWVudHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvcGFpbnRlci9zZWdtZW50cy9zZWdtZW50cy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sY0FBYyxDQUFBO0FBQ3pDLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQTtBQUVqRCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sVUFBVSxDQUFBO0FBR3pDLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxjQUFjLENBQUE7QUFDM0MsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGNBQWMsQ0FBQTtBQUN6QyxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxZQUFZLENBQUE7QUFLbkQsT0FBTyxFQUFlLDBCQUEwQixFQUFFLE1BQU0sZUFBZSxDQUFBO0FBQ3ZFLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxXQUFXLENBQUE7QUFDdkMsT0FBTyxFQUFFLGlCQUFpQixFQUFFLGVBQWUsRUFBRSxNQUFNLGFBQWEsQ0FBQTtBQW1CaEU7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBb0JHO0FBQ0gsTUFBTSxPQUFPLGtCQUFtQixTQUFRLFVBQVU7SUFhOUMsdUNBQXVDO0lBRXZDLFlBQ3VCLE9BR2xCLEVBQ0QsT0FFQzs7UUFFRCxLQUFLLEVBQUUsQ0FBQTtRQVJZLFlBQU8sR0FBUCxPQUFPLENBR3pCO1FBakJFLGNBQVMsR0FBVyxDQUFDLENBQUE7UUFDckIscUJBQWdCLEdBQUcsQ0FBQyxDQUFBO1FBQ3BCLG1CQUFjLEdBQUcsQ0FBQyxDQUFBO1FBQ2xCLGlCQUFZLEdBQUcsQ0FBQyxDQUFBO1FBb0JuQixNQUFNLEVBQUUsU0FBUyxHQUFHLENBQUMsRUFBRSxTQUFTLEdBQUcsQ0FBQyxFQUFFLFdBQVcsRUFBRSxHQUFHLE9BQU8sQ0FBQTtRQUM3RCxNQUFNLFFBQVEsR0FBRyxXQUFXLENBQUMsU0FBUyxDQUFDLENB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
@@ -0,0 +1,2 @@
1
+ export * from "./segments";
2
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/painter/segments.backup/index.ts"],"names":[],"mappings":"AAAA,cAAc,YAAY,CAAA"}
@@ -0,0 +1,2 @@
1
+ export * from "./segments.js";
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvcGFpbnRlci9zZWdtZW50cy5iYWNrdXAvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyxZQUFZLENBQUEifQ==