mirror of
https://github.com/EsotericSoftware/spine-runtimes.git
synced 2026-03-26 22:49:01 +08:00
[c] Fix applying flipping for noScale/noScaleOrReflection transform mode. See #951
This commit is contained in:
parent
20cdb9ec99
commit
1013e31268
@ -173,14 +173,14 @@ void spBone_updateWorldTransformWith (spBone* self, float x, float y, float rota
|
|||||||
lb = COS_DEG(90 + shearY) * scaleY;
|
lb = COS_DEG(90 + shearY) * scaleY;
|
||||||
lc = SIN_DEG(shearX) * scaleX;
|
lc = SIN_DEG(shearX) * scaleX;
|
||||||
ld = SIN_DEG(90 + shearY) * scaleY;
|
ld = SIN_DEG(90 + shearY) * scaleY;
|
||||||
|
if (self->data->transformMode != SP_TRANSFORMMODE_NOSCALEORREFLECTION ? pa * pd - pb * pc < 0 : self->skeleton->flipX != self->skeleton->flipY) {
|
||||||
|
zb = -zb;
|
||||||
|
zd = -zd;
|
||||||
|
}
|
||||||
CONST_CAST(float, self->a) = za * la + zb * lc;
|
CONST_CAST(float, self->a) = za * la + zb * lc;
|
||||||
CONST_CAST(float, self->b) = za * lb + zb * ld;
|
CONST_CAST(float, self->b) = za * lb + zb * ld;
|
||||||
CONST_CAST(float, self->c) = zc * la + zd * lc;
|
CONST_CAST(float, self->c) = zc * la + zd * lc;
|
||||||
CONST_CAST(float, self->d) = zc * lb + zd * ld;
|
CONST_CAST(float, self->d) = zc * lb + zd * ld;
|
||||||
if (self->data->transformMode != SP_TRANSFORMMODE_NOSCALEORREFLECTION ? pa * pd - pb * pc < 0 : self->skeleton->flipX != self->skeleton->flipY) {
|
|
||||||
CONST_CAST(float, self->b) = -self->b;
|
|
||||||
CONST_CAST(float, self->d) = -self->d;
|
|
||||||
}
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user