diff --git a/src/main/java/com/minelittlepony/unicopia/client/gui/UHud.java b/src/main/java/com/minelittlepony/unicopia/client/gui/UHud.java index 006c3004..25564c93 100644 --- a/src/main/java/com/minelittlepony/unicopia/client/gui/UHud.java +++ b/src/main/java/com/minelittlepony/unicopia/client/gui/UHud.java @@ -88,6 +88,16 @@ public class UHud { MatrixStack matrices = context.getMatrices(); matrices.push(); + matrices.translate(scaledWidth / 2, scaledHeight / 2, 0); + + float flapCooldown = pony.getPhysics().getFlapCooldown(tickDelta); + if (flapCooldown > 0) { + float angle = MathHelper.TAU * flapCooldown; + DrawableUtil.drawArc(context.getMatrices(), 3, 6, -angle / 2F, angle, 0x888888AF, false); + } + + matrices.pop(); + matrices.push(); int hudX = ((scaledWidth - 50) / 2) + (104 * xDirection); int hudY = scaledHeight - 50; diff --git a/src/main/java/com/minelittlepony/unicopia/entity/player/PlayerPhysics.java b/src/main/java/com/minelittlepony/unicopia/entity/player/PlayerPhysics.java index 3e7dd386..7416cfd3 100644 --- a/src/main/java/com/minelittlepony/unicopia/entity/player/PlayerPhysics.java +++ b/src/main/java/com/minelittlepony/unicopia/entity/player/PlayerPhysics.java @@ -57,6 +57,7 @@ public class PlayerPhysics extends EntityPhysics implements Tickab private int ticksDiving; private float thrustScale = 0; + private float prevThrustScale; private boolean flapping; private boolean isCancelled; @@ -97,6 +98,11 @@ public class PlayerPhysics extends EntityPhysics implements Tickab return super.getGravityModifier(); } + public float getFlapCooldown(float tickDelta) { + float lerpedThrust = MathHelper.lerp(tickDelta, prevThrustScale, thrustScale); + return lerpedThrust <= 0.000001F ? 0 : lerpedThrust; + } + @Override public float getGravityModifier() { float modifier = getPersistantGravityModifier(); @@ -209,6 +215,8 @@ public class PlayerPhysics extends EntityPhysics implements Tickab public void tick() { super.tick(); + prevThrustScale = thrustScale; + if (wallHitCooldown > 0) { wallHitCooldown--; }