From 8024b9d1ef3825284aefcac957f85f7ae1c018b2 Mon Sep 17 00:00:00 2001 From: meleki Date: Sun, 27 Sep 2026 12:13:51 +0200 Subject: [PATCH] Describe the turn knob and sorting a container with its parent Two changes in the scene view need their words in the wiki. - Scene editing: texts, tilemaps, particles and containers have the turn knob. A container shows it above a frame around its content (#242). - Scene editing: a container has "Sort with parent". It is off by default and draws the whole content at the slot of its parent (#243). - Development: the check total is 1452, counted in a full e2e run in the CI image. Co-Authored-By: Claude Opus 5.5 --- Development.md | 2 +- Scene-editing.md | 14 +++++++++++++- 2 files changed, 14 insertions(+), 2 deletions(-) diff --git a/Development.md b/Development.md index d84498a..391a716 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 # 1447 editor checks, screenshots in /tmp/gm-e2e-*.png +node tools/seed-e2e.mjs && node tools/e2e.mjs # 1452 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 diff --git a/Scene-editing.md b/Scene-editing.md index 28714d9..305bceb 100644 --- a/Scene-editing.md +++ b/Scene-editing.md @@ -92,6 +92,13 @@ asset, overridden per object. A parent that is not drawn itself (container, beha collider) or is a tilemap has no single place to share, so there the switch does nothing. The rule lives in `drawSlots` (`src/viewport/drawOrder.ts`), which the scene view, the game and picking share. +A **container** has the switch too (#243), but it works differently: the container is never drawn, +so it passes its content on. With it on, everything the container holds is drawn in the place of +the container's parent, say the figure it hangs under, as if it were the figure's own children. The +switch of the content itself has no say then. Several containers in a row pass on through as long +as each has it on. A container starts with the switch **off**, also a new one, so content placed +before draws as it did. At the top level, or under a tilemap, it does nothing. + **Transform.** Sprites, texts, colliders and containers carry four more rows next to their position: **Scale** (one factor, default 1), **Rotation** (degrees, positive turns clockwise on screen), **Mirror X** and **Mirror Y**. They are ordinary properties — set on the asset, overridden @@ -105,7 +112,9 @@ the corners; dragging an object moves it in its parent's frame, so a child under by a quarter walks down the screen when dragged along its own x. `Move` and `Set position` work in the object's own axes as well. -**Size gizmo.** A selected sprite or collider gets handles on its outline (#223), turned with it: +**Size gizmo.** A selected sprite or collider gets handles on its outline (#223), turned with it. +Texts, tilemaps, particle sources and containers get the knob only (#242), since they have no +width and height to pull at: - **Edges and corners** set Width and Height (a corner both). The opposite side stays where it was, so the object's position moves by half the change. Sizes land on whole units, at least 1. A handle reaches 7 pixels outwards but only half that into the object, so a small sprite can @@ -116,6 +125,9 @@ in the object's own axes as well. the drag decide which: pulled away from or towards the centre it scales, pulled sideways it turns. That choice holds until the release, so one drag never does both. Shift snaps a turn to 15°. The turn is the angle swept round the object's centre, so it can go on past a half circle. +- A **container**'s knob stands over a thin frame round everything it holds, not over its small + icon. The frame turns and grows with the container. Turning and scaling go round the container's + origin, where its icon stands, so its content swings round that point. - The values go into **this object's overrides**, like "Fit to sprite": a value equal to the asset's own clears the override. One drag is one undo step.