Havok: Fix various hkpMotion setters

This commit is contained in:
Léo Lam 2022-01-13 18:59:32 +01:00
parent 2acf2ba0a4
commit 1511ec620d
No known key found for this signature in database
GPG Key ID: 0DF30F9081000741
2 changed files with 17 additions and 4 deletions

View File

@ -61,6 +61,19 @@ public:
void setOne() { m_value = 0x3F80; }
template <bool Round>
void set(const float& r) {
union {
float f;
int i;
} u;
if constexpr (Round)
u.f = r * (1.0f + 1.0f / 256.f);
else
u.f = r;
m_value = hkInt16(u.i >> 16);
}
operator float() const {
union {
int i;

View File

@ -192,7 +192,7 @@ inline hkReal hkpMotion::getLinearDamping() const {
}
inline void hkpMotion::setLinearDamping(hkReal d) {
m_motionState.m_linearDamping = d;
m_motionState.m_linearDamping.set<true>(d);
}
inline hkReal hkpMotion::getAngularDamping() const {
@ -200,7 +200,7 @@ inline hkReal hkpMotion::getAngularDamping() const {
}
inline void hkpMotion::setAngularDamping(hkReal d) {
m_motionState.m_angularDamping = d;
m_motionState.m_angularDamping.set<true>(d);
}
inline hkReal hkpMotion::getTimeFactor() const {
@ -208,7 +208,7 @@ inline hkReal hkpMotion::getTimeFactor() const {
}
inline void hkpMotion::setTimeFactor(hkReal f) {
m_motionState.m_timeFactor = f;
m_motionState.m_timeFactor.set<true>(f);
}
inline hkReal hkpMotion::getGravityFactor() const {
@ -216,7 +216,7 @@ inline hkReal hkpMotion::getGravityFactor() const {
}
inline void hkpMotion::setGravityFactor(hkReal gravityFactor) {
m_gravityFactor = gravityFactor;
m_gravityFactor.set<true>(gravityFactor);
}
inline int hkpMotion::getDeactivationClass() const {