1
0
mirror of https://gitlab.com/OpenMW/openmw.git synced 2025-01-07 12:54:00 +00:00

Apply the AiTravel maxRange to AiEscort as well (Fixes #2697)

This commit is contained in:
scrawl 2015-12-07 00:25:03 +01:00
parent 65b5cbe3f7
commit 1f543b4d79
3 changed files with 12 additions and 12 deletions

View File

@ -75,6 +75,9 @@ namespace MWMechanics
return true;
}
if (!isWithinMaxRange(osg::Vec3f(mX, mY, mZ), actor.getRefData().getPosition().asVec3()))
return false;
if (!mCellId.empty() && mCellId != actor.getCell()->getCell()->getCellId().mWorldspace)
return false; // Not in the correct cell, pause and rely on the player to go back through a teleport door

View File

@ -94,10 +94,19 @@ namespace MWMechanics
ESM::Pathgrid::Point mPrevDest;
bool isWithinMaxRange(const osg::Vec3f& pos1, const osg::Vec3f& pos2) const
{
// Maximum travel distance for vanilla compatibility.
// Was likely meant to prevent NPCs walking into non-loaded exterior cells, but for some reason is used in interior cells as well.
// We can make this configurable at some point, but the default *must* be the below value. Anything else will break shoddily-written content (*cough* MW *cough*) in bizarre ways.
return (pos1 - pos2).length2() <= 7168*7168;
}
private:
bool isNearInactiveCell(const ESM::Position& actorPos);
};
}
#endif

View File

@ -13,18 +13,6 @@
#include "movement.hpp"
#include "creaturestats.hpp"
namespace
{
bool isWithinMaxRange(const osg::Vec3f& pos1, const osg::Vec3f& pos2)
{
// Maximum travel distance for vanilla compatibility.
// Was likely meant to prevent NPCs walking into non-loaded exterior cells, but for some reason is used in interior cells as well.
// We can make this configurable at some point, but the default *must* be the below value. Anything else will break shoddily-written content (*cough* MW *cough*) in bizarre ways.
return (pos1 - pos2).length2() <= 7168*7168;
}
}
namespace MWMechanics
{