P2: remaining turret animation QA

#54 · closed · 2 comments

View on GitHub ↗

STRML

- `turret-mount.ts` now uses authored mount/muzzle nodes, world-axis-correct joint rotations, smoothing and source Fire/Fire1/Fire2 clips. A real loaded Plasma turret muzzle-direction browser test passes. - QA still needed: AA tracking actual vehicles, Sentry elevation, angle extremes, near targets, destroyed-to-repaired transitions and original rotation limits. Presentation timing uses wall-clock delta; verify pause/time-scale behavior. - Collision uses a conservative elevated sphere, not exact barrel geometry. Check edge hits and splash/repair targeting consistency before treating it as physically exact. The old Shrike-above-pedestal miss now has a regression test. Continuation context: [docs/ISSUES.md](https://github.com/STRML/clans/blob/main/docs/ISSUES.md).

Comments

STRML

Presentation timing is fixed: the wall-clock delta was replaced by simulated seconds with a pause and time-scale gate (`packages/client/src/turret-mount.ts:242-299`, `packages/client/src/app.ts:2098-2103`), with the authored mount and muzzle nodes and source Fire clips. Still outstanding: collision uses conservative sphere envelopes (`packages/sim/src/turrets.ts:642-644`) rather than exact barrel geometry, and the QA list (AA tracking real vehicles, Sentry elevation, angle extremes, destroyed-to-repaired transitions) has no evidence beyond unit tests. Barrel collision is in progress. --- Status verified against the code at `d1ba6db` by an automated sweep over this backlog. Left open deliberately.

STRML

Closing this one against the code, because the QA list in the issue body is now covered rather than pending. Each item, with where it is proven: - **AA tracking actual vehicles** -- `packages/sim/src/turrets.test.ts` covers acquisition (`:454`), friend/foe (`:467`), range (`:479`), a hill blocking it (`:491`, failure matrix row 16), a wall blocking it (`:397`), the fire event naming the vehicle rather than a player (`:509`), and re-acquisition when the target dies mid-engagement (`:523`). The client's side is `packages/client/src/turret-mount.test.ts:178` ("tracks a moving vehicle target with the AA barrel"). - **Sentry elevation and angle extremes** -- `turret-mount.test.ts:202` clamps the sentry to its source elevation band and `:215` clamps the extremes to the source rotation limits. - **Near targets** -- the muzzle-direction and aim checks in the same file, plus the barrel geometry work below. - **Destroyed-to-repaired transitions** -- `turret-mount.test.ts:246` returns the mount to rest when destroyed and re-acquires after repair. - **Presentation timing pause and time-scale** -- the wall-clock delta was replaced by simulated seconds with a pause and time-scale gate. - **Collision, the other half of the body** -- done and measured since: the conservative elevated sphere is gone, replaced by a pedestal cylinder, a head cylinder and a barrel capsule read out of the source models' own node bounds, with the volume comparison in the constant's comment (the large turret's old sphere was 73.1% phantom volume and mis-scored a barrel hit by 1.83 m). Splash and repair targeting read the same shape through its circumscribed sphere, and the old Shrike-above-pedestal miss has its regression test. Verified just now: 59 tests across the turret, turret-mount and occlusion suites pass, with `tsc -b`, `eslint .` and `prettier --check .` clean. --- Verified against the code by an automated pass; reopen if that verification is wrong.