From f1d1a2857d27588422d2059f807aa7c04db89b66 Mon Sep 17 00:00:00 2001 From: Sollace Date: Fri, 5 Jul 2019 10:28:50 +0200 Subject: [PATCH] Fixed head positioning on swimming ponies --- .../client/model/AbstractPonyModel.java | 15 ++++++++++----- .../client/transform/PonyTransformation.java | 7 +++++++ 2 files changed, 17 insertions(+), 5 deletions(-) diff --git a/src/main/java/com/minelittlepony/client/model/AbstractPonyModel.java b/src/main/java/com/minelittlepony/client/model/AbstractPonyModel.java index 509b5a56..af2d5a73 100644 --- a/src/main/java/com/minelittlepony/client/model/AbstractPonyModel.java +++ b/src/main/java/com/minelittlepony/client/model/AbstractPonyModel.java @@ -82,7 +82,12 @@ public abstract class AbstractPonyModel extends ClientPo rightLeg.rotationPointY = FRONT_LEG_RP_Y_NOTSNEAK; leftLeg.rotationPointY = FRONT_LEG_RP_Y_NOTSNEAK; animateBreathing(ticks); - head.setRotationPoint(0, 0, 0); + + if (attributes.isSwimming) { + head.setRotationPoint(0, -2, -2); + } else { + head.setRotationPoint(0, 0, 0); + } } if (attributes.isSleeping) { @@ -204,14 +209,14 @@ public abstract class AbstractPonyModel extends ClientPo head.yaw = attributes.isSleeping ? (Math.abs(attributes.interpolatorId.getMostSignificantBits()) % 2.8F) - 1.9F : headYaw / 57.29578F; headPitch = attributes.isSleeping ? 0.1f : headPitch / 57.29578F; - headPitch = Math.min(headPitch, (float) (0.5f - Math.toRadians(attributes.motionPitch))); - headPitch = Math.max(headPitch, (float) (-1.25f - Math.toRadians(attributes.motionPitch))); if (attributes.isSwimming) { - headPitch += 0.9F; + headPitch -= 0.9F; } - head.pitch = headPitch; + float pitch = (float)Math.toRadians(attributes.motionPitch); + + head.pitch = MathHelper.clamp(headPitch, -1.25f - pitch, 0.5f - pitch); } /** diff --git a/src/main/java/com/minelittlepony/client/transform/PonyTransformation.java b/src/main/java/com/minelittlepony/client/transform/PonyTransformation.java index a64f7041..b08e716b 100644 --- a/src/main/java/com/minelittlepony/client/transform/PonyTransformation.java +++ b/src/main/java/com/minelittlepony/client/transform/PonyTransformation.java @@ -25,6 +25,7 @@ public enum PonyTransformation { break; case HEAD: if (model.getAttributes().isCrouching) translate(0, 0.1F, 0); + if (model.getAttributes().isSwimming) translate(0, 0.07F, 0.15F); break; case BACK: translateVec(riderOffset); @@ -44,11 +45,13 @@ public enum PonyTransformation { case NECK: translate(0, -0.15F, -0.07F); if (model.getAttributes().isCrouching) translate(-0.03F, 0.16F, 0.07F); + if (model.getAttributes().isSwimming) translate(0, 0.5F, 0.25F); break; case HEAD: translate(0, -0.17F, -0.04F); if (model.getAttributes().isSleeping) translate(0, 0, -0.1F); if (model.getAttributes().isCrouching) translate(0, 0.15F, 0); + if (model.getAttributes().isSwimming) translate(0, 0.25F, 0.25F); break; case BODY: translate(0, -0.2F, -0.04F); @@ -78,11 +81,13 @@ public enum PonyTransformation { case NECK: translate(0, -0.15F, -0.07F); if (model.getAttributes().isCrouching) translate(-0.03F, 0.16F, 0.07F); + if (model.getAttributes().isSwimming) translate(0, 0.5F, 0.25F); break; case HEAD: translate(0, -0.17F, -0.04F); if (model.getAttributes().isSleeping) translate(0, 0, -0.1F); if (model.getAttributes().isCrouching) translate(0, 0.15F, 0); + if (model.getAttributes().isSwimming) translate(0, 0.15F, 0.25F); break; case BODY: translate(0, -0.2F, -0.04F); @@ -146,6 +151,7 @@ public enum PonyTransformation { case HEAD: translate(0.01F, -0.15F, 0); if (model.getAttributes().isCrouching) translate(0, 0.04F, 0); + if (model.getAttributes().isSwimming) translate(0, 0.17F, 0.25F); break; case BODY: case TAIL: @@ -179,6 +185,7 @@ public enum PonyTransformation { case HEAD: translate(0, -0.15F, 0.01F); if (model.getAttributes().isCrouching) translate(0, 0.04F, 0); + if (model.getAttributes().isSwimming) translate(0, 0.2F, 0.25F); scale(1.15F, 1.15F, 1.15F); break; case BODY: