37 lines
		
	
	
	
		
			923 B
		
	
	
	
		
			Java
		
	
	
	
	
	
			
		
		
	
	
			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);
 | |
| 	}
 | |
| }
 |