@dopaminefx/effect-comic 0.1.0
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/dist/comic-fonts.d.ts +18 -0
- package/dist/comic-fonts.d.ts.map +1 -0
- package/dist/comic-fonts.js +16 -0
- package/dist/comic-fonts.js.map +1 -0
- package/dist/comic-params.d.ts +77 -0
- package/dist/comic-params.d.ts.map +1 -0
- package/dist/comic-params.js +31 -0
- package/dist/comic-params.js.map +1 -0
- package/dist/comic-renderer.d.ts +32 -0
- package/dist/comic-renderer.d.ts.map +1 -0
- package/dist/comic-renderer.js +299 -0
- package/dist/comic-renderer.js.map +1 -0
- package/dist/comic-shader.d.ts +30 -0
- package/dist/comic-shader.d.ts.map +1 -0
- package/dist/comic-shader.js +238 -0
- package/dist/comic-shader.js.map +1 -0
- package/dist/comic-tempo.d.ts +24 -0
- package/dist/comic-tempo.d.ts.map +1 -0
- package/dist/comic-tempo.js +45 -0
- package/dist/comic-tempo.js.map +1 -0
- package/dist/comic.dope.json +842 -0
- package/dist/index.d.ts +28 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +58 -0
- package/dist/index.js.map +1 -0
- package/package.json +46 -0
- package/src/comic-fonts.ts +23 -0
- package/src/comic-params.ts +95 -0
- package/src/comic-renderer.ts +336 -0
- package/src/comic-shader.ts +247 -0
- package/src/comic-tempo.ts +46 -0
- package/src/comic.dope.json +842 -0
- package/src/index.ts +80 -0
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Comic Impact bespoke timing — the slam/recoil + proud-hold-then-fade.
|
|
3
|
+
*
|
|
4
|
+
* The word arrives oversized and slams down past its rest size, recoils (a quick
|
|
5
|
+
* spring), holds, then eases out at the tail. Deliberately very short IMPACT so
|
|
6
|
+
* the word reads as a punch landing, not a tween. Built on `easeOutCubic`.
|
|
7
|
+
*/
|
|
8
|
+
import { easeOutCubic, clamp01 } from "@dopaminefx/core";
|
|
9
|
+
/** Window (ms) over which the comic onomatopoeia word SLAMS in. */
|
|
10
|
+
export const IMPACT_MS = 200;
|
|
11
|
+
/** Hold (ms) the word sits proud at full size before it begins to settle out. */
|
|
12
|
+
export const IMPACT_HOLD_MS = 650;
|
|
13
|
+
/**
|
|
14
|
+
* Comic impact SCALE over elapsed ms. Returns a multiplier on rest size: large
|
|
15
|
+
* at t≈0, slamming to ≈1 by IMPACT_MS (with a small spring), then resting.
|
|
16
|
+
* `overshoot` scales the slam magnitude (driven by intensity).
|
|
17
|
+
*/
|
|
18
|
+
export function impactScale(elapsedMs, overshoot = 1) {
|
|
19
|
+
const t = elapsedMs;
|
|
20
|
+
if (t <= 0)
|
|
21
|
+
return 1 + 0.85 * overshoot;
|
|
22
|
+
if (t < IMPACT_MS) {
|
|
23
|
+
const x = t / IMPACT_MS;
|
|
24
|
+
const eased = easeOutCubic(x);
|
|
25
|
+
const big = 1 + 0.85 * overshoot;
|
|
26
|
+
const dip = -0.12 * overshoot * Math.sin(x * Math.PI) * (1 - x);
|
|
27
|
+
return big + (1 - big) * eased + dip;
|
|
28
|
+
}
|
|
29
|
+
return 1;
|
|
30
|
+
}
|
|
31
|
+
/**
|
|
32
|
+
* Comic impact OPACITY/presence over normalized life (0..1). A near-instant
|
|
33
|
+
* appearance, a long proud hold, then a quick fade at the very end so the panel
|
|
34
|
+
* clears. The fade occupies the last ~18%.
|
|
35
|
+
*/
|
|
36
|
+
export function impactPresence(life) {
|
|
37
|
+
const t = clamp01(life);
|
|
38
|
+
if (t < 0.04)
|
|
39
|
+
return easeOutCubic(t / 0.04); // snap in
|
|
40
|
+
if (t < 0.82)
|
|
41
|
+
return 1;
|
|
42
|
+
const fade = clamp01(1 - (t - 0.82) / 0.18);
|
|
43
|
+
return Math.pow(fade, 1.4); // quick clean fade
|
|
44
|
+
}
|
|
45
|
+
//# sourceMappingURL=comic-tempo.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"comic-tempo.js","sourceRoot":"","sources":["../src/comic-tempo.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,YAAY,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAEzD,mEAAmE;AACnE,MAAM,CAAC,MAAM,SAAS,GAAG,GAAG,CAAC;AAE7B,iFAAiF;AACjF,MAAM,CAAC,MAAM,cAAc,GAAG,GAAG,CAAC;AAElC;;;;GAIG;AACH,MAAM,UAAU,WAAW,CAAC,SAAiB,EAAE,SAAS,GAAG,CAAC;IAC1D,MAAM,CAAC,GAAG,SAAS,CAAC;IACpB,IAAI,CAAC,IAAI,CAAC;QAAE,OAAO,CAAC,GAAG,IAAI,GAAG,SAAS,CAAC;IACxC,IAAI,CAAC,GAAG,SAAS,EAAE,CAAC;QAClB,MAAM,CAAC,GAAG,CAAC,GAAG,SAAS,CAAC;QACxB,MAAM,KAAK,GAAG,YAAY,CAAC,CAAC,CAAC,CAAC;QAC9B,MAAM,GAAG,GAAG,CAAC,GAAG,IAAI,GAAG,SAAS,CAAC;QACjC,MAAM,GAAG,GAAG,CAAC,IAAI,GAAG,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;QAChE,OAAO,GAAG,GAAG,CAAC,CAAC,GAAG,GAAG,CAAC,GAAG,KAAK,GAAG,GAAG,CAAC;IACvC,CAAC;IACD,OAAO,CAAC,CAAC;AACX,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,cAAc,CAAC,IAAY;IACzC,MAAM,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACxB,IAAI,CAAC,GAAG,IAAI;QAAE,OAAO,YAAY,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,UAAU;IACvD,IAAI,CAAC,GAAG,IAAI;QAAE,OAAO,CAAC,CAAC;IACvB,MAAM,IAAI,GAAG,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC;IAC5C,OAAO,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC,mBAAmB;AACjD,CAAC"}
|