@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.
- package/lib/dist/color/color.d.ts +4 -0
- package/lib/dist/color/color.d.ts.map +1 -1
- package/lib/dist/color/color.js +21 -1
- package/lib/dist/context/context.d.ts +3 -0
- package/lib/dist/context/context.d.ts.map +1 -1
- package/lib/dist/context/context.js +10 -7
- package/lib/dist/context/logic.d.ts +2 -2
- package/lib/dist/context/logic.js +2 -2
- package/lib/dist/context/ubo-manager.d.ts +10 -0
- package/lib/dist/context/ubo-manager.d.ts.map +1 -0
- package/lib/dist/context/ubo-manager.js +23 -0
- package/lib/dist/dataset/dataset.d.ts +8 -3
- package/lib/dist/dataset/dataset.d.ts.map +1 -1
- package/lib/dist/dataset/dataset.js +35 -12
- package/lib/dist/filter/blur.d.ts +1 -0
- package/lib/dist/filter/blur.d.ts.map +1 -1
- package/lib/dist/filter/blur.js +3 -1
- package/lib/dist/filter/filter.d.ts +4 -1
- package/lib/dist/filter/filter.d.ts.map +1 -1
- package/lib/dist/filter/filter.js +4 -1
- package/lib/dist/filter/hue-rotation.d.ts +2 -1
- package/lib/dist/filter/hue-rotation.d.ts.map +1 -1
- package/lib/dist/filter/hue-rotation.js +3 -2
- package/lib/dist/index.d.ts +1 -0
- package/lib/dist/index.d.ts.map +1 -1
- package/lib/dist/index.js +2 -1
- package/lib/dist/interface/transformable.d.ts +1 -1
- package/lib/dist/loader/image.d.ts +3 -3
- package/lib/dist/loader/image.d.ts.map +1 -1
- package/lib/dist/loader/image.js +10 -22
- package/lib/dist/material/glass.js +3 -3
- package/lib/dist/material/material.d.ts +3 -7
- package/lib/dist/material/material.d.ts.map +1 -1
- package/lib/dist/material/material.js +1 -1
- package/lib/dist/painter/background-with-depth/background-with-depth.d.ts +1 -1
- package/lib/dist/painter/background-with-depth/background-with-depth.js +2 -2
- package/lib/dist/painter/filter/filter.d.ts +7 -9
- package/lib/dist/painter/filter/filter.d.ts.map +1 -1
- package/lib/dist/painter/filter/filter.js +41 -47
- package/lib/dist/painter/fragment-shader/fragment-shader.d.ts +2 -2
- package/lib/dist/painter/fragment-shader/fragment-shader.js +2 -2
- package/lib/dist/painter/framebuffer-msaa.d.ts +23 -12
- package/lib/dist/painter/framebuffer-msaa.d.ts.map +1 -1
- package/lib/dist/painter/framebuffer-msaa.js +60 -9
- package/lib/dist/painter/framebuffer.d.ts +19 -18
- package/lib/dist/painter/framebuffer.d.ts.map +1 -1
- package/lib/dist/painter/framebuffer.js +76 -19
- package/lib/dist/painter/gizmo/gizmo.d.ts +31 -0
- package/lib/dist/painter/gizmo/gizmo.d.ts.map +1 -0
- package/lib/dist/painter/gizmo/gizmo.js +186 -0
- package/lib/dist/painter/gizmo/index.d.ts +2 -0
- package/lib/dist/painter/gizmo/index.d.ts.map +1 -0
- package/lib/dist/painter/gizmo/index.js +2 -0
- package/lib/dist/painter/gizmo/painters/axes.1.d.ts +14 -0
- package/lib/dist/painter/gizmo/painters/axes.1.d.ts.map +1 -0
- package/lib/dist/painter/gizmo/painters/axes.1.js +50 -0
- package/lib/dist/painter/gizmo/painters/axes.d.ts +16 -0
- package/lib/dist/painter/gizmo/painters/axes.d.ts.map +1 -0
- package/lib/dist/painter/gizmo/painters/axes.js +81 -0
- package/lib/dist/painter/gizmo/painters/consts.d.ts +4 -0
- package/lib/dist/painter/gizmo/painters/consts.d.ts.map +1 -0
- package/lib/dist/painter/gizmo/painters/consts.js +4 -0
- package/lib/dist/painter/gizmo/painters/mask.d.ts +14 -0
- package/lib/dist/painter/gizmo/painters/mask.d.ts.map +1 -0
- package/lib/dist/painter/gizmo/painters/mask.js +90 -0
- package/lib/dist/painter/gizmo/painters/normal.1.d.ts +21 -0
- package/lib/dist/painter/gizmo/painters/normal.1.d.ts.map +1 -0
- package/lib/dist/painter/gizmo/painters/normal.1.js +111 -0
- package/lib/dist/painter/gizmo/painters/normal.d.ts +17 -0
- package/lib/dist/painter/gizmo/painters/normal.d.ts.map +1 -0
- package/lib/dist/painter/gizmo/painters/normal.js +87 -0
- package/lib/dist/painter/gizmo/painters/tips.d.ts +18 -0
- package/lib/dist/painter/gizmo/painters/tips.d.ts.map +1 -0
- package/lib/dist/painter/gizmo/painters/tips.js +44 -0
- package/lib/dist/painter/gizmo/tips.d.ts +22 -0
- package/lib/dist/painter/gizmo/tips.d.ts.map +1 -0
- package/lib/dist/painter/gizmo/tips.js +51 -0
- package/lib/dist/painter/group-camera.d.ts +4 -2
- package/lib/dist/painter/group-camera.d.ts.map +1 -1
- package/lib/dist/painter/group-camera.js +7 -3
- package/lib/dist/painter/group.d.ts +6 -6
- package/lib/dist/painter/group.d.ts.map +1 -1
- package/lib/dist/painter/group.js +19 -13
- package/lib/dist/painter/index.d.ts +3 -0
- package/lib/dist/painter/index.d.ts.map +1 -1
- package/lib/dist/painter/index.js +4 -1
- package/lib/dist/painter/lod/lod.d.ts +1 -1
- package/lib/dist/painter/lod/lod.js +2 -2
- package/lib/dist/painter/logic.d.ts +2 -2
- package/lib/dist/painter/logic.js +2 -2
- package/lib/dist/painter/mesh/gltf/gltf.d.ts +2 -8
- package/lib/dist/painter/mesh/gltf/gltf.d.ts.map +1 -1
- package/lib/dist/painter/mesh/gltf/gltf.js +1 -1
- package/lib/dist/painter/mesh/mesh/mesh.d.ts +7 -16
- package/lib/dist/painter/mesh/mesh/mesh.d.ts.map +1 -1
- package/lib/dist/painter/mesh/mesh/mesh.js +21 -9
- package/lib/dist/painter/node/node.d.ts +3 -3
- package/lib/dist/painter/node/node.js +4 -4
- package/lib/dist/painter/overlay/index.d.ts +2 -0
- package/lib/dist/painter/overlay/index.d.ts.map +1 -0
- package/lib/dist/painter/overlay/index.js +2 -0
- package/lib/dist/painter/overlay/overlay.d.ts +77 -0
- package/lib/dist/painter/overlay/overlay.d.ts.map +1 -0
- package/lib/dist/painter/overlay/overlay.js +196 -0
- package/lib/dist/painter/painter.d.ts +1 -1
- package/lib/dist/painter/program.d.ts +70 -0
- package/lib/dist/painter/program.d.ts.map +1 -0
- package/lib/dist/painter/program.js +250 -0
- package/lib/dist/painter/scissor.d.ts +1 -1
- package/lib/dist/painter/scissor.js +2 -2
- package/lib/dist/painter/segments/segments-morphing.d.ts +4 -13
- package/lib/dist/painter/segments/segments-morphing.d.ts.map +1 -1
- package/lib/dist/painter/segments/segments-morphing.js +3 -3
- package/lib/dist/painter/segments/segments.d.ts +4 -13
- package/lib/dist/painter/segments/segments.d.ts.map +1 -1
- package/lib/dist/painter/segments/segments.js +3 -3
- package/lib/dist/painter/sprites/sprites.d.ts +5 -0
- package/lib/dist/painter/sprites/sprites.d.ts.map +1 -1
- package/lib/dist/painter/sprites/sprites.js +20 -9
- package/lib/dist/painter/state/state.js +4 -4
- package/lib/dist/painter/tubes/tubes.d.ts +4 -13
- package/lib/dist/painter/tubes/tubes.d.ts.map +1 -1
- package/lib/dist/painter/tubes/tubes.js +2 -2
- package/lib/dist/painter/x-ray/x-ray.d.ts +3 -11
- package/lib/dist/painter/x-ray/x-ray.d.ts.map +1 -1
- package/lib/dist/painter/x-ray/x-ray.js +3 -3
- package/lib/dist/parser/gltf/gltf.d.ts +2 -5
- package/lib/dist/parser/gltf/gltf.d.ts.map +1 -1
- package/lib/dist/parser/gltf/gltf.js +1 -1
- package/lib/dist/program/program.d.ts +2 -0
- package/lib/dist/program/program.d.ts.map +1 -1
- package/lib/dist/program/program.js +43 -8
- package/lib/dist/shader/fragment.d.ts.map +1 -1
- package/lib/dist/shader/fragment.js +3 -3
- package/lib/dist/shader/vertex.d.ts +3 -1
- package/lib/dist/shader/vertex.d.ts.map +1 -1
- package/lib/dist/shader/vertex.js +8 -6
- package/lib/dist/texture/texture-depth.d.ts +3 -11
- package/lib/dist/texture/texture-depth.d.ts.map +1 -1
- package/lib/dist/texture/texture-depth.js +1 -1
- package/lib/dist/texture/texture2d.d.ts +5 -11
- package/lib/dist/texture/texture2d.d.ts.map +1 -1
- package/lib/dist/texture/texture2d.js +3 -3
- package/lib/dist/time/interval/interval.d.ts +3 -3
- package/lib/dist/time/interval/interval.js +6 -6
- package/lib/dist/types/painter.d.ts +1 -1
- package/lib/dist/types/program.d.ts +3 -2
- package/lib/dist/types/program.d.ts.map +1 -1
- package/lib/dist/uniform/index.d.ts +3 -0
- package/lib/dist/uniform/index.d.ts.map +1 -0
- package/lib/dist/uniform/index.js +3 -0
- package/lib/dist/uniform/ubo-camera.d.ts +9 -0
- package/lib/dist/uniform/ubo-camera.d.ts.map +1 -0
- package/lib/dist/uniform/ubo-camera.js +20 -0
- package/lib/dist/uniform/uniform-buffer-object.d.ts +56 -0
- package/lib/dist/uniform/uniform-buffer-object.d.ts.map +1 -0
- package/lib/dist/uniform/uniform-buffer-object.js +347 -0
- package/lib/dist/utils/array.d.ts +2 -0
- package/lib/dist/utils/array.d.ts.map +1 -0
- package/lib/dist/utils/array.js +6 -0
- package/lib/dist/utils/index.d.ts +1 -0
- package/lib/dist/utils/index.d.ts.map +1 -1
- package/lib/dist/utils/index.js +2 -1
- 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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFzay5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9wYWludGVyL2dpem1vL3BhaW50ZXJzL21hc2sudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGNBQWMsQ0FBQTtBQUN6QyxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sc0JBQXNCLENBQUE7QUFDakQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLG9CQUFvQixDQUFBO0FBQ3BELE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxjQUFjLENBQUE7QUFDekMsT0FBTyxFQUFFLGlCQUFpQixFQUFFLGVBQWUsRUFBRSxNQUFNLGFBQWEsQ0FBQTtBQUNoRSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sVUFBVSxDQUFBO0FBRXpDLE1BQU0sT0FBTyxlQUFnQixTQUFRLFVBQVU7SUFNM0MsWUFDcUIsT0FBbUIsRUFDcEMsT0FBeUI7UUFFekIsS0FBSyxFQUFFLENBQUE7UUFIVSxZQUFPLEdBQVAsT0FBTyxDQUFZO1FBSXBDLElBQUksQ0FBQyxJQUFJLEdBQUcsT0FBTyxDQUFDLElBQUksQ0FBQTtRQUN4QixNQUFNLEdBQUcsR0FBRyxJQUFJLFVBQVUsQ0FBQyxPQUFPLENBQUMsRUFBRSxFQUFFO1lBQ25DLElBQUksRUFBRSxJQUFJLGVBQWUsQ0FBQztnQkFDdEIsUUFBUSxFQUFFO29CQUNOLFFBQVEsRUFBRSxPQUFPO29CQUNqQixnQkFBZ0IsRUFBRSxNQUFNO29CQUN4QixrQkFBa0IsRUFBRSxNQUFNO29CQUMxQixtQkFBbUIsRUFBRSxNQUFNO29CQUMzQixTQUFTLEVBQUUsT0FBTztvQkFDbEIsdUJBQXVCLEVBQUUsT0FBTztpQkFDbkM7Z0JBQ0QsVUFBVSxFQUFFO29CQUNSLFFBQVEsRUFBRSxNQUFNO29CQUNoQixRQUFRLEVBQUUsT0FBTztpQkFDcEI7Z0JBQ0QsT0FBTyxFQUFFO29CQUNMLFFBQVEsRUFBRSxPQUFPO2lC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
|
|
@@ -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,
|
|
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;
|
|
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,
|
|
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,
|
|
20
|
+
super.paint(time, delta);
|
|
17
21
|
context.camera = savedCamera;
|
|
18
22
|
}
|
|
19
23
|
}
|
|
20
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
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,
|
|
6
|
-
onExit?(time: number,
|
|
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,
|
|
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;
|
|
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"}
|