1
0
mirror of https://gitlab.com/OpenMW/openmw.git synced 2025-03-29 13:20:35 +00:00

Use distance to position since last normal state in obstacle checker

This commit is contained in:
elsid 2020-02-06 00:20:55 +01:00
parent 52945921a7
commit 0c92a567af
No known key found for this signature in database
GPG Key ID: B845CB9FEE18AB40
2 changed files with 5 additions and 1 deletions

View File

@ -120,6 +120,7 @@ namespace MWMechanics
mWalkState = WalkState::Norm;
mStateDuration = 0;
mPrev = position;
mInitialDistance = (destination - position).length();
return;
}
@ -129,10 +130,11 @@ namespace MWMechanics
const float prevDistance = (destination - mPrev).length();
const float currentDistance = (destination - position).length();
const float movedDistance = prevDistance - currentDistance;
const float movedFromInitialDistance = mInitialDistance - currentDistance;
mPrev = position;
if (movedDistance >= distSameSpot)
if (movedDistance >= distSameSpot && movedFromInitialDistance >= distSameSpot)
{
mWalkState = WalkState::Norm;
mStateDuration = 0;
@ -143,6 +145,7 @@ namespace MWMechanics
{
mWalkState = WalkState::CheckStuck;
mStateDuration = duration;
mInitialDistance = (destination - position).length();
return;
}

View File

@ -54,6 +54,7 @@ namespace MWMechanics
float mStateDuration;
int mEvadeDirectionIndex;
float mInitialDistance = 0;
void chooseEvasionDirection();
};