@idle-screens/saver-metaquarium 0.22.0 → 0.23.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/{chunk-42RIVUT4.js → chunk-M2PKNQNY.js} +29 -11
- package/dist/chunk-M2PKNQNY.js.map +1 -0
- package/dist/index.d.ts +2 -2
- package/dist/index.js +3 -3
- package/dist/{lofi-tank-BJY5Z3J5.js → lofi-tank-H2IMIIF3.js} +2 -2
- package/dist/{manifest-nIf510iL.d.ts → manifest-CsnZvlWq.d.ts} +23 -1
- package/dist/manifest.d.ts +1 -1
- package/dist/manifest.js +1 -1
- package/dist/{tank-EOBD2TLR.js → tank-S4MH4U2P.js} +51 -20
- package/dist/tank-S4MH4U2P.js.map +1 -0
- package/package.json +5 -5
- package/dist/chunk-42RIVUT4.js.map +0 -1
- package/dist/tank-EOBD2TLR.js.map +0 -1
- /package/dist/{lofi-tank-BJY5Z3J5.js.map → lofi-tank-H2IMIIF3.js.map} +0 -0
|
@@ -2564,9 +2564,9 @@ function parseChoreography(value, moves) {
|
|
|
2564
2564
|
}
|
|
2565
2565
|
const cue = { b0, beats: Math.min(beats, 512), move: m[2], turn: 0, lift: 0 };
|
|
2566
2566
|
for (const tok of (m[3] ?? "").replace(/^[,\s]+/, "").split(/\s+/).filter(Boolean)) {
|
|
2567
|
-
const mod = /^([>@~^/%*])(.+)$/.exec(tok);
|
|
2567
|
+
const mod = /^([>@~^/%*x=])(.+)$/.exec(tok);
|
|
2568
2568
|
if (!mod) {
|
|
2569
|
-
problems.push(`"${raw}": "${tok}" is not >to, @face, ~turn, ^leap, /lean, %crouch or
|
|
2569
|
+
problems.push(`"${raw}": "${tok}" is not >to, @face, ~turn, ^leap, /lean, %crouch, *groove, xspeed or =pose`);
|
|
2570
2570
|
continue;
|
|
2571
2571
|
}
|
|
2572
2572
|
const [, op, arg] = mod;
|
|
@@ -2587,6 +2587,12 @@ function parseChoreography(value, moves) {
|
|
|
2587
2587
|
} else if (op === "%") {
|
|
2588
2588
|
if (Number.isFinite(Number(arg)) && Number(arg) > 0) cue.squash = clamp(Number(arg), 0.4, 1.5);
|
|
2589
2589
|
else problems.push(`"${raw}": crouch "${arg}" is not a height scale`);
|
|
2590
|
+
} else if (op === "=") {
|
|
2591
|
+
if (arg !== "" && Number.isFinite(Number(arg)) && Number(arg) >= 0 && Number(arg) <= 1) cue.pose = Number(arg);
|
|
2592
|
+
else problems.push(`"${raw}": pose "${arg}" is not a fraction of the move (0\u20131)`);
|
|
2593
|
+
} else if (op === "x") {
|
|
2594
|
+
if (Number.isFinite(Number(arg)) && Number(arg) > 0) cue.rate = clamp(Number(arg), 0.25, 4);
|
|
2595
|
+
else problems.push(`"${raw}": speed "${arg}" is not a multiple`);
|
|
2590
2596
|
} else if (op === "*") {
|
|
2591
2597
|
if (Number.isFinite(Number(arg)) && Number(arg) > 0) cue.groove = clamp(Number(arg), 0.02, 0.3);
|
|
2592
2598
|
else problems.push(`"${raw}": groove "${arg}" is not a depth`);
|
|
@@ -3304,11 +3310,13 @@ var PARAM_DOCS = {
|
|
|
3304
3310
|
cameraDistance: "Distance from the tank centre. 80 is a close-up, 170\u2013220 a village, 300+ a landmark.",
|
|
3305
3311
|
shot: "A framing: `orbit`, `hero` (three-quarter), `front` (level, long lens), `low`, `top` (a map), `surface`, `macro` (nearest landmark), `cast` (the mix's first three). Azimuth and autoRotate turn it, distance scales it.",
|
|
3306
3312
|
shotBlend: "Seconds a change of `shot` takes (0 = a cut): the camera moves to the new framing, eased.",
|
|
3307
|
-
cameraFollow: "Ride with one fish (cast slot); -1 is the orbit camera
|
|
3308
|
-
followAngle: "Where round the followed fish the chase camera stands, degrees: 0 behind (default), 90 beside, 180
|
|
3309
|
-
followDistance: "How far behind the followed fish the camera rides (40\u201370 is a chase). Under ~18 it is the fish's eye
|
|
3310
|
-
autoRotate: "Turntable speed, degrees/second. 0 holds the shot
|
|
3311
|
-
followAvoid: "Keep the followed fish in view, 0\u20131: the chase camera rises
|
|
3313
|
+
cameraFollow: "Ride with one fish (cast slot); -1 is the orbit camera (its params ignored while following).",
|
|
3314
|
+
followAngle: "Where round the followed fish the chase camera stands, degrees: 0 behind (default), 90 beside, 180 facing it. A choreographed dancer is measured from the stage's facing instead.",
|
|
3315
|
+
followDistance: "How far behind the followed fish the camera rides (40\u201370 is a chase). Under ~18 it is the fish's eye (a walker's: its head height).",
|
|
3316
|
+
autoRotate: "Turntable speed, degrees/second. 0 holds the shot, 1\u20132 a slow reveal. frame.state.camera.bearing: where it stands now.",
|
|
3317
|
+
followAvoid: "Keep the followed fish in view, 0\u20131: the chase camera rises or pulls in, eased.",
|
|
3318
|
+
followHeight: "Chase camera height in body lengths over its feet, aimed at them (0.2: feet); -1 off.",
|
|
3319
|
+
followLens: "Chase lens, degrees (0: 55; 25 long).",
|
|
3312
3320
|
nearFade: "A creature at the lens dissolves, not sliced, 0\u20131. The followed fish never fades.",
|
|
3313
3321
|
// cast
|
|
3314
3322
|
fishCount: "How many fish when `fishMix` is empty (all are `fishUrl`).",
|
|
@@ -3452,7 +3460,7 @@ geodeMineral world | mineral, \u2026 amethyst agate celestine citrine carneli
|
|
|
3452
3460
|
floraPalette world | #rrggbb, \u2026 (\u22646) world \xB7 #ff4fa0, #ffb347, #4fd1ff
|
|
3453
3461
|
spotRig slot|@mark[/color][*radius], \u2026 (\u22643; they become a, b, c) 0/#ffd27a*24, 1/#ff8ad0*24, 2/#7fdcff*24
|
|
3454
3462
|
spotCues <sec>s:<spots>, \u2026 loops 4s:-, 7s:a, 7s:b, 12s:a+b
|
|
3455
|
-
choreography [a|*:] <beats>:<move> [>to @face ~turn ^leap /lean %crouch *groove],\u2026|\u2026 moves ${STARFISH_MOVE_NAMES.join(" ")}
|
|
3463
|
+
choreography [a|*:] <beats>:<move> [>to @face ~turn ^leap /lean %crouch *groove xspeed =pose],\u2026|\u2026 moves ${STARFISH_MOVE_NAMES.join(" ")}
|
|
3456
3464
|
signs kind[@place][>target][/#color][*size][:text], \u2026 plank@gate:"Welcome to the reef", neon@home1/#ff4fa0:OPEN, led@plaza:TIDE 4.2M
|
|
3457
3465
|
kinds plank arrow ring porthole neon led \xB7 places gate plaza courtyard hub fountain home1 home2 home3 centre left right front back
|
|
3458
3466
|
an arrow points at >target \xB7 text \u2264 plank 24, arrow 16, ring 10, porthole 4 (empty = a fish), neon 14, led 64 (scrolls) \xB7 \u2264 8 signs
|
|
@@ -4030,7 +4038,7 @@ function dependencyProblems(params) {
|
|
|
4030
4038
|
if (set("danceTempo") && dance === "off" && !choreographed) out.push({ path: "danceTempo", also: ["starfishDance"], message: "does nothing while starfishDance is off" });
|
|
4031
4039
|
if (choreographed && !starfishSwims) out.push({ path: "choreography", also: ["fishMix"], message: "no starfish in the cast to dance it \u2014 add e.g. starfish:5" });
|
|
4032
4040
|
if (follow < 0) {
|
|
4033
|
-
for (const k of ["followDistance", "followAngle", "followAvoid"]) if (set(k)) out.push({ path: k, also: ["cameraFollow"], message: "does nothing while cameraFollow is -1 (the orbit camera)" });
|
|
4041
|
+
for (const k of ["followDistance", "followAngle", "followAvoid", "followHeight", "followLens"]) if (set(k)) out.push({ path: k, also: ["cameraFollow"], message: "does nothing while cameraFollow is -1 (the orbit camera)" });
|
|
4034
4042
|
} else if (follow < cast) {
|
|
4035
4043
|
for (const k of ORBIT_PARAMS) if (set(k)) out.push({ path: k, also: ["cameraFollow"], message: `ignored while cameraFollow rides with slot ${follow} \u2014 they return when it is -1` });
|
|
4036
4044
|
}
|
|
@@ -4262,7 +4270,8 @@ var METAQUARIUM_PARAMS = {
|
|
|
4262
4270
|
followDistance: { type: "number", default: 45, min: 0, max: 160, ease: "smooth" },
|
|
4263
4271
|
/** Where round the followed fish the chase camera stands, degrees: 0 behind
|
|
4264
4272
|
* it (the default), 90 at its side, 180 in front looking back at its face
|
|
4265
|
-
* — a hackerfish's screen, a crab's smile.
|
|
4273
|
+
* — a hackerfish's screen, a crab's smile. A choreographed dancer is framed
|
|
4274
|
+
* from its stage's front instead, so a spin turns the dancer, not the shot. */
|
|
4266
4275
|
followAngle: { type: "number", default: 0, min: -180, max: 180, ease: "smooth" },
|
|
4267
4276
|
/** Keep the followed fish in view (sightline.ts): when a home, a wall, a lamp
|
|
4268
4277
|
* or a kelp stand comes between it and the chase camera, the camera rises a
|
|
@@ -4270,6 +4279,15 @@ var METAQUARIUM_PARAMS = {
|
|
|
4270
4279
|
* a game camera's spring arm does — eased, never a snap. 0 (default) is the
|
|
4271
4280
|
* plain chase camera; 1 the full arm. Not the fish's-eye view (it has none). */
|
|
4272
4281
|
followAvoid: { type: "number", default: 0, min: 0, max: 1, ease: "smooth" },
|
|
4282
|
+
/** The chase camera's height over the followed fish's feet, in its body
|
|
4283
|
+
* lengths. -1 (default) rides a little above it, looking at its middle;
|
|
4284
|
+
* set, the camera stands at that height aimed at its feet — 0.1–0.3 on a
|
|
4285
|
+
* long lens is a shot of a walker's feet, the floor behind them. */
|
|
4286
|
+
followHeight: { type: "number", default: -1, min: -1, max: 3, ease: "step" },
|
|
4287
|
+
/** The chase camera's lens: degrees of view, top to bottom. 0 (default) is
|
|
4288
|
+
* the orbit camera's 55; 20–30 is a long lens — flatter and tighter, from
|
|
4289
|
+
* further back. */
|
|
4290
|
+
followLens: { type: "number", default: 0, min: 0, max: 90, ease: "step" },
|
|
4273
4291
|
/** Continuous orbit speed, degrees/second. Zero by default: the tank is
|
|
4274
4292
|
* still, letting the fish movement carry the scene. Steer up for an orbit. */
|
|
4275
4293
|
autoRotate: { type: "number", default: 0, min: 0, max: 12, ease: "smooth" },
|
|
@@ -4980,4 +4998,4 @@ export {
|
|
|
4980
4998
|
paramSpaceWith,
|
|
4981
4999
|
coerceNum
|
|
4982
5000
|
};
|
|
4983
|
-
//# sourceMappingURL=chunk-
|
|
5001
|
+
//# sourceMappingURL=chunk-M2PKNQNY.js.map
|