Class reference
PolygonPathFinder
Inherits Resource
Methods
PackedVector2Array find_path(Vector2 from, Vector2 to)
PackedVector2Array find_path(Vector2 from, Vector2 to)Rect2 get_bounds() const
Rect2 get_bounds() constVector2 get_closest_point(Vector2 point) const
Vector2 get_closest_point(Vector2 point) constPackedVector2Array get_intersections(Vector2 from, Vector2 to) const
PackedVector2Array get_intersections(Vector2 from, Vector2 to) constfloat get_point_penalty(int idx) const
float get_point_penalty(int idx) constbool is_point_inside(Vector2 point) const
bool is_point_inside(Vector2 point) constReturns true if point falls inside the polygon area.
var polygon_path_finder = PolygonPathFinder.new()
var points = [Vector2(0.0, 0.0), Vector2(1.0, 0.0), Vector2(0.0, 1.0)]
var connections = [0, 1, 1, 2, 2, 0]
polygon_path_finder.setup(points, connections)
print(polygon_path_finder.is_point_inside(Vector2(0.2, 0.2))) # Prints true
print(polygon_path_finder.is_point_inside(Vector2(1.0, 1.0))) # Prints false
var polygonPathFinder = new PolygonPathFinder();
Vector2[] points =
[
new Vector2(0.0f, 0.0f),
new Vector2(1.0f, 0.0f),
new Vector2(0.0f, 1.0f)
];
int[] connections = [0, 1, 1, 2, 2, 0];
polygonPathFinder.Setup(points, connections);
GD.Print(polygonPathFinder.IsPointInside(new Vector2(0.2f, 0.2f))); // Prints True
GD.Print(polygonPathFinder.IsPointInside(new Vector2(1.0f, 1.0f))); // Prints False
void set_point_penalty(int idx, float penalty)
int idx, float penalty)void setup(PackedVector2Array points, PackedInt32Array connections)
PackedVector2Array points, PackedInt32Array connections)Sets up PolygonPathFinder with an array of points that define the vertices of the polygon, and an array of indices that determine the edges of the polygon. The length of connections must be even, returns an error if odd.
var polygon_path_finder = PolygonPathFinder.new()
var points = [Vector2(0.0, 0.0), Vector2(1.0, 0.0), Vector2(0.0, 1.0)]
var connections = [0, 1, 1, 2, 2, 0]
polygon_path_finder.setup(points, connections)
var polygonPathFinder = new PolygonPathFinder();
Vector2[] points =
[
new Vector2(0.0f, 0.0f),
new Vector2(1.0f, 0.0f),
new Vector2(0.0f, 1.0f)
];
int[] connections = [0, 1, 1, 2, 2, 0];
polygonPathFinder.Setup(points, connections);