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:
parent
acbea2461b
commit
96e3933ee9
1 changed files with 9 additions and 7 deletions
|
@ -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);
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue