mirror of
https://github.com/EsotericSoftware/spine-runtimes.git
synced 2026-03-05 18:26:52 +08:00
[haxe] Port: Scale physics constraint limits with skeleton scale. See #2576.
This commit is contained in:
parent
cbed5fbf40
commit
d08f346dea
@ -32,7 +32,7 @@ package spine;
|
|||||||
class PhysicsConstraint implements Updatable {
|
class PhysicsConstraint implements Updatable {
|
||||||
private var _data:PhysicsConstraintData;
|
private var _data:PhysicsConstraintData;
|
||||||
private var _bone:Bone = null;
|
private var _bone:Bone = null;
|
||||||
|
|
||||||
public var inertia:Float = 0;
|
public var inertia:Float = 0;
|
||||||
public var strength:Float = 0;
|
public var strength:Float = 0;
|
||||||
public var damping:Float = 0;
|
public var damping:Float = 0;
|
||||||
@ -63,7 +63,7 @@ class PhysicsConstraint implements Updatable {
|
|||||||
private var _skeleton:Skeleton;
|
private var _skeleton:Skeleton;
|
||||||
public var remaining:Float = 0;
|
public var remaining:Float = 0;
|
||||||
public var lastTime:Float = 0;
|
public var lastTime:Float = 0;
|
||||||
|
|
||||||
public function new(data: PhysicsConstraintData, skeleton: Skeleton) {
|
public function new(data: PhysicsConstraintData, skeleton: Skeleton) {
|
||||||
_data = data;
|
_data = data;
|
||||||
_skeleton = skeleton;
|
_skeleton = skeleton;
|
||||||
@ -123,7 +123,7 @@ class PhysicsConstraint implements Updatable {
|
|||||||
return;
|
return;
|
||||||
case Physics.reset, Physics.update:
|
case Physics.reset, Physics.update:
|
||||||
if (physics == Physics.reset) reset();
|
if (physics == Physics.reset) reset();
|
||||||
|
|
||||||
var delta:Float = Math.max(skeleton.time - lastTime, 0);
|
var delta:Float = Math.max(skeleton.time - lastTime, 0);
|
||||||
remaining += delta;
|
remaining += delta;
|
||||||
lastTime = _skeleton.time;
|
lastTime = _skeleton.time;
|
||||||
@ -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;
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user