Fix WMO ramp/stair clipping with WoW-style floor snap and collision fixes

Remove active group fast path from getFloorHeight to fix bridge clipping.
Replace ground smoothing with immediate step-up snap (WoW-style: snap up,
smooth down). Accept upward Z from wall collision at all call sites. Skip
floor-like surfaces (absNz >= 0.45) in wall collision to prevent false
wall hits on ramps. Increase getFloorHeight allowAbove from 0.5 to 2.0
for ramp reacquisition. Prefer highest reachable surface in floor selection.
This commit is contained in:
Kelsi 2026-02-08 17:38:30 -08:00
parent ef54f62df0
commit f8aba30f2d
4 changed files with 425 additions and 253 deletions

View file

@ -161,6 +161,11 @@ private:
int insideWMOCheckCounter = 0;
glm::vec3 lastInsideWMOCheckPos = glm::vec3(0.0f);
// Cached camera WMO floor query (skip if camera moved < 0.3 units)
glm::vec3 lastCamFloorQueryPos = glm::vec3(0.0f);
std::optional<float> cachedCamWmoFloor;
bool hasCachedCamFloor = false;
// Swimming
bool swimming = false;
bool wasSwimming = false;