Turn/twist/free-aim sign family: negate ONCE at the key bridge (user-verified)
User live-tested: 'if i push the left arrow the mech turns right' -- correct, and it invalidated my earlier screenshot-forensics 'D=right verified' claim (the yaw telemetry actually agreed with the user all along: D gave POSITIVE yaw = CCW = LEFT; the sim uses math convention, positive = counter-clockwise, for turn AND twist). On the pod the RIO Ranger owned the hardware sign; the desktop bridge now negates in ONE place per channel family: - key_turn = -gBTDrive.turn (forced/BT_GOTO harness demands stay sim-frame, un-negated) - stickPosition.x = -gBTTwistAxis (Standard/Veteran torso stick) - SetFreeAimSlew call-site negations REMOVED (the bridge negation now flows through; double-flip removed) Matches the manual (p8): 'pulling your joystick to the right torso twists your Mech to the right.' User verified live: arrows steer correctly (Blackhawk, basic mode) and MadCat torso twist is correct in middle mode. LESSON (recorded): large-rotation screenshot comparisons are AMBIGUOUS (both directions put 'new scenery at an edge'); trust tracked landmarks, numeric telemetry with an established convention, or the user's live observation. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Fable 5
parent
02d5543c7f
commit
cb82d8c1d0
@@ -600,7 +600,13 @@ void
|
||||
{
|
||||
float key_throttle = gBTDrive.forced
|
||||
? gBTDrive.forcedThrottle : gBTDrive.throttle;
|
||||
float key_turn = gBTDrive.forced ? 0.0f : gBTDrive.turn;
|
||||
// PORT SIGN (user live-verified 2026-07-18: left arrow turned the
|
||||
// mech RIGHT): the sim's positive turnDemand is CCW (LEFT) -- math
|
||||
// convention, same as the torso twist. On the pod the RIO Ranger
|
||||
// owned the hardware sign; the desktop bridge must negate so that
|
||||
// input-right (positive) = turn RIGHT. Forced/BT_GOTO harness
|
||||
// demands are sim-frame already and stay un-negated.
|
||||
float key_turn = gBTDrive.forced ? 0.0f : -gBTDrive.turn;
|
||||
// Headless harness (forced mode only): BT_FORCE_TURN holds a steering
|
||||
// demand; BT_FORCE_SECONDS releases the forced throttle after n
|
||||
// sim-seconds while KEEPING the turn (the turn-in-place repro).
|
||||
@@ -734,7 +740,14 @@ void
|
||||
}
|
||||
else
|
||||
{
|
||||
stickPosition.x = gBTTwistAxis; // the torso axis
|
||||
// PORT SIGN: positive twist is CCW (left) like the turn;
|
||||
// negate so stick/E-key right = torso right (manual p8:
|
||||
// "pulling your joystick to the right torso twists your
|
||||
// 'Mech to the right"). The earlier "MadCat twist was
|
||||
// correct" call was based on the same misread screenshot
|
||||
// forensics as the turn -- the user's live left-arrow
|
||||
// test invalidated both.
|
||||
stickPosition.x = -gBTTwistAxis; // the torso axis
|
||||
pedalsPosition = key_turn; // A/D = the pedals
|
||||
// 'X' recenter pulse (2026-07-13): one-frame centerCommand
|
||||
// -> the sim arms recenterActive and Recenter (@004b6918)
|
||||
@@ -867,12 +880,9 @@ void
|
||||
//
|
||||
if (torso == 0 || !torso->GetHorizontalEnabled()) // raw torso+0x250 == 0
|
||||
{
|
||||
// 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
|
||||
// (sign handled ONCE at the key bridge: positive sim twist/slew
|
||||
// = CCW/left; the bridge negates so input-right = right)
|
||||
if (cockpit) cockpit->SetFreeAimSlew(stick_x); // raw cockpit+0x28c
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -907,7 +917,7 @@ void
|
||||
//
|
||||
if (torso == 0 || !torso->GetHorizontalEnabled())
|
||||
{
|
||||
if (cockpit) cockpit->SetFreeAimSlew(-stick_x); // PORT SIGN (see Standard)
|
||||
if (cockpit) cockpit->SetFreeAimSlew(stick_x); // (sign at the bridge)
|
||||
}
|
||||
else
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user