package stu.tnt.gdx.utils; public final class CollisionChecker { private CollisionChecker() { } /***************************************************** * Grid simulation native method *****************************************************/ public static native void setGridData(int boundWidth, int boundHeight, int maxCol, int maxRow); public static native void project(float[] vector2, float x, float y); public static native int project(float x, float y); public static native void unproject(float[] vector2, int col, int row); public static native void unproject(float[] vector2, int id); public static native void toGridPos(float[] vector2, int id); public static native int toMappingId(int col, int row); /***************************************************** * Sprite Manager *****************************************************/ private static int tmp = -1; /** * @Note you should carefull when use this method , when the size2 = 0 it * will automatically * <p> * think that you want to check collision inside the array1 so the * result will maybe not * <p> * ass you expected * @param boundingRectArray1 * the bounding float rect of list 1 * @param size1 * the size of bounding float of list 1 * @param boundingRectArray2 * the bounding float rect of list 2 * @param size2 * the size of bounding float of list 2 * @return the number of collision happen * 2 */ public static int process(int[] resultSet, float[] boundingRectArray1, int size1, float[] boundingRectArray2, int size2) { return checkCollision(resultSet, boundingRectArray1, size1, boundingRectArray2, size2); } /***************************************************** * Sprite Manager *****************************************************/ /** * @Note this is unsafe method process directly with native method without * any check * @param result * @param boundingRectArray1 * @param size1 * @param boundingRectArray2 * @param size2 * @return */ public static native int checkCollision(int[] result, float[] boundingRectArray1, int size1, float[] boundingRectArray2, int size2); }