diff --git a/src/java/com/threerings/util/DirectionCodes.java b/src/java/com/threerings/util/DirectionCodes.java index a2122990..b67e6e53 100644 --- a/src/java/com/threerings/util/DirectionCodes.java +++ b/src/java/com/threerings/util/DirectionCodes.java @@ -35,7 +35,7 @@ public interface DirectionCodes /** A direction code indicating moving right. */ public static final int RIGHT = 1; - + /** A direction code indicating moving up. */ public static final int UP = 2; @@ -107,4 +107,7 @@ public interface DirectionCodes /** The number of fine compass directions. */ public static final int FINE_DIRECTION_COUNT = 16; + + /** The four points of the compass. */ + public static final int[] CARDINAL_DIRECTIONS = { NORTH, SOUTH, EAST, WEST }; } diff --git a/src/java/com/threerings/util/DirectionUtil.java b/src/java/com/threerings/util/DirectionUtil.java index 19b03980..885a502c 100644 --- a/src/java/com/threerings/util/DirectionUtil.java +++ b/src/java/com/threerings/util/DirectionUtil.java @@ -135,6 +135,14 @@ public class DirectionUtil implements DirectionCodes return rotateCW(direction, FINE_CW_ROTATE.length/2); } + /** + * Get the cardinal direction closest to the specified direction (preferring a clockwise match). + */ + public static int getClosestCardinal (int direction) + { + return getClosest(direction, CARDINAL_DIRECTIONS, true); + } + /** * Get the direction closest to the specified direction, out of * the directions in the possible list (preferring a clockwise match).