diff options
author | Treeston <treeston.mmoc@gmail.com> | 2018-02-26 18:11:29 +0100 |
---|---|---|
committer | Treeston <treeston.mmoc@gmail.com> | 2018-02-26 18:11:29 +0100 |
commit | ec916db294760576ef4466d7e558f038dacecf20 (patch) | |
tree | 8b92963d29cb5f825feeb4c6acdf5f4a771a3d83 /src/server/game/Maps/Map.cpp | |
parent | e79c595b695ea5f35b8324efbb7741ccb102bce9 (diff) |
Core/VMap: Use fuzzy equality and gridmap tolerance for floor-finding. Closes #21338. Supersedes #21479.
Diffstat (limited to 'src/server/game/Maps/Map.cpp')
-rw-r--r-- | src/server/game/Maps/Map.cpp | 6 |
1 files changed, 5 insertions, 1 deletions
diff --git a/src/server/game/Maps/Map.cpp b/src/server/game/Maps/Map.cpp index 396138471f4..794d374e67b 100644 --- a/src/server/game/Maps/Map.cpp +++ b/src/server/game/Maps/Map.cpp @@ -2682,7 +2682,11 @@ void Map::GetFullTerrainStatusForPosition(float x, float y, float z, PositionFul // area lookup AreaTableEntry const* areaEntry = nullptr; WMOAreaTableEntry const* wmoEntry = nullptr; - if (vmapData.areaInfo && (z <= mapHeight || mapHeight <= vmapData.floorZ)) + // the vmap floor is our floor if either + // - the vmap floor is above the gridmap floor + // or + // - we are below the gridmap floor + if (vmapData.areaInfo && (G3D::fuzzyLt(z, mapHeight - GROUND_HEIGHT_TOLERANCE) || mapHeight <= vmapData.floorZ)) if ((wmoEntry = GetWMOAreaTableEntryByTripple(vmapData.areaInfo->rootId, vmapData.areaInfo->adtId, vmapData.areaInfo->groupId))) areaEntry = sAreaTableStore.LookupEntry(wmoEntry->areaId); |