Zoom transition and General settings (#309)

The wheel and Fit now show the zoom as a short transition. The time
is set under Menu > General settings and kept in the browser.

- Concepts: the transition, the new menu entry and what ends it.
- Keyboard: the wheel and Fit animate the change of zoom.
- Architecture: viewTween.ts with tweenView and the ViewTween driver.
- Development: e2e sum 1735.
admin committed 2026-10-03 21:01:34 +02:00
1 parent cf0247a64a
commit 50dd1c18a4
4 files changed
+18 -3

No files matched your search

+5
@@ -214,6 +214,11 @@ src/editor/ App → Editor (layout + ticker), PlaySession (the run),
ReleaseDialog + releases (the link behind "Release…", what the dialog says and warns about, #266),
ProjectSettingsDialog + settingsChanges (name, the start-scene switch and the collision
layers in one dialog; the pure rule of what Apply has to carry out),
GeneralSettingsDialog + generalSettings (#309: what the editor does for the person at
the screen, one entry in `localStorage`), viewTween (#309: a wheel step or Fit as a
transition; `tweenView` is the way between two views as a pure function, `ViewTween`
drives it on the ticker, and each zoomable surface hands it reading, writing and
drawing its own view),
EditorRun (run in editor), state, actions (what several places do alike: `removeSelection`
is Delete for every kind of selection, one case each, `removeShapes` the shapes of a vector
art), shortcuts, clipboard (#240: copy and paste of
+11 -2
@@ -204,7 +204,9 @@ out lives in the menu now: the project list in *Open project…*, the project na
**start-scene switch** (*Start scene* / *Active scene*, see **Start scene**), the **While playing**
preset (see above), the **Link zoom** of the released game (see above), the **symbol scale**
of the scene view's icons (see [Scene editing](Scene-editing)), the collision layers and the
render layers in *Project settings…*. A project is deleted in *Open project…*: **Delete** asks first, and Cancel, Esc
render layers in *Project settings…*. What is about the person at the screen rather than the
project is in *General settings…* (#309), kept in this browser and the same in every project: the
**zoom transition** (see below). A project is deleted in *Open project…*: **Delete** asks first, and Cancel, Esc
and the deletion itself all lead back to the project list. The active scene is picked where the scenes are — by double-clicking
one in the **Assets** panel. The **Assets** panel's `+` creates an asset and opens its tab; its menu lists the types in
two alphabetical groups, first what can be placed into a scene, then what only lives in the library
@@ -308,7 +310,14 @@ one kind can be open at once — two textures, three behaviors — each with its
project already. Closing the tab on screen shows its left neighbour (the right one when it was
first), the Scene tab when none is left. Deleting an asset closes its tab.
- Each document keeps its **zoom and scroll** for the session: switch between two textures and
both are where you left them. Following a call node into another behavior stays in the same
both are where you left them.
- A wheel step and **Fit** are shown as a short **zoom transition** (#309) wherever the editor
zooms: the Scene and Container tabs, the Texture, Curve, Pixel art and Vector art tabs, the
Animation tab's preview and timeline, the graph, the Tile tab's board and a plugin's node board.
How long it takes is set in *Menu → General settings…* in milliseconds, 200 by default; 0 jumps
at once. The steps are the same as without it: quick wheel steps add up to exactly as many
steps, and the point under the pointer stays under it all the way. A pan, another document or a
new size of the view ends the transition on the step it was heading for. Following a call node into another behavior stays in the same
tab, and the breadcrumb stays with that tab.
- Open tabs are not remembered: a loaded project starts on the Scene tab.
- Tabs are drawn as **index cards** (#176): the one showing is a light grey card with rounded upper
+1 -1
@@ -18,7 +18,7 @@ php tests/php/accounts.test.php # the API's accoun
# has and the web server's container has not (SKIP there)
php tests/php/snapshots.test.php # the snapshot store (#231), the same way
php tests/php/releases.test.php # the release store (#266), the same way
node tools/seed-e2e.mjs && node tools/e2e.mjs # 1732 editor checks, screenshots in /tmp/gm-e2e-*.png
node tools/seed-e2e.mjs && node tools/e2e.mjs # 1735 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
+1
@@ -18,5 +18,6 @@ and every tab), the value itself is kept at that precision — fields that are i
milliseconds, the index and count ports of list and text nodes) set `NumberField`'s
`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)),
each step shown as a short transition (see *The tab row* in [Concepts](Concepts)),
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, `Esc` ends the line the Pen is drawing, `Delete` removes the selected shapes, picked on the canvas or in the list, and on the frame round the selection `Shift` keeps the proportions while a square is pulled, `Alt` scales about the middle and `Shift` on the knob turns in steps of 15 degrees ([Vector art](Vector-Art#scaling-turning-and-mirroring)) · wherever points are edited (Curve tab, Vector art tab, a polygon collider in the scene view, a frame's collision outline in the Texture tab): a double-click on the line puts a point there, a click picks one, and with a point picked `Delete` takes that point instead of the selection; a right-click on a point opens its menu.