Authentic target acquisition LIVE: reticle slew + pick-ray lock + aimed zone damage (task #36)
The engine Reticle model (MUNGA/RETICLE.h [T0]) reconstructed end to end: - Mech::targetReticle is a real Reticle member bound to the TargetReticle attribute (0x1d), per the RP VTV analog (VTV.h targetReticle). - Crosshair slew: mouse -> client rect -> reticle coords (the pod stick free-aim channel's dev-box stand-in); BT_AIM="x y" pins it headless. LMB fires lasers / RMB missiles (alongside SPACE/CTRL). - Pick ray: the ACTIVE eye publishes pos + LookAtRH basis (BTSetAimCamera, L4VIDRND view-write site) + the render loop publishes proj._22; BTGetAimRay builds the world ray, Mech::PickRayHit slab-tests it against the collision template's ExtentBox via the engine's BoundingBox::HitBy (local frame; clips the Line at entry) -> world hull point. - Designation: the mech under the crosshair designates (sticky; re-hover refreshes; cleared when the target leaves the roster at burial); the entity target slots 0x37c/0x388/0x38c feed the whole weapon path. - Aimed fire: while HOT the impact point is the PICKED hull point -> the STEP-6 cylinder lookup resolves the zone under the crosshair (verified: center-aim -> head-band zone 13 dominant). Off-crosshair the sticky designation converges on center mass. - HUD: the aim group draws at the slewed position ([0x9a] translate, contained by push/pop); the designator ring tracks the target's projected point (subB9 hot / subB8 designated, BTProjectToReticle); edge arrows when off-screen/behind. - AUTHENTIC gating: no fire arc exists in the binary (FireWeapon fires whenever HasActiveTarget, part_013.c:7758) -> BT_FIRE_ARC is now an explicit OPT-IN presentation clamp; the hardwired gEnemyMech lock and the projectile path's gEnemyMech fallback are removed. - Fixed en route: every renderable rebuild stomped mCamera back to the chase eye (start-inside silently lost the cockpit camera; the aim feed exposed it). BTL4VideoRenderer::mViewInside persists the chosen view. Verified headless: BT_AIM="0 0" -> HOT lock, pick hits the hull face at exact range, aimed zones resolve; BT_AIM="0.8 0.3" -> no lock, zero damage, zero missile launches; kill chain completes to wreck + smoke. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Fable 5
parent
6988821525
commit
d78bde066d
@@ -47,9 +47,24 @@ converges on the target with NO aim/arc test (part_013.c:7758: `range <= weaponR
|
||||
enemy. `MechWeapon::UpdateTargetState` (`FUN_004b9bdc` [T1]): `targetWithinRange = dist <
|
||||
(1 − hostZoneDamage) × weaponRange` — damage DEGRADES weapon reach; that flag is the HUD pip's
|
||||
lit state. The 0x388 WRITER (the per-frame reticle→mech copy) is in an un-exported decomp gap.
|
||||
**Port status:** acquisition is BRING-UP (target hardwired to `gEnemyMech` + a `BT_FIRE_ARC`
|
||||
±30°+torso-reach cone gating trigger/damage — both PORT stand-ins, mech4.cpp targeting block);
|
||||
the authentic slew+pick chain is NOT yet reconstructed. [T2 status / T0+T1 model]
|
||||
**Port status: RECONSTRUCTED + runtime-verified (task #36, 2026-07-08) [T2].** The chain:
|
||||
`Mech::targetReticle` (real `Reticle` member, bound to the TargetReticle attr 0x1d) ← slew from
|
||||
the MOUSE (dev-box stand-in for the pod stick free-aim; `BT_AIM="x y"` pins it headless) →
|
||||
`BTGetAimRay` (L4VIDEO; the ACTIVE eye publishes pos+LookAtRH basis via `BTSetAimCamera`, the
|
||||
render loop publishes proj._22) → `Mech::PickRayHit` (world ray → local frame →
|
||||
`BoundingBox::HitBy` slab test vs the collision template's ExtentBox → world hit point) → the
|
||||
entity target slots. Designation is STICKY (persists off-crosshair; re-hover refreshes; cleared
|
||||
when the target leaves the roster at burial). While HOT (crosshair on the hull) the impact point
|
||||
= the PICKED point → STEP-6 resolves the zone under the crosshair (verified: center-aim at the
|
||||
head band → zone 13 dominant); off-crosshair the converge point is center-mass chest. The HUD
|
||||
draws the aim group at the slewed position ([0x9a] translate list, contained by push/pop), the
|
||||
designator ring at the target's projected point (subB9 hot / subB8 designated,
|
||||
`BTProjectToReticle`), and the edge arrows when off-screen/behind. `BT_FIRE_ARC` is now an
|
||||
EXPLICIT OPT-IN presentation clamp (unset = authentic no-arc). The old hardwired lock, the
|
||||
±30°-default cone, and the projectile path's gEnemyMech fallback are all REMOVED. LMB fires
|
||||
lasers / RMB missiles (with SPACE/CTRL). ⚠ A view-selection bug was fixed en route: every
|
||||
renderable rebuild stomped `mCamera` back to the chase eye (btl4vid `mViewInside` now persists
|
||||
the chosen view — the aim camera feed and the V toggle both depend on it).
|
||||
|
||||
## Firing arc + muzzles
|
||||
There is NO firing-arc field in the binary (`Emitter::FireWeapon` fires whenever HasActiveTarget) —
|
||||
|
||||
Reference in New Issue
Block a user