From 38ccef24f0ccdaa2a79fa23d2d662f10879dad5c Mon Sep 17 00:00:00 2001 From: meleki Date: Mon, 28 Sep 2026 15:43:10 +0200 Subject: [PATCH] Describe the bulk object queries and Find modes (#259) --- Behaviors.md | 13 +++++++++++++ Development.md | 2 +- 2 files changed, 14 insertions(+), 1 deletion(-) diff --git a/Behaviors.md b/Behaviors.md index 4e43893..0f7993e 100644 --- a/Behaviors.md +++ b/Behaviors.md @@ -166,6 +166,12 @@ playing use the same two words. - **Node set** (`src/core/graph/nodes/`, one file per node): events `On start`, `On enable`, `On update`, `On disable`, `On destroy` (see *Lifecycle*), `On key down/up/held`, `On timer` (fires on the first frame past each due time; `late` says by how much, so `time - late` is exactly a multiple of the interval), `On collision enter/stay/exit` (stay every frame, or with an interval; while playing enter and stay tell normal, impulse and point of the contact), `On click` (the mouse pressed on the owner — anywhere when it has none), `On animation finished`, `On state entered`, `On state exited` (one output per state, see *State machines*), `Start` · flow `Branch`, `Sequence`, `Repeat`, `For each`, `Find` … `Match`, `Run behavior`, `End`, and the four that move or follow a state machine, `State branch`, `Set state`, `Set state by name`, `State transition` (see *State machines*) · data `Self`, `Owner`, `Parent`, `Object by name`, `Child by name` (the nearest object of that name below the given one: its children, then their children, and so on; within a level the first in hierarchy order, nothing when none is called so), `Name of`, `Is asset` (is this object an instance of asset X — how you tell what you collided with), + and the plural lookups, each handing on a `list` of objects taken at that moment (destroyed + objects are never in it, switched-off ones are, as with the single lookups): `Objects by name` + (every object of that name, in scene order), `Children by name` (every one of that name below + the given object, nearer levels first, the order `Child by name` searches in), `Children` (the + children of an object; with **recursive** every object below it, level by level) and + `Objects of asset` (every instance of the chosen asset, spawned ones included), `Variables`, `Properties` (every property row of the target's type, the transform rows `scale`, `rotation`, `mirrorX`, `mirrorY` included — how a graph turns a sprite), `Get position` (local and world), `Is enabled`, literals `Number`/`Text`/`Boolean`/`Texture`/`State machine`/`Sound`/`Scene`/`Animation`/`Asset`, `Add/Subtract/Multiply/Divide`, `Min/Max/Abs/Sqrt/Clamp`, `Lerp` (from a to b as t runs from 0 to 1, t held in 0…1; the setting *Ease* bends the way: *Linear*, *In* starts slow, *Out* ends slow, *In-out* both, all quadratic, @@ -295,6 +301,13 @@ playing use the same two words. element reads it anew, like the break of `For each`. Over a typed list, right-click the `item` pin and split it into the fields of the type (`item.Name`, …), so the test needs no `Expand` — see [Structs](Structs), *Split outputs*. + The Find's setting **Mode** says what the Match answers. **First** is the search above. + **All** looks at every element and continues at `done` with `items` and `indices`, the lists of + every element the test is true for (empty when there is none). **Any** stops at the first hit + and hands on `any` (true or false), **Count** hands on `count`. The Match takes the outputs of + its Find's mode; switching the mode drops the edges on outputs the Match no longer has (undo + brings them back). Typing **filter** into the palette adds a Find already set to All. A Find + saved before the setting existed is First. - **A behavior as a node** (nesting): a behavior, usually one with a **Start** and an **End** node, can be run as a step of another behavior's graph. Every input declared on the start node becomes an input port of the calling node, every output declared on the end node one of its outputs; the diff --git a/Development.md b/Development.md index 99649dc..588416d 100644 --- a/Development.md +++ b/Development.md @@ -15,7 +15,7 @@ npm run build # writes dist/ and regenerates index.html php tools/make-user.php [admin|user] # an account; every tool signs in (see Accounts) php tests/php/accounts.test.php # the API's account rules, no server needed (CI's gate job) php tests/php/snapshots.test.php # the snapshot store (#231), the same way -node tools/seed-e2e.mjs && node tools/e2e.mjs # 1532 editor checks, screenshots in /tmp/gm-e2e-*.png +node tools/seed-e2e.mjs && node tools/e2e.mjs # 1535 editor checks, screenshots in /tmp/gm-e2e-*.png GM_STEPS=20 node tools/e2e.mjs # or 1-12, or 6,20 — a subset while working on one step ./e2e.sh start [GM_STEPS] # the same run detached, see below ./e2e.sh status # live progress, or the last run's result