1
0
mirror of https://gitlab.com/OpenMW/openmw.git synced 2025-01-26 18:35:20 +00:00

Prevent floating point issues accumulating

This commit is contained in:
Evil Eye 2021-10-19 21:38:07 +02:00
parent b1fdc0eb8a
commit dd4d8b2649

View File

@ -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 * 1000.f) / 1000.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;
}