Show Direction and Curve of a node only where they matter

An animation key shows Direction only for one of the ten curves and
the Curve row only for Curve. Lerp and Set sound FX parameters hid
them on the node body, but the inspector still offered both rows for
every easing, so a linear Lerp had a Direction to pick that did
nothing.

- A node definition can name `idleParams`: settings that do nothing
  at the current values. The node body and the inspector both leave
  them out.
- `hiddenParams` stays as it was. It only trims the node body, the
  inspector keeps those rows (the Order of an event, the mode of
  Find), so it could not take this job.
- Lerp and Set sound FX parameters use `idleEasing` (formerly
  `hiddenEasing`) for it.
- The idle settings are part of the node signature of the inspector.
  Picking an easing that needs Direction or Curve rebuilds the
  section, and the row appears.

Tests:
- easing-curves: 14 tests (+1), node-catalog: 381, green
- e2e 06 (149 checks, green) checks that a new linear Lerp has no
  Direction and no Curve row in the inspector. Picking Cubic brings
  the Direction row, and Out is picked there as before.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
adminandClaude Opus 5.5 committed 2026-10-05 22:15:15 +02:00
1 parent e7a360db73
commit 297fca3e94
8 files changed
+50 -12

No files matched your search

+9 -3
View File
@@ -1174,12 +1174,18 @@ export async function graph(t) {
const lerp = (await asset('lerpy')).graph.nodes[0];
const inputs = lerp ? await json(`__gm.graph.nodeInputs(${JSON.stringify(lerp.id)})`) : null;
const settings = lerp ? await json(`__gm.graph.nodeSettings(${JSON.stringify(lerp.id)})`) : null;
// Like on a key, linear has no Direction and no Curve to pick, in the inspector either.
const idleFields = [
await json(`__gm.inspectorField('Direction')`),
await json(`__gm.inspectorField('Curve')`),
];
check(
'typing "lerp" into the palette adds a linear Lerp from 0 to 1',
'typing "lerp" into the palette adds a linear Lerp from 0 to 1, without Direction or Curve',
lerp?.type === 'Lerp' &&
JSON.stringify(inputs) === JSON.stringify(['a 0', 'b 1', 't 0']) &&
JSON.stringify(settings) === JSON.stringify(['Easing: Linear']),
JSON.stringify({ lerp, inputs, settings }),
JSON.stringify(settings) === JSON.stringify(['Easing: Linear']) &&
idleFields.every((f) => !f),
JSON.stringify({ lerp, inputs, settings, idleFields }),
);
const easeField = await json(`__gm.inspectorField('Easing')`);
if (easeField) {