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);
}