minecraft-src/net/minecraft/util/BinaryAnimator.java
2025-07-04 02:49:36 +03:00

37 lines
923 B
Java

package net.minecraft.util;
public class BinaryAnimator {
private final int animationLength;
private final BinaryAnimator.EasingFunction easingFunction;
private int ticks;
private int ticksOld;
public BinaryAnimator(int animationLength, BinaryAnimator.EasingFunction easingFunction) {
this.animationLength = animationLength;
this.easingFunction = easingFunction;
}
public BinaryAnimator(int animationLength) {
this(animationLength, f -> f);
}
public void tick(boolean condition) {
this.ticksOld = this.ticks;
if (condition) {
if (this.ticks < this.animationLength) {
this.ticks++;
}
} else if (this.ticks > 0) {
this.ticks--;
}
}
public float getFactor(float partialTick) {
float f = Mth.lerp(partialTick, (float)this.ticksOld, (float)this.ticks) / this.animationLength;
return this.easingFunction.apply(f);
}
public interface EasingFunction {
float apply(float f);
}
}