optic-window 0.0.1

Windowing and input for Optic engine — winit wrapper with per-frame key/mouse/gamepad state
Documentation

Windowing and input subsystem for the Optic engine.

Wraps [winit] (window creation, event loop) and [gilrs] (gamepad support) into a frame-based input model. Input state is captured once per frame as a snapshot, avoiding callback-driven event handling in game code.

Frame-based input

Every input method accepts an [Is] action to query:

Action Meaning
[Is::Pressed] True only on the exact frame the button went down
[Is::Released] True only on the exact frame the button came up
[Is::Held] True every frame while the button is held

This is the same pattern used by frame-based state machines: Pressed is the leading edge, Released is the trailing edge, Held is the level.

Architecture

The [Window] owns the winit window handle. The [Events] struct holds per-frame input state (keys, mouse, gamepad). The game loop (optic_loop) drives both: it processes winit events into Events via process_window_event and calls end_frame at the end of each frame.