mirror of
https://github.com/EsotericSoftware/spine-runtimes.git
synced 2025-12-21 09:46:02 +08:00
[c][cpp] Port of additional fix for #1668.
This commit is contained in:
parent
4c2788a558
commit
f3a9c0a535
@ -121,6 +121,8 @@ void spBone_updateWorldTransformWith (spBone* self, float x, float y, float rota
|
|||||||
float prx, rx, ry, la, lb, lc, ld;
|
float prx, rx, ry, la, lb, lc, ld;
|
||||||
if (s > 0.0001f) {
|
if (s > 0.0001f) {
|
||||||
s = ABS(pa * pd - pb * pc) / s;
|
s = ABS(pa * pd - pb * pc) / s;
|
||||||
|
pa /= self->skeleton->scaleX;
|
||||||
|
pc /= self->skeleton->scaleY;
|
||||||
pb = pc * s;
|
pb = pc * s;
|
||||||
pd = pa * s;
|
pd = pa * s;
|
||||||
prx = ATAN2(pc, pa) * RAD_DEG;
|
prx = ATAN2(pc, pa) * RAD_DEG;
|
||||||
@ -139,7 +141,7 @@ void spBone_updateWorldTransformWith (spBone* self, float x, float y, float rota
|
|||||||
CONST_CAST(float, self->b) = pa * lb - pb * ld;
|
CONST_CAST(float, self->b) = pa * lb - pb * ld;
|
||||||
CONST_CAST(float, self->c) = pc * la + pd * lc;
|
CONST_CAST(float, self->c) = pc * la + pd * lc;
|
||||||
CONST_CAST(float, self->d) = pc * lb + pd * ld;
|
CONST_CAST(float, self->d) = pc * lb + pd * ld;
|
||||||
return;
|
break;
|
||||||
}
|
}
|
||||||
case SP_TRANSFORMMODE_NOSCALE:
|
case SP_TRANSFORMMODE_NOSCALE:
|
||||||
case SP_TRANSFORMMODE_NOSCALEORREFLECTION: {
|
case SP_TRANSFORMMODE_NOSCALEORREFLECTION: {
|
||||||
|
|||||||
@ -150,6 +150,8 @@ void Bone::updateWorldTransform(float x, float y, float rotation, float scaleX,
|
|||||||
float prx, rx, ry, la, lb, lc, ld;
|
float prx, rx, ry, la, lb, lc, ld;
|
||||||
if (s > 0.0001f) {
|
if (s > 0.0001f) {
|
||||||
s = MathUtil::abs(pa * pd - pb * pc) / s;
|
s = MathUtil::abs(pa * pd - pb * pc) / s;
|
||||||
|
pa /= _skeleton.getScaleX();
|
||||||
|
pc /= _skeleton.getScaleY();
|
||||||
pb = pc * s;
|
pb = pc * s;
|
||||||
pd = pa * s;
|
pd = pa * s;
|
||||||
prx = MathUtil::atan2(pc, pa) * MathUtil::Rad_Deg;
|
prx = MathUtil::atan2(pc, pa) * MathUtil::Rad_Deg;
|
||||||
@ -168,7 +170,7 @@ void Bone::updateWorldTransform(float x, float y, float rotation, float scaleX,
|
|||||||
_b = pa * lb - pb * ld;
|
_b = pa * lb - pb * ld;
|
||||||
_c = pc * la + pd * lc;
|
_c = pc * la + pd * lc;
|
||||||
_d = pc * lb + pd * ld;
|
_d = pc * lb + pd * ld;
|
||||||
return;
|
break;
|
||||||
}
|
}
|
||||||
case TransformMode_NoScale:
|
case TransformMode_NoScale:
|
||||||
case TransformMode_NoScaleOrReflection: {
|
case TransformMode_NoScaleOrReflection: {
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user