|
@@ -8,18 +8,13 @@ const DRAW_COLOR = Color.WHITE
|
|
|
|
|
|
# The object for pathfinding on 2D grids.
|
|
|
var _astar = AStarGrid2D.new()
|
|
|
-var _map_rect = Rect2i()
|
|
|
|
|
|
var _start_point = Vector2i()
|
|
|
var _end_point = Vector2i()
|
|
|
var _path = PackedVector2Array()
|
|
|
|
|
|
func _ready():
|
|
|
- # Let's assume that the entire map is located at non-negative coordinates.
|
|
|
- var map_size = get_used_rect().end
|
|
|
- _map_rect = Rect2i(Vector2i(), map_size)
|
|
|
-
|
|
|
- _astar.size = map_size
|
|
|
+ _astar.region = get_used_rect()
|
|
|
_astar.cell_size = CELL_SIZE
|
|
|
_astar.offset = CELL_SIZE * 0.5
|
|
|
_astar.default_compute_heuristic = AStarGrid2D.HEURISTIC_MANHATTAN
|
|
@@ -27,8 +22,8 @@ func _ready():
|
|
|
_astar.diagonal_mode = AStarGrid2D.DIAGONAL_MODE_NEVER
|
|
|
_astar.update()
|
|
|
|
|
|
- for i in map_size.x:
|
|
|
- for j in map_size.y:
|
|
|
+ for i in range(_astar.region.position.x, _astar.region.end.x):
|
|
|
+ for j in range(_astar.region.position.y, _astar.region.end.y):
|
|
|
var pos = Vector2i(i, j)
|
|
|
if get_cell_source_id(0, pos) == Tile.OBSTACLE:
|
|
|
_astar.set_point_solid(pos)
|
|
@@ -52,7 +47,7 @@ func round_local_position(local_position):
|
|
|
|
|
|
func is_point_walkable(local_position):
|
|
|
var map_position = local_to_map(local_position)
|
|
|
- if _map_rect.has_point(map_position):
|
|
|
+ if _astar.is_in_boundsv(map_position):
|
|
|
return not _astar.is_point_solid(map_position)
|
|
|
return false
|
|
|
|