package engine.mobileAI.utilities; import engine.gameManager.ZoneManager; import engine.math.Vector2f; import engine.math.Vector3fImmutable; import engine.objects.Building; import engine.objects.Regions; import engine.objects.Zone; import org.pmw.tinylog.Logger; import java.awt.geom.Path2D; import java.util.ArrayList; public class PathingUtilities { public static class Node { public Vector2f location; public ArrayList neighbors; public Regions region; public Building parentBuilding; public Node(Vector2f loc, Regions reg, Building parent){ this.location = loc; this.region = reg; this.parentBuilding = parent; this.neighbors = new ArrayList<>(); } public ArrayList getNeighbors(){ if(neighbors.size() == 0){ Zone zone = ZoneManager.findSmallestZone(new Vector3fImmutable(this.location.x,0,this.location.y)); if(zone == null) return null; for(Node potentialNeighbor : zone.navNodes){ for (Path2D.Float obstacle : zone.navObstacles) { if (!this.equals(potentialNeighbor) && !obstacle.intersects(this.location.x, this.location.y, potentialNeighbor.location.x, potentialNeighbor.location.y) && this.location.distance(potentialNeighbor.location) < 65) { this.neighbors.add(potentialNeighbor); } } } } return this.neighbors; } } }