Merge branch 'master' of https://github.com/rive-app/rive-cpp into low_level_rendering
diff --git a/src/constraints/ik_constraint.cpp b/src/constraints/ik_constraint.cpp
index 66e3a2d..fd64aad 100644
--- a/src/constraints/ik_constraint.cpp
+++ b/src/constraints/ik_constraint.cpp
@@ -280,23 +280,22 @@
break;
}
}
-
// At the end, mix the FK angle with the IK angle by strength
if (strength() != 1.0f)
{
for (BoneChainLink& fk : m_FkChain)
{
float fromAngle =
- std::fmod(fk.transformComponents.rotation(), (float)M_PI_2);
- float toAngle = std::fmod(fk.angle, (float)M_PI_2);
+ std::fmod(fk.transformComponents.rotation(), (float)M_PI * 2);
+ float toAngle = std::fmod(fk.angle, (float)M_PI * 2);
float diff = toAngle - fromAngle;
if (diff > M_PI)
{
- diff -= M_PI_2;
+ diff -= M_PI * 2;
}
else if (diff < -M_PI)
{
- diff += M_PI_2;
+ diff += M_PI * 2;
}
float angle = fromAngle + diff * strength();
constrainRotation(fk, angle);
diff --git a/src/constraints/rotation_constraint.cpp b/src/constraints/rotation_constraint.cpp
index 30b80e4..b84c943 100644
--- a/src/constraints/rotation_constraint.cpp
+++ b/src/constraints/rotation_constraint.cpp
@@ -88,17 +88,17 @@
Mat2D::decompose(m_ComponentsB, transformB);
}
- float angleA = std::fmod(m_ComponentsA.rotation(), (float)M_PI_2);
- float angleB = std::fmod(m_ComponentsB.rotation(), (float)M_PI_2);
+ float angleA = std::fmod(m_ComponentsA.rotation(), (float)M_PI * 2);
+ float angleB = std::fmod(m_ComponentsB.rotation(), (float)M_PI * 2);
float diff = angleB - angleA;
if (diff > M_PI)
{
- diff -= M_PI_2;
+ diff -= M_PI * 2;
}
else if (diff < -M_PI)
{
- diff += M_PI_2;
+ diff += M_PI * 2;
}
m_ComponentsB.rotation(m_ComponentsA.rotation() + diff * strength());
diff --git a/src/constraints/transform_constraint.cpp b/src/constraints/transform_constraint.cpp
index c29dacd..bdc43f7 100644
--- a/src/constraints/transform_constraint.cpp
+++ b/src/constraints/transform_constraint.cpp
@@ -34,16 +34,16 @@
Mat2D::decompose(m_ComponentsA, transformA);
Mat2D::decompose(m_ComponentsB, transformB);
- float angleA = std::fmod(m_ComponentsA.rotation(), (float)M_PI_2);
- float angleB = std::fmod(m_ComponentsB.rotation(), (float)M_PI_2);
+ float angleA = std::fmod(m_ComponentsA.rotation(), (float)M_PI * 2);
+ float angleB = std::fmod(m_ComponentsB.rotation(), (float)M_PI * 2);
float diff = angleB - angleA;
if (diff > M_PI)
{
- diff -= M_PI_2;
+ diff -= M_PI * 2;
}
else if (diff < -M_PI)
{
- diff += M_PI_2;
+ diff += M_PI * 2;
}
float t = strength();