diff --git a/apps/openmw/mwmechanics/pathfinding.cpp b/apps/openmw/mwmechanics/pathfinding.cpp index ef60a85a4..85e120d18 100644 --- a/apps/openmw/mwmechanics/pathfinding.cpp +++ b/apps/openmw/mwmechanics/pathfinding.cpp @@ -89,7 +89,8 @@ namespace MWMechanics float getXAngleToDir(const osg::Vec3f& dir) { - return -std::asin(dir.z() / dir.length()); + float dirLen = dir.length(); + return (dirLen != 0) ? -std::asin(dir.z() / dirLen) : 0; } float getZAngleToPoint(const ESM::Pathgrid::Point &origin, const ESM::Pathgrid::Point &dest) @@ -276,7 +277,7 @@ namespace MWMechanics const ESM::Pathgrid::Point &nextPoint = *mPath.begin(); osg::Vec3f dir = MakeOsgVec3(nextPoint) - osg::Vec3f(x,y,z); - return -std::asin(dir.z() / dir.length()); + return getXAngleToDir(dir); } bool PathFinder::checkPathCompleted(float x, float y, float tolerance)