@lemoncat7/dsh-partner 1.10.5 → 1.11.1
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/README.md +50 -1
- package/docs/THIRD_PARTY_LICENSES.md +36 -1
- package/docs/architecture.md +26 -1
- package/lib/api/features/attachments-api.d.ts +6 -0
- package/lib/api/features/attachments-api.d.ts.map +1 -0
- package/lib/api/features/attachments-api.js +20 -0
- package/lib/api/features/attachments-api.js.map +1 -0
- package/lib/api/features/workspace-api.js +2 -2
- package/lib/api/features/workspace-api.js.map +1 -1
- package/lib/api.d.ts +2 -0
- package/lib/api.d.ts.map +1 -1
- package/lib/api.js +3 -0
- package/lib/api.js.map +1 -1
- package/lib/attachments/service.d.ts +35 -0
- package/lib/attachments/service.d.ts.map +1 -0
- package/lib/attachments/service.js +122 -0
- package/lib/attachments/service.js.map +1 -0
- package/lib/attachments/tool.d.ts +8 -0
- package/lib/attachments/tool.d.ts.map +1 -0
- package/lib/attachments/tool.js +59 -0
- package/lib/attachments/tool.js.map +1 -0
- package/lib/channels/manager.d.ts +2 -0
- package/lib/channels/manager.d.ts.map +1 -1
- package/lib/channels/manager.js +12 -0
- package/lib/channels/manager.js.map +1 -1
- package/lib/channels/outbound-media.d.ts +1 -1
- package/lib/channels/outbound-media.d.ts.map +1 -1
- package/lib/channels/outbound-media.js +6 -10
- package/lib/channels/outbound-media.js.map +1 -1
- package/lib/client-api.d.ts +8 -0
- package/lib/client-api.d.ts.map +1 -1
- package/lib/client-api.js.map +1 -1
- package/lib/client.js +1126 -932
- package/lib/client.js.map +4 -4
- package/lib/collaboration/composition.d.ts +3 -1
- package/lib/collaboration/composition.d.ts.map +1 -1
- package/lib/collaboration/composition.js +9 -3
- package/lib/collaboration/composition.js.map +1 -1
- package/lib/collaboration/domain.d.ts +2 -0
- package/lib/collaboration/domain.d.ts.map +1 -1
- package/lib/collaboration/domain.js.map +1 -1
- package/lib/collaboration/service.d.ts +1 -0
- package/lib/collaboration/service.d.ts.map +1 -1
- package/lib/collaboration/service.js +15 -4
- package/lib/collaboration/service.js.map +1 -1
- package/lib/domain.d.ts +1 -0
- package/lib/domain.d.ts.map +1 -1
- package/lib/domain.js.map +1 -1
- package/lib/execution/agent-support.d.ts.map +1 -1
- package/lib/execution/agent-support.js +2 -1
- package/lib/execution/agent-support.js.map +1 -1
- package/lib/index.d.ts.map +1 -1
- package/lib/index.js +6 -1
- package/lib/index.js.map +1 -1
- package/lib/pendant/card-image.d.ts +13 -3
- package/lib/pendant/card-image.d.ts.map +1 -1
- package/lib/pendant/card-image.js +40 -14
- package/lib/pendant/card-image.js.map +1 -1
- package/lib/pendant/image-coating.d.ts +8 -0
- package/lib/pendant/image-coating.d.ts.map +1 -0
- package/lib/pendant/image-coating.js +39 -0
- package/lib/pendant/image-coating.js.map +1 -0
- package/lib/pendant/motion-glare.d.ts +33 -0
- package/lib/pendant/motion-glare.d.ts.map +1 -0
- package/lib/pendant/motion-glare.js +56 -0
- package/lib/pendant/motion-glare.js.map +1 -0
- package/lib/pendant/physics.d.ts +1 -0
- package/lib/pendant/physics.d.ts.map +1 -1
- package/lib/pendant/physics.js +24 -2
- package/lib/pendant/physics.js.map +1 -1
- package/lib/pendant/renderer.d.ts.map +1 -1
- package/lib/pendant/renderer.js +46 -13
- package/lib/pendant/renderer.js.map +1 -1
- package/lib/pendant/settings-panel.d.ts.map +1 -1
- package/lib/pendant/settings-panel.js +6 -4
- package/lib/pendant/settings-panel.js.map +1 -1
- package/lib/pendant/settings.d.ts +7 -0
- package/lib/pendant/settings.d.ts.map +1 -1
- package/lib/pendant/settings.js +10 -3
- package/lib/pendant/settings.js.map +1 -1
- package/lib/pendant/strap-preview.d.ts +3 -1
- package/lib/pendant/strap-preview.d.ts.map +1 -1
- package/lib/pendant/strap-preview.js +6 -3
- package/lib/pendant/strap-preview.js.map +1 -1
- package/lib/pendant/strap-texture.d.ts +5 -0
- package/lib/pendant/strap-texture.d.ts.map +1 -0
- package/lib/pendant/strap-texture.js +9 -0
- package/lib/pendant/strap-texture.js.map +1 -0
- package/lib/pendant/strap.d.ts.map +1 -1
- package/lib/pendant/strap.js +39 -2
- package/lib/pendant/strap.js.map +1 -1
- package/lib/pendant/surface.d.ts +7 -7
- package/lib/pendant/surface.d.ts.map +1 -1
- package/lib/pendant/surface.js +19 -9
- package/lib/pendant/surface.js.map +1 -1
- package/lib/pendant-renderer.js +201 -170
- package/lib/requirements/draft.d.ts +3 -0
- package/lib/requirements/draft.d.ts.map +1 -0
- package/lib/requirements/draft.js +7 -0
- package/lib/requirements/draft.js.map +1 -0
- package/lib/requirements/plan-schema.d.ts +93 -0
- package/lib/requirements/plan-schema.d.ts.map +1 -0
- package/lib/requirements/plan-schema.js +16 -0
- package/lib/requirements/plan-schema.js.map +1 -0
- package/lib/requirements/plan.d.ts +30 -0
- package/lib/requirements/plan.d.ts.map +1 -0
- package/lib/requirements/plan.js +134 -0
- package/lib/requirements/plan.js.map +1 -0
- package/lib/requirements/service.d.ts +2 -1
- package/lib/requirements/service.d.ts.map +1 -1
- package/lib/requirements/service.js +4 -6
- package/lib/requirements/service.js.map +1 -1
- package/lib/requirements/tool.d.ts +1 -1
- package/lib/requirements/tool.d.ts.map +1 -1
- package/lib/requirements/tool.js +24 -3
- package/lib/requirements/tool.js.map +1 -1
- package/lib/skills/task-planning.d.ts +2 -2
- package/lib/skills/task-planning.d.ts.map +1 -1
- package/lib/skills/task-planning.js +10 -1
- package/lib/skills/task-planning.js.map +1 -1
- package/lib/store.js +2 -0
- package/lib/store.js.map +1 -1
- package/lib/tasks/context.d.ts.map +1 -1
- package/lib/tasks/context.js +9 -1
- package/lib/tasks/context.js.map +1 -1
- package/lib/tasks/contract.d.ts +63 -0
- package/lib/tasks/contract.d.ts.map +1 -0
- package/lib/tasks/contract.js +55 -0
- package/lib/tasks/contract.js.map +1 -0
- package/lib/tasks/domain.d.ts +6 -0
- package/lib/tasks/domain.d.ts.map +1 -1
- package/lib/tasks/draft.d.ts +7 -0
- package/lib/tasks/draft.d.ts.map +1 -0
- package/lib/tasks/draft.js +54 -0
- package/lib/tasks/draft.js.map +1 -0
- package/lib/tasks/result.d.ts +2 -0
- package/lib/tasks/result.d.ts.map +1 -1
- package/lib/tasks/result.js +17 -3
- package/lib/tasks/result.js.map +1 -1
- package/lib/tasks/scheduling.d.ts +15 -0
- package/lib/tasks/scheduling.d.ts.map +1 -0
- package/lib/tasks/scheduling.js +46 -0
- package/lib/tasks/scheduling.js.map +1 -0
- package/lib/tasks/service.d.ts +46 -3
- package/lib/tasks/service.d.ts.map +1 -1
- package/lib/tasks/service.js +55 -58
- package/lib/tasks/service.js.map +1 -1
- package/lib/ui/requirement-tasks-panel.d.ts.map +1 -1
- package/lib/ui/requirement-tasks-panel.js +18 -9
- package/lib/ui/requirement-tasks-panel.js.map +1 -1
- package/lib/ui/task-contract-panel.d.ts +10 -0
- package/lib/ui/task-contract-panel.d.ts.map +1 -0
- package/lib/ui/task-contract-panel.js +16 -0
- package/lib/ui/task-contract-panel.js.map +1 -0
- package/package.json +1 -1
package/lib/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,6 +1,16 @@
|
|
|
1
|
+
import { type CardImageFit } from './settings.js';
|
|
2
|
+
export declare const CARD_IMAGE_BACKGROUND = "#253235";
|
|
3
|
+
/** Keep aspect ratio in both modes; only cover may extend beyond the face. */
|
|
4
|
+
export declare function cardImageRect(width: number, height: number, targetWidth: number, targetHeight: number, fit: CardImageFit): {
|
|
5
|
+
x: number;
|
|
6
|
+
y: number;
|
|
7
|
+
width: number;
|
|
8
|
+
height: number;
|
|
9
|
+
};
|
|
10
|
+
export declare function drawCardImage(canvas: HTMLCanvasElement, image: HTMLImageElement, fit: CardImageFit): void;
|
|
1
11
|
export declare function loadCardImage(source: string): Promise<HTMLImageElement>;
|
|
2
|
-
/**
|
|
3
|
-
* remote URLs, SVG execution, server upload or full-size GPU textures.
|
|
12
|
+
/** Persist a bounded source with its aspect ratio intact, so fitting remains
|
|
13
|
+
* reversible. No remote URLs, SVG execution, server upload or full-size GPU textures.
|
|
4
14
|
*/
|
|
5
|
-
export declare function prepareCardImage(file: File): Promise<string>;
|
|
15
|
+
export declare function prepareCardImage(file: File, maxDimension?: number): Promise<string>;
|
|
6
16
|
//# sourceMappingURL=card-image.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"card-image.d.ts","sourceRoot":"","sources":["../../src/pendant/card-image.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"card-image.d.ts","sourceRoot":"","sources":["../../src/pendant/card-image.ts"],"names":[],"mappings":"AAAA,OAAO,EAAyB,KAAK,YAAY,EAAE,MAAM,eAAe,CAAA;AAExE,eAAO,MAAM,qBAAqB,YAAY,CAAA;AAE9C,8EAA8E;AAC9E,wBAAgB,aAAa,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,EAAE,GAAG,EAAE,YAAY;;;;;EAIxH;AAED,wBAAgB,aAAa,CAAC,MAAM,EAAE,iBAAiB,EAAE,KAAK,EAAE,gBAAgB,EAAE,GAAG,EAAE,YAAY,GAAG,IAAI,CASzG;AAED,wBAAgB,aAAa,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,gBAAgB,CAAC,CAOvE;AAED;;GAEG;AACH,wBAAsB,gBAAgB,CAAC,IAAI,EAAE,IAAI,EAAE,YAAY,SAAO,GAAG,OAAO,CAAC,MAAM,CAAC,CA0BvF"}
|
|
@@ -1,4 +1,23 @@
|
|
|
1
1
|
import { MAX_CARD_IMAGE_LENGTH } from './settings.js';
|
|
2
|
+
export const CARD_IMAGE_BACKGROUND = '#253235';
|
|
3
|
+
/** Keep aspect ratio in both modes; only cover may extend beyond the face. */
|
|
4
|
+
export function cardImageRect(width, height, targetWidth, targetHeight, fit) {
|
|
5
|
+
if (![width, height, targetWidth, targetHeight].every(value => Number.isFinite(value) && value > 0))
|
|
6
|
+
throw new Error('图片尺寸无效。');
|
|
7
|
+
const scale = (fit === 'cover' ? Math.max : Math.min)(targetWidth / width, targetHeight / height);
|
|
8
|
+
return { x: (targetWidth - width * scale) / 2, y: (targetHeight - height * scale) / 2, width: width * scale, height: height * scale };
|
|
9
|
+
}
|
|
10
|
+
export function drawCardImage(canvas, image, fit) {
|
|
11
|
+
const context = canvas.getContext('2d');
|
|
12
|
+
if (!context)
|
|
13
|
+
throw new Error('当前浏览器无法处理图片。');
|
|
14
|
+
const rect = cardImageRect(image.naturalWidth, image.naturalHeight, canvas.width, canvas.height, fit);
|
|
15
|
+
context.fillStyle = CARD_IMAGE_BACKGROUND;
|
|
16
|
+
context.imageSmoothingEnabled = true;
|
|
17
|
+
context.imageSmoothingQuality = 'high';
|
|
18
|
+
context.fillRect(0, 0, canvas.width, canvas.height);
|
|
19
|
+
context.drawImage(image, rect.x, rect.y, rect.width, rect.height);
|
|
20
|
+
}
|
|
2
21
|
export function loadCardImage(source) {
|
|
3
22
|
return new Promise((resolve, reject) => {
|
|
4
23
|
const image = new Image();
|
|
@@ -7,10 +26,10 @@ export function loadCardImage(source) {
|
|
|
7
26
|
image.src = source;
|
|
8
27
|
});
|
|
9
28
|
}
|
|
10
|
-
/**
|
|
11
|
-
* remote URLs, SVG execution, server upload or full-size GPU textures.
|
|
29
|
+
/** Persist a bounded source with its aspect ratio intact, so fitting remains
|
|
30
|
+
* reversible. No remote URLs, SVG execution, server upload or full-size GPU textures.
|
|
12
31
|
*/
|
|
13
|
-
export async function prepareCardImage(file) {
|
|
32
|
+
export async function prepareCardImage(file, maxDimension = 1536) {
|
|
14
33
|
if (!['image/png', 'image/jpeg', 'image/webp'].includes(file.type))
|
|
15
34
|
throw new Error('请选择 PNG、JPEG 或 WebP 图片。');
|
|
16
35
|
if (file.size > 5 * 1024 * 1024)
|
|
@@ -20,21 +39,28 @@ export async function prepareCardImage(file) {
|
|
|
20
39
|
const image = await loadCardImage(url);
|
|
21
40
|
if (!image.naturalWidth || !image.naturalHeight || image.naturalWidth * image.naturalHeight > 25_000_000)
|
|
22
41
|
throw new Error('图片分辨率过大,请缩小至 2500 万像素以内。');
|
|
42
|
+
const scale = Math.min(1, maxDimension / Math.max(image.naturalWidth, image.naturalHeight));
|
|
23
43
|
const canvas = document.createElement('canvas');
|
|
24
|
-
canvas.width =
|
|
25
|
-
canvas.height =
|
|
44
|
+
canvas.width = Math.max(1, Math.round(image.naturalWidth * scale));
|
|
45
|
+
canvas.height = Math.max(1, Math.round(image.naturalHeight * scale));
|
|
26
46
|
const context = canvas.getContext('2d');
|
|
27
47
|
if (!context)
|
|
28
48
|
throw new Error('当前浏览器无法处理图片。');
|
|
29
|
-
context.
|
|
30
|
-
context.
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
49
|
+
context.imageSmoothingQuality = 'high';
|
|
50
|
+
context.fillStyle = CARD_IMAGE_BACKGROUND;
|
|
51
|
+
context.fillRect(0, 0, canvas.width, canvas.height);
|
|
52
|
+
context.drawImage(image, 0, 0, canvas.width, canvas.height);
|
|
53
|
+
// Prefer lossless for text/illustrations; bounded high-quality compression
|
|
54
|
+
// for photos avoids silently consuming the browser's storage quota.
|
|
55
|
+
const png = canvas.toDataURL('image/png');
|
|
56
|
+
if (png.length <= MAX_CARD_IMAGE_LENGTH)
|
|
57
|
+
return png;
|
|
58
|
+
for (const quality of [.94, .88, .8]) {
|
|
59
|
+
const result = canvas.toDataURL('image/webp', quality);
|
|
60
|
+
if (result.length <= MAX_CARD_IMAGE_LENGTH)
|
|
61
|
+
return result;
|
|
62
|
+
}
|
|
63
|
+
throw new Error('图片压缩后仍然过大,请缩小图片或使用更简洁的图案。');
|
|
38
64
|
}
|
|
39
65
|
finally {
|
|
40
66
|
URL.revokeObjectURL(url);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"card-image.js","sourceRoot":"","sources":["../../src/pendant/card-image.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,qBAAqB,
|
|
1
|
+
{"version":3,"file":"card-image.js","sourceRoot":"","sources":["../../src/pendant/card-image.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import type { MeshPhysicalMaterial } from 'three';
|
|
2
|
+
import { type MotionGlareUniforms } from './motion-glare.js';
|
|
3
|
+
/** Two logical layers in one draw: unlit source image + native physical gloss.
|
|
4
|
+
* Only reflection passes through exposure/tone mapping. No image recolouring,
|
|
5
|
+
* extra light sources, textures or render targets.
|
|
6
|
+
*/
|
|
7
|
+
export declare function separateImageCoating(material: MeshPhysicalMaterial, glare?: MotionGlareUniforms): void;
|
|
8
|
+
//# sourceMappingURL=image-coating.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"image-coating.d.ts","sourceRoot":"","sources":["../../src/pendant/image-coating.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,OAAO,CAAA;AACjD,OAAO,EAAyB,KAAK,mBAAmB,EAAE,MAAM,mBAAmB,CAAA;AAEnF;;;GAGG;AACH,wBAAgB,oBAAoB,CAAC,QAAQ,EAAE,oBAAoB,EAAE,KAAK,CAAC,EAAE,mBAAmB,GAAG,IAAI,CAgCtG"}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
import { MOTION_GLARE_FRAGMENT } from './motion-glare.js';
|
|
2
|
+
/** Two logical layers in one draw: unlit source image + native physical gloss.
|
|
3
|
+
* Only reflection passes through exposure/tone mapping. No image recolouring,
|
|
4
|
+
* extra light sources, textures or render targets.
|
|
5
|
+
*/
|
|
6
|
+
export function separateImageCoating(material, glare) {
|
|
7
|
+
material.onBeforeCompile = shader => {
|
|
8
|
+
const opaque = '#include <opaque_fragment>';
|
|
9
|
+
const output = '#include <colorspace_fragment>';
|
|
10
|
+
if (!shader.fragmentShader.includes(opaque) || !shader.fragmentShader.includes(output)) {
|
|
11
|
+
throw new Error('Unsupported Three.js badge shader: image/coating output hooks missing');
|
|
12
|
+
}
|
|
13
|
+
if (glare) {
|
|
14
|
+
shader.uniforms.badgeGlareProgress = glare.badgeGlareProgress;
|
|
15
|
+
shader.uniforms.badgeGlareOpacity = glare.badgeGlareOpacity;
|
|
16
|
+
shader.fragmentShader = 'uniform float badgeGlareProgress;\nuniform float badgeGlareOpacity;\n' + shader.fragmentShader;
|
|
17
|
+
}
|
|
18
|
+
shader.fragmentShader = shader.fragmentShader.replace(opaque, `
|
|
19
|
+
// Reuse Three's BRDF and actual scene reflection, without diffuse lighting.
|
|
20
|
+
vec3 badgeReflection = totalSpecular;
|
|
21
|
+
#ifdef USE_CLEARCOAT
|
|
22
|
+
badgeReflection = badgeReflection * (1.0 - material.clearcoat * Fcc)
|
|
23
|
+
+ (clearcoatSpecularDirect + clearcoatSpecularIndirect) * material.clearcoat;
|
|
24
|
+
#endif
|
|
25
|
+
outgoingLight = ${glare ? 'vec3(0.0)' : 'max(badgeReflection, vec3(0.0))'};
|
|
26
|
+
${opaque}
|
|
27
|
+
`).replace(output, `
|
|
28
|
+
${output}
|
|
29
|
+
// diffuseColor already contains the decoded linear-sRGB image sample.
|
|
30
|
+
// Convert it once, independently of the tone-mapped reflection above.
|
|
31
|
+
vec3 badgeImage = linearToOutputTexel(diffuseColor).rgb;
|
|
32
|
+
vec3 badgeCoating = 0.4 * clamp(gl_FragColor.rgb, 0.0, 1.0);
|
|
33
|
+
gl_FragColor.rgb = badgeImage + (vec3(1.0) - badgeImage) * badgeCoating;
|
|
34
|
+
${glare ? MOTION_GLARE_FRAGMENT : ''}
|
|
35
|
+
`);
|
|
36
|
+
};
|
|
37
|
+
material.customProgramCacheKey = () => glare ? 'partner-motion-glare-v1' : 'partner-image-coating-v1';
|
|
38
|
+
}
|
|
39
|
+
//# sourceMappingURL=image-coating.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"image-coating.js","sourceRoot":"","sources":["../../src/pendant/image-coating.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,qBAAqB,EAA4B,MAAM,mBAAmB,CAAA;AAEnF;;;GAGG;AACH,MAAM,UAAU,oBAAoB,CAAC,QAA8B,EAAE,KAA2B;IAC9F,QAAQ,CAAC,eAAe,GAAG,MAAM,CAAC,EAAE;QAClC,MAAM,MAAM,GAAG,4BAA4B,CAAA;QAC3C,MAAM,MAAM,GAAG,gCAAgC,CAAA;QAC/C,IAAI,CAAC,MAAM,CAAC,cAAc,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,cAAc,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC;YACvF,MAAM,IAAI,KAAK,CAAC,uEAAuE,CAAC,CAAA;QAC1F,CAAC;QACD,IAAI,KAAK,EAAE,CAAC;YACV,MAAM,CAAC,QAAQ,CAAC,kBAAkB,GAAG,KAAK,CAAC,kBAAkB,CAAA;YAC7D,MAAM,CAAC,QAAQ,CAAC,iBAAiB,GAAG,KAAK,CAAC,iBAAiB,CAAA;YAC3D,MAAM,CAAC,cAAc,GAAG,uEAAuE,GAAG,MAAM,CAAC,cAAc,CAAA;QACzH,CAAC;QACD,MAAM,CAAC,cAAc,GAAG,MAAM,CAAC,cAAc,CAAC,OAAO,CAAC,MAAM,EAAE;;;;;;;wBAO1C,KAAK,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,iCAAiC;QACvE,MAAM;KACT,CAAC,CAAC,OAAO,CAAC,MAAM,EAAE;QACf,MAAM;;;;;;QAMN,KAAK,CAAC,CAAC,CAAC,qBAAqB,CAAC,CAAC,CAAC,EAAE;KACrC,CAAC,CAAA;IACJ,CAAC,CAAA;IACD,QAAQ,CAAC,qBAAqB,GAAG,GAAG,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,yBAAyB,CAAC,CAAC,CAAC,0BAA0B,CAAA;AACvG,CAAC"}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
export interface MotionGlareUniforms {
|
|
2
|
+
badgeGlareProgress: {
|
|
3
|
+
value: number;
|
|
4
|
+
};
|
|
5
|
+
badgeGlareOpacity: {
|
|
6
|
+
value: number;
|
|
7
|
+
};
|
|
8
|
+
}
|
|
9
|
+
export declare const MOTION_GLARE: {
|
|
10
|
+
readonly opacity: 0.38;
|
|
11
|
+
};
|
|
12
|
+
interface Orientation {
|
|
13
|
+
x: number;
|
|
14
|
+
y: number;
|
|
15
|
+
z: number;
|
|
16
|
+
w: number;
|
|
17
|
+
}
|
|
18
|
+
/** A fixed world-space light/view half-vector projected into the card frame.
|
|
19
|
+
* Identical poses have identical highlights, even at rest or after reversal.
|
|
20
|
+
* This is a stylized strip reflection, not an animated sweep or full ray trace.
|
|
21
|
+
* Shares the existing frame; a visible highlight never keeps RAF awake.
|
|
22
|
+
*/
|
|
23
|
+
export declare function createMotionGlare(): {
|
|
24
|
+
uniforms: MotionGlareUniforms;
|
|
25
|
+
clear: () => void;
|
|
26
|
+
update(q: Orientation, reduced: boolean): void;
|
|
27
|
+
};
|
|
28
|
+
/** Same -45deg / 250% / 60-70-85% CSS gradient in card-local coordinates.
|
|
29
|
+
* Rendered inside the existing rounded face, not a new rectangular overlay.
|
|
30
|
+
*/
|
|
31
|
+
export declare const MOTION_GLARE_FRAGMENT = "\n #ifdef USE_MAP\n vec2 glareUv = (vec2(vMapUv.x, 1.0 - vMapUv.y)\n - vec2(mix(1.5, -1.5, badgeGlareProgress))) / 2.5;\n float glareInside = step(0.0, glareUv.x) * step(glareUv.x, 1.0)\n * step(0.0, glareUv.y) * step(glareUv.y, 1.0);\n float glareStop = 1.0 - dot(glareUv, vec2(1.42, 1.96)) / 3.38;\n float glareBand = clamp((glareStop - 0.60) / 0.10, 0.0, 1.0)\n * clamp((0.85 - glareStop) / 0.15, 0.0, 1.0);\n float glareAlpha = glareInside * glareBand * clamp(badgeGlareOpacity, 0.0, 0.5);\n gl_FragColor.rgb = mix(badgeImage, vec3(1.0), glareAlpha);\n #endif\n";
|
|
32
|
+
export {};
|
|
33
|
+
//# sourceMappingURL=motion-glare.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"motion-glare.d.ts","sourceRoot":"","sources":["../../src/pendant/motion-glare.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,mBAAmB;IAClC,kBAAkB,EAAE;QAAE,KAAK,EAAE,MAAM,CAAA;KAAE,CAAA;IACrC,iBAAiB,EAAE;QAAE,KAAK,EAAE,MAAM,CAAA;KAAE,CAAA;CACrC;AAID,eAAO,MAAM,YAAY;;CAA4B,CAAA;AACrD,UAAU,WAAW;IAAG,CAAC,EAAE,MAAM,CAAC;IAAC,CAAC,EAAE,MAAM,CAAC;IAAC,CAAC,EAAE,MAAM,CAAC;IAAC,CAAC,EAAE,MAAM,CAAA;CAAE;AAGpE;;;;GAIG;AACH,wBAAgB,iBAAiB;;iBAEb,IAAI;cAKV,WAAW,WAAW,OAAO,GAAG,IAAI;EAejD;AAED;;GAEG;AACH,eAAO,MAAM,qBAAqB,6lBAYjC,CAAA"}
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
// React Bits GlareHover gradient, positioned by orientation, never elapsed time.
|
|
2
|
+
// See docs/THIRD_PARTY_LICENSES.md for the upstream license and source.
|
|
3
|
+
export const MOTION_GLARE = { opacity: .38 };
|
|
4
|
+
const clamp = (n, low, high) => Math.max(low, Math.min(high, n));
|
|
5
|
+
/** A fixed world-space light/view half-vector projected into the card frame.
|
|
6
|
+
* Identical poses have identical highlights, even at rest or after reversal.
|
|
7
|
+
* This is a stylized strip reflection, not an animated sweep or full ray trace.
|
|
8
|
+
* Shares the existing frame; a visible highlight never keeps RAF awake.
|
|
9
|
+
*/
|
|
10
|
+
export function createMotionGlare() {
|
|
11
|
+
const uniforms = { badgeGlareProgress: { value: 1 }, badgeGlareOpacity: { value: 0 } };
|
|
12
|
+
const clear = () => {
|
|
13
|
+
uniforms.badgeGlareProgress.value = 1;
|
|
14
|
+
uniforms.badgeGlareOpacity.value = 0;
|
|
15
|
+
};
|
|
16
|
+
return {
|
|
17
|
+
uniforms, clear,
|
|
18
|
+
update(q, reduced) {
|
|
19
|
+
const length = Math.hypot(q.x, q.y, q.z, q.w);
|
|
20
|
+
if (reduced || !Number.isFinite(length) || length < 1e-8) {
|
|
21
|
+
clear();
|
|
22
|
+
return;
|
|
23
|
+
}
|
|
24
|
+
const x = q.x / length, y = q.y / length, z = q.z / length, w = q.w / length;
|
|
25
|
+
const facing = 1 - 2 * (x * x + y * y);
|
|
26
|
+
if (facing <= .1) {
|
|
27
|
+
clear();
|
|
28
|
+
return;
|
|
29
|
+
}
|
|
30
|
+
const norm = Math.hypot(.25, .4, 1), hx = .25 / norm, hy = .4 / norm, hz = 1 / norm;
|
|
31
|
+
const localX = (1 - 2 * (y * y + z * z)) * hx + 2 * (x * y + z * w) * hy + 2 * (x * z - y * w) * hz;
|
|
32
|
+
const localY = 2 * (x * y - z * w) * hx + (1 - 2 * (x * x + z * z)) * hy + 2 * (y * z + x * w) * hz;
|
|
33
|
+
const localZ = 2 * (x * z + y * w) * hx + 2 * (y * z - x * w) * hy + facing * hz;
|
|
34
|
+
uniforms.badgeGlareProgress.value = clamp(.55 + .48 * (localX - localY), 0, 1);
|
|
35
|
+
const visibility = clamp((facing - .1) / .3, 0, 1);
|
|
36
|
+
uniforms.badgeGlareOpacity.value = MOTION_GLARE.opacity * visibility * visibility * (3 - 2 * visibility) * clamp(localZ, 0, 1);
|
|
37
|
+
},
|
|
38
|
+
};
|
|
39
|
+
}
|
|
40
|
+
/** Same -45deg / 250% / 60-70-85% CSS gradient in card-local coordinates.
|
|
41
|
+
* Rendered inside the existing rounded face, not a new rectangular overlay.
|
|
42
|
+
*/
|
|
43
|
+
export const MOTION_GLARE_FRAGMENT = `
|
|
44
|
+
#ifdef USE_MAP
|
|
45
|
+
vec2 glareUv = (vec2(vMapUv.x, 1.0 - vMapUv.y)
|
|
46
|
+
- vec2(mix(1.5, -1.5, badgeGlareProgress))) / 2.5;
|
|
47
|
+
float glareInside = step(0.0, glareUv.x) * step(glareUv.x, 1.0)
|
|
48
|
+
* step(0.0, glareUv.y) * step(glareUv.y, 1.0);
|
|
49
|
+
float glareStop = 1.0 - dot(glareUv, vec2(1.42, 1.96)) / 3.38;
|
|
50
|
+
float glareBand = clamp((glareStop - 0.60) / 0.10, 0.0, 1.0)
|
|
51
|
+
* clamp((0.85 - glareStop) / 0.15, 0.0, 1.0);
|
|
52
|
+
float glareAlpha = glareInside * glareBand * clamp(badgeGlareOpacity, 0.0, 0.5);
|
|
53
|
+
gl_FragColor.rgb = mix(badgeImage, vec3(1.0), glareAlpha);
|
|
54
|
+
#endif
|
|
55
|
+
`;
|
|
56
|
+
//# sourceMappingURL=motion-glare.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"motion-glare.js","sourceRoot":"","sources":["../../src/pendant/motion-glare.ts"],"names":[],"mappings":"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"}
|
package/lib/pendant/physics.d.ts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"physics.d.ts","sourceRoot":"","sources":["../../src/pendant/physics.ts"],"names":[],"mappings":"AAAA,OAAO,MAAM,MAAM,2BAA2B,CAAA;
|
|
1
|
+
{"version":3,"file":"physics.d.ts","sourceRoot":"","sources":["../../src/pendant/physics.ts"],"names":[],"mappings":"AAAA,OAAO,MAAM,MAAM,2BAA2B,CAAA;AAG9C,eAAO,MAAM,YAAY,QAAU,CAAA;AAEnC;;;GAGG;AACH,wBAAgB,oBAAoB;;;;;;uBAwBR,MAAM,KAAG,IAAI;EAexC"}
|
package/lib/pendant/physics.js
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import RAPIER from '@dimforge/rapier3d-compat';
|
|
2
|
+
import { normalizeStrapLength } from './settings.js';
|
|
2
3
|
export const LANYARD_STEP = 1 / 120;
|
|
3
4
|
/** Call after Rapier initialization. Elastic links store the energy of a held
|
|
4
5
|
* stretch; unlike maximum-length rope joints, they recoil even after a pause.
|
|
@@ -21,9 +22,30 @@ export function createLanyardPhysics() {
|
|
|
21
22
|
// static extension keeps the loaded strap at 3 world units as stiffness is
|
|
22
23
|
// tuned. Underdamping preserves recoil, without launching ordinary pulls.
|
|
23
24
|
const stiffness = 220, restLength = 1 - 60 / stiffness;
|
|
25
|
+
const springs = [];
|
|
24
26
|
for (let i = 0; i < 3; i++)
|
|
25
|
-
world.createImpulseJoint(RAPIER.JointData.spring(restLength, stiffness, 6, { x: 0, y: 0, z: 0 }, { x: 0, y: 0, z: 0 }), bodies[i], bodies[i + 1], true);
|
|
27
|
+
springs.push(world.createImpulseJoint(RAPIER.JointData.spring(restLength, stiffness, 6, { x: 0, y: 0, z: 0 }, { x: 0, y: 0, z: 0 }), bodies[i], bodies[i + 1], true));
|
|
26
28
|
world.createImpulseJoint(RAPIER.JointData.spherical({ x: 0, y: 0, z: 0 }, { x: 0, y: 1.1, z: 0 }), beads[2], badge, true);
|
|
27
|
-
|
|
29
|
+
let length = 100;
|
|
30
|
+
const setLength = (value) => {
|
|
31
|
+
const next = normalizeStrapLength(value);
|
|
32
|
+
if (next === length)
|
|
33
|
+
return;
|
|
34
|
+
length = next;
|
|
35
|
+
const segment = next / 100;
|
|
36
|
+
for (const joint of springs)
|
|
37
|
+
world.removeImpulseJoint(joint, true);
|
|
38
|
+
springs.length = 0;
|
|
39
|
+
for (let i = 0; i < 3; i++) {
|
|
40
|
+
beads[i].setTranslation({ x: .015, y: 4.15 - segment * (i + 1), z: 0 }, true);
|
|
41
|
+
springs.push(world.createImpulseJoint(RAPIER.JointData.spring(segment - 60 / stiffness, stiffness, 6, { x: 0, y: 0, z: 0 }, { x: 0, y: 0, z: 0 }), bodies[i], bodies[i + 1], true));
|
|
42
|
+
}
|
|
43
|
+
badge.setTranslation({ x: .015, y: 4.15 - 3 * segment - 1.1, z: 0 }, true);
|
|
44
|
+
for (const body of [...beads, badge]) {
|
|
45
|
+
body.setLinvel({ x: 0, y: 0, z: 0 }, true);
|
|
46
|
+
body.setAngvel({ x: 0, y: 0, z: 0 }, true);
|
|
47
|
+
}
|
|
48
|
+
};
|
|
49
|
+
return { world, anchor, beads, badge, bodies, setLength };
|
|
28
50
|
}
|
|
29
51
|
//# sourceMappingURL=physics.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"physics.js","sourceRoot":"","sources":["../../src/pendant/physics.ts"],"names":[],"mappings":"AAAA,OAAO,MAAM,MAAM,2BAA2B,CAAA;
|
|
1
|
+
{"version":3,"file":"physics.js","sourceRoot":"","sources":["../../src/pendant/physics.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"renderer.d.ts","sourceRoot":"","sources":["../../src/pendant/renderer.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,eAAe,CAAA;
|
|
1
|
+
{"version":3,"file":"renderer.d.ts","sourceRoot":"","sources":["../../src/pendant/renderer.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,eAAe,CAAA;AAQpD,MAAM,WAAW,YAAY;IAAG,EAAE,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE;AACxF,MAAM,WAAW,aAAa;IAAG,UAAU,CAAC,OAAO,CAAC,EAAE,YAAY,GAAG,IAAI,CAAC;IAAC,aAAa,CAAC,QAAQ,EAAE,eAAe,GAAG,IAAI,CAAC;IAAC,QAAQ,IAAI,IAAI,CAAC;IAAC,OAAO,IAAI,IAAI,CAAA;CAAE;AAC9J,MAAM,WAAW,cAAc;IAAG,MAAM,EAAE,WAAW,CAAC;IAAC,KAAK,IAAI,IAAI,CAAC;IAAC,SAAS,IAAI,IAAI,CAAC;IAAC,WAAW,CAAC,EAAE,WAAW,CAAA;CAAE;AAGpH;;;GAGG;AACH,wBAAsB,aAAa,CAAC,MAAM,EAAE,iBAAiB,EAAE,GAAG,EAAE,iBAAiB,EAAE,OAAO,EAAE,cAAc,GAAG,OAAO,CAAC,aAAa,CAAC,CAoPtI"}
|
package/lib/pendant/renderer.js
CHANGED
|
@@ -5,11 +5,12 @@ import { createLanyardPhysics, LANYARD_STEP } from './physics.js';
|
|
|
5
5
|
import { createLanyardStrap } from './strap.js';
|
|
6
6
|
import { createBadgeSheen } from './sheen.js';
|
|
7
7
|
import { createNoticeMotion } from './notice-motion.js';
|
|
8
|
-
import { loadCardImage } from './card-image.js';
|
|
8
|
+
import { drawCardImage, loadCardImage } from './card-image.js';
|
|
9
9
|
import { createPendantFrameLoop } from './frame-loop.js';
|
|
10
|
-
import { createBadgeFaceMaterial, BADGE_LIGHTING } from './surface.js';
|
|
10
|
+
import { createBadgeFaceMaterial, BADGE_LIGHTING, badgePixelRatio, configureBadgeTexture } from './surface.js';
|
|
11
11
|
import { measureFixedLayerOrigin } from './coordinates.js';
|
|
12
12
|
import { settleCardFacing } from './facing.js';
|
|
13
|
+
import { createMotionGlare } from './motion-glare.js';
|
|
13
14
|
let physicsReady;
|
|
14
15
|
/** React Bits-inspired Three + Rapier lanyard, with elastic/spherical joints.
|
|
15
16
|
* Separate ESM asset: the main client never imports the renderer/physics bundle.
|
|
@@ -21,7 +22,7 @@ export async function createLanyard(canvas, hit, options) {
|
|
|
21
22
|
options.signal.throwIfAborted();
|
|
22
23
|
const renderer = new THREE.WebGLRenderer({ canvas, alpha: true, antialias: true, powerPreference: 'low-power' });
|
|
23
24
|
renderer.setClearColor(0x000000, 0);
|
|
24
|
-
renderer.setPixelRatio(
|
|
25
|
+
renderer.setPixelRatio(badgePixelRatio(devicePixelRatio));
|
|
25
26
|
renderer.outputColorSpace = THREE.SRGBColorSpace;
|
|
26
27
|
renderer.toneMapping = THREE.ACESFilmicToneMapping;
|
|
27
28
|
renderer.toneMappingExposure = .95;
|
|
@@ -54,10 +55,13 @@ export async function createLanyard(canvas, hit, options) {
|
|
|
54
55
|
for (let i = 0; i < positions.count; i++)
|
|
55
56
|
uv.setXY(i, positions.getX(i) / 1.42 + .5, positions.getY(i) / 1.96 + .5);
|
|
56
57
|
const frontTexture = keep(badgeTexture(false)), backTexture = keep(badgeTexture(true));
|
|
57
|
-
const
|
|
58
|
+
for (const texture of [frontTexture, backTexture])
|
|
59
|
+
configureBadgeTexture(texture, renderer.capabilities.getMaxAnisotropy());
|
|
60
|
+
const glare = createMotionGlare();
|
|
61
|
+
const front = new THREE.Mesh(face, keep(createBadgeFaceMaterial(frontTexture, environment.texture, glare.uniforms)));
|
|
58
62
|
front.position.z = .063;
|
|
59
63
|
card.add(front);
|
|
60
|
-
const back = new THREE.Mesh(face, keep(createBadgeFaceMaterial(backTexture)));
|
|
64
|
+
const back = new THREE.Mesh(face, keep(createBadgeFaceMaterial(backTexture, environment.texture)));
|
|
61
65
|
back.rotation.y = Math.PI;
|
|
62
66
|
back.position.z = -.025;
|
|
63
67
|
card.add(back);
|
|
@@ -70,13 +74,15 @@ export async function createLanyard(canvas, hit, options) {
|
|
|
70
74
|
clip.position.set(0, .94, .03);
|
|
71
75
|
card.add(clip);
|
|
72
76
|
scene.add(card);
|
|
73
|
-
const { world, beads, badge, bodies } = createLanyardPhysics();
|
|
77
|
+
const { world, beads, badge, bodies, setLength } = createLanyardPhysics();
|
|
74
78
|
const noticeMotion = createNoticeMotion(badge);
|
|
75
79
|
const strap = createLanyardStrap(canvas), euler = new THREE.Euler();
|
|
76
80
|
const movingBodies = [badge, ...beads];
|
|
77
81
|
let quietTime = 0, accumulator = 0, disposed = false, scale = 58, canvasSize = 0, messageKey = '';
|
|
78
82
|
let unread = 0, messageIdentity = '';
|
|
79
83
|
let artSource, artRevision = 0;
|
|
84
|
+
let artFit;
|
|
85
|
+
let quality = 100, strapLength = 100;
|
|
80
86
|
let home = canvas.parentElement.getBoundingClientRect();
|
|
81
87
|
let layerOrigin = { left: 0, top: 0 };
|
|
82
88
|
let gesture;
|
|
@@ -123,6 +129,9 @@ export async function createLanyard(canvas, hit, options) {
|
|
|
123
129
|
canvas.dataset.noticeMotion = noticeMotion.phase;
|
|
124
130
|
const shining = sheen.update(now, reduced.matches);
|
|
125
131
|
canvas.dataset.shining = String(shining);
|
|
132
|
+
glare.update(badge.rotation(), reduced.matches);
|
|
133
|
+
canvas.dataset.glare = String(glare.uniforms.badgeGlareOpacity.value);
|
|
134
|
+
canvas.dataset.glareProgress = String(glare.uniforms.badgeGlareProgress.value);
|
|
126
135
|
paint();
|
|
127
136
|
const calm = movingBodies.every(body => {
|
|
128
137
|
const v = body.linvel(), a = body.angvel();
|
|
@@ -219,6 +228,9 @@ export async function createLanyard(canvas, hit, options) {
|
|
|
219
228
|
// Preserve the old resting size, without the old perspective projection.
|
|
220
229
|
scale = home.height / (20 * Math.tan(Math.PI / 12));
|
|
221
230
|
const nextSize = Math.ceil(scale * cardViewSize);
|
|
231
|
+
const nextPixelRatio = 1 + (Math.min(3, Math.max(2, devicePixelRatio || 1)) - 1) * quality / 100;
|
|
232
|
+
if (renderer.getPixelRatio() !== nextPixelRatio)
|
|
233
|
+
renderer.setPixelRatio(nextPixelRatio);
|
|
222
234
|
if (nextSize !== canvasSize) {
|
|
223
235
|
canvasSize = nextSize;
|
|
224
236
|
renderer.setSize(canvasSize, canvasSize, false);
|
|
@@ -233,6 +245,7 @@ export async function createLanyard(canvas, hit, options) {
|
|
|
233
245
|
const hide = () => { end(); if (document.hidden) {
|
|
234
246
|
noticeMotion.cancel();
|
|
235
247
|
sheen.clear();
|
|
248
|
+
glare.clear();
|
|
236
249
|
loop.stop();
|
|
237
250
|
accumulator = 0;
|
|
238
251
|
}
|
|
@@ -261,10 +274,24 @@ export async function createLanyard(canvas, hit, options) {
|
|
|
261
274
|
return;
|
|
262
275
|
loop.setFps(settings.fps);
|
|
263
276
|
canvas.dataset.fps = String(settings.fps);
|
|
277
|
+
if (strapLength !== settings.strapLength) {
|
|
278
|
+
end();
|
|
279
|
+
strapLength = settings.strapLength;
|
|
280
|
+
setLength(strapLength);
|
|
281
|
+
wake();
|
|
282
|
+
}
|
|
283
|
+
if (quality !== settings.quality) {
|
|
284
|
+
quality = settings.quality;
|
|
285
|
+
resize();
|
|
286
|
+
}
|
|
287
|
+
canvas.dataset.quality = String(quality);
|
|
288
|
+
canvas.dataset.strapLength = String(strapLength);
|
|
264
289
|
strap.setAppearance(settings);
|
|
265
|
-
if (settings.image === artSource)
|
|
290
|
+
if (settings.image === artSource && settings.imageFit === artFit)
|
|
266
291
|
return;
|
|
267
292
|
artSource = settings.image;
|
|
293
|
+
artFit = settings.imageFit;
|
|
294
|
+
const imageFit = settings.imageFit;
|
|
268
295
|
const revision = ++artRevision, target = frontTexture.image;
|
|
269
296
|
const restore = () => { drawBadge(target, false); frontTexture.needsUpdate = true; canvas.dataset.art = 'default'; wake(); };
|
|
270
297
|
if (!settings.image) {
|
|
@@ -274,9 +301,10 @@ export async function createLanyard(canvas, hit, options) {
|
|
|
274
301
|
void loadCardImage(settings.image).then(image => {
|
|
275
302
|
if (disposed || revision !== artRevision)
|
|
276
303
|
return;
|
|
277
|
-
target
|
|
304
|
+
drawCardImage(target, image, imageFit);
|
|
278
305
|
frontTexture.needsUpdate = true;
|
|
279
306
|
canvas.dataset.art = 'custom';
|
|
307
|
+
canvas.dataset.imageFit = imageFit;
|
|
280
308
|
wake();
|
|
281
309
|
}).catch(() => { if (!disposed && revision === artRevision)
|
|
282
310
|
restore(); });
|
|
@@ -311,6 +339,7 @@ export async function createLanyard(canvas, hit, options) {
|
|
|
311
339
|
return;
|
|
312
340
|
end();
|
|
313
341
|
disposed = true;
|
|
342
|
+
glare.clear();
|
|
314
343
|
loop.stop();
|
|
315
344
|
observer.disconnect();
|
|
316
345
|
reduced.removeEventListener('change', wake);
|
|
@@ -348,8 +377,8 @@ function roundedRectangle(width, height, radius) {
|
|
|
348
377
|
}
|
|
349
378
|
function badgeTexture(back) {
|
|
350
379
|
const canvas = document.createElement('canvas');
|
|
351
|
-
canvas.width =
|
|
352
|
-
canvas.height =
|
|
380
|
+
canvas.width = 1024;
|
|
381
|
+
canvas.height = 1408;
|
|
353
382
|
drawBadge(canvas, back);
|
|
354
383
|
const texture = new THREE.CanvasTexture(canvas);
|
|
355
384
|
texture.colorSpace = THREE.SRGBColorSpace;
|
|
@@ -357,16 +386,18 @@ function badgeTexture(back) {
|
|
|
357
386
|
}
|
|
358
387
|
function drawBadge(canvas, back, message) {
|
|
359
388
|
const c = canvas.getContext('2d');
|
|
389
|
+
c.save();
|
|
390
|
+
c.scale(canvas.width / 512, canvas.height / 704);
|
|
360
391
|
c.textAlign = 'left';
|
|
361
|
-
c.fillStyle = back ? '#
|
|
392
|
+
c.fillStyle = back ? '#cbd2d5' : '#253235';
|
|
362
393
|
c.fillRect(0, 0, 512, 704);
|
|
363
394
|
if (back && message?.count) {
|
|
364
|
-
const ink =
|
|
395
|
+
const ink = '#253235', muted = '#43525a';
|
|
365
396
|
c.textAlign = 'center';
|
|
366
397
|
c.fillStyle = muted;
|
|
367
398
|
c.font = '600 56px sans-serif';
|
|
368
399
|
c.fillText('伙伴消息', 256, 104);
|
|
369
|
-
c.fillStyle =
|
|
400
|
+
c.fillStyle = '#b8c3c8';
|
|
370
401
|
c.beginPath();
|
|
371
402
|
c.roundRect(164, 154, 184, 132, 34);
|
|
372
403
|
c.fill();
|
|
@@ -383,6 +414,7 @@ function drawBadge(canvas, back, message) {
|
|
|
383
414
|
c.fillStyle = muted;
|
|
384
415
|
c.font = '500 52px sans-serif';
|
|
385
416
|
c.fillText('点击查看', 256, 628);
|
|
417
|
+
c.restore();
|
|
386
418
|
return;
|
|
387
419
|
}
|
|
388
420
|
c.fillStyle = back ? '#536a65' : '#b6cbc2';
|
|
@@ -417,5 +449,6 @@ function drawBadge(canvas, back, message) {
|
|
|
417
449
|
c.fillText(back ? 'A little pause. A little play.' : 'Always a little closer.', 256, 559);
|
|
418
450
|
c.fillStyle = back ? '#b3beb8' : '#6d8b80';
|
|
419
451
|
c.fillRect(213, 608, 86, 5);
|
|
452
|
+
c.restore();
|
|
420
453
|
}
|
|
421
454
|
//# sourceMappingURL=renderer.js.map
|