Scene editing: a scene comes up framed as Fit frames it (#295)
Concepts: Unpack is in the right-click menu only. Colliders: the inspector does not list the corners of a polygon. Development: 1695 editor checks.
1 parent
c657f2a9a2
commit
7095ad8157
4 files changed
+9
-3
No files matched your search
+1
-1
@@ -45,7 +45,7 @@ its slant.
|
||||
the collider — without a picked corner Delete removes the object, as everywhere. A **right-click**
|
||||
on a corner opens a menu with **Delete point**. Three corners always stay. The pick ends with a
|
||||
press beside the corners and when another object is selected. Each change is one undo step. The
|
||||
list can also be edited in the inspector.
|
||||
inspector does not list the corners (#295): the outline in the scene view is where they are edited.
|
||||
A polygon may be concave: it is cut into convex pieces (ear clipping, then the cuts that are not
|
||||
needed are joined again), which is what collision works with. One that crosses itself or has no
|
||||
area is drawn **red** and collides with nothing.
|
||||
|
||||
+1
-1
@@ -24,7 +24,7 @@
|
||||
| **Override** | A per-object value that replaces the asset's value for one property. Only changed keys are stored; the inspector paints their label gold and offers a reset (↺) and an **apply** (↑) that writes the value into the asset instead. Both appear only where the value really differs from its base — an override carrying the asset's own value is none. |
|
||||
| **Default** | Every property has a schema default. Asset values that differ from it are marked gold in the inspector and can be reset (↺) the same way an override can. The asset's name in the **Assets** panel carries the same gold while any of them does (`assetDeviates`, `src/core/properties/deviation.ts` — the inspector marks the rows of that same schema, so the list cannot claim a deviation the inspector then fails to show). A behavior's variables are not in it: their default is declared on the variable itself, so the asset value cannot differ from it. |
|
||||
| **Instance** | An object resolved from a placed container's template. Its **values** can be edited — position, name, property overrides — and only what actually deviates is stored, as a sparse `instanceEdits` entry on the container object keyed by the template path. Everything else keeps following the template. Its **structure** cannot: it can not be removed, re-parented or given a collider, and nothing of the scene can be parented into it. ↺ ▾ resets to the nearest base, which inside a container is the **template as the containers in between leave it**; ↑ ▾ offers **Apply to container** (write the value into the template, where every other instance still at the old value picks it up) and/or **Apply to asset** (which drops the template's override as well). With one base left the menu collapses to a plain ↺ / ↑, with none the buttons disappear. Gold marks the same thing the buttons offer. |
|
||||
| **Unpack** | Writes a placed container's content into the scene as ordinary objects (hierarchy context menu, or the inspector's *Content* section). The ids survive it, so the selection does; from then on the structure is editable and the objects no longer follow the template. |
|
||||
| **Unpack** | Writes a placed container's content into the scene as ordinary objects (*Unpack container* in the right-click menu of the hierarchy or the scene view). The ids survive it, so the selection does; from then on the structure is editable and the objects no longer follow the template. |
|
||||
| **Start scene** | The scene a run *begins* with, named on the project rather than on any asset (right-click a scene in the Assets panel → *Set as start scene*, `▶` marks it in the list; *Clear start scene* takes it back). It is a different question from which scene is **active**, which is the one you have open in the editor — the switch next to Play says which of the two Play asks. Without a start scene named, both are the same thing. See [Scenes](Scenes). |
|
||||
| **Load scene** | The node that swaps the running scene for another one, inside the same run. Everything of the old scene is destroyed — its objects, their behaviors, and the sounds those behaviors were playing — while what belongs to the **run** carries on: the values of the Variables assets, the states of the global machines, and the clock. A top-level object with **Keep on scene load** switched on travels into the next scene instead, with everything below it. See [Scenes](Scenes). |
|
||||
| **Edit mode** | The Scene tab draws the project model; panels, grid, gizmos and drag-to-move are active. |
|
||||
|
||||
+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 # 1692 editor checks, screenshots in /tmp/gm-e2e-*.png
|
||||
node tools/seed-e2e.mjs && node tools/e2e.mjs # 1695 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
|
||||
|
||||
@@ -28,6 +28,12 @@ match only while they are the same size: with the tilemap panel open beside the
|
||||
view is narrower and *Auto* may come to a smaller step. Without a camera, *Fit* frames the whole
|
||||
content in a whole step as before.
|
||||
|
||||
**A scene comes up framed.** When a project is loaded and when another scene is opened, the Scene
|
||||
tab shows it as if *Fit* had been clicked (#295). From then on the view is yours: nothing moves it
|
||||
until the next scene is opened. A scene with nothing in it stands at the origin, one screen pixel
|
||||
per world pixel. A scene the running game loads is not framed anew, and the Container tab keeps the
|
||||
view of each container as before.
|
||||
|
||||
**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
|
||||
|
||||
Reference in new issue
Block a user