1
0
Fork 0
mirror of https://github.com/OpenMW/openmw.git synced 2025-04-12 10:36:44 +00:00

Fixed bug in smoothTurn()

Now correctly handles changing direction from 178 to -178 degrees.
This commit is contained in:
dteviot 2015-09-06 17:39:48 +12:00
parent acbea2461b
commit 96e3933ee9

View file

@ -14,14 +14,16 @@ bool smoothTurn(const MWWorld::Ptr& actor, float targetAngleRadians, int axis, f
{ {
float currentAngle (actor.getRefData().getPosition().rot[axis]); float currentAngle (actor.getRefData().getPosition().rot[axis]);
float diff (targetAngleRadians - currentAngle); float diff (targetAngleRadians - currentAngle);
if (diff >= osg::DegreesToRadians(180.f)) if (std::abs(diff) >= osg::DegreesToRadians(180.f))
{ {
// Turning the other way would be a better idea if (diff >= 0)
diff = diff-osg::DegreesToRadians(360.f); {
diff = diff - osg::DegreesToRadians(360.f);
} }
else if (diff <= osg::DegreesToRadians(-180.f)) else
{ {
diff = osg::DegreesToRadians(360.f)-diff; diff = osg::DegreesToRadians(360.f) + diff;
}
} }
float absDiff = std::abs(diff); float absDiff = std::abs(diff);