package net.smart.render; public abstract class SmartRenderUtilities { public static final float Whole = (float)Math.PI * 2F; public static final float Half = (float)Math.PI; public static final float Quarter = Half / 2F; public static final float Eighth = Quarter / 2F; public static final float Sixteenth = Eighth / 2F; public static final float Thirtytwoth = Sixteenth / 2F; public static final float Sixtyfourth = Thirtytwoth / 2F; public static final float RadiantToAngle = 360F / Whole; public static float getHorizontalCollisionangle(boolean isCollidedPositiveX, boolean isCollidedNegativeX, boolean isCollidedPositiveZ, boolean isCollidedNegativeZ) { if(isCollidedPositiveX) if(isCollidedNegativeX) if(isCollidedPositiveZ) if(isCollidedNegativeZ) ; else return 90F; else if(isCollidedNegativeZ) return 270F; else ; else if(isCollidedPositiveZ) if(isCollidedNegativeZ) return 0F; else return 45F; else if(isCollidedNegativeZ) return 315F; else return 0F; else if(isCollidedNegativeX) if(isCollidedPositiveZ) if(isCollidedNegativeZ) return 180F; else return 135F; else if(isCollidedNegativeZ) return 225F; else return 180F; else if(isCollidedPositiveZ) if(isCollidedNegativeZ) ; else return 90F; else if(isCollidedNegativeZ) return 270F; else ; return Float.NaN; } public static float getAngle(double x, double y) { if(x == 0) { if(y == 0) return Float.NaN; if(y < 0) return 270; return 90; } if(y == 0) { if(x < 0) return 180; return 0; } float angle = (float)Math.atan(y / x) * RadiantToAngle; if(x < 0) return 180F + angle; if(y < 0 && x > 0) return 360F + angle; return angle; } }