mirror of
https://gitlab.com/OpenMW/openmw.git
synced 2025-05-04 15:57:59 +03:00
Use min point tolerance to prevent face wrong direction (bug #4814)
When next path point is too close to actor and it has speed 0, it can face direction not pointing to path target.
This commit is contained in:
parent
eb45f99880
commit
cf1e1d9f4b
2 changed files with 2 additions and 1 deletions
|
@ -167,7 +167,7 @@ bool MWMechanics::AiPackage::pathTo(const MWWorld::Ptr& actor, const osg::Vec3f&
|
||||||
mTimer = 0;
|
mTimer = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
const float pointTolerance = std::min(actor.getClass().getSpeed(actor), DEFAULT_TOLERANCE);
|
const float pointTolerance = std::max(MIN_TOLERANCE, std::min(actor.getClass().getSpeed(actor), DEFAULT_TOLERANCE));
|
||||||
|
|
||||||
mPathFinder.update(position, pointTolerance, DEFAULT_TOLERANCE);
|
mPathFinder.update(position, pointTolerance, DEFAULT_TOLERANCE);
|
||||||
|
|
||||||
|
|
|
@ -49,6 +49,7 @@ namespace MWMechanics
|
||||||
// distance after which actor (failed previously to shortcut) will try again
|
// distance after which actor (failed previously to shortcut) will try again
|
||||||
const float PATHFIND_SHORTCUT_RETRY_DIST = 300.0f;
|
const float PATHFIND_SHORTCUT_RETRY_DIST = 300.0f;
|
||||||
|
|
||||||
|
const float MIN_TOLERANCE = 1.0f;
|
||||||
const float DEFAULT_TOLERANCE = 32.0f;
|
const float DEFAULT_TOLERANCE = 32.0f;
|
||||||
|
|
||||||
// cast up-down ray with some offset from actor position to check for pits/obstacles on the way to target;
|
// cast up-down ray with some offset from actor position to check for pits/obstacles on the way to target;
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue