diff --git a/Colliders.md b/Colliders.md index 99e68d7..0af76af 100644 --- a/Colliders.md +++ b/Colliders.md @@ -1,11 +1,21 @@ A **collider** is an asset (`shape` box, circle, capsule, polygon or frame collision — see [Shapes](#shapes)) placed like any other object — typically as a child of the sprite it belongs to, so its position is the offset -from that *body* and it moves with it. Right-click an object in **Scene objects** → *Add -collider* to get one with one click: a box collider sized like the -sprite, parented at its centre. Colliders can be reused across objects, overridden per instance -and stacked (hitbox + hurtbox on one sprite; colliders of the same body never collide with each -other). They are editor symbols: green outlines in edit mode, invisible in play mode. Three more rows — +from that *body* and it moves with it. Right-click an object in **Scene objects** (or in the scene +view) → *Add collider…*: a second menu offers **Create new collider** — a box collider sized like +the sprite, parented at its centre — and below it every collider of the project, with a search +field on top (#222). Picking one places that asset as it is, no copy made; a collider the object +wears already is greyed out. Colliders can be reused across objects that way, overridden per +instance and stacked (hitbox + hurtbox on one sprite; colliders of the same body never collide +with each other). + +**Fit to sprite** (#222) in the menu of a placed collider sizes it like the sprite it sits on and +centres it there — handy after the sprite changed size or the collider was dragged aside. The size +goes into this placement's overrides, so other sprites wearing the same collider keep theirs; a +value equal to the asset's own clears the override instead. The collider's own scale is divided +out, a collider turned by a quarter swaps width and height, and a circle takes the radius that fits +inside. A polygon or frame outline has no size to fit, and a collider that does not sit on a +sprite has nothing to fit to: the entry is greyed out for both. They are editor symbols: green outlines in edit mode, invisible in play mode. Three more rows — friction, bounciness, density — are the material a rigidbody feels (see [Physics](Physics)). A collider takes the transform of its body: a box turns and grows with the sprite it sits on, a diff --git a/Concepts.md b/Concepts.md index b208c08..eba9f8c 100644 --- a/Concepts.md +++ b/Concepts.md @@ -68,8 +68,9 @@ Right-clicking a row offers *Set as active scene*, *Set as start scene* / *Clear *Create sprite from texture*, *Create animation from texture* and *Delete…*. In **Scene objects** it offers *Select asset*, *Open asset* (the same as double-clicking the asset in the asset panel; greyed out for a kind that has no editor of its own, such as a sprite or a -camera), *Add collider*, *Create container*, *Unpack container*, *Unparent*, -*Expand all* / *Collapse all* and *Remove*. The scene view's right-click menu is the same. +camera), *Add collider…* and *Add rigidbody…* (each opens a searchable menu: a new one or one +the project has, see [Colliders](Colliders)), *Fit to sprite* on a collider, *Create container*, +*Unpack container*, *Unparent*, *Expand all* / *Collapse all* and *Remove*. The scene view's right-click menu is the same. Both menus also offer **one *Open …* entry per asset the values point at** (#221): a sprite wearing a picture and a shader has *Open texture* and *Open shader*, in the asset panel at the top, for a placed object right below *Open asset*. They read the object's own values, so an diff --git a/Development.md b/Development.md index f36944e..08653ff 100644 --- a/Development.md +++ b/Development.md @@ -14,7 +14,7 @@ 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 [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) -node tools/seed-e2e.mjs && node tools/e2e.mjs # 1345 editor checks, screenshots in /tmp/gm-e2e-*.png +node tools/seed-e2e.mjs && node tools/e2e.mjs # 1348 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/Physics.md b/Physics.md index 7356547..ccdba4f 100644 --- a/Physics.md +++ b/Physics.md @@ -5,8 +5,9 @@ before the engine — see *Without a rigidbody* below. ## The rigidbody A **rigidbody** is an asset placed as a child of the object it moves, like a collider. Right-click -an object in **Scene objects** → *Add rigidbody*; an object takes one at most, and a collider, a -behavior, a tilemap or another rigidbody takes none. It is drawn as a green ring with an arrow in +an object in **Scene objects** → *Add rigidbody…* and pick **Create new rigidbody** or one the +project has already (searchable, the same as for colliders, #222); an object takes one at most, +and a collider, a behavior, a tilemap or another rigidbody takes none. It is drawn as a green ring with an arrow in edit mode and not at all in the game. Its rows: | Row | Default | What it does | diff --git a/Scene-editing.md b/Scene-editing.md index c58e8fd..441e649 100644 --- a/Scene-editing.md +++ b/Scene-editing.md @@ -67,7 +67,7 @@ label in. Rows with children **fold**: click the chevron (or press ←/→, or double-click the row) to open and close a subtree, right-click → **Expand all** / **Collapse all** for the whole scene. A scene opens fully collapsed — which rows are open is view state of the panel, never stored in -the project — and selecting an object anywhere (viewport, `Add collider`, `Create container`) +the project — and selecting an object anywhere (viewport, `Add collider…`, `Create container`) unfolds the way down to it and scrolls it into view, so a selection is never hidden. In play mode entities carry the same `parent` link: moving a parent entity moves its subtree, `Destroy` removes it. `Get position` exposes both the local and the world coordinates.