Răsfoiți Sursa

classref: Sync with current 3.5 branch (5478afdb1)

Rémi Verschelde 3 ani în urmă
părinte
comite
c2651cd353
41 a modificat fișierele cu 2252 adăugiri și 1370 ștergeri
  1. 1 1
      classes/[email protected]
  2. 25 13
      classes/[email protected]
  3. 55 55
      classes/class_astar2d.rst
  4. 1 1
      classes/class_audioeffectcapture.rst
  5. 2 2
      classes/class_curvetexture.rst
  6. 33 23
      classes/class_dictionary.rst
  7. 38 4
      classes/class_editorplugin.rst
  8. 1 1
      classes/class_gradienttexture.rst
  9. 1 1
      classes/class_gradienttexture2d.rst
  10. 36 0
      classes/class_gridmap.rst
  11. 41 33
      classes/class_input.rst
  12. 1 1
      classes/class_inputeventjoypadbutton.rst
  13. 1 1
      classes/class_inputeventmousemotion.rst
  14. 1 1
      classes/class_meshinstance2d.rst
  15. 34 7
      classes/class_navigation.rst
  16. 18 0
      classes/class_navigation2d.rst
  17. 190 67
      classes/class_navigation2dserver.rst
  18. 44 4
      classes/class_navigationagent.rst
  19. 43 3
      classes/class_navigationagent2d.rst
  20. 127 123
      classes/class_navigationmesh.rst
  21. 1 1
      classes/class_navigationmeshgenerator.rst
  22. 72 6
      classes/class_navigationmeshinstance.rst
  23. 2 0
      classes/class_navigationobstacle.rst
  24. 2 0
      classes/class_navigationobstacle2d.rst
  25. 10 0
      classes/class_navigationpolygon.rst
  26. 80 5
      classes/class_navigationpolygoninstance.rst
  27. 185 84
      classes/class_navigationserver.rst
  28. 2 0
      classes/class_node2d.rst
  29. 7 0
      classes/class_os.rst
  30. 991 845
      classes/class_projectsettings.rst
  31. 0 1
      classes/class_proximitygroup.rst
  32. 92 70
      classes/class_richtextlabel.rst
  33. 1 1
      classes/class_scenetreetimer.rst
  34. 2 0
      classes/class_spatial.rst
  35. 36 0
      classes/class_tilemap.rst
  36. 2 0
      classes/class_transform2d.rst
  37. 2 2
      classes/class_visibilityenabler2d.rst
  38. 23 3
      classes/class_visibilitynotifier.rst
  39. 18 8
      classes/class_visualserver.rst
  40. 16 2
      classes/class_world.rst
  41. 15 1
      classes/class_world2d.rst

+ 1 - 1
classes/[email protected]

@@ -495,7 +495,7 @@ Returns the result of ``value`` decreased by ``step`` \* ``amount``.
 
 - :ref:`bool<class_bool>` **deep_equal** **(** :ref:`Variant<class_Variant>` a, :ref:`Variant<class_Variant>` b **)**
 
-Compares two values by checking their actual contents, recursing into any `Array` or `Dictionary` up to its deepest level.
+Compares two values by checking their actual contents, recursing into any :ref:`Array<class_Array>` or :ref:`Dictionary<class_Dictionary>` up to its deepest level.
 
 This compares to ``==`` in a number of ways:
 

+ 25 - 13
classes/[email protected]

@@ -1915,10 +1915,14 @@ Since :ref:`OK<class_@GlobalScope_constant_OK>` has value 0, and all other failu
 
 .. _class_@GlobalScope_constant_PROPERTY_HINT_LAYERS_2D_PHYSICS:
 
+.. _class_@GlobalScope_constant_PROPERTY_HINT_LAYERS_2D_NAVIGATION:
+
 .. _class_@GlobalScope_constant_PROPERTY_HINT_LAYERS_3D_RENDER:
 
 .. _class_@GlobalScope_constant_PROPERTY_HINT_LAYERS_3D_PHYSICS:
 
+.. _class_@GlobalScope_constant_PROPERTY_HINT_LAYERS_3D_NAVIGATION:
+
 .. _class_@GlobalScope_constant_PROPERTY_HINT_FILE:
 
 .. _class_@GlobalScope_constant_PROPERTY_HINT_DIR:
@@ -1951,7 +1955,7 @@ enum **PropertyHint**:
 
 The hint string is a comma separated list of names such as ``"Hello,Something,Else"``. For integer and float properties, the first name in the list has value 0, the next 1, and so on. Explicit values can also be specified by appending ``:integer`` to the name, e.g. ``"Zero,One,Three:3,Four,Six:6"``.
 
-- **PROPERTY_HINT_ENUM_SUGGESTION** = **37** --- Hints that a string property can be an enumerated value to pick in a list specified via a hint string such as ``"Hello,Something,Else"``.
+- **PROPERTY_HINT_ENUM_SUGGESTION** = **39** --- Hints that a string property can be an enumerated value to pick in a list specified via a hint string such as ``"Hello,Something,Else"``.
 
 Unlike :ref:`PROPERTY_HINT_ENUM<class_@GlobalScope_constant_PROPERTY_HINT_ENUM>` a property with this hint still accepts arbitrary values and can be empty. The list of values serves to suggest possible values.
 
@@ -1967,29 +1971,33 @@ Unlike :ref:`PROPERTY_HINT_ENUM<class_@GlobalScope_constant_PROPERTY_HINT_ENUM>`
 
 - **PROPERTY_HINT_LAYERS_2D_PHYSICS** = **10** --- Hints that an integer property is a bitmask using the optionally named 2D physics layers.
 
-- **PROPERTY_HINT_LAYERS_3D_RENDER** = **11** --- Hints that an integer property is a bitmask using the optionally named 3D render layers.
+- **PROPERTY_HINT_LAYERS_2D_NAVIGATION** = **11** --- Hints that an integer property is a bitmask using the optionally named 2D navigation layers.
+
+- **PROPERTY_HINT_LAYERS_3D_RENDER** = **12** --- Hints that an integer property is a bitmask using the optionally named 3D render layers.
 
-- **PROPERTY_HINT_LAYERS_3D_PHYSICS** = **12** --- Hints that an integer property is a bitmask using the optionally named 3D physics layers.
+- **PROPERTY_HINT_LAYERS_3D_PHYSICS** = **13** --- Hints that an integer property is a bitmask using the optionally named 3D physics layers.
 
-- **PROPERTY_HINT_FILE** = **13** --- Hints that a string property is a path to a file. Editing it will show a file dialog for picking the path. The hint string can be a set of filters with wildcards like ``"*.png,*.jpg"``.
+- **PROPERTY_HINT_LAYERS_3D_NAVIGATION** = **14** --- Hints that an integer property is a bitmask using the optionally named 3D navigation layers.
 
-- **PROPERTY_HINT_DIR** = **14** --- Hints that a string property is a path to a directory. Editing it will show a file dialog for picking the path.
+- **PROPERTY_HINT_FILE** = **15** --- Hints that a string property is a path to a file. Editing it will show a file dialog for picking the path. The hint string can be a set of filters with wildcards like ``"*.png,*.jpg"``.
 
-- **PROPERTY_HINT_GLOBAL_FILE** = **15** --- Hints that a string property is an absolute path to a file outside the project folder. Editing it will show a file dialog for picking the path. The hint string can be a set of filters with wildcards like ``"*.png,*.jpg"``.
+- **PROPERTY_HINT_DIR** = **16** --- Hints that a string property is a path to a directory. Editing it will show a file dialog for picking the path.
 
-- **PROPERTY_HINT_GLOBAL_DIR** = **16** --- Hints that a string property is an absolute path to a directory outside the project folder. Editing it will show a file dialog for picking the path.
+- **PROPERTY_HINT_GLOBAL_FILE** = **17** --- Hints that a string property is an absolute path to a file outside the project folder. Editing it will show a file dialog for picking the path. The hint string can be a set of filters with wildcards like ``"*.png,*.jpg"``.
 
-- **PROPERTY_HINT_RESOURCE_TYPE** = **17** --- Hints that a property is an instance of a :ref:`Resource<class_Resource>`-derived type, optionally specified via the hint string (e.g. ``"Texture"``). Editing it will show a popup menu of valid resource types to instantiate.
+- **PROPERTY_HINT_GLOBAL_DIR** = **18** --- Hints that a string property is an absolute path to a directory outside the project folder. Editing it will show a file dialog for picking the path.
 
-- **PROPERTY_HINT_MULTILINE_TEXT** = **18** --- Hints that a string property is text with line breaks. Editing it will show a text input field where line breaks can be typed.
+- **PROPERTY_HINT_RESOURCE_TYPE** = **19** --- Hints that a property is an instance of a :ref:`Resource<class_Resource>`-derived type, optionally specified via the hint string (e.g. ``"Texture"``). Editing it will show a popup menu of valid resource types to instantiate.
 
-- **PROPERTY_HINT_PLACEHOLDER_TEXT** = **19** --- Hints that a string property should have a placeholder text visible on its input field, whenever the property is empty. The hint string is the placeholder text to use.
+- **PROPERTY_HINT_MULTILINE_TEXT** = **20** --- Hints that a string property is text with line breaks. Editing it will show a text input field where line breaks can be typed.
 
-- **PROPERTY_HINT_COLOR_NO_ALPHA** = **20** --- Hints that a color property should be edited without changing its alpha component, i.e. only R, G and B channels are edited.
+- **PROPERTY_HINT_PLACEHOLDER_TEXT** = **21** --- Hints that a string property should have a placeholder text visible on its input field, whenever the property is empty. The hint string is the placeholder text to use.
 
-- **PROPERTY_HINT_IMAGE_COMPRESS_LOSSY** = **21** --- Hints that an image is compressed using lossy compression.
+- **PROPERTY_HINT_COLOR_NO_ALPHA** = **22** --- Hints that a color property should be edited without changing its alpha component, i.e. only R, G and B channels are edited.
 
-- **PROPERTY_HINT_IMAGE_COMPRESS_LOSSLESS** = **22** --- Hints that an image is compressed using lossless compression.
+- **PROPERTY_HINT_IMAGE_COMPRESS_LOSSY** = **23** --- Hints that an image is compressed using lossy compression.
+
+- **PROPERTY_HINT_IMAGE_COMPRESS_LOSSLESS** = **24** --- Hints that an image is compressed using lossless compression.
 
 ----
 
@@ -2075,6 +2083,8 @@ enum **PropertyUsageFlags**:
 
 .. _class_@GlobalScope_constant_METHOD_FLAG_FROM_SCRIPT:
 
+.. _class_@GlobalScope_constant_METHOD_FLAG_VARARG:
+
 .. _class_@GlobalScope_constant_METHOD_FLAGS_DEFAULT:
 
 enum **MethodFlags**:
@@ -2093,6 +2103,8 @@ enum **MethodFlags**:
 
 - **METHOD_FLAG_FROM_SCRIPT** = **64** --- Deprecated method flag, unused.
 
+- **METHOD_FLAG_VARARG** = **128**
+
 - **METHOD_FLAGS_DEFAULT** = **1** --- Default method flags.
 
 ----

+ 55 - 55
classes/class_astar2d.rst

@@ -21,57 +21,57 @@ This is a wrapper for the :ref:`AStar<class_AStar>` class which uses 2D vectors
 Methods
 -------
 
-+-------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`float<class_float>`                       | :ref:`_compute_cost<class_AStar2D_method__compute_cost>` **(** :ref:`int<class_int>` from_id, :ref:`int<class_int>` to_id **)** |virtual|                                      |
-+-------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`float<class_float>`                       | :ref:`_estimate_cost<class_AStar2D_method__estimate_cost>` **(** :ref:`int<class_int>` from_id, :ref:`int<class_int>` to_id **)** |virtual|                                    |
-+-------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| void                                            | :ref:`add_point<class_AStar2D_method_add_point>` **(** :ref:`int<class_int>` id, :ref:`Vector2<class_Vector2>` position, :ref:`float<class_float>` weight_scale=1.0 **)**      |
-+-------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`bool<class_bool>`                         | :ref:`are_points_connected<class_AStar2D_method_are_points_connected>` **(** :ref:`int<class_int>` id, :ref:`int<class_int>` to_id **)** |const|                               |
-+-------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| void                                            | :ref:`clear<class_AStar2D_method_clear>` **(** **)**                                                                                                                           |
-+-------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| void                                            | :ref:`connect_points<class_AStar2D_method_connect_points>` **(** :ref:`int<class_int>` id, :ref:`int<class_int>` to_id, :ref:`bool<class_bool>` bidirectional=true **)**       |
-+-------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| void                                            | :ref:`disconnect_points<class_AStar2D_method_disconnect_points>` **(** :ref:`int<class_int>` id, :ref:`int<class_int>` to_id **)**                                             |
-+-------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`int<class_int>`                           | :ref:`get_available_point_id<class_AStar2D_method_get_available_point_id>` **(** **)** |const|                                                                                 |
-+-------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`int<class_int>`                           | :ref:`get_closest_point<class_AStar2D_method_get_closest_point>` **(** :ref:`Vector2<class_Vector2>` to_position, :ref:`bool<class_bool>` include_disabled=false **)** |const| |
-+-------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`Vector2<class_Vector2>`                   | :ref:`get_closest_position_in_segment<class_AStar2D_method_get_closest_position_in_segment>` **(** :ref:`Vector2<class_Vector2>` to_position **)** |const|                     |
-+-------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`PoolIntArray<class_PoolIntArray>`         | :ref:`get_id_path<class_AStar2D_method_get_id_path>` **(** :ref:`int<class_int>` from_id, :ref:`int<class_int>` to_id **)**                                                    |
-+-------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`int<class_int>`                           | :ref:`get_point_capacity<class_AStar2D_method_get_point_capacity>` **(** **)** |const|                                                                                         |
-+-------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`PoolIntArray<class_PoolIntArray>`         | :ref:`get_point_connections<class_AStar2D_method_get_point_connections>` **(** :ref:`int<class_int>` id **)**                                                                  |
-+-------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`int<class_int>`                           | :ref:`get_point_count<class_AStar2D_method_get_point_count>` **(** **)** |const|                                                                                               |
-+-------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`PoolVector2Array<class_PoolVector2Array>` | :ref:`get_point_path<class_AStar2D_method_get_point_path>` **(** :ref:`int<class_int>` from_id, :ref:`int<class_int>` to_id **)**                                              |
-+-------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`Vector2<class_Vector2>`                   | :ref:`get_point_position<class_AStar2D_method_get_point_position>` **(** :ref:`int<class_int>` id **)** |const|                                                                |
-+-------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`float<class_float>`                       | :ref:`get_point_weight_scale<class_AStar2D_method_get_point_weight_scale>` **(** :ref:`int<class_int>` id **)** |const|                                                        |
-+-------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`Array<class_Array>`                       | :ref:`get_points<class_AStar2D_method_get_points>` **(** **)**                                                                                                                 |
-+-------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`bool<class_bool>`                         | :ref:`has_point<class_AStar2D_method_has_point>` **(** :ref:`int<class_int>` id **)** |const|                                                                                  |
-+-------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`bool<class_bool>`                         | :ref:`is_point_disabled<class_AStar2D_method_is_point_disabled>` **(** :ref:`int<class_int>` id **)** |const|                                                                  |
-+-------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| void                                            | :ref:`remove_point<class_AStar2D_method_remove_point>` **(** :ref:`int<class_int>` id **)**                                                                                    |
-+-------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| void                                            | :ref:`reserve_space<class_AStar2D_method_reserve_space>` **(** :ref:`int<class_int>` num_nodes **)**                                                                           |
-+-------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| void                                            | :ref:`set_point_disabled<class_AStar2D_method_set_point_disabled>` **(** :ref:`int<class_int>` id, :ref:`bool<class_bool>` disabled=true **)**                                 |
-+-------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| void                                            | :ref:`set_point_position<class_AStar2D_method_set_point_position>` **(** :ref:`int<class_int>` id, :ref:`Vector2<class_Vector2>` position **)**                                |
-+-------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| void                                            | :ref:`set_point_weight_scale<class_AStar2D_method_set_point_weight_scale>` **(** :ref:`int<class_int>` id, :ref:`float<class_float>` weight_scale **)**                        |
-+-------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
++-------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`float<class_float>`                       | :ref:`_compute_cost<class_AStar2D_method__compute_cost>` **(** :ref:`int<class_int>` from_id, :ref:`int<class_int>` to_id **)** |virtual|                                                    |
++-------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`float<class_float>`                       | :ref:`_estimate_cost<class_AStar2D_method__estimate_cost>` **(** :ref:`int<class_int>` from_id, :ref:`int<class_int>` to_id **)** |virtual|                                                  |
++-------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| void                                            | :ref:`add_point<class_AStar2D_method_add_point>` **(** :ref:`int<class_int>` id, :ref:`Vector2<class_Vector2>` position, :ref:`float<class_float>` weight_scale=1.0 **)**                    |
++-------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`bool<class_bool>`                         | :ref:`are_points_connected<class_AStar2D_method_are_points_connected>` **(** :ref:`int<class_int>` id, :ref:`int<class_int>` to_id, :ref:`bool<class_bool>` bidirectional=true **)** |const| |
++-------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| void                                            | :ref:`clear<class_AStar2D_method_clear>` **(** **)**                                                                                                                                         |
++-------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| void                                            | :ref:`connect_points<class_AStar2D_method_connect_points>` **(** :ref:`int<class_int>` id, :ref:`int<class_int>` to_id, :ref:`bool<class_bool>` bidirectional=true **)**                     |
++-------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| void                                            | :ref:`disconnect_points<class_AStar2D_method_disconnect_points>` **(** :ref:`int<class_int>` id, :ref:`int<class_int>` to_id, :ref:`bool<class_bool>` bidirectional=true **)**               |
++-------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`int<class_int>`                           | :ref:`get_available_point_id<class_AStar2D_method_get_available_point_id>` **(** **)** |const|                                                                                               |
++-------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`int<class_int>`                           | :ref:`get_closest_point<class_AStar2D_method_get_closest_point>` **(** :ref:`Vector2<class_Vector2>` to_position, :ref:`bool<class_bool>` include_disabled=false **)** |const|               |
++-------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`Vector2<class_Vector2>`                   | :ref:`get_closest_position_in_segment<class_AStar2D_method_get_closest_position_in_segment>` **(** :ref:`Vector2<class_Vector2>` to_position **)** |const|                                   |
++-------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`PoolIntArray<class_PoolIntArray>`         | :ref:`get_id_path<class_AStar2D_method_get_id_path>` **(** :ref:`int<class_int>` from_id, :ref:`int<class_int>` to_id **)**                                                                  |
++-------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`int<class_int>`                           | :ref:`get_point_capacity<class_AStar2D_method_get_point_capacity>` **(** **)** |const|                                                                                                       |
++-------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`PoolIntArray<class_PoolIntArray>`         | :ref:`get_point_connections<class_AStar2D_method_get_point_connections>` **(** :ref:`int<class_int>` id **)**                                                                                |
++-------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`int<class_int>`                           | :ref:`get_point_count<class_AStar2D_method_get_point_count>` **(** **)** |const|                                                                                                             |
++-------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`PoolVector2Array<class_PoolVector2Array>` | :ref:`get_point_path<class_AStar2D_method_get_point_path>` **(** :ref:`int<class_int>` from_id, :ref:`int<class_int>` to_id **)**                                                            |
++-------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`Vector2<class_Vector2>`                   | :ref:`get_point_position<class_AStar2D_method_get_point_position>` **(** :ref:`int<class_int>` id **)** |const|                                                                              |
++-------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`float<class_float>`                       | :ref:`get_point_weight_scale<class_AStar2D_method_get_point_weight_scale>` **(** :ref:`int<class_int>` id **)** |const|                                                                      |
++-------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`Array<class_Array>`                       | :ref:`get_points<class_AStar2D_method_get_points>` **(** **)**                                                                                                                               |
++-------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`bool<class_bool>`                         | :ref:`has_point<class_AStar2D_method_has_point>` **(** :ref:`int<class_int>` id **)** |const|                                                                                                |
++-------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`bool<class_bool>`                         | :ref:`is_point_disabled<class_AStar2D_method_is_point_disabled>` **(** :ref:`int<class_int>` id **)** |const|                                                                                |
++-------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| void                                            | :ref:`remove_point<class_AStar2D_method_remove_point>` **(** :ref:`int<class_int>` id **)**                                                                                                  |
++-------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| void                                            | :ref:`reserve_space<class_AStar2D_method_reserve_space>` **(** :ref:`int<class_int>` num_nodes **)**                                                                                         |
++-------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| void                                            | :ref:`set_point_disabled<class_AStar2D_method_set_point_disabled>` **(** :ref:`int<class_int>` id, :ref:`bool<class_bool>` disabled=true **)**                                               |
++-------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| void                                            | :ref:`set_point_position<class_AStar2D_method_set_point_position>` **(** :ref:`int<class_int>` id, :ref:`Vector2<class_Vector2>` position **)**                                              |
++-------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| void                                            | :ref:`set_point_weight_scale<class_AStar2D_method_set_point_weight_scale>` **(** :ref:`int<class_int>` id, :ref:`float<class_float>` weight_scale **)**                                      |
++-------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
 
 Method Descriptions
 -------------------
@@ -115,9 +115,9 @@ If there already exists a point for the given ``id``, its position and weight sc
 
 .. _class_AStar2D_method_are_points_connected:
 
-- :ref:`bool<class_bool>` **are_points_connected** **(** :ref:`int<class_int>` id, :ref:`int<class_int>` to_id **)** |const|
+- :ref:`bool<class_bool>` **are_points_connected** **(** :ref:`int<class_int>` id, :ref:`int<class_int>` to_id, :ref:`bool<class_bool>` bidirectional=true **)** |const|
 
-Returns whether there is a connection/segment between the given points.
+Returns whether there is a connection/segment between the given points. If ``bidirectional`` is ``false``, returns whether movement from ``id`` to ``to_id`` is possible through this segment.
 
 ----
 
@@ -146,9 +146,9 @@ Creates a segment between the given points. If ``bidirectional`` is ``false``, o
 
 .. _class_AStar2D_method_disconnect_points:
 
-- void **disconnect_points** **(** :ref:`int<class_int>` id, :ref:`int<class_int>` to_id **)**
+- void **disconnect_points** **(** :ref:`int<class_int>` id, :ref:`int<class_int>` to_id, :ref:`bool<class_bool>` bidirectional=true **)**
 
-Deletes the segment between the given points.
+Deletes the segment between the given points. If ``bidirectional`` is ``false``, only movement from ``id`` to ``to_id`` is prevented, and a unidirectional segment possibly remains.
 
 ----
 

+ 1 - 1
classes/class_audioeffectcapture.rst

@@ -18,7 +18,7 @@ Description
 
 AudioEffectCapture is an AudioEffect which copies all audio frames from the attached audio effect bus into its internal ring buffer.
 
-Application code should consume these audio frames from this ring buffer using :ref:`get_buffer<class_AudioEffectCapture_method_get_buffer>` and process it as needed, for example to capture data from a microphone, implement application defined effects, or to transmit audio over the network.
+Application code should consume these audio frames from this ring buffer using :ref:`get_buffer<class_AudioEffectCapture_method_get_buffer>` and process it as needed, for example to capture data from a microphone, implement application defined effects, or to transmit audio over the network. When capturing audio data from a microphone, the format of the samples will be stereo 32-bit floating point PCM.
 
 Properties
 ----------

+ 2 - 2
classes/class_curvetexture.rst

@@ -40,7 +40,7 @@ Property Descriptions
 | *Getter* | get_curve()      |
 +----------+------------------+
 
-The ``curve`` rendered onto the texture.
+The :ref:`Curve<class_Curve>` that is rendered onto the texture.
 
 ----
 
@@ -56,7 +56,7 @@ The ``curve`` rendered onto the texture.
 | *Getter*  | get_width()      |
 +-----------+------------------+
 
-The width of the texture.
+The width of the texture (in pixels). Higher values make it possible to represent high-frequency data better (such as sudden direction changes), at the cost of increased generation time and memory usage.
 
 .. |virtual| replace:: :abbr:`virtual (This method should typically be overridden by the user to have any effect.)`
 .. |const| replace:: :abbr:`const (This method has no side effects. It doesn't modify any of the instance's member variables.)`

+ 33 - 23
classes/class_dictionary.rst

@@ -124,29 +124,31 @@ Tutorials
 Methods
 -------
 
-+-------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------+
-| void                                | :ref:`clear<class_Dictionary_method_clear>` **(** **)**                                                                           |
-+-------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`Dictionary<class_Dictionary>` | :ref:`duplicate<class_Dictionary_method_duplicate>` **(** :ref:`bool<class_bool>` deep=false **)**                                |
-+-------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`bool<class_bool>`             | :ref:`empty<class_Dictionary_method_empty>` **(** **)**                                                                           |
-+-------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`bool<class_bool>`             | :ref:`erase<class_Dictionary_method_erase>` **(** :ref:`Variant<class_Variant>` key **)**                                         |
-+-------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`Variant<class_Variant>`       | :ref:`get<class_Dictionary_method_get>` **(** :ref:`Variant<class_Variant>` key, :ref:`Variant<class_Variant>` default=null **)** |
-+-------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`bool<class_bool>`             | :ref:`has<class_Dictionary_method_has>` **(** :ref:`Variant<class_Variant>` key **)**                                             |
-+-------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`bool<class_bool>`             | :ref:`has_all<class_Dictionary_method_has_all>` **(** :ref:`Array<class_Array>` keys **)**                                        |
-+-------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`int<class_int>`               | :ref:`hash<class_Dictionary_method_hash>` **(** **)**                                                                             |
-+-------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`Array<class_Array>`           | :ref:`keys<class_Dictionary_method_keys>` **(** **)**                                                                             |
-+-------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`int<class_int>`               | :ref:`size<class_Dictionary_method_size>` **(** **)**                                                                             |
-+-------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`Array<class_Array>`           | :ref:`values<class_Dictionary_method_values>` **(** **)**                                                                         |
-+-------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------+
++-------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------+
+| void                                | :ref:`clear<class_Dictionary_method_clear>` **(** **)**                                                                                         |
++-------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`Dictionary<class_Dictionary>` | :ref:`duplicate<class_Dictionary_method_duplicate>` **(** :ref:`bool<class_bool>` deep=false **)**                                              |
++-------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`bool<class_bool>`             | :ref:`empty<class_Dictionary_method_empty>` **(** **)**                                                                                         |
++-------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`bool<class_bool>`             | :ref:`erase<class_Dictionary_method_erase>` **(** :ref:`Variant<class_Variant>` key **)**                                                       |
++-------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`Variant<class_Variant>`       | :ref:`get<class_Dictionary_method_get>` **(** :ref:`Variant<class_Variant>` key, :ref:`Variant<class_Variant>` default=null **)**               |
++-------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`bool<class_bool>`             | :ref:`has<class_Dictionary_method_has>` **(** :ref:`Variant<class_Variant>` key **)**                                                           |
++-------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`bool<class_bool>`             | :ref:`has_all<class_Dictionary_method_has_all>` **(** :ref:`Array<class_Array>` keys **)**                                                      |
++-------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`int<class_int>`               | :ref:`hash<class_Dictionary_method_hash>` **(** **)**                                                                                           |
++-------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`Array<class_Array>`           | :ref:`keys<class_Dictionary_method_keys>` **(** **)**                                                                                           |
++-------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------+
+| void                                | :ref:`merge<class_Dictionary_method_merge>` **(** :ref:`Dictionary<class_Dictionary>` dictionary, :ref:`bool<class_bool>` overwrite=false **)** |
++-------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`int<class_int>`               | :ref:`size<class_Dictionary_method_size>` **(** **)**                                                                                           |
++-------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`Array<class_Array>`           | :ref:`values<class_Dictionary_method_values>` **(** **)**                                                                                       |
++-------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------+
 
 Method Descriptions
 -------------------
@@ -246,6 +248,14 @@ Returns the list of keys in the ``Dictionary``.
 
 ----
 
+.. _class_Dictionary_method_merge:
+
+- void **merge** **(** :ref:`Dictionary<class_Dictionary>` dictionary, :ref:`bool<class_bool>` overwrite=false **)**
+
+Adds elements from ``dictionary`` to this ``Dictionary``. By default, duplicate keys will not be copied over, unless ``overwrite`` is ``true``.
+
+----
+
 .. _class_Dictionary_method_size:
 
 - :ref:`int<class_int>` **size** **(** **)**

+ 38 - 4
classes/class_editorplugin.rst

@@ -628,7 +628,19 @@ Gets the Editor's dialog used for making scripts.
 
 - :ref:`Dictionary<class_Dictionary>` **get_state** **(** **)** |virtual|
 
-Gets the state of your plugin editor. This is used when saving the scene (so state is kept when opening it again) and for switching tabs (so state can be restored when the tab returns).
+Override this method to provide a state data you want to be saved, like view position, grid settings, folding, etc. This is used when saving the scene (so state is kept when opening it again) and for switching tabs (so state can be restored when the tab returns). This data is automatically saved for each scene in an ``editstate`` file in the editor metadata folder. If you want to store global (scene-independent) editor data for your plugin, you can use :ref:`get_window_layout<class_EditorPlugin_method_get_window_layout>` instead.
+
+Use :ref:`set_state<class_EditorPlugin_method_set_state>` to restore your saved state.
+
+\ **Note:** This method should not be used to save important settings that should persist with the project.
+
+\ **Note:** You must implement :ref:`get_plugin_name<class_EditorPlugin_method_get_plugin_name>` for the state to be stored and restored correctly.
+
+::
+
+    func get_state():
+        var state = {"zoom": zoom, "preferred_color": my_color}
+        return state
 
 ----
 
@@ -644,7 +656,15 @@ Gets the undo/redo object. Most actions in the editor can be undoable, so use th
 
 - void **get_window_layout** **(** :ref:`ConfigFile<class_ConfigFile>` layout **)** |virtual|
 
-Gets the GUI layout of the plugin. This is used to save the project's editor layout when :ref:`queue_save_layout<class_EditorPlugin_method_queue_save_layout>` is called or the editor layout was changed(For example changing the position of a dock).
+Override this method to provide the GUI layout of the plugin or any other data you want to be stored. This is used to save the project's editor layout when :ref:`queue_save_layout<class_EditorPlugin_method_queue_save_layout>` is called or the editor layout was changed (for example changing the position of a dock). The data is stored in the ``editor_layout.cfg`` file in the editor metadata directory.
+
+Use :ref:`set_window_layout<class_EditorPlugin_method_set_window_layout>` to restore your saved layout.
+
+::
+
+    func get_window_layout(configuration):
+        configuration.set_value("MyPlugin", "window_position", $Window.position)
+        configuration.set_value("MyPlugin", "icon_color", $Icon.modulate)
 
 ----
 
@@ -814,7 +834,15 @@ Use this method if you always want to receive inputs from 3D view screen inside
 
 - void **set_state** **(** :ref:`Dictionary<class_Dictionary>` state **)** |virtual|
 
-Restore the state saved by :ref:`get_state<class_EditorPlugin_method_get_state>`.
+Restore the state saved by :ref:`get_state<class_EditorPlugin_method_get_state>`. This method is called when the current scene tab is changed in the editor.
+
+\ **Note:** Your plugin must implement :ref:`get_plugin_name<class_EditorPlugin_method_get_plugin_name>`, otherwise it will not be recognized and this method will not be called.
+
+::
+
+    func set_state(data):
+        zoom = data.get("zoom", 1.0)
+        preferred_color = data.get("my_color", Color.white)
 
 ----
 
@@ -822,7 +850,13 @@ Restore the state saved by :ref:`get_state<class_EditorPlugin_method_get_state>`
 
 - void **set_window_layout** **(** :ref:`ConfigFile<class_ConfigFile>` layout **)** |virtual|
 
-Restore the plugin GUI layout saved by :ref:`get_window_layout<class_EditorPlugin_method_get_window_layout>`.
+Restore the plugin GUI layout and data saved by :ref:`get_window_layout<class_EditorPlugin_method_get_window_layout>`. This method is called for every plugin on editor startup. Use the provided ``configuration`` file to read your saved data.
+
+::
+
+    func set_window_layout(configuration):
+        $Window.position = configuration.get_value("MyPlugin", "window_position", Vector2())
+        $Icon.modulate = configuration.get_value("MyPlugin", "icon_color", Color.white)
 
 ----
 

+ 1 - 1
classes/class_gradienttexture.rst

@@ -16,7 +16,7 @@ Gradient-filled texture.
 Description
 -----------
 
-GradientTexture uses a :ref:`Gradient<class_Gradient>` to fill the texture data. The gradient will be filled from left to right using colors obtained from the gradient. This means the texture does not necessarily represent an exact copy of the gradient, but instead an interpolation of samples obtained from the gradient at fixed steps (see :ref:`width<class_GradientTexture_property_width>`).
+GradientTexture uses a :ref:`Gradient<class_Gradient>` to fill the texture data. The gradient will be filled from left to right using colors obtained from the gradient. This means the texture does not necessarily represent an exact copy of the gradient, but instead an interpolation of samples obtained from the gradient at fixed steps (see :ref:`width<class_GradientTexture_property_width>`). See also :ref:`GradientTexture2D<class_GradientTexture2D>` and :ref:`CurveTexture<class_CurveTexture>`.
 
 Properties
 ----------

+ 1 - 1
classes/class_gradienttexture2d.rst

@@ -16,7 +16,7 @@ Gradient-filled 2D texture.
 Description
 -----------
 
-The texture uses a :ref:`Gradient<class_Gradient>` to fill the texture data in 2D space. The gradient is filled according to the specified :ref:`fill<class_GradientTexture2D_property_fill>` and :ref:`repeat<class_GradientTexture2D_property_repeat>` types using colors obtained from the gradient. The texture does not necessarily represent an exact copy of the gradient, but instead an interpolation of samples obtained from the gradient at fixed steps (see :ref:`width<class_GradientTexture2D_property_width>` and :ref:`height<class_GradientTexture2D_property_height>`).
+The texture uses a :ref:`Gradient<class_Gradient>` to fill the texture data in 2D space. The gradient is filled according to the specified :ref:`fill<class_GradientTexture2D_property_fill>` and :ref:`repeat<class_GradientTexture2D_property_repeat>` types using colors obtained from the gradient. The texture does not necessarily represent an exact copy of the gradient, but instead an interpolation of samples obtained from the gradient at fixed steps (see :ref:`width<class_GradientTexture2D_property_width>` and :ref:`height<class_GradientTexture2D_property_height>`). See also :ref:`GradientTexture<class_GradientTexture>` and :ref:`CurveTexture<class_CurveTexture>`.
 
 Properties
 ----------

+ 36 - 0
classes/class_gridmap.rst

@@ -38,6 +38,8 @@ Tutorials
 Properties
 ----------
 
++-----------------------------------------------+----------------------------------------------------------------------+------------------------+
+| :ref:`bool<class_bool>`                       | :ref:`bake_navigation<class_GridMap_property_bake_navigation>`       | ``false``              |
 +-----------------------------------------------+----------------------------------------------------------------------+------------------------+
 | :ref:`bool<class_bool>`                       | :ref:`cell_center_x<class_GridMap_property_cell_center_x>`           | ``true``               |
 +-----------------------------------------------+----------------------------------------------------------------------+------------------------+
@@ -57,6 +59,8 @@ Properties
 +-----------------------------------------------+----------------------------------------------------------------------+------------------------+
 | :ref:`MeshLibrary<class_MeshLibrary>`         | :ref:`mesh_library<class_GridMap_property_mesh_library>`             |                        |
 +-----------------------------------------------+----------------------------------------------------------------------+------------------------+
+| :ref:`int<class_int>`                         | :ref:`navigation_layers<class_GridMap_property_navigation_layers>`   | ``1``                  |
++-----------------------------------------------+----------------------------------------------------------------------+------------------------+
 | :ref:`PhysicsMaterial<class_PhysicsMaterial>` | :ref:`physics_material<class_GridMap_property_physics_material>`     |                        |
 +-----------------------------------------------+----------------------------------------------------------------------+------------------------+
 | :ref:`bool<class_bool>`                       | :ref:`use_in_baked_light<class_GridMap_property_use_in_baked_light>` | ``false``              |
@@ -124,6 +128,22 @@ Constants
 Property Descriptions
 ---------------------
 
+.. _class_GridMap_property_bake_navigation:
+
+- :ref:`bool<class_bool>` **bake_navigation**
+
++-----------+----------------------------+
+| *Default* | ``false``                  |
++-----------+----------------------------+
+| *Setter*  | set_bake_navigation(value) |
++-----------+----------------------------+
+| *Getter*  | is_baking_navigation()     |
++-----------+----------------------------+
+
+If ``true``, this GridMap uses cell navmesh resources to create navigation regions.
+
+----
+
 .. _class_GridMap_property_cell_center_x:
 
 - :ref:`bool<class_bool>` **cell_center_x**
@@ -272,6 +292,22 @@ The assigned :ref:`MeshLibrary<class_MeshLibrary>`.
 
 ----
 
+.. _class_GridMap_property_navigation_layers:
+
+- :ref:`int<class_int>` **navigation_layers**
+
++-----------+------------------------------+
+| *Default* | ``1``                        |
++-----------+------------------------------+
+| *Setter*  | set_navigation_layers(value) |
++-----------+------------------------------+
+| *Getter*  | get_navigation_layers()      |
++-----------+------------------------------+
+
+The navigation layers the GridMap generates its navigation regions in.
+
+----
+
 .. _class_GridMap_property_physics_material:
 
 - :ref:`PhysicsMaterial<class_PhysicsMaterial>` **physics_material**

+ 41 - 33
classes/class_input.rst

@@ -27,6 +27,15 @@ Tutorials
 
 - `3D Voxel Demo <https://godotengine.org/asset-library/asset/676>`__
 
+Properties
+----------
+
++----------------------------------------+--------------------------------------------------------------------------+
+| :ref:`MouseMode<enum_Input_MouseMode>` | :ref:`mouse_mode<class_Input_property_mouse_mode>`                       |
++----------------------------------------+--------------------------------------------------------------------------+
+| :ref:`bool<class_bool>`                | :ref:`use_accumulated_input<class_Input_property_use_accumulated_input>` |
++----------------------------------------+--------------------------------------------------------------------------+
+
 Methods
 -------
 
@@ -79,8 +88,6 @@ Methods
 +--------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
 | :ref:`int<class_int>`                      | :ref:`get_mouse_button_mask<class_Input_method_get_mouse_button_mask>` **(** **)** |const|                                                                                                                                                                                   |
 +--------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`MouseMode<enum_Input_MouseMode>`     | :ref:`get_mouse_mode<class_Input_method_get_mouse_mode>` **(** **)** |const|                                                                                                                                                                                                 |
-+--------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
 | :ref:`Vector2<class_Vector2>`              | :ref:`get_vector<class_Input_method_get_vector>` **(** :ref:`String<class_String>` negative_x, :ref:`String<class_String>` positive_x, :ref:`String<class_String>` negative_y, :ref:`String<class_String>` positive_y, :ref:`float<class_float>` deadzone=-1.0 **)** |const| |
 +--------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
 | :ref:`bool<class_bool>`                    | :ref:`is_action_just_pressed<class_Input_method_is_action_just_pressed>` **(** :ref:`String<class_String>` action, :ref:`bool<class_bool>` exact=false **)** |const|                                                                                                         |
@@ -117,10 +124,6 @@ Methods
 +--------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
 | void                                       | :ref:`set_magnetometer<class_Input_method_set_magnetometer>` **(** :ref:`Vector3<class_Vector3>` value **)**                                                                                                                                                                 |
 +--------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| void                                       | :ref:`set_mouse_mode<class_Input_method_set_mouse_mode>` **(** :ref:`MouseMode<enum_Input_MouseMode>` mode **)**                                                                                                                                                             |
-+--------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| void                                       | :ref:`set_use_accumulated_input<class_Input_method_set_use_accumulated_input>` **(** :ref:`bool<class_bool>` enable **)**                                                                                                                                                    |
-+--------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
 | void                                       | :ref:`start_joy_vibration<class_Input_method_start_joy_vibration>` **(** :ref:`int<class_int>` device, :ref:`float<class_float>` weak_magnitude, :ref:`float<class_float>` strong_magnitude, :ref:`float<class_float>` duration=0 **)**                                      |
 +--------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
 | void                                       | :ref:`stop_joy_vibration<class_Input_method_stop_joy_vibration>` **(** :ref:`int<class_int>` device **)**                                                                                                                                                                    |
@@ -238,6 +241,37 @@ enum **CursorShape**:
 
 - **CURSOR_HELP** = **16** --- Help cursor. Usually a question mark.
 
+Property Descriptions
+---------------------
+
+.. _class_Input_property_mouse_mode:
+
+- :ref:`MouseMode<enum_Input_MouseMode>` **mouse_mode**
+
++----------+-----------------------+
+| *Setter* | set_mouse_mode(value) |
++----------+-----------------------+
+| *Getter* | get_mouse_mode()      |
++----------+-----------------------+
+
+Controls the mouse mode. See :ref:`MouseMode<enum_Input_MouseMode>` for more information.
+
+----
+
+.. _class_Input_property_use_accumulated_input:
+
+- :ref:`bool<class_bool>` **use_accumulated_input**
+
++----------+----------------------------------+
+| *Setter* | set_use_accumulated_input(value) |
++----------+----------------------------------+
+| *Getter* | is_using_accumulated_input()     |
++----------+----------------------------------+
+
+If ``true``, similar input events sent by the operating system are accumulated. When input accumulation is enabled, all input events generated during a frame will be merged and emitted when the frame is done rendering. Therefore, this limits the number of input method calls per second to the rendering FPS.
+
+Input accumulation can be disabled to get slightly more precise/reactive input at the cost of increased CPU usage. In applications where drawing freehand lines is required, input accumulation should generally be disabled while the user is drawing the line to get results that closely follow the actual input.
+
 Method Descriptions
 -------------------
 
@@ -273,7 +307,7 @@ Adds a new mapping entry (in SDL2 format) to the mapping database. Optionally up
 
 - void **flush_buffered_events** **(** **)**
 
-Sends all input events which are in the current buffer to the game loop. These events may have been buffered as a result of accumulated input (:ref:`set_use_accumulated_input<class_Input_method_set_use_accumulated_input>`) or agile input flushing (:ref:`ProjectSettings.input_devices/buffering/agile_event_flushing<class_ProjectSettings_property_input_devices/buffering/agile_event_flushing>`).
+Sends all input events which are in the current buffer to the game loop. These events may have been buffered as a result of accumulated input (:ref:`use_accumulated_input<class_Input_property_use_accumulated_input>`) or agile input flushing (:ref:`ProjectSettings.input_devices/buffering/agile_event_flushing<class_ProjectSettings_property_input_devices/buffering/agile_event_flushing>`).
 
 The engine will already do this itself at key execution points (at least once per frame). However, this can be useful in advanced cases where you want precise control over the timing of event handling.
 
@@ -455,14 +489,6 @@ Returns mouse buttons as a bitmask. If multiple mouse buttons are pressed at the
 
 ----
 
-.. _class_Input_method_get_mouse_mode:
-
-- :ref:`MouseMode<enum_Input_MouseMode>` **get_mouse_mode** **(** **)** |const|
-
-Returns the mouse mode. See the constants for more information.
-
-----
-
 .. _class_Input_method_get_vector:
 
 - :ref:`Vector2<class_Vector2>` **get_vector** **(** :ref:`String<class_String>` negative_x, :ref:`String<class_String>` positive_x, :ref:`String<class_String>` negative_y, :ref:`String<class_String>` positive_y, :ref:`float<class_float>` deadzone=-1.0 **)** |const|
@@ -662,24 +688,6 @@ Sets the value of the magnetic field of the magnetometer sensor. Can be used for
 
 ----
 
-.. _class_Input_method_set_mouse_mode:
-
-- void **set_mouse_mode** **(** :ref:`MouseMode<enum_Input_MouseMode>` mode **)**
-
-Sets the mouse mode. See the constants for more information.
-
-----
-
-.. _class_Input_method_set_use_accumulated_input:
-
-- void **set_use_accumulated_input** **(** :ref:`bool<class_bool>` enable **)**
-
-Enables or disables the accumulation of similar input events sent by the operating system. When input accumulation is enabled, all input events generated during a frame will be merged and emitted when the frame is done rendering. Therefore, this limits the number of input method calls per second to the rendering FPS.
-
-Input accumulation is enabled by default. It can be disabled to get slightly more precise/reactive input at the cost of increased CPU usage. In applications where drawing freehand lines is required, input accumulation should generally be disabled while the user is drawing the line to get results that closely follow the actual input.
-
-----
-
 .. _class_Input_method_start_joy_vibration:
 
 - void **start_joy_vibration** **(** :ref:`int<class_int>` device, :ref:`float<class_float>` weak_magnitude, :ref:`float<class_float>` strong_magnitude, :ref:`float<class_float>` duration=0 **)**

+ 1 - 1
classes/class_inputeventjoypadbutton.rst

@@ -81,7 +81,7 @@ If ``true``, the button's state is pressed. If ``false``, the button's state is
 | *Getter*  | get_pressure()      |
 +-----------+---------------------+
 
-Represents the pressure the user puts on the button with his finger, if the controller supports it. Ranges from ``0`` to ``1``.
+Represents the pressure the user puts on the button with their finger, if the controller supports it. Ranges from ``0`` to ``1``.
 
 .. |virtual| replace:: :abbr:`virtual (This method should typically be overridden by the user to have any effect.)`
 .. |const| replace:: :abbr:`const (This method has no side effects. It doesn't modify any of the instance's member variables.)`

+ 1 - 1
classes/class_inputeventmousemotion.rst

@@ -18,7 +18,7 @@ Description
 
 Contains mouse and pen motion information. Supports relative, absolute positions and speed. See :ref:`Node._input<class_Node_method__input>`.
 
-\ **Note:** By default, this event is only emitted once per frame rendered at most. If you need more precise input reporting, call :ref:`Input.set_use_accumulated_input<class_Input_method_set_use_accumulated_input>` with ``false`` to make events emitted as often as possible. If you use InputEventMouseMotion to draw lines, consider implementing `Bresenham's line algorithm <https://en.wikipedia.org/wiki/Bresenham%27s_line_algorithm>`__ as well to avoid visible gaps in lines if the user is moving the mouse quickly.
+\ **Note:** By default, this event is only emitted once per frame rendered at most. If you need more precise input reporting, set :ref:`Input.use_accumulated_input<class_Input_property_use_accumulated_input>` to ``false`` to make events emitted as often as possible. If you use InputEventMouseMotion to draw lines, consider implementing `Bresenham's line algorithm <https://en.wikipedia.org/wiki/Bresenham%27s_line_algorithm>`__ as well to avoid visible gaps in lines if the user is moving the mouse quickly.
 
 Tutorials
 ---------

+ 1 - 1
classes/class_meshinstance2d.rst

@@ -16,7 +16,7 @@ Node used for displaying a :ref:`Mesh<class_Mesh>` in 2D.
 Description
 -----------
 
-Node used for displaying a :ref:`Mesh<class_Mesh>` in 2D. Can be constructed from an existing :ref:`Sprite<class_Sprite>` via a tool in the editor toolbar. Select "Sprite" then "Convert to Mesh2D", select settings in popup and press "Create Mesh2D".
+Node used for displaying a :ref:`Mesh<class_Mesh>` in 2D. A ``MeshInstance2D`` can be automatically created from an existing :ref:`Sprite<class_Sprite>` via a tool in the editor toolbar. Select the :ref:`Sprite<class_Sprite>` node, then choose **Sprite > Convert to MeshInstance2D** at the top of the 2D editor viewport.
 
 Tutorials
 ---------

+ 34 - 7
classes/class_navigation.rst

@@ -27,11 +27,13 @@ Properties
 ----------
 
 +-------------------------------+---------------------------------------------------------------------------------+------------------------+
-| :ref:`float<class_float>`     | :ref:`cell_height<class_Navigation_property_cell_height>`                       | ``0.2``                |
+| :ref:`float<class_float>`     | :ref:`cell_height<class_Navigation_property_cell_height>`                       | ``0.25``               |
 +-------------------------------+---------------------------------------------------------------------------------+------------------------+
-| :ref:`float<class_float>`     | :ref:`cell_size<class_Navigation_property_cell_size>`                           | ``0.3``                |
+| :ref:`float<class_float>`     | :ref:`cell_size<class_Navigation_property_cell_size>`                           | ``0.25``               |
 +-------------------------------+---------------------------------------------------------------------------------+------------------------+
-| :ref:`float<class_float>`     | :ref:`edge_connection_margin<class_Navigation_property_edge_connection_margin>` | ``5.0``                |
+| :ref:`float<class_float>`     | :ref:`edge_connection_margin<class_Navigation_property_edge_connection_margin>` | ``0.25``               |
++-------------------------------+---------------------------------------------------------------------------------+------------------------+
+| :ref:`int<class_int>`         | :ref:`navigation_layers<class_Navigation_property_navigation_layers>`           | ``1``                  |
 +-------------------------------+---------------------------------------------------------------------------------+------------------------+
 | :ref:`Vector3<class_Vector3>` | :ref:`up_vector<class_Navigation_property_up_vector>`                           | ``Vector3( 0, 1, 0 )`` |
 +-------------------------------+---------------------------------------------------------------------------------+------------------------+
@@ -53,6 +55,15 @@ Methods
 | :ref:`PoolVector3Array<class_PoolVector3Array>` | :ref:`get_simple_path<class_Navigation_method_get_simple_path>` **(** :ref:`Vector3<class_Vector3>` start, :ref:`Vector3<class_Vector3>` end, :ref:`bool<class_bool>` optimize=true **)** |const|                                 |
 +-------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
 
+Signals
+-------
+
+.. _class_Navigation_signal_map_changed:
+
+- **map_changed** **(** :ref:`RID<class_RID>` map **)**
+
+Emitted when a navigation map is updated, when a region moves or is modified.
+
 Property Descriptions
 ---------------------
 
@@ -61,7 +72,7 @@ Property Descriptions
 - :ref:`float<class_float>` **cell_height**
 
 +-----------+------------------------+
-| *Default* | ``0.2``                |
+| *Default* | ``0.25``               |
 +-----------+------------------------+
 | *Setter*  | set_cell_height(value) |
 +-----------+------------------------+
@@ -77,7 +88,7 @@ The cell height to use for fields.
 - :ref:`float<class_float>` **cell_size**
 
 +-----------+----------------------+
-| *Default* | ``0.3``              |
+| *Default* | ``0.25``             |
 +-----------+----------------------+
 | *Setter*  | set_cell_size(value) |
 +-----------+----------------------+
@@ -93,7 +104,7 @@ The XZ plane cell size to use for fields.
 - :ref:`float<class_float>` **edge_connection_margin**
 
 +-----------+-----------------------------------+
-| *Default* | ``5.0``                           |
+| *Default* | ``0.25``                          |
 +-----------+-----------------------------------+
 | *Setter*  | set_edge_connection_margin(value) |
 +-----------+-----------------------------------+
@@ -104,6 +115,22 @@ This value is used to detect the near edges to connect compatible regions.
 
 ----
 
+.. _class_Navigation_property_navigation_layers:
+
+- :ref:`int<class_int>` **navigation_layers**
+
++-----------+------------------------------+
+| *Default* | ``1``                        |
++-----------+------------------------------+
+| *Setter*  | set_navigation_layers(value) |
++-----------+------------------------------+
+| *Getter*  | get_navigation_layers()      |
++-----------+------------------------------+
+
+A bitfield determining all navigation map layers the navigation can use on a :ref:`get_simple_path<class_Navigation_method_get_simple_path>` path query.
+
+----
+
 .. _class_Navigation_property_up_vector:
 
 - :ref:`Vector3<class_Vector3>` **up_vector**
@@ -157,7 +184,7 @@ Returns the navigation point closest to the given line segment. When enabling ``
 
 - :ref:`RID<class_RID>` **get_rid** **(** **)** |const|
 
-Returns the object's :ref:`RID<class_RID>`.
+Returns the :ref:`RID<class_RID>` of the navigation map on the :ref:`NavigationServer<class_NavigationServer>`.
 
 ----
 

+ 18 - 0
classes/class_navigation2d.rst

@@ -31,6 +31,8 @@ Properties
 +---------------------------+-----------------------------------------------------------------------------------+---------+
 | :ref:`float<class_float>` | :ref:`edge_connection_margin<class_Navigation2D_property_edge_connection_margin>` | ``1.0`` |
 +---------------------------+-----------------------------------------------------------------------------------+---------+
+| :ref:`int<class_int>`     | :ref:`navigation_layers<class_Navigation2D_property_navigation_layers>`           | ``1``   |
++---------------------------+-----------------------------------------------------------------------------------+---------+
 
 Methods
 -------
@@ -78,6 +80,22 @@ The XY plane cell size to use for fields.
 
 This value is used to detect the near edges to connect compatible regions.
 
+----
+
+.. _class_Navigation2D_property_navigation_layers:
+
+- :ref:`int<class_int>` **navigation_layers**
+
++-----------+------------------------------+
+| *Default* | ``1``                        |
++-----------+------------------------------+
+| *Setter*  | set_navigation_layers(value) |
++-----------+------------------------------+
+| *Getter*  | get_navigation_layers()      |
++-----------+------------------------------+
+
+A bitfield determining all navigation map layers the navigation can use on a :ref:`get_simple_path<class_Navigation2D_method_get_simple_path>` path query.
+
 Method Descriptions
 -------------------
 

+ 190 - 67
classes/class_navigation2dserver.rst

@@ -22,7 +22,9 @@ Maps are made up of regions, which are made of navigation polygons. Together, th
 
 \ **Note:** Most NavigationServer changes take effect after the next physics frame and not immediately. This includes all changes made to maps, regions or agents by navigation related Nodes in the SceneTree or made through scripts.
 
-For two regions to be connected to each other, they must share a similar edge. An edge is considered connected to another if both of its two vertices are at a distance less than :ref:`Navigation.edge_connection_margin<class_Navigation_property_edge_connection_margin>` to the respective other edge's vertex.
+For two regions to be connected to each other, they must share a similar edge. An edge is considered connected to another if both of its two vertices are at a distance less than navigation map ``edge_connection_margin`` to the respective other edge's vertex.
+
+You may assign navigation layers to regions with :ref:`region_set_navigation_layers<class_Navigation2DServer_method_region_set_navigation_layers>`, which then can be checked upon when requesting a path with :ref:`map_get_path<class_Navigation2DServer_method_map_get_path>`. This allows allowing or forbidding some areas to 2D objects.
 
 To use the collision avoidance system, you may use agents. You can set an agent's target velocity, then the servers will emit a callback with a modified velocity.
 
@@ -38,69 +40,100 @@ Tutorials
 Methods
 -------
 
-+-------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`RID<class_RID>`                           | :ref:`agent_create<class_Navigation2DServer_method_agent_create>` **(** **)** |const|                                                                                                                                                                |
-+-------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`RID<class_RID>`                           | :ref:`agent_get_map<class_Navigation2DServer_method_agent_get_map>` **(** :ref:`RID<class_RID>` agent **)** |const|                                                                                                                                  |
-+-------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`bool<class_bool>`                         | :ref:`agent_is_map_changed<class_Navigation2DServer_method_agent_is_map_changed>` **(** :ref:`RID<class_RID>` agent **)** |const|                                                                                                                    |
-+-------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| void                                            | :ref:`agent_set_callback<class_Navigation2DServer_method_agent_set_callback>` **(** :ref:`RID<class_RID>` agent, :ref:`Object<class_Object>` receiver, :ref:`String<class_String>` method, :ref:`Variant<class_Variant>` userdata=null **)** |const| |
-+-------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| void                                            | :ref:`agent_set_map<class_Navigation2DServer_method_agent_set_map>` **(** :ref:`RID<class_RID>` agent, :ref:`RID<class_RID>` map **)** |const|                                                                                                       |
-+-------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| void                                            | :ref:`agent_set_max_neighbors<class_Navigation2DServer_method_agent_set_max_neighbors>` **(** :ref:`RID<class_RID>` agent, :ref:`int<class_int>` count **)** |const|                                                                                 |
-+-------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| void                                            | :ref:`agent_set_max_speed<class_Navigation2DServer_method_agent_set_max_speed>` **(** :ref:`RID<class_RID>` agent, :ref:`float<class_float>` max_speed **)** |const|                                                                                 |
-+-------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| void                                            | :ref:`agent_set_neighbor_dist<class_Navigation2DServer_method_agent_set_neighbor_dist>` **(** :ref:`RID<class_RID>` agent, :ref:`float<class_float>` dist **)** |const|                                                                              |
-+-------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| void                                            | :ref:`agent_set_position<class_Navigation2DServer_method_agent_set_position>` **(** :ref:`RID<class_RID>` agent, :ref:`Vector2<class_Vector2>` position **)** |const|                                                                                |
-+-------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| void                                            | :ref:`agent_set_radius<class_Navigation2DServer_method_agent_set_radius>` **(** :ref:`RID<class_RID>` agent, :ref:`float<class_float>` radius **)** |const|                                                                                          |
-+-------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| void                                            | :ref:`agent_set_target_velocity<class_Navigation2DServer_method_agent_set_target_velocity>` **(** :ref:`RID<class_RID>` agent, :ref:`Vector2<class_Vector2>` target_velocity **)** |const|                                                           |
-+-------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| void                                            | :ref:`agent_set_time_horizon<class_Navigation2DServer_method_agent_set_time_horizon>` **(** :ref:`RID<class_RID>` agent, :ref:`float<class_float>` time **)** |const|                                                                                |
-+-------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| void                                            | :ref:`agent_set_velocity<class_Navigation2DServer_method_agent_set_velocity>` **(** :ref:`RID<class_RID>` agent, :ref:`Vector2<class_Vector2>` velocity **)** |const|                                                                                |
-+-------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| void                                            | :ref:`free_rid<class_Navigation2DServer_method_free_rid>` **(** :ref:`RID<class_RID>` rid **)** |const|                                                                                                                                              |
-+-------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`RID<class_RID>`                           | :ref:`map_create<class_Navigation2DServer_method_map_create>` **(** **)** |const|                                                                                                                                                                    |
-+-------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`Array<class_Array>`                       | :ref:`map_get_agents<class_Navigation2DServer_method_map_get_agents>` **(** :ref:`RID<class_RID>` map **)** |const|                                                                                                                                  |
-+-------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`float<class_float>`                       | :ref:`map_get_cell_size<class_Navigation2DServer_method_map_get_cell_size>` **(** :ref:`RID<class_RID>` map **)** |const|                                                                                                                            |
-+-------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`Vector2<class_Vector2>`                   | :ref:`map_get_closest_point<class_Navigation2DServer_method_map_get_closest_point>` **(** :ref:`RID<class_RID>` map, :ref:`Vector2<class_Vector2>` to_point **)** |const|                                                                            |
-+-------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`RID<class_RID>`                           | :ref:`map_get_closest_point_owner<class_Navigation2DServer_method_map_get_closest_point_owner>` **(** :ref:`RID<class_RID>` map, :ref:`Vector2<class_Vector2>` to_point **)** |const|                                                                |
-+-------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`float<class_float>`                       | :ref:`map_get_edge_connection_margin<class_Navigation2DServer_method_map_get_edge_connection_margin>` **(** :ref:`RID<class_RID>` map **)** |const|                                                                                                  |
-+-------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`PoolVector2Array<class_PoolVector2Array>` | :ref:`map_get_path<class_Navigation2DServer_method_map_get_path>` **(** :ref:`RID<class_RID>` map, :ref:`Vector2<class_Vector2>` origin, :ref:`Vector2<class_Vector2>` destination, :ref:`bool<class_bool>` optimize **)** |const|                   |
-+-------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`Array<class_Array>`                       | :ref:`map_get_regions<class_Navigation2DServer_method_map_get_regions>` **(** :ref:`RID<class_RID>` map **)** |const|                                                                                                                                |
-+-------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`bool<class_bool>`                         | :ref:`map_is_active<class_Navigation2DServer_method_map_is_active>` **(** :ref:`RID<class_RID>` nap **)** |const|                                                                                                                                    |
-+-------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| void                                            | :ref:`map_set_active<class_Navigation2DServer_method_map_set_active>` **(** :ref:`RID<class_RID>` map, :ref:`bool<class_bool>` active **)** |const|                                                                                                  |
-+-------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| void                                            | :ref:`map_set_cell_size<class_Navigation2DServer_method_map_set_cell_size>` **(** :ref:`RID<class_RID>` map, :ref:`float<class_float>` cell_size **)** |const|                                                                                       |
-+-------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| void                                            | :ref:`map_set_edge_connection_margin<class_Navigation2DServer_method_map_set_edge_connection_margin>` **(** :ref:`RID<class_RID>` map, :ref:`float<class_float>` margin **)** |const|                                                                |
-+-------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`RID<class_RID>`                           | :ref:`region_create<class_Navigation2DServer_method_region_create>` **(** **)** |const|                                                                                                                                                              |
-+-------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`RID<class_RID>`                           | :ref:`region_get_map<class_Navigation2DServer_method_region_get_map>` **(** :ref:`RID<class_RID>` region **)** |const|                                                                                                                               |
-+-------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| void                                            | :ref:`region_set_map<class_Navigation2DServer_method_region_set_map>` **(** :ref:`RID<class_RID>` region, :ref:`RID<class_RID>` map **)** |const|                                                                                                    |
-+-------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| void                                            | :ref:`region_set_navpoly<class_Navigation2DServer_method_region_set_navpoly>` **(** :ref:`RID<class_RID>` region, :ref:`NavigationPolygon<class_NavigationPolygon>` nav_poly **)** |const|                                                           |
-+-------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| void                                            | :ref:`region_set_transform<class_Navigation2DServer_method_region_set_transform>` **(** :ref:`RID<class_RID>` region, :ref:`Transform2D<class_Transform2D>` transform **)** |const|                                                                  |
-+-------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
++-------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`RID<class_RID>`                           | :ref:`agent_create<class_Navigation2DServer_method_agent_create>` **(** **)** |const|                                                                                                                                                                                         |
++-------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`RID<class_RID>`                           | :ref:`agent_get_map<class_Navigation2DServer_method_agent_get_map>` **(** :ref:`RID<class_RID>` agent **)** |const|                                                                                                                                                           |
++-------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`bool<class_bool>`                         | :ref:`agent_is_map_changed<class_Navigation2DServer_method_agent_is_map_changed>` **(** :ref:`RID<class_RID>` agent **)** |const|                                                                                                                                             |
++-------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| void                                            | :ref:`agent_set_callback<class_Navigation2DServer_method_agent_set_callback>` **(** :ref:`RID<class_RID>` agent, :ref:`Object<class_Object>` receiver, :ref:`String<class_String>` method, :ref:`Variant<class_Variant>` userdata=null **)** |const|                          |
++-------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| void                                            | :ref:`agent_set_map<class_Navigation2DServer_method_agent_set_map>` **(** :ref:`RID<class_RID>` agent, :ref:`RID<class_RID>` map **)** |const|                                                                                                                                |
++-------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| void                                            | :ref:`agent_set_max_neighbors<class_Navigation2DServer_method_agent_set_max_neighbors>` **(** :ref:`RID<class_RID>` agent, :ref:`int<class_int>` count **)** |const|                                                                                                          |
++-------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| void                                            | :ref:`agent_set_max_speed<class_Navigation2DServer_method_agent_set_max_speed>` **(** :ref:`RID<class_RID>` agent, :ref:`float<class_float>` max_speed **)** |const|                                                                                                          |
++-------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| void                                            | :ref:`agent_set_neighbor_dist<class_Navigation2DServer_method_agent_set_neighbor_dist>` **(** :ref:`RID<class_RID>` agent, :ref:`float<class_float>` dist **)** |const|                                                                                                       |
++-------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| void                                            | :ref:`agent_set_position<class_Navigation2DServer_method_agent_set_position>` **(** :ref:`RID<class_RID>` agent, :ref:`Vector2<class_Vector2>` position **)** |const|                                                                                                         |
++-------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| void                                            | :ref:`agent_set_radius<class_Navigation2DServer_method_agent_set_radius>` **(** :ref:`RID<class_RID>` agent, :ref:`float<class_float>` radius **)** |const|                                                                                                                   |
++-------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| void                                            | :ref:`agent_set_target_velocity<class_Navigation2DServer_method_agent_set_target_velocity>` **(** :ref:`RID<class_RID>` agent, :ref:`Vector2<class_Vector2>` target_velocity **)** |const|                                                                                    |
++-------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| void                                            | :ref:`agent_set_time_horizon<class_Navigation2DServer_method_agent_set_time_horizon>` **(** :ref:`RID<class_RID>` agent, :ref:`float<class_float>` time **)** |const|                                                                                                         |
++-------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| void                                            | :ref:`agent_set_velocity<class_Navigation2DServer_method_agent_set_velocity>` **(** :ref:`RID<class_RID>` agent, :ref:`Vector2<class_Vector2>` velocity **)** |const|                                                                                                         |
++-------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| void                                            | :ref:`free_rid<class_Navigation2DServer_method_free_rid>` **(** :ref:`RID<class_RID>` rid **)** |const|                                                                                                                                                                       |
++-------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`RID<class_RID>`                           | :ref:`map_create<class_Navigation2DServer_method_map_create>` **(** **)** |const|                                                                                                                                                                                             |
++-------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`Array<class_Array>`                       | :ref:`map_get_agents<class_Navigation2DServer_method_map_get_agents>` **(** :ref:`RID<class_RID>` map **)** |const|                                                                                                                                                           |
++-------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`float<class_float>`                       | :ref:`map_get_cell_height<class_Navigation2DServer_method_map_get_cell_height>` **(** :ref:`RID<class_RID>` map **)** |const|                                                                                                                                                 |
++-------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`float<class_float>`                       | :ref:`map_get_cell_size<class_Navigation2DServer_method_map_get_cell_size>` **(** :ref:`RID<class_RID>` map **)** |const|                                                                                                                                                     |
++-------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`Vector2<class_Vector2>`                   | :ref:`map_get_closest_point<class_Navigation2DServer_method_map_get_closest_point>` **(** :ref:`RID<class_RID>` map, :ref:`Vector2<class_Vector2>` to_point **)** |const|                                                                                                     |
++-------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`RID<class_RID>`                           | :ref:`map_get_closest_point_owner<class_Navigation2DServer_method_map_get_closest_point_owner>` **(** :ref:`RID<class_RID>` map, :ref:`Vector2<class_Vector2>` to_point **)** |const|                                                                                         |
++-------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`float<class_float>`                       | :ref:`map_get_edge_connection_margin<class_Navigation2DServer_method_map_get_edge_connection_margin>` **(** :ref:`RID<class_RID>` map **)** |const|                                                                                                                           |
++-------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`PoolVector2Array<class_PoolVector2Array>` | :ref:`map_get_path<class_Navigation2DServer_method_map_get_path>` **(** :ref:`RID<class_RID>` map, :ref:`Vector2<class_Vector2>` origin, :ref:`Vector2<class_Vector2>` destination, :ref:`bool<class_bool>` optimize, :ref:`int<class_int>` navigation_layers=1 **)** |const| |
++-------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`Array<class_Array>`                       | :ref:`map_get_regions<class_Navigation2DServer_method_map_get_regions>` **(** :ref:`RID<class_RID>` map **)** |const|                                                                                                                                                         |
++-------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`bool<class_bool>`                         | :ref:`map_is_active<class_Navigation2DServer_method_map_is_active>` **(** :ref:`RID<class_RID>` nap **)** |const|                                                                                                                                                             |
++-------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| void                                            | :ref:`map_set_active<class_Navigation2DServer_method_map_set_active>` **(** :ref:`RID<class_RID>` map, :ref:`bool<class_bool>` active **)** |const|                                                                                                                           |
++-------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| void                                            | :ref:`map_set_cell_height<class_Navigation2DServer_method_map_set_cell_height>` **(** :ref:`RID<class_RID>` map, :ref:`float<class_float>` cell_height **)** |const|                                                                                                          |
++-------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| void                                            | :ref:`map_set_cell_size<class_Navigation2DServer_method_map_set_cell_size>` **(** :ref:`RID<class_RID>` map, :ref:`float<class_float>` cell_size **)** |const|                                                                                                                |
++-------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| void                                            | :ref:`map_set_edge_connection_margin<class_Navigation2DServer_method_map_set_edge_connection_margin>` **(** :ref:`RID<class_RID>` map, :ref:`float<class_float>` margin **)** |const|                                                                                         |
++-------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`RID<class_RID>`                           | :ref:`region_create<class_Navigation2DServer_method_region_create>` **(** **)** |const|                                                                                                                                                                                       |
++-------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`Vector2<class_Vector2>`                   | :ref:`region_get_connection_pathway_end<class_Navigation2DServer_method_region_get_connection_pathway_end>` **(** :ref:`RID<class_RID>` region, :ref:`int<class_int>` connection **)** |const|                                                                                |
++-------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`Vector2<class_Vector2>`                   | :ref:`region_get_connection_pathway_start<class_Navigation2DServer_method_region_get_connection_pathway_start>` **(** :ref:`RID<class_RID>` region, :ref:`int<class_int>` connection **)** |const|                                                                            |
++-------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`int<class_int>`                           | :ref:`region_get_connections_count<class_Navigation2DServer_method_region_get_connections_count>` **(** :ref:`RID<class_RID>` region **)** |const|                                                                                                                            |
++-------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`float<class_float>`                       | :ref:`region_get_enter_cost<class_Navigation2DServer_method_region_get_enter_cost>` **(** :ref:`RID<class_RID>` region **)** |const|                                                                                                                                          |
++-------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`RID<class_RID>`                           | :ref:`region_get_map<class_Navigation2DServer_method_region_get_map>` **(** :ref:`RID<class_RID>` region **)** |const|                                                                                                                                                        |
++-------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`int<class_int>`                           | :ref:`region_get_navigation_layers<class_Navigation2DServer_method_region_get_navigation_layers>` **(** :ref:`RID<class_RID>` region **)** |const|                                                                                                                            |
++-------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`float<class_float>`                       | :ref:`region_get_travel_cost<class_Navigation2DServer_method_region_get_travel_cost>` **(** :ref:`RID<class_RID>` region **)** |const|                                                                                                                                        |
++-------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| void                                            | :ref:`region_set_enter_cost<class_Navigation2DServer_method_region_set_enter_cost>` **(** :ref:`RID<class_RID>` region, :ref:`float<class_float>` enter_cost **)** |const|                                                                                                    |
++-------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| void                                            | :ref:`region_set_map<class_Navigation2DServer_method_region_set_map>` **(** :ref:`RID<class_RID>` region, :ref:`RID<class_RID>` map **)** |const|                                                                                                                             |
++-------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| void                                            | :ref:`region_set_navigation_layers<class_Navigation2DServer_method_region_set_navigation_layers>` **(** :ref:`RID<class_RID>` region, :ref:`int<class_int>` navigation_layers **)** |const|                                                                                   |
++-------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| void                                            | :ref:`region_set_navpoly<class_Navigation2DServer_method_region_set_navpoly>` **(** :ref:`RID<class_RID>` region, :ref:`NavigationPolygon<class_NavigationPolygon>` nav_poly **)** |const|                                                                                    |
++-------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| void                                            | :ref:`region_set_transform<class_Navigation2DServer_method_region_set_transform>` **(** :ref:`RID<class_RID>` region, :ref:`Transform2D<class_Transform2D>` transform **)** |const|                                                                                           |
++-------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| void                                            | :ref:`region_set_travel_cost<class_Navigation2DServer_method_region_set_travel_cost>` **(** :ref:`RID<class_RID>` region, :ref:`float<class_float>` travel_cost **)** |const|                                                                                                 |
++-------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+
+Signals
+-------
+
+.. _class_Navigation2DServer_signal_map_changed:
+
+- **map_changed** **(** :ref:`RID<class_RID>` map **)**
+
+Emitted when a navigation map is updated, when a region moves or is modified.
 
 Method Descriptions
 -------------------
@@ -133,7 +166,9 @@ Returns ``true`` if the map got changed the previous frame.
 
 - void **agent_set_callback** **(** :ref:`RID<class_RID>` agent, :ref:`Object<class_Object>` receiver, :ref:`String<class_String>` method, :ref:`Variant<class_Variant>` userdata=null **)** |const|
 
-Callback called at the end of the RVO process.
+Callback called at the end of the RVO process. If a callback is created manually and the agent is placed on a navigation map it will calculate avoidance for the agent and dispatch the calculated ``safe_velocity`` to the ``receiver`` object with a signal to the chosen ``method`` name.
+
+\ **Note:** Created callbacks are always processed independently of the SceneTree state as long as the agent is on a navigation map and not freed. To disable the dispatch of a callback from an agent use :ref:`agent_set_callback<class_Navigation2DServer_method_agent_set_callback>` again with a ``null`` object as the ``receiver``.
 
 ----
 
@@ -233,6 +268,14 @@ Returns all navigation agents :ref:`RID<class_RID>`\ s that are currently assign
 
 ----
 
+.. _class_Navigation2DServer_method_map_get_cell_height:
+
+- :ref:`float<class_float>` **map_get_cell_height** **(** :ref:`RID<class_RID>` map **)** |const|
+
+Returns the map cell height. **Note:** Currently not implemented.
+
+----
+
 .. _class_Navigation2DServer_method_map_get_cell_size:
 
 - :ref:`float<class_float>` **map_get_cell_size** **(** :ref:`RID<class_RID>` map **)** |const|
@@ -267,9 +310,9 @@ Returns the edge connection margin of the map. The edge connection margin is a d
 
 .. _class_Navigation2DServer_method_map_get_path:
 
-- :ref:`PoolVector2Array<class_PoolVector2Array>` **map_get_path** **(** :ref:`RID<class_RID>` map, :ref:`Vector2<class_Vector2>` origin, :ref:`Vector2<class_Vector2>` destination, :ref:`bool<class_bool>` optimize **)** |const|
+- :ref:`PoolVector2Array<class_PoolVector2Array>` **map_get_path** **(** :ref:`RID<class_RID>` map, :ref:`Vector2<class_Vector2>` origin, :ref:`Vector2<class_Vector2>` destination, :ref:`bool<class_bool>` optimize, :ref:`int<class_int>` navigation_layers=1 **)** |const|
 
-Returns the navigation path to reach the destination from the origin.
+Returns the navigation path to reach the destination from the origin. ``navigation_layers`` is a bitmask of all region layers that are allowed to be in the path.
 
 ----
 
@@ -297,6 +340,14 @@ Sets the map active.
 
 ----
 
+.. _class_Navigation2DServer_method_map_set_cell_height:
+
+- void **map_set_cell_height** **(** :ref:`RID<class_RID>` map, :ref:`float<class_float>` cell_height **)** |const|
+
+Set the map cell height used to weld the navigation mesh polygons. **Note:** Currently not implemented.
+
+----
+
 .. _class_Navigation2DServer_method_map_set_cell_size:
 
 - void **map_set_cell_size** **(** :ref:`RID<class_RID>` map, :ref:`float<class_float>` cell_size **)** |const|
@@ -321,6 +372,38 @@ Creates a new region.
 
 ----
 
+.. _class_Navigation2DServer_method_region_get_connection_pathway_end:
+
+- :ref:`Vector2<class_Vector2>` **region_get_connection_pathway_end** **(** :ref:`RID<class_RID>` region, :ref:`int<class_int>` connection **)** |const|
+
+Returns the ending point of a connection door. ``connection`` is an index between 0 and the return value of :ref:`region_get_connections_count<class_Navigation2DServer_method_region_get_connections_count>`.
+
+----
+
+.. _class_Navigation2DServer_method_region_get_connection_pathway_start:
+
+- :ref:`Vector2<class_Vector2>` **region_get_connection_pathway_start** **(** :ref:`RID<class_RID>` region, :ref:`int<class_int>` connection **)** |const|
+
+Returns the starting point of a connection door. ``connection`` is an index between 0 and the return value of :ref:`region_get_connections_count<class_Navigation2DServer_method_region_get_connections_count>`.
+
+----
+
+.. _class_Navigation2DServer_method_region_get_connections_count:
+
+- :ref:`int<class_int>` **region_get_connections_count** **(** :ref:`RID<class_RID>` region **)** |const|
+
+Returns how many connections this ``region`` has with other regions in the map.
+
+----
+
+.. _class_Navigation2DServer_method_region_get_enter_cost:
+
+- :ref:`float<class_float>` **region_get_enter_cost** **(** :ref:`RID<class_RID>` region **)** |const|
+
+Returns the ``enter_cost`` of this ``region``.
+
+----
+
 .. _class_Navigation2DServer_method_region_get_map:
 
 - :ref:`RID<class_RID>` **region_get_map** **(** :ref:`RID<class_RID>` region **)** |const|
@@ -329,6 +412,30 @@ Returns the navigation map :ref:`RID<class_RID>` the requested ``region`` is cur
 
 ----
 
+.. _class_Navigation2DServer_method_region_get_navigation_layers:
+
+- :ref:`int<class_int>` **region_get_navigation_layers** **(** :ref:`RID<class_RID>` region **)** |const|
+
+Returns the region's navigation layers.
+
+----
+
+.. _class_Navigation2DServer_method_region_get_travel_cost:
+
+- :ref:`float<class_float>` **region_get_travel_cost** **(** :ref:`RID<class_RID>` region **)** |const|
+
+Returns the ``travel_cost`` of this ``region``.
+
+----
+
+.. _class_Navigation2DServer_method_region_set_enter_cost:
+
+- void **region_set_enter_cost** **(** :ref:`RID<class_RID>` region, :ref:`float<class_float>` enter_cost **)** |const|
+
+Sets the ``enter_cost`` for this ``region``.
+
+----
+
 .. _class_Navigation2DServer_method_region_set_map:
 
 - void **region_set_map** **(** :ref:`RID<class_RID>` region, :ref:`RID<class_RID>` map **)** |const|
@@ -337,6 +444,14 @@ Sets the map for the region.
 
 ----
 
+.. _class_Navigation2DServer_method_region_set_navigation_layers:
+
+- void **region_set_navigation_layers** **(** :ref:`RID<class_RID>` region, :ref:`int<class_int>` navigation_layers **)** |const|
+
+Set the region's navigation layers. This allows selecting regions from a path request (when using :ref:`map_get_path<class_Navigation2DServer_method_map_get_path>`).
+
+----
+
 .. _class_Navigation2DServer_method_region_set_navpoly:
 
 - void **region_set_navpoly** **(** :ref:`RID<class_RID>` region, :ref:`NavigationPolygon<class_NavigationPolygon>` nav_poly **)** |const|
@@ -351,6 +466,14 @@ Sets the navigation mesh for the region.
 
 Sets the global transformation for the region.
 
+----
+
+.. _class_Navigation2DServer_method_region_set_travel_cost:
+
+- void **region_set_travel_cost** **(** :ref:`RID<class_RID>` region, :ref:`float<class_float>` travel_cost **)** |const|
+
+Sets the ``travel_cost`` for this ``region``.
+
 .. |virtual| replace:: :abbr:`virtual (This method should typically be overridden by the user to have any effect.)`
 .. |const| replace:: :abbr:`const (This method has no side effects. It doesn't modify any of the instance's member variables.)`
 .. |vararg| replace:: :abbr:`vararg (This method accepts any number of arguments after the ones described here.)`

+ 44 - 4
classes/class_navigationagent.rst

@@ -16,7 +16,9 @@ NavigationAgent
 Description
 -----------
 
-3D agent that is used in navigation to reach a location while avoiding static and dynamic obstacles. The dynamic obstacles are avoided using RVO (Reciprocal Velocity Obstacles) collision avoidance. The agent needs navigation data to work correctly. This can be done by having the agent as a child of a :ref:`Navigation<class_Navigation>` node, or using :ref:`set_navigation<class_NavigationAgent_method_set_navigation>`. ``NavigationAgent`` is physics safe.
+3D agent that is used in navigation to reach a location while avoiding static and dynamic obstacles. The dynamic obstacles are avoided using RVO (Reciprocal Velocity Obstacles) collision avoidance. The agent needs navigation data to work correctly. By default this node will register to the default :ref:`World<class_World>` navigation map. If this node is a child of a :ref:`Navigation<class_Navigation>` node it will register to the navigation map of the navigation node or the function :ref:`set_navigation<class_NavigationAgent_method_set_navigation>` can be used to set the navigation node directly. ``NavigationAgent`` is physics safe.
+
+\ **Note:** After :ref:`set_target_location<class_NavigationAgent_method_set_target_location>` is used it is required to use the :ref:`get_next_location<class_NavigationAgent_method_get_next_location>` function once every physics frame to update the internal path logic of the NavigationAgent. The returned vector position from this function should be used as the next movement position for the agent's parent Node.
 
 Properties
 ----------
@@ -32,6 +34,8 @@ Properties
 +---------------------------+----------------------------------------------------------------------------------------+-----------+
 | :ref:`float<class_float>` | :ref:`max_speed<class_NavigationAgent_property_max_speed>`                             | ``10.0``  |
 +---------------------------+----------------------------------------------------------------------------------------+-----------+
+| :ref:`int<class_int>`     | :ref:`navigation_layers<class_NavigationAgent_property_navigation_layers>`             | ``1``     |
++---------------------------+----------------------------------------------------------------------------------------+-----------+
 | :ref:`float<class_float>` | :ref:`neighbor_dist<class_NavigationAgent_property_neighbor_dist>`                     | ``50.0``  |
 +---------------------------+----------------------------------------------------------------------------------------+-----------+
 | :ref:`float<class_float>` | :ref:`path_max_distance<class_NavigationAgent_property_path_max_distance>`             | ``3.0``   |
@@ -57,6 +61,8 @@ Methods
 +-------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------+
 | :ref:`Node<class_Node>`                         | :ref:`get_navigation<class_NavigationAgent_method_get_navigation>` **(** **)** |const|                                          |
 +-------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`RID<class_RID>`                           | :ref:`get_navigation_map<class_NavigationAgent_method_get_navigation_map>` **(** **)** |const|                                  |
++-------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------+
 | :ref:`Vector3<class_Vector3>`                   | :ref:`get_next_location<class_NavigationAgent_method_get_next_location>` **(** **)**                                            |
 +-------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------+
 | :ref:`RID<class_RID>`                           | :ref:`get_rid<class_NavigationAgent_method_get_rid>` **(** **)** |const|                                                        |
@@ -71,6 +77,8 @@ Methods
 +-------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------+
 | void                                            | :ref:`set_navigation<class_NavigationAgent_method_set_navigation>` **(** :ref:`Node<class_Node>` navigation **)**               |
 +-------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------+
+| void                                            | :ref:`set_navigation_map<class_NavigationAgent_method_set_navigation_map>` **(** :ref:`RID<class_RID>` navigation_map **)**     |
++-------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------+
 | void                                            | :ref:`set_target_location<class_NavigationAgent_method_set_target_location>` **(** :ref:`Vector3<class_Vector3>` location **)** |
 +-------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------+
 | void                                            | :ref:`set_velocity<class_NavigationAgent_method_set_velocity>` **(** :ref:`Vector3<class_Vector3>` velocity **)**               |
@@ -124,7 +132,7 @@ Property Descriptions
 | *Getter*  | get_agent_height_offset()      |
 +-----------+--------------------------------+
 
-The agent height offset to match the navigation mesh height.
+The NavigationAgent height offset is subtracted from the y-axis value of any vector path position for this NavigationAgent. The NavigationAgent height offset does not change or influence the navigation mesh or pathfinding query result. Additional navigation maps that use regions with navigation meshes that the developer baked with appropriate agent radius or height values are required to support different-sized agents.
 
 ----
 
@@ -192,6 +200,22 @@ The maximum speed that an agent can move.
 
 ----
 
+.. _class_NavigationAgent_property_navigation_layers:
+
+- :ref:`int<class_int>` **navigation_layers**
+
++-----------+------------------------------+
+| *Default* | ``1``                        |
++-----------+------------------------------+
+| *Setter*  | set_navigation_layers(value) |
++-----------+------------------------------+
+| *Getter*  | get_navigation_layers()      |
++-----------+------------------------------+
+
+A bitfield determining all navigation map layers the ``NavigationAgent`` belongs to. On path requests the agent will ignore navmeshes without at least one matching layer.
+
+----
+
 .. _class_NavigationAgent_property_neighbor_dist:
 
 - :ref:`float<class_float>` **neighbor_dist**
@@ -293,7 +317,7 @@ Returns the reachable final location in global coordinates. This can change if t
 
 - :ref:`PoolVector3Array<class_PoolVector3Array>` **get_nav_path** **(** **)** |const|
 
-Returns the path from start to finish in global coordinates.
+Returns this agent's current path from start to finish in global coordinates. The path only updates when the target location is changed or the agent requires a repath. The path array is not intended to be used in direct path movement as the agent has its own internal path logic that would get corrupted by changing the path array manually. Use the intended :ref:`get_next_location<class_NavigationAgent_method_get_next_location>` once every physics frame to receive the next path point for the agents movement as this function also updates the internal path logic.
 
 ----
 
@@ -313,11 +337,19 @@ Returns the :ref:`Navigation<class_Navigation>` node that the agent is using for
 
 ----
 
+.. _class_NavigationAgent_method_get_navigation_map:
+
+- :ref:`RID<class_RID>` **get_navigation_map** **(** **)** |const|
+
+Returns the :ref:`RID<class_RID>` of the navigation map for this NavigationAgent node. This function returns always the map set on the NavigationAgent node and not the map of the abstract agent on the NavigationServer. If the agent map is changed directly with the NavigationServer API the NavigationAgent node will not be aware of the map change. Use :ref:`set_navigation_map<class_NavigationAgent_method_set_navigation_map>` to change the navigation map for the NavigationAgent and also update the agent on the NavigationServer.
+
+----
+
 .. _class_NavigationAgent_method_get_next_location:
 
 - :ref:`Vector3<class_Vector3>` **get_next_location** **(** **)**
 
-Returns a :ref:`Vector3<class_Vector3>` in global coordinates, that can be moved to, making sure that there are no static objects in the way. If the agent does not have a navigation path, it will return the origin of the agent's parent.
+Returns the next location in global coordinates that can be moved to, making sure that there are no static objects in the way. If the agent does not have a navigation path, it will return the position of the agent's parent. The use of this function once every physics frame is required to update the internal path logic of the NavigationAgent.
 
 ----
 
@@ -369,6 +401,14 @@ Sets the :ref:`Navigation<class_Navigation>` node used by the agent. Useful when
 
 ----
 
+.. _class_NavigationAgent_method_set_navigation_map:
+
+- void **set_navigation_map** **(** :ref:`RID<class_RID>` navigation_map **)**
+
+Sets the :ref:`RID<class_RID>` of the navigation map this NavigationAgent node should use and also updates the ``agent`` on the NavigationServer.
+
+----
+
 .. _class_NavigationAgent_method_set_target_location:
 
 - void **set_target_location** **(** :ref:`Vector3<class_Vector3>` location **)**

+ 43 - 3
classes/class_navigationagent2d.rst

@@ -16,7 +16,9 @@ NavigationAgent2D
 Description
 -----------
 
-2D agent that is used in navigation to reach a location while avoiding static and dynamic obstacles. The dynamic obstacles are avoided using RVO (Reciprocal Velocity Obstacles) collision avoidance. The agent needs navigation data to work correctly. This can be done by having the agent as a child of a :ref:`Navigation2D<class_Navigation2D>` node, or using :ref:`set_navigation<class_NavigationAgent2D_method_set_navigation>`. ``NavigationAgent2D`` is physics safe.
+2D agent that is used in navigation to reach a location while avoiding static and dynamic obstacles. The dynamic obstacles are avoided using RVO (Reciprocal Velocity Obstacles) collision avoidance. The agent needs navigation data to work correctly. By default this node will register to the default :ref:`World2D<class_World2D>` navigation map. If this node is a child of a :ref:`Navigation2D<class_Navigation2D>` node it will register to the navigation map of the navigation node or the function :ref:`set_navigation<class_NavigationAgent2D_method_set_navigation>` can be used to set the navigation node directly. ``NavigationAgent2D`` is physics safe.
+
+\ **Note:** After :ref:`set_target_location<class_NavigationAgent2D_method_set_target_location>` is used it is required to use the :ref:`get_next_location<class_NavigationAgent2D_method_get_next_location>` function once every physics frame to update the internal path logic of the NavigationAgent. The returned vector position from this function should be used as the next movement position for the agent's parent Node.
 
 Properties
 ----------
@@ -28,6 +30,8 @@ Properties
 +---------------------------+------------------------------------------------------------------------------------------+-----------+
 | :ref:`float<class_float>` | :ref:`max_speed<class_NavigationAgent2D_property_max_speed>`                             | ``200.0`` |
 +---------------------------+------------------------------------------------------------------------------------------+-----------+
+| :ref:`int<class_int>`     | :ref:`navigation_layers<class_NavigationAgent2D_property_navigation_layers>`             | ``1``     |
++---------------------------+------------------------------------------------------------------------------------------+-----------+
 | :ref:`float<class_float>` | :ref:`neighbor_dist<class_NavigationAgent2D_property_neighbor_dist>`                     | ``500.0`` |
 +---------------------------+------------------------------------------------------------------------------------------+-----------+
 | :ref:`float<class_float>` | :ref:`path_max_distance<class_NavigationAgent2D_property_path_max_distance>`             | ``3.0``   |
@@ -53,6 +57,8 @@ Methods
 +-------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------+
 | :ref:`Node<class_Node>`                         | :ref:`get_navigation<class_NavigationAgent2D_method_get_navigation>` **(** **)** |const|                                          |
 +-------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`RID<class_RID>`                           | :ref:`get_navigation_map<class_NavigationAgent2D_method_get_navigation_map>` **(** **)** |const|                                  |
++-------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------+
 | :ref:`Vector2<class_Vector2>`                   | :ref:`get_next_location<class_NavigationAgent2D_method_get_next_location>` **(** **)**                                            |
 +-------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------+
 | :ref:`RID<class_RID>`                           | :ref:`get_rid<class_NavigationAgent2D_method_get_rid>` **(** **)** |const|                                                        |
@@ -67,6 +73,8 @@ Methods
 +-------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------+
 | void                                            | :ref:`set_navigation<class_NavigationAgent2D_method_set_navigation>` **(** :ref:`Node<class_Node>` navigation **)**               |
 +-------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------+
+| void                                            | :ref:`set_navigation_map<class_NavigationAgent2D_method_set_navigation_map>` **(** :ref:`RID<class_RID>` navigation_map **)**     |
++-------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------+
 | void                                            | :ref:`set_target_location<class_NavigationAgent2D_method_set_target_location>` **(** :ref:`Vector2<class_Vector2>` location **)** |
 +-------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------+
 | void                                            | :ref:`set_velocity<class_NavigationAgent2D_method_set_velocity>` **(** :ref:`Vector2<class_Vector2>` velocity **)**               |
@@ -156,6 +164,22 @@ The maximum speed that an agent can move.
 
 ----
 
+.. _class_NavigationAgent2D_property_navigation_layers:
+
+- :ref:`int<class_int>` **navigation_layers**
+
++-----------+------------------------------+
+| *Default* | ``1``                        |
++-----------+------------------------------+
+| *Setter*  | set_navigation_layers(value) |
++-----------+------------------------------+
+| *Getter*  | get_navigation_layers()      |
++-----------+------------------------------+
+
+A bitfield determining all navigation map layers the ``NavigationAgent2D`` belongs to. On path requests the agent will ignore navmeshes without at least one matching layer.
+
+----
+
 .. _class_NavigationAgent2D_property_neighbor_dist:
 
 - :ref:`float<class_float>` **neighbor_dist**
@@ -257,7 +281,7 @@ Returns the reachable final location in global coordinates. This can change if t
 
 - :ref:`PoolVector2Array<class_PoolVector2Array>` **get_nav_path** **(** **)** |const|
 
-Returns the path from start to finish in global coordinates.
+Returns this agent's current path from start to finish in global coordinates. The path only updates when the target location is changed or the agent requires a repath. The path array is not intended to be used in direct path movement as the agent has its own internal path logic that would get corrupted by changing the path array manually. Use the intended :ref:`get_next_location<class_NavigationAgent2D_method_get_next_location>` once every physics frame to receive the next path point for the agents movement as this function also updates the internal path logic.
 
 ----
 
@@ -277,11 +301,19 @@ Returns the :ref:`Navigation2D<class_Navigation2D>` node that the agent is using
 
 ----
 
+.. _class_NavigationAgent2D_method_get_navigation_map:
+
+- :ref:`RID<class_RID>` **get_navigation_map** **(** **)** |const|
+
+Returns the :ref:`RID<class_RID>` of the navigation map for this NavigationAgent node. This function returns always the map set on the NavigationAgent node and not the map of the abstract agent on the NavigationServer. If the agent map is changed directly with the NavigationServer API the NavigationAgent node will not be aware of the map change. Use :ref:`set_navigation_map<class_NavigationAgent2D_method_set_navigation_map>` to change the navigation map for the NavigationAgent and also update the agent on the NavigationServer.
+
+----
+
 .. _class_NavigationAgent2D_method_get_next_location:
 
 - :ref:`Vector2<class_Vector2>` **get_next_location** **(** **)**
 
-Returns a :ref:`Vector2<class_Vector2>` in global coordinates, that can be moved to, making sure that there are no static objects in the way. If the agent does not have a navigation path, it will return the position of the agent's parent.
+Returns the next location in global coordinates that can be moved to, making sure that there are no static objects in the way. If the agent does not have a navigation path, it will return the position of the agent's parent. The use of this function once every physics frame is required to update the internal path logic of the NavigationAgent.
 
 ----
 
@@ -333,6 +365,14 @@ Sets the :ref:`Navigation2D<class_Navigation2D>` node used by the agent. Useful
 
 ----
 
+.. _class_NavigationAgent2D_method_set_navigation_map:
+
+- void **set_navigation_map** **(** :ref:`RID<class_RID>` navigation_map **)**
+
+Sets the :ref:`RID<class_RID>` of the navigation map this NavigationAgent node should use and also updates the ``agent`` on the NavigationServer.
+
+----
+
 .. _class_NavigationAgent2D_method_set_target_location:
 
 - void **set_target_location** **(** :ref:`Vector2<class_Vector2>` location **)**

+ 127 - 123
classes/class_navigationmesh.rst

@@ -26,49 +26,49 @@ Tutorials
 Properties
 ----------
 
-+---------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------+-----------+
-| :ref:`float<class_float>`                                           | :ref:`agent/height<class_NavigationMesh_property_agent/height>`                                                               | ``1.5``   |
-+---------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------+-----------+
-| :ref:`float<class_float>`                                           | :ref:`agent/max_climb<class_NavigationMesh_property_agent/max_climb>`                                                         | ``0.25``  |
-+---------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------+-----------+
-| :ref:`float<class_float>`                                           | :ref:`agent/max_slope<class_NavigationMesh_property_agent/max_slope>`                                                         | ``45.0``  |
-+---------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------+-----------+
-| :ref:`float<class_float>`                                           | :ref:`agent/radius<class_NavigationMesh_property_agent/radius>`                                                               | ``0.5``   |
-+---------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------+-----------+
-| :ref:`float<class_float>`                                           | :ref:`cell/height<class_NavigationMesh_property_cell/height>`                                                                 | ``0.25``  |
-+---------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------+-----------+
-| :ref:`float<class_float>`                                           | :ref:`cell/size<class_NavigationMesh_property_cell/size>`                                                                     | ``0.25``  |
-+---------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------+-----------+
-| :ref:`float<class_float>`                                           | :ref:`detail/sample_distance<class_NavigationMesh_property_detail/sample_distance>`                                           | ``6.0``   |
-+---------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------+-----------+
-| :ref:`float<class_float>`                                           | :ref:`detail/sample_max_error<class_NavigationMesh_property_detail/sample_max_error>`                                         | ``5.0``   |
-+---------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------+-----------+
-| :ref:`float<class_float>`                                           | :ref:`edge/max_error<class_NavigationMesh_property_edge/max_error>`                                                           | ``1.3``   |
-+---------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------+-----------+
-| :ref:`float<class_float>`                                           | :ref:`edge/max_length<class_NavigationMesh_property_edge/max_length>`                                                         | ``12.0``  |
-+---------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------+-----------+
-| :ref:`bool<class_bool>`                                             | :ref:`filter/filter_walkable_low_height_spans<class_NavigationMesh_property_filter/filter_walkable_low_height_spans>`         | ``false`` |
-+---------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------+-----------+
-| :ref:`bool<class_bool>`                                             | :ref:`filter/ledge_spans<class_NavigationMesh_property_filter/ledge_spans>`                                                   | ``false`` |
-+---------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------+-----------+
-| :ref:`bool<class_bool>`                                             | :ref:`filter/low_hanging_obstacles<class_NavigationMesh_property_filter/low_hanging_obstacles>`                               | ``false`` |
-+---------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------+-----------+
-| :ref:`int<class_int>`                                               | :ref:`geometry/collision_mask<class_NavigationMesh_property_geometry/collision_mask>`                                         |           |
-+---------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------+-----------+
-| :ref:`ParsedGeometryType<enum_NavigationMesh_ParsedGeometryType>`   | :ref:`geometry/parsed_geometry_type<class_NavigationMesh_property_geometry/parsed_geometry_type>`                             | ``0``     |
-+---------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------+-----------+
-| :ref:`SourceGeometryMode<enum_NavigationMesh_SourceGeometryMode>`   | :ref:`geometry/source_geometry_mode<class_NavigationMesh_property_geometry/source_geometry_mode>`                             | ``0``     |
-+---------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------+-----------+
-| :ref:`String<class_String>`                                         | :ref:`geometry/source_group_name<class_NavigationMesh_property_geometry/source_group_name>`                                   |           |
-+---------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------+-----------+
-| :ref:`float<class_float>`                                           | :ref:`polygon/verts_per_poly<class_NavigationMesh_property_polygon/verts_per_poly>`                                           | ``6.0``   |
-+---------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------+-----------+
-| :ref:`float<class_float>`                                           | :ref:`region/merge_size<class_NavigationMesh_property_region/merge_size>`                                                     | ``20.0``  |
-+---------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------+-----------+
-| :ref:`float<class_float>`                                           | :ref:`region/min_size<class_NavigationMesh_property_region/min_size>`                                                         | ``2.0``   |
-+---------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------+-----------+
-| :ref:`SamplePartitionType<enum_NavigationMesh_SamplePartitionType>` | :ref:`sample_partition_type/sample_partition_type<class_NavigationMesh_property_sample_partition_type/sample_partition_type>` | ``0``     |
-+---------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------+-----------+
++---------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------+----------------+
+| :ref:`float<class_float>`                                           | :ref:`agent_height<class_NavigationMesh_property_agent_height>`                                         | ``1.5``        |
++---------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------+----------------+
+| :ref:`float<class_float>`                                           | :ref:`agent_max_climb<class_NavigationMesh_property_agent_max_climb>`                                   | ``0.25``       |
++---------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------+----------------+
+| :ref:`float<class_float>`                                           | :ref:`agent_max_slope<class_NavigationMesh_property_agent_max_slope>`                                   | ``45.0``       |
++---------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------+----------------+
+| :ref:`float<class_float>`                                           | :ref:`agent_radius<class_NavigationMesh_property_agent_radius>`                                         | ``0.5``        |
++---------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------+----------------+
+| :ref:`float<class_float>`                                           | :ref:`cell_height<class_NavigationMesh_property_cell_height>`                                           | ``0.25``       |
++---------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------+----------------+
+| :ref:`float<class_float>`                                           | :ref:`cell_size<class_NavigationMesh_property_cell_size>`                                               | ``0.25``       |
++---------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------+----------------+
+| :ref:`float<class_float>`                                           | :ref:`detail_sample_distance<class_NavigationMesh_property_detail_sample_distance>`                     | ``6.0``        |
++---------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------+----------------+
+| :ref:`float<class_float>`                                           | :ref:`detail_sample_max_error<class_NavigationMesh_property_detail_sample_max_error>`                   | ``1.0``        |
++---------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------+----------------+
+| :ref:`float<class_float>`                                           | :ref:`edge_max_error<class_NavigationMesh_property_edge_max_error>`                                     | ``1.3``        |
++---------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------+----------------+
+| :ref:`float<class_float>`                                           | :ref:`edge_max_length<class_NavigationMesh_property_edge_max_length>`                                   | ``12.0``       |
++---------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------+----------------+
+| :ref:`bool<class_bool>`                                             | :ref:`filter_ledge_spans<class_NavigationMesh_property_filter_ledge_spans>`                             | ``false``      |
++---------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------+----------------+
+| :ref:`bool<class_bool>`                                             | :ref:`filter_low_hanging_obstacles<class_NavigationMesh_property_filter_low_hanging_obstacles>`         | ``false``      |
++---------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------+----------------+
+| :ref:`bool<class_bool>`                                             | :ref:`filter_walkable_low_height_spans<class_NavigationMesh_property_filter_walkable_low_height_spans>` | ``false``      |
++---------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------+----------------+
+| :ref:`int<class_int>`                                               | :ref:`geometry_collision_mask<class_NavigationMesh_property_geometry_collision_mask>`                   | ``4294967295`` |
++---------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------+----------------+
+| :ref:`ParsedGeometryType<enum_NavigationMesh_ParsedGeometryType>`   | :ref:`geometry_parsed_geometry_type<class_NavigationMesh_property_geometry_parsed_geometry_type>`       | ``0``          |
++---------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------+----------------+
+| :ref:`SourceGeometryMode<enum_NavigationMesh_SourceGeometryMode>`   | :ref:`geometry_source_geometry_mode<class_NavigationMesh_property_geometry_source_geometry_mode>`       | ``0``          |
++---------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------+----------------+
+| :ref:`String<class_String>`                                         | :ref:`geometry_source_group_name<class_NavigationMesh_property_geometry_source_group_name>`             | ``"navmesh"``  |
++---------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------+----------------+
+| :ref:`float<class_float>`                                           | :ref:`polygon_verts_per_poly<class_NavigationMesh_property_polygon_verts_per_poly>`                     | ``6.0``        |
++---------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------+----------------+
+| :ref:`float<class_float>`                                           | :ref:`region_merge_size<class_NavigationMesh_property_region_merge_size>`                               | ``20.0``       |
++---------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------+----------------+
+| :ref:`float<class_float>`                                           | :ref:`region_min_size<class_NavigationMesh_property_region_min_size>`                                   | ``2.0``        |
++---------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------+----------------+
+| :ref:`SamplePartitionType<enum_NavigationMesh_SamplePartitionType>` | :ref:`sample_partition_type<class_NavigationMesh_property_sample_partition_type>`                       | ``0``          |
++---------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------+----------------+
 
 Methods
 -------
@@ -132,7 +132,7 @@ enum **ParsedGeometryType**:
 
 - **PARSED_GEOMETRY_MESH_INSTANCES** = **0** --- Parses mesh instances as geometry. This includes :ref:`MeshInstance<class_MeshInstance>`, :ref:`CSGShape<class_CSGShape>`, and :ref:`GridMap<class_GridMap>` nodes.
 
-- **PARSED_GEOMETRY_STATIC_COLLIDERS** = **1** --- Parses :ref:`StaticBody<class_StaticBody>` colliders as geometry. The collider should be in any of the layers specified by :ref:`geometry/collision_mask<class_NavigationMesh_property_geometry/collision_mask>`.
+- **PARSED_GEOMETRY_STATIC_COLLIDERS** = **1** --- Parses :ref:`StaticBody<class_StaticBody>` colliders as geometry. The collider should be in any of the layers specified by :ref:`geometry_collision_mask<class_NavigationMesh_property_geometry_collision_mask>`.
 
 - **PARSED_GEOMETRY_BOTH** = **2** --- Both :ref:`PARSED_GEOMETRY_MESH_INSTANCES<class_NavigationMesh_constant_PARSED_GEOMETRY_MESH_INSTANCES>` and :ref:`PARSED_GEOMETRY_STATIC_COLLIDERS<class_NavigationMesh_constant_PARSED_GEOMETRY_STATIC_COLLIDERS>`.
 
@@ -154,18 +154,18 @@ enum **SourceGeometryMode**:
 
 - **SOURCE_GEOMETRY_NAVMESH_CHILDREN** = **0** --- Scans the child nodes of :ref:`NavigationMeshInstance<class_NavigationMeshInstance>` recursively for geometry.
 
-- **SOURCE_GEOMETRY_GROUPS_WITH_CHILDREN** = **1** --- Scans nodes in a group and their child nodes recursively for geometry. The group is specified by :ref:`geometry/source_group_name<class_NavigationMesh_property_geometry/source_group_name>`.
+- **SOURCE_GEOMETRY_GROUPS_WITH_CHILDREN** = **1** --- Scans nodes in a group and their child nodes recursively for geometry. The group is specified by :ref:`geometry_source_group_name<class_NavigationMesh_property_geometry_source_group_name>`.
 
-- **SOURCE_GEOMETRY_GROUPS_EXPLICIT** = **2** --- Uses nodes in a group for geometry. The group is specified by :ref:`geometry/source_group_name<class_NavigationMesh_property_geometry/source_group_name>`.
+- **SOURCE_GEOMETRY_GROUPS_EXPLICIT** = **2** --- Uses nodes in a group for geometry. The group is specified by :ref:`geometry_source_group_name<class_NavigationMesh_property_geometry_source_group_name>`.
 
 - **SOURCE_GEOMETRY_MAX** = **3** --- Represents the size of the :ref:`SourceGeometryMode<enum_NavigationMesh_SourceGeometryMode>` enum.
 
 Property Descriptions
 ---------------------
 
-.. _class_NavigationMesh_property_agent/height:
+.. _class_NavigationMesh_property_agent_height:
 
-- :ref:`float<class_float>` **agent/height**
+- :ref:`float<class_float>` **agent_height**
 
 +-----------+-------------------------+
 | *Default* | ``1.5``                 |
@@ -177,13 +177,13 @@ Property Descriptions
 
 The minimum floor to ceiling height that will still allow the floor area to be considered walkable.
 
-\ **Note:** While baking, this value will be rounded up to the nearest multiple of :ref:`cell/height<class_NavigationMesh_property_cell/height>`.
+\ **Note:** While baking, this value will be rounded up to the nearest multiple of :ref:`cell_height<class_NavigationMesh_property_cell_height>`.
 
 ----
 
-.. _class_NavigationMesh_property_agent/max_climb:
+.. _class_NavigationMesh_property_agent_max_climb:
 
-- :ref:`float<class_float>` **agent/max_climb**
+- :ref:`float<class_float>` **agent_max_climb**
 
 +-----------+----------------------------+
 | *Default* | ``0.25``                   |
@@ -195,13 +195,13 @@ The minimum floor to ceiling height that will still allow the floor area to be c
 
 The minimum ledge height that is considered to still be traversable.
 
-\ **Note:** While baking, this value will be rounded down to the nearest multiple of :ref:`cell/height<class_NavigationMesh_property_cell/height>`.
+\ **Note:** While baking, this value will be rounded down to the nearest multiple of :ref:`cell_height<class_NavigationMesh_property_cell_height>`.
 
 ----
 
-.. _class_NavigationMesh_property_agent/max_slope:
+.. _class_NavigationMesh_property_agent_max_slope:
 
-- :ref:`float<class_float>` **agent/max_slope**
+- :ref:`float<class_float>` **agent_max_slope**
 
 +-----------+----------------------------+
 | *Default* | ``45.0``                   |
@@ -215,9 +215,9 @@ The maximum slope that is considered walkable, in degrees.
 
 ----
 
-.. _class_NavigationMesh_property_agent/radius:
+.. _class_NavigationMesh_property_agent_radius:
 
-- :ref:`float<class_float>` **agent/radius**
+- :ref:`float<class_float>` **agent_radius**
 
 +-----------+-------------------------+
 | *Default* | ``0.5``                 |
@@ -229,13 +229,13 @@ The maximum slope that is considered walkable, in degrees.
 
 The distance to erode/shrink the walkable area of the heightfield away from obstructions.
 
-\ **Note:** While baking, this value will be rounded up to the nearest multiple of :ref:`cell/size<class_NavigationMesh_property_cell/size>`.
+\ **Note:** While baking, this value will be rounded up to the nearest multiple of :ref:`cell_size<class_NavigationMesh_property_cell_size>`.
 
 ----
 
-.. _class_NavigationMesh_property_cell/height:
+.. _class_NavigationMesh_property_cell_height:
 
-- :ref:`float<class_float>` **cell/height**
+- :ref:`float<class_float>` **cell_height**
 
 +-----------+------------------------+
 | *Default* | ``0.25``               |
@@ -249,9 +249,9 @@ The Y axis cell size to use for fields.
 
 ----
 
-.. _class_NavigationMesh_property_cell/size:
+.. _class_NavigationMesh_property_cell_size:
 
-- :ref:`float<class_float>` **cell/size**
+- :ref:`float<class_float>` **cell_size**
 
 +-----------+----------------------+
 | *Default* | ``0.25``             |
@@ -265,9 +265,9 @@ The XZ plane cell size to use for fields.
 
 ----
 
-.. _class_NavigationMesh_property_detail/sample_distance:
+.. _class_NavigationMesh_property_detail_sample_distance:
 
-- :ref:`float<class_float>` **detail/sample_distance**
+- :ref:`float<class_float>` **detail_sample_distance**
 
 +-----------+-----------------------------------+
 | *Default* | ``6.0``                           |
@@ -281,12 +281,12 @@ The sampling distance to use when generating the detail mesh, in cell unit.
 
 ----
 
-.. _class_NavigationMesh_property_detail/sample_max_error:
+.. _class_NavigationMesh_property_detail_sample_max_error:
 
-- :ref:`float<class_float>` **detail/sample_max_error**
+- :ref:`float<class_float>` **detail_sample_max_error**
 
 +-----------+------------------------------------+
-| *Default* | ``5.0``                            |
+| *Default* | ``1.0``                            |
 +-----------+------------------------------------+
 | *Setter*  | set_detail_sample_max_error(value) |
 +-----------+------------------------------------+
@@ -297,9 +297,9 @@ The maximum distance the detail mesh surface should deviate from heightfield, in
 
 ----
 
-.. _class_NavigationMesh_property_edge/max_error:
+.. _class_NavigationMesh_property_edge_max_error:
 
-- :ref:`float<class_float>` **edge/max_error**
+- :ref:`float<class_float>` **edge_max_error**
 
 +-----------+---------------------------+
 | *Default* | ``1.3``                   |
@@ -313,9 +313,9 @@ The maximum distance a simplfied contour's border edges should deviate the origi
 
 ----
 
-.. _class_NavigationMesh_property_edge/max_length:
+.. _class_NavigationMesh_property_edge_max_length:
 
-- :ref:`float<class_float>` **edge/max_length**
+- :ref:`float<class_float>` **edge_max_length**
 
 +-----------+----------------------------+
 | *Default* | ``12.0``                   |
@@ -327,29 +327,13 @@ The maximum distance a simplfied contour's border edges should deviate the origi
 
 The maximum allowed length for contour edges along the border of the mesh.
 
-\ **Note:** While baking, this value will be rounded up to the nearest multiple of :ref:`cell/size<class_NavigationMesh_property_cell/size>`.
+\ **Note:** While baking, this value will be rounded up to the nearest multiple of :ref:`cell_size<class_NavigationMesh_property_cell_size>`.
 
 ----
 
-.. _class_NavigationMesh_property_filter/filter_walkable_low_height_spans:
+.. _class_NavigationMesh_property_filter_ledge_spans:
 
-- :ref:`bool<class_bool>` **filter/filter_walkable_low_height_spans**
-
-+-----------+---------------------------------------------+
-| *Default* | ``false``                                   |
-+-----------+---------------------------------------------+
-| *Setter*  | set_filter_walkable_low_height_spans(value) |
-+-----------+---------------------------------------------+
-| *Getter*  | get_filter_walkable_low_height_spans()      |
-+-----------+---------------------------------------------+
-
-If ``true``, marks walkable spans as not walkable if the clearance above the span is less than :ref:`agent/height<class_NavigationMesh_property_agent/height>`.
-
-----
-
-.. _class_NavigationMesh_property_filter/ledge_spans:
-
-- :ref:`bool<class_bool>` **filter/ledge_spans**
+- :ref:`bool<class_bool>` **filter_ledge_spans**
 
 +-----------+-------------------------------+
 | *Default* | ``false``                     |
@@ -363,9 +347,9 @@ If ``true``, marks spans that are ledges as non-walkable.
 
 ----
 
-.. _class_NavigationMesh_property_filter/low_hanging_obstacles:
+.. _class_NavigationMesh_property_filter_low_hanging_obstacles:
 
-- :ref:`bool<class_bool>` **filter/low_hanging_obstacles**
+- :ref:`bool<class_bool>` **filter_low_hanging_obstacles**
 
 +-----------+-----------------------------------------+
 | *Default* | ``false``                               |
@@ -375,29 +359,47 @@ If ``true``, marks spans that are ledges as non-walkable.
 | *Getter*  | get_filter_low_hanging_obstacles()      |
 +-----------+-----------------------------------------+
 
-If ``true``, marks non-walkable spans as walkable if their maximum is within :ref:`agent/max_climb<class_NavigationMesh_property_agent/max_climb>` of a walkable neighbor.
+If ``true``, marks non-walkable spans as walkable if their maximum is within :ref:`agent_max_climb<class_NavigationMesh_property_agent_max_climb>` of a walkable neighbor.
+
+----
+
+.. _class_NavigationMesh_property_filter_walkable_low_height_spans:
+
+- :ref:`bool<class_bool>` **filter_walkable_low_height_spans**
+
++-----------+---------------------------------------------+
+| *Default* | ``false``                                   |
++-----------+---------------------------------------------+
+| *Setter*  | set_filter_walkable_low_height_spans(value) |
++-----------+---------------------------------------------+
+| *Getter*  | get_filter_walkable_low_height_spans()      |
++-----------+---------------------------------------------+
+
+If ``true``, marks walkable spans as not walkable if the clearance above the span is less than :ref:`agent_height<class_NavigationMesh_property_agent_height>`.
 
 ----
 
-.. _class_NavigationMesh_property_geometry/collision_mask:
+.. _class_NavigationMesh_property_geometry_collision_mask:
 
-- :ref:`int<class_int>` **geometry/collision_mask**
+- :ref:`int<class_int>` **geometry_collision_mask**
 
-+----------+---------------------------+
-| *Setter* | set_collision_mask(value) |
-+----------+---------------------------+
-| *Getter* | get_collision_mask()      |
-+----------+---------------------------+
++-----------+---------------------------+
+| *Default* | ``4294967295``            |
++-----------+---------------------------+
+| *Setter*  | set_collision_mask(value) |
++-----------+---------------------------+
+| *Getter*  | get_collision_mask()      |
++-----------+---------------------------+
 
 The physics layers to scan for static colliders.
 
-Only used when :ref:`geometry/parsed_geometry_type<class_NavigationMesh_property_geometry/parsed_geometry_type>` is :ref:`PARSED_GEOMETRY_STATIC_COLLIDERS<class_NavigationMesh_constant_PARSED_GEOMETRY_STATIC_COLLIDERS>` or :ref:`PARSED_GEOMETRY_BOTH<class_NavigationMesh_constant_PARSED_GEOMETRY_BOTH>`.
+Only used when :ref:`geometry_parsed_geometry_type<class_NavigationMesh_property_geometry_parsed_geometry_type>` is :ref:`PARSED_GEOMETRY_STATIC_COLLIDERS<class_NavigationMesh_constant_PARSED_GEOMETRY_STATIC_COLLIDERS>` or :ref:`PARSED_GEOMETRY_BOTH<class_NavigationMesh_constant_PARSED_GEOMETRY_BOTH>`.
 
 ----
 
-.. _class_NavigationMesh_property_geometry/parsed_geometry_type:
+.. _class_NavigationMesh_property_geometry_parsed_geometry_type:
 
-- :ref:`ParsedGeometryType<enum_NavigationMesh_ParsedGeometryType>` **geometry/parsed_geometry_type**
+- :ref:`ParsedGeometryType<enum_NavigationMesh_ParsedGeometryType>` **geometry_parsed_geometry_type**
 
 +-----------+---------------------------------+
 | *Default* | ``0``                           |
@@ -411,9 +413,9 @@ Determines which type of nodes will be parsed as geometry. See :ref:`ParsedGeome
 
 ----
 
-.. _class_NavigationMesh_property_geometry/source_geometry_mode:
+.. _class_NavigationMesh_property_geometry_source_geometry_mode:
 
-- :ref:`SourceGeometryMode<enum_NavigationMesh_SourceGeometryMode>` **geometry/source_geometry_mode**
+- :ref:`SourceGeometryMode<enum_NavigationMesh_SourceGeometryMode>` **geometry_source_geometry_mode**
 
 +-----------+---------------------------------+
 | *Default* | ``0``                           |
@@ -427,25 +429,27 @@ The source of the geometry used when baking. See :ref:`SourceGeometryMode<enum_N
 
 ----
 
-.. _class_NavigationMesh_property_geometry/source_group_name:
+.. _class_NavigationMesh_property_geometry_source_group_name:
 
-- :ref:`String<class_String>` **geometry/source_group_name**
+- :ref:`String<class_String>` **geometry_source_group_name**
 
-+----------+------------------------------+
-| *Setter* | set_source_group_name(value) |
-+----------+------------------------------+
-| *Getter* | get_source_group_name()      |
-+----------+------------------------------+
++-----------+------------------------------+
+| *Default* | ``"navmesh"``                |
++-----------+------------------------------+
+| *Setter*  | set_source_group_name(value) |
++-----------+------------------------------+
+| *Getter*  | get_source_group_name()      |
++-----------+------------------------------+
 
 The name of the group to scan for geometry.
 
-Only used when :ref:`geometry/source_geometry_mode<class_NavigationMesh_property_geometry/source_geometry_mode>` is :ref:`SOURCE_GEOMETRY_GROUPS_WITH_CHILDREN<class_NavigationMesh_constant_SOURCE_GEOMETRY_GROUPS_WITH_CHILDREN>` or :ref:`SOURCE_GEOMETRY_GROUPS_EXPLICIT<class_NavigationMesh_constant_SOURCE_GEOMETRY_GROUPS_EXPLICIT>`.
+Only used when :ref:`geometry_source_geometry_mode<class_NavigationMesh_property_geometry_source_geometry_mode>` is :ref:`SOURCE_GEOMETRY_GROUPS_WITH_CHILDREN<class_NavigationMesh_constant_SOURCE_GEOMETRY_GROUPS_WITH_CHILDREN>` or :ref:`SOURCE_GEOMETRY_GROUPS_EXPLICIT<class_NavigationMesh_constant_SOURCE_GEOMETRY_GROUPS_EXPLICIT>`.
 
 ----
 
-.. _class_NavigationMesh_property_polygon/verts_per_poly:
+.. _class_NavigationMesh_property_polygon_verts_per_poly:
 
-- :ref:`float<class_float>` **polygon/verts_per_poly**
+- :ref:`float<class_float>` **polygon_verts_per_poly**
 
 +-----------+---------------------------+
 | *Default* | ``6.0``                   |
@@ -459,9 +463,9 @@ The maximum number of vertices allowed for polygons generated during the contour
 
 ----
 
-.. _class_NavigationMesh_property_region/merge_size:
+.. _class_NavigationMesh_property_region_merge_size:
 
-- :ref:`float<class_float>` **region/merge_size**
+- :ref:`float<class_float>` **region_merge_size**
 
 +-----------+------------------------------+
 | *Default* | ``20.0``                     |
@@ -477,9 +481,9 @@ Any regions with a size smaller than this will be merged with larger regions if
 
 ----
 
-.. _class_NavigationMesh_property_region/min_size:
+.. _class_NavigationMesh_property_region_min_size:
 
-- :ref:`float<class_float>` **region/min_size**
+- :ref:`float<class_float>` **region_min_size**
 
 +-----------+----------------------------+
 | *Default* | ``2.0``                    |
@@ -495,9 +499,9 @@ The minimum size of a region for it to be created.
 
 ----
 
-.. _class_NavigationMesh_property_sample_partition_type/sample_partition_type:
+.. _class_NavigationMesh_property_sample_partition_type:
 
-- :ref:`SamplePartitionType<enum_NavigationMesh_SamplePartitionType>` **sample_partition_type/sample_partition_type**
+- :ref:`SamplePartitionType<enum_NavigationMesh_SamplePartitionType>` **sample_partition_type**
 
 +-----------+----------------------------------+
 | *Default* | ``0``                            |
@@ -540,7 +544,7 @@ Initializes the navigation mesh by setting the vertices and indices according to
 
 - :ref:`bool<class_bool>` **get_collision_mask_bit** **(** :ref:`int<class_int>` bit **)** |const|
 
-Returns whether the specified ``bit`` of the :ref:`geometry/collision_mask<class_NavigationMesh_property_geometry/collision_mask>` is set.
+Returns whether the specified ``bit`` of the :ref:`geometry_collision_mask<class_NavigationMesh_property_geometry_collision_mask>` is set.
 
 ----
 
@@ -572,9 +576,9 @@ Returns a :ref:`PoolVector3Array<class_PoolVector3Array>` containing all the ver
 
 - void **set_collision_mask_bit** **(** :ref:`int<class_int>` bit, :ref:`bool<class_bool>` value **)**
 
-If ``value`` is ``true``, sets the specified ``bit`` in the :ref:`geometry/collision_mask<class_NavigationMesh_property_geometry/collision_mask>`.
+If ``value`` is ``true``, sets the specified ``bit`` in the :ref:`geometry_collision_mask<class_NavigationMesh_property_geometry_collision_mask>`.
 
-If ``value`` is ``false``, clears the specified ``bit`` in the :ref:`geometry/collision_mask<class_NavigationMesh_property_geometry/collision_mask>`.
+If ``value`` is ``false``, clears the specified ``bit`` in the :ref:`geometry_collision_mask<class_NavigationMesh_property_geometry_collision_mask>`.
 
 ----
 

+ 1 - 1
classes/class_navigationmeshgenerator.rst

@@ -40,7 +40,7 @@ Method Descriptions
 
 - void **bake** **(** :ref:`NavigationMesh<class_NavigationMesh>` nav_mesh, :ref:`Node<class_Node>` root_node **)**
 
-Bakes navigation data to the provided ``nav_mesh`` by parsing child nodes under the provided ``root_node`` or a specific group of nodes for potential source geometry. The parse behavior can be controlled with the :ref:`NavigationMesh.geometry/parsed_geometry_type<class_NavigationMesh_property_geometry/parsed_geometry_type>` and :ref:`NavigationMesh.geometry/source_geometry_mode<class_NavigationMesh_property_geometry/source_geometry_mode>` properties on the :ref:`NavigationMesh<class_NavigationMesh>` resource.
+Bakes navigation data to the provided ``nav_mesh`` by parsing child nodes under the provided ``root_node`` or a specific group of nodes for potential source geometry. The parse behavior can be controlled with the :ref:`NavigationMesh.geometry_parsed_geometry_type<class_NavigationMesh_property_geometry_parsed_geometry_type>` and :ref:`NavigationMesh.geometry_source_geometry_mode<class_NavigationMesh_property_geometry_source_geometry_mode>` properties on the :ref:`NavigationMesh<class_NavigationMesh>` resource.
 
 ----
 

+ 72 - 6
classes/class_navigationmeshinstance.rst

@@ -16,16 +16,34 @@ An instance of a :ref:`NavigationMesh<class_NavigationMesh>`.
 Description
 -----------
 
-An instance of a :ref:`NavigationMesh<class_NavigationMesh>`. It tells the :ref:`Navigation<class_Navigation>` node what can be navigated and what cannot, based on the :ref:`NavigationMesh<class_NavigationMesh>` resource. This should be a child of a :ref:`Navigation<class_Navigation>` node.
+An instance of a :ref:`NavigationMesh<class_NavigationMesh>`. It tells the :ref:`Navigation<class_Navigation>` node what can be navigated and what cannot, based on the :ref:`NavigationMesh<class_NavigationMesh>` resource.
+
+By default this node will register to the default :ref:`World<class_World>` navigation map. If this node is a child of a :ref:`Navigation<class_Navigation>` node it will register to the navigation map of the navigation node.
+
+Two regions can be connected to each other if they share a similar edge. You can set the minimum distance between two vertices required to connect two edges by using :ref:`NavigationServer.map_set_edge_connection_margin<class_NavigationServer_method_map_set_edge_connection_margin>`.
+
+\ **Note:** Overlapping two regions' navmeshes is not enough for connecting two regions. They must share a similar edge.
+
+The cost of entering this region from another region can be controlled with the :ref:`enter_cost<class_NavigationMeshInstance_property_enter_cost>` value.
+
+\ **Note**: This value is not added to the path cost when the start position is already inside this region.
+
+The cost of traveling distances inside this region can be controlled with the :ref:`travel_cost<class_NavigationMeshInstance_property_travel_cost>` multiplier.
 
 Properties
 ----------
 
-+---------------------------------------------+---------------------------------------------------------------+----------+
-| :ref:`bool<class_bool>`                     | :ref:`enabled<class_NavigationMeshInstance_property_enabled>` | ``true`` |
-+---------------------------------------------+---------------------------------------------------------------+----------+
-| :ref:`NavigationMesh<class_NavigationMesh>` | :ref:`navmesh<class_NavigationMeshInstance_property_navmesh>` |          |
-+---------------------------------------------+---------------------------------------------------------------+----------+
++---------------------------------------------+-----------------------------------------------------------------------------------+----------+
+| :ref:`bool<class_bool>`                     | :ref:`enabled<class_NavigationMeshInstance_property_enabled>`                     | ``true`` |
++---------------------------------------------+-----------------------------------------------------------------------------------+----------+
+| :ref:`float<class_float>`                   | :ref:`enter_cost<class_NavigationMeshInstance_property_enter_cost>`               | ``0.0``  |
++---------------------------------------------+-----------------------------------------------------------------------------------+----------+
+| :ref:`int<class_int>`                       | :ref:`navigation_layers<class_NavigationMeshInstance_property_navigation_layers>` | ``1``    |
++---------------------------------------------+-----------------------------------------------------------------------------------+----------+
+| :ref:`NavigationMesh<class_NavigationMesh>` | :ref:`navmesh<class_NavigationMeshInstance_property_navmesh>`                     |          |
++---------------------------------------------+-----------------------------------------------------------------------------------+----------+
+| :ref:`float<class_float>`                   | :ref:`travel_cost<class_NavigationMeshInstance_property_travel_cost>`             | ``1.0``  |
++---------------------------------------------+-----------------------------------------------------------------------------------+----------+
 
 Methods
 -------
@@ -72,6 +90,38 @@ Determines if the ``NavigationMeshInstance`` is enabled or disabled.
 
 ----
 
+.. _class_NavigationMeshInstance_property_enter_cost:
+
+- :ref:`float<class_float>` **enter_cost**
+
++-----------+-----------------------+
+| *Default* | ``0.0``               |
++-----------+-----------------------+
+| *Setter*  | set_enter_cost(value) |
++-----------+-----------------------+
+| *Getter*  | get_enter_cost()      |
++-----------+-----------------------+
+
+When pathfinding enters this region's navmesh from another regions navmesh the ``enter_cost`` value is added to the path distance for determining the shortest path.
+
+----
+
+.. _class_NavigationMeshInstance_property_navigation_layers:
+
+- :ref:`int<class_int>` **navigation_layers**
+
++-----------+------------------------------+
+| *Default* | ``1``                        |
++-----------+------------------------------+
+| *Setter*  | set_navigation_layers(value) |
++-----------+------------------------------+
+| *Getter*  | get_navigation_layers()      |
++-----------+------------------------------+
+
+A bitfield determining all navigation map layers the :ref:`NavigationMesh<class_NavigationMesh>` belongs to. On path requests with :ref:`NavigationServer.map_get_path<class_NavigationServer_method_map_get_path>` navmeshes without matching layers will be ignored and the navigation map will only proximity merge different navmeshes with matching layers.
+
+----
+
 .. _class_NavigationMeshInstance_property_navmesh:
 
 - :ref:`NavigationMesh<class_NavigationMesh>` **navmesh**
@@ -84,6 +134,22 @@ Determines if the ``NavigationMeshInstance`` is enabled or disabled.
 
 The :ref:`NavigationMesh<class_NavigationMesh>` resource to use.
 
+----
+
+.. _class_NavigationMeshInstance_property_travel_cost:
+
+- :ref:`float<class_float>` **travel_cost**
+
++-----------+------------------------+
+| *Default* | ``1.0``                |
++-----------+------------------------+
+| *Setter*  | set_travel_cost(value) |
++-----------+------------------------+
+| *Getter*  | get_travel_cost()      |
++-----------+------------------------+
+
+When pathfinding moves inside this region's navmesh the traveled distances are multiplied with ``travel_cost`` for determining the shortest path.
+
 Method Descriptions
 -------------------
 

+ 2 - 0
classes/class_navigationobstacle.rst

@@ -18,6 +18,8 @@ Description
 
 3D obstacle used in navigation for collision avoidance. The obstacle needs navigation data to work correctly. This can be done by having the obstacle as a child of a :ref:`Navigation<class_Navigation>` node, or using :ref:`set_navigation<class_NavigationObstacle_method_set_navigation>`. ``NavigationObstacle`` is physics safe.
 
+\ **Note:** Obstacles are intended as a last resort option for constantly moving objects that cannot be (re)baked to a navigation mesh efficiently.
+
 Properties
 ----------
 

+ 2 - 0
classes/class_navigationobstacle2d.rst

@@ -18,6 +18,8 @@ Description
 
 2D obstacle used in navigation for collision avoidance. The obstacle needs navigation data to work correctly. This can be done by having the obstacle as a child of a :ref:`Navigation2D<class_Navigation2D>` node, or using :ref:`set_navigation<class_NavigationObstacle2D_method_set_navigation>`. ``NavigationObstacle2D`` is physics safe.
 
+\ **Note:** Obstacles are intended as a last resort option for constantly moving objects that cannot be (re)baked to a navigation mesh efficiently.
+
 Properties
 ----------
 

+ 10 - 0
classes/class_navigationpolygon.rst

@@ -58,6 +58,8 @@ Methods
 +-------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
 | void                                            | :ref:`clear_polygons<class_NavigationPolygon_method_clear_polygons>` **(** **)**                                                                                                  |
 +-------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`NavigationMesh<class_NavigationMesh>`     | :ref:`get_mesh<class_NavigationPolygon_method_get_mesh>` **(** **)**                                                                                                              |
++-------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
 | :ref:`PoolVector2Array<class_PoolVector2Array>` | :ref:`get_outline<class_NavigationPolygon_method_get_outline>` **(** :ref:`int<class_int>` idx **)** |const|                                                                      |
 +-------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
 | :ref:`int<class_int>`                           | :ref:`get_outline_count<class_NavigationPolygon_method_get_outline_count>` **(** **)** |const|                                                                                    |
@@ -120,6 +122,14 @@ Clears the array of polygons, but it doesn't clear the array of outlines and ver
 
 ----
 
+.. _class_NavigationPolygon_method_get_mesh:
+
+- :ref:`NavigationMesh<class_NavigationMesh>` **get_mesh** **(** **)**
+
+Returns the :ref:`NavigationMesh<class_NavigationMesh>` resulting from this navigation polygon. This navmesh can be used to update the navmesh of a region with the :ref:`NavigationServer.region_set_navmesh<class_NavigationServer_method_region_set_navmesh>` API directly (as 2D uses the 3D server behind the scene).
+
+----
+
 .. _class_NavigationPolygon_method_get_outline:
 
 - :ref:`PoolVector2Array<class_PoolVector2Array>` **get_outline** **(** :ref:`int<class_int>` idx **)** |const|

+ 80 - 5
classes/class_navigationpolygoninstance.rst

@@ -11,16 +11,39 @@ NavigationPolygonInstance
 
 **Inherits:** :ref:`Node2D<class_Node2D>` **<** :ref:`CanvasItem<class_CanvasItem>` **<** :ref:`Node<class_Node>` **<** :ref:`Object<class_Object>`
 
+A region of the 2D navigation map.
 
+Description
+-----------
+
+A region of the navigation map. It tells the :ref:`Navigation2DServer<class_Navigation2DServer>` what can be navigated and what cannot, based on its :ref:`NavigationPolygon<class_NavigationPolygon>` resource.
+
+By default this node will register to the default :ref:`World2D<class_World2D>` navigation map. If this node is a child of a :ref:`Navigation2D<class_Navigation2D>` node it will register to the navigation map of the navigation node.
+
+Two regions can be connected to each other if they share a similar edge. You can set the minimum distance between two vertices required to connect two edges by using :ref:`Navigation2DServer.map_set_edge_connection_margin<class_Navigation2DServer_method_map_set_edge_connection_margin>`.
+
+\ **Note:** Overlapping two regions' polygons is not enough for connecting two regions. They must share a similar edge.
+
+The pathfinding cost of entering this region from another region can be controlled with the :ref:`enter_cost<class_NavigationPolygonInstance_property_enter_cost>` value.
+
+\ **Note**: This value is not added to the path cost when the start position is already inside this region.
+
+The pathfinding cost of traveling distances inside this region can be controlled with the :ref:`travel_cost<class_NavigationPolygonInstance_property_travel_cost>` multiplier.
 
 Properties
 ----------
 
-+---------------------------------------------------+------------------------------------------------------------------+----------+
-| :ref:`bool<class_bool>`                           | :ref:`enabled<class_NavigationPolygonInstance_property_enabled>` | ``true`` |
-+---------------------------------------------------+------------------------------------------------------------------+----------+
-| :ref:`NavigationPolygon<class_NavigationPolygon>` | :ref:`navpoly<class_NavigationPolygonInstance_property_navpoly>` |          |
-+---------------------------------------------------+------------------------------------------------------------------+----------+
++---------------------------------------------------+--------------------------------------------------------------------------------------+----------+
+| :ref:`bool<class_bool>`                           | :ref:`enabled<class_NavigationPolygonInstance_property_enabled>`                     | ``true`` |
++---------------------------------------------------+--------------------------------------------------------------------------------------+----------+
+| :ref:`float<class_float>`                         | :ref:`enter_cost<class_NavigationPolygonInstance_property_enter_cost>`               | ``0.0``  |
++---------------------------------------------------+--------------------------------------------------------------------------------------+----------+
+| :ref:`int<class_int>`                             | :ref:`navigation_layers<class_NavigationPolygonInstance_property_navigation_layers>` | ``1``    |
++---------------------------------------------------+--------------------------------------------------------------------------------------+----------+
+| :ref:`NavigationPolygon<class_NavigationPolygon>` | :ref:`navpoly<class_NavigationPolygonInstance_property_navpoly>`                     |          |
++---------------------------------------------------+--------------------------------------------------------------------------------------+----------+
+| :ref:`float<class_float>`                         | :ref:`travel_cost<class_NavigationPolygonInstance_property_travel_cost>`             | ``1.0``  |
++---------------------------------------------------+--------------------------------------------------------------------------------------+----------+
 
 Methods
 -------
@@ -44,6 +67,40 @@ Property Descriptions
 | *Getter*  | is_enabled()       |
 +-----------+--------------------+
 
+Determines if the ``NavigationPolygonInstance`` is enabled or disabled.
+
+----
+
+.. _class_NavigationPolygonInstance_property_enter_cost:
+
+- :ref:`float<class_float>` **enter_cost**
+
++-----------+-----------------------+
+| *Default* | ``0.0``               |
++-----------+-----------------------+
+| *Setter*  | set_enter_cost(value) |
++-----------+-----------------------+
+| *Getter*  | get_enter_cost()      |
++-----------+-----------------------+
+
+When pathfinding enters this region's navmesh from another regions navmesh the ``enter_cost`` value is added to the path distance for determining the shortest path.
+
+----
+
+.. _class_NavigationPolygonInstance_property_navigation_layers:
+
+- :ref:`int<class_int>` **navigation_layers**
+
++-----------+------------------------------+
+| *Default* | ``1``                        |
++-----------+------------------------------+
+| *Setter*  | set_navigation_layers(value) |
++-----------+------------------------------+
+| *Getter*  | get_navigation_layers()      |
++-----------+------------------------------+
+
+A bitfield determining all navigation map layers the :ref:`NavigationPolygon<class_NavigationPolygon>` belongs to. On path requests with :ref:`Navigation2DServer.map_get_path<class_Navigation2DServer_method_map_get_path>` navmeshes without matching layers will be ignored and the navigation map will only proximity merge different navmeshes with matching layers.
+
 ----
 
 .. _class_NavigationPolygonInstance_property_navpoly:
@@ -56,6 +113,24 @@ Property Descriptions
 | *Getter* | get_navigation_polygon()      |
 +----------+-------------------------------+
 
+The :ref:`NavigationPolygon<class_NavigationPolygon>` resource to use.
+
+----
+
+.. _class_NavigationPolygonInstance_property_travel_cost:
+
+- :ref:`float<class_float>` **travel_cost**
+
++-----------+------------------------+
+| *Default* | ``1.0``                |
++-----------+------------------------+
+| *Setter*  | set_travel_cost(value) |
++-----------+------------------------+
+| *Getter*  | get_travel_cost()      |
++-----------+------------------------+
+
+When pathfinding moves inside this region's navmesh the traveled distances are multiplied with ``travel_cost`` for determining the shortest path.
+
 Method Descriptions
 -------------------
 

+ 185 - 84
classes/class_navigationserver.rst

@@ -38,87 +38,114 @@ Tutorials
 Methods
 -------
 
-+-------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`RID<class_RID>`                           | :ref:`agent_create<class_NavigationServer_method_agent_create>` **(** **)** |const|                                                                                                                                                                                        |
-+-------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`RID<class_RID>`                           | :ref:`agent_get_map<class_NavigationServer_method_agent_get_map>` **(** :ref:`RID<class_RID>` agent **)** |const|                                                                                                                                                          |
-+-------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`bool<class_bool>`                         | :ref:`agent_is_map_changed<class_NavigationServer_method_agent_is_map_changed>` **(** :ref:`RID<class_RID>` agent **)** |const|                                                                                                                                            |
-+-------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| void                                            | :ref:`agent_set_callback<class_NavigationServer_method_agent_set_callback>` **(** :ref:`RID<class_RID>` agent, :ref:`Object<class_Object>` receiver, :ref:`String<class_String>` method, :ref:`Variant<class_Variant>` userdata=null **)** |const|                         |
-+-------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| void                                            | :ref:`agent_set_map<class_NavigationServer_method_agent_set_map>` **(** :ref:`RID<class_RID>` agent, :ref:`RID<class_RID>` map **)** |const|                                                                                                                               |
-+-------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| void                                            | :ref:`agent_set_max_neighbors<class_NavigationServer_method_agent_set_max_neighbors>` **(** :ref:`RID<class_RID>` agent, :ref:`int<class_int>` count **)** |const|                                                                                                         |
-+-------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| void                                            | :ref:`agent_set_max_speed<class_NavigationServer_method_agent_set_max_speed>` **(** :ref:`RID<class_RID>` agent, :ref:`float<class_float>` max_speed **)** |const|                                                                                                         |
-+-------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| void                                            | :ref:`agent_set_neighbor_dist<class_NavigationServer_method_agent_set_neighbor_dist>` **(** :ref:`RID<class_RID>` agent, :ref:`float<class_float>` dist **)** |const|                                                                                                      |
-+-------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| void                                            | :ref:`agent_set_position<class_NavigationServer_method_agent_set_position>` **(** :ref:`RID<class_RID>` agent, :ref:`Vector3<class_Vector3>` position **)** |const|                                                                                                        |
-+-------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| void                                            | :ref:`agent_set_radius<class_NavigationServer_method_agent_set_radius>` **(** :ref:`RID<class_RID>` agent, :ref:`float<class_float>` radius **)** |const|                                                                                                                  |
-+-------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| void                                            | :ref:`agent_set_target_velocity<class_NavigationServer_method_agent_set_target_velocity>` **(** :ref:`RID<class_RID>` agent, :ref:`Vector3<class_Vector3>` target_velocity **)** |const|                                                                                   |
-+-------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| void                                            | :ref:`agent_set_time_horizon<class_NavigationServer_method_agent_set_time_horizon>` **(** :ref:`RID<class_RID>` agent, :ref:`float<class_float>` time **)** |const|                                                                                                        |
-+-------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| void                                            | :ref:`agent_set_velocity<class_NavigationServer_method_agent_set_velocity>` **(** :ref:`RID<class_RID>` agent, :ref:`Vector3<class_Vector3>` velocity **)** |const|                                                                                                        |
-+-------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| void                                            | :ref:`free_rid<class_NavigationServer_method_free_rid>` **(** :ref:`RID<class_RID>` rid **)** |const|                                                                                                                                                                      |
-+-------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`RID<class_RID>`                           | :ref:`map_create<class_NavigationServer_method_map_create>` **(** **)** |const|                                                                                                                                                                                            |
-+-------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`Array<class_Array>`                       | :ref:`map_get_agents<class_NavigationServer_method_map_get_agents>` **(** :ref:`RID<class_RID>` map **)** |const|                                                                                                                                                          |
-+-------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`float<class_float>`                       | :ref:`map_get_cell_height<class_NavigationServer_method_map_get_cell_height>` **(** :ref:`RID<class_RID>` map **)** |const|                                                                                                                                                |
-+-------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`float<class_float>`                       | :ref:`map_get_cell_size<class_NavigationServer_method_map_get_cell_size>` **(** :ref:`RID<class_RID>` map **)** |const|                                                                                                                                                    |
-+-------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`Vector3<class_Vector3>`                   | :ref:`map_get_closest_point<class_NavigationServer_method_map_get_closest_point>` **(** :ref:`RID<class_RID>` map, :ref:`Vector3<class_Vector3>` to_point **)** |const|                                                                                                    |
-+-------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`Vector3<class_Vector3>`                   | :ref:`map_get_closest_point_normal<class_NavigationServer_method_map_get_closest_point_normal>` **(** :ref:`RID<class_RID>` map, :ref:`Vector3<class_Vector3>` to_point **)** |const|                                                                                      |
-+-------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`RID<class_RID>`                           | :ref:`map_get_closest_point_owner<class_NavigationServer_method_map_get_closest_point_owner>` **(** :ref:`RID<class_RID>` map, :ref:`Vector3<class_Vector3>` to_point **)** |const|                                                                                        |
-+-------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`Vector3<class_Vector3>`                   | :ref:`map_get_closest_point_to_segment<class_NavigationServer_method_map_get_closest_point_to_segment>` **(** :ref:`RID<class_RID>` map, :ref:`Vector3<class_Vector3>` start, :ref:`Vector3<class_Vector3>` end, :ref:`bool<class_bool>` use_collision=false **)** |const| |
-+-------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`float<class_float>`                       | :ref:`map_get_edge_connection_margin<class_NavigationServer_method_map_get_edge_connection_margin>` **(** :ref:`RID<class_RID>` map **)** |const|                                                                                                                          |
-+-------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`PoolVector3Array<class_PoolVector3Array>` | :ref:`map_get_path<class_NavigationServer_method_map_get_path>` **(** :ref:`RID<class_RID>` map, :ref:`Vector3<class_Vector3>` origin, :ref:`Vector3<class_Vector3>` destination, :ref:`bool<class_bool>` optimize **)** |const|                                           |
-+-------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`Array<class_Array>`                       | :ref:`map_get_regions<class_NavigationServer_method_map_get_regions>` **(** :ref:`RID<class_RID>` map **)** |const|                                                                                                                                                        |
-+-------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`Vector3<class_Vector3>`                   | :ref:`map_get_up<class_NavigationServer_method_map_get_up>` **(** :ref:`RID<class_RID>` map **)** |const|                                                                                                                                                                  |
-+-------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`bool<class_bool>`                         | :ref:`map_is_active<class_NavigationServer_method_map_is_active>` **(** :ref:`RID<class_RID>` nap **)** |const|                                                                                                                                                            |
-+-------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| void                                            | :ref:`map_set_active<class_NavigationServer_method_map_set_active>` **(** :ref:`RID<class_RID>` map, :ref:`bool<class_bool>` active **)** |const|                                                                                                                          |
-+-------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| void                                            | :ref:`map_set_cell_height<class_NavigationServer_method_map_set_cell_height>` **(** :ref:`RID<class_RID>` map, :ref:`float<class_float>` cell_height **)** |const|                                                                                                         |
-+-------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| void                                            | :ref:`map_set_cell_size<class_NavigationServer_method_map_set_cell_size>` **(** :ref:`RID<class_RID>` map, :ref:`float<class_float>` cell_size **)** |const|                                                                                                               |
-+-------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| void                                            | :ref:`map_set_edge_connection_margin<class_NavigationServer_method_map_set_edge_connection_margin>` **(** :ref:`RID<class_RID>` map, :ref:`float<class_float>` margin **)** |const|                                                                                        |
-+-------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| void                                            | :ref:`map_set_up<class_NavigationServer_method_map_set_up>` **(** :ref:`RID<class_RID>` map, :ref:`Vector3<class_Vector3>` up **)** |const|                                                                                                                                |
-+-------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| void                                            | :ref:`process<class_NavigationServer_method_process>` **(** :ref:`float<class_float>` delta_time **)**                                                                                                                                                                     |
-+-------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| void                                            | :ref:`region_bake_navmesh<class_NavigationServer_method_region_bake_navmesh>` **(** :ref:`NavigationMesh<class_NavigationMesh>` mesh, :ref:`Node<class_Node>` node **)** |const|                                                                                           |
-+-------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`RID<class_RID>`                           | :ref:`region_create<class_NavigationServer_method_region_create>` **(** **)** |const|                                                                                                                                                                                      |
-+-------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`RID<class_RID>`                           | :ref:`region_get_map<class_NavigationServer_method_region_get_map>` **(** :ref:`RID<class_RID>` region **)** |const|                                                                                                                                                       |
-+-------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| void                                            | :ref:`region_set_map<class_NavigationServer_method_region_set_map>` **(** :ref:`RID<class_RID>` region, :ref:`RID<class_RID>` map **)** |const|                                                                                                                            |
-+-------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| void                                            | :ref:`region_set_navmesh<class_NavigationServer_method_region_set_navmesh>` **(** :ref:`RID<class_RID>` region, :ref:`NavigationMesh<class_NavigationMesh>` nav_mesh **)** |const|                                                                                         |
-+-------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| void                                            | :ref:`region_set_transform<class_NavigationServer_method_region_set_transform>` **(** :ref:`RID<class_RID>` region, :ref:`Transform<class_Transform>` transform **)** |const|                                                                                              |
-+-------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| void                                            | :ref:`set_active<class_NavigationServer_method_set_active>` **(** :ref:`bool<class_bool>` active **)** |const|                                                                                                                                                             |
-+-------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
++-------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`RID<class_RID>`                           | :ref:`agent_create<class_NavigationServer_method_agent_create>` **(** **)** |const|                                                                                                                                                                                         |
++-------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`RID<class_RID>`                           | :ref:`agent_get_map<class_NavigationServer_method_agent_get_map>` **(** :ref:`RID<class_RID>` agent **)** |const|                                                                                                                                                           |
++-------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`bool<class_bool>`                         | :ref:`agent_is_map_changed<class_NavigationServer_method_agent_is_map_changed>` **(** :ref:`RID<class_RID>` agent **)** |const|                                                                                                                                             |
++-------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| void                                            | :ref:`agent_set_callback<class_NavigationServer_method_agent_set_callback>` **(** :ref:`RID<class_RID>` agent, :ref:`Object<class_Object>` receiver, :ref:`String<class_String>` method, :ref:`Variant<class_Variant>` userdata=null **)** |const|                          |
++-------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| void                                            | :ref:`agent_set_map<class_NavigationServer_method_agent_set_map>` **(** :ref:`RID<class_RID>` agent, :ref:`RID<class_RID>` map **)** |const|                                                                                                                                |
++-------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| void                                            | :ref:`agent_set_max_neighbors<class_NavigationServer_method_agent_set_max_neighbors>` **(** :ref:`RID<class_RID>` agent, :ref:`int<class_int>` count **)** |const|                                                                                                          |
++-------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| void                                            | :ref:`agent_set_max_speed<class_NavigationServer_method_agent_set_max_speed>` **(** :ref:`RID<class_RID>` agent, :ref:`float<class_float>` max_speed **)** |const|                                                                                                          |
++-------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| void                                            | :ref:`agent_set_neighbor_dist<class_NavigationServer_method_agent_set_neighbor_dist>` **(** :ref:`RID<class_RID>` agent, :ref:`float<class_float>` dist **)** |const|                                                                                                       |
++-------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| void                                            | :ref:`agent_set_position<class_NavigationServer_method_agent_set_position>` **(** :ref:`RID<class_RID>` agent, :ref:`Vector3<class_Vector3>` position **)** |const|                                                                                                         |
++-------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| void                                            | :ref:`agent_set_radius<class_NavigationServer_method_agent_set_radius>` **(** :ref:`RID<class_RID>` agent, :ref:`float<class_float>` radius **)** |const|                                                                                                                   |
++-------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| void                                            | :ref:`agent_set_target_velocity<class_NavigationServer_method_agent_set_target_velocity>` **(** :ref:`RID<class_RID>` agent, :ref:`Vector3<class_Vector3>` target_velocity **)** |const|                                                                                    |
++-------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| void                                            | :ref:`agent_set_time_horizon<class_NavigationServer_method_agent_set_time_horizon>` **(** :ref:`RID<class_RID>` agent, :ref:`float<class_float>` time **)** |const|                                                                                                         |
++-------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| void                                            | :ref:`agent_set_velocity<class_NavigationServer_method_agent_set_velocity>` **(** :ref:`RID<class_RID>` agent, :ref:`Vector3<class_Vector3>` velocity **)** |const|                                                                                                         |
++-------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| void                                            | :ref:`free_rid<class_NavigationServer_method_free_rid>` **(** :ref:`RID<class_RID>` rid **)** |const|                                                                                                                                                                       |
++-------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`RID<class_RID>`                           | :ref:`map_create<class_NavigationServer_method_map_create>` **(** **)** |const|                                                                                                                                                                                             |
++-------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`Array<class_Array>`                       | :ref:`map_get_agents<class_NavigationServer_method_map_get_agents>` **(** :ref:`RID<class_RID>` map **)** |const|                                                                                                                                                           |
++-------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`float<class_float>`                       | :ref:`map_get_cell_height<class_NavigationServer_method_map_get_cell_height>` **(** :ref:`RID<class_RID>` map **)** |const|                                                                                                                                                 |
++-------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`float<class_float>`                       | :ref:`map_get_cell_size<class_NavigationServer_method_map_get_cell_size>` **(** :ref:`RID<class_RID>` map **)** |const|                                                                                                                                                     |
++-------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`Vector3<class_Vector3>`                   | :ref:`map_get_closest_point<class_NavigationServer_method_map_get_closest_point>` **(** :ref:`RID<class_RID>` map, :ref:`Vector3<class_Vector3>` to_point **)** |const|                                                                                                     |
++-------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`Vector3<class_Vector3>`                   | :ref:`map_get_closest_point_normal<class_NavigationServer_method_map_get_closest_point_normal>` **(** :ref:`RID<class_RID>` map, :ref:`Vector3<class_Vector3>` to_point **)** |const|                                                                                       |
++-------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`RID<class_RID>`                           | :ref:`map_get_closest_point_owner<class_NavigationServer_method_map_get_closest_point_owner>` **(** :ref:`RID<class_RID>` map, :ref:`Vector3<class_Vector3>` to_point **)** |const|                                                                                         |
++-------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`Vector3<class_Vector3>`                   | :ref:`map_get_closest_point_to_segment<class_NavigationServer_method_map_get_closest_point_to_segment>` **(** :ref:`RID<class_RID>` map, :ref:`Vector3<class_Vector3>` start, :ref:`Vector3<class_Vector3>` end, :ref:`bool<class_bool>` use_collision=false **)** |const|  |
++-------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`float<class_float>`                       | :ref:`map_get_edge_connection_margin<class_NavigationServer_method_map_get_edge_connection_margin>` **(** :ref:`RID<class_RID>` map **)** |const|                                                                                                                           |
++-------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`PoolVector3Array<class_PoolVector3Array>` | :ref:`map_get_path<class_NavigationServer_method_map_get_path>` **(** :ref:`RID<class_RID>` map, :ref:`Vector3<class_Vector3>` origin, :ref:`Vector3<class_Vector3>` destination, :ref:`bool<class_bool>` optimize, :ref:`int<class_int>` navigation_layers=1 **)** |const| |
++-------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`Array<class_Array>`                       | :ref:`map_get_regions<class_NavigationServer_method_map_get_regions>` **(** :ref:`RID<class_RID>` map **)** |const|                                                                                                                                                         |
++-------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`Vector3<class_Vector3>`                   | :ref:`map_get_up<class_NavigationServer_method_map_get_up>` **(** :ref:`RID<class_RID>` map **)** |const|                                                                                                                                                                   |
++-------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`bool<class_bool>`                         | :ref:`map_is_active<class_NavigationServer_method_map_is_active>` **(** :ref:`RID<class_RID>` nap **)** |const|                                                                                                                                                             |
++-------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| void                                            | :ref:`map_set_active<class_NavigationServer_method_map_set_active>` **(** :ref:`RID<class_RID>` map, :ref:`bool<class_bool>` active **)** |const|                                                                                                                           |
++-------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| void                                            | :ref:`map_set_cell_height<class_NavigationServer_method_map_set_cell_height>` **(** :ref:`RID<class_RID>` map, :ref:`float<class_float>` cell_height **)** |const|                                                                                                          |
++-------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| void                                            | :ref:`map_set_cell_size<class_NavigationServer_method_map_set_cell_size>` **(** :ref:`RID<class_RID>` map, :ref:`float<class_float>` cell_size **)** |const|                                                                                                                |
++-------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| void                                            | :ref:`map_set_edge_connection_margin<class_NavigationServer_method_map_set_edge_connection_margin>` **(** :ref:`RID<class_RID>` map, :ref:`float<class_float>` margin **)** |const|                                                                                         |
++-------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| void                                            | :ref:`map_set_up<class_NavigationServer_method_map_set_up>` **(** :ref:`RID<class_RID>` map, :ref:`Vector3<class_Vector3>` up **)** |const|                                                                                                                                 |
++-------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| void                                            | :ref:`process<class_NavigationServer_method_process>` **(** :ref:`float<class_float>` delta_time **)**                                                                                                                                                                      |
++-------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| void                                            | :ref:`region_bake_navmesh<class_NavigationServer_method_region_bake_navmesh>` **(** :ref:`NavigationMesh<class_NavigationMesh>` mesh, :ref:`Node<class_Node>` node **)** |const|                                                                                            |
++-------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`RID<class_RID>`                           | :ref:`region_create<class_NavigationServer_method_region_create>` **(** **)** |const|                                                                                                                                                                                       |
++-------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`Vector3<class_Vector3>`                   | :ref:`region_get_connection_pathway_end<class_NavigationServer_method_region_get_connection_pathway_end>` **(** :ref:`RID<class_RID>` region, :ref:`int<class_int>` connection **)** |const|                                                                                |
++-------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`Vector3<class_Vector3>`                   | :ref:`region_get_connection_pathway_start<class_NavigationServer_method_region_get_connection_pathway_start>` **(** :ref:`RID<class_RID>` region, :ref:`int<class_int>` connection **)** |const|                                                                            |
++-------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`int<class_int>`                           | :ref:`region_get_connections_count<class_NavigationServer_method_region_get_connections_count>` **(** :ref:`RID<class_RID>` region **)** |const|                                                                                                                            |
++-------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`float<class_float>`                       | :ref:`region_get_enter_cost<class_NavigationServer_method_region_get_enter_cost>` **(** :ref:`RID<class_RID>` region **)** |const|                                                                                                                                          |
++-------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`RID<class_RID>`                           | :ref:`region_get_map<class_NavigationServer_method_region_get_map>` **(** :ref:`RID<class_RID>` region **)** |const|                                                                                                                                                        |
++-------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`int<class_int>`                           | :ref:`region_get_navigation_layers<class_NavigationServer_method_region_get_navigation_layers>` **(** :ref:`RID<class_RID>` region **)** |const|                                                                                                                            |
++-------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`float<class_float>`                       | :ref:`region_get_travel_cost<class_NavigationServer_method_region_get_travel_cost>` **(** :ref:`RID<class_RID>` region **)** |const|                                                                                                                                        |
++-------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| void                                            | :ref:`region_set_enter_cost<class_NavigationServer_method_region_set_enter_cost>` **(** :ref:`RID<class_RID>` region, :ref:`float<class_float>` enter_cost **)** |const|                                                                                                    |
++-------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| void                                            | :ref:`region_set_map<class_NavigationServer_method_region_set_map>` **(** :ref:`RID<class_RID>` region, :ref:`RID<class_RID>` map **)** |const|                                                                                                                             |
++-------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| void                                            | :ref:`region_set_navigation_layers<class_NavigationServer_method_region_set_navigation_layers>` **(** :ref:`RID<class_RID>` region, :ref:`int<class_int>` navigation_layers **)** |const|                                                                                   |
++-------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| void                                            | :ref:`region_set_navmesh<class_NavigationServer_method_region_set_navmesh>` **(** :ref:`RID<class_RID>` region, :ref:`NavigationMesh<class_NavigationMesh>` nav_mesh **)** |const|                                                                                          |
++-------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| void                                            | :ref:`region_set_transform<class_NavigationServer_method_region_set_transform>` **(** :ref:`RID<class_RID>` region, :ref:`Transform<class_Transform>` transform **)** |const|                                                                                               |
++-------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| void                                            | :ref:`region_set_travel_cost<class_NavigationServer_method_region_set_travel_cost>` **(** :ref:`RID<class_RID>` region, :ref:`float<class_float>` travel_cost **)** |const|                                                                                                 |
++-------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| void                                            | :ref:`set_active<class_NavigationServer_method_set_active>` **(** :ref:`bool<class_bool>` active **)** |const|                                                                                                                                                              |
++-------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+
+Signals
+-------
+
+.. _class_NavigationServer_signal_map_changed:
+
+- **map_changed** **(** :ref:`RID<class_RID>` map **)**
+
+Emitted when a navigation map is updated, when a region moves or is modified.
 
 Method Descriptions
 -------------------
@@ -151,7 +178,9 @@ Returns ``true`` if the map got changed the previous frame.
 
 - void **agent_set_callback** **(** :ref:`RID<class_RID>` agent, :ref:`Object<class_Object>` receiver, :ref:`String<class_String>` method, :ref:`Variant<class_Variant>` userdata=null **)** |const|
 
-Callback called at the end of the RVO process.
+Callback called at the end of the RVO process. If a callback is created manually and the agent is placed on a navigation map it will calculate avoidance for the agent and dispatch the calculated ``safe_velocity`` to the ``receiver`` object with a signal to the chosen ``method`` name.
+
+\ **Note:** Created callbacks are always processed independently of the SceneTree state as long as the agent is on a navigation map and not freed. To disable the dispatch of a callback from an agent use :ref:`agent_set_callback<class_NavigationServer_method_agent_set_callback>` again with a ``null`` object as the ``receiver``.
 
 ----
 
@@ -309,9 +338,9 @@ Returns the edge connection margin of the map. This distance is the minimum vert
 
 .. _class_NavigationServer_method_map_get_path:
 
-- :ref:`PoolVector3Array<class_PoolVector3Array>` **map_get_path** **(** :ref:`RID<class_RID>` map, :ref:`Vector3<class_Vector3>` origin, :ref:`Vector3<class_Vector3>` destination, :ref:`bool<class_bool>` optimize **)** |const|
+- :ref:`PoolVector3Array<class_PoolVector3Array>` **map_get_path** **(** :ref:`RID<class_RID>` map, :ref:`Vector3<class_Vector3>` origin, :ref:`Vector3<class_Vector3>` destination, :ref:`bool<class_bool>` optimize, :ref:`int<class_int>` navigation_layers=1 **)** |const|
 
-Returns the navigation path to reach the destination from the origin.
+Returns the navigation path to reach the destination from the origin. ``navigation_layers`` is a bitmask of all region layers that are allowed to be in the path.
 
 ----
 
@@ -407,6 +436,38 @@ Creates a new region.
 
 ----
 
+.. _class_NavigationServer_method_region_get_connection_pathway_end:
+
+- :ref:`Vector3<class_Vector3>` **region_get_connection_pathway_end** **(** :ref:`RID<class_RID>` region, :ref:`int<class_int>` connection **)** |const|
+
+Returns the ending point of a connection door. ``connection`` is an index between 0 and the return value of :ref:`region_get_connections_count<class_NavigationServer_method_region_get_connections_count>`.
+
+----
+
+.. _class_NavigationServer_method_region_get_connection_pathway_start:
+
+- :ref:`Vector3<class_Vector3>` **region_get_connection_pathway_start** **(** :ref:`RID<class_RID>` region, :ref:`int<class_int>` connection **)** |const|
+
+Returns the starting point of a connection door. ``connection`` is an index between 0 and the return value of :ref:`region_get_connections_count<class_NavigationServer_method_region_get_connections_count>`.
+
+----
+
+.. _class_NavigationServer_method_region_get_connections_count:
+
+- :ref:`int<class_int>` **region_get_connections_count** **(** :ref:`RID<class_RID>` region **)** |const|
+
+Returns how many connections this ``region`` has with other regions in the map.
+
+----
+
+.. _class_NavigationServer_method_region_get_enter_cost:
+
+- :ref:`float<class_float>` **region_get_enter_cost** **(** :ref:`RID<class_RID>` region **)** |const|
+
+Returns the ``enter_cost`` of this ``region``.
+
+----
+
 .. _class_NavigationServer_method_region_get_map:
 
 - :ref:`RID<class_RID>` **region_get_map** **(** :ref:`RID<class_RID>` region **)** |const|
@@ -415,6 +476,30 @@ Returns the navigation map :ref:`RID<class_RID>` the requested ``region`` is cur
 
 ----
 
+.. _class_NavigationServer_method_region_get_navigation_layers:
+
+- :ref:`int<class_int>` **region_get_navigation_layers** **(** :ref:`RID<class_RID>` region **)** |const|
+
+Returns the region's navigation layers.
+
+----
+
+.. _class_NavigationServer_method_region_get_travel_cost:
+
+- :ref:`float<class_float>` **region_get_travel_cost** **(** :ref:`RID<class_RID>` region **)** |const|
+
+Returns the ``travel_cost`` of this ``region``.
+
+----
+
+.. _class_NavigationServer_method_region_set_enter_cost:
+
+- void **region_set_enter_cost** **(** :ref:`RID<class_RID>` region, :ref:`float<class_float>` enter_cost **)** |const|
+
+Sets the ``enter_cost`` for this ``region``.
+
+----
+
 .. _class_NavigationServer_method_region_set_map:
 
 - void **region_set_map** **(** :ref:`RID<class_RID>` region, :ref:`RID<class_RID>` map **)** |const|
@@ -423,6 +508,14 @@ Sets the map for the region.
 
 ----
 
+.. _class_NavigationServer_method_region_set_navigation_layers:
+
+- void **region_set_navigation_layers** **(** :ref:`RID<class_RID>` region, :ref:`int<class_int>` navigation_layers **)** |const|
+
+Set the region's navigation layers. This allows selecting regions from a path request (when using :ref:`map_get_path<class_NavigationServer_method_map_get_path>`).
+
+----
+
 .. _class_NavigationServer_method_region_set_navmesh:
 
 - void **region_set_navmesh** **(** :ref:`RID<class_RID>` region, :ref:`NavigationMesh<class_NavigationMesh>` nav_mesh **)** |const|
@@ -439,6 +532,14 @@ Sets the global transformation for the region.
 
 ----
 
+.. _class_NavigationServer_method_region_set_travel_cost:
+
+- void **region_set_travel_cost** **(** :ref:`RID<class_RID>` region, :ref:`float<class_float>` travel_cost **)** |const|
+
+Sets the ``travel_cost`` for this ``region``.
+
+----
+
 .. _class_NavigationServer_method_set_active:
 
 - void **set_active** **(** :ref:`bool<class_bool>` active **)** |const|

+ 2 - 0
classes/class_node2d.rst

@@ -218,6 +218,8 @@ Rotation in degrees, relative to the node's parent.
 
 The node's scale. Unscaled value: ``(1, 1)``.
 
+\ **Note:** Negative X scales in 2D are not decomposable from the transformation matrix. Due to the way scale is represented with transformation matrices in Godot, negative scales on the X axis will be changed to negative scales on the Y axis and a rotation of 180 degrees when decomposed.
+
 ----
 
 .. _class_Node2D_property_transform:

+ 7 - 0
classes/class_os.rst

@@ -1970,8 +1970,15 @@ Kill (terminate) the process identified by the given process ID (``pid``), e.g.
 
 Moves the file or directory to the system's recycle bin. See also :ref:`Directory.remove<class_Directory_method_remove>`.
 
+The method takes only global paths, so you may need to use :ref:`ProjectSettings.globalize_path<class_ProjectSettings_method_globalize_path>`. Do not use it for files in ``res://`` as it will not work in exported project.
+
 \ **Note:** If the user has disabled the recycle bin on their system, the file will be permanently deleted instead.
 
+::
+
+    var file_to_remove = "user://slot1.sav"
+    OS.move_to_trash(ProjectSettings.globalize_path(file_to_remove))
+
 ----
 
 .. _class_OS_method_move_window_to_foreground:

Fișier diff suprimat deoarece este prea mare
+ 991 - 845
classes/class_projectsettings.rst


+ 0 - 1
classes/class_proximitygroup.rst

@@ -49,7 +49,6 @@ There are 3 caveats to keep in mind when using ``ProximityGroup``:
 
 - If your :ref:`grid_radius<class_ProximityGroup_property_grid_radius>` is smaller than ``Vector3(1, 1, 1)``, it will be rounded up to ``Vector3(1, 1, 1)``. Therefore, small grid radius values may lead to unwanted groupings.
 
-
 \ **Note:** ``ProximityGroup`` will be removed in Godot 4.0 in favor of more effective and faster :ref:`VisibilityNotifier<class_VisibilityNotifier>` functionality. For most use cases, :ref:`Vector3.distance_to<class_Vector3_method_distance_to>` or :ref:`Vector3.distance_squared_to<class_Vector3_method_distance_squared_to>` are fast enough too, especially if you call them less often using a :ref:`Timer<class_Timer>` node.
 
 Properties

+ 92 - 70
classes/class_richtextlabel.rst

@@ -75,75 +75,75 @@ Properties
 Methods
 -------
 
-+---------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| void                                  | :ref:`add_image<class_RichTextLabel_method_add_image>` **(** :ref:`Texture<class_Texture>` image, :ref:`int<class_int>` width=0, :ref:`int<class_int>` height=0 **)**                    |
-+---------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| void                                  | :ref:`add_text<class_RichTextLabel_method_add_text>` **(** :ref:`String<class_String>` text **)**                                                                                        |
-+---------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`Error<enum_@GlobalScope_Error>` | :ref:`append_bbcode<class_RichTextLabel_method_append_bbcode>` **(** :ref:`String<class_String>` bbcode **)**                                                                            |
-+---------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| void                                  | :ref:`clear<class_RichTextLabel_method_clear>` **(** **)**                                                                                                                               |
-+---------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| void                                  | :ref:`deselect<class_RichTextLabel_method_deselect>` **(** **)**                                                                                                                         |
-+---------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`int<class_int>`                 | :ref:`get_content_height<class_RichTextLabel_method_get_content_height>` **(** **)** |const|                                                                                             |
-+---------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`int<class_int>`                 | :ref:`get_line_count<class_RichTextLabel_method_get_line_count>` **(** **)** |const|                                                                                                     |
-+---------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`String<class_String>`           | :ref:`get_selected_text<class_RichTextLabel_method_get_selected_text>` **(** **)**                                                                                                       |
-+---------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`int<class_int>`                 | :ref:`get_total_character_count<class_RichTextLabel_method_get_total_character_count>` **(** **)** |const|                                                                               |
-+---------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`VScrollBar<class_VScrollBar>`   | :ref:`get_v_scroll<class_RichTextLabel_method_get_v_scroll>` **(** **)**                                                                                                                 |
-+---------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`int<class_int>`                 | :ref:`get_visible_line_count<class_RichTextLabel_method_get_visible_line_count>` **(** **)** |const|                                                                                     |
-+---------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| void                                  | :ref:`install_effect<class_RichTextLabel_method_install_effect>` **(** :ref:`Variant<class_Variant>` effect **)**                                                                        |
-+---------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| void                                  | :ref:`newline<class_RichTextLabel_method_newline>` **(** **)**                                                                                                                           |
-+---------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`Error<enum_@GlobalScope_Error>` | :ref:`parse_bbcode<class_RichTextLabel_method_parse_bbcode>` **(** :ref:`String<class_String>` bbcode **)**                                                                              |
-+---------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`Dictionary<class_Dictionary>`   | :ref:`parse_expressions_for_values<class_RichTextLabel_method_parse_expressions_for_values>` **(** :ref:`PoolStringArray<class_PoolStringArray>` expressions **)**                       |
-+---------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| void                                  | :ref:`pop<class_RichTextLabel_method_pop>` **(** **)**                                                                                                                                   |
-+---------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| void                                  | :ref:`push_align<class_RichTextLabel_method_push_align>` **(** :ref:`Align<enum_RichTextLabel_Align>` align **)**                                                                        |
-+---------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| void                                  | :ref:`push_bold<class_RichTextLabel_method_push_bold>` **(** **)**                                                                                                                       |
-+---------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| void                                  | :ref:`push_bold_italics<class_RichTextLabel_method_push_bold_italics>` **(** **)**                                                                                                       |
-+---------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| void                                  | :ref:`push_cell<class_RichTextLabel_method_push_cell>` **(** **)**                                                                                                                       |
-+---------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| void                                  | :ref:`push_color<class_RichTextLabel_method_push_color>` **(** :ref:`Color<class_Color>` color **)**                                                                                     |
-+---------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| void                                  | :ref:`push_font<class_RichTextLabel_method_push_font>` **(** :ref:`Font<class_Font>` font **)**                                                                                          |
-+---------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| void                                  | :ref:`push_indent<class_RichTextLabel_method_push_indent>` **(** :ref:`int<class_int>` level **)**                                                                                       |
-+---------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| void                                  | :ref:`push_italics<class_RichTextLabel_method_push_italics>` **(** **)**                                                                                                                 |
-+---------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| void                                  | :ref:`push_list<class_RichTextLabel_method_push_list>` **(** :ref:`ListType<enum_RichTextLabel_ListType>` type **)**                                                                     |
-+---------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| void                                  | :ref:`push_meta<class_RichTextLabel_method_push_meta>` **(** :ref:`Variant<class_Variant>` data **)**                                                                                    |
-+---------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| void                                  | :ref:`push_mono<class_RichTextLabel_method_push_mono>` **(** **)**                                                                                                                       |
-+---------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| void                                  | :ref:`push_normal<class_RichTextLabel_method_push_normal>` **(** **)**                                                                                                                   |
-+---------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| void                                  | :ref:`push_strikethrough<class_RichTextLabel_method_push_strikethrough>` **(** **)**                                                                                                     |
-+---------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| void                                  | :ref:`push_table<class_RichTextLabel_method_push_table>` **(** :ref:`int<class_int>` columns **)**                                                                                       |
-+---------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| void                                  | :ref:`push_underline<class_RichTextLabel_method_push_underline>` **(** **)**                                                                                                             |
-+---------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`bool<class_bool>`               | :ref:`remove_line<class_RichTextLabel_method_remove_line>` **(** :ref:`int<class_int>` line **)**                                                                                        |
-+---------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| void                                  | :ref:`scroll_to_line<class_RichTextLabel_method_scroll_to_line>` **(** :ref:`int<class_int>` line **)**                                                                                  |
-+---------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| void                                  | :ref:`set_table_column_expand<class_RichTextLabel_method_set_table_column_expand>` **(** :ref:`int<class_int>` column, :ref:`bool<class_bool>` expand, :ref:`int<class_int>` ratio **)** |
-+---------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
++---------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| void                                  | :ref:`add_image<class_RichTextLabel_method_add_image>` **(** :ref:`Texture<class_Texture>` image, :ref:`int<class_int>` width=0, :ref:`int<class_int>` height=0, :ref:`InlineAlign<enum_RichTextLabel_InlineAlign>` align=2 **)** |
++---------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| void                                  | :ref:`add_text<class_RichTextLabel_method_add_text>` **(** :ref:`String<class_String>` text **)**                                                                                                                                 |
++---------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`Error<enum_@GlobalScope_Error>` | :ref:`append_bbcode<class_RichTextLabel_method_append_bbcode>` **(** :ref:`String<class_String>` bbcode **)**                                                                                                                     |
++---------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| void                                  | :ref:`clear<class_RichTextLabel_method_clear>` **(** **)**                                                                                                                                                                        |
++---------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| void                                  | :ref:`deselect<class_RichTextLabel_method_deselect>` **(** **)**                                                                                                                                                                  |
++---------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`int<class_int>`                 | :ref:`get_content_height<class_RichTextLabel_method_get_content_height>` **(** **)** |const|                                                                                                                                      |
++---------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`int<class_int>`                 | :ref:`get_line_count<class_RichTextLabel_method_get_line_count>` **(** **)** |const|                                                                                                                                              |
++---------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`String<class_String>`           | :ref:`get_selected_text<class_RichTextLabel_method_get_selected_text>` **(** **)**                                                                                                                                                |
++---------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`int<class_int>`                 | :ref:`get_total_character_count<class_RichTextLabel_method_get_total_character_count>` **(** **)** |const|                                                                                                                        |
++---------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`VScrollBar<class_VScrollBar>`   | :ref:`get_v_scroll<class_RichTextLabel_method_get_v_scroll>` **(** **)**                                                                                                                                                          |
++---------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`int<class_int>`                 | :ref:`get_visible_line_count<class_RichTextLabel_method_get_visible_line_count>` **(** **)** |const|                                                                                                                              |
++---------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| void                                  | :ref:`install_effect<class_RichTextLabel_method_install_effect>` **(** :ref:`Variant<class_Variant>` effect **)**                                                                                                                 |
++---------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| void                                  | :ref:`newline<class_RichTextLabel_method_newline>` **(** **)**                                                                                                                                                                    |
++---------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`Error<enum_@GlobalScope_Error>` | :ref:`parse_bbcode<class_RichTextLabel_method_parse_bbcode>` **(** :ref:`String<class_String>` bbcode **)**                                                                                                                       |
++---------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`Dictionary<class_Dictionary>`   | :ref:`parse_expressions_for_values<class_RichTextLabel_method_parse_expressions_for_values>` **(** :ref:`PoolStringArray<class_PoolStringArray>` expressions **)**                                                                |
++---------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| void                                  | :ref:`pop<class_RichTextLabel_method_pop>` **(** **)**                                                                                                                                                                            |
++---------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| void                                  | :ref:`push_align<class_RichTextLabel_method_push_align>` **(** :ref:`Align<enum_RichTextLabel_Align>` align **)**                                                                                                                 |
++---------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| void                                  | :ref:`push_bold<class_RichTextLabel_method_push_bold>` **(** **)**                                                                                                                                                                |
++---------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| void                                  | :ref:`push_bold_italics<class_RichTextLabel_method_push_bold_italics>` **(** **)**                                                                                                                                                |
++---------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| void                                  | :ref:`push_cell<class_RichTextLabel_method_push_cell>` **(** **)**                                                                                                                                                                |
++---------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| void                                  | :ref:`push_color<class_RichTextLabel_method_push_color>` **(** :ref:`Color<class_Color>` color **)**                                                                                                                              |
++---------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| void                                  | :ref:`push_font<class_RichTextLabel_method_push_font>` **(** :ref:`Font<class_Font>` font **)**                                                                                                                                   |
++---------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| void                                  | :ref:`push_indent<class_RichTextLabel_method_push_indent>` **(** :ref:`int<class_int>` level **)**                                                                                                                                |
++---------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| void                                  | :ref:`push_italics<class_RichTextLabel_method_push_italics>` **(** **)**                                                                                                                                                          |
++---------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| void                                  | :ref:`push_list<class_RichTextLabel_method_push_list>` **(** :ref:`ListType<enum_RichTextLabel_ListType>` type **)**                                                                                                              |
++---------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| void                                  | :ref:`push_meta<class_RichTextLabel_method_push_meta>` **(** :ref:`Variant<class_Variant>` data **)**                                                                                                                             |
++---------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| void                                  | :ref:`push_mono<class_RichTextLabel_method_push_mono>` **(** **)**                                                                                                                                                                |
++---------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| void                                  | :ref:`push_normal<class_RichTextLabel_method_push_normal>` **(** **)**                                                                                                                                                            |
++---------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| void                                  | :ref:`push_strikethrough<class_RichTextLabel_method_push_strikethrough>` **(** **)**                                                                                                                                              |
++---------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| void                                  | :ref:`push_table<class_RichTextLabel_method_push_table>` **(** :ref:`int<class_int>` columns **)**                                                                                                                                |
++---------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| void                                  | :ref:`push_underline<class_RichTextLabel_method_push_underline>` **(** **)**                                                                                                                                                      |
++---------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`bool<class_bool>`               | :ref:`remove_line<class_RichTextLabel_method_remove_line>` **(** :ref:`int<class_int>` line **)**                                                                                                                                 |
++---------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| void                                  | :ref:`scroll_to_line<class_RichTextLabel_method_scroll_to_line>` **(** :ref:`int<class_int>` line **)**                                                                                                                           |
++---------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| void                                  | :ref:`set_table_column_expand<class_RichTextLabel_method_set_table_column_expand>` **(** :ref:`int<class_int>` column, :ref:`bool<class_bool>` expand, :ref:`int<class_int>` ratio **)**                                          |
++---------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
 
 Theme Properties
 ----------------
@@ -234,6 +234,28 @@ enum **Align**:
 
 ----
 
+.. _enum_RichTextLabel_InlineAlign:
+
+.. _class_RichTextLabel_constant_INLINE_ALIGN_TOP:
+
+.. _class_RichTextLabel_constant_INLINE_ALIGN_CENTER:
+
+.. _class_RichTextLabel_constant_INLINE_ALIGN_BASELINE:
+
+.. _class_RichTextLabel_constant_INLINE_ALIGN_BOTTOM:
+
+enum **InlineAlign**:
+
+- **INLINE_ALIGN_TOP** = **0** --- Aligns top of the inline image to the top of the text.
+
+- **INLINE_ALIGN_CENTER** = **1** --- Aligns center of the inline image to the center of the text.
+
+- **INLINE_ALIGN_BASELINE** = **2** --- Aligns bottom of the inline image to the baseline of the text.
+
+- **INLINE_ALIGN_BOTTOM** = **3** --- Aligns bottom of the inline image to the bottom of the text.
+
+----
+
 .. _enum_RichTextLabel_ListType:
 
 .. _class_RichTextLabel_constant_LIST_NUMBERS:
@@ -576,7 +598,7 @@ Method Descriptions
 
 .. _class_RichTextLabel_method_add_image:
 
-- void **add_image** **(** :ref:`Texture<class_Texture>` image, :ref:`int<class_int>` width=0, :ref:`int<class_int>` height=0 **)**
+- void **add_image** **(** :ref:`Texture<class_Texture>` image, :ref:`int<class_int>` width=0, :ref:`int<class_int>` height=0, :ref:`InlineAlign<enum_RichTextLabel_InlineAlign>` align=2 **)**
 
 Adds an image's opening and closing tags to the tag stack, optionally providing a ``width`` and ``height`` to resize the image.
 

+ 1 - 1
classes/class_scenetreetimer.rst

@@ -27,7 +27,7 @@ As opposed to :ref:`Timer<class_Timer>`, it does not require the instantiation o
         yield(get_tree().create_timer(1.0), "timeout")
         print("Timer ended.")
 
-The timer will be automatically freed after its time elapses, so be aware that any reference you might have kept to it will become invalid.
+The timer will be dereferenced after its time elapses. To preserve the timer, you can keep a reference to it. See :ref:`Reference<class_Reference>`.
 
 Properties
 ----------

+ 2 - 0
classes/class_spatial.rst

@@ -256,6 +256,8 @@ Rotation part of the local transformation in degrees, specified in terms of YXZ-
 
 Scale part of the local transformation.
 
+\ **Note:** Mixed negative scales in 3D are not decomposable from the transformation matrix. Due to the way scale is represented with transformation matrices in Godot, the scale values will either be all positive or all negative.
+
 ----
 
 .. _class_Spatial_property_transform:

+ 36 - 0
classes/class_tilemap.rst

@@ -40,6 +40,8 @@ Tutorials
 Properties
 ----------
 
++--------------------------------------------+--------------------------------------------------------------------------------+---------------------------------------+
+| :ref:`bool<class_bool>`                    | :ref:`bake_navigation<class_TileMap_property_bake_navigation>`                 | ``false``                             |
 +--------------------------------------------+--------------------------------------------------------------------------------+---------------------------------------+
 | :ref:`bool<class_bool>`                    | :ref:`cell_clip_uv<class_TileMap_property_cell_clip_uv>`                       | ``false``                             |
 +--------------------------------------------+--------------------------------------------------------------------------------+---------------------------------------+
@@ -73,6 +75,8 @@ Properties
 +--------------------------------------------+--------------------------------------------------------------------------------+---------------------------------------+
 | :ref:`Mode<enum_TileMap_Mode>`             | :ref:`mode<class_TileMap_property_mode>`                                       | ``0``                                 |
 +--------------------------------------------+--------------------------------------------------------------------------------+---------------------------------------+
+| :ref:`int<class_int>`                      | :ref:`navigation_layers<class_TileMap_property_navigation_layers>`             | ``1``                                 |
++--------------------------------------------+--------------------------------------------------------------------------------+---------------------------------------+
 | :ref:`int<class_int>`                      | :ref:`occluder_light_mask<class_TileMap_property_occluder_light_mask>`         | ``1``                                 |
 +--------------------------------------------+--------------------------------------------------------------------------------+---------------------------------------+
 | :ref:`bool<class_bool>`                    | :ref:`show_collision<class_TileMap_property_show_collision>`                   | ``false``                             |
@@ -211,6 +215,22 @@ Constants
 Property Descriptions
 ---------------------
 
+.. _class_TileMap_property_bake_navigation:
+
+- :ref:`bool<class_bool>` **bake_navigation**
+
++-----------+----------------------------+
+| *Default* | ``false``                  |
++-----------+----------------------------+
+| *Setter*  | set_bake_navigation(value) |
++-----------+----------------------------+
+| *Getter*  | is_baking_navigation()     |
++-----------+----------------------------+
+
+If ``true``, this TileMap bakes a navigation region.
+
+----
+
 .. _class_TileMap_property_cell_clip_uv:
 
 - :ref:`bool<class_bool>` **cell_clip_uv**
@@ -473,6 +493,22 @@ The TileMap orientation mode. See :ref:`Mode<enum_TileMap_Mode>` for possible va
 
 ----
 
+.. _class_TileMap_property_navigation_layers:
+
+- :ref:`int<class_int>` **navigation_layers**
+
++-----------+------------------------------+
+| *Default* | ``1``                        |
++-----------+------------------------------+
+| *Setter*  | set_navigation_layers(value) |
++-----------+------------------------------+
+| *Getter*  | get_navigation_layers()      |
++-----------+------------------------------+
+
+The navigation layers the TileMap generates its navigation regions in.
+
+----
+
 .. _class_TileMap_property_occluder_light_mask:
 
 - :ref:`int<class_int>` **occluder_light_mask**

+ 2 - 0
classes/class_transform2d.rst

@@ -254,6 +254,8 @@ Returns a copy of the transform rotated by the given ``angle`` (in radians), usi
 
 Returns a copy of the transform scaled by the given ``scale`` factor, using matrix multiplication.
 
+\ **Note:** Negative X scales in 2D are not decomposable from the transformation matrix. Due to the way scale is represented with transformation matrices in Godot, negative scales on the X axis will be changed to negative scales on the Y axis and a rotation of 180 degrees when decomposed.
+
 ----
 
 .. _class_Transform2D_method_translated:

+ 2 - 2
classes/class_visibilityenabler2d.rst

@@ -77,9 +77,9 @@ enum **Enabler**:
 
 - **ENABLER_PAUSE_PARTICLES** = **2** --- This enabler will stop :ref:`Particles2D<class_Particles2D>` nodes.
 
-- **ENABLER_PARENT_PROCESS** = **3** --- This enabler will stop the parent's _process function.
+- **ENABLER_PARENT_PROCESS** = **3** --- This enabler will stop the parent's :ref:`Node._process<class_Node_method__process>` function.
 
-- **ENABLER_PARENT_PHYSICS_PROCESS** = **4** --- This enabler will stop the parent's _physics_process function.
+- **ENABLER_PARENT_PHYSICS_PROCESS** = **4** --- This enabler will stop the parent's :ref:`Node._physics_process<class_Node_method__physics_process>` function.
 
 - **ENABLER_PAUSE_ANIMATED_SPRITES** = **5** --- This enabler will stop :ref:`AnimatedSprite<class_AnimatedSprite>` nodes animations.
 

+ 23 - 3
classes/class_visibilitynotifier.rst

@@ -27,9 +27,11 @@ If you want nodes to be disabled automatically when they exit the screen, use :r
 Properties
 ----------
 
-+-------------------------+-----------------------------------------------------+---------------------------------+
-| :ref:`AABB<class_AABB>` | :ref:`aabb<class_VisibilityNotifier_property_aabb>` | ``AABB( -1, -1, -1, 2, 2, 2 )`` |
-+-------------------------+-----------------------------------------------------+---------------------------------+
++---------------------------+---------------------------------------------------------------------+---------------------------------+
+| :ref:`AABB<class_AABB>`   | :ref:`aabb<class_VisibilityNotifier_property_aabb>`                 | ``AABB( -1, -1, -1, 2, 2, 2 )`` |
++---------------------------+---------------------------------------------------------------------+---------------------------------+
+| :ref:`float<class_float>` | :ref:`max_distance<class_VisibilityNotifier_property_max_distance>` | ``0.0``                         |
++---------------------------+---------------------------------------------------------------------+---------------------------------+
 
 Methods
 -------
@@ -88,6 +90,24 @@ Property Descriptions
 
 The VisibilityNotifier's bounding box.
 
+----
+
+.. _class_VisibilityNotifier_property_max_distance:
+
+- :ref:`float<class_float>` **max_distance**
+
++-----------+-------------------------+
+| *Default* | ``0.0``                 |
++-----------+-------------------------+
+| *Setter*  | set_max_distance(value) |
++-----------+-------------------------+
+| *Getter*  | get_max_distance()      |
++-----------+-------------------------+
+
+In addition to checking whether a node is on screen or within a :ref:`Camera<class_Camera>`'s view, VisibilityNotifier can also optionally check whether a node is within a specified maximum distance when using a :ref:`Camera<class_Camera>` with perspective projection. This is useful for throttling the performance requirements of nodes that are far away.
+
+\ **Note:** This feature will be disabled if set to 0.0.
+
 Method Descriptions
 -------------------
 

+ 18 - 8
classes/class_visualserver.rst

@@ -1669,6 +1669,8 @@ enum **CanvasOccluderPolygonCullMode**:
 
 .. _class_VisualServer_constant_INFO_SHADER_CHANGES_IN_FRAME:
 
+.. _class_VisualServer_constant_INFO_SHADER_COMPILES_IN_FRAME:
+
 .. _class_VisualServer_constant_INFO_SURFACE_CHANGES_IN_FRAME:
 
 .. _class_VisualServer_constant_INFO_DRAW_CALLS_IN_FRAME:
@@ -1695,21 +1697,29 @@ enum **RenderInfo**:
 
 - **INFO_SHADER_CHANGES_IN_FRAME** = **3** --- The amount of shader rebinds in the frame.
 
-- **INFO_SURFACE_CHANGES_IN_FRAME** = **4** --- The amount of surface changes in the frame.
+- **INFO_SHADER_COMPILES_IN_FRAME** = **4** --- The peak amount of shaders that have been under compilation in the frame.
+
+This is useful to know when asynchronous shader compilation has finished for the current shaders on screen.
+
+\ **Note:** For complete certainty, only assume there are no outstanding compilations when this value is zero for at least two frames in a row.
+
+Unimplemented in the GLES2 rendering backend, always returns 0.
+
+- **INFO_SURFACE_CHANGES_IN_FRAME** = **5** --- The amount of surface changes in the frame.
 
-- **INFO_DRAW_CALLS_IN_FRAME** = **5** --- The amount of draw calls in frame.
+- **INFO_DRAW_CALLS_IN_FRAME** = **6** --- The amount of draw calls in frame.
 
-- **INFO_2D_ITEMS_IN_FRAME** = **6** --- The amount of 2d items in the frame.
+- **INFO_2D_ITEMS_IN_FRAME** = **7** --- The amount of 2d items in the frame.
 
-- **INFO_2D_DRAW_CALLS_IN_FRAME** = **7** --- The amount of 2d draw calls in frame.
+- **INFO_2D_DRAW_CALLS_IN_FRAME** = **8** --- The amount of 2d draw calls in frame.
 
-- **INFO_USAGE_VIDEO_MEM_TOTAL** = **8** --- Unimplemented in the GLES2 and GLES3 rendering backends, always returns 0.
+- **INFO_USAGE_VIDEO_MEM_TOTAL** = **9** --- Unimplemented in the GLES2 and GLES3 rendering backends, always returns 0.
 
-- **INFO_VIDEO_MEM_USED** = **9** --- The amount of video memory used, i.e. texture and vertex memory combined.
+- **INFO_VIDEO_MEM_USED** = **10** --- The amount of video memory used, i.e. texture and vertex memory combined.
 
-- **INFO_TEXTURE_MEM_USED** = **10** --- The amount of texture memory used.
+- **INFO_TEXTURE_MEM_USED** = **11** --- The amount of texture memory used.
 
-- **INFO_VERTEX_MEM_USED** = **11** --- The amount of vertex memory used.
+- **INFO_VERTEX_MEM_USED** = **12** --- The amount of vertex memory used.
 
 ----
 

+ 16 - 2
classes/class_world.rst

@@ -16,7 +16,7 @@ Class that has everything pertaining to a world.
 Description
 -----------
 
-Class that has everything pertaining to a world. A physics space, a visual scenario and a sound space. Spatial nodes register their resources into the current world.
+Class that has everything pertaining to a world. A physics space, a visual scenario, a navigation map and a sound space. Spatial nodes register their resources into the current world.
 
 Tutorials
 ---------
@@ -33,6 +33,8 @@ Properties
 +---------------------------------------------------------------+------------------------------------------------------------------------+
 | :ref:`Environment<class_Environment>`                         | :ref:`fallback_environment<class_World_property_fallback_environment>` |
 +---------------------------------------------------------------+------------------------------------------------------------------------+
+| :ref:`RID<class_RID>`                                         | :ref:`navigation_map<class_World_property_navigation_map>`             |
++---------------------------------------------------------------+------------------------------------------------------------------------+
 | :ref:`RID<class_RID>`                                         | :ref:`scenario<class_World_property_scenario>`                         |
 +---------------------------------------------------------------+------------------------------------------------------------------------+
 | :ref:`RID<class_RID>`                                         | :ref:`space<class_World_property_space>`                               |
@@ -77,7 +79,19 @@ The World's :ref:`Environment<class_Environment>`.
 | *Getter* | get_fallback_environment()      |
 +----------+---------------------------------+
 
-The World's fallback_environment will be used if the World's :ref:`Environment<class_Environment>` fails or is missing.
+The World's fallback environment will be used if :ref:`environment<class_World_property_environment>` fails or is missing.
+
+----
+
+.. _class_World_property_navigation_map:
+
+- :ref:`RID<class_RID>` **navigation_map**
+
++----------+----------------------+
+| *Getter* | get_navigation_map() |
++----------+----------------------+
+
+The :ref:`RID<class_RID>` of this world's navigation map. Used by the :ref:`NavigationServer<class_NavigationServer>`.
 
 ----
 

+ 15 - 1
classes/class_world2d.rst

@@ -16,7 +16,7 @@ Class that has everything pertaining to a 2D world.
 Description
 -----------
 
-Class that has everything pertaining to a 2D world. A physics space, a visual scenario and a sound space. 2D nodes register their resources into the current 2D world.
+Class that has everything pertaining to a 2D world. A physics space, a visual scenario, a navigation map and a sound space. 2D nodes register their resources into the current 2D world.
 
 Tutorials
 ---------
@@ -31,6 +31,8 @@ Properties
 +-------------------------------------------------------------------+----------------------------------------------------------------------+
 | :ref:`Physics2DDirectSpaceState<class_Physics2DDirectSpaceState>` | :ref:`direct_space_state<class_World2D_property_direct_space_state>` |
 +-------------------------------------------------------------------+----------------------------------------------------------------------+
+| :ref:`RID<class_RID>`                                             | :ref:`navigation_map<class_World2D_property_navigation_map>`         |
++-------------------------------------------------------------------+----------------------------------------------------------------------+
 | :ref:`RID<class_RID>`                                             | :ref:`space<class_World2D_property_space>`                           |
 +-------------------------------------------------------------------+----------------------------------------------------------------------+
 
@@ -61,6 +63,18 @@ Direct access to the world's physics 2D space state. Used for querying current a
 
 ----
 
+.. _class_World2D_property_navigation_map:
+
+- :ref:`RID<class_RID>` **navigation_map**
+
++----------+----------------------+
+| *Getter* | get_navigation_map() |
++----------+----------------------+
+
+The :ref:`RID<class_RID>` of this world's navigation map. Used by the :ref:`Navigation2DServer<class_Navigation2DServer>`.
+
+----
+
 .. _class_World2D_property_space:
 
 - :ref:`RID<class_RID>` **space**

Unele fișiere nu au fost afișate deoarece prea multe fișiere au fost modificate în acest diff