fix(B.6 slice 2): don't cancel autowalk on the companion InterpretedMotionState
Prior trace (launch-slice2.log) showed ACE follows every mt=0x06 MoveToObject immediately with an mt=0x00 InterpretedMotionState (cmd=0x0007 RunForward, fwdSpd=2.86) — the locomotion echo for the same auto-walk, NOT a cancel. My wiring was treating the second packet as 'server intent changed' and calling EndServerAutoWalk, which killed the auto-walk on frame 1. Result: [autowalk-begin] immediately followed by [autowalk-end reason=motion-non-moveto] and zero visible motion. Remove the over-eager cancel. The two natural cancel paths remain: arrival detection inside ApplyAutoWalkOverlay, and user-input cancellation (any movement key). A fresh MoveToObject re-targets via BeginServerAutoWalk overwrite, which is the correct sticky-targeting behavior.
This commit is contained in:
parent
b936ef8b0b
commit
f18de7ccde
1 changed files with 13 additions and 7 deletions
|
|
@ -3345,13 +3345,19 @@ public sealed class GameWindow : IDisposable
|
|||
$"[autowalk-begin] dest=({destWorld.X:F2},{destWorld.Y:F2},{destWorld.Z:F2}) minDist={pathData.MinDistance:F2} objDist={pathData.DistanceToObject:F2} towards={update.MotionState.MoveTowards}"));
|
||||
}
|
||||
}
|
||||
else if (_playerController.IsServerAutoWalking)
|
||||
{
|
||||
// A non-MoveTo motion arrived (e.g., Ready, or a
|
||||
// user-input echo) — server's auto-walk intent is
|
||||
// gone; release the local driver.
|
||||
_playerController.EndServerAutoWalk("motion-non-moveto");
|
||||
}
|
||||
// Note: do NOT cancel auto-walk on a non-MoveTo motion
|
||||
// arriving. The trace (2026-05-14, launch-slice2.log)
|
||||
// shows ACE follows every mt=0x06 MoveToObject
|
||||
// immediately with an mt=0x00 InterpretedMotionState
|
||||
// (cmd=0x0007 RunForward, fwdSpd=2.86) — the
|
||||
// companion locomotion echo, NOT a cancel. The two
|
||||
// travel as separate packets but both belong to the
|
||||
// same auto-walk. Cancelling on the InterpretedMotionState
|
||||
// killed the auto-walk on frame 1. Arrival detection
|
||||
// (inside ApplyAutoWalkOverlay) and user-input
|
||||
// cancellation (same) are the two natural end paths;
|
||||
// a fresh MoveToObject re-targets via BeginServerAutoWalk
|
||||
// overwrite.
|
||||
}
|
||||
}
|
||||
else
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue