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

@ -722,9 +722,13 @@ void CameraController::update(float deltaTime) {
if (flyDescend) flyMove.z -= 1.0f;
if (glm::length(flyMove) > 0.001f) {
flyMove = glm::normalize(flyMove);
float flySpeed = (flightSpeedOverride_ > 0.0f && flightSpeedOverride_ < 200.0f
&& !std::isnan(flightSpeedOverride_))
? flightSpeedOverride_ : speed;
float flyFwdSpeed = (flightSpeedOverride_ > 0.0f && flightSpeedOverride_ < 200.0f
&& !std::isnan(flightSpeedOverride_))
? flightSpeedOverride_ : speed;
float flyBackSpeed = (flightBackSpeedOverride_ > 0.0f && flightBackSpeedOverride_ < 200.0f
&& !std::isnan(flightBackSpeedOverride_))
? flightBackSpeedOverride_ : flyFwdSpeed * 0.5f;
float flySpeed = (nowBackward && !nowForward) ? flyBackSpeed : flyFwdSpeed;
targetPos += flyMove * flySpeed * physicsDeltaTime;
}
targetPos.z += verticalVelocity * physicsDeltaTime;