aboutsummaryrefslogtreecommitdiff
path: root/src/game/Map.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/game/Map.cpp')
-rw-r--r--src/game/Map.cpp39
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;