Mission rendering and camera #3

Closed
opened 2026-08-06 21:51:49 +00:00 by icub3d · 0 comments
Owner

Put the map on screen and let the player point at it. Coloured PBR primitives only — no
glTF, no art. The goal is legibility, not looks.

Scope

  • Render tiles from the loaded MapAsset as PBR meshes, honouring tile height.
  • A camera the player can orbit, pan, and zoom, with sensible clamps.
  • Ray-to-tile picking: given a cursor position, resolve the tile under it.
  • Hover highlight drawn with theme::semantic tokens. No Color::srgb and no hex
    literal outside src/theme/ (CLAUDE.md § Visual Style).

Acceptance criteria

  • Entering GameState::Mission spawns the map and camera; leaving it tears both down.
  • Picking resolves the correct tile at varying camera angles and tile heights.
  • The hover cue pairs colour with a shape or outline — colour alone never carries
    information.
  • No colour, size, or spacing literal appears outside src/theme/.

Notes

Verify every Bevy API against the pinned 0.19 before writing it. Picking and camera
APIs in particular have moved between releases.

There is no display in this environment, so this lands verified by build and test only.
The PR should say what the reviewer needs to look at when they run it.

Put the map on screen and let the player point at it. Coloured PBR primitives only — no glTF, no art. The goal is legibility, not looks. ## Scope - Render tiles from the loaded `MapAsset` as PBR meshes, honouring tile height. - A camera the player can orbit, pan, and zoom, with sensible clamps. - Ray-to-tile picking: given a cursor position, resolve the tile under it. - Hover highlight drawn with `theme::semantic` tokens. No `Color::srgb` and no hex literal outside `src/theme/` (`CLAUDE.md` § Visual Style). ## Acceptance criteria - [ ] Entering `GameState::Mission` spawns the map and camera; leaving it tears both down. - [ ] Picking resolves the correct tile at varying camera angles and tile heights. - [ ] The hover cue pairs colour with a shape or outline — colour alone never carries information. - [ ] No colour, size, or spacing literal appears outside `src/theme/`. ## Notes Verify every Bevy API against the pinned `0.19` before writing it. Picking and camera APIs in particular have moved between releases. There is no display in this environment, so this lands verified by build and test only. The PR should say what the reviewer needs to look at when they run it.
Sign in to join this conversation.
No description provided.