Files
Stefan MaierandClaude Opus 5.5 85dba477c3 Accept a client's fire origin only where a hand firing at the target can be, and let hosts turn it off (#486)
As reviewed: the host cannot tell a VR client from a modified flat one,
so a client could claim a hand 0.4 world units to any side and shoot
around a corner without its camera ever being exposed (the line from the
eye to the hand stops shooting through walls, not around edges).

- The hand must be where one firing at the target can be: no more than
  0.05 world units (0.15 m) behind the eye along the line to the target,
  0.2 (0.6 m: a lean and a hand held out) to its side, and 0.1 (0.3 m)
  above the eye (distributed_fire_origin_shape).
- The hands are looked from only after no eye (nor vehicle gun) had a
  line, and the hits only a hand let through are counted in the host's
  log of clients' hits.
- network.fire_origins (true by default; also a dedicated server's
  setting) turns the hand off: from the camera and vehicles' guns only.
- The message is distributed message 93 (92 is now the client's build).
- A client sends its fire origin when it changes and every eighth tick,
  not every tick.

Checked: ninja android builds without warnings in the changed files;
test_fire_origins.py (15 cases with 9 negative controls: ownership,
reach, the store, the resend and its record, and each of the shape's
three limits) passes, run on macOS as 64-bit; the rest of the harness
fails there only where it did before (32-bit layouts); network_format.py
--record adds message 93 and its structs.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-26 14:00:40 +01:00
..
2026-10-09 14:20:57 +13:00
2026-10-09 10:07:51 +13:00
2026-10-09 14:20:57 +13:00
2026-10-09 10:07:51 +13:00