From 9cd5b3b04401dcd21129c52da401b5379c27f840 Mon Sep 17 00:00:00 2001 From: Nathan Sweet Date: Tue, 5 Dec 2023 14:11:42 -0400 Subject: [PATCH] [libgdx] Fixed shear causing physics to explode. --- .../src/com/esotericsoftware/spine/PhysicsTest2.java | 10 ++++------ .../com/esotericsoftware/spine/PhysicsConstraint.java | 2 +- 2 files changed, 5 insertions(+), 7 deletions(-) diff --git a/spine-libgdx/spine-libgdx-tests/src/com/esotericsoftware/spine/PhysicsTest2.java b/spine-libgdx/spine-libgdx-tests/src/com/esotericsoftware/spine/PhysicsTest2.java index 4b1923d64..8138a6dee 100644 --- a/spine-libgdx/spine-libgdx-tests/src/com/esotericsoftware/spine/PhysicsTest2.java +++ b/spine-libgdx/spine-libgdx-tests/src/com/esotericsoftware/spine/PhysicsTest2.java @@ -36,8 +36,7 @@ import com.badlogic.gdx.backends.lwjgl3.Lwjgl3Application; import com.badlogic.gdx.graphics.GL20; import com.badlogic.gdx.graphics.OrthographicCamera; import com.badlogic.gdx.graphics.g2d.TextureAtlas; -import com.badlogic.gdx.math.Vector2; -import com.badlogic.gdx.utils.FloatArray; + import com.esotericsoftware.spine.Skeleton.Physics; import com.esotericsoftware.spine.utils.TwoColorPolygonBatch; @@ -80,16 +79,15 @@ public class PhysicsTest2 extends ApplicationAdapter { public boolean touchDown (int screenX, int screenY, int pointer, int button) { lastX = screenX; lastY = screenY; - return false; + return true; } - @Override - public boolean touchDragged(int screenX, int screenY, int pointer) { + public boolean touchDragged (int screenX, int screenY, int pointer) { skeleton.x += screenX - lastX; skeleton.y += lastY - screenY; lastX = screenX; lastY = screenY; - return false; + return true; } }); } diff --git a/spine-libgdx/spine-libgdx/src/com/esotericsoftware/spine/PhysicsConstraint.java b/spine-libgdx/spine-libgdx/src/com/esotericsoftware/spine/PhysicsConstraint.java index ca9b9cae0..9557f415a 100644 --- a/spine-libgdx/spine-libgdx/src/com/esotericsoftware/spine/PhysicsConstraint.java +++ b/spine-libgdx/spine-libgdx/src/com/esotericsoftware/spine/PhysicsConstraint.java @@ -166,7 +166,7 @@ public class PhysicsConstraint implements Updatable { if (rotateOrShearX || scaleX) { float ca = atan2(bone.c, bone.a), c, s, mr = 0; if (rotateOrShearX) { - mr = mix * data.rotate; + mr = (data.rotate + data.shearX) * mix; float dx = cx - bone.worldX, dy = cy - bone.worldY, r = atan2(dy + ty, dx + tx) - ca - rotateOffset * mr; rotateOffset += (r - (float)Math.ceil(r * invPI2 - 0.5f) * PI2) * i; r = rotateOffset * mr + ca;