2021-06-16 11:19:33 -07:00
|
|
|
package com.jozufozu.flywheel.util;
|
|
|
|
|
2021-09-26 19:40:53 -07:00
|
|
|
import com.jozufozu.flywheel.mixin.PausedPartialTickAccessor;
|
|
|
|
|
2021-06-16 11:19:33 -07:00
|
|
|
import net.minecraft.client.Minecraft;
|
|
|
|
|
2021-12-22 00:22:41 -08:00
|
|
|
/**
|
|
|
|
* Static access to tick-count and partialTick time, accounting for pausing.
|
|
|
|
*/
|
2021-06-16 11:19:33 -07:00
|
|
|
public class AnimationTickHolder {
|
|
|
|
|
2021-12-22 00:22:41 -08:00
|
|
|
// Wrap around every 24 hours to maintain floating point accuracy.
|
|
|
|
private static final int wrappingInterval = 1_728_000;
|
2021-06-30 12:43:54 -07:00
|
|
|
private static int ticks;
|
|
|
|
private static int paused_ticks;
|
|
|
|
|
|
|
|
public static void tick() {
|
|
|
|
if (!Minecraft.getInstance()
|
2021-07-15 11:36:24 -07:00
|
|
|
.isPaused()) {
|
2021-12-22 00:22:41 -08:00
|
|
|
ticks = (ticks + 1) % wrappingInterval;
|
2021-06-30 13:03:02 -07:00
|
|
|
} else {
|
2021-12-22 00:22:41 -08:00
|
|
|
paused_ticks = (paused_ticks + 1) % wrappingInterval;
|
2021-06-30 12:43:54 -07:00
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
public static int getTicks() {
|
|
|
|
return getTicks(false);
|
|
|
|
}
|
|
|
|
|
|
|
|
public static int getTicks(boolean includePaused) {
|
|
|
|
return includePaused ? ticks + paused_ticks : ticks;
|
|
|
|
}
|
|
|
|
|
|
|
|
public static float getRenderTime() {
|
|
|
|
return getTicks() + getPartialTicks();
|
|
|
|
}
|
|
|
|
|
|
|
|
public static float getPartialTicks() {
|
|
|
|
Minecraft mc = Minecraft.getInstance();
|
2021-12-15 15:13:42 -08:00
|
|
|
return (mc.isPaused() ? ((PausedPartialTickAccessor) mc).flywheel$getPartialTicksPaused() : mc.getFrameTime());
|
2021-06-30 12:43:54 -07:00
|
|
|
}
|
2021-12-22 00:22:41 -08:00
|
|
|
|
|
|
|
// Unused but might be useful for debugging.
|
|
|
|
public static void _reset() {
|
|
|
|
ticks = 0;
|
|
|
|
paused_ticks = 0;
|
|
|
|
}
|
2021-06-16 11:19:33 -07:00
|
|
|
}
|