[c][cpp] Fix for #2412

This commit is contained in:
Mario Zechner 2023-11-28 13:30:02 +01:00
parent b62cb372e5
commit 501ad3553d
2 changed files with 4 additions and 4 deletions

View File

@ -80,8 +80,8 @@ void spIkConstraint_apply1(spBone *bone, float targetX, float targetY, int /*boo
switch (bone->data->transformMode) { switch (bone->data->transformMode) {
case SP_TRANSFORMMODE_ONLYTRANSLATION: case SP_TRANSFORMMODE_ONLYTRANSLATION:
tx = targetX - bone->worldX; tx = (targetX - bone->worldX) * SIGNUM(bone->skeleton->scaleX);
ty = targetY - bone->worldY; ty = (targetY - bone->worldY) * SIGNUM(bone->skeleton->scaleY);
break; break;
case SP_TRANSFORMMODE_NOROTATIONORREFLECTION: { case SP_TRANSFORMMODE_NOROTATIONORREFLECTION: {
s = ABS(pa * pd - pb * pc) / MAX(0.0001f, pa * pa + pc * pc); s = ABS(pa * pd - pb * pc) / MAX(0.0001f, pa * pa + pc * pc);

View File

@ -47,8 +47,8 @@ void IkConstraint::apply(Bone &bone, float targetX, float targetY, bool compress
switch (bone._data.getTransformMode()) { switch (bone._data.getTransformMode()) {
case TransformMode_OnlyTranslation: case TransformMode_OnlyTranslation:
tx = targetX - bone._worldX; tx = (targetX - bone._worldX) * MathUtil::sign(bone.getSkeleton().getScaleX());
ty = targetY - bone._worldY; ty = (targetY - bone._worldY) * MathUtil::sign(bone.getSkeleton().getScaleY());
break; break;
case TransformMode_NoRotationOrReflection: { case TransformMode_NoRotationOrReflection: {
float s = MathUtil::abs(pa * pd - pb * pc) / MathUtil::max(0.0001f, pa * pa + pc * pc); float s = MathUtil::abs(pa * pd - pb * pc) / MathUtil::max(0.0001f, pa * pa + pc * pc);