Merge branch 'ugly_rounding' into 'master'

Prevent floating point issues accumulating

See merge request OpenMW/openmw!1306
pull/3190/head
psi29a 3 years ago
commit 217d17adeb

@ -1,10 +1,20 @@
#include "magiceffects.hpp"
#include <cmath>
#include <stdexcept>
#include <components/esm/effectlist.hpp>
#include <components/esm/magiceffects.hpp>
namespace
{
// Round value to prevent precision issues
void truncate(float& value)
{
value = std::roundf(value * 1024.f) / 1024.f;
}
}
namespace MWMechanics
{
EffectKey::EffectKey() : mId (0), mArg (-1) {}
@ -74,6 +84,7 @@ namespace MWMechanics
{
mModifier += param.mModifier;
mBase += param.mBase;
truncate(mModifier);
return *this;
}
@ -81,6 +92,7 @@ namespace MWMechanics
{
mModifier -= param.mModifier;
mBase -= param.mBase;
truncate(mModifier);
return *this;
}

Loading…
Cancel
Save