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:
parent
1b9b61b60b
commit
b92d80249e
3 changed files with 9 additions and 0 deletions
|
@ -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
|
||||
|
|
|
@ -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();
|
||||
|
|
|
@ -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];
|
||||
|
|
Loading…
Reference in a new issue