@tolokoban/tgd 2.0.74 → 2.0.76
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/material/bsdf.d.ts +25 -0
- package/lib/dist/material/bsdf.d.ts.map +1 -0
- package/lib/dist/material/bsdf.js +98 -0
- package/lib/dist/material/principled.d.ts +25 -0
- package/lib/dist/material/principled.d.ts.map +1 -0
- package/lib/dist/material/principled.js +112 -0
- package/lib/dist/material/solid.d.ts +22 -0
- package/lib/dist/material/solid.d.ts.map +1 -0
- package/lib/dist/material/solid.js +20 -0
- package/lib/dist/painter/points-cloud/points-cloud.d.ts +36 -1
- package/lib/dist/painter/points-cloud/points-cloud.d.ts.map +1 -1
- package/lib/dist/painter/points-cloud/points-cloud.js +34 -13
- package/lib/dist/texture/texture2d.d.ts +1 -1
- package/lib/dist/texture/texture2d.d.ts.map +1 -1
- package/lib/dist/texture/texture2d.js +1 -1
- package/lib/dist/types/input-keyboard.d.ts +8 -0
- package/lib/dist/types/input-keyboard.d.ts.map +1 -0
- package/lib/dist/types/input-keyboard.js +2 -0
- package/lib/dist/utils/math.d.ts +19 -0
- package/lib/dist/utils/math.d.ts.map +1 -0
- package/lib/dist/utils/math.js +59 -0
- package/lib/dist/utils/math.test.d.ts +2 -0
- package/lib/dist/utils/math.test.d.ts.map +1 -0
- package/lib/dist/utils/math.test.js +22 -0
- package/package.json +1 -1
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import { ArrayNumber3, ArrayNumber4 } from "../types";
|
|
2
|
+
import { TgdVec3, TgdVec4 } from "../math";
|
|
3
|
+
import { TgdMaterial } from "./material";
|
|
4
|
+
import { TgdLight } from "../light";
|
|
5
|
+
import { TgdTexture2D, TgdTextureCube } from "../texture";
|
|
6
|
+
export type TgdMaterialBSDFOptions = Partial<{
|
|
7
|
+
color: TgdVec4 | ArrayNumber4 | TgdTexture2D;
|
|
8
|
+
lights: TgdLight[];
|
|
9
|
+
ambientColor: TgdVec3 | ArrayNumber3 | TgdTextureCube;
|
|
10
|
+
ambientIntensity: number;
|
|
11
|
+
specularExponent: number;
|
|
12
|
+
specularIntensity: number;
|
|
13
|
+
normalMap: TgdVec3 | ArrayNumber3 | TgdTexture2D;
|
|
14
|
+
}>;
|
|
15
|
+
export declare class TgdMaterialBSDF extends TgdMaterial {
|
|
16
|
+
light: TgdLight;
|
|
17
|
+
ambient: TgdLight;
|
|
18
|
+
specularExponent: number;
|
|
19
|
+
specularIntensity: number;
|
|
20
|
+
private readonly texture;
|
|
21
|
+
private readonly lightColor;
|
|
22
|
+
private readonly ambientColor;
|
|
23
|
+
constructor(options?: TgdMaterialBSDFOptions);
|
|
24
|
+
}
|
|
25
|
+
//# sourceMappingURL=bsdf.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"bsdf.d.ts","sourceRoot":"","sources":["../../src/material/bsdf.ts"],"names":[],"mappings":"AAAA,OAAO,EACH,YAAY,EACZ,YAAY,EAGf,MAAM,YAAY,CAAA;AACnB,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AAC5C,OAAO,EAAE,WAAW,EAAE,MAAM,YAAY,CAAA;AAExC,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAA;AACrC,OAAO,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,cAAc,CAAA;AAG3D,MAAM,MAAM,sBAAsB,GAAG,OAAO,CAAC;IACzC,KAAK,EAAE,OAAO,GAAG,YAAY,GAAG,YAAY,CAAA;IAC5C,MAAM,EAAE,QAAQ,EAAE,CAAA;IAClB,YAAY,EAAE,OAAO,GAAG,YAAY,GAAG,cAAc,CAAA;IACrD,gBAAgB,EAAE,MAAM,CAAA;IACxB,gBAAgB,EAAE,MAAM,CAAA;IACxB,iBAAiB,EAAE,MAAM,CAAA;IACzB,SAAS,EAAE,OAAO,GAAG,YAAY,GAAG,YAAY,CAAA;CACnD,CAAC,CAAA;AAIF,qBAAa,eAAgB,SAAQ,WAAW;IACrC,KAAK,WAAiB;IACtB,OAAO,WAAuD;IAC9D,gBAAgB,SAAK;IACrB,iBAAiB,SAAI;IAE5B,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAqB;IAC7C,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAgB;IAC3C,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAgB;gBAEjC,OAAO,GAAE,sBAA2B;CAyFnD"}
|
|
@@ -0,0 +1,98 @@
|
|
|
1
|
+
import { TgdVec3, TgdVec4 } from "./../math/index.js";
|
|
2
|
+
import { TgdMaterial } from "./material.js";
|
|
3
|
+
import { TgdLight } from "./../light/index.js";
|
|
4
|
+
import { TgdTexture2D } from "./../texture/index.js";
|
|
5
|
+
const DEFAULT_COLOR = new TgdVec4(0.8, 0.6, 0.1, 1);
|
|
6
|
+
export class TgdMaterialBSDF extends TgdMaterial {
|
|
7
|
+
constructor(options = {}) {
|
|
8
|
+
var _a;
|
|
9
|
+
const color = options.color instanceof TgdTexture2D
|
|
10
|
+
? options.color
|
|
11
|
+
: new TgdVec4((_a = options.color) !== null && _a !== void 0 ? _a : DEFAULT_COLOR);
|
|
12
|
+
const hasTexture = !(color instanceof TgdVec4);
|
|
13
|
+
const uniforms = {
|
|
14
|
+
uniLight: "vec3",
|
|
15
|
+
uniLightDir: "vec3",
|
|
16
|
+
uniAmbient: "vec3",
|
|
17
|
+
uniSpecularExponent: "float",
|
|
18
|
+
uniSpecularIntensity: "float",
|
|
19
|
+
uniModelViewMatrix: "mat4",
|
|
20
|
+
};
|
|
21
|
+
const fragmentShaderCode = [
|
|
22
|
+
`vec3 normal = ${options.lockLightsToCamera ? "mat3(uniModelViewMatrix) * " : ""}normalize(varNormal);`,
|
|
23
|
+
`float light = 1.0 - dot(normal, uniLightDir);`,
|
|
24
|
+
options.lockLightsToCamera
|
|
25
|
+
? "light = max(0.0, light - 1.0);"
|
|
26
|
+
: "light *= .5;",
|
|
27
|
+
hasTexture
|
|
28
|
+
? `vec4 color = texture(texDiffuse, varUV);`
|
|
29
|
+
: `vec4 color = vec4(${color.join(", ")});`,
|
|
30
|
+
`vec3 reflection = ${options.lockLightsToCamera ? "" : "mat3(uniModelViewMatrix) * "}reflect(uniLightDir, normal);`,
|
|
31
|
+
`float spec = max(0.0, reflection.z);`,
|
|
32
|
+
`spec = pow(spec, uniSpecularExponent) * uniSpecularIntensity;`,
|
|
33
|
+
`color = vec4(`,
|
|
34
|
+
` color.rgb * (`,
|
|
35
|
+
` uniAmbient + uniLight * light`,
|
|
36
|
+
` ) + vec3(spec),`,
|
|
37
|
+
` 1.0`,
|
|
38
|
+
`);`,
|
|
39
|
+
`return color;`,
|
|
40
|
+
];
|
|
41
|
+
const varyings = {
|
|
42
|
+
varNormal: "vec3",
|
|
43
|
+
};
|
|
44
|
+
if (hasTexture) {
|
|
45
|
+
varyings.varUV = "vec2";
|
|
46
|
+
uniforms.texDiffuse = "sampler2D";
|
|
47
|
+
}
|
|
48
|
+
const vertexShaderCode = () => {
|
|
49
|
+
const code = [
|
|
50
|
+
`varNormal = mat3(uniTransfoMatrix) * ${this.attNormal};`,
|
|
51
|
+
];
|
|
52
|
+
if (hasTexture) {
|
|
53
|
+
code.push(`varUV = ${this.attUV};`);
|
|
54
|
+
}
|
|
55
|
+
return code;
|
|
56
|
+
};
|
|
57
|
+
super({
|
|
58
|
+
uniforms,
|
|
59
|
+
varyings,
|
|
60
|
+
vertexShaderCode,
|
|
61
|
+
fragmentShaderCode,
|
|
62
|
+
setUniforms: (program) => {
|
|
63
|
+
program.uniform3fv("uniLightDir", this.light.direction);
|
|
64
|
+
this.lightColor.from(this.light.color).scale(this.light.color.w);
|
|
65
|
+
program.uniform3fv("uniLight", this.lightColor);
|
|
66
|
+
this.ambientColor
|
|
67
|
+
.from(this.ambient.color)
|
|
68
|
+
.scale(this.ambient.color.w);
|
|
69
|
+
program.uniform3fv("uniAmbient", this.ambientColor);
|
|
70
|
+
program.uniform1f("uniSpecularExponent", this.specularExponent);
|
|
71
|
+
program.uniform1f("uniSpecularIntensity", this.specularIntensity);
|
|
72
|
+
const { texture } = this;
|
|
73
|
+
if (texture)
|
|
74
|
+
texture.activate(0, program, "texDiffuse");
|
|
75
|
+
},
|
|
76
|
+
});
|
|
77
|
+
this.light = new TgdLight();
|
|
78
|
+
this.ambient = new TgdLight({ color: new TgdVec4(0.2, 0.1, 0, 0) });
|
|
79
|
+
this.specularExponent = 20;
|
|
80
|
+
this.specularIntensity = 1;
|
|
81
|
+
this.lightColor = new TgdVec3();
|
|
82
|
+
this.ambientColor = new TgdVec3();
|
|
83
|
+
this.texture = hasTexture ? color : null;
|
|
84
|
+
if (options.light) {
|
|
85
|
+
this.light = options.light;
|
|
86
|
+
}
|
|
87
|
+
if (options.ambient) {
|
|
88
|
+
this.ambient = options.ambient;
|
|
89
|
+
}
|
|
90
|
+
if (typeof options.specularExponent === "number") {
|
|
91
|
+
this.specularExponent = options.specularExponent;
|
|
92
|
+
}
|
|
93
|
+
if (typeof options.specularIntensity === "number") {
|
|
94
|
+
this.specularIntensity = options.specularIntensity;
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnNkZi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9tYXRlcmlhbC9ic2RmLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQU1BLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sV0FBVyxDQUFBO0FBQzVDLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxZQUFZLENBQUE7QUFFeEMsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLFlBQVksQ0FBQTtBQUNyQyxPQUFPLEVBQUUsWUFBWSxFQUFrQixNQUFNLGNBQWMsQ0FBQTtBQWEzRCxNQUFNLGFBQWEsR0FBRyxJQUFJLE9BQU8sQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQTtBQUVuRCxNQUFNLE9BQU8sZUFBZ0IsU0FBUSxXQUFXO0lBVTVDLFlBQVksVUFBa0MsRUFBRTs7UUFDNUMsTUFBTSxLQUFLLEdBQ1AsT0FBTyxDQUFDLEtBQUssWUFBWSxZQUFZO1lBQ2pDLENBQUMsQ0FBQyxPQUFPLENBQUMsS0FBSztZQUNmLENBQUMsQ0FBQyxJQUFJLE9BQU8sQ0FBQyxNQUFBLE9BQU8sQ0FBQyxLQUFLLG1DQUFJLGFBQWEsQ0FBQyxDQUFBO1FBQ3JELE1BQU0sVUFBVSxHQUFHLENBQUMsQ0FBQyxLQUFLLFlBQVksT0FBTyxDQUFDLENBQUE7UUFDOUMsTUFBTSxRQUFRLEdBQXlDO1lBQ25ELFFBQVEsRUFBRSxNQUFNO1lBQ2hCLFdBQVcsRUFBRSxNQUFNO1lBQ25CLFVBQVUsRUFBRSxNQUFNO1lBQ2xCLG1CQUFtQixFQUFFLE9BQU87WUFDNUIsb0JBQW9CLEVBQUUsT0FBTztZQUM3QixrQkFBa0IsRUFBRSxNQUFNO1NBQzdCLENBQUE7UUFDRCxNQUFNLGtCQUFrQixHQUFnQjtZQUNwQyxpQkFBaUIsT0FBTyxDQUFDLGtCQUFrQixDQUFDLENBQUMsQ0FBQyw2QkFBNkIsQ0FBQyxDQUFDLENBQUMsRUFBRSx1QkFBdUI7WUFDdkcsK0NB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
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import { ArrayNumber3, ArrayNumber4 } from "../types";
|
|
2
|
+
import { TgdVec3, TgdVec4 } from "../math";
|
|
3
|
+
import { TgdMaterial } from "./material";
|
|
4
|
+
import { TgdLight } from "../light";
|
|
5
|
+
import { TgdTexture2D, TgdTextureCube } from "../texture";
|
|
6
|
+
export type TgdMaterialPrincipledOptions = Partial<{
|
|
7
|
+
color: TgdVec4 | ArrayNumber4 | TgdTexture2D;
|
|
8
|
+
lights: TgdLight[];
|
|
9
|
+
ambientColor: TgdVec3 | ArrayNumber3 | TgdTextureCube;
|
|
10
|
+
ambientIntensity: number;
|
|
11
|
+
specularExponent: number;
|
|
12
|
+
specularIntensity: number;
|
|
13
|
+
normalMap: TgdTexture2D;
|
|
14
|
+
}>;
|
|
15
|
+
export declare class TgdMaterialPrincipled extends TgdMaterial {
|
|
16
|
+
private readonly options;
|
|
17
|
+
specularExponent: number;
|
|
18
|
+
specularIntensity: number;
|
|
19
|
+
private textureColor;
|
|
20
|
+
private mustDeleteTextureColor;
|
|
21
|
+
private textureAmbient;
|
|
22
|
+
private mustDeleteTextureAmbient;
|
|
23
|
+
constructor(options?: TgdMaterialPrincipledOptions);
|
|
24
|
+
}
|
|
25
|
+
//# sourceMappingURL=principled.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"principled.d.ts","sourceRoot":"","sources":["../../src/material/principled.ts"],"names":[],"mappings":"AAAA,OAAO,EACH,YAAY,EACZ,YAAY,EAGf,MAAM,YAAY,CAAA;AACnB,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AAC5C,OAAO,EAAE,WAAW,EAAE,MAAM,YAAY,CAAA;AAExC,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAA;AACrC,OAAO,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,cAAc,CAAA;AAK3D,MAAM,MAAM,4BAA4B,GAAG,OAAO,CAAC;IAC/C,KAAK,EAAE,OAAO,GAAG,YAAY,GAAG,YAAY,CAAA;IAC5C,MAAM,EAAE,QAAQ,EAAE,CAAA;IAClB,YAAY,EAAE,OAAO,GAAG,YAAY,GAAG,cAAc,CAAA;IACrD,gBAAgB,EAAE,MAAM,CAAA;IACxB,gBAAgB,EAAE,MAAM,CAAA;IACxB,iBAAiB,EAAE,MAAM,CAAA;IACzB,SAAS,EAAE,YAAY,CAAA;CAC1B,CAAC,CAAA;AAKF,qBAAa,qBAAsB,SAAQ,WAAW;IAStC,OAAO,CAAC,QAAQ,CAAC,OAAO;IAR7B,gBAAgB,SAAM;IACtB,iBAAiB,SAAI;IAE5B,OAAO,CAAC,YAAY,CAA4B;IAChD,OAAO,CAAC,sBAAsB,CAAQ;IACtC,OAAO,CAAC,cAAc,CAA8B;IACpD,OAAO,CAAC,wBAAwB,CAAQ;gBAEX,OAAO,GAAE,4BAAiC;CAgH1E"}
|
|
@@ -0,0 +1,112 @@
|
|
|
1
|
+
import { TgdVec3, TgdVec4 } from "./../math/index.js";
|
|
2
|
+
import { TgdMaterial } from "./material.js";
|
|
3
|
+
import { TgdTexture2D, TgdTextureCube } from "./../texture/index.js";
|
|
4
|
+
import { tgdCanvasCreateFill } from "./../utils/index.js";
|
|
5
|
+
const DEFAULT_COLOR = new TgdVec4(0.8, 0.6, 0.1, 1);
|
|
6
|
+
const DEFAULT_AMBIENT = new TgdVec3(0.8, 0.8, 0.8);
|
|
7
|
+
export class TgdMaterialPrincipled extends TgdMaterial {
|
|
8
|
+
constructor(options = {}) {
|
|
9
|
+
const uniforms = {
|
|
10
|
+
uniTransfoMatrix: "mat4",
|
|
11
|
+
uniSpecularExponent: "float",
|
|
12
|
+
uniSpecularIntensity: "float",
|
|
13
|
+
texColor: "sampler2D",
|
|
14
|
+
texAmbient: "samplerCube",
|
|
15
|
+
uniCameraPosition: "vec3",
|
|
16
|
+
};
|
|
17
|
+
const fragmentShaderCode = [
|
|
18
|
+
`vec3 N = normalize(varNormal);`,
|
|
19
|
+
`vec3 L = normalize(varPosition.xyz - uniCameraPosition);`,
|
|
20
|
+
`vec3 R = reflect(L, N);`,
|
|
21
|
+
`vec3 color = texture(texAmbient, R).rgb;`,
|
|
22
|
+
`color = pow(color, vec3(uniSpecularExponent));`,
|
|
23
|
+
`color *= uniSpecularIntensity;`,
|
|
24
|
+
`return vec4(color, 1) * texture(texColor, varUV);`,
|
|
25
|
+
];
|
|
26
|
+
const varyings = {
|
|
27
|
+
varUV: "vec2",
|
|
28
|
+
varNormal: "vec3",
|
|
29
|
+
varPosition: "vec4",
|
|
30
|
+
};
|
|
31
|
+
const vertexShaderCode = () => {
|
|
32
|
+
const code = [
|
|
33
|
+
`varUV = ${this.attUV};`,
|
|
34
|
+
`varNormal = mat3(uniTransfoMatrix) * ${this.attNormal};`,
|
|
35
|
+
`varPosition = uniTransfoMatrix * ${this.attPosition};`,
|
|
36
|
+
];
|
|
37
|
+
return code;
|
|
38
|
+
};
|
|
39
|
+
super({
|
|
40
|
+
delete: () => {
|
|
41
|
+
var _a, _b;
|
|
42
|
+
if (this.mustDeleteTextureAmbient)
|
|
43
|
+
(_a = this.textureAmbient) === null || _a === void 0 ? void 0 : _a.delete();
|
|
44
|
+
if (this.mustDeleteTextureColor)
|
|
45
|
+
(_b = this.textureColor) === null || _b === void 0 ? void 0 : _b.delete();
|
|
46
|
+
},
|
|
47
|
+
uniforms,
|
|
48
|
+
varyings,
|
|
49
|
+
vertexShaderCode,
|
|
50
|
+
fragmentShaderCode,
|
|
51
|
+
setUniforms: ({ program, camera, }) => {
|
|
52
|
+
var _a, _b;
|
|
53
|
+
if (!this.textureColor) {
|
|
54
|
+
// Lazy creation of a texture from an unique color.
|
|
55
|
+
this.textureColor = new TgdTexture2D(program);
|
|
56
|
+
const color = (_a = this.options.color) !== null && _a !== void 0 ? _a : DEFAULT_COLOR;
|
|
57
|
+
if (!(color instanceof TgdTexture2D)) {
|
|
58
|
+
this.textureColor.loadBitmap(tgdCanvasCreateFill(1, 1, color));
|
|
59
|
+
}
|
|
60
|
+
this.mustDeleteTextureColor = true;
|
|
61
|
+
}
|
|
62
|
+
if (!this.textureAmbient) {
|
|
63
|
+
// Lazy creation of a texture from an unique color.
|
|
64
|
+
const color = (_b = this.options.ambientColor) !== null && _b !== void 0 ? _b : DEFAULT_AMBIENT;
|
|
65
|
+
const canvas = tgdCanvasCreateFill(1, 1, color instanceof TgdTextureCube
|
|
66
|
+
? DEFAULT_AMBIENT
|
|
67
|
+
: color);
|
|
68
|
+
this.textureAmbient = new TgdTextureCube(program, {
|
|
69
|
+
imagePosX: canvas,
|
|
70
|
+
imagePosY: canvas,
|
|
71
|
+
imagePosZ: canvas,
|
|
72
|
+
imageNegX: canvas,
|
|
73
|
+
imageNegY: canvas,
|
|
74
|
+
imageNegZ: canvas,
|
|
75
|
+
});
|
|
76
|
+
this.mustDeleteTextureAmbient = true;
|
|
77
|
+
}
|
|
78
|
+
this.textureColor.activate(0, program, "texColor");
|
|
79
|
+
this.textureAmbient.activate(1, program, "texAmbient");
|
|
80
|
+
program.uniform3fv("uniCameraPosition", camera.transfo.actualPosition);
|
|
81
|
+
program.uniform1f("uniSpecularExponent", this.specularExponent);
|
|
82
|
+
program.uniform1f("uniSpecularIntensity", this.specularIntensity);
|
|
83
|
+
},
|
|
84
|
+
});
|
|
85
|
+
this.options = options;
|
|
86
|
+
this.specularExponent = 2.2;
|
|
87
|
+
this.specularIntensity = 2;
|
|
88
|
+
this.textureColor = null;
|
|
89
|
+
this.mustDeleteTextureColor = false;
|
|
90
|
+
this.textureAmbient = null;
|
|
91
|
+
this.mustDeleteTextureAmbient = false;
|
|
92
|
+
// if (options.light) {
|
|
93
|
+
// this.light = options.light
|
|
94
|
+
// }
|
|
95
|
+
// if (options.ambient) {
|
|
96
|
+
// this.ambient = options.ambient
|
|
97
|
+
// }
|
|
98
|
+
if (typeof options.specularExponent === "number") {
|
|
99
|
+
this.specularExponent = options.specularExponent;
|
|
100
|
+
}
|
|
101
|
+
if (typeof options.specularIntensity === "number") {
|
|
102
|
+
this.specularIntensity = options.specularIntensity;
|
|
103
|
+
}
|
|
104
|
+
if (options.color instanceof TgdTexture2D) {
|
|
105
|
+
this.textureColor = options.color;
|
|
106
|
+
}
|
|
107
|
+
if (options.ambientColor instanceof TgdTextureCube) {
|
|
108
|
+
this.textureAmbient = options.ambientColor;
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJpbmNpcGxlZC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9tYXRlcmlhbC9wcmluY2lwbGVkLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQU1BLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sV0FBVyxDQUFBO0FBQzVDLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxZQUFZLENBQUE7QUFHeEMsT0FBTyxFQUFFLFlBQVksRUFBRSxjQUFjLEVBQUUsTUFBTSxjQUFjLENBQUE7QUFFM0QsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sWUFBWSxDQUFBO0FBYWhELE1BQU0sYUFBYSxHQUFHLElBQUksT0FBTyxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFBO0FBQ25ELE1BQU0sZUFBZSxHQUFHLElBQUksT0FBTyxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxDQUFDLENBQUE7QUFFbEQsTUFBTSxPQUFPLHFCQUFzQixTQUFRLFdBQVc7SUFTbEQsWUFBNkIsVUFBd0MsRUFBRTtRQUNuRSxNQUFNLFFBQVEsR0FBeUM7WUFDbkQsZ0JBQWdCLEVBQUUsTUFBTTtZQUN4QixtQkFBbUIsRUFBRSxPQUFPO1lBQzVCLG9CQUFvQixFQUFFLE9BQU87WUFDN0IsUUFBUSxFQUFFLFdBQVc7WUFDckIsVUFBVSxFQUFFLGFBQWE7WUFDekIsaUJBQWlCLEVBQUUsTUFBTTtTQUM1QixDQUFBO1FBQ0QsTUFBTSxrQkFBa0IsR0FBZ0I7WUFDcEMsZ0NBQWdDO1lBQ2hDLDBEQUEwRDtZQUMxRCx5QkFBeUI7WUFDekIsMENBQTBDO1lBQzFDLGdEQUFnRDtZQUNoRCxnQ0FBZ0M7WUFDaEMsbURBQW1EO1NBQ3RELENBQUE7UUFDRCxNQUFNLFFBQVEsR0FBMkM7WUFDckQsS0FBSyxFQUFFLE1BQU07WUFDYixTQUFTLEVBQUUsTUFBTTtZQUNqQixXQUFXLEVBQUUsTUFBTTtTQUN0QixDQUFB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
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import { ArrayNumber4, WebglAttributeType, WebglUniformType } from "../types";
|
|
2
|
+
import { TgdVec4 } from "../math";
|
|
3
|
+
import { TgdMaterial } from "./material";
|
|
4
|
+
import { TgdCodeBloc } from "../shader/code";
|
|
5
|
+
import { TgdProgram } from "../program";
|
|
6
|
+
export type TgdMaterialSolidOptions = Partial<{
|
|
7
|
+
color: ArrayNumber4 | TgdVec4;
|
|
8
|
+
}>;
|
|
9
|
+
export declare class TgdMaterialSolid extends TgdMaterial {
|
|
10
|
+
color: TgdVec4;
|
|
11
|
+
readonly varyings: {
|
|
12
|
+
[name: string]: WebglAttributeType;
|
|
13
|
+
};
|
|
14
|
+
readonly uniforms: {
|
|
15
|
+
[name: string]: WebglUniformType;
|
|
16
|
+
};
|
|
17
|
+
readonly fragmentShaderCode: TgdCodeBloc;
|
|
18
|
+
readonly vertexShaderCode: TgdCodeBloc;
|
|
19
|
+
constructor(options?: TgdMaterialSolidOptions);
|
|
20
|
+
setUniforms(program: TgdProgram): void;
|
|
21
|
+
}
|
|
22
|
+
//# sourceMappingURL=solid.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"solid.d.ts","sourceRoot":"","sources":["../../src/material/solid.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,kBAAkB,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAA;AAC/E,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AACnC,OAAO,EAAE,WAAW,EAAE,MAAM,YAAY,CAAA;AACxC,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAA;AAC9C,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAA;AAEzC,MAAM,MAAM,uBAAuB,GAAG,OAAO,CAAC;IAC1C,KAAK,EAAE,YAAY,GAAG,OAAO,CAAA;CAChC,CAAC,CAAA;AAIF,qBAAa,gBAAiB,SAAQ,WAAW;IACtC,KAAK,EAAE,OAAO,CAAA;IAErB,SAAgB,QAAQ,EAAE;QAAE,CAAC,IAAI,EAAE,MAAM,GAAG,kBAAkB,CAAA;KAAE,CAAA;IAChE,SAAgB,QAAQ,EAAE;QAAE,CAAC,IAAI,EAAE,MAAM,GAAG,gBAAgB,CAAA;KAAE,CAE7D;IACD,SAAgB,kBAAkB,EAAE,WAAW,CAAA;IAC/C,SAAgB,gBAAgB,EAAE,WAAW,CAAA;gBAEjC,OAAO,GAAE,uBAA4B;IAQjD,WAAW,CAAC,OAAO,EAAE,UAAU,GAAG,IAAI;CAGzC"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { TgdVec4 } from "./../math/index.js";
|
|
2
|
+
import { TgdMaterial } from "./material.js";
|
|
3
|
+
const DEFAULT_COLOR = [0.111, 0.333, 0.999, 1];
|
|
4
|
+
export class TgdMaterialSolid extends TgdMaterial {
|
|
5
|
+
constructor(options = {}) {
|
|
6
|
+
var _a;
|
|
7
|
+
super();
|
|
8
|
+
this.uniforms = {
|
|
9
|
+
uniColor: "vec4",
|
|
10
|
+
};
|
|
11
|
+
this.color = new TgdVec4((_a = options.color) !== null && _a !== void 0 ? _a : DEFAULT_COLOR);
|
|
12
|
+
this.fragmentShaderCode = [`return uniColor;`];
|
|
13
|
+
this.vertexShaderCode = [];
|
|
14
|
+
this.varyings = {};
|
|
15
|
+
}
|
|
16
|
+
setUniforms(program) {
|
|
17
|
+
program.uniform4fv("uniColor", this.color);
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic29saWQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvbWF0ZXJpYWwvc29saWQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLFdBQVcsQ0FBQTtBQUNuQyxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sWUFBWSxDQUFBO0FBUXhDLE1BQU0sYUFBYSxHQUFpQixDQUFDLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLENBQUMsQ0FBQyxDQUFBO0FBRTVELE1BQU0sT0FBTyxnQkFBaUIsU0FBUSxXQUFXO0lBVTdDLFlBQVksVUFBbUMsRUFBRTs7UUFDN0MsS0FBSyxFQUFFLENBQUE7UUFQSyxhQUFRLEdBQXlDO1lBQzdELFFBQVEsRUFBRSxNQUFNO1NBQ25CLENBQUE7UUFNRyxJQUFJLENBQUMsS0FBSyxHQUFHLElBQUksT0FBTyxDQUFDLE1BQUEsT0FBTyxDQUFDLEtBQUssbUNBQUksYUFBYSxDQUFDLENBQUE7UUFDeEQsSUFBSSxDQUFDLGtCQUFrQixHQUFHLENBQUMsa0JBQWtCLENBQUMsQ0FBQTtRQUM5QyxJQUFJLENBQUMsZ0JBQWdCLEdBQUcsRUFBRSxDQUFBO1FBQzFCLElBQUksQ0FBQyxRQUFRLEdBQUcsRUFBRSxDQUFBO0lBQ3RCLENBQUM7SUFFRCxXQUFXLENBQUMsT0FBbUI7UUFDM0IsT0FBTyxDQUFDLFVBQVUsQ0FBQyxVQUFVLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFBO0lBQzlDLENBQUM7Q0FDSiJ9
|
|
@@ -31,13 +31,43 @@ export interface TgdPainterPointsCloudOptions {
|
|
|
31
31
|
mustDeleteTexture?: boolean;
|
|
32
32
|
texture?: TgdTexture2D;
|
|
33
33
|
/**
|
|
34
|
-
* The content of a fragment shader function
|
|
34
|
+
* The content of a fragment shader function that takes
|
|
35
35
|
* `vec4 color` as argument and must return a `vec4` color.
|
|
36
36
|
*
|
|
37
|
+
* The following uniforms are available:
|
|
38
|
+
*
|
|
39
|
+
* ```glsl
|
|
40
|
+
* uniform float uniSpecularExponent;
|
|
41
|
+
* uniform float uniSpecularIntensity;
|
|
42
|
+
* uniform float uniShadowThickness;
|
|
43
|
+
* uniform float uniShadowIntensity;
|
|
44
|
+
* uniform float uniLight;
|
|
45
|
+
* ```
|
|
46
|
+
*
|
|
37
47
|
* You can also use `TgdPainterPointsCloud.fragCode*()` static functions
|
|
38
48
|
* to provide preset functions.
|
|
39
49
|
*/
|
|
40
50
|
fragCode?: TgdCodeBloc;
|
|
51
|
+
/**
|
|
52
|
+
* Default to 10
|
|
53
|
+
*/
|
|
54
|
+
specularExponent?: number;
|
|
55
|
+
/**
|
|
56
|
+
* Default to 0.33
|
|
57
|
+
*/
|
|
58
|
+
specularIntensity?: number;
|
|
59
|
+
/**
|
|
60
|
+
* Default to 0.5
|
|
61
|
+
*/
|
|
62
|
+
shadowIntensity?: number;
|
|
63
|
+
/**
|
|
64
|
+
* Default to 1
|
|
65
|
+
*/
|
|
66
|
+
shadowThickness?: number;
|
|
67
|
+
/**
|
|
68
|
+
* Default to 1
|
|
69
|
+
*/
|
|
70
|
+
light?: number;
|
|
41
71
|
}
|
|
42
72
|
export declare class TgdPainterPointsCloud extends TgdPainter {
|
|
43
73
|
readonly context: TgdContext;
|
|
@@ -54,6 +84,11 @@ export declare class TgdPainterPointsCloud extends TgdPainter {
|
|
|
54
84
|
texture: TgdTexture2D;
|
|
55
85
|
radiusMultiplier: number;
|
|
56
86
|
minSizeInPixels: number;
|
|
87
|
+
specularExponent: number;
|
|
88
|
+
specularIntensity: number;
|
|
89
|
+
shadowIntensity: number;
|
|
90
|
+
shadowThickness: number;
|
|
91
|
+
light: number;
|
|
57
92
|
private readonly dataPoint;
|
|
58
93
|
private readonly dataUV;
|
|
59
94
|
private readonly textureMustBeDeleted;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"points-cloud.d.ts","sourceRoot":"","sources":["../../../src/painter/points-cloud/points-cloud.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"points-cloud.d.ts","sourceRoot":"","sources":["../../../src/painter/points-cloud/points-cloud.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,MAAM,cAAc,CAAA;AAC3C,OAAO,EAAE,UAAU,EAAE,MAAM,YAAY,CAAA;AAIvC,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAA;AAGzC,OAAO,EAAE,WAAW,EAAsC,MAAM,aAAa,CAAA;AAE7E,MAAM,WAAW,4BAA4B;IACzC,IAAI,CAAC,EAAE,MAAM,CAAA;IACb;;;OAGG;IACH,SAAS,EAAE,YAAY,CAAA;IACvB;;;OAGG;IACH,MAAM,CAAC,EAAE,YAAY,CAAA;IACrB;;;;OAIG;IACH,gBAAgB,CAAC,EAAE,MAAM,CAAA;IACzB;;;;;;OAMG;IACH,eAAe,CAAC,EAAE,MAAM,CAAA;IACxB,iBAAiB,CAAC,EAAE,OAAO,CAAA;IAC3B,OAAO,CAAC,EAAE,YAAY,CAAA;IACtB;;;;;;;;;;;;;;;;OAgBG;IACH,QAAQ,CAAC,EAAE,WAAW,CAAA;IACtB;;OAEG;IACH,gBAAgB,CAAC,EAAE,MAAM,CAAA;IACzB;;OAEG;IACH,iBAAiB,CAAC,EAAE,MAAM,CAAA;IAC1B;;OAEG;IACH,eAAe,CAAC,EAAE,MAAM,CAAA;IACxB;;OAEG;IACH,eAAe,CAAC,EAAE,MAAM,CAAA;IACxB;;OAEG;IACH,KAAK,CAAC,EAAE,MAAM,CAAA;CACjB;AAED,qBAAa,qBAAsB,SAAQ,UAAU;aAgD7B,OAAO,EAAE,UAAU;IA/CvC;;OAEG;IACH,MAAM,CAAC,cAAc,CACjB,OAAO,GAAE,OAAO,CAAC;QACb,gBAAgB,EAAE,MAAM,CAAA;QACxB,iBAAiB,EAAE,MAAM,CAAA;QACzB,eAAe,EAAE,MAAM,CAAA;QACvB,eAAe,EAAE,MAAM,CAAA;KAC1B,CAAM,GACR,WAAW;IAkBd,SAAgB,KAAK,EAAE,MAAM,CAAA;IACtB,OAAO,EAAE,YAAY,CAAA;IACrB,gBAAgB,SAAI;IACpB,eAAe,SAAI;IAEnB,gBAAgB,SAAK;IACrB,iBAAiB,SAAO;IACxB,eAAe,SAAM;IACrB,eAAe,SAAI;IACnB,KAAK,SAAI;IAEhB,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAc;IACxC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAc;IACrC,OAAO,CAAC,QAAQ,CAAC,oBAAoB,CAAS;IAC9C,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAY;IACpC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAY;IACpC,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAgB;gBAGhB,OAAO,EAAE,UAAU,EACnC,OAAO,EAAE,4BAA4B;IAgDzC,MAAM,IAAI,IAAI;IAMd,KAAK,IAAI,IAAI;IA4Bb,OAAO,CAAC,aAAa;IAUrB,OAAO,CAAC,aAAa;CA+DxB"}
|
|
@@ -16,26 +16,37 @@ export class TgdPainterPointsCloud extends TgdPainter {
|
|
|
16
16
|
"vec2 coords = 2.0 * (gl_PointCoord - vec2(.5));",
|
|
17
17
|
"float len = 1.0 - dot(coords, coords);",
|
|
18
18
|
"if (len < 0.0) discard;",
|
|
19
|
+
"gl_FragDepth = gl_FragCoord.z - len * 1e-5;",
|
|
19
20
|
`float light = smoothstep(0.0, ${shadowThickness.toFixed(6)}, len) * ${shadowIntensity} + ${(1 - shadowIntensity).toFixed(6)};`,
|
|
20
21
|
`float spec = pow(len, ${specularExponent.toFixed(6)}) * ${specularIntensity.toFixed(6)};`,
|
|
21
22
|
"return color * vec4(vec3(light), 1.0) + vec4(vec3(spec), 0.0);",
|
|
22
23
|
];
|
|
23
24
|
}
|
|
24
25
|
constructor(context, options) {
|
|
25
|
-
var _a, _b, _c, _d, _e;
|
|
26
|
+
var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k;
|
|
26
27
|
super();
|
|
27
28
|
this.context = context;
|
|
28
29
|
this.radiusMultiplier = 1;
|
|
29
30
|
this.minSizeInPixels = 0;
|
|
31
|
+
this.specularExponent = 10;
|
|
32
|
+
this.specularIntensity = 0.33;
|
|
33
|
+
this.shadowIntensity = 0.5;
|
|
34
|
+
this.shadowThickness = 1;
|
|
35
|
+
this.light = 1;
|
|
30
36
|
this.name = (_a = options.name) !== null && _a !== void 0 ? _a : this.name;
|
|
31
37
|
this.radiusMultiplier = (_b = options.radiusMultiplier) !== null && _b !== void 0 ? _b : 1;
|
|
32
38
|
this.minSizeInPixels = (_c = options.minSizeInPixels) !== null && _c !== void 0 ? _c : 0;
|
|
39
|
+
this.specularExponent = (_d = options.specularExponent) !== null && _d !== void 0 ? _d : 10;
|
|
40
|
+
this.specularIntensity = (_e = options.specularIntensity) !== null && _e !== void 0 ? _e : 0.33;
|
|
41
|
+
this.shadowIntensity = (_f = options.shadowIntensity) !== null && _f !== void 0 ? _f : 0.5;
|
|
42
|
+
this.shadowThickness = (_g = options.shadowThickness) !== null && _g !== void 0 ? _g : 1;
|
|
43
|
+
this.light = (_h = options.light) !== null && _h !== void 0 ? _h : 1;
|
|
33
44
|
this.dataPoint = options.dataPoint;
|
|
34
45
|
if ((this.dataPoint.length & 3) !== 0) {
|
|
35
46
|
throw new Error(`dataPoint must have a length that is an integral multiple of 4: [x, y, z, radius, ...]!\ndataPoint.length === ${this.dataPoint.length}`);
|
|
36
47
|
}
|
|
37
48
|
this.dataUV =
|
|
38
|
-
(
|
|
49
|
+
(_j = options.dataUV) !== null && _j !== void 0 ? _j : new Float32Array(this.dataPoint.length >> 1);
|
|
39
50
|
if (this.dataPoint.length !== this.dataUV.length * 2) {
|
|
40
51
|
const message = `dataUV must be half of the size of dataPoint: [u, v, ...]!\ndataPoint.length === ${this.dataPoint.length}, \ndataUV.length === ${this.dataUV.length}`;
|
|
41
52
|
console.error("[TgdPainterPointsCloud]", message);
|
|
@@ -46,7 +57,7 @@ export class TgdPainterPointsCloud extends TgdPainter {
|
|
|
46
57
|
}
|
|
47
58
|
if (options.texture) {
|
|
48
59
|
this.texture = options.texture;
|
|
49
|
-
this.textureMustBeDeleted = (
|
|
60
|
+
this.textureMustBeDeleted = (_k = options.mustDeleteTexture) !== null && _k !== void 0 ? _k : false;
|
|
50
61
|
}
|
|
51
62
|
else {
|
|
52
63
|
this.texture = new TgdTexture2D(context).loadBitmap(tgdCanvasCreateGradientHorizontal(128, tgdColorMakeHueWheel({ luminance: 0.2 })));
|
|
@@ -71,6 +82,11 @@ export class TgdPainterPointsCloud extends TgdPainter {
|
|
|
71
82
|
program.uniform1f("uniRadiusMultiplier", radiusMultiplier);
|
|
72
83
|
program.uniform1f("uniMinSizeInPixels", minSizeInPixels);
|
|
73
84
|
program.uniform1f("uniHalfScreenHeightInPixels", context.height * 0.5);
|
|
85
|
+
program.uniform1f("uniSpecularExponent", this.specularExponent);
|
|
86
|
+
program.uniform1f("uniSpecularIntensity", this.specularIntensity);
|
|
87
|
+
program.uniform1f("uniShadowIntensity", this.shadowIntensity);
|
|
88
|
+
program.uniform1f("uniShadowThickness", this.shadowThickness);
|
|
89
|
+
program.uniform1f("uniLight", this.light);
|
|
74
90
|
program.uniformMatrix4fv("uniModelViewMatrix", camera.matrixModelView);
|
|
75
91
|
program.uniformMatrix4fv("uniProjectionMatrix", camera.matrixProjection);
|
|
76
92
|
vao.bind();
|
|
@@ -116,6 +132,11 @@ export class TgdPainterPointsCloud extends TgdPainter {
|
|
|
116
132
|
const frag = new TgdShaderFragment({
|
|
117
133
|
uniforms: {
|
|
118
134
|
uniTexture: "sampler2D",
|
|
135
|
+
uniSpecularExponent: "float",
|
|
136
|
+
uniSpecularIntensity: "float",
|
|
137
|
+
uniShadowIntensity: "float",
|
|
138
|
+
uniShadowThickness: "float",
|
|
139
|
+
uniLight: "float",
|
|
119
140
|
},
|
|
120
141
|
varying: {
|
|
121
142
|
varUV: "vec2",
|
|
@@ -124,15 +145,15 @@ export class TgdPainterPointsCloud extends TgdPainter {
|
|
|
124
145
|
functions: {
|
|
125
146
|
render: [
|
|
126
147
|
"vec4 render(vec4 color) {",
|
|
127
|
-
render !== null && render !== void 0 ? render :
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
148
|
+
render !== null && render !== void 0 ? render : [
|
|
149
|
+
"vec2 coords = 2.0 * (gl_PointCoord - vec2(.5));",
|
|
150
|
+
"float len = 1.0 - dot(coords, coords);",
|
|
151
|
+
"if (len < 0.0) discard;",
|
|
152
|
+
"gl_FragDepth = gl_FragCoord.z - len * 1e-5;",
|
|
153
|
+
`float light = smoothstep(0.0, uniShadowThickness, len) * uniShadowIntensity + (1.0 - uniShadowIntensity);`,
|
|
154
|
+
`float spec = pow(len, uniSpecularExponent) * uniSpecularIntensity;`,
|
|
155
|
+
"return color * vec4(vec3(light * uniLight), 1.0) + vec4(vec3(spec), 0.0);",
|
|
156
|
+
],
|
|
136
157
|
"}",
|
|
137
158
|
],
|
|
138
159
|
},
|
|
@@ -145,4 +166,4 @@ export class TgdPainterPointsCloud extends TgdPainter {
|
|
|
145
166
|
return program;
|
|
146
167
|
}
|
|
147
168
|
}
|
|
148
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
169
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicG9pbnRzLWNsb3VkLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL3BhaW50ZXIvcG9pbnRzLWNsb3VkL3BvaW50cy1jbG91ZC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sY0FBYyxDQUFBO0FBQzNDLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxZQUFZLENBQUE7QUFDdkMsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGNBQWMsQ0FBQTtBQUN6QyxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sY0FBYyxDQUFBO0FBQ3pDLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxVQUFVLENBQUE7QUFFekMsT0FBTyxFQUFFLGlDQUFpQyxFQUFFLE1BQU0sWUFBWSxDQUFBO0FBQzlELE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLFlBQVksQ0FBQTtBQUNqRCxPQUFPLEVBQWUsaUJBQWlCLEVBQUUsZUFBZSxFQUFFLE1BQU0sYUFBYSxDQUFBO0FBc0U3RSxNQUFNLE9BQU8scUJBQXNCLFNBQVEsVUFBVTtJQUNqRDs7T0FFRztJQUNILE1BQU0sQ0FBQyxjQUFjLENBQ2pCLFVBS0ssRUFBRTtRQUVQLE1BQU0sRUFDRixnQkFBZ0IsR0FBRyxFQUFFLEVBQ3JCLGlCQUFpQixHQUFHLElBQUksRUFDeEIsZUFBZSxHQUFHLEdBQUcsRUFDckIsZUFBZSxHQUFHLEdBQUcsR0FDeEIsR0FBRyxPQUFPLENBQUE7UUFDWCxPQUFPO1lBQ0gsaURBQWlEO1lBQ2pELHdDQUF3QztZQUN4Qyx5QkFBeUI7WUFDekIsNkNBQTZDO1lBQzdDLGlDQUFpQyxlQUFlLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxZQUFZLGVBQWUsTUFBTSxDQUFDLENBQUMsR0FBRyxlQUFlLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEdBQUc7WUFDL0gseUJBQXlCLGdCQUFnQixDQUFDLE9BQU8sQ0FBQyxDQUFDLENB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
|
|
@@ -39,7 +39,7 @@ export declare class TgdTexture2D {
|
|
|
39
39
|
get glTexture(): WebGLTexture;
|
|
40
40
|
bind(): void;
|
|
41
41
|
unbind(): void;
|
|
42
|
-
loadBitmap(bmp: string | WebglImage | null | Promise<WebglImage | null
|
|
42
|
+
loadBitmap(bmp: string | WebglImage | null | Promise<WebglImage | null> | undefined, options?: {
|
|
43
43
|
level?: number;
|
|
44
44
|
generateMipmap?: boolean;
|
|
45
45
|
onLoad?: () => void;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"texture2d.d.ts","sourceRoot":"","sources":["../../src/texture/texture2d.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAA;AAErC,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAA;AACzC,OAAO,EAAgB,UAAU,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAA;AAExE,OAAO,EACH,0BAA0B,EAC1B,sBAAsB,EAEzB,MAAM,YAAY,CAAA;AAEnB,UAAU,mBAAmB;IACzB,KAAK,EAAE,MAAM,CAAA;IACb,MAAM,EAAE,MAAM,CAAA;IACd,MAAM,EAAE,MAAM,CAAA;IACd,KAAK,EAAE,OAAO,CAAA;IACd;;;OAGG;IACH,kBAAkB,EAAE,OAAO,CAAA;IAC3B,cAAc,EACR,IAAI,GACJ,MAAM,GACN,MAAM,GACN,MAAM,GACN,KAAK,GACL,OAAO,GACP,OAAO,GACP,OAAO,GACP,MAAM,GACN,OAAO,GACP,QAAQ,GACR,gBAAgB,GAChB,SAAS,GACT,QAAQ,GACR,QAAQ,GACR,QAAQ,GACR,OAAO,GACP,cAAc,GACd,SAAS,GACT,OAAO,GACP,SAAS,GACT,SAAS,GACT,SAAS,GACT,oBAAoB,GACpB,2BAA2B,GAC3B,qBAAqB,GACrB,4BAA4B,GAC5B,sBAAsB,GACtB,2BAA2B,GAC3B,uBAAuB,GACvB,kCAAkC,GAClC,0CAA0C,GAC1C,2CAA2C,GAC3C,mBAAmB,GACnB,mBAAmB,GACnB,oBAAoB,CAAA;CAC7B;AAED,qBAAa,YAAY;aAoBD,OAAO,EAAE;QACrB,EAAE,EAAE,sBAAsB,CAAA;KAC7B;IArBE,IAAI,EAAE,MAAM,CAAA;IACnB,SAAgB,EAAE,EAAE,sBAAsB,CAAA;IAC1C,SAAgB,WAAW,yBAA+B;IAE1D,OAAO,CAAC,QAAQ,CAA4B;IAC5C,OAAO,CAAC,MAAM,CAAK;IACnB,OAAO,CAAC,OAAO,CAAK;IACpB,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAqB;IAC7C,OAAO,CAAC,MAAM,CAMb;IAED,OAAO,CAAC,MAAM,CAAC,OAAO,CAAI;gBAGN,OAAO,EAAE;QACrB,EAAE,EAAE,sBAAsB,CAAA;KAC7B,EACD,OAAO,CAAC,EAAE,OAAO,CAAC,mBAAmB,CAAC;IAuB1C,MAAM;IAKN,IAAI,KAAK,WAER;IAED,IAAI,MAAM,WAET;IAED,OAAO,CAAC,aAAa;IAWrB,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM;IA0CpC,OAAO,CAAC,UAAU;IAYlB,IAAI,SAAS,IAAI,YAAY,CAI5B;IAED,IAAI;IAIJ,MAAM;IAIN,UAAU,CACN,GAAG,
|
|
1
|
+
{"version":3,"file":"texture2d.d.ts","sourceRoot":"","sources":["../../src/texture/texture2d.ts"],"names":[],"mappings":"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"}
|
|
@@ -293,4 +293,4 @@ function printArray(data) {
|
|
|
293
293
|
}
|
|
294
294
|
return JSON.stringify(data);
|
|
295
295
|
}
|
|
296
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGV4dHVyZTJkLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3RleHR1cmUvdGV4dHVyZTJkLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxZQUFZLENBQUE7QUFDckMsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLG1CQUFtQixDQUFBO0FBRWhELE9BQU8sRUFBRSxZQUFZLEVBQWlDLE1BQU0sWUFBWSxDQUFBO0FBQ3hFLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxZQUFZLENBQUE7QUFDeEMsT0FBTyxFQUdILHlCQUF5QixHQUM1QixNQUFNLFlBQVksQ0FBQTtBQW1EbkIsTUFBTSxPQUFPLFlBQVk7SUFtQnJCLFlBQ29CLE9BRWYsRUFDRCxPQUFzQzs7UUFIdEIsWUFBTyxHQUFQLE9BQU8sQ0FFdEI7UUFuQlcsZ0JBQVcsR0FBRyxJQUFJLFFBQVEsRUFBZ0IsQ0FBQTtRQUVsRCxhQUFRLEdBQXdCLElBQUksQ0FBQTtRQUNwQyxXQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUE7UUFDWCxZQUFPLEdBQUcsQ0FBQyxDQUFDLENBQUE7UUFFWixXQUFNLEdBQTJCO1lBQ3JDLFNBQVMsRUFBRSxRQUFRO1lBQ25CLFNBQVMsRUFBRSxRQUFRO1lBQ25CLEtBQUssRUFBRSxRQUFRO1lBQ2YsS0FBSyxFQUFFLFFBQVE7WUFDZixLQUFLLEVBQUUsUUFBUTtTQUNsQixDQUFBO1FBVUcsTUFBTSxFQUFFLEVBQUUsRUFBRSxHQUFHLE9BQU8sQ0FBQTtRQUN0QixJQUFJLENBQUMsRUFBRSxHQUFHLEVBQUUsQ0FBQTtRQUNaLElBQUksQ0FBQyxJQUFJLEdBQUcsYUFBYSxZQUFZLENBQUMsT0FBTyxFQUFFLEVBQUUsQ0FBQTtRQUNqRCxJQUFJLENBQUMsT0FBTyxtQkFDUixLQUFLLEVBQUUsQ0FBQyxFQUNSLE1BQU0sRUFBRSxDQUFDLEVBQ1QsY0FBYyxFQUFFLE1BQUEsT0FBTyxhQUFQLE9BQU8sdUJB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
|
|
296
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGV4dHVyZTJkLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3RleHR1cmUvdGV4dHVyZTJkLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxZQUFZLENBQUE7QUFDckMsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLG1CQUFtQixDQUFBO0FBRWhELE9BQU8sRUFBRSxZQUFZLEVBQWlDLE1BQU0sWUFBWSxDQUFBO0FBQ3hFLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxZQUFZLENBQUE7QUFDeEMsT0FBTyxFQUdILHlCQUF5QixHQUM1QixNQUFNLFlBQVksQ0FBQTtBQW1EbkIsTUFBTSxPQUFPLFlBQVk7SUFtQnJCLFlBQ29CLE9BRWYsRUFDRCxPQUFzQzs7UUFIdEIsWUFBTyxHQUFQLE9BQU8sQ0FFdEI7UUFuQlcsZ0JBQVcsR0FBRyxJQUFJLFFBQVEsRUFBZ0IsQ0FBQTtRQUVsRCxhQUFRLEdBQXdCLElBQUksQ0FBQTtRQUNwQyxXQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUE7UUFDWCxZQUFPLEdBQUcsQ0FBQyxDQUFDLENBQUE7UUFFWixXQUFNLEdBQTJCO1lBQ3JDLFNBQVMsRUFBRSxRQUFRO1lBQ25CLFNBQVMsRUFBRSxRQUFRO1lBQ25CLEtBQUssRUFBRSxRQUFRO1lBQ2YsS0FBSyxFQUFFLFFBQVE7WUFDZixLQUFLLEVBQUUsUUFBUTtTQUNsQixDQUFBO1FBVUcsTUFBTSxFQUFFLEVBQUUsRUFBRSxHQUFHLE9BQU8sQ0FBQTtRQUN0QixJQUFJLENBQUMsRUFBRSxHQUFHLEVBQUUsQ0FBQTtRQUNaLElBQUksQ0FBQyxJQUFJLEdBQUcsYUFBYSxZQUFZLENBQUMsT0FBTyxFQUFFLEVBQUUsQ0FBQTtRQUNqRCxJQUFJLENBQUMsT0FBTyxtQkFDUixLQUFLLEVBQUUsQ0FBQyxFQUNSLE1BQU0sRUFBRSxDQUFDLEVBQ1QsY0FBYyxFQUFFLE1BQUEsT0FBTyxhQUFQLE9BQU8sdUJBQVAsT0FBTyxDQUFFLGNBQWMsbUNBQUksT0FBTyxFQUNsRCxNQUFNLEVBQUUsQ0FBQyxFQUNULEtBQUssRUFBRSxLQUFLLEVBQ1osa0JBQWtCLEVBQUUsS0FBSyxJQUN0QixPQUFPLENBQ2IsQ0FBQTtRQUNELE1BQU0sS0FBSyxHQUFHLE9BQU8sYUFBUCxPQUFPLHVCQUFQLE9BQU8sQ0FBRSxLQUFLLENBQUE7UUFDNUIsTUFBTSxNQUFNLEdBQUcsT0FBTyxhQUFQLE9BQU8sdUJBQVAsT0FBTyxDQUFFLE1BQU0sQ0FBQTtRQUM5QixJQUFJLE9BQU8sS0FBSyxJQUFJLFFBQVEsSUFBSSxPQUFPLE1BQU0sS0FBSyxRQUFRLEVBQUUsQ0FBQztZQUN6RCxJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssRUFBRSxNQUFNLENBQUMsQ0FBQTtRQUM5QixDQUFDO2FBQU0sQ0FBQztZQUNKLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQTtRQUN4QixDQUFDO0lBQ0wsQ0FBQztJQUVELE1BQU07UUFDRixJQUFJLElBQUksQ0FBQyxRQUFRO1lBQUUsSUFBSSxDQUFDLEVBQUUsQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFBO1FBQ3ZELElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFBO0lBQ3hCLENBQUM7SUFFRCxJQUFJLEtBQUs7UUFDTCxPQUFPLElBQUksQ0FBQyxNQUFNLENBQUE7SUFDdEIsQ0FBQztJQUVELElBQUksTUFBTTtRQUNOLE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQTtJQUN2QixDQUFDO0lBRU8sYUFBYTtRQUNqQixJQUFJLENBQUMsTUFBTSxFQUFFLENBQUE7UUFDYixNQUFNLEVBQUUsRUFBRSxFQUFFLEdBQUcsSUFBSSxDQUFBO1FBQ25CLE1BQU0sT0FBTyxHQUFHLEVBQUUsQ0FBQyxhQUFhLEVBQUUsQ0FBQTtRQUNsQyxJQUFJLENBQUMsT0FBTztZQUFFLE1BQU0sSUFBSSxLQUFLLENBQUMsa0NBQWtDLENBQUMsQ0FBQTtRQUVqRSxJQUFJLENBQUMsUUFBUSxHQUFHLE9BQU8sQ0FBQTtRQUN2QixJQUFJLENBQUMsSUFBSSxFQUFFLENBQUE7UUFDWCxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQTtJQUMvQixDQUFDO0lBRUQsTUFBTSxDQUFDLEtBQWEsRUFBRSxNQUFjO1FBQ2hDLElBQUksS0FBSyxLQUFLLElBQUksQ0FBQyxLQUFLLElBQUksTUFBTSxLQUFLLElBQUksQ0FBQyxNQUFNO1lBQUUsT0FBTTtRQUUxRCxNQUFNLEVBQUUsRUFBRSxFQUFFLE9BQU8sRUFBRSxHQUFHLElBQUksQ0FBQTtRQUM1QixJQUFJLENBQUMsYUFBYSxFQUFFLENBQUE7UUFDcEIsSUFBSSxDQUFDLE1BQU0sR0FBRyxLQUFLLENBQUE7UUFDbkIsSUFBSSxDQUFDLE9BQU8sR0FBRyxNQUFNLENBQUE7UUFDckIsT0FBTyxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUE7UUFDckIsT0FBTyxDQUFDLE1BQU0sR0FBRyxNQUFNLENBQUE7UUFDdkIsTUFBTSxFQUFFLGNBQWMsRUFBRSxNQUFNLEVBQUUsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFBO1FBQy9DLElBQUksY0FBYyxDQUFDLFVBQVUsQ0FBQyxhQUFhLENBQUMsRUFBRSxDQUFDO1lBQzNDLHlDQUF5QztZQUN6QyxNQUFNLFNBQVMsR0FBRyxFQUFFLENBQUMsWUFBWSxDQUFDLDhCQUE4QixDQUFDLENBQUE7WUFDakUsSUFBSSxDQUFDLFNBQVM7Z0JBQ1YsTUFBTSxJQUFJLEtBQUssQ0FDWCx3RkFBd0YsQ0FDM0YsQ0FBQTtRQUNULENBQUM7UUFDRCxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUE7UUFDWCxFQUFFLENBQUMsV0FBVyxDQUFDLEVBQUUsQ0FBQyxtQkFBbUIsRUFBRSxJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFBO1FBQzFELEVBQUUsQ0FBQyxXQUFXLENBQ1YsRUFBRSxDQUFDLDhCQUE4QixFQUNqQyxJQUFJLENBQUMsT0FBTyxDQUFDLGtCQUFrQixDQUNsQyxDQUFBO1FBQ0QsRUFBRSxDQUFDLFlBQVksQ0FDWCxFQUFFLENBQUMsVUFBVSxFQUNiLE1BQU0sRUFDTCxFQUF3QyxDQUFDLGNBQWMsQ0FBQyxFQUN6RCxLQUFLLEVBQ0wsTUFBTSxDQUNULENBQUE7UUFDRCxJQUFJLENBQUMsVUFBVSxDQUFDLFVBQVUsS0FBSyxLQUFLLE1BQU07OztNQUc1QyxNQUFNO1NBQ0gsY0FBYztNQUNqQixLQUFLO01BQ0wsTUFBTTtFQUNWLENBQUMsQ0FBQTtRQUNLLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQTtJQUNqQixDQUFDO0lBRU8sVUFBVSxDQUFDLE9BQWU7UUFDOUIsTUFBTSxFQUFFLEVBQUUsRUFBRSxHQUFHLElBQUksQ0FBQTtRQUNuQixNQUFNLEtBQUssR0FBRyxFQUFFLENBQUMsUUFBUSxFQUFFLENBQUE7UUFDM0IsSUFBSSxLQUFLLEtBQUssRUFBRSxDQUFDLFFBQVEsRUFBRSxDQUFDO1lBQ3hCLE9BQU8sQ0FBQyxLQUFLLENBQ1Qsa0JBQWtCLElBQUksQ0FBQyxJQUFJLGNBQWMsT0FBTyxHQUFHLEVBQ25ELFdBQVcsQ0FBQyxLQUFLLENBQUMsRUFDbEIsSUFBSSxDQUNQLENBQUE7UUFDTCxDQUFDO0lBQ0wsQ0FBQztJQUVELElBQUksU0FBUztRQUNULElBQUksSUFBSSxDQUFDLFFBQVE7WUFBRSxPQUFPLElBQUksQ0FBQyxRQUFRLENBQUE7UUFFdkMsTUFBTSxJQUFJLEtBQUssQ0FBQyxZQUFZLElBQUksQ0FBQyxJQUFJLHFCQUFxQixDQUFDLENBQUE7SUFDL0QsQ0FBQztJQUVELElBQUk7UUFDQSxJQUFJLENBQUMsRUFBRSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLFVBQVUsRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUE7SUFDM0QsQ0FBQztJQUVELE1BQU07UUFDRixJQUFJLENBQUMsRUFBRSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLFVBQVUsRUFBRSxJQUFJLENBQUMsQ0FBQTtJQUNqRCxDQUFDO0lBRUQsVUFBVSxDQUNOLEdBS2UsRUFDZixVQUlJLEVBQUU7O1FBRU4sSUFBSSxDQUFDLEdBQUc7WUFBRSxPQUFPLElBQUksQ0FBQTtRQUVyQixJQUFJLE9BQU8sR0FBRyxLQUFLLFFBQVEsRUFBRSxDQUFDO1lBQzFCLE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQyxZQUFZLENBQUMsR0FBRyxDQUFDLEVBQUUsT0FBTyxDQUFDLENBQUE7UUFDdEQsQ0FBQztRQUVELElBQUksQ0FBQyxZQUFZLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQztZQUNyQixHQUFHLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FDdEQsT0FBTyxDQUFDLEtBQUssQ0FBQyw2QkFBNkIsRUFBRSxLQUFLLENBQUMsQ0FDdEQsQ0FBQTtZQUNELE9BQU8sSUFBSSxDQUFBO1FBQ2YsQ0FBQztRQUVELE1BQU0sRUFBRSxPQUFPLEVBQUUsRUFBRSxFQUFFLEdBQUcsSUFBSSxDQUFBO1FBQzVCLE1BQU0sRUFBRSxLQUFLLEdBQUcsQ0FBQyxFQUFFLEdBQUcsT0FBTyxDQUFBO1FBQzdCLElBQUksQ0FBQyxNQUFNLEdBQUcsR0FBRyxDQUFDLEtBQUssQ0FBQTtRQUN2QixJQUFJLENBQUMsT0FBTyxHQUFHLEdBQUcsQ0FBQyxNQUFNLENBQUE7UUFDekIsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFBO1FBQ1gsRUFBRSxDQUFDLFdBQVcsQ0FBQyxFQUFFLENBQUMsbUJBQW1CLEVBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQTtRQUMxRCxFQUFFLENBQUMsV0FBVyxDQUNWLEVBQUUsQ0FBQyw4QkFBOEIsRUFDakMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxrQkFBa0IsQ0FDbEMsQ0FBQTtRQUNELEVBQUUsQ0FBQyxVQUFVLENBQ1QsRUFBRSxDQUFDLFVBQVUsRUFDYixLQUFLLEVBQ0osRUFBd0MsQ0FBQyxPQUFPLENBQUMsY0FBYyxDQUFDLEVBQ2pFLEVBQUUsQ0FBQyx5QkFBeUIsQ0FBQyxPQUFPLENBQUMsY0FBYyxDQUFDLENBQVcsRUFDL0QsRUFBRSxDQUFDLGFBQWEsRUFDaEIsR0FBRyxDQUNOLENBQUE7UUFDRCxJQUFJLENBQUMsVUFBVSxDQUNYLGNBQWMsSUFBSSxDQUFDLFNBQVMsQ0FBQztZQUN6QixLQUFLLEVBQUUsR0FBRyxDQUFDLEtBQUs7WUFDaEIsTUFBTSxFQUFFLEdBQUcsQ0FBQyxNQUFNO1NBQ3JCLENBQUMsbUNBQW1DLEtBQUssUUFDdEMsT0FBTyxDQUFDLGNBQ1osUUFBUSx5QkFBeUIsQ0FDN0IsT0FBTyxDQUFDLGNBQWMsQ0FDekIsMEJBQTBCLENBQzlCLENBQUE7UUFDRCxJQUFJLE9BQU8sQ0FBQyxjQUFjLEVBQUUsQ0FBQztZQUN6QixJQUFJLENBQUMsY0FBYyxFQUFFLENBQUE7WUFDckIsSUFBSSxDQUFDLFVBQVUsQ0FDWCxjQUFjLElBQUksQ0FBQyxTQUFTLENBQUM7Z0JBQ3pCLEtBQUssRUFBRSxHQUFHLENBQUMsS0FBSztnQkFDaEIsTUFBTSxFQUFFLEdBQUcsQ0FBQyxNQUFNO2FBQ3JCLENBQUMsbUNBQW1DLEtBQUssUUFDdEMsT0FBTyxDQUFDLGNBQ1osUUFBUSx5QkFBeUIsQ0FDN0IsT0FBTyxDQUFDLGNBQWMsQ0FDekIsNENBQTRDLENBQ2hELENBQUE7UUFDTCxDQUFDO1FBQ0QsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFBO1FBQ2IsTUFBQSxPQUFPLENBQUMsTUFBTSx1REFBSSxDQUFBO1FBQ2xCLElBQUksQ0FBQyxXQUFXLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFBO1FBQy9CLE9BQU8sSUFBSSxDQUFBO0lBQ2YsQ0FBQztJQUVELFFBQVEsQ0FDSixJQUFvQyxFQUNwQyxPQWVDO1FBRUQsTUFBTSxFQUNGLEtBQUssR0FBRyxDQUFDLEVBQ1QsS0FBSyxFQUNMLE1BQU0sRUFDTixjQUFjLEdBQUcsS0FBSyxFQUN0QixNQUFNLEdBQUcsS0FBSztRQUNkLGNBQWM7VUFDakIsR0FBRyxPQUFPLENBQUE7UUFDWCxNQUFNLEVBQUUsRUFBRSxFQUFFLEdBQUcsSUFBSSxDQUFBO1FBQ25CLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQTtRQUNYLEVBQUUsQ0FBQyxXQUFXLENBQUMsRUFBRSxDQUFDLG1CQUFtQixFQUFFLElBQUksQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUE7UUFDMUQsRUFBRSxDQUFDLFdBQVcsQ0FDVixFQUFFLENBQUMsOEJBQThCLEVBQ2pDLElBQUksQ0FBQyxPQUFPLENBQUMsa0JBQWtCLENBQ2xDLENBQUE7UUFDRCxFQUFFLENBQUMsVUFBVSxDQUNULEVBQUUsQ0FBQyxVQUFVLEVBQ2IsS0FBSyxFQUNMLEVBQUUsQ0FBQyxjQUFjLENBQUMsRUFDbEIsS0FBSyxFQUNMLE1BQU0sRUFDTixDQUFDLEVBQ0QsRUFBRSxDQUFDLE1BQU0sQ0FBQyxFQUNWLEVBQUUsQ0FBQyxhQUFhLEVBQ2hCLElBQUk7UUFDSixTQUFTO1NBQ1osQ0FBQTtRQUNELElBQUksQ0FBQyxVQUFVLENBQ1gsWUFBWSxVQUFVLENBQUMsSUFBSSxDQUFDLEtBQUssSUFBSSxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUM5RCxDQUFBO1FBQ0QsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFBO1FBQ2IsSUFBSSxDQUFDLFdBQVcsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUE7UUFDL0IsT0FBTyxJQUFJLENBQUE7SUFDZixDQUFDO0lBRUQ7Ozs7O09BS0c7SUFDSCxRQUFRLENBQUMsSUFBWSxFQUFFLE9BQW9CLEVBQUUsV0FBb0I7UUFDN0QsTUFBTSxFQUFFLEVBQUUsRUFBRSxHQUFHLElBQUksQ0FBQTtRQUNuQixFQUFFLENBQUMsYUFBYSxDQUFDLEVBQUUsQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDLENBQUE7UUFDcEMsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFBO1FBQ1gsSUFBSSxPQUFPLElBQUksV0FBVyxFQUFFLENBQUM7WUFDekIsT0FBTyxDQUFDLFNBQVMsQ0FBQyxXQUFXLEVBQUUsSUFBSSxDQUFDLENBQUE7UUFDeEMsQ0FBQztRQUNELE9BQU8sSUFBSSxDQUFBO0lBQ2YsQ0FBQztJQUVELGNBQWM7UUFDVixNQUFNLEVBQUUsRUFBRSxFQUFFLEdBQUcsSUFBSSxDQUFBO1FBQ25CLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQTtRQUNYLEVBQUUsQ0FBQyxjQUFjLENBQUMsRUFBRSxDQUFDLFVBQVUsQ0FBQyxDQUFBO1FBQ2hDLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQTtRQUNiLE9BQU8sSUFBSSxDQUFBO0lBQ2YsQ0FBQztJQUVELFNBQVMsQ0FBQyxVQUFrQztRQUN4QyxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUE7UUFDWCx5QkFBeUIsQ0FBQyxJQUFJLENBQUMsRUFBRSxFQUFFLFVBQVUsQ0FBQyxDQUFBO1FBQzlDLElBQUksQ0FBQyxNQUFNLG1DQUNKLElBQUksQ0FBQyxNQUFNLEdBQ1gsVUFBVSxDQUNoQixDQUFBO1FBQ0QsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFBO1FBQ2IsT0FBTyxJQUFJLENBQUE7SUFDZixDQUFDO0lBRUQsSUFBSSxnQkFBZ0IsQ0FBQyxLQUFhO1FBQzlCLE1BQU0sRUFBRSxFQUFFLEVBQUUsR0FBRyxJQUFJLENBQUE7UUFDbkIsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFBO1FBQ1gsRUFBRSxDQUFDLGFBQWEsQ0FBQyxFQUFFLENBQUMsVUFBVSxFQUFFLEVBQUUsQ0FBQyxrQkFBa0IsRUFBRSxLQUFLLENBQUMsQ0FBQTtRQUM3RCxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUE7SUFDakIsQ0FBQztJQUVELElBQUksZ0JBQWdCO1FBQ2hCLE1BQU0sRUFBRSxFQUFFLEVBQUUsR0FBRyxJQUFJLENBQUE7UUFDbkIsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFBO1FBQ1gsTUFBTSxLQUFLLEdBQUcsRUFBRSxDQUFDLGVBQWUsQ0FDNUIsRUFBRSxDQUFDLFVBQVUsRUFDYixFQUFFLENBQUMsa0JBQWtCLENBQ2QsQ0FBQTtRQUNYLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQTtRQUNiLE9BQU8sS0FBSyxDQUFBO0lBQ2hCLENBQUM7SUFFRCxJQUFJLGVBQWUsQ0FBQyxLQUFhO1FBQzdCLE1BQU0sRUFBRSxFQUFFLEVBQUUsR0FBRyxJQUFJLENBQUE7UUFDbkIsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFBO1FBQ1gsRUFBRSxDQUFDLGFBQWEsQ0FBQyxFQUFFLENBQUMsVUFBVSxFQUFFLEVBQUUsQ0FBQyxpQkFBaUIsRUFBRSxLQUFLLENBQUMsQ0FBQTtRQUM1RCxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUE7SUFDakIsQ0FBQztJQUVELElBQUksZUFBZTtRQUNmLE1BQU0sRUFBRSxFQUFFLEVBQUUsR0FBRyxJQUFJLENBQUE7UUFDbkIsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFBO1FBQ1gsTUFBTSxLQUFLLEdBQUcsRUFBRSxDQUFDLGVBQWUsQ0FDNUIsRUFBRSxDQUFDLFVBQVUsRUFDYixFQUFFLENBQUMsaUJBQWlCLENBQ2IsQ0FBQTtRQUNYLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQTtRQUNiLE9BQU8sS0FBSyxDQUFBO0lBQ2hCLENBQUM7SUFFRCxZQUFZLENBQUMsU0FBNEI7UUFDckMsTUFBTSxFQUFFLEVBQUUsRUFBRSxHQUFHLElBQUksQ0FBQTtRQUNuQixJQUFJLENBQUMsSUFBSSxFQUFFLENBQUE7UUFDWCxNQUFNLEtBQUssR0FBRyxFQUFFLENBQUMsZUFBZSxDQUFDLEVBQUUsQ0FBQyxVQUFVLEVBQUUsRUFBRSxDQUFDLFNBQVMsQ0FBQyxDQUduRCxDQUFBO1FBQ1YsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFBO1FBQ2IsT0FBTyxLQUFLLENBQUE7SUFDaEIsQ0FBQztJQUVELEtBQUssQ0FBQyxLQUFjOztRQUNoQixPQUFPLENBQUMsR0FBRyxDQUNQLE1BQUEsS0FBSyxhQUFMLEtBQUssY0FBTCxLQUFLLEdBQUksSUFBSSxDQUFDLElBQUksbUNBQUksY0FBYyxFQUNwQyxJQUFJLEVBQ0osSUFBSSxDQUFDLEtBQUssRUFDVixHQUFHLEVBQ0gsSUFBSSxDQUFDLE1BQU0sQ0FDZCxDQUFBO1FBQ0QsTUFBTSxVQUFVLEdBQXdCO1lBQ3BDLG9CQUFvQjtZQUNwQixvQkFBb0I7WUFDcEIsZ0JBQWdCO1lBQ2hCLGdCQUFnQjtZQUNoQixnQkFBZ0I7WUFDaEIsbUJBQW1CO1lBQ25CLGlCQUFpQjtZQUNqQixpQkFBaUI7WUFDakIsb0JBQW9CO1lBQ3BCLHNCQUFzQjtZQUN0QixzQkFBc0I7WUFDdEIsMEJBQTBCO1lBQzFCLDBCQUEwQjtTQUM3QixDQUFBO1FBQ0QsS0FBSyxNQUFNLElBQUksSUFBSSxVQUFVLEVBQUUsQ0FBQztZQUM1QixNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxDQUFBO1lBQ3JDLE9BQU8sQ0FBQyxHQUFHLENBQ1AsR0FBRyxFQUNILElBQUksRUFDSixHQUFHLEVBQ0gsS0FBSyxFQUNMLE9BQU8sS0FBSyxLQUFLLFFBQVEsQ0FBQyxDQUFDLENBQUMsSUFBSSxXQUFXLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUM5RCxDQUFBO1FBQ0wsQ0FBQztJQUNMLENBQUM7O0FBM1djLG9CQUFPLEdBQUcsQ0FBQyxBQUFKLENBQUk7QUE4VzlCLE1BQU0sa0JBQWtCLEdBQXVEO0lBQzNFO1FBQ0ksS0FBSztRQUNMLElBQUksR0FBRyxDQUFDO1lBQ0osS0FBSztZQUNMLE1BQU07WUFDTixRQUFRO1lBQ1IsT0FBTztZQUNQLFlBQVk7WUFDWixRQUFRO1lBQ1IsZ0JBQWdCO1lBQ2hCLFNBQVM7WUFDVCxRQUFRO1lBQ1IsZ0JBQWdCO1lBQ2hCLFNBQVM7WUFDVCxRQUFRO1lBQ1IsUUFBUTtZQUNSLGdCQUFnQjtZQUNoQixTQUFTO1NBQ1osQ0FBQztLQUNMO0lBQ0Q7UUFDSSxNQUFNO1FBQ04sSUFBSSxHQUFHLENBQUM7WUFDSixNQUFNO1lBQ04sT0FBTztZQUNQLFNBQVM7WUFDVCxPQUFPO1lBQ1AsY0FBYztZQUNkLGFBQWE7WUFDYixPQUFPO1lBQ1AsU0FBUztZQUNULFVBQVU7WUFDVixTQUFTO1lBQ1QsU0FBUztZQUNULFNBQVM7WUFDVCxTQUFTO1NBQ1osQ0FBQztLQUNMO0lBQ0QsQ0FBQyxJQUFJLEVBQUUsSUFBSSxHQUFHLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO0lBQ3hCLENBQUMsS0FBSyxFQUFFLElBQUksR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztDQUMzQixDQUFBO0FBRUQsU0FBUyx5QkFBeUIsQ0FDOUIsY0FBc0I7SUFFdEIsS0FBSyxNQUFNLENBQUMsTUFBTSxFQUFFLGVBQWUsQ0FBQyxJQUFJLGtCQUFrQixFQUFFLENBQUM7UUFDekQsSUFBSSxlQUFlLENBQUMsR0FBRyxDQUFDLGNBQWMsQ0FBQztZQUFFLE9BQU8sTUFBTSxDQUFBO0lBQzFELENBQUM7SUFDRCxNQUFNLElBQUksS0FBSyxDQUNYLHFEQUFxRCxjQUFjLDZCQUE2QixDQUNuRyxDQUFBO0FBQ0wsQ0FBQztBQUVELFNBQVMsVUFBVSxDQUNmLElBQXNFO0lBRXRFLElBQUksSUFBSSxDQUFDLE1BQU0sR0FBRyxFQUFFLEVBQUUsQ0FBQztRQUNuQixPQUFPLElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxXQUNuQyxJQUFJLENBQUMsTUFDVCxZQUFZLENBQUE7SUFDaEIsQ0FBQztJQUNELE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsQ0FBQTtBQUMvQixDQUFDIn0=
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { TgdEvent } from "../event";
|
|
2
|
+
export interface TgdInputKeyboard {
|
|
3
|
+
readonly eventKeyPress: TgdEvent<KeyboardEvent>;
|
|
4
|
+
isDown(...keys: string[]): boolean;
|
|
5
|
+
isUp(...keys: string[]): boolean;
|
|
6
|
+
hasClicked(key: string): boolean;
|
|
7
|
+
}
|
|
8
|
+
//# sourceMappingURL=input-keyboard.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"input-keyboard.d.ts","sourceRoot":"","sources":["../../src/types/input-keyboard.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,UAAU,CAAA;AAEnC,MAAM,WAAW,gBAAgB;IAC7B,QAAQ,CAAC,aAAa,EAAE,QAAQ,CAAC,aAAa,CAAC,CAAA;IAC/C,MAAM,CAAC,GAAG,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAA;IAClC,IAAI,CAAC,GAAG,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAA;IAChC,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAA;CACnC"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
export declare function tgdCalcClamp(value: number, min: number, max: number): number;
|
|
2
|
+
export declare function tgdCalcMapRange(value: number, fromMin: number, fromMax: number, toMin: number, toMax: number, clamp?: boolean): number;
|
|
3
|
+
export declare function tgdCalcMix(valueAtT0: number, valueAtT1: number, t: number): number;
|
|
4
|
+
export declare function tgdCalcDegToRad(deg: number): number;
|
|
5
|
+
export declare function tgdCalcRadToDeg(rad: number): number;
|
|
6
|
+
export declare function tgdCalcSmoothStep(boundFor0: number, boundFor1: number, value: number): number;
|
|
7
|
+
export declare function tgdCalcRandom(min?: number, max?: number): number;
|
|
8
|
+
/**
|
|
9
|
+
* Force `value` to be between `min` and `max` by shifting it
|
|
10
|
+
* by `max - min` as many times as needed.
|
|
11
|
+
* @example
|
|
12
|
+
* ```ts
|
|
13
|
+
* tgdCalcModulo(3, 10, 20) === 13
|
|
14
|
+
* tgdCalcModulo(13, 10, 20) === 13
|
|
15
|
+
* tgdCalcModulo(23, 10, 20) === 13
|
|
16
|
+
* ```
|
|
17
|
+
*/
|
|
18
|
+
export declare function tgdCalcModulo(value: number, min: number, max: number): number;
|
|
19
|
+
//# sourceMappingURL=math.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"math.d.ts","sourceRoot":"","sources":["../../src/utils/math.ts"],"names":[],"mappings":"AAAA,wBAAgB,YAAY,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,MAAM,CAI5E;AAED,wBAAgB,eAAe,CAC7B,KAAK,EAAE,MAAM,EACb,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,MAAM,EACf,KAAK,EAAE,MAAM,EACb,KAAK,EAAE,MAAM,EACb,KAAK,UAAQ,GACZ,MAAM,CAMR;AAED,wBAAgB,UAAU,CACxB,SAAS,EAAE,MAAM,EACjB,SAAS,EAAE,MAAM,EACjB,CAAC,EAAE,MAAM,GACR,MAAM,CAER;AAKD,wBAAgB,eAAe,CAAC,GAAG,EAAE,MAAM,UAE1C;AAED,wBAAgB,eAAe,CAAC,GAAG,EAAE,MAAM,UAE1C;AAED,wBAAgB,iBAAiB,CAC/B,SAAS,EAAE,MAAM,EACjB,SAAS,EAAE,MAAM,EACjB,KAAK,EAAE,MAAM,GACZ,MAAM,CAGR;AAED,wBAAgB,aAAa,CAAC,GAAG,SAAI,EAAE,GAAG,CAAC,EAAE,MAAM,UAGlD;AAED;;;;;;;;;GASG;AACH,wBAAgB,aAAa,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,UAepE"}
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
export function tgdCalcClamp(value, min, max) {
|
|
2
|
+
if (value < min)
|
|
3
|
+
return min;
|
|
4
|
+
if (value > max)
|
|
5
|
+
return max;
|
|
6
|
+
return value;
|
|
7
|
+
}
|
|
8
|
+
export function tgdCalcMapRange(value, fromMin, fromMax, toMin, toMax, clamp = false) {
|
|
9
|
+
const v = clamp ? tgdCalcClamp(value, fromMin, fromMax) : value;
|
|
10
|
+
if (fromMin === fromMax)
|
|
11
|
+
return v;
|
|
12
|
+
const alpha = (v - fromMin) / (fromMax - fromMin);
|
|
13
|
+
return toMin + alpha * (toMax - toMin);
|
|
14
|
+
}
|
|
15
|
+
export function tgdCalcMix(valueAtT0, valueAtT1, t) {
|
|
16
|
+
return (1 - t) * valueAtT0 + t * valueAtT1;
|
|
17
|
+
}
|
|
18
|
+
const DEG_PER_RAD = 180 / Math.PI;
|
|
19
|
+
const RAD_PER_DEG = Math.PI / 180;
|
|
20
|
+
export function tgdCalcDegToRad(deg) {
|
|
21
|
+
return deg * RAD_PER_DEG;
|
|
22
|
+
}
|
|
23
|
+
export function tgdCalcRadToDeg(rad) {
|
|
24
|
+
return rad * DEG_PER_RAD;
|
|
25
|
+
}
|
|
26
|
+
export function tgdCalcSmoothStep(boundFor0, boundFor1, value) {
|
|
27
|
+
const t = tgdCalcClamp((value - boundFor0) / (boundFor1 - boundFor0), 0, 1);
|
|
28
|
+
return t * t * (3 - 2 * t);
|
|
29
|
+
}
|
|
30
|
+
export function tgdCalcRandom(min = 1, max) {
|
|
31
|
+
if (typeof max !== "number")
|
|
32
|
+
return Math.random() * min;
|
|
33
|
+
return min + (max - min) * Math.random();
|
|
34
|
+
}
|
|
35
|
+
/**
|
|
36
|
+
* Force `value` to be between `min` and `max` by shifting it
|
|
37
|
+
* by `max - min` as many times as needed.
|
|
38
|
+
* @example
|
|
39
|
+
* ```ts
|
|
40
|
+
* tgdCalcModulo(3, 10, 20) === 13
|
|
41
|
+
* tgdCalcModulo(13, 10, 20) === 13
|
|
42
|
+
* tgdCalcModulo(23, 10, 20) === 13
|
|
43
|
+
* ```
|
|
44
|
+
*/
|
|
45
|
+
export function tgdCalcModulo(value, min, max) {
|
|
46
|
+
const range = max - min;
|
|
47
|
+
if (range === 0)
|
|
48
|
+
return min;
|
|
49
|
+
if (value < min) {
|
|
50
|
+
const n = Math.ceil((min - value) / range);
|
|
51
|
+
return value + n * range;
|
|
52
|
+
}
|
|
53
|
+
if (value > max) {
|
|
54
|
+
const n = Math.ceil((value - max) / range);
|
|
55
|
+
return value - n * range;
|
|
56
|
+
}
|
|
57
|
+
return value;
|
|
58
|
+
}
|
|
59
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWF0aC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91dGlscy9tYXRoLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE1BQU0sVUFBVSxZQUFZLENBQUMsS0FBYSxFQUFFLEdBQVcsRUFBRSxHQUFXO0lBQ2xFLElBQUksS0FBSyxHQUFHLEdBQUc7UUFBRSxPQUFPLEdBQUcsQ0FBQztJQUM1QixJQUFJLEtBQUssR0FBRyxHQUFHO1FBQUUsT0FBTyxHQUFHLENBQUM7SUFDNUIsT0FBTyxLQUFLLENBQUM7QUFDZixDQUFDO0FBRUQsTUFBTSxVQUFVLGVBQWUsQ0FDN0IsS0FBYSxFQUNiLE9BQWUsRUFDZixPQUFlLEVBQ2YsS0FBYSxFQUNiLEtBQWEsRUFDYixLQUFLLEdBQUcsS0FBSztJQUViLE1BQU0sQ0FBQyxHQUFHLEtBQUssQ0FBQyxDQUFDLENBQUMsWUFBWSxDQUFDLEtBQUssRUFBRSxPQUFPLEVBQUUsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQztJQUNoRSxJQUFJLE9BQU8sS0FBSyxPQUFPO1FBQUUsT0FBTyxDQUFDLENBQUM7SUFFbEMsTUFBTSxLQUFLLEdBQUcsQ0FBQyxDQUFDLEdBQUcsT0FBTyxDQUFDLEdBQUcsQ0FBQyxPQUFPLEdBQUcsT0FBTyxDQUFDLENBQUM7SUFDbEQsT0FBTyxLQUFLLEdBQUcsS0FBSyxHQUFHLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQyxDQUFDO0FBQ3pDLENBQUM7QUFFRCxNQUFNLFVBQVUsVUFBVSxDQUN4QixTQUFpQixFQUNqQixTQUFpQixFQUNqQixDQUFTO0lBRVQsT0FBTyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxTQUFTLEdBQUcsQ0FBQyxHQUFHLFNBQVMsQ0FBQztBQUM3QyxDQUFDO0FBRUQsTUFBTSxXQUFXLEdBQUcsR0FBRyxHQUFHLElBQUksQ0FBQyxFQUFFLENBQUM7QUFDbEMsTUFBTSxXQUFXLEdBQUcsSUFBSSxDQUFDLEVBQUUsR0FBRyxHQUFHLENBQUM7QUFFbEMsTUFBTSxVQUFVLGVBQWUsQ0FBQyxHQUFXO0lBQ3pDLE9BQU8sR0FBRyxHQUFHLFdBQVcsQ0FBQztBQUMzQixDQUFDO0FBRUQsTUFBTSxVQUFVLGVBQWUsQ0FBQyxHQUFXO0lBQ3pDLE9BQU8sR0FBRyxHQUFHLFdBQVcsQ0FBQztBQUMzQixDQUFDO0FBRUQsTUFBTSxVQUFVLGlCQUFpQixDQUMvQixTQUFpQixFQUNqQixTQUFpQixFQUNqQixLQUFhO0lBRWIsTUFBTSxDQUFDLEdBQUcsWUFBWSxDQUFDLENBQUMsS0FBSyxHQUFHLFNBQVMsQ0FBQyxHQUFHLENBQUMsU0FBUyxHQUFHLFNBQVMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUM1RSxPQUFPLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO0FBQzdCLENBQUM7QUFFRCxNQUFNLFVBQVUsYUFBYSxDQUFDLEdBQUcsR0FBRyxDQUFDLEVBQUUsR0FBWTtJQUNqRCxJQUFJLE9BQU8sR0FBRyxLQUFLLFFBQVE7UUFBRSxPQUFPLElBQUksQ0FBQyxNQUFNLEVBQUUsR0FBRyxHQUFHLENBQUM7SUFDeEQsT0FBTyxHQUFHLEdBQUcsQ0FBQyxHQUFHLEdBQUcsR0FBRyxDQUFDLEdBQUcsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDO0FBQzNDLENBQUM7QUFFRDs7Ozs7Ozs7O0dBU0c7QUFDSCxNQUFNLFVBQVUsYUFBYSxDQUFDLEtBQWEsRUFBRSxHQUFXLEVBQUUsR0FBVztJQUNuRSxNQUFNLEtBQUssR0FBRyxHQUFHLEdBQUcsR0FBRyxDQUFDO0lBQ3hCLElBQUksS0FBSyxLQUFLLENBQUM7UUFBRSxPQUFPLEdBQUcsQ0FBQztJQUU1QixJQUFJLEtBQUssR0FBRyxHQUFHLEVBQUUsQ0FBQztRQUNoQixNQUFNLENBQUMsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsR0FBRyxHQUFHLEtBQUssQ0FBQyxHQUFHLEtBQUssQ0FBQyxDQUFDO1FBQzNDLE9BQU8sS0FBSyxHQUFHLENBQUMsR0FBRyxLQUFLLENBQUM7SUFDM0IsQ0FBQztJQUVELElBQUksS0FBSyxHQUFHLEdBQUcsRUFBRSxDQUFDO1FBQ2hCLE1BQU0sQ0FBQyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxLQUFLLEdBQUcsR0FBRyxDQUFDLEdBQUcsS0FBSyxDQUFDLENBQUM7UUFDM0MsT0FBTyxLQUFLLEdBQUcsQ0FBQyxHQUFHLEtBQUssQ0FBQztJQUMzQixDQUFDO0lBRUQsT0FBTyxLQUFLLENBQUM7QUFDZixDQUFDIn0=
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"math.test.d.ts","sourceRoot":"","sources":["../../src/utils/math.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import { tgdCalcModulo, tgdCalcRandom } from "./math.js";
|
|
2
|
+
describe(`tgdCalc*()`, () => {
|
|
3
|
+
describe(`tgdCalcModulo()`, () => {
|
|
4
|
+
const cases = [
|
|
5
|
+
[-3, 10, 20, 17],
|
|
6
|
+
[3, 10, 20, 13],
|
|
7
|
+
[13, 10, 20, 13],
|
|
8
|
+
[13, 20, 10, 13],
|
|
9
|
+
[23, 10, 20, 13],
|
|
10
|
+
[3.14, 1, 1.5, 1.14],
|
|
11
|
+
[3.64, 1, 1.5, 1.14],
|
|
12
|
+
[tgdCalcRandom(-100, 100), 1.618, 1.618, 1.618],
|
|
13
|
+
[7, 20, 10, 17],
|
|
14
|
+
];
|
|
15
|
+
for (const [value, min, max, expected] of cases) {
|
|
16
|
+
it(`should have (${value}, ${min}, ${max}) === ${expected}`, () => {
|
|
17
|
+
expect(tgdCalcModulo(value, min, max)).toBeCloseTo(expected, 6);
|
|
18
|
+
});
|
|
19
|
+
}
|
|
20
|
+
});
|
|
21
|
+
});
|
|
22
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWF0aC50ZXN0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3V0aWxzL21hdGgudGVzdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsYUFBYSxFQUFFLGFBQWEsRUFBRSxNQUFNLFFBQVEsQ0FBQTtBQUVyRCxRQUFRLENBQUMsWUFBWSxFQUFFLEdBQUcsRUFBRTtJQUN4QixRQUFRLENBQUMsaUJBQWlCLEVBQUUsR0FBRyxFQUFFO1FBQzdCLE1BQU0sS0FBSyxHQUVQO1lBQ0EsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQztZQUNoQixDQUFDLENBQUMsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQztZQUNmLENBQUMsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDO1lBQ2hCLENBQUMsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDO1lBQ2hCLENBQUMsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDO1lBQ2hCLENBQUMsSUFBSSxFQUFFLENBQUMsRUFBRSxHQUFHLEVBQUUsSUFBSSxDQUFDO1lBQ3BCLENBQUMsSUFBSSxFQUFFLENBQUMsRUFBRSxHQUFHLEVBQUUsSUFBSSxDQUFDO1lBQ3BCLENBQUMsYUFBYSxDQUFDLENBQUMsR0FBRyxFQUFFLEdBQUcsQ0FBQyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxDQUFDO1lBQy9DLENBQUMsQ0FBQyxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDO1NBQ2xCLENBQUE7UUFDRCxLQUFLLE1BQU0sQ0FBQyxLQUFLLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxRQUFRLENBQUMsSUFBSSxLQUFLLEVBQUUsQ0FBQztZQUM5QyxFQUFFLENBQUMsZ0JBQWdCLEtBQUssS0FBSyxHQUFHLEtBQUssR0FBRyxTQUFTLFFBQVEsRUFBRSxFQUFFLEdBQUcsRUFBRTtnQkFDOUQsTUFBTSxDQUFDLGFBQWEsQ0FBQyxLQUFLLEVBQUUsR0FBRyxFQUFFLEdBQUcsQ0FBQyxDQUFDLENBQUMsV0FBVyxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUMsQ0FBQTtZQUNuRSxDQUFDLENBQUMsQ0FBQTtRQUNOLENBQUM7SUFDTCxDQUFDLENBQUMsQ0FBQTtBQUNOLENBQUMsQ0FBQyxDQUFBIn0=
|