physics: add server flight-back speed override to CameraController

SMSG_FORCE_FLIGHT_BACK_SPEED_CHANGE was already ACK'd and stored in
serverFlightBackSpeed_, but the value was never accessible or synced
to the CameraController. Backward flight movement always used forward
flight speed (flightSpeedOverride_), making it faster than the server
intended.

- Add getServerFlightBackSpeed() accessor in GameHandler
- Add flightBackSpeedOverride_ field and setter in CameraController
- Apply it in the fly movement block: backward-only flight uses the
  back speed; forward or strafing uses the forward speed as WoW does
- Fallback: 50% of forward flight speed when override is unset
- Sync per-frame in application.cpp alongside the other speed overrides
This commit is contained in:
Kelsi 2026-03-10 14:05:50 -07:00
parent a33f635490
commit e2f65dfc59
4 changed files with 11 additions and 3 deletions

View file

@ -96,6 +96,7 @@ public:
void setSwimSpeedOverride(float speed) { swimSpeedOverride_ = speed; }
void setSwimBackSpeedOverride(float speed) { swimBackSpeedOverride_ = speed; }
void setFlightSpeedOverride(float speed) { flightSpeedOverride_ = speed; }
void setFlightBackSpeedOverride(float speed) { flightBackSpeedOverride_ = speed; }
void setRunBackSpeedOverride(float speed) { runBackSpeedOverride_ = speed; }
void setMovementRooted(bool rooted) { movementRooted_ = rooted; }
bool isMovementRooted() const { return movementRooted_; }
@ -284,6 +285,7 @@ private:
float swimSpeedOverride_ = 0.0f;
float swimBackSpeedOverride_ = 0.0f;
float flightSpeedOverride_ = 0.0f;
float flightBackSpeedOverride_ = 0.0f;
float runBackSpeedOverride_ = 0.0f;
// Server-driven root state: when true, block all horizontal movement input.
bool movementRooted_ = false;