Concepts, Tilemaps: how clicks pick in the scene view (#203)
- Concepts: selection follows what is drawn, a second click on a selected object cycles to the one underneath. - Tilemaps: empty cells are empty space for Select, paint tools still paint the whole grid. - Development: editor check total is 1290. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
1 parent
d5fc541ee6
commit
19e7831c02
3 files changed
+5
-2
No files matched your search
+1
-1
@@ -12,7 +12,7 @@
|
||||
| **Enabled** | Every placeable asset has the switch `enabled` (default on). A disabled object is not drawn, does not collide and its behavior does not run — **and neither does anything parented below it**. Switching one instance off is a normal override, which makes a container a *screen*: switch it on to show it, off to hide it. From a graph, `Properties` with `enabled` switched to Set does it, and `Is enabled` asks (including the parents); a behavior hears the switch as `On enable` / `On disable`. |
|
||||
| **Scene object** | An asset placed into a scene: a link to the asset + a **position** (`x`, `y`, `z`) + sparse **overrides** of the asset's properties + an optional **parent** (another object of the scene). Drawn objects also carry **transform** rows (scale, rotation, mirror) — properties like any other, and they cascade to children the way a position does (see [Scene editing](Scene-editing)). Scenes cannot be placed. |
|
||||
| **Container** | A reusable group ("prefab"): the asset holds a **template** of objects (asset link, local position, overrides, parent links) centred on its origin. Placing a container stores the container object **and nothing else** — its content is resolved from the template on every read, so a template edit reaches every instance at once. **Create container** turns the current selection into such an asset: the selected objects move into the template and the scene keeps one placed container at their centre (world positions unchanged). The template is edited in the **Container** tab (see [Containers](Containers)) or from an instance through **Apply to container**. |
|
||||
| **Selection** | One or more scene objects. Click selects, `Ctrl`/`Shift`-click adds/removes, dragging on empty scene space draws a rubber band (objects whose position lies inside are selected). Dragging a selected object moves the whole selection; `Delete` removes it; the inspector offers **Create container** and **Remove** for several objects. |
|
||||
| **Selection** | One or more scene objects. Click selects the topmost object as it is drawn, `Ctrl`/`Shift`-click adds/removes, dragging on empty scene space draws a rubber band (objects whose position lies inside are selected). A tilemap counts only where it has a tile, at the z of the highest layer with a tile there, so its empty cells are empty space. Clicking a selected object again selects the next one below it, and after the lowest the topmost again. Pressing on a selected object, even one hidden under others, and dragging moves the whole selection; `Delete` removes it; the inspector offers **Create container** and **Remove** for several objects. |
|
||||
| **Behavior** | Logic as an asset: a **node graph** plus the **variables** it declares. Placed like anything else (a diamond symbol in the scene); its parent is the **owner** the graph acts on. |
|
||||
| **Variables asset** | Declarations and nothing else — no graph, no position, never placed. A `Variables` node naming it reads and writes **one value per key for the whole run**, however many graphs point at it. The values start at the declared ones on every Play and are never written back, so playing cannot change the project; while a run is on the asset's inspector shows them live and an edit there reaches the run at once. Two such assets may declare the same name without meeting. A **Persistent** one keeps its values past the end of the run, in this browser: the next Play starts where the last one ended — the savegame. See [Behaviors](Behaviors). |
|
||||
| **Run in editor** | A switch only behaviors have (default off). With it on the behavior keeps running while the project is **not** playing — and unlike Play it then edits the *saved* model: what it moves or writes is a real change, autosaved and not on the undo stack. See *Running without Play*. |
|
||||
|
||||
+1
-1
@@ -13,7 +13,7 @@ npm run check # typecheck + lint + format:check + tests, the gate CI runs
|
||||
npm run build # writes dist/ and regenerates index.html
|
||||
./build.sh # the same under `set -o pipefail`, for callers that pipe the output
|
||||
php tools/make-user.php <name> <password> # an account; every tool signs in (see Accounts)
|
||||
node tools/seed-e2e.mjs && node tools/e2e.mjs # 1286 editor checks, screenshots in /tmp/gm-e2e-*.png
|
||||
node tools/seed-e2e.mjs && node tools/e2e.mjs # 1290 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
|
||||
|
||||
+3
@@ -85,6 +85,9 @@ the Columns, Rows and Tile size rows.
|
||||
back. Choosing another tool while Alt is down keeps that one.
|
||||
|
||||
While any painting tool is chosen, the map shows its cell grid, so one does not paint blind.
|
||||
It paints anywhere on that grid, also where another object is drawn above the map.
|
||||
With **Select**, a click on an empty cell is empty space, and a sprite drawn above the map's
|
||||
layers there is what the click selects.
|
||||
Shift-drag still pans the view, whatever the tool.
|
||||
|
||||
**One stroke is one undo step**, and so is one fill — a line of twenty cells comes back with one Ctrl+Z, and a stroke
|
||||
|
||||
Reference in new issue
Block a user