[haxe] Port: Scale physics constraint limits with skeleton scale. See #2576.

This commit is contained in:
Davide Tantillo 2024-07-12 09:13:51 +02:00
parent cbed5fbf40
commit d08f346dea

View File

@ -136,19 +136,22 @@ class PhysicsConstraint implements Updatable {
} else { } else {
var a:Float = remaining, var a:Float = remaining,
i:Float = inertia, i:Float = inertia,
q:Float = _data.limit * delta,
t:Float = _data.step, t:Float = _data.step,
f:Float = skeleton.data.referenceScale, f:Float = skeleton.data.referenceScale,
d:Float = -1; d:Float = -1;
var qx:Float = _data.limit * delta,
qy:Float = qx * skeleton.scaleY;
qx *= skeleton.scaleX;
if (x || y) { if (x || y) {
if (x) { if (x) {
var u:Float = (ux - bx) * i; var u:Float = (ux - bx) * i;
xOffset += u > q ? q : u < -q ? -q : u; xOffset += u > qx ? qx : u < -qx ? -qx : u;
ux = bx; ux = bx;
} }
if (y) { if (y) {
var u:Float = (uy - by) * i; var u:Float = (uy - by) * i;
yOffset += u > q ? q : u < -q ? -q : u; yOffset += u > qy ? qy : u < -qy ? -qy : u;
uy = by; uy = by;
} }
if (a >= t) { if (a >= t) {
@ -181,14 +184,14 @@ class PhysicsConstraint implements Updatable {
mr:Float = 0; mr:Float = 0;
var dx:Float = cx - bone.worldX, var dx:Float = cx - bone.worldX,
dy:Float = cy - bone.worldY; dy:Float = cy - bone.worldY;
if (dx > q) if (dx > qx)
dx = q; dx = qx;
else if (dx < -q) // else if (dx < -qx) //
dx = -q; dx = -qx;
if (dy > q) if (dy > qy)
dy = q; dy = qy;
else if (dy < -q) // else if (dy < -qy) //
dy = -q; dy = -qy;
if (rotateOrShearX) { if (rotateOrShearX) {
mr = (_data.rotate + _data.shearX) * mix; mr = (_data.rotate + _data.shearX) * mix;
var r:Float = Math.atan2(dy + ty, dx + tx) - ca - rotateOffset * mr; var r:Float = Math.atan2(dy + ty, dx + tx) - ca - rotateOffset * mr;