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();