diff options
Diffstat (limited to 'src/game/Map.cpp')
-rw-r--r-- | src/game/Map.cpp | 39 |
1 files changed, 39 insertions, 0 deletions
diff --git a/src/game/Map.cpp b/src/game/Map.cpp index 1af68fce07e..cdc78ca41a5 100644 --- a/src/game/Map.cpp +++ b/src/game/Map.cpp @@ -1265,8 +1265,47 @@ float Map::GetHeight(float x, float y, float z, bool pUseVmaps) const } } +float Map::GetVmapHeight(float x, float y, float z, bool useMaps) const +{ + float mapHeight; + float vmapHeight; + if (useMaps) + { + mapHeight = GetHeight(x, y, z, false); + if (fabs(mapHeight - z) < 0.1) + return mapHeight; + } + else + mapHeight = INVALID_HEIGHT; + VMAP::IVMapManager* vmgr = VMAP::VMapFactory::createOrGetVMapManager(); + if (vmgr->isLineOfSightCalcEnabled()) + bool result = vmgr->getObjectHitPos(GetId(), x, y, z + 2.0f, x, y, mapHeight, x, y, vmapHeight, 0); + else + return INVALID_HEIGHT; + return vmapHeight; +} + uint16 Map::GetAreaFlag(float x, float y, float z) const { + float mapHeight; + float vmapHeight; + if (useMaps) + { + mapHeight = GetHeight(x, y, z, false); + if (fabs(mapHeight - z) < 0.1) + return mapHeight; + } + else + mapHeight = INVALID_HEIGHT; + VMAP::IVMapManager* vmgr = VMAP::VMapFactory::createOrGetVMapManager(); + if (vmgr->isLineOfSightCalcEnabled()) + bool result = vmgr->getObjectHitPos(GetId(), x, y, z + 2.0f, x, y, mapHeight, x, y, vmapHeight, 0); + else + return INVALID_HEIGHT; + return vmapHeight; +} + +{ //local x,y coords float lx,ly; int gx,gy; |