Torso elevation (pitch aim) wired: the pod stick's Y axis lives
The mechs could always tilt their aim up/down -- Torso models the full vertical axis (currentElevation, rate, VerticalLimitTop/Bottom, recenter) and EVERY 1995 control mode routes stickPosition.y into Torso::SetAnalogElevationAxis -- but the desktop bridge hard-zeroed stick Y, so the axis was dead on a keyboard rig. The one pod control the remap left unwired. - btinput: JoystickY axis -> elevTarget/elevActive/elevAbsolute - mech4 shim: sElev integrator (same walk/spring model as the twist; X recenters pitch too via gBTElevRecenter) - mechmppr bridge: feeds stickPosition.y every bridged frame (the old unconditional zero removed); both mode branches covered - CONTROLS.MAP (+ numpad profile + compiled default): R/F = aim up/down, pad LeftStickY = elevation (was unused) - torso.hpp: CurrentElevation()/ElevationVelocity() accessors (diag) - [mppr] trace gains stickY (note: the trace reads AFTER the next frame's device push re-zeroes the stick -- input flows regardless) Verified live: R held -> torso elevation climbs at the authored rate and clamps at 0.349066 rad = exactly 20.0 deg (the Blackhawk's VerticalLimitTop); release holds the aim. The eyepoint correctly stays level -- pitch aims the GUNS and reads on the HUD's vertical elevation tape, as in the pod. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Fable 5
parent
0a77d8e54b
commit
1271d3bc76
@@ -719,6 +719,14 @@ void
|
||||
gBTModeCycle = 0;
|
||||
CycleControlModeNow();
|
||||
}
|
||||
// TORSO ELEVATION (pitch): the pod stick's Y axis -- every
|
||||
// control mode routes stickPosition.y into
|
||||
// Torso::SetAnalogElevationAxis below, so the bridge feeds
|
||||
// it in BOTH branches (keys R/F or a pad stick via btinput).
|
||||
{
|
||||
extern float gBTElevAxis;
|
||||
stickPosition.y = gBTElevAxis;
|
||||
}
|
||||
if (controlMode == BasicMode)
|
||||
{
|
||||
stickPosition.x = key_turn;
|
||||
@@ -751,7 +759,8 @@ void
|
||||
}
|
||||
}
|
||||
}
|
||||
stickPosition.y = 0.0f;
|
||||
// (stickPosition.y no longer zeroed here -- the bridge above
|
||||
// feeds the elevation axis every bridged frame, 2026-07-18)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -822,6 +831,15 @@ void
|
||||
{
|
||||
torso->SetAnalogElevationAxis(stick_y); // raw torso+0x1f4 (500)
|
||||
torso->SetAnalogTwistAxis(0.0f); // raw torso+0x1f0
|
||||
if (getenv("BT_INPUT_LOG"))
|
||||
{
|
||||
static float s_eacc2 = 0.0f; s_eacc2 += time_slice;
|
||||
if (s_eacc2 >= 1.0f) { s_eacc2 = 0.0f;
|
||||
DEBUG_STREAM << "[input] mppr elev in=" << stick_y
|
||||
<< " torsoElev=" << torso->CurrentElevation()
|
||||
<< " vel=" << torso->ElevationVelocity()
|
||||
<< "\n" << std::flush; }
|
||||
}
|
||||
}
|
||||
if (cockpit)
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user