From 9a556e4dcc097be52968d8930681ca1b75442701 Mon Sep 17 00:00:00 2001 From: meleki Date: Thu, 24 Sep 2026 10:41:09 +0200 Subject: [PATCH] Describe pixel exact zoom steps in scene and game view --- Concepts.md | 4 +++- Keyboard.md | 3 ++- Scene-editing.md | 9 +++++++++ 3 files changed, 14 insertions(+), 2 deletions(-) diff --git a/Concepts.md b/Concepts.md index 19b6bbe..62fcbd1 100644 --- a/Concepts.md +++ b/Concepts.md @@ -52,7 +52,9 @@ The camera's `zoom` magnifies the world on top: a 640x360 camera at zoom 2 shows units, and at 100% still fills 640x360 screen pixels. Auto and Fit name the factor they came to (`Auto · 100%`, `Fit · 105%`) and follow the view when it changes size. A picture larger than the view is cut to it, the camera stays in the middle. -Fixed steps start on a whole screen pixel, so pixel art at 100% stays sharp. The choice belongs +Fixed steps start on a whole screen pixel, so pixel art at 100% stays sharp. The steps count +**device** pixels: with Windows display scaling at 125%, 100% is still one screen pixel per camera +pixel, and Fit then names the factor in screen pixels (`Fit · 156%`). The choice belongs to this browser, like *Play starts*, and is not saved in the project. **Toolbar and panels.** The toolbar carries five **icon buttons** and no captions (#183): the diff --git a/Keyboard.md b/Keyboard.md index a2092b4..7a4d910 100644 --- a/Keyboard.md +++ b/Keyboard.md @@ -12,6 +12,7 @@ step-1 field lands on whole numbers), `↑`/`↓` step, shown with at most three and every tab), the value itself is kept at that precision — fields that are integral by nature (frame rectangles, the slice dialog, a camera's view size, font size, the key-repeat milliseconds, the index and count ports of list and text nodes) set `NumberField`'s -`decimals: 0` and round to whole numbers · viewport: wheel zooms, +`decimals: 0` and round to whole numbers · viewport: wheel zooms in whole steps (1/8, 1/4, 1/2, +then 1 to 6, 8, 12, 16, 24 screen pixels per world pixel; see [Scene editing](Scene-editing)), middle-drag or `Shift`+drag pans, drag on empty space rubber-bands, `Ctrl`/`Shift`-click toggles an object in the selection (hierarchy rows too) · tilemap panel: holding `Alt` switches to Pick – a click takes that cell's tile from the active layer – and releasing it brings back the tool before ([Tilemaps](Tilemaps)) · Vector art tab: `Alt`-click a point to make it symmetric and straight again, double-click takes it away, `Esc` ends the line the Pen is drawing, `Delete` removes the selected shape ([Vector art](Vector-Art)). diff --git a/Scene-editing.md b/Scene-editing.md index 5bd2f1f..099f598 100644 --- a/Scene-editing.md +++ b/Scene-editing.md @@ -9,6 +9,15 @@ a placement the drop then denies). Picking a container up selects it, but the Co Dragging is the only way to place: a double-click on an asset opens its tab (a scene also becomes the active one), it never places. +**Zoom in whole steps.** The wheel in the Scene and Container tabs and in the animation preview +moves the zoom one step at a time: 1/8, 1/4, 1/2, then 1 to 6, 8, 12, 16 and 24 screen pixels per +world pixel. A mouse notch is one step, a trackpad takes one every 50 pixels of scrolling. *Fit* rounds +down to the step that still fits. The steps count **device** pixels, so zoom 1 stays one screen +pixel per world pixel even with Windows display scaling at 125% or 150%. With every texel getting +the same number of screen pixels, pixel art never shows one pixel wider than its neighbour, +wherever the view is panned. Sprites that are turned or scaled by an odd factor still cannot +be even. + **Editor symbols are always on top.** The viewport draws scene content (sprites) in an `objects` layer and editor symbols (camera icon, labels) in an `overlay` layer above it, so a sprite can never hide a symbol regardless of z or hierarchy order. A viewport label keeps a