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:
parent
b1fdc0eb8a
commit
dd4d8b2649
@ -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;
|
||||
}
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user