1
0
Fork 0
mirror of https://github.com/OpenMW/openmw.git synced 2025-01-30 19:15:41 +00:00

Adjust initial distance when destination is changed for obstacle check

Changed destination may create a situation when the distance actor moved between
2 update calls is less than initial distance because destination has been changed.
This forces actor to take evasive action when there is no actual obstacle.
This commit is contained in:
elsid 2022-09-27 01:01:42 +02:00
parent 1b9b61b60b
commit b92d80249e
No known key found for this signature in database
GPG key ID: 4DE04C198CBA7625
3 changed files with 9 additions and 0 deletions

View file

@ -170,6 +170,7 @@
Bug #6794: Light sources are attached to mesh bounds centers instead of mesh origins when AttachLight NiNode is missing
Bug #6799: Game crashes if an NPC has no Class attached
Bug #6849: ImageButton texture is not scaled properly
Bug #6860: Sinnammu randomly strafes while running on water
Bug #6869: Hits queue stagger during swing animation
Bug #6890: SDL_PeepEvents errors are not handled
Bug #6895: Removing a negative number of items from a script, makes the script terminate with an error

View file

@ -139,11 +139,18 @@ namespace MWMechanics
mStateDuration = 0;
mPrev = position;
mInitialDistance = (destination - position).length();
mDestination = destination;
return;
}
if (mWalkState != WalkState::Evade)
{
if (mDestination != destination)
{
mInitialDistance = (destination - mPrev).length();
mDestination = destination;
}
const float distSameSpot = DIST_SAME_SPOT * actor.getClass().getCurrentSpeed(actor) * duration;
const float prevDistance = (destination - mPrev).length();
const float currentDistance = (destination - position).length();

View file

@ -45,6 +45,7 @@ namespace MWMechanics
private:
osg::Vec3f mPrev;
osg::Vec3f mDestination;
// directions to try moving in when get stuck
static const float evadeDirections[NUM_EVADE_DIRECTIONS][2];