class_astargrid2d.rst 37 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710
  1. :github_url: hide
  2. .. DO NOT EDIT THIS FILE!!!
  3. .. Generated automatically from Godot engine sources.
  4. .. Generator: https://github.com/godotengine/godot/tree/master/doc/tools/make_rst.py.
  5. .. XML source: https://github.com/godotengine/godot/tree/master/doc/classes/AStarGrid2D.xml.
  6. .. _class_AStarGrid2D:
  7. AStarGrid2D
  8. ===========
  9. **Inherits:** :ref:`RefCounted<class_RefCounted>` **<** :ref:`Object<class_Object>`
  10. An implementation of A\* for finding the shortest path between two points on a partial 2D grid.
  11. .. rst-class:: classref-introduction-group
  12. Description
  13. -----------
  14. **AStarGrid2D** is a variant of :ref:`AStar2D<class_AStar2D>` that is specialized for partial 2D grids. It is simpler to use because it doesn't require you to manually create points and connect them together. This class also supports multiple types of heuristics, modes for diagonal movement, and a jumping mode to speed up calculations.
  15. To use **AStarGrid2D**, you only need to set the :ref:`region<class_AStarGrid2D_property_region>` of the grid, optionally set the :ref:`cell_size<class_AStarGrid2D_property_cell_size>`, and then call the :ref:`update()<class_AStarGrid2D_method_update>` method:
  16. .. tabs::
  17. .. code-tab:: gdscript
  18. var astar_grid = AStarGrid2D.new()
  19. astar_grid.region = Rect2i(0, 0, 32, 32)
  20. astar_grid.cell_size = Vector2(16, 16)
  21. astar_grid.update()
  22. print(astar_grid.get_id_path(Vector2i(0, 0), Vector2i(3, 4))) # Prints [(0, 0), (1, 1), (2, 2), (3, 3), (3, 4)]
  23. print(astar_grid.get_point_path(Vector2i(0, 0), Vector2i(3, 4))) # Prints [(0, 0), (16, 16), (32, 32), (48, 48), (48, 64)]
  24. .. code-tab:: csharp
  25. AStarGrid2D astarGrid = new AStarGrid2D();
  26. astarGrid.Region = new Rect2I(0, 0, 32, 32);
  27. astarGrid.CellSize = new Vector2I(16, 16);
  28. astarGrid.Update();
  29. GD.Print(astarGrid.GetIdPath(Vector2I.Zero, new Vector2I(3, 4))); // Prints [(0, 0), (1, 1), (2, 2), (3, 3), (3, 4)]
  30. GD.Print(astarGrid.GetPointPath(Vector2I.Zero, new Vector2I(3, 4))); // Prints [(0, 0), (16, 16), (32, 32), (48, 48), (48, 64)]
  31. To remove a point from the pathfinding grid, it must be set as "solid" with :ref:`set_point_solid()<class_AStarGrid2D_method_set_point_solid>`.
  32. .. rst-class:: classref-introduction-group
  33. Tutorials
  34. ---------
  35. - `Grid-based Navigation with AStarGrid2D Demo <https://godotengine.org/asset-library/asset/2723>`__
  36. .. rst-class:: classref-reftable-group
  37. Properties
  38. ----------
  39. .. table::
  40. :widths: auto
  41. +----------------------------------------------------+------------------------------------------------------------------------------------------+------------------------+
  42. | :ref:`CellShape<enum_AStarGrid2D_CellShape>` | :ref:`cell_shape<class_AStarGrid2D_property_cell_shape>` | ``0`` |
  43. +----------------------------------------------------+------------------------------------------------------------------------------------------+------------------------+
  44. | :ref:`Vector2<class_Vector2>` | :ref:`cell_size<class_AStarGrid2D_property_cell_size>` | ``Vector2(1, 1)`` |
  45. +----------------------------------------------------+------------------------------------------------------------------------------------------+------------------------+
  46. | :ref:`Heuristic<enum_AStarGrid2D_Heuristic>` | :ref:`default_compute_heuristic<class_AStarGrid2D_property_default_compute_heuristic>` | ``0`` |
  47. +----------------------------------------------------+------------------------------------------------------------------------------------------+------------------------+
  48. | :ref:`Heuristic<enum_AStarGrid2D_Heuristic>` | :ref:`default_estimate_heuristic<class_AStarGrid2D_property_default_estimate_heuristic>` | ``0`` |
  49. +----------------------------------------------------+------------------------------------------------------------------------------------------+------------------------+
  50. | :ref:`DiagonalMode<enum_AStarGrid2D_DiagonalMode>` | :ref:`diagonal_mode<class_AStarGrid2D_property_diagonal_mode>` | ``0`` |
  51. +----------------------------------------------------+------------------------------------------------------------------------------------------+------------------------+
  52. | :ref:`bool<class_bool>` | :ref:`jumping_enabled<class_AStarGrid2D_property_jumping_enabled>` | ``false`` |
  53. +----------------------------------------------------+------------------------------------------------------------------------------------------+------------------------+
  54. | :ref:`Vector2<class_Vector2>` | :ref:`offset<class_AStarGrid2D_property_offset>` | ``Vector2(0, 0)`` |
  55. +----------------------------------------------------+------------------------------------------------------------------------------------------+------------------------+
  56. | :ref:`Rect2i<class_Rect2i>` | :ref:`region<class_AStarGrid2D_property_region>` | ``Rect2i(0, 0, 0, 0)`` |
  57. +----------------------------------------------------+------------------------------------------------------------------------------------------+------------------------+
  58. | :ref:`Vector2i<class_Vector2i>` | :ref:`size<class_AStarGrid2D_property_size>` | ``Vector2i(0, 0)`` |
  59. +----------------------------------------------------+------------------------------------------------------------------------------------------+------------------------+
  60. .. rst-class:: classref-reftable-group
  61. Methods
  62. -------
  63. .. table::
  64. :widths: auto
  65. +------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
  66. | :ref:`float<class_float>` | :ref:`_compute_cost<class_AStarGrid2D_private_method__compute_cost>`\ (\ from_id\: :ref:`Vector2i<class_Vector2i>`, to_id\: :ref:`Vector2i<class_Vector2i>`\ ) |virtual| |const| |
  67. +------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
  68. | :ref:`float<class_float>` | :ref:`_estimate_cost<class_AStarGrid2D_private_method__estimate_cost>`\ (\ from_id\: :ref:`Vector2i<class_Vector2i>`, end_id\: :ref:`Vector2i<class_Vector2i>`\ ) |virtual| |const| |
  69. +------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
  70. | |void| | :ref:`clear<class_AStarGrid2D_method_clear>`\ (\ ) |
  71. +------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
  72. | |void| | :ref:`fill_solid_region<class_AStarGrid2D_method_fill_solid_region>`\ (\ region\: :ref:`Rect2i<class_Rect2i>`, solid\: :ref:`bool<class_bool>` = true\ ) |
  73. +------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
  74. | |void| | :ref:`fill_weight_scale_region<class_AStarGrid2D_method_fill_weight_scale_region>`\ (\ region\: :ref:`Rect2i<class_Rect2i>`, weight_scale\: :ref:`float<class_float>`\ ) |
  75. +------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
  76. | :ref:`Array<class_Array>`\[:ref:`Vector2i<class_Vector2i>`\] | :ref:`get_id_path<class_AStarGrid2D_method_get_id_path>`\ (\ from_id\: :ref:`Vector2i<class_Vector2i>`, to_id\: :ref:`Vector2i<class_Vector2i>`, allow_partial_path\: :ref:`bool<class_bool>` = false\ ) |
  77. +------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
  78. | :ref:`Array<class_Array>`\[:ref:`Dictionary<class_Dictionary>`\] | :ref:`get_point_data_in_region<class_AStarGrid2D_method_get_point_data_in_region>`\ (\ region\: :ref:`Rect2i<class_Rect2i>`\ ) |const| |
  79. +------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
  80. | :ref:`PackedVector2Array<class_PackedVector2Array>` | :ref:`get_point_path<class_AStarGrid2D_method_get_point_path>`\ (\ from_id\: :ref:`Vector2i<class_Vector2i>`, to_id\: :ref:`Vector2i<class_Vector2i>`, allow_partial_path\: :ref:`bool<class_bool>` = false\ ) |
  81. +------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
  82. | :ref:`Vector2<class_Vector2>` | :ref:`get_point_position<class_AStarGrid2D_method_get_point_position>`\ (\ id\: :ref:`Vector2i<class_Vector2i>`\ ) |const| |
  83. +------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
  84. | :ref:`float<class_float>` | :ref:`get_point_weight_scale<class_AStarGrid2D_method_get_point_weight_scale>`\ (\ id\: :ref:`Vector2i<class_Vector2i>`\ ) |const| |
  85. +------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
  86. | :ref:`bool<class_bool>` | :ref:`is_dirty<class_AStarGrid2D_method_is_dirty>`\ (\ ) |const| |
  87. +------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
  88. | :ref:`bool<class_bool>` | :ref:`is_in_bounds<class_AStarGrid2D_method_is_in_bounds>`\ (\ x\: :ref:`int<class_int>`, y\: :ref:`int<class_int>`\ ) |const| |
  89. +------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
  90. | :ref:`bool<class_bool>` | :ref:`is_in_boundsv<class_AStarGrid2D_method_is_in_boundsv>`\ (\ id\: :ref:`Vector2i<class_Vector2i>`\ ) |const| |
  91. +------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
  92. | :ref:`bool<class_bool>` | :ref:`is_point_solid<class_AStarGrid2D_method_is_point_solid>`\ (\ id\: :ref:`Vector2i<class_Vector2i>`\ ) |const| |
  93. +------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
  94. | |void| | :ref:`set_point_solid<class_AStarGrid2D_method_set_point_solid>`\ (\ id\: :ref:`Vector2i<class_Vector2i>`, solid\: :ref:`bool<class_bool>` = true\ ) |
  95. +------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
  96. | |void| | :ref:`set_point_weight_scale<class_AStarGrid2D_method_set_point_weight_scale>`\ (\ id\: :ref:`Vector2i<class_Vector2i>`, weight_scale\: :ref:`float<class_float>`\ ) |
  97. +------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
  98. | |void| | :ref:`update<class_AStarGrid2D_method_update>`\ (\ ) |
  99. +------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
  100. .. rst-class:: classref-section-separator
  101. ----
  102. .. rst-class:: classref-descriptions-group
  103. Enumerations
  104. ------------
  105. .. _enum_AStarGrid2D_Heuristic:
  106. .. rst-class:: classref-enumeration
  107. enum **Heuristic**: :ref:`🔗<enum_AStarGrid2D_Heuristic>`
  108. .. _class_AStarGrid2D_constant_HEURISTIC_EUCLIDEAN:
  109. .. rst-class:: classref-enumeration-constant
  110. :ref:`Heuristic<enum_AStarGrid2D_Heuristic>` **HEURISTIC_EUCLIDEAN** = ``0``
  111. The `Euclidean heuristic <https://en.wikipedia.org/wiki/Euclidean_distance>`__ to be used for the pathfinding using the following formula:
  112. ::
  113. dx = abs(to_id.x - from_id.x)
  114. dy = abs(to_id.y - from_id.y)
  115. result = sqrt(dx * dx + dy * dy)
  116. \ **Note:** This is also the internal heuristic used in :ref:`AStar3D<class_AStar3D>` and :ref:`AStar2D<class_AStar2D>` by default (with the inclusion of possible z-axis coordinate).
  117. .. _class_AStarGrid2D_constant_HEURISTIC_MANHATTAN:
  118. .. rst-class:: classref-enumeration-constant
  119. :ref:`Heuristic<enum_AStarGrid2D_Heuristic>` **HEURISTIC_MANHATTAN** = ``1``
  120. The `Manhattan heuristic <https://en.wikipedia.org/wiki/Taxicab_geometry>`__ to be used for the pathfinding using the following formula:
  121. ::
  122. dx = abs(to_id.x - from_id.x)
  123. dy = abs(to_id.y - from_id.y)
  124. result = dx + dy
  125. \ **Note:** This heuristic is intended to be used with 4-side orthogonal movements, provided by setting the :ref:`diagonal_mode<class_AStarGrid2D_property_diagonal_mode>` to :ref:`DIAGONAL_MODE_NEVER<class_AStarGrid2D_constant_DIAGONAL_MODE_NEVER>`.
  126. .. _class_AStarGrid2D_constant_HEURISTIC_OCTILE:
  127. .. rst-class:: classref-enumeration-constant
  128. :ref:`Heuristic<enum_AStarGrid2D_Heuristic>` **HEURISTIC_OCTILE** = ``2``
  129. The Octile heuristic to be used for the pathfinding using the following formula:
  130. ::
  131. dx = abs(to_id.x - from_id.x)
  132. dy = abs(to_id.y - from_id.y)
  133. f = sqrt(2) - 1
  134. result = (dx < dy) ? f * dx + dy : f * dy + dx;
  135. .. _class_AStarGrid2D_constant_HEURISTIC_CHEBYSHEV:
  136. .. rst-class:: classref-enumeration-constant
  137. :ref:`Heuristic<enum_AStarGrid2D_Heuristic>` **HEURISTIC_CHEBYSHEV** = ``3``
  138. The `Chebyshev heuristic <https://en.wikipedia.org/wiki/Chebyshev_distance>`__ to be used for the pathfinding using the following formula:
  139. ::
  140. dx = abs(to_id.x - from_id.x)
  141. dy = abs(to_id.y - from_id.y)
  142. result = max(dx, dy)
  143. .. _class_AStarGrid2D_constant_HEURISTIC_MAX:
  144. .. rst-class:: classref-enumeration-constant
  145. :ref:`Heuristic<enum_AStarGrid2D_Heuristic>` **HEURISTIC_MAX** = ``4``
  146. Represents the size of the :ref:`Heuristic<enum_AStarGrid2D_Heuristic>` enum.
  147. .. rst-class:: classref-item-separator
  148. ----
  149. .. _enum_AStarGrid2D_DiagonalMode:
  150. .. rst-class:: classref-enumeration
  151. enum **DiagonalMode**: :ref:`🔗<enum_AStarGrid2D_DiagonalMode>`
  152. .. _class_AStarGrid2D_constant_DIAGONAL_MODE_ALWAYS:
  153. .. rst-class:: classref-enumeration-constant
  154. :ref:`DiagonalMode<enum_AStarGrid2D_DiagonalMode>` **DIAGONAL_MODE_ALWAYS** = ``0``
  155. The pathfinding algorithm will ignore solid neighbors around the target cell and allow passing using diagonals.
  156. .. _class_AStarGrid2D_constant_DIAGONAL_MODE_NEVER:
  157. .. rst-class:: classref-enumeration-constant
  158. :ref:`DiagonalMode<enum_AStarGrid2D_DiagonalMode>` **DIAGONAL_MODE_NEVER** = ``1``
  159. The pathfinding algorithm will ignore all diagonals and the way will be always orthogonal.
  160. .. _class_AStarGrid2D_constant_DIAGONAL_MODE_AT_LEAST_ONE_WALKABLE:
  161. .. rst-class:: classref-enumeration-constant
  162. :ref:`DiagonalMode<enum_AStarGrid2D_DiagonalMode>` **DIAGONAL_MODE_AT_LEAST_ONE_WALKABLE** = ``2``
  163. The pathfinding algorithm will avoid using diagonals if at least two obstacles have been placed around the neighboring cells of the specific path segment.
  164. .. _class_AStarGrid2D_constant_DIAGONAL_MODE_ONLY_IF_NO_OBSTACLES:
  165. .. rst-class:: classref-enumeration-constant
  166. :ref:`DiagonalMode<enum_AStarGrid2D_DiagonalMode>` **DIAGONAL_MODE_ONLY_IF_NO_OBSTACLES** = ``3``
  167. The pathfinding algorithm will avoid using diagonals if any obstacle has been placed around the neighboring cells of the specific path segment.
  168. .. _class_AStarGrid2D_constant_DIAGONAL_MODE_MAX:
  169. .. rst-class:: classref-enumeration-constant
  170. :ref:`DiagonalMode<enum_AStarGrid2D_DiagonalMode>` **DIAGONAL_MODE_MAX** = ``4``
  171. Represents the size of the :ref:`DiagonalMode<enum_AStarGrid2D_DiagonalMode>` enum.
  172. .. rst-class:: classref-item-separator
  173. ----
  174. .. _enum_AStarGrid2D_CellShape:
  175. .. rst-class:: classref-enumeration
  176. enum **CellShape**: :ref:`🔗<enum_AStarGrid2D_CellShape>`
  177. .. _class_AStarGrid2D_constant_CELL_SHAPE_SQUARE:
  178. .. rst-class:: classref-enumeration-constant
  179. :ref:`CellShape<enum_AStarGrid2D_CellShape>` **CELL_SHAPE_SQUARE** = ``0``
  180. Rectangular cell shape.
  181. .. _class_AStarGrid2D_constant_CELL_SHAPE_ISOMETRIC_RIGHT:
  182. .. rst-class:: classref-enumeration-constant
  183. :ref:`CellShape<enum_AStarGrid2D_CellShape>` **CELL_SHAPE_ISOMETRIC_RIGHT** = ``1``
  184. Diamond cell shape (for isometric look). Cell coordinates layout where the horizontal axis goes up-right, and the vertical one goes down-right.
  185. .. _class_AStarGrid2D_constant_CELL_SHAPE_ISOMETRIC_DOWN:
  186. .. rst-class:: classref-enumeration-constant
  187. :ref:`CellShape<enum_AStarGrid2D_CellShape>` **CELL_SHAPE_ISOMETRIC_DOWN** = ``2``
  188. Diamond cell shape (for isometric look). Cell coordinates layout where the horizontal axis goes down-right, and the vertical one goes down-left.
  189. .. _class_AStarGrid2D_constant_CELL_SHAPE_MAX:
  190. .. rst-class:: classref-enumeration-constant
  191. :ref:`CellShape<enum_AStarGrid2D_CellShape>` **CELL_SHAPE_MAX** = ``3``
  192. Represents the size of the :ref:`CellShape<enum_AStarGrid2D_CellShape>` enum.
  193. .. rst-class:: classref-section-separator
  194. ----
  195. .. rst-class:: classref-descriptions-group
  196. Property Descriptions
  197. ---------------------
  198. .. _class_AStarGrid2D_property_cell_shape:
  199. .. rst-class:: classref-property
  200. :ref:`CellShape<enum_AStarGrid2D_CellShape>` **cell_shape** = ``0`` :ref:`🔗<class_AStarGrid2D_property_cell_shape>`
  201. .. rst-class:: classref-property-setget
  202. - |void| **set_cell_shape**\ (\ value\: :ref:`CellShape<enum_AStarGrid2D_CellShape>`\ )
  203. - :ref:`CellShape<enum_AStarGrid2D_CellShape>` **get_cell_shape**\ (\ )
  204. The cell shape. Affects how the positions are placed in the grid. If changed, :ref:`update()<class_AStarGrid2D_method_update>` needs to be called before finding the next path.
  205. .. rst-class:: classref-item-separator
  206. ----
  207. .. _class_AStarGrid2D_property_cell_size:
  208. .. rst-class:: classref-property
  209. :ref:`Vector2<class_Vector2>` **cell_size** = ``Vector2(1, 1)`` :ref:`🔗<class_AStarGrid2D_property_cell_size>`
  210. .. rst-class:: classref-property-setget
  211. - |void| **set_cell_size**\ (\ value\: :ref:`Vector2<class_Vector2>`\ )
  212. - :ref:`Vector2<class_Vector2>` **get_cell_size**\ (\ )
  213. The size of the point cell which will be applied to calculate the resulting point position returned by :ref:`get_point_path()<class_AStarGrid2D_method_get_point_path>`. If changed, :ref:`update()<class_AStarGrid2D_method_update>` needs to be called before finding the next path.
  214. .. rst-class:: classref-item-separator
  215. ----
  216. .. _class_AStarGrid2D_property_default_compute_heuristic:
  217. .. rst-class:: classref-property
  218. :ref:`Heuristic<enum_AStarGrid2D_Heuristic>` **default_compute_heuristic** = ``0`` :ref:`🔗<class_AStarGrid2D_property_default_compute_heuristic>`
  219. .. rst-class:: classref-property-setget
  220. - |void| **set_default_compute_heuristic**\ (\ value\: :ref:`Heuristic<enum_AStarGrid2D_Heuristic>`\ )
  221. - :ref:`Heuristic<enum_AStarGrid2D_Heuristic>` **get_default_compute_heuristic**\ (\ )
  222. The default :ref:`Heuristic<enum_AStarGrid2D_Heuristic>` which will be used to calculate the cost between two points if :ref:`_compute_cost()<class_AStarGrid2D_private_method__compute_cost>` was not overridden.
  223. .. rst-class:: classref-item-separator
  224. ----
  225. .. _class_AStarGrid2D_property_default_estimate_heuristic:
  226. .. rst-class:: classref-property
  227. :ref:`Heuristic<enum_AStarGrid2D_Heuristic>` **default_estimate_heuristic** = ``0`` :ref:`🔗<class_AStarGrid2D_property_default_estimate_heuristic>`
  228. .. rst-class:: classref-property-setget
  229. - |void| **set_default_estimate_heuristic**\ (\ value\: :ref:`Heuristic<enum_AStarGrid2D_Heuristic>`\ )
  230. - :ref:`Heuristic<enum_AStarGrid2D_Heuristic>` **get_default_estimate_heuristic**\ (\ )
  231. The default :ref:`Heuristic<enum_AStarGrid2D_Heuristic>` which will be used to calculate the cost between the point and the end point if :ref:`_estimate_cost()<class_AStarGrid2D_private_method__estimate_cost>` was not overridden.
  232. .. rst-class:: classref-item-separator
  233. ----
  234. .. _class_AStarGrid2D_property_diagonal_mode:
  235. .. rst-class:: classref-property
  236. :ref:`DiagonalMode<enum_AStarGrid2D_DiagonalMode>` **diagonal_mode** = ``0`` :ref:`🔗<class_AStarGrid2D_property_diagonal_mode>`
  237. .. rst-class:: classref-property-setget
  238. - |void| **set_diagonal_mode**\ (\ value\: :ref:`DiagonalMode<enum_AStarGrid2D_DiagonalMode>`\ )
  239. - :ref:`DiagonalMode<enum_AStarGrid2D_DiagonalMode>` **get_diagonal_mode**\ (\ )
  240. A specific :ref:`DiagonalMode<enum_AStarGrid2D_DiagonalMode>` mode which will force the path to avoid or accept the specified diagonals.
  241. .. rst-class:: classref-item-separator
  242. ----
  243. .. _class_AStarGrid2D_property_jumping_enabled:
  244. .. rst-class:: classref-property
  245. :ref:`bool<class_bool>` **jumping_enabled** = ``false`` :ref:`🔗<class_AStarGrid2D_property_jumping_enabled>`
  246. .. rst-class:: classref-property-setget
  247. - |void| **set_jumping_enabled**\ (\ value\: :ref:`bool<class_bool>`\ )
  248. - :ref:`bool<class_bool>` **is_jumping_enabled**\ (\ )
  249. Enables or disables jumping to skip up the intermediate points and speeds up the searching algorithm.
  250. \ **Note:** Currently, toggling it on disables the consideration of weight scaling in pathfinding.
  251. .. rst-class:: classref-item-separator
  252. ----
  253. .. _class_AStarGrid2D_property_offset:
  254. .. rst-class:: classref-property
  255. :ref:`Vector2<class_Vector2>` **offset** = ``Vector2(0, 0)`` :ref:`🔗<class_AStarGrid2D_property_offset>`
  256. .. rst-class:: classref-property-setget
  257. - |void| **set_offset**\ (\ value\: :ref:`Vector2<class_Vector2>`\ )
  258. - :ref:`Vector2<class_Vector2>` **get_offset**\ (\ )
  259. The offset of the grid which will be applied to calculate the resulting point position returned by :ref:`get_point_path()<class_AStarGrid2D_method_get_point_path>`. If changed, :ref:`update()<class_AStarGrid2D_method_update>` needs to be called before finding the next path.
  260. .. rst-class:: classref-item-separator
  261. ----
  262. .. _class_AStarGrid2D_property_region:
  263. .. rst-class:: classref-property
  264. :ref:`Rect2i<class_Rect2i>` **region** = ``Rect2i(0, 0, 0, 0)`` :ref:`🔗<class_AStarGrid2D_property_region>`
  265. .. rst-class:: classref-property-setget
  266. - |void| **set_region**\ (\ value\: :ref:`Rect2i<class_Rect2i>`\ )
  267. - :ref:`Rect2i<class_Rect2i>` **get_region**\ (\ )
  268. The region of grid cells available for pathfinding. If changed, :ref:`update()<class_AStarGrid2D_method_update>` needs to be called before finding the next path.
  269. .. rst-class:: classref-item-separator
  270. ----
  271. .. _class_AStarGrid2D_property_size:
  272. .. rst-class:: classref-property
  273. :ref:`Vector2i<class_Vector2i>` **size** = ``Vector2i(0, 0)`` :ref:`🔗<class_AStarGrid2D_property_size>`
  274. .. rst-class:: classref-property-setget
  275. - |void| **set_size**\ (\ value\: :ref:`Vector2i<class_Vector2i>`\ )
  276. - :ref:`Vector2i<class_Vector2i>` **get_size**\ (\ )
  277. **Deprecated:** Use :ref:`region<class_AStarGrid2D_property_region>` instead.
  278. The size of the grid (number of cells of size :ref:`cell_size<class_AStarGrid2D_property_cell_size>` on each axis). If changed, :ref:`update()<class_AStarGrid2D_method_update>` needs to be called before finding the next path.
  279. .. rst-class:: classref-section-separator
  280. ----
  281. .. rst-class:: classref-descriptions-group
  282. Method Descriptions
  283. -------------------
  284. .. _class_AStarGrid2D_private_method__compute_cost:
  285. .. rst-class:: classref-method
  286. :ref:`float<class_float>` **_compute_cost**\ (\ from_id\: :ref:`Vector2i<class_Vector2i>`, to_id\: :ref:`Vector2i<class_Vector2i>`\ ) |virtual| |const| :ref:`🔗<class_AStarGrid2D_private_method__compute_cost>`
  287. Called when computing the cost between two connected points.
  288. Note that this function is hidden in the default **AStarGrid2D** class.
  289. .. rst-class:: classref-item-separator
  290. ----
  291. .. _class_AStarGrid2D_private_method__estimate_cost:
  292. .. rst-class:: classref-method
  293. :ref:`float<class_float>` **_estimate_cost**\ (\ from_id\: :ref:`Vector2i<class_Vector2i>`, end_id\: :ref:`Vector2i<class_Vector2i>`\ ) |virtual| |const| :ref:`🔗<class_AStarGrid2D_private_method__estimate_cost>`
  294. Called when estimating the cost between a point and the path's ending point.
  295. Note that this function is hidden in the default **AStarGrid2D** class.
  296. .. rst-class:: classref-item-separator
  297. ----
  298. .. _class_AStarGrid2D_method_clear:
  299. .. rst-class:: classref-method
  300. |void| **clear**\ (\ ) :ref:`🔗<class_AStarGrid2D_method_clear>`
  301. Clears the grid and sets the :ref:`region<class_AStarGrid2D_property_region>` to ``Rect2i(0, 0, 0, 0)``.
  302. .. rst-class:: classref-item-separator
  303. ----
  304. .. _class_AStarGrid2D_method_fill_solid_region:
  305. .. rst-class:: classref-method
  306. |void| **fill_solid_region**\ (\ region\: :ref:`Rect2i<class_Rect2i>`, solid\: :ref:`bool<class_bool>` = true\ ) :ref:`🔗<class_AStarGrid2D_method_fill_solid_region>`
  307. Fills the given ``region`` on the grid with the specified value for the solid flag.
  308. \ **Note:** Calling :ref:`update()<class_AStarGrid2D_method_update>` is not needed after the call of this function.
  309. .. rst-class:: classref-item-separator
  310. ----
  311. .. _class_AStarGrid2D_method_fill_weight_scale_region:
  312. .. rst-class:: classref-method
  313. |void| **fill_weight_scale_region**\ (\ region\: :ref:`Rect2i<class_Rect2i>`, weight_scale\: :ref:`float<class_float>`\ ) :ref:`🔗<class_AStarGrid2D_method_fill_weight_scale_region>`
  314. Fills the given ``region`` on the grid with the specified value for the weight scale.
  315. \ **Note:** Calling :ref:`update()<class_AStarGrid2D_method_update>` is not needed after the call of this function.
  316. .. rst-class:: classref-item-separator
  317. ----
  318. .. _class_AStarGrid2D_method_get_id_path:
  319. .. rst-class:: classref-method
  320. :ref:`Array<class_Array>`\[:ref:`Vector2i<class_Vector2i>`\] **get_id_path**\ (\ from_id\: :ref:`Vector2i<class_Vector2i>`, to_id\: :ref:`Vector2i<class_Vector2i>`, allow_partial_path\: :ref:`bool<class_bool>` = false\ ) :ref:`🔗<class_AStarGrid2D_method_get_id_path>`
  321. Returns an array with the IDs of the points that form the path found by AStar2D between the given points. The array is ordered from the starting point to the ending point of the path.
  322. If there is no valid path to the target, and ``allow_partial_path`` is ``true``, returns a path to the point closest to the target that can be reached.
  323. \ **Note:** When ``allow_partial_path`` is ``true`` and ``to_id`` is solid the search may take an unusually long time to finish.
  324. .. rst-class:: classref-item-separator
  325. ----
  326. .. _class_AStarGrid2D_method_get_point_data_in_region:
  327. .. rst-class:: classref-method
  328. :ref:`Array<class_Array>`\[:ref:`Dictionary<class_Dictionary>`\] **get_point_data_in_region**\ (\ region\: :ref:`Rect2i<class_Rect2i>`\ ) |const| :ref:`🔗<class_AStarGrid2D_method_get_point_data_in_region>`
  329. Returns an array of dictionaries with point data (``id``: :ref:`Vector2i<class_Vector2i>`, ``position``: :ref:`Vector2<class_Vector2>`, ``solid``: :ref:`bool<class_bool>`, ``weight_scale``: :ref:`float<class_float>`) within a ``region``.
  330. .. rst-class:: classref-item-separator
  331. ----
  332. .. _class_AStarGrid2D_method_get_point_path:
  333. .. rst-class:: classref-method
  334. :ref:`PackedVector2Array<class_PackedVector2Array>` **get_point_path**\ (\ from_id\: :ref:`Vector2i<class_Vector2i>`, to_id\: :ref:`Vector2i<class_Vector2i>`, allow_partial_path\: :ref:`bool<class_bool>` = false\ ) :ref:`🔗<class_AStarGrid2D_method_get_point_path>`
  335. Returns an array with the points that are in the path found by **AStarGrid2D** between the given points. The array is ordered from the starting point to the ending point of the path.
  336. If there is no valid path to the target, and ``allow_partial_path`` is ``true``, returns a path to the point closest to the target that can be reached.
  337. \ **Note:** This method is not thread-safe. If called from a :ref:`Thread<class_Thread>`, it will return an empty array and will print an error message.
  338. Additionally, when ``allow_partial_path`` is ``true`` and ``to_id`` is solid the search may take an unusually long time to finish.
  339. .. rst-class:: classref-item-separator
  340. ----
  341. .. _class_AStarGrid2D_method_get_point_position:
  342. .. rst-class:: classref-method
  343. :ref:`Vector2<class_Vector2>` **get_point_position**\ (\ id\: :ref:`Vector2i<class_Vector2i>`\ ) |const| :ref:`🔗<class_AStarGrid2D_method_get_point_position>`
  344. Returns the position of the point associated with the given ``id``.
  345. .. rst-class:: classref-item-separator
  346. ----
  347. .. _class_AStarGrid2D_method_get_point_weight_scale:
  348. .. rst-class:: classref-method
  349. :ref:`float<class_float>` **get_point_weight_scale**\ (\ id\: :ref:`Vector2i<class_Vector2i>`\ ) |const| :ref:`🔗<class_AStarGrid2D_method_get_point_weight_scale>`
  350. Returns the weight scale of the point associated with the given ``id``.
  351. .. rst-class:: classref-item-separator
  352. ----
  353. .. _class_AStarGrid2D_method_is_dirty:
  354. .. rst-class:: classref-method
  355. :ref:`bool<class_bool>` **is_dirty**\ (\ ) |const| :ref:`🔗<class_AStarGrid2D_method_is_dirty>`
  356. Indicates that the grid parameters were changed and :ref:`update()<class_AStarGrid2D_method_update>` needs to be called.
  357. .. rst-class:: classref-item-separator
  358. ----
  359. .. _class_AStarGrid2D_method_is_in_bounds:
  360. .. rst-class:: classref-method
  361. :ref:`bool<class_bool>` **is_in_bounds**\ (\ x\: :ref:`int<class_int>`, y\: :ref:`int<class_int>`\ ) |const| :ref:`🔗<class_AStarGrid2D_method_is_in_bounds>`
  362. Returns ``true`` if the ``x`` and ``y`` is a valid grid coordinate (id), i.e. if it is inside :ref:`region<class_AStarGrid2D_property_region>`. Equivalent to ``region.has_point(Vector2i(x, y))``.
  363. .. rst-class:: classref-item-separator
  364. ----
  365. .. _class_AStarGrid2D_method_is_in_boundsv:
  366. .. rst-class:: classref-method
  367. :ref:`bool<class_bool>` **is_in_boundsv**\ (\ id\: :ref:`Vector2i<class_Vector2i>`\ ) |const| :ref:`🔗<class_AStarGrid2D_method_is_in_boundsv>`
  368. Returns ``true`` if the ``id`` vector is a valid grid coordinate, i.e. if it is inside :ref:`region<class_AStarGrid2D_property_region>`. Equivalent to ``region.has_point(id)``.
  369. .. rst-class:: classref-item-separator
  370. ----
  371. .. _class_AStarGrid2D_method_is_point_solid:
  372. .. rst-class:: classref-method
  373. :ref:`bool<class_bool>` **is_point_solid**\ (\ id\: :ref:`Vector2i<class_Vector2i>`\ ) |const| :ref:`🔗<class_AStarGrid2D_method_is_point_solid>`
  374. Returns ``true`` if a point is disabled for pathfinding. By default, all points are enabled.
  375. .. rst-class:: classref-item-separator
  376. ----
  377. .. _class_AStarGrid2D_method_set_point_solid:
  378. .. rst-class:: classref-method
  379. |void| **set_point_solid**\ (\ id\: :ref:`Vector2i<class_Vector2i>`, solid\: :ref:`bool<class_bool>` = true\ ) :ref:`🔗<class_AStarGrid2D_method_set_point_solid>`
  380. Disables or enables the specified point for pathfinding. Useful for making an obstacle. By default, all points are enabled.
  381. \ **Note:** Calling :ref:`update()<class_AStarGrid2D_method_update>` is not needed after the call of this function.
  382. .. rst-class:: classref-item-separator
  383. ----
  384. .. _class_AStarGrid2D_method_set_point_weight_scale:
  385. .. rst-class:: classref-method
  386. |void| **set_point_weight_scale**\ (\ id\: :ref:`Vector2i<class_Vector2i>`, weight_scale\: :ref:`float<class_float>`\ ) :ref:`🔗<class_AStarGrid2D_method_set_point_weight_scale>`
  387. Sets the ``weight_scale`` for the point with the given ``id``. The ``weight_scale`` is multiplied by the result of :ref:`_compute_cost()<class_AStarGrid2D_private_method__compute_cost>` when determining the overall cost of traveling across a segment from a neighboring point to this point.
  388. \ **Note:** Calling :ref:`update()<class_AStarGrid2D_method_update>` is not needed after the call of this function.
  389. .. rst-class:: classref-item-separator
  390. ----
  391. .. _class_AStarGrid2D_method_update:
  392. .. rst-class:: classref-method
  393. |void| **update**\ (\ ) :ref:`🔗<class_AStarGrid2D_method_update>`
  394. Updates the internal state of the grid according to the parameters to prepare it to search the path. Needs to be called if parameters like :ref:`region<class_AStarGrid2D_property_region>`, :ref:`cell_size<class_AStarGrid2D_property_cell_size>` or :ref:`offset<class_AStarGrid2D_property_offset>` are changed. :ref:`is_dirty()<class_AStarGrid2D_method_is_dirty>` will return ``true`` if this is the case and this needs to be called.
  395. \ **Note:** All point data (solidity and weight scale) will be cleared.
  396. .. |virtual| replace:: :abbr:`virtual (This method should typically be overridden by the user to have any effect.)`
  397. .. |required| replace:: :abbr:`required (This method is required to be overridden when extending its base class.)`
  398. .. |const| replace:: :abbr:`const (This method has no side effects. It doesn't modify any of the instance's member variables.)`
  399. .. |vararg| replace:: :abbr:`vararg (This method accepts any number of arguments after the ones described here.)`
  400. .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)`
  401. .. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)`
  402. .. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)`
  403. .. |bitfield| replace:: :abbr:`BitField (This value is an integer composed as a bitmask of the following flags.)`
  404. .. |void| replace:: :abbr:`void (No return value.)`