mirror of
https://gitlab.com/OpenMW/openmw.git
synced 2025-01-28 14:53:58 +00:00
Prevent floating point issues accumulating
This commit is contained in:
parent
b1fdc0eb8a
commit
dd4d8b2649
@ -1,10 +1,20 @@
|
|||||||
#include "magiceffects.hpp"
|
#include "magiceffects.hpp"
|
||||||
|
|
||||||
|
#include <cmath>
|
||||||
#include <stdexcept>
|
#include <stdexcept>
|
||||||
|
|
||||||
#include <components/esm/effectlist.hpp>
|
#include <components/esm/effectlist.hpp>
|
||||||
#include <components/esm/magiceffects.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
|
namespace MWMechanics
|
||||||
{
|
{
|
||||||
EffectKey::EffectKey() : mId (0), mArg (-1) {}
|
EffectKey::EffectKey() : mId (0), mArg (-1) {}
|
||||||
@ -74,6 +84,7 @@ namespace MWMechanics
|
|||||||
{
|
{
|
||||||
mModifier += param.mModifier;
|
mModifier += param.mModifier;
|
||||||
mBase += param.mBase;
|
mBase += param.mBase;
|
||||||
|
truncate(mModifier);
|
||||||
return *this;
|
return *this;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -81,6 +92,7 @@ namespace MWMechanics
|
|||||||
{
|
{
|
||||||
mModifier -= param.mModifier;
|
mModifier -= param.mModifier;
|
||||||
mBase -= param.mBase;
|
mBase -= param.mBase;
|
||||||
|
truncate(mModifier);
|
||||||
return *this;
|
return *this;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user