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

49 lines
1.3 KiB
Java

package net.minecraft.client;
import net.fabricmc.api.EnvType;
import net.fabricmc.api.Environment;
import org.joml.Vector2i;
@Environment(EnvType.CLIENT)
public class ScrollWheelHandler {
private double accumulatedScrollX;
private double accumulatedScrollY;
public Vector2i onMouseScroll(double xOffset, double yOffset) {
if (this.accumulatedScrollX != 0.0 && Math.signum(xOffset) != Math.signum(this.accumulatedScrollX)) {
this.accumulatedScrollX = 0.0;
}
if (this.accumulatedScrollY != 0.0 && Math.signum(yOffset) != Math.signum(this.accumulatedScrollY)) {
this.accumulatedScrollY = 0.0;
}
this.accumulatedScrollX += xOffset;
this.accumulatedScrollY += yOffset;
int i = (int)this.accumulatedScrollX;
int j = (int)this.accumulatedScrollY;
if (i == 0 && j == 0) {
return new Vector2i(0, 0);
} else {
this.accumulatedScrollX -= i;
this.accumulatedScrollY -= j;
return new Vector2i(i, j);
}
}
public static int getNextScrollWheelSelection(double yOffset, int selected, int selectionSize) {
int i = (int)Math.signum(yOffset);
selected -= i;
selected = Math.max(-1, selected);
while (selected < 0) {
selected += selectionSize;
}
while (selected >= selectionSize) {
selected -= selectionSize;
}
return selected;
}
}