diff --git a/Architecture.md b/Architecture.md index 0543f38..dfbfe7a 100644 --- a/Architecture.md +++ b/Architecture.md @@ -174,7 +174,7 @@ src/viewport/ WorldViewport (the drawing of a world or a holder, the ba a `ViewSource` — the project and word of a change — so a released game draws without the editor, #266; a view through a camera keeps only what that camera `Sees` and lays one see-through view per overlay camera over itself, each handed its view and frame and - drawn like any other, #302), gamePointer (the mouse handed to a running world), projectFiles (the file + drawn like any other, #302), gamePointer (the mouse handed to a running world, in world units and on the main camera's picture, which `World.pointerThrough` turns into any other camera's view with `pointerThrough` in `core/properties/camera`, #304), projectFiles (the file libraries pointed at the server, and what a project names fetched ahead), fullscreen + FullscreenCorner (the browser's Fullscreen API, when the corner button shows, and the button itself, shared by the Game tab and the released game, #267), diff --git a/Behaviors.md b/Behaviors.md index 9e2448a..6ae59e6 100644 --- a/Behaviors.md +++ b/Behaviors.md @@ -465,6 +465,14 @@ the inspector). `On mouse wheel` follows the same rule; what turned within one frame arrives as one `delta`, one notch of a mouse wheel being 1. A part a clip area cuts off is never hit, by neither of them nor by `Is hovered` (see [Concepts](Concepts)). + `Mouse position` and `Is hovered` take a **`camera`** (#304). Left open, they see the mouse + through the main camera as before. With a camera, they see it through that camera's picture as + an overlay camera lays it on, so a HUD button that only an overlay camera shows can be hovered. + `in view` then says whether the mouse is on that camera's picture; a camera that is not drawn + (switched off, or a second camera without *Overlay*) never has it. The position is kept on the + picture, so a main camera on the move does not drag the mouse across the HUD. `On click` and + `Mouse button` stay with the main camera. A HUD button is clicked with `pressed` of + `Mouse button` together with `Is hovered` through its camera. - **Idiomatic movement** (the demo's "Mover", five nodes): `On update → Move(Owner, dx = Axis input.x, dy = Axis input.y, scale = speed, dt = On update.dt)`, `speed` being a `Variables` node. - **Idiomatic platformer** (the example game's "Player"): `On update` adds `gravity · dt` to a diff --git a/Concepts.md b/Concepts.md index 8c982ae..31eff02 100644 --- a/Concepts.md +++ b/Concepts.md @@ -54,13 +54,17 @@ the main camera at `z` 0. Something meant to lie *below* the world goes to a cam that is made the main one, with the game camera as an overlay. The main camera decides the size of the picture and the zoom of the tab; an overlay camera is fitted into that picture without distortion, so one of the same size and zoom covers it exactly. The mouse is reported through the -main camera (#304 is about asking another). Two cameras switched on without *Overlay* draw as +main camera; `Mouse position` and `Is hovered` ask another one through their `camera` input +(#304, see *Mouse* in [Behaviors](Behaviors)). Two cameras switched on without *Overlay* draw as before: through the first one only. The Scene tab shows every layer. A camera can also wear a shader over its picture (#299, see *Wearing a shader* in [Shaders](Shaders)); it works on that camera's picture alone, before the pictures are laid on top of each other. Measured in the checks (step 63): a green sprite of an overlay camera at `z` -10 covers a red one of the main camera at `z` 1000, a `UI` sprite in front of the main camera and a `Default` one in -front of the overlay stay away, and the same holds in the running game. +front of the overlay stay away, and the same holds in the running game. With the overlay camera +zoomed 2x, the real mouse 30 units right of the centre of the picture lies 15 units right of the +overlay camera's centre (2015 at a camera on 2000): `Is hovered` through it finds the green +sprite, through the main camera not. **A clip area cuts what is below it** (#260). It is an object of its own (*Clip area*, `+` menu) with a `width` x `height`, and it turns, scales and mirrors with its parent like a sprite. diff --git a/Development.md b/Development.md index 9a4a3a9..3924ec9 100644 --- a/Development.md +++ b/Development.md @@ -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 # 1729 editor checks, screenshots in /tmp/gm-e2e-*.png +node tools/seed-e2e.mjs && node tools/e2e.mjs # 1730 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