34 lines
1.1 KiB
Markdown
34 lines
1.1 KiB
Markdown
# lib-core.camera
|
|
|
|
P.0 2D camera state + begin/finish wrapper. Holds `target = {x, y}` + `zoom`,
|
|
wraps `engine.render.camera_2d_begin/end` with current state.
|
|
|
|
- Lib-ID: `lib-core.camera`
|
|
- Version: `0.1.0`
|
|
- Spec: `meta/docs/superpowers/specs/2026-05-09-p0-lib-camera-design.md`
|
|
|
|
Forward-compat stubs (DEPRECATED-MVP) for follow, set_bounds, lerp_to, shake,
|
|
set_rotation. See `meta/docs/architecture/render-pipeline.md` and
|
|
`meta/docs/architecture/map-topology.md §7.3` for full target context.
|
|
|
|
## API
|
|
- `camera.set_target(x, y)` — set world-coords for screen-center
|
|
- `camera.set_zoom(z)` — set zoom (positive number)
|
|
- `camera.target() → {x, y}` — current target
|
|
- `camera.zoom() → number` — current zoom
|
|
- `camera.begin()` — push camera transform (must be inside render hook)
|
|
- `camera.finish()` — pop camera transform (`end` is Lua keyword)
|
|
|
|
## Consumer pattern
|
|
```lua
|
|
local camera = require("lib-core.camera")
|
|
camera.set_target(256, 256) -- world-coords
|
|
camera.set_zoom(1.0)
|
|
function render(ctx)
|
|
engine.render.clear_color(...)
|
|
camera.begin()
|
|
-- draw world here
|
|
camera.finish()
|
|
end
|
|
```
|