Advertisement
Guest User

Untitled

a guest
Nov 16th, 2019
99
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 1.46 KB | None | 0 0
  1.     /**
  2.      * Renvoie true si le Player est dans un polygone
  3.      * @param liste Liste de point du polygone
  4.      * @param player La position du player a tester
  5.      * @param minY Le mini en hauteur du polygone
  6.      * @param maxY Le max en hauteur du polygone
  7.      * @return boolean
  8.      */
  9.     public static boolean inPolygon(Collection<Vector3d> liste, Player player, double minY, double maxY) {
  10.         return inPolygon(liste, player.getPosition(), minY, maxY);
  11.     }
  12.  
  13.  
  14.     /**
  15.      * Renvoie true si une position est dans un polygone
  16.      * @param liste Liste de point du polygone
  17.      * @param pos La position a tester par exemple celle du Player
  18.      * @param minY Le mini en hauteur du polygone
  19.      * @param maxY Le max en hauteur du polygone
  20.      * @return boolean
  21.      */
  22.     public static boolean inPolygon(Collection<Vector3d> liste, Vector3d pos, double minY, double maxY) {
  23.         if ( liste.size()<3 ) {
  24.             throw new IllegalArgumentException("A polygon needs at least 3 points");
  25.         }
  26.         Path2D.Double path = new Path2D.Double();
  27.         liste.stream().limit(1).forEach(v->path.moveTo(v.getX(), v.getZ()));
  28.         liste.stream().skip(1).forEach(v->path.lineTo(v.getX(), v.getZ()));
  29.         path.closePath();
  30. //        Si la hauteur est pas bonne on renvoie false:
  31.         if (!((pos.getY() >= minY) && (pos.getY() <= maxY))) {
  32.             return false;
  33.         }
  34.         return path.contains(pos.getX(), pos.getZ());
  35.     }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement