mirror of
https://github.com/Jozufozu/Flywheel.git
synced 2025-01-10 06:16:07 +01:00
58 lines
1.4 KiB
Java
58 lines
1.4 KiB
Java
|
package com.jozufozu.flywheel.util;
|
||
|
|
||
|
import net.minecraft.util.Direction;
|
||
|
import net.minecraft.util.Direction.Axis;
|
||
|
|
||
|
public class AngleHelper {
|
||
|
|
||
|
/**
|
||
|
* Legacy method. See {@link #horizontalAngleNew(Direction)} for new method.
|
||
|
*/
|
||
|
public static float horizontalAngle(Direction facing) {
|
||
|
float angle = facing.getHorizontalAngle();
|
||
|
if (facing.getAxis() == Axis.X)
|
||
|
angle = -angle;
|
||
|
return angle;
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* Same as {@link #horizontalAngle(Direction)}, but returns 0 instead of -90 for vertical directions.
|
||
|
*/
|
||
|
public static float horizontalAngleNew(Direction facing) {
|
||
|
if (facing.getAxis().isVertical()) {
|
||
|
return 0;
|
||
|
}
|
||
|
float angle = facing.getHorizontalAngle();
|
||
|
if (facing.getAxis() == Axis.X)
|
||
|
angle = -angle;
|
||
|
return angle;
|
||
|
}
|
||
|
|
||
|
public static float verticalAngle(Direction facing) {
|
||
|
return facing == Direction.UP ? -90 : facing == Direction.DOWN ? 90 : 0;
|
||
|
}
|
||
|
|
||
|
public static float rad(double angle) {
|
||
|
if (angle == 0)
|
||
|
return 0;
|
||
|
return (float) (angle / 180 * Math.PI);
|
||
|
}
|
||
|
|
||
|
public static float deg(double angle) {
|
||
|
if (angle == 0)
|
||
|
return 0;
|
||
|
return (float) (angle * 180 / Math.PI);
|
||
|
}
|
||
|
|
||
|
public static float angleLerp(double pct, double current, double target) {
|
||
|
return (float) (current + getShortestAngleDiff(current, target) * pct);
|
||
|
}
|
||
|
|
||
|
public static float getShortestAngleDiff(double current, double target) {
|
||
|
current = current % 360;
|
||
|
target = target % 360;
|
||
|
return (float) (((((target - current) % 360) + 540) % 360) - 180);
|
||
|
}
|
||
|
|
||
|
}
|