Skip to content

feat(physics+combat): window-gap passability + shoot-through#393

Merged
Chemaclass merged 1 commit into
mainfrom
feat/388-window-gap-passability
Jul 4, 2026
Merged

feat(physics+combat): window-gap passability + shoot-through#393
Chemaclass merged 1 commit into
mainfrom
feat/388-window-gap-passability

Conversation

@Chemaclass

Copy link
Copy Markdown
Owner

📚 Description

The 4/4 sub-issue that completes epic #375 Phase 3 (variable ceilings): a lowered ceiling now blocks movement and shots, not just the eye. Behaviour-neutral on every shipped (flat-ceiling) level.

🔖 Changes

  • Physics try-move gains a headroom gate: a cell is walk-through only when its opening ceiling-z - floor-z clears player-height (= one fz-step, 0.25). A pinched lintel blocks walking but stays see-through (upper slice still paints, feat(render): upper wall-slice painter + ceiling-cast row distance #387). player-height = fz-step keeps L2's fz-0.75 platform (opening 0.25) walkable.
  • Combat hitscan routes through new cast-shot-dist (gap-aware cast-ray): a floor cell whose ceiling dropped to/below the muzzle height (0.5 + player z) stops the shot; higher ceilings are shoot-through. Floor risers do not block shots, so tiered-floor levels are unchanged.
  • Deterministic physics + engine unit tests pin block/pass/neutral cases; docs + CHANGELOG updated. Enemy chase headroom parity deferred (no shipped lowered-ceiling content), consistent with the epic's other deferred enemy-elevation work.

Review: clean-code-reviewer approved, no blocking findings.

Closes #388

@Chemaclass Chemaclass added the enhancement New feature or request label Jul 4, 2026
@Chemaclass Chemaclass self-assigned this Jul 4, 2026
@Chemaclass Chemaclass merged commit 60fea5c into main Jul 4, 2026
1 check passed
@Chemaclass Chemaclass deleted the feat/388-window-gap-passability branch July 4, 2026 19:52
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

enhancement New feature or request

Projects

None yet

Development

Successfully merging this pull request may close these issues.

feat(physics+combat): window-gap passability + shoot-through

1 participant