minecraft-src/net/minecraft/world/entity/boss/enderdragon/DragonFlightHistory.java
2025-07-04 02:49:36 +03:00

46 lines
1.3 KiB
Java

package net.minecraft.world.entity.boss.enderdragon;
import java.util.Arrays;
import net.minecraft.util.Mth;
public class DragonFlightHistory {
public static final int LENGTH = 64;
private static final int MASK = 63;
private final DragonFlightHistory.Sample[] samples = new DragonFlightHistory.Sample[64];
private int head = -1;
public DragonFlightHistory() {
Arrays.fill(this.samples, new DragonFlightHistory.Sample(0.0, 0.0F));
}
public void copyFrom(DragonFlightHistory other) {
System.arraycopy(other.samples, 0, this.samples, 0, 64);
this.head = other.head;
}
public void record(double y, float yRot) {
DragonFlightHistory.Sample sample = new DragonFlightHistory.Sample(y, yRot);
if (this.head < 0) {
Arrays.fill(this.samples, sample);
}
if (++this.head == 64) {
this.head = 0;
}
this.samples[this.head] = sample;
}
public DragonFlightHistory.Sample get(int index) {
return this.samples[this.head - index & 63];
}
public DragonFlightHistory.Sample get(int index, float partialTick) {
DragonFlightHistory.Sample sample = this.get(index);
DragonFlightHistory.Sample sample2 = this.get(index + 1);
return new DragonFlightHistory.Sample(Mth.lerp((double)partialTick, sample2.y, sample.y), Mth.rotLerp(partialTick, sample2.yRot, sample.yRot));
}
public record Sample(double y, float yRot) {
}
}