Describe the bulk object queries and Find modes (#259)

admin committed 2026-09-28 15:43:10 +02:00
1 parent eadcc6cf97
commit 38ccef24f0
2 files changed
+14 -1

No files matched your search

+13
@@ -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
+1 -1
@@ -15,7 +15,7 @@ npm run build # writes dist/ and regenerates index.html
php tools/make-user.php <name> <password> [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