fix: suspend gravity for 10s after world entry to prevent WMO fall-through

Stormwind WMO collision takes 25+ seconds to fully load. The warmup
ground check couldn't detect the WMO floor because collision data
wasn't finalized yet. Player spawned and immediately fell through
the unloaded WMO floor into the terrain below (Dun Morogh).

New approach: suspendGravityFor(10s) after world entry. Gravity is
disabled (Z position frozen) until either:
1. A floor is detected by the collision system (gravity resumes instantly)
2. The 10-second timer expires (gravity resumes as fallback)

This handles the case where WMO collision loads during the first few
seconds of gameplay — the player hovers at spawn Z until the floor
appears, then lands normally.

Also fixes faction language for chat (ORCISH for Horde, COMMON for
Alliance) and adds SMSG_MESSAGECHAT diagnostic logging.
This commit is contained in:
Kelsi 2026-03-28 15:50:13 -07:00
parent b1e2b8866d
commit 91c6eef967
4 changed files with 25 additions and 1 deletions

View file

@ -2175,6 +2175,7 @@ void Application::update(float deltaTime) {
if (renderer && renderer->getCameraController()) {
renderer->getCameraController()->clearMovementInputs();
renderer->getCameraController()->suppressMovementFor(1.0f);
renderer->getCameraController()->suspendGravityFor(10.0f);
}
loadOnlineWorldTerrain(entry.mapId, entry.x, entry.y, entry.z);
}
@ -2419,6 +2420,7 @@ void Application::setupUICallbacks() {
if (ft) *ft = renderPos;
renderer->getCameraController()->clearMovementInputs();
renderer->getCameraController()->suppressMovementFor(1.0f);
renderer->getCameraController()->suspendGravityFor(10.0f);
}
worldEntryMovementGraceTimer_ = 2.0f;
taxiLandingClampTimer_ = 0.0f;
@ -2457,6 +2459,7 @@ void Application::setupUICallbacks() {
if (ft) *ft = renderPos;
renderer->getCameraController()->clearMovementInputs();
renderer->getCameraController()->suppressMovementFor(1.0f);
renderer->getCameraController()->suspendGravityFor(10.0f);
}
pendingWorldEntry_ = PendingWorldEntry{mapId, x, y, z};
return;