aboutsummaryrefslogtreecommitdiff
path: root/src/server/collision/Maps
diff options
context:
space:
mode:
authorclick <none@none>2010-07-27 17:29:33 +0200
committerclick <none@none>2010-07-27 17:29:33 +0200
commite5b7f6ad01cbf85c6212f0cc4e8584c621f225b7 (patch)
tree2a007a1272a4cccd060bd3171c8aed4fb9c65e05 /src/server/collision/Maps
parentdbd76ef9edce23543c1d1732269c889da79fc350 (diff)
Add option for search distance to getHeight() functions and make Creature::FallGround() use VMaps properly. (Fix by Lynx3d)
This finally prevents flying creatures from falling to infinity (basically instantly diappearing) in several instances, aswell as prevent creatures from falling inside larger solid object around the world. --HG-- branch : trunk
Diffstat (limited to 'src/server/collision/Maps')
-rw-r--r--src/server/collision/Maps/MapTree.cpp4
-rw-r--r--src/server/collision/Maps/MapTree.h2
2 files changed, 3 insertions, 3 deletions
diff --git a/src/server/collision/Maps/MapTree.cpp b/src/server/collision/Maps/MapTree.cpp
index b47e34b2b72..4fce91920e9 100644
--- a/src/server/collision/Maps/MapTree.cpp
+++ b/src/server/collision/Maps/MapTree.cpp
@@ -224,12 +224,12 @@ namespace VMAP
//=========================================================
- float StaticMapTree::getHeight(const Vector3& pPos) const
+ float StaticMapTree::getHeight(const Vector3& pPos, float maxSearchDist) const
{
float height = G3D::inf();
Vector3 dir = Vector3(0,0,-1);
G3D::Ray ray(pPos, dir); // direction with length of 1
- float maxDist = VMapDefinitions::getMaxCanFallDistance();
+ float maxDist = maxSearchDist;
if (getIntersectionTime(ray, maxDist, false))
{
height = pPos.z - maxDist;
diff --git a/src/server/collision/Maps/MapTree.h b/src/server/collision/Maps/MapTree.h
index 8f2242da5a6..a9ca3509b90 100644
--- a/src/server/collision/Maps/MapTree.h
+++ b/src/server/collision/Maps/MapTree.h
@@ -70,7 +70,7 @@ namespace VMAP
bool isInLineOfSight(const G3D::Vector3& pos1, const G3D::Vector3& pos2) const;
bool getObjectHitPos(const G3D::Vector3& pos1, const G3D::Vector3& pos2, G3D::Vector3& pResultHitPos, float pModifyDist) const;
- float getHeight(const G3D::Vector3& pPos) const;
+ float getHeight(const G3D::Vector3& pPos, float maxSearchDist) const;
bool getAreaInfo(G3D::Vector3 &pos, uint32 &flags, int32 &adtId, int32 &rootId, int32 &groupId) const;
bool GetLocationInfo(const Vector3 &pos, LocationInfo &info) const;