fix(motion): apply VectorUpdate.Omega to remote body (L.3.1 Task 6)
VectorUpdate.Omega was parsed by WorldSession but never written to the remote body's Omega field, leaving remote jumping/turning arcs flat. Apply it alongside the existing Velocity assignment. Mirrors retail SmartBox::DoVectorUpdate (acclient @ 0x004521C0) which calls both CPhysicsObj::set_velocity AND CPhysicsObj::set_omega. Same 4 pre-existing test failures, no regression. Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
This commit is contained in:
parent
ae79e34a6d
commit
e08accf7c2
1 changed files with 6 additions and 0 deletions
|
|
@ -3081,6 +3081,12 @@ public sealed class GameWindow : IDisposable
|
||||||
// remote update will integrate Position += Velocity × dt + 0.5 × Accel × dt².
|
// remote update will integrate Position += Velocity × dt + 0.5 × Accel × dt².
|
||||||
rm.Body.Velocity = update.Velocity;
|
rm.Body.Velocity = update.Velocity;
|
||||||
|
|
||||||
|
// L.3.1 Task 6: apply Omega too. Was parsed but ignored, leaving
|
||||||
|
// remote jumping/turning arcs flat. Mirrors retail SmartBox::
|
||||||
|
// DoVectorUpdate (acclient @ 0x004521C0) which calls both
|
||||||
|
// CPhysicsObj::set_velocity AND CPhysicsObj::set_omega.
|
||||||
|
rm.Body.Omega = update.Omega;
|
||||||
|
|
||||||
// Mark airborne when the launch has meaningful +Z. Threshold
|
// Mark airborne when the launch has meaningful +Z. Threshold
|
||||||
// 0.5 m/s rejects noise / horizontal-only updates (server might
|
// 0.5 m/s rejects noise / horizontal-only updates (server might
|
||||||
// also use VectorUpdate for non-jump events). The per-tick
|
// also use VectorUpdate for non-jump events). The per-tick
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue