diff --git a/README.md b/README.md index f147e0d..a615b0c 100644 --- a/README.md +++ b/README.md @@ -54,8 +54,8 @@ fn main() { ## API-Überblick - `PlatformConfig` – Titel, Fenster-/Framebuffer-Größe, optionales - `aspect_ratio` (Letterbox), Palette, VSync. Default = 800×600 Fenster, - 320×240 Framebuffer, 4:3, `palette::RGB332`. + `aspect_ratio` (Letterbox), Palette, VSync, `mouse_visible`, `mouse_capture`. + Default = 800×600 Fenster, 320×240 Framebuffer, 4:3, `palette::RGB332`. - `Platform::new(cfg)` – Fenster + GPU-Pipeline aufsetzen. - `poll_events(timeout)` – GLFW-Events einlesen (`None` = blockierend). - `drain_events()` – Iterator über `Event` (`Key`, `Char`, `MouseMove`, @@ -63,6 +63,27 @@ fn main() { - `framebuffer_mut()` – `&mut [u8]` der Länge `w*h`, je Pixel ein Paletten-Index. - `present()` – Frame auf das Fenster bringen. - `should_close()` / `request_close()`. +- `set_mouse_visible(bool)` – Cursor anzeigen oder verstecken (freie Bewegung). +- `set_mouse_capture(bool)` – Cursor einsperren + verstecken (`CursorMode::Disabled`), + liefert unbegrenzte Bewegungsdeltas. Impliziert `mouse_visible = false`. +- `mouse_delta() -> (f32, f32)` – akkumulierte Mausbewegung seit dem letzten Aufruf + in Window-Pixeln, danach genullt. Nützlich für FPS-Kamerasteuerung. + +### Cursor-Modi + +| `mouse_visible` | `mouse_capture` | GLFW-Modus | Einsatz | +|---|---|---|---| +| `true` | `false` | Normal | Standard-UI | +| `false` | `false` | Hidden | Eigener Cursor im Framebuffer | +| `*` | `true` | Disabled | FPS-Kamera, unbegrenzte Deltas | + +```rust +// FPS-Kamera +p.set_mouse_capture(true); +let (dx, dy) = p.mouse_delta(); +yaw += dx * sensitivity; +pitch += dy * sensitivity; +``` ## Paletten