[libgdx] Fixed PhysicsConstraint ignoring load scale. See commit c7a8123.

This commit is contained in:
Harald Csaszar 2024-01-11 17:13:17 +01:00
parent fa9028881d
commit 11e6428586
2 changed files with 13 additions and 10 deletions

View File

@ -325,8 +325,8 @@ public class SkeletonBinary extends SkeletonLoader {
data.strength = input.readFloat();
data.damping = input.readFloat();
data.massInverse = input.readFloat();
data.wind = input.readFloat();
data.gravity = input.readFloat();
data.wind = input.readFloat() * scale;
data.gravity = input.readFloat() * scale;
data.mix = input.readFloat();
flags = input.read();
if ((flags & 1) != 0) data.inertiaGlobal = true;
@ -992,10 +992,10 @@ public class SkeletonBinary extends SkeletonLoader {
readTimeline(input, timelines, new PhysicsConstraintMassTimeline(frameCount, bezierCount, index), 1);
break;
case PHYSICS_WIND:
readTimeline(input, timelines, new PhysicsConstraintWindTimeline(frameCount, bezierCount, index), 1);
readTimeline(input, timelines, new PhysicsConstraintWindTimeline(frameCount, bezierCount, index), scale);
break;
case PHYSICS_GRAVITY:
readTimeline(input, timelines, new PhysicsConstraintGravityTimeline(frameCount, bezierCount, index), 1);
readTimeline(input, timelines, new PhysicsConstraintGravityTimeline(frameCount, bezierCount, index), scale);
break;
case PHYSICS_MIX:
readTimeline(input, timelines, new PhysicsConstraintMixTimeline(frameCount, bezierCount, index), 1);

View File

@ -310,8 +310,8 @@ public class SkeletonJson extends SkeletonLoader {
data.strength = constraintMap.getFloat("strength", 100);
data.damping = constraintMap.getFloat("damping", 1);
data.massInverse = 1f / constraintMap.getFloat("mass", 1);
data.wind = constraintMap.getFloat("wind", 0);
data.gravity = constraintMap.getFloat("gravity", 0);
data.wind = constraintMap.getFloat("wind", 0) * scale;
data.gravity = constraintMap.getFloat("gravity", 0) * scale;
data.mix = constraintMap.getFloat("mix", 1);
data.inertiaGlobal = constraintMap.getBoolean("inertiaGlobal", false);
data.strengthGlobal = constraintMap.getBoolean("strengthGlobal", false);
@ -957,6 +957,7 @@ public class SkeletonJson extends SkeletonLoader {
}
CurveTimeline1 timeline;
float timelineScale = 1.0f;
if (timelineName.equals("inertia"))
timeline = new PhysicsConstraintInertiaTimeline(frames, frames, index);
else if (timelineName.equals("strength"))
@ -965,15 +966,17 @@ public class SkeletonJson extends SkeletonLoader {
timeline = new PhysicsConstraintDampingTimeline(frames, frames, index);
else if (timelineName.equals("mass"))
timeline = new PhysicsConstraintMassTimeline(frames, frames, index);
else if (timelineName.equals("wind"))
else if (timelineName.equals("wind")) {
timeline = new PhysicsConstraintWindTimeline(frames, frames, index);
else if (timelineName.equals("gravity"))
timelineScale = scale;
} else if (timelineName.equals("gravity")) {
timeline = new PhysicsConstraintGravityTimeline(frames, frames, index);
else if (timelineName.equals("mix")) //
timelineScale = scale;
} else if (timelineName.equals("mix")) //
timeline = new PhysicsConstraintMixTimeline(frames, frames, index);
else
continue;
timelines.add(readTimeline(keyMap, timeline, 0, 1));
timelines.add(readTimeline(keyMap, timeline, 0, timelineScale));
}
}