Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /**
- * Renvoie true si le Player est dans un polygone
- * @param liste Liste de point du polygone
- * @param player La position du player a tester
- * @param minY Le mini en hauteur du polygone
- * @param maxY Le max en hauteur du polygone
- * @return boolean
- */
- public static boolean inPolygon(Collection<Vector3d> liste, Player player, double minY, double maxY) {
- return inPolygon(liste, player.getPosition(), minY, maxY);
- }
- /**
- * Renvoie true si une position est dans un polygone
- * @param liste Liste de point du polygone
- * @param pos La position a tester par exemple celle du Player
- * @param minY Le mini en hauteur du polygone
- * @param maxY Le max en hauteur du polygone
- * @return boolean
- */
- public static boolean inPolygon(Collection<Vector3d> liste, Vector3d pos, double minY, double maxY) {
- if ( liste.size()<3 ) {
- throw new IllegalArgumentException("A polygon needs at least 3 points");
- }
- Path2D.Double path = new Path2D.Double();
- liste.stream().limit(1).forEach(v->path.moveTo(v.getX(), v.getZ()));
- liste.stream().skip(1).forEach(v->path.lineTo(v.getX(), v.getZ()));
- path.closePath();
- // Si la hauteur est pas bonne on renvoie false:
- if (!((pos.getY() >= minY) && (pos.getY() <= maxY))) {
- return false;
- }
- return path.contains(pos.getX(), pos.getZ());
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement