Skip to content

Commit 9a15a64

Browse files
committed
smooth interpolate
1 parent 144b2dc commit 9a15a64

File tree

5 files changed

+50
-4
lines changed

5 files changed

+50
-4
lines changed

src/main/java/net/aspw/viaforgeplus/api/AnimationUtils.kt

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,8 @@ package net.aspw.viaforgeplus.api
22

33
object AnimationUtils {
44

5+
private var overflowEyeHeight = 0f
6+
57
@JvmStatic
68
fun animate(target: Float, current: Float, speed: Float): Float {
79
var current = current
@@ -27,4 +29,9 @@ object AnimationUtils {
2729
}
2830
return current
2931
}
32+
33+
@JvmStatic
34+
fun setOverflowEyeHeight(eyeHeight: Float) {
35+
overflowEyeHeight = eyeHeight
36+
}
3037
}

src/main/java/net/aspw/viaforgeplus/api/McUpdatesHandler.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -55,10 +55,10 @@ public void onMotion(MotionEvent event) {
5555
delta = 0.085f;
5656

5757
if (shouldAnimation()) {
58-
eyeHeight = AnimationUtils.animate(END_HEIGHT, eyeHeight, 2 * delta);
58+
eyeHeight = AnimationUtils.animate(END_HEIGHT, eyeHeight, 4 * delta);
5959
doingEyeRot = true;
6060
} else if (eyeHeight < START_HEIGHT)
61-
eyeHeight = AnimationUtils.animate(START_HEIGHT, eyeHeight, 2 * delta);
61+
eyeHeight = AnimationUtils.animate(START_HEIGHT, eyeHeight, 4 * delta);
6262

6363
if (eyeHeight >= START_HEIGHT && doingEyeRot)
6464
doingEyeRot = false;

src/main/java/net/aspw/viaforgeplus/api/PacketManager.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -34,9 +34,9 @@ else if (ProtocolFixer.newerThanOrEqualsTo1_14())
3434
else delta = 0.154f;
3535

3636
if (mc.thePlayer.isSneaking())
37-
eyeHeight = AnimationUtils.animate(END_HEIGHT, eyeHeight, 2 * delta);
37+
eyeHeight = AnimationUtils.animate(END_HEIGHT, eyeHeight, 4 * delta);
3838
else if (eyeHeight < START_HEIGHT)
39-
eyeHeight = AnimationUtils.animate(START_HEIGHT, eyeHeight, 2 * delta);
39+
eyeHeight = AnimationUtils.animate(START_HEIGHT, eyeHeight, 4 * delta);
4040
}
4141

4242
@EventTarget
Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,38 @@
1+
package net.aspw.viaforgeplus.injection.forge.mixins.render;
2+
3+
import net.aspw.viaforgeplus.api.AnimationUtils;
4+
import net.aspw.viaforgeplus.network.MinecraftInstance;
5+
import net.minecraft.client.renderer.EntityRenderer;
6+
import net.minecraft.entity.Entity;
7+
import org.spongepowered.asm.mixin.Mixin;
8+
import org.spongepowered.asm.mixin.Unique;
9+
import org.spongepowered.asm.mixin.injection.At;
10+
import org.spongepowered.asm.mixin.injection.Inject;
11+
import org.spongepowered.asm.mixin.injection.Redirect;
12+
import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
13+
14+
@Mixin(EntityRenderer.class)
15+
public class MixinEntityRenderer {
16+
17+
@Unique
18+
private float height;
19+
@Unique
20+
private float previousHeight;
21+
22+
@Redirect(method = "orientCamera", at = @At(value = "INVOKE", target = "Lnet/minecraft/entity/Entity;getEyeHeight()F"))
23+
public float modifyEyeHeight(Entity entity, float partialTicks) {
24+
return previousHeight + (height - previousHeight) * partialTicks;
25+
}
26+
27+
@Inject(method = "updateRenderer", at = @At("HEAD"))
28+
private void interpolateHeight(CallbackInfo ci) {
29+
Entity entity = MinecraftInstance.mc.getRenderViewEntity();
30+
float eyeHeight = entity.getEyeHeight();
31+
previousHeight = height;
32+
if (eyeHeight < height)
33+
height = eyeHeight;
34+
else
35+
height += (eyeHeight - height) * 0.5f;
36+
AnimationUtils.setOverflowEyeHeight(height);
37+
}
38+
}

src/main/resources/viaforgeplus.forge.mixins.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@
2121
"network.MixinNetworkManager$5",
2222
"network.MixinServerData",
2323
"packets.MixinC00Handshake",
24+
"render.MixinEntityRenderer",
2425
"render.MixinLayerArmorBase",
2526
"render.MixinModelBiped"
2627
]

0 commit comments

Comments
 (0)