public boolean colidePoint(int px, int py) { return CollisionDetector.collideRectPoint(x, y, width, height, px, py); }
/** * Rectangle To Circle. */ public static boolean collideRectCircle(double rectWidth, double rectHeight, double rectRotation, double rectCenterX, double rectCenterY, double circleCenterX, double circleCenterY, double circleRadius) { double tx, ty, cx, cy; if (rectRotation == 0) { //High speed for rectangles without rotation tx = circleCenterX; ty = circleCenterY; cx = rectCenterX; cy = rectCenterY; } else { tx = Math.cos(rectRotation) * circleCenterX - Math.sin(rectRotation) * circleCenterY; ty = Math.cos(rectRotation) * circleCenterY + Math.sin(rectRotation) * circleCenterX; cx = Math.cos(rectRotation) * rectCenterX - Math.sin(rectRotation) * rectCenterY; cy = Math.cos(rectRotation) * rectCenterY + Math.sin(rectRotation) * rectCenterX; } return collideRectPoint(rectWidth, rectHeight, rectRotation, rectCenterX, rectCenterY, circleCenterX, circleCenterY) || collideCircleLine(tx, ty, circleRadius, cx - rectWidth / 2, cy + rectHeight / 2, cx + rectWidth / 2, cy + rectHeight / 2) || collideCircleLine(tx, ty, circleRadius, cx + rectWidth / 2, cy + rectHeight / 2, cx + rectWidth / 2, cy - rectHeight / 2) || collideCircleLine(tx, ty, circleRadius, cx + rectWidth / 2, cy - rectHeight / 2, cx - rectWidth / 2, cy - rectHeight / 2) || collideCircleLine(tx, ty, circleRadius, cx - rectWidth / 2, cy - rectHeight / 2, cx - rectWidth / 2, cy + rectHeight / 2); }
public boolean collideRectPoint(int bx, int by) { return CollisionDetector.collideRectPoint(getX(), getY(), getW(), getH(), bx, by); }
@Override public boolean collideRectPoint(int px, int py) { int rectWidth = (int) (getW() * getScaleX()); int rectHeight = (int) (getH() * getScaleY()); return CollisionDetector.collideRectPoint(getX(), getY(), rectWidth, rectHeight, angle, px, py); }
/** * @param mx * @param my * @return */ public boolean onMouse(int mx, int my) { if (angle == 0) { if (scaleX == 1 && scaleY == 1) { return CollisionDetector.collideRectPoint(getX(), getY(), getW(), getH(), mx, my); } else { int rw = (int) (getW() * getScaleX()); int rh = (int) (getH() * getScaleY()); return CollisionDetector.collideRectPoint(getX() - rw / 4, getY() - rh / 4, rw, rh, mx, my); } } else { if (scaleX == 1 && scaleY == 1) { return CollisionDetector.collideRectPoint(getX(), getY(), getW() / 2, getH() / 2, getAngle(), mx, my); } else { int rw = (int) (getW() * getScaleX()); int rh = (int) (getH() * getScaleY()); return CollisionDetector.collideRectPoint(getX() - rw / 4, getY() - rh / 4, rw / 2, rh / 2, getAngle(), mx, my); } } }