Fixed-torso free-aim left/right was reversed (tester report confirmed)
Field report: 'left/right is reversed'. Investigation with screenshot + numeric verification found it channel-specific: - A/D leg steering: CORRECT (D tap -> scenery slides left = turns right; verified via cockpit screenshots) - Torso TWIST (turning-torso mechs, e.g. MadCat): CORRECT all along (E -> currentTwist +0.27 = right -- consistent with weeks of validated play; an interim blanket negation that broke this is reverted) - Fixed-torso FREE-AIM slew (Blackhawk & friends): REVERSED -- E/right panned the view LEFT. The slew consumer pans opposite the twist convention; on the pod the RIO layer owned the hardware sign. Fix: negate stick_x ONLY at the two SetFreeAimSlew call sites (Standard + Veteran branches). Verified after fix: MadCat E -> currentTwist +0.270 (right); Blackhawk E -> view pans right. New BT_INPUT_LOG diags: [input] twist in/currentTwist (Standard branch) + mechYaw in the Basic elev line. Note for testers: the tester was almost certainly flying a fixed-torso mech -- 'reversed' reports should always record WHICH mech. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Fable 5
parent
1271d3bc76
commit
af80e62070
@@ -834,10 +834,13 @@ void
|
||||
if (getenv("BT_INPUT_LOG"))
|
||||
{
|
||||
static float s_eacc2 = 0.0f; s_eacc2 += time_slice;
|
||||
if (s_eacc2 >= 1.0f) { s_eacc2 = 0.0f;
|
||||
if (s_eacc2 >= 0.5f) { s_eacc2 = 0.0f;
|
||||
YawPitchRoll ypr;
|
||||
ypr = mech->localOrigin.angularPosition;
|
||||
DEBUG_STREAM << "[input] mppr elev in=" << stick_y
|
||||
<< " torsoElev=" << torso->CurrentElevation()
|
||||
<< " vel=" << torso->ElevationVelocity()
|
||||
<< " mechYaw=" << (Scalar)ypr.yaw
|
||||
<< "\n" << std::flush; }
|
||||
}
|
||||
}
|
||||
@@ -864,13 +867,26 @@ void
|
||||
//
|
||||
if (torso == 0 || !torso->GetHorizontalEnabled()) // raw torso+0x250 == 0
|
||||
{
|
||||
if (cockpit) cockpit->SetFreeAimSlew(stick_x); // raw cockpit+0x28c
|
||||
// PORT SIGN (field report 2026-07-18, 'left/right reversed' on
|
||||
// FIXED-TORSO mechs): the free-aim slew consumer pans the view
|
||||
// opposite the torso-twist convention (E/right panned LEFT on
|
||||
// the Blackhawk; the MadCat's real twist was CORRECT). Negate
|
||||
// only this channel so stick-right = aim-right on both.
|
||||
if (cockpit) cockpit->SetFreeAimSlew(-stick_x); // raw cockpit+0x28c
|
||||
}
|
||||
else
|
||||
{
|
||||
torso->SetAnalogTwistAxis(stick_x); // raw torso+0x1f0
|
||||
}
|
||||
if (torso) torso->SetAnalogElevationAxis(stick_y); // raw torso+0x1f4
|
||||
if (torso && getenv("BT_INPUT_LOG"))
|
||||
{
|
||||
static float s_tacc = 0.0f; s_tacc += time_slice;
|
||||
if (s_tacc >= 0.5f) { s_tacc = 0.0f;
|
||||
DEBUG_STREAM << "[input] twist in=" << stick_x
|
||||
<< " currentTwist=" << torso->CurrentTwist()
|
||||
<< "\n" << std::flush; }
|
||||
}
|
||||
|
||||
turnDemand = (pedal_3 == 0.0f) ? 0.0f : pedal_3;
|
||||
|
||||
@@ -891,7 +907,7 @@ void
|
||||
//
|
||||
if (torso == 0 || !torso->GetHorizontalEnabled())
|
||||
{
|
||||
if (cockpit) cockpit->SetFreeAimSlew(stick_x);
|
||||
if (cockpit) cockpit->SetFreeAimSlew(-stick_x); // PORT SIGN (see Standard)
|
||||
}
|
||||
else
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user