diff options
| author | kaelima <kaelima@live.se> | 2012-09-07 04:21:11 +0200 |
|---|---|---|
| committer | kaelima <kaelima@live.se> | 2012-09-07 04:21:11 +0200 |
| commit | a2d533752c447a2bf4ef7b784e8abdbe3f6d6904 (patch) | |
| tree | 1477a3097aa991734c6b1c37763131d2337f4400 /src/server/game/Movement/Spline | |
| parent | 0522e50c8670a34698b15003ceb5e514db72e427 (diff) | |
Core/MMaps: Add several safety checks to confirm a valid path generation.
- Address some issues in TargetMovementGenerator. Thanks Chevron
Diffstat (limited to 'src/server/game/Movement/Spline')
| -rw-r--r-- | src/server/game/Movement/Spline/MoveSplineInit.cpp | 20 |
1 files changed, 11 insertions, 9 deletions
diff --git a/src/server/game/Movement/Spline/MoveSplineInit.cpp b/src/server/game/Movement/Spline/MoveSplineInit.cpp index 2796e208e34..68201fcf275 100644 --- a/src/server/game/Movement/Spline/MoveSplineInit.cpp +++ b/src/server/game/Movement/Spline/MoveSplineInit.cpp @@ -153,16 +153,18 @@ namespace Movement if (generatePath) { PathGenerator path(unit); - path.CalculatePath(dest.x, dest.y, dest.z, forceDestination); - MovebyPath(path.GetPath()); - } - else - { - args.path_Idx_offset = 0; - args.path.resize(2); - TransportPathTransform transform(unit, args.TransformForTransport); - args.path[1] = transform(dest); + bool result = path.CalculatePath(dest.x, dest.y, dest.z, forceDestination); + if (result && path.GetPathType() & ~PATHFIND_NOPATH) + { + MovebyPath(path.GetPath()); + return; + } } + + args.path_Idx_offset = 0; + args.path.resize(2); + TransportPathTransform transform(unit, args.TransformForTransport); + args.path[1] = transform(dest); } Vector3 TransportPathTransform::operator()(Vector3 input) |
