Prechádzať zdrojové kódy

classref: Sync with current master branch (c4f0062f1)

Rémi Verschelde 3 rokov pred
rodič
commit
61fd183807
91 zmenil súbory, kde vykonal 3774 pridanie a 2442 odobranie
  1. 170 86
      classes/[email protected]
  2. 3 3
      classes/class_animationlibrary.rst
  3. 9 3
      classes/class_array.rst
  4. 57 57
      classes/class_astar2d.rst
  5. 4 4
      classes/class_astar3d.rst
  6. 5 2
      classes/class_audioeffectamplify.rst
  7. 5 0
      classes/class_audioeffectbandlimitfilter.rst
  8. 5 0
      classes/class_audioeffectbandpassfilter.rst
  9. 6 1
      classes/class_audioeffectcapture.rst
  10. 5 0
      classes/class_audioeffectchorus.rst
  11. 5 0
      classes/class_audioeffectcompressor.rst
  12. 5 0
      classes/class_audioeffectdelay.rst
  13. 5 0
      classes/class_audioeffecteq.rst
  14. 5 0
      classes/class_audioeffecteq10.rst
  15. 5 0
      classes/class_audioeffecteq21.rst
  16. 6 1
      classes/class_audioeffecteq6.rst
  17. 6 1
      classes/class_audioeffecthighpassfilter.rst
  18. 5 0
      classes/class_audioeffecthighshelffilter.rst
  19. 5 0
      classes/class_audioeffectlimiter.rst
  20. 6 1
      classes/class_audioeffectlowpassfilter.rst
  21. 5 0
      classes/class_audioeffectlowshelffilter.rst
  22. 5 0
      classes/class_audioeffectnotchfilter.rst
  23. 6 1
      classes/class_audioeffectpanner.rst
  24. 6 1
      classes/class_audioeffectphaser.rst
  25. 6 1
      classes/class_audioeffectpitchshift.rst
  26. 3 3
      classes/class_audioeffectreverb.rst
  27. 5 0
      classes/class_audioeffectstereoenhance.rst
  28. 41 23
      classes/class_audiostreamplayer2d.rst
  29. 18 0
      classes/class_audiostreamplayer3d.rst
  30. 2 0
      classes/class_basematerial3d.rst
  31. 37 19
      classes/class_button.rst
  32. 1 1
      classes/class_colorpickerbutton.rst
  33. 23 23
      classes/class_control.rst
  34. 8 4
      classes/class_curvetexture.rst
  35. 15 0
      classes/class_curvexyztexture.rst
  36. 38 4
      classes/class_editorplugin.rst
  37. 32 2
      classes/class_fontdata.rst
  38. 1 1
      classes/class_gradienttexture1d.rst
  39. 1 1
      classes/class_gradienttexture2d.rst
  40. 21 1
      classes/class_gridmap.rst
  41. 17 13
      classes/class_httprequest.rst
  42. 59 1
      classes/class_image.rst
  43. 14 0
      classes/class_importermesh.rst
  44. 35 33
      classes/class_itemlist.rst
  45. 43 118
      classes/class_label.rst
  46. 3 25
      classes/class_label3d.rst
  47. 65 21
      classes/class_lightmapgi.rst
  48. 21 0
      classes/class_lightmapgidata.rst
  49. 7 0
      classes/class_lightmapper.rst
  50. 7 0
      classes/class_lightmapperrd.rst
  51. 7 0
      classes/class_lightmapprobe.rst
  52. 27 27
      classes/class_mesh.rst
  53. 1 1
      classes/class_meshinstance2d.rst
  54. 125 0
      classes/class_moviewriter.rst
  55. 99 39
      classes/class_navigationagent2d.rst
  56. 99 39
      classes/class_navigationagent3d.rst
  57. 155 115
      classes/class_navigationmesh.rst
  58. 3 1
      classes/class_navigationmeshgenerator.rst
  59. 82 20
      classes/class_navigationregion2d.rst
  60. 86 22
      classes/class_navigationregion3d.rst
  61. 165 83
      classes/class_navigationserver2d.rst
  62. 179 97
      classes/class_navigationserver3d.rst
  63. 15 3
      classes/class_node.rst
  64. 18 0
      classes/class_node2d.rst
  65. 2 0
      classes/class_node3d.rst
  66. 0 0
      classes/class_object.rst
  67. 10 0
      classes/class_ormmaterial3d.rst
  68. 17 0
      classes/class_os.rst
  69. 22 0
      classes/class_popupmenu.rst
  70. 1165 1147
      classes/class_projectsettings.rst
  71. 55 103
      classes/class_richtextlabel.rst
  72. 1 1
      classes/class_scenetreetimer.rst
  73. 1 1
      classes/class_scrollcontainer.rst
  74. 6 1
      classes/class_standardmaterial3d.rst
  75. 6 6
      classes/class_string.rst
  76. 57 25
      classes/class_surfacetool.rst
  77. 3 30
      classes/class_textline.rst
  78. 3 30
      classes/class_textparagraph.rst
  79. 106 2
      classes/class_textserver.rst
  80. 30 0
      classes/class_textserverextension.rst
  81. 17 13
      classes/class_thread.rst
  82. 46 28
      classes/class_tiledata.rst
  83. 97 81
      classes/class_tilemap.rst
  84. 2 0
      classes/class_transform2d.rst
  85. 2 0
      classes/class_tree.rst
  86. 3 23
      classes/class_visualshader.rst
  87. 10 0
      classes/class_webrtcpeerconnection.rst
  88. 0 8
      classes/class_webrtcpeerconnectionextension.rst
  89. 182 40
      classes/class_window.rst
  90. 1 1
      classes/class_world3d.rst
  91. 2 0
      classes/class_worldenvironment.rst

+ 170 - 86
classes/[email protected]

@@ -544,6 +544,44 @@ enum **InlineAlignment**:
 
 .. _class_@GlobalScope_constant_KEY_F16:
 
+.. _class_@GlobalScope_constant_KEY_F17:
+
+.. _class_@GlobalScope_constant_KEY_F18:
+
+.. _class_@GlobalScope_constant_KEY_F19:
+
+.. _class_@GlobalScope_constant_KEY_F20:
+
+.. _class_@GlobalScope_constant_KEY_F21:
+
+.. _class_@GlobalScope_constant_KEY_F22:
+
+.. _class_@GlobalScope_constant_KEY_F23:
+
+.. _class_@GlobalScope_constant_KEY_F24:
+
+.. _class_@GlobalScope_constant_KEY_F25:
+
+.. _class_@GlobalScope_constant_KEY_F26:
+
+.. _class_@GlobalScope_constant_KEY_F27:
+
+.. _class_@GlobalScope_constant_KEY_F28:
+
+.. _class_@GlobalScope_constant_KEY_F29:
+
+.. _class_@GlobalScope_constant_KEY_F30:
+
+.. _class_@GlobalScope_constant_KEY_F31:
+
+.. _class_@GlobalScope_constant_KEY_F32:
+
+.. _class_@GlobalScope_constant_KEY_F33:
+
+.. _class_@GlobalScope_constant_KEY_F34:
+
+.. _class_@GlobalScope_constant_KEY_F35:
+
 .. _class_@GlobalScope_constant_KEY_KP_MULTIPLY:
 
 .. _class_@GlobalScope_constant_KEY_KP_DIVIDE:
@@ -1034,6 +1072,44 @@ enum **Key**:
 
 - **KEY_F16** = **16777259** --- F16 key.
 
+- **KEY_F17** = **16777260** --- F17 key.
+
+- **KEY_F18** = **16777261** --- F18 key.
+
+- **KEY_F19** = **16777262** --- F19 key.
+
+- **KEY_F20** = **16777263** --- F20 key.
+
+- **KEY_F21** = **16777264** --- F21 key.
+
+- **KEY_F22** = **16777265** --- F22 key.
+
+- **KEY_F23** = **16777266** --- F23 key.
+
+- **KEY_F24** = **16777267** --- F24 key.
+
+- **KEY_F25** = **16777268** --- F25 key. Only supported on macOS and Linux due to a Windows limitation.
+
+- **KEY_F26** = **16777269** --- F26 key. Only supported on macOS and Linux due to a Windows limitation.
+
+- **KEY_F27** = **16777270** --- F27 key. Only supported on macOS and Linux due to a Windows limitation.
+
+- **KEY_F28** = **16777271** --- F28 key. Only supported on macOS and Linux due to a Windows limitation.
+
+- **KEY_F29** = **16777272** --- F29 key. Only supported on macOS and Linux due to a Windows limitation.
+
+- **KEY_F30** = **16777273** --- F30 key. Only supported on macOS and Linux due to a Windows limitation.
+
+- **KEY_F31** = **16777274** --- F31 key. Only supported on macOS and Linux due to a Windows limitation.
+
+- **KEY_F32** = **16777275** --- F32 key. Only supported on macOS and Linux due to a Windows limitation.
+
+- **KEY_F33** = **16777276** --- F33 key. Only supported on macOS and Linux due to a Windows limitation.
+
+- **KEY_F34** = **16777277** --- F34 key. Only supported on macOS and Linux due to a Windows limitation.
+
+- **KEY_F35** = **16777278** --- F35 key. Only supported on macOS and Linux due to a Windows limitation.
+
 - **KEY_KP_MULTIPLY** = **16777345** --- Multiply (\*) key on the numeric keypad.
 
 - **KEY_KP_DIVIDE** = **16777346** --- Divide (/) key on the numeric keypad.
@@ -1064,101 +1140,101 @@ enum **Key**:
 
 - **KEY_KP_9** = **16777359** --- Number 9 on the numeric keypad.
 
-- **KEY_SUPER_L** = **16777260** --- Left Super key (Windows key).
+- **KEY_SUPER_L** = **16777280** --- Left Super key (Windows key).
 
-- **KEY_SUPER_R** = **16777261** --- Right Super key (Windows key).
+- **KEY_SUPER_R** = **16777281** --- Right Super key (Windows key).
 
-- **KEY_MENU** = **16777262** --- Context menu key.
+- **KEY_MENU** = **16777282** --- Context menu key.
 
-- **KEY_HYPER_L** = **16777263** --- Left Hyper key.
+- **KEY_HYPER_L** = **16777283** --- Left Hyper key.
 
-- **KEY_HYPER_R** = **16777264** --- Right Hyper key.
+- **KEY_HYPER_R** = **16777284** --- Right Hyper key.
 
-- **KEY_HELP** = **16777265** --- Help key.
+- **KEY_HELP** = **16777285** --- Help key.
 
-- **KEY_DIRECTION_L** = **16777266** --- Left Direction key.
+- **KEY_DIRECTION_L** = **16777286** --- Left Direction key.
 
-- **KEY_DIRECTION_R** = **16777267** --- Right Direction key.
+- **KEY_DIRECTION_R** = **16777287** --- Right Direction key.
 
-- **KEY_BACK** = **16777280** --- Media back key. Not to be confused with the Back button on an Android device.
+- **KEY_BACK** = **16777288** --- Media back key. Not to be confused with the Back button on an Android device.
 
-- **KEY_FORWARD** = **16777281** --- Media forward key.
+- **KEY_FORWARD** = **16777289** --- Media forward key.
 
-- **KEY_STOP** = **16777282** --- Media stop key.
+- **KEY_STOP** = **16777290** --- Media stop key.
 
-- **KEY_REFRESH** = **16777283** --- Media refresh key.
+- **KEY_REFRESH** = **16777291** --- Media refresh key.
 
-- **KEY_VOLUMEDOWN** = **16777284** --- Volume down key.
+- **KEY_VOLUMEDOWN** = **16777292** --- Volume down key.
 
-- **KEY_VOLUMEMUTE** = **16777285** --- Mute volume key.
+- **KEY_VOLUMEMUTE** = **16777293** --- Mute volume key.
 
-- **KEY_VOLUMEUP** = **16777286** --- Volume up key.
+- **KEY_VOLUMEUP** = **16777294** --- Volume up key.
 
-- **KEY_BASSBOOST** = **16777287** --- Bass Boost key.
+- **KEY_BASSBOOST** = **16777295** --- Bass Boost key.
 
-- **KEY_BASSUP** = **16777288** --- Bass up key.
+- **KEY_BASSUP** = **16777296** --- Bass up key.
 
-- **KEY_BASSDOWN** = **16777289** --- Bass down key.
+- **KEY_BASSDOWN** = **16777297** --- Bass down key.
 
-- **KEY_TREBLEUP** = **16777290** --- Treble up key.
+- **KEY_TREBLEUP** = **16777298** --- Treble up key.
 
-- **KEY_TREBLEDOWN** = **16777291** --- Treble down key.
+- **KEY_TREBLEDOWN** = **16777299** --- Treble down key.
 
-- **KEY_MEDIAPLAY** = **16777292** --- Media play key.
+- **KEY_MEDIAPLAY** = **16777300** --- Media play key.
 
-- **KEY_MEDIASTOP** = **16777293** --- Media stop key.
+- **KEY_MEDIASTOP** = **16777301** --- Media stop key.
 
-- **KEY_MEDIAPREVIOUS** = **16777294** --- Previous song key.
+- **KEY_MEDIAPREVIOUS** = **16777302** --- Previous song key.
 
-- **KEY_MEDIANEXT** = **16777295** --- Next song key.
+- **KEY_MEDIANEXT** = **16777303** --- Next song key.
 
-- **KEY_MEDIARECORD** = **16777296** --- Media record key.
+- **KEY_MEDIARECORD** = **16777304** --- Media record key.
 
-- **KEY_HOMEPAGE** = **16777297** --- Home page key.
+- **KEY_HOMEPAGE** = **16777305** --- Home page key.
 
-- **KEY_FAVORITES** = **16777298** --- Favorites key.
+- **KEY_FAVORITES** = **16777306** --- Favorites key.
 
-- **KEY_SEARCH** = **16777299** --- Search key.
+- **KEY_SEARCH** = **16777307** --- Search key.
 
-- **KEY_STANDBY** = **16777300** --- Standby key.
+- **KEY_STANDBY** = **16777308** --- Standby key.
 
-- **KEY_OPENURL** = **16777301** --- Open URL / Launch Browser key.
+- **KEY_OPENURL** = **16777309** --- Open URL / Launch Browser key.
 
-- **KEY_LAUNCHMAIL** = **16777302** --- Launch Mail key.
+- **KEY_LAUNCHMAIL** = **16777310** --- Launch Mail key.
 
-- **KEY_LAUNCHMEDIA** = **16777303** --- Launch Media key.
+- **KEY_LAUNCHMEDIA** = **16777311** --- Launch Media key.
 
-- **KEY_LAUNCH0** = **16777304** --- Launch Shortcut 0 key.
+- **KEY_LAUNCH0** = **16777312** --- Launch Shortcut 0 key.
 
-- **KEY_LAUNCH1** = **16777305** --- Launch Shortcut 1 key.
+- **KEY_LAUNCH1** = **16777313** --- Launch Shortcut 1 key.
 
-- **KEY_LAUNCH2** = **16777306** --- Launch Shortcut 2 key.
+- **KEY_LAUNCH2** = **16777314** --- Launch Shortcut 2 key.
 
-- **KEY_LAUNCH3** = **16777307** --- Launch Shortcut 3 key.
+- **KEY_LAUNCH3** = **16777315** --- Launch Shortcut 3 key.
 
-- **KEY_LAUNCH4** = **16777308** --- Launch Shortcut 4 key.
+- **KEY_LAUNCH4** = **16777316** --- Launch Shortcut 4 key.
 
-- **KEY_LAUNCH5** = **16777309** --- Launch Shortcut 5 key.
+- **KEY_LAUNCH5** = **16777317** --- Launch Shortcut 5 key.
 
-- **KEY_LAUNCH6** = **16777310** --- Launch Shortcut 6 key.
+- **KEY_LAUNCH6** = **16777318** --- Launch Shortcut 6 key.
 
-- **KEY_LAUNCH7** = **16777311** --- Launch Shortcut 7 key.
+- **KEY_LAUNCH7** = **16777319** --- Launch Shortcut 7 key.
 
-- **KEY_LAUNCH8** = **16777312** --- Launch Shortcut 8 key.
+- **KEY_LAUNCH8** = **16777320** --- Launch Shortcut 8 key.
 
-- **KEY_LAUNCH9** = **16777313** --- Launch Shortcut 9 key.
+- **KEY_LAUNCH9** = **16777321** --- Launch Shortcut 9 key.
 
-- **KEY_LAUNCHA** = **16777314** --- Launch Shortcut A key.
+- **KEY_LAUNCHA** = **16777322** --- Launch Shortcut A key.
 
-- **KEY_LAUNCHB** = **16777315** --- Launch Shortcut B key.
+- **KEY_LAUNCHB** = **16777323** --- Launch Shortcut B key.
 
-- **KEY_LAUNCHC** = **16777316** --- Launch Shortcut C key.
+- **KEY_LAUNCHC** = **16777324** --- Launch Shortcut C key.
 
-- **KEY_LAUNCHD** = **16777317** --- Launch Shortcut D key.
+- **KEY_LAUNCHD** = **16777325** --- Launch Shortcut D key.
 
-- **KEY_LAUNCHE** = **16777318** --- Launch Shortcut E key.
+- **KEY_LAUNCHE** = **16777326** --- Launch Shortcut E key.
 
-- **KEY_LAUNCHF** = **16777319** --- Launch Shortcut F key.
+- **KEY_LAUNCHF** = **16777327** --- Launch Shortcut F key.
 
 - **KEY_UNKNOWN** = **33554431** --- Unknown key.
 
@@ -2001,6 +2077,8 @@ Since :ref:`OK<class_@GlobalScope_constant_OK>` has value 0, and all other failu
 
 .. _class_@GlobalScope_constant_PROPERTY_HINT_LENGTH:
 
+.. _class_@GlobalScope_constant_PROPERTY_HINT_LINK:
+
 .. _class_@GlobalScope_constant_PROPERTY_HINT_KEY_ACCEL:
 
 .. _class_@GlobalScope_constant_PROPERTY_HINT_FLAGS:
@@ -2065,6 +2143,8 @@ Since :ref:`OK<class_@GlobalScope_constant_OK>` has value 0, and all other failu
 
 .. _class_@GlobalScope_constant_PROPERTY_HINT_SAVE_FILE:
 
+.. _class_@GlobalScope_constant_PROPERTY_HINT_GLOBAL_SAVE_FILE:
+
 .. _class_@GlobalScope_constant_PROPERTY_HINT_INT_IS_OBJECTID:
 
 .. _class_@GlobalScope_constant_PROPERTY_HINT_INT_IS_POINTER:
@@ -2097,45 +2177,47 @@ Unlike :ref:`PROPERTY_HINT_ENUM<class_@GlobalScope_constant_PROPERTY_HINT_ENUM>`
 
 - **PROPERTY_HINT_LENGTH** = **5** --- Deprecated hint, unused.
 
-- **PROPERTY_HINT_KEY_ACCEL** = **6** --- Deprecated hint, unused.
+- **PROPERTY_HINT_LINK** = **6** --- Hints that a vector property should allow linking values (e.g. to edit both ``x`` and ``y`` together).
 
-- **PROPERTY_HINT_FLAGS** = **7** --- Hints that an integer property is a bitmask with named bit flags. For example, to allow toggling bits 0, 1, 2 and 4, the hint could be something like ``"Bit0,Bit1,Bit2,,Bit4"``.
+- **PROPERTY_HINT_KEY_ACCEL** = **7** --- Deprecated hint, unused.
 
-- **PROPERTY_HINT_LAYERS_2D_RENDER** = **8** --- Hints that an integer property is a bitmask using the optionally named 2D render layers.
+- **PROPERTY_HINT_FLAGS** = **8** --- Hints that an integer property is a bitmask with named bit flags. For example, to allow toggling bits 0, 1, 2 and 4, the hint could be something like ``"Bit0,Bit1,Bit2,,Bit4"``.
 
-- **PROPERTY_HINT_LAYERS_2D_PHYSICS** = **9** --- Hints that an integer property is a bitmask using the optionally named 2D physics layers.
+- **PROPERTY_HINT_LAYERS_2D_RENDER** = **9** --- Hints that an integer property is a bitmask using the optionally named 2D render layers.
 
-- **PROPERTY_HINT_LAYERS_2D_NAVIGATION** = **10** --- Hints that an integer property is a bitmask using the optionally named 2D navigation layers.
+- **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_PHYSICS** = **12** --- Hints that an integer property is a bitmask using the optionally named 3D physics 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_NAVIGATION** = **13** --- Hints that an integer property is a bitmask using the optionally named 2D navigation 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** = **14** --- 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** = **15** --- 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** = **16** --- 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** = **17** --- 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** = **18** --- Hints that a property is an instance of a :ref:`Resource<class_Resource>`-derived type, optionally specified via the hint string (e.g. ``"Texture2D"``). 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** = **19** --- 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. ``"Texture2D"``). Editing it will show a popup menu of valid resource types to instantiate.
 
-- **PROPERTY_HINT_PLACEHOLDER_TEXT** = **20** --- 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** = **21** --- 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** = **22** --- 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** = **23** --- 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_OBJECT_ID** = **24**
+- **PROPERTY_HINT_IMAGE_COMPRESS_LOSSLESS** = **24** --- Hints that an image is compressed using lossless compression.
 
-- **PROPERTY_HINT_TYPE_STRING** = **25** --- Hint that a property represents a particular type. If a property is :ref:`TYPE_STRING<class_@GlobalScope_constant_TYPE_STRING>`, allows to set a type from the create dialog. If you need to create an :ref:`Array<class_Array>` to contain elements of a specific type, the ``hint_string`` must encode nested types using ``":"`` and ``"/"`` for specifying :ref:`Resource<class_Resource>` types. For instance:
+- **PROPERTY_HINT_OBJECT_ID** = **25**
+
+- **PROPERTY_HINT_TYPE_STRING** = **26** --- Hint that a property represents a particular type. If a property is :ref:`TYPE_STRING<class_@GlobalScope_constant_TYPE_STRING>`, allows to set a type from the create dialog. If you need to create an :ref:`Array<class_Array>` to contain elements of a specific type, the ``hint_string`` must encode nested types using ``":"`` and ``"/"`` for specifying :ref:`Resource<class_Resource>` types. For instance:
 
 ::
 
@@ -2146,41 +2228,43 @@ Unlike :ref:`PROPERTY_HINT_ENUM<class_@GlobalScope_constant_PROPERTY_HINT_ENUM>`
 
 \ **Note:** The final colon is required to specify for properly detecting built-in types.
 
-- **PROPERTY_HINT_NODE_PATH_TO_EDITED_NODE** = **26**
+- **PROPERTY_HINT_NODE_PATH_TO_EDITED_NODE** = **27**
+
+- **PROPERTY_HINT_METHOD_OF_VARIANT_TYPE** = **28**
 
-- **PROPERTY_HINT_METHOD_OF_VARIANT_TYPE** = **27**
+- **PROPERTY_HINT_METHOD_OF_BASE_TYPE** = **29**
 
-- **PROPERTY_HINT_METHOD_OF_BASE_TYPE** = **28**
+- **PROPERTY_HINT_METHOD_OF_INSTANCE** = **30**
 
-- **PROPERTY_HINT_METHOD_OF_INSTANCE** = **29**
+- **PROPERTY_HINT_METHOD_OF_SCRIPT** = **31**
 
-- **PROPERTY_HINT_METHOD_OF_SCRIPT** = **30**
+- **PROPERTY_HINT_PROPERTY_OF_VARIANT_TYPE** = **32**
 
-- **PROPERTY_HINT_PROPERTY_OF_VARIANT_TYPE** = **31**
+- **PROPERTY_HINT_PROPERTY_OF_BASE_TYPE** = **33**
 
-- **PROPERTY_HINT_PROPERTY_OF_BASE_TYPE** = **32**
+- **PROPERTY_HINT_PROPERTY_OF_INSTANCE** = **34**
 
-- **PROPERTY_HINT_PROPERTY_OF_INSTANCE** = **33**
+- **PROPERTY_HINT_PROPERTY_OF_SCRIPT** = **35**
 
-- **PROPERTY_HINT_PROPERTY_OF_SCRIPT** = **34**
+- **PROPERTY_HINT_OBJECT_TOO_BIG** = **36**
 
-- **PROPERTY_HINT_OBJECT_TOO_BIG** = **35**
+- **PROPERTY_HINT_NODE_PATH_VALID_TYPES** = **37**
 
-- **PROPERTY_HINT_NODE_PATH_VALID_TYPES** = **36**
+- **PROPERTY_HINT_SAVE_FILE** = **38**
 
-- **PROPERTY_HINT_SAVE_FILE** = **37**
+- **PROPERTY_HINT_GLOBAL_SAVE_FILE** = **39**
 
-- **PROPERTY_HINT_INT_IS_OBJECTID** = **38**
+- **PROPERTY_HINT_INT_IS_OBJECTID** = **40**
 
-- **PROPERTY_HINT_INT_IS_POINTER** = **40**
+- **PROPERTY_HINT_INT_IS_POINTER** = **42**
 
-- **PROPERTY_HINT_ARRAY_TYPE** = **39**
+- **PROPERTY_HINT_ARRAY_TYPE** = **41**
 
-- **PROPERTY_HINT_LOCALE_ID** = **41** --- Hints that a string property is a locale code. Editing it will show a locale dialog for picking language and country.
+- **PROPERTY_HINT_LOCALE_ID** = **43** --- Hints that a string property is a locale code. Editing it will show a locale dialog for picking language and country.
 
-- **PROPERTY_HINT_LOCALIZABLE_STRING** = **42** --- Hints that a dictionary property is string translation map. Dictionary keys are locale codes and, values are translated strings.
+- **PROPERTY_HINT_LOCALIZABLE_STRING** = **44** --- Hints that a dictionary property is string translation map. Dictionary keys are locale codes and, values are translated strings.
 
-- **PROPERTY_HINT_MAX** = **43**
+- **PROPERTY_HINT_MAX** = **45**
 
 ----
 

+ 3 - 3
classes/class_animationlibrary.rst

@@ -42,19 +42,19 @@ Signals
 
 .. _class_AnimationLibrary_signal_animation_added:
 
-- **animation_added** **(** :ref:`Animation<class_Animation>` name **)**
+- **animation_added** **(** :ref:`StringName<class_StringName>` name **)**
 
 ----
 
 .. _class_AnimationLibrary_signal_animation_removed:
 
-- **animation_removed** **(** :ref:`Animation<class_Animation>` name **)**
+- **animation_removed** **(** :ref:`StringName<class_StringName>` name **)**
 
 ----
 
 .. _class_AnimationLibrary_signal_animation_renamed:
 
-- **animation_renamed** **(** :ref:`Animation<class_Animation>` name, :ref:`Animation<class_Animation>` to_name **)**
+- **animation_renamed** **(** :ref:`StringName<class_StringName>` name, :ref:`StringName<class_StringName>` to_name **)**
 
 Property Descriptions
 ---------------------

+ 9 - 3
classes/class_array.rst

@@ -279,9 +279,10 @@ The callable's method should take one :ref:`Variant<class_Variant>` parameter (t
 ::
 
     func _ready():
-        print([6, 10, 6].all(greater_than_5))  # Prints True (3 elements evaluate to `true`).
-        print([4, 10, 4].all(greater_than_5))  # Prints False (1 elements evaluate to `true`).
-        print([4, 4, 4].all(greater_than_5))  # Prints False (0 elements evaluate to `true`).
+        print([6, 10, 6].all(greater_than_5))  # Prints True (3/3 elements evaluate to `true`).
+        print([4, 10, 4].all(greater_than_5))  # Prints False (1/3 elements evaluate to `true`).
+        print([4, 4, 4].all(greater_than_5))  # Prints False (0/3 elements evaluate to `true`).
+        print([].all(greater_than_5))  # Prints True (0/0 elements evaluate to `true`).
     
         print([6, 10, 6].all(func(number): return number > 5))  # Prints True. Same as the first line above, but using lambda function.
     
@@ -292,6 +293,8 @@ See also :ref:`any<class_Array_method_any>`, :ref:`filter<class_Array_method_fil
 
 \ **Note:** Unlike relying on the size of an array returned by :ref:`filter<class_Array_method_filter>`, this method will return as early as possible to improve performance (especially with large arrays).
 
+\ **Note:** For an empty array, this method `always <https://en.wikipedia.org/wiki/Vacuous_truth>`__ returns ``true``.
+
 ----
 
 .. _class_Array_method_any:
@@ -308,6 +311,7 @@ The callable's method should take one :ref:`Variant<class_Variant>` parameter (t
         print([6, 10, 6].any(greater_than_5))  # Prints True (3 elements evaluate to `true`).
         print([4, 10, 4].any(greater_than_5))  # Prints True (1 elements evaluate to `true`).
         print([4, 4, 4].any(greater_than_5))  # Prints False (0 elements evaluate to `true`).
+        print([].any(greater_than_5))  # Prints False (0 elements evaluate to `true`).
     
         print([6, 10, 6].any(func(number): return number > 5))  # Prints True. Same as the first line above, but using lambda function.
     
@@ -318,6 +322,8 @@ See also :ref:`all<class_Array_method_all>`, :ref:`filter<class_Array_method_fil
 
 \ **Note:** Unlike relying on the size of an array returned by :ref:`filter<class_Array_method_filter>`, this method will return as early as possible to improve performance (especially with large arrays).
 
+\ **Note:** For an empty array, this method always returns ``false``.
+
 ----
 
 .. _class_Array_method_append:

+ 57 - 57
classes/class_astar2d.rst

@@ -21,57 +21,57 @@ This is a wrapper for the :ref:`AStar3D<class_AStar3D>` class which uses 2D vect
 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| |const|                              |
-+-----------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :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| |const|                            |
-+-----------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| 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:`PackedInt32Array<class_PackedInt32Array>`     | :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:`PackedInt32Array<class_PackedInt32Array>`     | :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:`Array<class_Array>`                           | :ref:`get_point_ids<class_AStar2D_method_get_point_ids>` **(** **)**                                                                                                           |
-+-----------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`PackedVector2Array<class_PackedVector2Array>` | :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:`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| |const|                                            |
++-----------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :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| |const|                                          |
++-----------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| 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:`PackedInt64Array<class_PackedInt64Array>`     | :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:`PackedInt64Array<class_PackedInt64Array>`     | :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:`Array<class_Array>`                           | :ref:`get_point_ids<class_AStar2D_method_get_point_ids>` **(** **)**                                                                                                                         |
++-----------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`PackedVector2Array<class_PackedVector2Array>` | :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:`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
 -------------------
@@ -125,9 +125,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.
 
 ----
 
@@ -168,9 +168,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.
 
 ----
 
@@ -225,7 +225,7 @@ The result is in the segment that goes from ``y = 0`` to ``y = 5``. It's the clo
 
 .. _class_AStar2D_method_get_id_path:
 
-- :ref:`PackedInt32Array<class_PackedInt32Array>` **get_id_path** **(** :ref:`int<class_int>` from_id, :ref:`int<class_int>` to_id **)**
+- :ref:`PackedInt64Array<class_PackedInt64Array>` **get_id_path** **(** :ref:`int<class_int>` from_id, :ref:`int<class_int>` to_id **)**
 
 Returns an array with the IDs of the points that form the path found by AStar2D between the given points. The array is ordered from the starting point to the ending point of the path.
 
@@ -277,7 +277,7 @@ Returns the capacity of the structure backing the points, useful in conjunction
 
 .. _class_AStar2D_method_get_point_connections:
 
-- :ref:`PackedInt32Array<class_PackedInt32Array>` **get_point_connections** **(** :ref:`int<class_int>` id **)**
+- :ref:`PackedInt64Array<class_PackedInt64Array>` **get_point_connections** **(** :ref:`int<class_int>` id **)**
 
 Returns an array with the IDs of the points that form the connection with the given point.
 

+ 4 - 4
classes/class_astar3d.rst

@@ -80,11 +80,11 @@ Methods
 +-----------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
 | :ref:`Vector3<class_Vector3>`                       | :ref:`get_closest_position_in_segment<class_AStar3D_method_get_closest_position_in_segment>` **(** :ref:`Vector3<class_Vector3>` to_position **)** |const|                                   |
 +-----------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`PackedInt32Array<class_PackedInt32Array>`     | :ref:`get_id_path<class_AStar3D_method_get_id_path>` **(** :ref:`int<class_int>` from_id, :ref:`int<class_int>` to_id **)**                                                                  |
+| :ref:`PackedInt64Array<class_PackedInt64Array>`     | :ref:`get_id_path<class_AStar3D_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_AStar3D_method_get_point_capacity>` **(** **)** |const|                                                                                                       |
 +-----------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`PackedInt32Array<class_PackedInt32Array>`     | :ref:`get_point_connections<class_AStar3D_method_get_point_connections>` **(** :ref:`int<class_int>` id **)**                                                                                |
+| :ref:`PackedInt64Array<class_PackedInt64Array>`     | :ref:`get_point_connections<class_AStar3D_method_get_point_connections>` **(** :ref:`int<class_int>` id **)**                                                                                |
 +-----------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
 | :ref:`int<class_int>`                               | :ref:`get_point_count<class_AStar3D_method_get_point_count>` **(** **)** |const|                                                                                                             |
 +-----------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
@@ -263,7 +263,7 @@ The result is in the segment that goes from ``y = 0`` to ``y = 5``. It's the clo
 
 .. _class_AStar3D_method_get_id_path:
 
-- :ref:`PackedInt32Array<class_PackedInt32Array>` **get_id_path** **(** :ref:`int<class_int>` from_id, :ref:`int<class_int>` to_id **)**
+- :ref:`PackedInt64Array<class_PackedInt64Array>` **get_id_path** **(** :ref:`int<class_int>` from_id, :ref:`int<class_int>` to_id **)**
 
 Returns an array with the IDs of the points that form the path found by AStar3D between the given points. The array is ordered from the starting point to the ending point of the path.
 
@@ -314,7 +314,7 @@ Returns the capacity of the structure backing the points, useful in conjunction
 
 .. _class_AStar3D_method_get_point_connections:
 
-- :ref:`PackedInt32Array<class_PackedInt32Array>` **get_point_connections** **(** :ref:`int<class_int>` id **)**
+- :ref:`PackedInt64Array<class_PackedInt64Array>` **get_point_connections** **(** :ref:`int<class_int>` id **)**
 
 Returns an array with the IDs of the points that form the connection with the given point.
 

+ 5 - 2
classes/class_audioeffectamplify.rst

@@ -13,13 +13,16 @@ AudioEffectAmplify
 
 Adds an amplifying audio effect to an audio bus.
 
-Increases or decreases the volume of the selected audio bus.
-
 Description
 -----------
 
 Increases or decreases the volume being routed through the audio bus.
 
+Tutorials
+---------
+
+- :doc:`Audio buses <../tutorials/audio/audio_buses>`
+
 Properties
 ----------
 

+ 5 - 0
classes/class_audioeffectbandlimitfilter.rst

@@ -18,6 +18,11 @@ Description
 
 Limits the frequencies in a range around the :ref:`AudioEffectFilter.cutoff_hz<class_AudioEffectFilter_property_cutoff_hz>` and allows frequencies outside of this range to pass.
 
+Tutorials
+---------
+
+- :doc:`Audio buses <../tutorials/audio/audio_buses>`
+
 .. |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.)`

+ 5 - 0
classes/class_audioeffectbandpassfilter.rst

@@ -18,6 +18,11 @@ Description
 
 Attenuates the frequencies inside of a range around the :ref:`AudioEffectFilter.cutoff_hz<class_AudioEffectFilter_property_cutoff_hz>` and cuts frequencies outside of this band.
 
+Tutorials
+---------
+
+- :doc:`Audio buses <../tutorials/audio/audio_buses>`
+
 .. |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.)`

+ 6 - 1
classes/class_audioeffectcapture.rst

@@ -18,7 +18,12 @@ 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.
+
+Tutorials
+---------
+
+- :doc:`Audio buses <../tutorials/audio/audio_buses>`
 
 Properties
 ----------

+ 5 - 0
classes/class_audioeffectchorus.rst

@@ -18,6 +18,11 @@ Description
 
 Adds a chorus audio effect. The effect applies a filter with voices to duplicate the audio source and manipulate it through the filter.
 
+Tutorials
+---------
+
+- :doc:`Audio buses <../tutorials/audio/audio_buses>`
+
 Properties
 ----------
 

+ 5 - 0
classes/class_audioeffectcompressor.rst

@@ -30,6 +30,11 @@ Compressor has many uses in the mix:
 
 - Accentuates transients by using a wider attack, making effects sound more punchy.
 
+Tutorials
+---------
+
+- :doc:`Audio buses <../tutorials/audio/audio_buses>`
+
 Properties
 ----------
 

+ 5 - 0
classes/class_audioeffectdelay.rst

@@ -20,6 +20,11 @@ Description
 
 Plays input signal back after a period of time. The delayed signal may be played back multiple times to create the sound of a repeating, decaying echo. Delay effects range from a subtle echo effect to a pronounced blending of previous sounds with new sounds.
 
+Tutorials
+---------
+
+- :doc:`Audio buses <../tutorials/audio/audio_buses>`
+
 Properties
 ----------
 

+ 5 - 0
classes/class_audioeffecteq.rst

@@ -22,6 +22,11 @@ Description
 
 AudioEffectEQ gives you control over frequencies. Use it to compensate for existing deficiencies in audio. AudioEffectEQs are useful on the Master bus to completely master a mix and give it more character. They are also useful when a game is run on a mobile device, to adjust the mix to that kind of speakers (it can be added but disabled when headphones are plugged).
 
+Tutorials
+---------
+
+- :doc:`Audio buses <../tutorials/audio/audio_buses>`
+
 Methods
 -------
 

+ 5 - 0
classes/class_audioeffecteq10.rst

@@ -42,6 +42,11 @@ Band 10: 16000 Hz
 
 See also :ref:`AudioEffectEQ<class_AudioEffectEQ>`, :ref:`AudioEffectEQ6<class_AudioEffectEQ6>`, :ref:`AudioEffectEQ21<class_AudioEffectEQ21>`.
 
+Tutorials
+---------
+
+- :doc:`Audio buses <../tutorials/audio/audio_buses>`
+
 .. |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.)`

+ 5 - 0
classes/class_audioeffecteq21.rst

@@ -64,6 +64,11 @@ Band 21: 22000 Hz
 
 See also :ref:`AudioEffectEQ<class_AudioEffectEQ>`, :ref:`AudioEffectEQ6<class_AudioEffectEQ6>`, :ref:`AudioEffectEQ10<class_AudioEffectEQ10>`.
 
+Tutorials
+---------
+
+- :doc:`Audio buses <../tutorials/audio/audio_buses>`
+
 .. |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.)`

+ 6 - 1
classes/class_audioeffecteq6.rst

@@ -11,7 +11,7 @@ AudioEffectEQ6
 
 **Inherits:** :ref:`AudioEffectEQ<class_AudioEffectEQ>` **<** :ref:`AudioEffect<class_AudioEffect>` **<** :ref:`Resource<class_Resource>` **<** :ref:`RefCounted<class_RefCounted>` **<** :ref:`Object<class_Object>`
 
-Adds a 6-band equalizer audio effect to an Audio bus. Gives you control over frequencies from 32 Hz to 10000 Hz.
+Adds a 6-band equalizer audio effect to an audio bus. Gives you control over frequencies from 32 Hz to 10000 Hz.
 
 Each frequency can be modulated between -60/+24 dB.
 
@@ -34,6 +34,11 @@ Band 6: 10000 Hz
 
 See also :ref:`AudioEffectEQ<class_AudioEffectEQ>`, :ref:`AudioEffectEQ10<class_AudioEffectEQ10>`, :ref:`AudioEffectEQ21<class_AudioEffectEQ21>`.
 
+Tutorials
+---------
+
+- :doc:`Audio buses <../tutorials/audio/audio_buses>`
+
 .. |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.)`

+ 6 - 1
classes/class_audioeffecthighpassfilter.rst

@@ -11,13 +11,18 @@ AudioEffectHighPassFilter
 
 **Inherits:** :ref:`AudioEffectFilter<class_AudioEffectFilter>` **<** :ref:`AudioEffect<class_AudioEffect>` **<** :ref:`Resource<class_Resource>` **<** :ref:`RefCounted<class_RefCounted>` **<** :ref:`Object<class_Object>`
 
-Adds a high-pass filter to the Audio Bus.
+Adds a high-pass filter to the audio bus.
 
 Description
 -----------
 
 Cuts frequencies lower than the :ref:`AudioEffectFilter.cutoff_hz<class_AudioEffectFilter_property_cutoff_hz>` and allows higher frequencies to pass.
 
+Tutorials
+---------
+
+- :doc:`Audio buses <../tutorials/audio/audio_buses>`
+
 .. |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.)`

+ 5 - 0
classes/class_audioeffecthighshelffilter.rst

@@ -11,6 +11,11 @@ AudioEffectHighShelfFilter
 
 **Inherits:** :ref:`AudioEffectFilter<class_AudioEffectFilter>` **<** :ref:`AudioEffect<class_AudioEffect>` **<** :ref:`Resource<class_Resource>` **<** :ref:`RefCounted<class_RefCounted>` **<** :ref:`Object<class_Object>`
 
+Adds a high-shelf filter to the audio bus.
+
+Description
+-----------
+
 Reduces all frequencies above the :ref:`AudioEffectFilter.cutoff_hz<class_AudioEffectFilter_property_cutoff_hz>`.
 
 Tutorials

+ 5 - 0
classes/class_audioeffectlimiter.rst

@@ -20,6 +20,11 @@ A limiter is similar to a compressor, but it's less flexible and designed to dis
 
 Soft clipping starts to reduce the peaks a little below the threshold level and progressively increases its effect as the input level increases such that the threshold is never exceeded.
 
+Tutorials
+---------
+
+- :doc:`Audio buses <../tutorials/audio/audio_buses>`
+
 Properties
 ----------
 

+ 6 - 1
classes/class_audioeffectlowpassfilter.rst

@@ -11,13 +11,18 @@ AudioEffectLowPassFilter
 
 **Inherits:** :ref:`AudioEffectFilter<class_AudioEffectFilter>` **<** :ref:`AudioEffect<class_AudioEffect>` **<** :ref:`Resource<class_Resource>` **<** :ref:`RefCounted<class_RefCounted>` **<** :ref:`Object<class_Object>`
 
-Adds a low-pass filter to the Audio bus.
+Adds a low-pass filter to the audio bus.
 
 Description
 -----------
 
 Cuts frequencies higher than the :ref:`AudioEffectFilter.cutoff_hz<class_AudioEffectFilter_property_cutoff_hz>` and allows lower frequencies to pass.
 
+Tutorials
+---------
+
+- :doc:`Audio buses <../tutorials/audio/audio_buses>`
+
 .. |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.)`

+ 5 - 0
classes/class_audioeffectlowshelffilter.rst

@@ -11,6 +11,11 @@ AudioEffectLowShelfFilter
 
 **Inherits:** :ref:`AudioEffectFilter<class_AudioEffectFilter>` **<** :ref:`AudioEffect<class_AudioEffect>` **<** :ref:`Resource<class_Resource>` **<** :ref:`RefCounted<class_RefCounted>` **<** :ref:`Object<class_Object>`
 
+Adds a low-shelf filter to the audio bus.
+
+Description
+-----------
+
 Reduces all frequencies below the :ref:`AudioEffectFilter.cutoff_hz<class_AudioEffectFilter_property_cutoff_hz>`.
 
 Tutorials

+ 5 - 0
classes/class_audioeffectnotchfilter.rst

@@ -18,6 +18,11 @@ Description
 
 Attenuates frequencies in a narrow band around the :ref:`AudioEffectFilter.cutoff_hz<class_AudioEffectFilter_property_cutoff_hz>` and cuts frequencies outside of this range.
 
+Tutorials
+---------
+
+- :doc:`Audio buses <../tutorials/audio/audio_buses>`
+
 .. |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.)`

+ 6 - 1
classes/class_audioeffectpanner.rst

@@ -11,13 +11,18 @@ AudioEffectPanner
 
 **Inherits:** :ref:`AudioEffect<class_AudioEffect>` **<** :ref:`Resource<class_Resource>` **<** :ref:`RefCounted<class_RefCounted>` **<** :ref:`Object<class_Object>`
 
-Adds a panner audio effect to an Audio bus. Pans sound left or right.
+Adds a panner audio effect to an audio bus. Pans sound left or right.
 
 Description
 -----------
 
 Determines how much of an audio signal is sent to the left and right buses.
 
+Tutorials
+---------
+
+- :doc:`Audio buses <../tutorials/audio/audio_buses>`
+
 Properties
 ----------
 

+ 6 - 1
classes/class_audioeffectphaser.rst

@@ -11,7 +11,7 @@ AudioEffectPhaser
 
 **Inherits:** :ref:`AudioEffect<class_AudioEffect>` **<** :ref:`Resource<class_Resource>` **<** :ref:`RefCounted<class_RefCounted>` **<** :ref:`Object<class_Object>`
 
-Adds a phaser audio effect to an Audio bus.
+Adds a phaser audio effect to an audio bus.
 
 Combines the original signal with a copy that is slightly out of phase with the original.
 
@@ -20,6 +20,11 @@ Description
 
 Combines phase-shifted signals with the original signal. The movement of the phase-shifted signals is controlled using a low-frequency oscillator.
 
+Tutorials
+---------
+
+- :doc:`Audio buses <../tutorials/audio/audio_buses>`
+
 Properties
 ----------
 

+ 6 - 1
classes/class_audioeffectpitchshift.rst

@@ -11,7 +11,7 @@ AudioEffectPitchShift
 
 **Inherits:** :ref:`AudioEffect<class_AudioEffect>` **<** :ref:`Resource<class_Resource>` **<** :ref:`RefCounted<class_RefCounted>` **<** :ref:`Object<class_Object>`
 
-Adds a pitch-shifting audio effect to an Audio bus.
+Adds a pitch-shifting audio effect to an audio bus.
 
 Raises or lowers the pitch of original sound.
 
@@ -20,6 +20,11 @@ Description
 
 Allows modulation of pitch independently of tempo. All frequencies can be increased/decreased with minimal effect on transients.
 
+Tutorials
+---------
+
+- :doc:`Audio buses <../tutorials/audio/audio_buses>`
+
 Properties
 ----------
 

+ 3 - 3
classes/class_audioeffectreverb.rst

@@ -13,16 +13,16 @@ AudioEffectReverb
 
 Adds a reverberation audio effect to an Audio bus.
 
-Simulates the sound of acoustic environments such as rooms, concert halls, caverns, or an open spaces.
-
 Description
 -----------
 
-Simulates rooms of different sizes. Its parameters can be adjusted to simulate the sound of a specific room.
+Simulates the sound of acoustic environments such as rooms, concert halls, caverns, or an open spaces.
 
 Tutorials
 ---------
 
+- :doc:`Audio buses <../tutorials/audio/audio_buses>`
+
 - `Third Person Shooter Demo <https://godotengine.org/asset-library/asset/678>`__
 
 Properties

+ 5 - 0
classes/class_audioeffectstereoenhance.rst

@@ -18,6 +18,11 @@ Description
 
 An audio effect that can be used to adjust the intensity of stereo panning.
 
+Tutorials
+---------
+
+- :doc:`Audio buses <../tutorials/audio/audio_buses>`
+
 Properties
 ----------
 

+ 41 - 23
classes/class_audiostreamplayer2d.rst

@@ -30,29 +30,31 @@ Tutorials
 Properties
 ----------
 
-+---------------------------------------+------------------------------------------------------------------------+---------------+
-| :ref:`int<class_int>`                 | :ref:`area_mask<class_AudioStreamPlayer2D_property_area_mask>`         | ``1``         |
-+---------------------------------------+------------------------------------------------------------------------+---------------+
-| :ref:`float<class_float>`             | :ref:`attenuation<class_AudioStreamPlayer2D_property_attenuation>`     | ``1.0``       |
-+---------------------------------------+------------------------------------------------------------------------+---------------+
-| :ref:`bool<class_bool>`               | :ref:`autoplay<class_AudioStreamPlayer2D_property_autoplay>`           | ``false``     |
-+---------------------------------------+------------------------------------------------------------------------+---------------+
-| :ref:`StringName<class_StringName>`   | :ref:`bus<class_AudioStreamPlayer2D_property_bus>`                     | ``&"Master"`` |
-+---------------------------------------+------------------------------------------------------------------------+---------------+
-| :ref:`float<class_float>`             | :ref:`max_distance<class_AudioStreamPlayer2D_property_max_distance>`   | ``2000.0``    |
-+---------------------------------------+------------------------------------------------------------------------+---------------+
-| :ref:`int<class_int>`                 | :ref:`max_polyphony<class_AudioStreamPlayer2D_property_max_polyphony>` | ``1``         |
-+---------------------------------------+------------------------------------------------------------------------+---------------+
-| :ref:`float<class_float>`             | :ref:`pitch_scale<class_AudioStreamPlayer2D_property_pitch_scale>`     | ``1.0``       |
-+---------------------------------------+------------------------------------------------------------------------+---------------+
-| :ref:`bool<class_bool>`               | :ref:`playing<class_AudioStreamPlayer2D_property_playing>`             | ``false``     |
-+---------------------------------------+------------------------------------------------------------------------+---------------+
-| :ref:`AudioStream<class_AudioStream>` | :ref:`stream<class_AudioStreamPlayer2D_property_stream>`               |               |
-+---------------------------------------+------------------------------------------------------------------------+---------------+
-| :ref:`bool<class_bool>`               | :ref:`stream_paused<class_AudioStreamPlayer2D_property_stream_paused>` | ``false``     |
-+---------------------------------------+------------------------------------------------------------------------+---------------+
-| :ref:`float<class_float>`             | :ref:`volume_db<class_AudioStreamPlayer2D_property_volume_db>`         | ``0.0``       |
-+---------------------------------------+------------------------------------------------------------------------+---------------+
++---------------------------------------+------------------------------------------------------------------------------+---------------+
+| :ref:`int<class_int>`                 | :ref:`area_mask<class_AudioStreamPlayer2D_property_area_mask>`               | ``1``         |
++---------------------------------------+------------------------------------------------------------------------------+---------------+
+| :ref:`float<class_float>`             | :ref:`attenuation<class_AudioStreamPlayer2D_property_attenuation>`           | ``1.0``       |
++---------------------------------------+------------------------------------------------------------------------------+---------------+
+| :ref:`bool<class_bool>`               | :ref:`autoplay<class_AudioStreamPlayer2D_property_autoplay>`                 | ``false``     |
++---------------------------------------+------------------------------------------------------------------------------+---------------+
+| :ref:`StringName<class_StringName>`   | :ref:`bus<class_AudioStreamPlayer2D_property_bus>`                           | ``&"Master"`` |
++---------------------------------------+------------------------------------------------------------------------------+---------------+
+| :ref:`float<class_float>`             | :ref:`max_distance<class_AudioStreamPlayer2D_property_max_distance>`         | ``2000.0``    |
++---------------------------------------+------------------------------------------------------------------------------+---------------+
+| :ref:`int<class_int>`                 | :ref:`max_polyphony<class_AudioStreamPlayer2D_property_max_polyphony>`       | ``1``         |
++---------------------------------------+------------------------------------------------------------------------------+---------------+
+| :ref:`float<class_float>`             | :ref:`panning_strength<class_AudioStreamPlayer2D_property_panning_strength>` | ``1.0``       |
++---------------------------------------+------------------------------------------------------------------------------+---------------+
+| :ref:`float<class_float>`             | :ref:`pitch_scale<class_AudioStreamPlayer2D_property_pitch_scale>`           | ``1.0``       |
++---------------------------------------+------------------------------------------------------------------------------+---------------+
+| :ref:`bool<class_bool>`               | :ref:`playing<class_AudioStreamPlayer2D_property_playing>`                   | ``false``     |
++---------------------------------------+------------------------------------------------------------------------------+---------------+
+| :ref:`AudioStream<class_AudioStream>` | :ref:`stream<class_AudioStreamPlayer2D_property_stream>`                     |               |
++---------------------------------------+------------------------------------------------------------------------------+---------------+
+| :ref:`bool<class_bool>`               | :ref:`stream_paused<class_AudioStreamPlayer2D_property_stream_paused>`       | ``false``     |
++---------------------------------------+------------------------------------------------------------------------------+---------------+
+| :ref:`float<class_float>`             | :ref:`volume_db<class_AudioStreamPlayer2D_property_volume_db>`               | ``0.0``       |
++---------------------------------------+------------------------------------------------------------------------------+---------------+
 
 Methods
 -------
@@ -177,6 +179,22 @@ The maximum number of sounds this node can play at the same time. Playing additi
 
 ----
 
+.. _class_AudioStreamPlayer2D_property_panning_strength:
+
+- :ref:`float<class_float>` **panning_strength**
+
++-----------+-----------------------------+
+| *Default* | ``1.0``                     |
++-----------+-----------------------------+
+| *Setter*  | set_panning_strength(value) |
++-----------+-----------------------------+
+| *Getter*  | get_panning_strength()      |
++-----------+-----------------------------+
+
+Scales the panning strength for this node by multiplying the base :ref:`ProjectSettings.audio/general/2d_panning_strength<class_ProjectSettings_property_audio/general/2d_panning_strength>` with this factor. Higher values will pan audio from left to right more dramatically than lower values.
+
+----
+
 .. _class_AudioStreamPlayer2D_property_pitch_scale:
 
 - :ref:`float<class_float>` **pitch_scale**

+ 18 - 0
classes/class_audiostreamplayer3d.rst

@@ -59,6 +59,8 @@ Properties
 +--------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------+---------------+
 | :ref:`int<class_int>`                                              | :ref:`max_polyphony<class_AudioStreamPlayer3D_property_max_polyphony>`                                               | ``1``         |
 +--------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------+---------------+
+| :ref:`float<class_float>`                                          | :ref:`panning_strength<class_AudioStreamPlayer3D_property_panning_strength>`                                         | ``1.0``       |
++--------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------+---------------+
 | :ref:`float<class_float>`                                          | :ref:`pitch_scale<class_AudioStreamPlayer3D_property_pitch_scale>`                                                   | ``1.0``       |
 +--------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------+---------------+
 | :ref:`bool<class_bool>`                                            | :ref:`playing<class_AudioStreamPlayer3D_property_playing>`                                                           | ``false``     |
@@ -348,6 +350,22 @@ The maximum number of sounds this node can play at the same time. Playing additi
 
 ----
 
+.. _class_AudioStreamPlayer3D_property_panning_strength:
+
+- :ref:`float<class_float>` **panning_strength**
+
++-----------+-----------------------------+
+| *Default* | ``1.0``                     |
++-----------+-----------------------------+
+| *Setter*  | set_panning_strength(value) |
++-----------+-----------------------------+
+| *Getter*  | get_panning_strength()      |
++-----------+-----------------------------+
+
+Scales the panning strength for this node by multiplying the base :ref:`ProjectSettings.audio/general/3d_panning_strength<class_ProjectSettings_property_audio/general/3d_panning_strength>` with this factor. Higher values will pan audio from left to right more dramatically than lower values.
+
+----
+
 .. _class_AudioStreamPlayer3D_property_pitch_scale:
 
 - :ref:`float<class_float>` **pitch_scale**

+ 2 - 0
classes/class_basematerial3d.rst

@@ -2359,6 +2359,8 @@ Texture used to control the subsurface scattering strength. Stored in the red te
 
 Filter flags for the texture. See :ref:`TextureFilter<enum_BaseMaterial3D_TextureFilter>` for options.
 
+\ **Note:** :ref:`heightmap_texture<class_BaseMaterial3D_property_heightmap_texture>` is always sampled with linear filtering, even if nearest-neighbor filtering is selected here. This is to ensure the heightmap effect looks as intended. If you need sharper height transitions between pixels, resize the heightmap texture in an image editor with nearest-neighbor filtering.
+
 ----
 
 .. _class_BaseMaterial3D_property_texture_repeat:

+ 37 - 19
classes/class_button.rst

@@ -69,25 +69,27 @@ Tutorials
 Properties
 ----------
 
-+-------------------------------------------------------------------+-------------------------------------------------------------+-----------+
-| :ref:`HorizontalAlignment<enum_@GlobalScope_HorizontalAlignment>` | :ref:`alignment<class_Button_property_alignment>`           | ``1``     |
-+-------------------------------------------------------------------+-------------------------------------------------------------+-----------+
-| :ref:`bool<class_bool>`                                           | :ref:`clip_text<class_Button_property_clip_text>`           | ``false`` |
-+-------------------------------------------------------------------+-------------------------------------------------------------+-----------+
-| :ref:`bool<class_bool>`                                           | :ref:`expand_icon<class_Button_property_expand_icon>`       | ``false`` |
-+-------------------------------------------------------------------+-------------------------------------------------------------+-----------+
-| :ref:`bool<class_bool>`                                           | :ref:`flat<class_Button_property_flat>`                     | ``false`` |
-+-------------------------------------------------------------------+-------------------------------------------------------------+-----------+
-| :ref:`Texture2D<class_Texture2D>`                                 | :ref:`icon<class_Button_property_icon>`                     |           |
-+-------------------------------------------------------------------+-------------------------------------------------------------+-----------+
-| :ref:`HorizontalAlignment<enum_@GlobalScope_HorizontalAlignment>` | :ref:`icon_alignment<class_Button_property_icon_alignment>` | ``0``     |
-+-------------------------------------------------------------------+-------------------------------------------------------------+-----------+
-| :ref:`String<class_String>`                                       | :ref:`language<class_Button_property_language>`             | ``""``    |
-+-------------------------------------------------------------------+-------------------------------------------------------------+-----------+
-| :ref:`String<class_String>`                                       | :ref:`text<class_Button_property_text>`                     | ``""``    |
-+-------------------------------------------------------------------+-------------------------------------------------------------+-----------+
-| :ref:`TextDirection<enum_Control_TextDirection>`                  | :ref:`text_direction<class_Button_property_text_direction>` | ``0``     |
-+-------------------------------------------------------------------+-------------------------------------------------------------+-----------+
++-------------------------------------------------------------------+---------------------------------------------------------------------------+-----------+
+| :ref:`HorizontalAlignment<enum_@GlobalScope_HorizontalAlignment>` | :ref:`alignment<class_Button_property_alignment>`                         | ``1``     |
++-------------------------------------------------------------------+---------------------------------------------------------------------------+-----------+
+| :ref:`bool<class_bool>`                                           | :ref:`clip_text<class_Button_property_clip_text>`                         | ``false`` |
++-------------------------------------------------------------------+---------------------------------------------------------------------------+-----------+
+| :ref:`bool<class_bool>`                                           | :ref:`expand_icon<class_Button_property_expand_icon>`                     | ``false`` |
++-------------------------------------------------------------------+---------------------------------------------------------------------------+-----------+
+| :ref:`bool<class_bool>`                                           | :ref:`flat<class_Button_property_flat>`                                   | ``false`` |
++-------------------------------------------------------------------+---------------------------------------------------------------------------+-----------+
+| :ref:`Texture2D<class_Texture2D>`                                 | :ref:`icon<class_Button_property_icon>`                                   |           |
++-------------------------------------------------------------------+---------------------------------------------------------------------------+-----------+
+| :ref:`HorizontalAlignment<enum_@GlobalScope_HorizontalAlignment>` | :ref:`icon_alignment<class_Button_property_icon_alignment>`               | ``0``     |
++-------------------------------------------------------------------+---------------------------------------------------------------------------+-----------+
+| :ref:`String<class_String>`                                       | :ref:`language<class_Button_property_language>`                           | ``""``    |
++-------------------------------------------------------------------+---------------------------------------------------------------------------+-----------+
+| :ref:`String<class_String>`                                       | :ref:`text<class_Button_property_text>`                                   | ``""``    |
++-------------------------------------------------------------------+---------------------------------------------------------------------------+-----------+
+| :ref:`TextDirection<enum_Control_TextDirection>`                  | :ref:`text_direction<class_Button_property_text_direction>`               | ``0``     |
++-------------------------------------------------------------------+---------------------------------------------------------------------------+-----------+
+| :ref:`OverrunBehavior<enum_TextServer_OverrunBehavior>`           | :ref:`text_overrun_behavior<class_Button_property_text_overrun_behavior>` | ``0``     |
++-------------------------------------------------------------------+---------------------------------------------------------------------------+-----------+
 
 Methods
 -------
@@ -294,6 +296,22 @@ The button's text that will be displayed inside the button's area.
 
 Base text writing direction.
 
+----
+
+.. _class_Button_property_text_overrun_behavior:
+
+- :ref:`OverrunBehavior<enum_TextServer_OverrunBehavior>` **text_overrun_behavior**
+
++-----------+----------------------------------+
+| *Default* | ``0``                            |
++-----------+----------------------------------+
+| *Setter*  | set_text_overrun_behavior(value) |
++-----------+----------------------------------+
+| *Getter*  | get_text_overrun_behavior()      |
++-----------+----------------------------------+
+
+Sets the clipping behavior when the text exceeds the node's bounding rectangle. See :ref:`OverrunBehavior<enum_TextServer_OverrunBehavior>` for a description of all modes.
+
 Method Descriptions
 -------------------
 

+ 1 - 1
classes/class_colorpickerbutton.rst

@@ -20,7 +20,7 @@ Encapsulates a :ref:`ColorPicker<class_ColorPicker>` making it accessible by pre
 
 See also :ref:`BaseButton<class_BaseButton>` which contains common properties and methods associated with this node.
 
-\ **Note:** By default, the button may not be wide enough for the color preview swatch to be visible. Make sure to set :ref:`Control.minimum_size<class_Control_property_minimum_size>` to a big enough value to give the button enough space.
+\ **Note:** By default, the button may not be wide enough for the color preview swatch to be visible. Make sure to set :ref:`Control.custom_minimum_size<class_Control_property_custom_minimum_size>` to a big enough value to give the button enough space.
 
 Tutorials
 ---------

+ 23 - 23
classes/class_control.rst

@@ -65,6 +65,8 @@ Properties
 +------------------------------------------------------+----------------------------------------------------------------------------------------------+-------------------+
 | :ref:`bool<class_bool>`                              | :ref:`clip_contents<class_Control_property_clip_contents>`                                   | ``false``         |
 +------------------------------------------------------+----------------------------------------------------------------------------------------------+-------------------+
+| :ref:`Vector2<class_Vector2>`                        | :ref:`custom_minimum_size<class_Control_property_custom_minimum_size>`                       | ``Vector2(0, 0)`` |
++------------------------------------------------------+----------------------------------------------------------------------------------------------+-------------------+
 | :ref:`FocusMode<enum_Control_FocusMode>`             | :ref:`focus_mode<class_Control_property_focus_mode>`                                         | ``0``             |
 +------------------------------------------------------+----------------------------------------------------------------------------------------------+-------------------+
 | :ref:`NodePath<class_NodePath>`                      | :ref:`focus_neighbor_bottom<class_Control_property_focus_neighbor_bottom>`                   | ``NodePath("")``  |
@@ -89,8 +91,6 @@ Properties
 +------------------------------------------------------+----------------------------------------------------------------------------------------------+-------------------+
 | :ref:`LayoutDirection<enum_Control_LayoutDirection>` | :ref:`layout_direction<class_Control_property_layout_direction>`                             | ``0``             |
 +------------------------------------------------------+----------------------------------------------------------------------------------------------+-------------------+
-| :ref:`Vector2<class_Vector2>`                        | :ref:`minimum_size<class_Control_property_minimum_size>`                                     | ``Vector2(0, 0)`` |
-+------------------------------------------------------+----------------------------------------------------------------------------------------------+-------------------+
 | :ref:`CursorShape<enum_Control_CursorShape>`         | :ref:`mouse_default_cursor_shape<class_Control_property_mouse_default_cursor_shape>`         | ``0``             |
 +------------------------------------------------------+----------------------------------------------------------------------------------------------+-------------------+
 | :ref:`MouseFilter<enum_Control_MouseFilter>`         | :ref:`mouse_filter<class_Control_property_mouse_filter>`                                     | ``0``             |
@@ -825,6 +825,22 @@ Enables whether rendering of :ref:`CanvasItem<class_CanvasItem>` based children
 
 ----
 
+.. _class_Control_property_custom_minimum_size:
+
+- :ref:`Vector2<class_Vector2>` **custom_minimum_size**
+
++-----------+--------------------------------+
+| *Default* | ``Vector2(0, 0)``              |
++-----------+--------------------------------+
+| *Setter*  | set_custom_minimum_size(value) |
++-----------+--------------------------------+
+| *Getter*  | get_custom_minimum_size()      |
++-----------+--------------------------------+
+
+The minimum size of the node's bounding rectangle. If you set it to a value greater than (0, 0), the node's bounding rectangle will always have at least this size, even if its content is smaller. If it's set to (0, 0), the node sizes automatically to fit its content, be it a texture or child nodes.
+
+----
+
 .. _class_Control_property_focus_mode:
 
 - :ref:`FocusMode<enum_Control_FocusMode>` **focus_mode**
@@ -1040,22 +1056,6 @@ Controls layout direction and text writing direction. Right-to-left layouts are
 
 ----
 
-.. _class_Control_property_minimum_size:
-
-- :ref:`Vector2<class_Vector2>` **minimum_size**
-
-+-----------+--------------------------------+
-| *Default* | ``Vector2(0, 0)``              |
-+-----------+--------------------------------+
-| *Setter*  | set_custom_minimum_size(value) |
-+-----------+--------------------------------+
-| *Getter*  | get_custom_minimum_size()      |
-+-----------+--------------------------------+
-
-The minimum size of the node's bounding rectangle. If you set it to a value greater than (0, 0), the node's bounding rectangle will always have at least this size, even if its content is smaller. If it's set to (0, 0), the node sizes automatically to fit its content, be it a texture or child nodes.
-
-----
-
 .. _class_Control_property_mouse_default_cursor_shape:
 
 - :ref:`CursorShape<enum_Control_CursorShape>` **mouse_default_cursor_shape**
@@ -1442,7 +1442,7 @@ A preview that will follow the mouse that should represent the data can be set w
 
 - :ref:`Vector2<class_Vector2>` **_get_minimum_size** **(** **)** |virtual| |const|
 
-Virtual method to be implemented by the user. Returns the minimum size for this control. Alternative to :ref:`minimum_size<class_Control_property_minimum_size>` for controlling minimum size via code. The actual minimum size will be the max value of these two (in each axis separately).
+Virtual method to be implemented by the user. Returns the minimum size for this control. Alternative to :ref:`custom_minimum_size<class_Control_property_custom_minimum_size>` for controlling minimum size via code. The actual minimum size will be the max value of these two (in each axis separately).
 
 If not overridden, defaults to :ref:`Vector2.ZERO<class_Vector2_constant_ZERO>`.
 
@@ -1522,7 +1522,7 @@ The returned node must be of type ``Control`` or Control-derived. It can have ch
 
 The returned node will be added as child to a :ref:`PopupPanel<class_PopupPanel>`, so you should only provide the contents of that panel. That :ref:`PopupPanel<class_PopupPanel>` can be themed using :ref:`Theme.set_stylebox<class_Theme_method_set_stylebox>` for the type ``"TooltipPanel"`` (see :ref:`hint_tooltip<class_Control_property_hint_tooltip>` for an example).
 
-\ **Note:** The tooltip is shrunk to minimal size. If you want to ensure it's fully visible, you might want to set its :ref:`minimum_size<class_Control_property_minimum_size>` to some non-zero value.
+\ **Note:** The tooltip is shrunk to minimal size. If you want to ensure it's fully visible, you might want to set its :ref:`custom_minimum_size<class_Control_property_custom_minimum_size>` to some non-zero value.
 
 \ **Note:** The node (and any relevant children) should be :ref:`CanvasItem.visible<class_CanvasItem_property_visible>` when returned, otherwise, the viewport that instantiates it will not be able to calculate its minimum size reliably.
 
@@ -1770,7 +1770,7 @@ Returns :ref:`offset_left<class_Control_property_offset_left>` and :ref:`offset_
 
 - :ref:`Vector2<class_Vector2>` **get_combined_minimum_size** **(** **)** |const|
 
-Returns combined minimum size from :ref:`minimum_size<class_Control_property_minimum_size>` and :ref:`get_minimum_size<class_Control_method_get_minimum_size>`.
+Returns combined minimum size from :ref:`custom_minimum_size<class_Control_property_custom_minimum_size>` and :ref:`get_minimum_size<class_Control_method_get_minimum_size>`.
 
 ----
 
@@ -1810,7 +1810,7 @@ Returns the position and size of the control relative to the top-left corner of
 
 - :ref:`Vector2<class_Vector2>` **get_minimum_size** **(** **)** |const|
 
-Returns the minimum size for this control. See :ref:`minimum_size<class_Control_property_minimum_size>`.
+Returns the minimum size for this control. See :ref:`custom_minimum_size<class_Control_property_custom_minimum_size>`.
 
 ----
 
@@ -2458,7 +2458,7 @@ If ``keep_offsets`` is ``true``, control's anchors will be updated instead of of
 
 - void **update_minimum_size** **(** **)**
 
-Invalidates the size cache in this node and in parent nodes up to top level. Intended to be used with :ref:`get_minimum_size<class_Control_method_get_minimum_size>` when the return value is changed. Setting :ref:`minimum_size<class_Control_property_minimum_size>` directly calls this method automatically.
+Invalidates the size cache in this node and in parent nodes up to top level. Intended to be used with :ref:`get_minimum_size<class_Control_method_get_minimum_size>` when the return value is changed. Setting :ref:`custom_minimum_size<class_Control_property_custom_minimum_size>` directly calls this method automatically.
 
 ----
 

+ 8 - 4
classes/class_curvetexture.rst

@@ -18,6 +18,8 @@ Description
 
 Renders a given :ref:`Curve<class_Curve>` provided to it. Simplifies the task of drawing curves and/or saving them as image files.
 
+If you need to store up to 3 curves within a single texture, use :ref:`CurveXYZTexture<class_CurveXYZTexture>` instead. See also :ref:`GradientTexture1D<class_GradientTexture1D>` and :ref:`GradientTexture2D<class_GradientTexture2D>`.
+
 Properties
 ----------
 
@@ -40,9 +42,9 @@ Enumerations
 
 enum **TextureMode**:
 
-- **TEXTURE_MODE_RGB** = **0**
+- **TEXTURE_MODE_RGB** = **0** --- Store the curve equally across the red, green and blue channels. This uses more video memory, but is more compatible with shaders that only read the green and blue values.
 
-- **TEXTURE_MODE_RED** = **1**
+- **TEXTURE_MODE_RED** = **1** --- Store the curve only in the red channel. This saves video memory, but some custom shaders may not be able to work with this.
 
 Property Descriptions
 ---------------------
@@ -57,7 +59,7 @@ Property Descriptions
 | *Getter* | get_curve()      |
 +----------+------------------+
 
-The ``curve`` rendered onto the texture.
+The :ref:`Curve<class_Curve>` that is rendered onto the texture.
 
 ----
 
@@ -73,6 +75,8 @@ The ``curve`` rendered onto the texture.
 | *Getter*  | get_texture_mode()      |
 +-----------+-------------------------+
 
+The format the texture should be generated with. When passing a CurveTexture as a input to a :ref:`Shader<class_Shader>`, this may need to be adjusted.
+
 ----
 
 .. _class_CurveTexture_property_width:
@@ -87,7 +91,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.)`

+ 15 - 0
classes/class_curvexyztexture.rst

@@ -11,7 +11,14 @@ CurveXYZTexture
 
 **Inherits:** :ref:`Texture2D<class_Texture2D>` **<** :ref:`Texture<class_Texture>` **<** :ref:`Resource<class_Resource>` **<** :ref:`RefCounted<class_RefCounted>` **<** :ref:`Object<class_Object>`
 
+A texture that shows 3 different curves (stored on the red, green and blue color channels).
 
+Description
+-----------
+
+Renders 3 given :ref:`Curve<class_Curve>`\ s provided to it, on the red, green and blue channels respectively. Compared to using separate :ref:`CurveTexture<class_CurveTexture>`\ s, this further simplifies the task of drawing curves and/or saving them as image files.
+
+If you only need to store one curve within a single texture, use :ref:`CurveTexture<class_CurveTexture>` instead. See also :ref:`GradientTexture1D<class_GradientTexture1D>` and :ref:`GradientTexture2D<class_GradientTexture2D>`.
 
 Properties
 ----------
@@ -39,6 +46,8 @@ Property Descriptions
 | *Getter* | get_curve_x()      |
 +----------+--------------------+
 
+The :ref:`Curve<class_Curve>` that is rendered onto the texture's red channel.
+
 ----
 
 .. _class_CurveXYZTexture_property_curve_y:
@@ -51,6 +60,8 @@ Property Descriptions
 | *Getter* | get_curve_y()      |
 +----------+--------------------+
 
+The :ref:`Curve<class_Curve>` that is rendered onto the texture's green channel.
+
 ----
 
 .. _class_CurveXYZTexture_property_curve_z:
@@ -63,6 +74,8 @@ Property Descriptions
 | *Getter* | get_curve_z()      |
 +----------+--------------------+
 
+The :ref:`Curve<class_Curve>` that is rendered onto the texture's blue channel.
+
 ----
 
 .. _class_CurveXYZTexture_property_width:
@@ -77,6 +90,8 @@ Property Descriptions
 | *Getter*  | get_width()      |
 +-----------+------------------+
 
+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.)`
 .. |vararg| replace:: :abbr:`vararg (This method accepts any number of arguments after the ones described here.)`

+ 38 - 4
classes/class_editorplugin.rst

@@ -611,7 +611,19 @@ For main screen plugins, this appears at the top of the screen, to the right of
 
 - :ref:`Dictionary<class_Dictionary>` **_get_state** **(** **)** |virtual| |const|
 
-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
 
 ----
 
@@ -619,7 +631,15 @@ Gets the state of your plugin editor. This is used when saving the scene (so sta
 
 - void **_get_window_layout** **(** :ref:`ConfigFile<class_ConfigFile>` configuration **)** |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)
 
 ----
 
@@ -661,7 +681,15 @@ This method is called after the editor saves the project or when it's closed. It
 
 - 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)
 
 ----
 
@@ -669,7 +697,13 @@ Restore the state saved by :ref:`_get_state<class_EditorPlugin_method__get_state
 
 - void **_set_window_layout** **(** :ref:`ConfigFile<class_ConfigFile>` configuration **)** |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)
 
 ----
 

+ 32 - 2
classes/class_fontdata.rst

@@ -15,7 +15,7 @@ Font source data and prerendered glyph cache, imported from dynamic or bitmap fo
 
 Supported font formats:
 
-- Dynamic font importer: TrueType (.ttf), OpenType (.otf), WOFF (.woff), WOFF2 (.woff2), Type 1 (.pfb, .pfm).
+- Dynamic font importer: TrueType (.ttf), TrueType collection (.ttc), OpenType (.otf), OpenType collection (.otc), WOFF (.woff), WOFF2 (.woff2), Type 1 (.pfb, .pfm).
 
 - Bitmap font importer: AngelCode BMFont (.fnt, .font), text and binary (version 3) format variants.
 
@@ -31,6 +31,8 @@ Properties
 +-----------------------------------------------------------------+-------------------------------------------------------------------------------------------------------+-----------------------------------+
 | :ref:`float<class_float>`                                       | :ref:`embolden<class_FontData_property_embolden>`                                                     | ``0.0``                           |
 +-----------------------------------------------------------------+-------------------------------------------------------------------------------------------------------+-----------------------------------+
+| :ref:`int<class_int>`                                           | :ref:`face_index<class_FontData_property_face_index>`                                                 | ``0``                             |
++-----------------------------------------------------------------+-------------------------------------------------------------------------------------------------------+-----------------------------------+
 | :ref:`int<class_int>`                                           | :ref:`fixed_size<class_FontData_property_fixed_size>`                                                 | ``0``                             |
 +-----------------------------------------------------------------+-------------------------------------------------------------------------------------------------------+-----------------------------------+
 | :ref:`String<class_String>`                                     | :ref:`font_name<class_FontData_property_font_name>`                                                   | ``""``                            |
@@ -84,6 +86,8 @@ Methods
 +---------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
 | :ref:`float<class_float>`                         | :ref:`get_descent<class_FontData_method_get_descent>` **(** :ref:`int<class_int>` cache_index, :ref:`int<class_int>` size **)** |const|                                                                                                                |
 +---------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`int<class_int>`                             | :ref:`get_face_count<class_FontData_method_get_face_count>` **(** **)** |const|                                                                                                                                                                        |
++---------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
 | :ref:`Vector2<class_Vector2>`                     | :ref:`get_glyph_advance<class_FontData_method_get_glyph_advance>` **(** :ref:`int<class_int>` cache_index, :ref:`int<class_int>` size, :ref:`int<class_int>` glyph **)** |const|                                                                       |
 +---------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
 | :ref:`int<class_int>`                             | :ref:`get_glyph_index<class_FontData_method_get_glyph_index>` **(** :ref:`int<class_int>` size, :ref:`int<class_int>` char, :ref:`int<class_int>` variation_selector **)** |const|                                                                     |
@@ -248,6 +252,22 @@ If is not equal to zero, emboldens the font outlines. Negative values reduce the
 
 ----
 
+.. _class_FontData_property_face_index:
+
+- :ref:`int<class_int>` **face_index**
+
++-----------+-----------------------+
+| *Default* | ``0``                 |
++-----------+-----------------------+
+| *Setter*  | set_face_index(value) |
++-----------+-----------------------+
+| *Getter*  | get_face_index()      |
++-----------+-----------------------+
+
+Active face index in the TrueType / OpenType collection file.
+
+----
+
 .. _class_FontData_property_fixed_size:
 
 - :ref:`int<class_int>` **fixed_size**
@@ -559,6 +579,14 @@ Returns font descent (number of pixels below the baseline).
 
 ----
 
+.. _class_FontData_method_get_face_count:
+
+- :ref:`int<class_int>` **get_face_count** **(** **)** |const|
+
+Returns number of faces in the TrueType / OpenType collection.
+
+----
+
 .. _class_FontData_method_get_glyph_advance:
 
 - :ref:`Vector2<class_Vector2>` **get_glyph_advance** **(** :ref:`int<class_int>` cache_index, :ref:`int<class_int>` size, :ref:`int<class_int>` glyph **)** |const|
@@ -801,7 +829,9 @@ Loads an AngelCode BMFont (.fnt, .font) bitmap font from file ``path``.
 
 - :ref:`Error<enum_@GlobalScope_Error>` **load_dynamic_font** **(** :ref:`String<class_String>` path **)**
 
-Loads a TrueType (.ttf), OpenType (.otf), WOFF (.woff), WOFF2 (.woff2) or Type 1 (.pfb, .pfm) dynamic font from file ``path``.
+Loads a TrueType (.ttf), TrueType collection (.ttc), OpenType (.otf), OpenType collection (.otc), WOFF (.woff), WOFF2 (.woff2) or Type 1 (.pfb, .pfm) dynamic font from file ``path``.
+
+\ **Note:** Use :ref:`face_index<class_FontData_property_face_index>` to select specific face from the collection file.
 
 \ **Warning:** This method should only be used in the editor or in cases when you need to load external fonts at run-time, such as fonts located at the ``user://`` directory.
 

+ 1 - 1
classes/class_gradienttexture1d.rst

@@ -16,7 +16,7 @@ Gradient-filled texture.
 Description
 -----------
 
-GradientTexture1D 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_GradientTexture1D_property_width>`).
+GradientTexture1D 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_GradientTexture1D_property_width>`). See also :ref:`GradientTexture2D<class_GradientTexture2D>`, :ref:`CurveTexture<class_CurveTexture>` and :ref:`CurveXYZTexture<class_CurveXYZTexture>`.
 
 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:`GradientTexture1D<class_GradientTexture1D>`, :ref:`CurveTexture<class_CurveTexture>` and :ref:`CurveXYZTexture<class_CurveXYZTexture>`.
 
 Properties
 ----------

+ 21 - 1
classes/class_gridmap.rst

@@ -86,6 +86,8 @@ Methods
 +---------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
 | :ref:`Array<class_Array>`       | :ref:`get_meshes<class_GridMap_method_get_meshes>` **(** **)** |const|                                                                                                           |
 +---------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`bool<class_bool>`         | :ref:`get_navigation_layer_value<class_GridMap_method_get_navigation_layer_value>` **(** :ref:`int<class_int>` layer_number **)** |const|                                        |
++---------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
 | :ref:`Array<class_Array>`       | :ref:`get_used_cells<class_GridMap_method_get_used_cells>` **(** **)** |const|                                                                                                   |
 +---------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
 | :ref:`Array<class_Array>`       | :ref:`get_used_cells_by_item<class_GridMap_method_get_used_cells_by_item>` **(** :ref:`int<class_int>` item **)** |const|                                                        |
@@ -102,6 +104,8 @@ Methods
 +---------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
 | void                            | :ref:`set_collision_mask_value<class_GridMap_method_set_collision_mask_value>` **(** :ref:`int<class_int>` layer_number, :ref:`bool<class_bool>` value **)**                     |
 +---------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| void                            | :ref:`set_navigation_layer_value<class_GridMap_method_set_navigation_layer_value>` **(** :ref:`int<class_int>` layer_number, :ref:`bool<class_bool>` value **)**                 |
++---------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
 | :ref:`Vector3i<class_Vector3i>` | :ref:`world_to_map<class_GridMap_method_world_to_map>` **(** :ref:`Vector3<class_Vector3>` world_position **)** |const|                                                          |
 +---------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
 
@@ -300,7 +304,7 @@ The assigned :ref:`MeshLibrary<class_MeshLibrary>`.
 | *Getter*  | get_navigation_layers()      |
 +-----------+------------------------------+
 
-The navigation layers the GridMap generates its navigable regions in.
+A bitmask determining all navigation layers the GridMap generated navigation regions belong to. These navigation layers can be checked upon when requesting a path with :ref:`NavigationServer3D.map_get_path<class_NavigationServer3D_method_map_get_path>`.
 
 ----
 
@@ -387,6 +391,14 @@ Returns an array of :ref:`Transform3D<class_Transform3D>` and :ref:`Mesh<class_M
 
 ----
 
+.. _class_GridMap_method_get_navigation_layer_value:
+
+- :ref:`bool<class_bool>` **get_navigation_layer_value** **(** :ref:`int<class_int>` layer_number **)** |const|
+
+Returns whether or not the specified layer of the :ref:`navigation_layers<class_GridMap_property_navigation_layers>` bitmask is enabled, given a ``layer_number`` between 1 and 32.
+
+----
+
 .. _class_GridMap_method_get_used_cells:
 
 - :ref:`Array<class_Array>` **get_used_cells** **(** **)** |const|
@@ -451,6 +463,14 @@ Based on ``value``, enables or disables the specified layer in the :ref:`collisi
 
 ----
 
+.. _class_GridMap_method_set_navigation_layer_value:
+
+- void **set_navigation_layer_value** **(** :ref:`int<class_int>` layer_number, :ref:`bool<class_bool>` value **)**
+
+Based on ``value``, enables or disables the specified layer in the :ref:`navigation_layers<class_GridMap_property_navigation_layers>` bitmask, given a ``layer_number`` between 1 and 32.
+
+----
+
 .. _class_GridMap_method_world_to_map:
 
 - :ref:`Vector3i<class_Vector3i>` **world_to_map** **(** :ref:`Vector3<class_Vector3>` world_position **)** |const|

+ 17 - 13
classes/class_httprequest.rst

@@ -35,7 +35,7 @@ Can be used to make HTTP requests, i.e. download or upload files or web content
         # Create an HTTP request node and connect its completion signal.
         var http_request = HTTPRequest.new()
         add_child(http_request)
-        http_request.connect("request_completed", self, "_http_request_completed")
+        http_request.request_completed.connect(self._http_request_completed)
     
         # Perform a GET request. The URL below returns JSON as of writing.
         var error = http_request.request("https://httpbin.org/get")
@@ -45,7 +45,7 @@ Can be used to make HTTP requests, i.e. download or upload files or web content
         # Perform a POST request. The URL below returns JSON as of writing.
         # Note: Don't make simultaneous requests using a single HTTPRequest node.
         # The snippet below is provided for reference only.
-        var body = {"name": "Godette"}
+        var body = JSON.new().stringify({"name": "Godette"})
         error = http_request.request("https://httpbin.org/post", [], true, HTTPClient.METHOD_POST, body)
         if error != OK:
             push_error("An error occurred in the HTTP request.")
@@ -53,7 +53,9 @@ Can be used to make HTTP requests, i.e. download or upload files or web content
     
     # Called when the HTTP request is completed.
     func _http_request_completed(result, response_code, headers, body):
-        var response = parse_json(body.get_string_from_utf8())
+        var json = JSON.new()
+        json.parse(body.get_string_from_utf8())
+        var response = json.get_data()
     
         # Will print the user agent string used by the HTTPRequest node (as recognized by httpbin.org).
         print(response.headers["User-Agent"])
@@ -65,7 +67,7 @@ Can be used to make HTTP requests, i.e. download or upload files or web content
         // Create an HTTP request node and connect its completion signal.
         var httpRequest = new HTTPRequest();
         AddChild(httpRequest);
-        httpRequest.Connect("request_completed", this, nameof(HttpRequestCompleted));
+        httpRequest.RequestCompleted += HttpRequestCompleted;
     
         // Perform a GET request. The URL below returns JSON as of writing.
         Error error = httpRequest.Request("https://httpbin.org/get");
@@ -77,21 +79,24 @@ Can be used to make HTTP requests, i.e. download or upload files or web content
         // Perform a POST request. The URL below returns JSON as of writing.
         // Note: Don't make simultaneous requests using a single HTTPRequest node.
         // The snippet below is provided for reference only.
-        string[] body = { "name", "Godette" };
-        // GDScript to_json is non existent, so we use JSON.Print() here.
-        error = httpRequest.Request("https://httpbin.org/post", null, true, HTTPClient.Method.Post, JSON.Print(body));
+        string body = new JSON().Stringify(new Godot.Collections.Dictionary
+        {
+            { "name", "Godette" }
+        });
+        error = httpRequest.Request("https://httpbin.org/post", null, true, HTTPClient.Method.Post, body);
         if (error != Error.Ok)
         {
             GD.PushError("An error occurred in the HTTP request.");
         }
     }
     
-    
     // Called when the HTTP request is completed.
     private void HttpRequestCompleted(int result, int response_code, string[] headers, byte[] body)
     {
-        // GDScript parse_json is non existent so we have to use JSON.parse, which has a slightly different syntax.
-        var response = JSON.Parse(body.GetStringFromUTF8()).Result as Godot.Collections.Dictionary;
+        var json = new JSON();
+        json.Parse(body.GetStringFromUTF8());
+        var response = json.GetData() as Godot.Collections.Dictionary;
+    
         // Will print the user agent string used by the HTTPRequest node (as recognized by httpbin.org).
         GD.Print((response["headers"] as Godot.Collections.Dictionary)["User-Agent"]);
     }
@@ -109,7 +114,7 @@ Can be used to make HTTP requests, i.e. download or upload files or web content
         # Create an HTTP request node and connect its completion signal.
         var http_request = HTTPRequest.new()
         add_child(http_request)
-        http_request.connect("request_completed", self, "_http_request_completed")
+        http_request.request_completed.connect(self._http_request_completed)
     
         # Perform the HTTP request. The URL below returns a PNG image as of writing.
         var error = http_request.request("https://via.placeholder.com/512")
@@ -142,7 +147,7 @@ Can be used to make HTTP requests, i.e. download or upload files or web content
         // Create an HTTP request node and connect its completion signal.
         var httpRequest = new HTTPRequest();
         AddChild(httpRequest);
-        httpRequest.Connect("request_completed", this, nameof(HttpRequestCompleted));
+        httpRequest.RequestCompleted += HttpRequestCompleted;
     
         // Perform the HTTP request. The URL below returns a PNG image as of writing.
         Error error = httpRequest.Request("https://via.placeholder.com/512");
@@ -152,7 +157,6 @@ Can be used to make HTTP requests, i.e. download or upload files or web content
         }
     }
     
-    
     // Called when the HTTP request is completed.
     private void HttpRequestCompleted(int result, int response_code, string[] headers, byte[] body)
     {

+ 59 - 1
classes/class_image.rst

@@ -138,10 +138,20 @@ Methods
 +-----------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
 | :ref:`Error<enum_@GlobalScope_Error>`         | :ref:`save_exr<class_Image_method_save_exr>` **(** :ref:`String<class_String>` path, :ref:`bool<class_bool>` grayscale=false **)** |const|                                                                                                                           |
 +-----------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`PackedByteArray<class_PackedByteArray>` | :ref:`save_exr_to_buffer<class_Image_method_save_exr_to_buffer>` **(** :ref:`bool<class_bool>` grayscale=false **)** |const|                                                                                                                                         |
++-----------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`Error<enum_@GlobalScope_Error>`         | :ref:`save_jpg<class_Image_method_save_jpg>` **(** :ref:`String<class_String>` path, :ref:`float<class_float>` quality=0.75 **)** |const|                                                                                                                            |
++-----------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`PackedByteArray<class_PackedByteArray>` | :ref:`save_jpg_to_buffer<class_Image_method_save_jpg_to_buffer>` **(** :ref:`float<class_float>` quality=0.75 **)** |const|                                                                                                                                          |
++-----------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
 | :ref:`Error<enum_@GlobalScope_Error>`         | :ref:`save_png<class_Image_method_save_png>` **(** :ref:`String<class_String>` path **)** |const|                                                                                                                                                                    |
 +-----------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
 | :ref:`PackedByteArray<class_PackedByteArray>` | :ref:`save_png_to_buffer<class_Image_method_save_png_to_buffer>` **(** **)** |const|                                                                                                                                                                                 |
 +-----------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`Error<enum_@GlobalScope_Error>`         | :ref:`save_webp<class_Image_method_save_webp>` **(** :ref:`String<class_String>` path, :ref:`bool<class_bool>` lossy=false, :ref:`float<class_float>` quality=0.75 **)** |const|                                                                                     |
++-----------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`PackedByteArray<class_PackedByteArray>` | :ref:`save_webp_to_buffer<class_Image_method_save_webp_to_buffer>` **(** :ref:`bool<class_bool>` lossy=false, :ref:`float<class_float>` quality=0.75 **)** |const|                                                                                                   |
++-----------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
 | void                                          | :ref:`set_pixel<class_Image_method_set_pixel>` **(** :ref:`int<class_int>` x, :ref:`int<class_int>` y, :ref:`Color<class_Color>` color **)**                                                                                                                         |
 +-----------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
 | void                                          | :ref:`set_pixelv<class_Image_method_set_pixelv>` **(** :ref:`Vector2i<class_Vector2i>` point, :ref:`Color<class_Color>` color **)**                                                                                                                                  |
@@ -881,11 +891,41 @@ Saves the image as an EXR file to ``path``. If ``grayscale`` is ``true`` and the
 
 ----
 
+.. _class_Image_method_save_exr_to_buffer:
+
+- :ref:`PackedByteArray<class_PackedByteArray>` **save_exr_to_buffer** **(** :ref:`bool<class_bool>` grayscale=false **)** |const|
+
+Saves the image as an EXR file to a byte array. If ``grayscale`` is ``true`` and the image has only one channel, it will be saved explicitly as monochrome rather than one red channel. This function will return an empty byte array if Godot was compiled without the TinyEXR module.
+
+\ **Note:** The TinyEXR module is disabled in non-editor builds, which means :ref:`save_exr<class_Image_method_save_exr>` will return an empty byte array when it is called from an exported project.
+
+----
+
+.. _class_Image_method_save_jpg:
+
+- :ref:`Error<enum_@GlobalScope_Error>` **save_jpg** **(** :ref:`String<class_String>` path, :ref:`float<class_float>` quality=0.75 **)** |const|
+
+Saves the image as a JPEG file to ``path`` with the specified ``quality`` between ``0.01`` and ``1.0`` (inclusive). Higher ``quality`` values result in better-looking output at the cost of larger file sizes. Recommended ``quality`` values are between ``0.75`` and ``0.90``. Even at quality ``1.00``, JPEG compression remains lossy.
+
+\ **Note:** JPEG does not save an alpha channel. If the ``Image`` contains an alpha channel, the image will still be saved, but the resulting JPEG file won't contain the alpha channel.
+
+----
+
+.. _class_Image_method_save_jpg_to_buffer:
+
+- :ref:`PackedByteArray<class_PackedByteArray>` **save_jpg_to_buffer** **(** :ref:`float<class_float>` quality=0.75 **)** |const|
+
+Saves the image as a JPEG file to a byte array with the specified ``quality`` between ``0.01`` and ``1.0`` (inclusive). Higher ``quality`` values result in better-looking output at the cost of larger byte array sizes (and therefore memory usage). Recommended ``quality`` values are between ``0.75`` and ``0.90``. Even at quality ``1.00``, JPEG compression remains lossy.
+
+\ **Note:** JPEG does not save an alpha channel. If the ``Image`` contains an alpha channel, the image will still be saved, but the resulting byte array won't contain the alpha channel.
+
+----
+
 .. _class_Image_method_save_png:
 
 - :ref:`Error<enum_@GlobalScope_Error>` **save_png** **(** :ref:`String<class_String>` path **)** |const|
 
-Saves the image as a PNG file to ``path``.
+Saves the image as a PNG file to the file at ``path``.
 
 ----
 
@@ -893,6 +933,24 @@ Saves the image as a PNG file to ``path``.
 
 - :ref:`PackedByteArray<class_PackedByteArray>` **save_png_to_buffer** **(** **)** |const|
 
+Saves the image as a PNG file to a byte array.
+
+----
+
+.. _class_Image_method_save_webp:
+
+- :ref:`Error<enum_@GlobalScope_Error>` **save_webp** **(** :ref:`String<class_String>` path, :ref:`bool<class_bool>` lossy=false, :ref:`float<class_float>` quality=0.75 **)** |const|
+
+Saves the image as a WebP (Web Picture) file to the file at ``path``. By default it will save lossless. If ``lossy`` is true, the image will be saved lossy, using the ``quality`` setting between 0.0 and 1.0 (inclusive).
+
+----
+
+.. _class_Image_method_save_webp_to_buffer:
+
+- :ref:`PackedByteArray<class_PackedByteArray>` **save_webp_to_buffer** **(** :ref:`bool<class_bool>` lossy=false, :ref:`float<class_float>` quality=0.75 **)** |const|
+
+Saves the image as a WebP (Web Picture) file to a byte array. By default it will save lossless. If ``lossy`` is true, the image will be saved lossy, using the ``quality`` setting between 0.0 and 1.0 (inclusive).
+
 ----
 
 .. _class_Image_method_set_pixel:

+ 14 - 0
classes/class_importermesh.rst

@@ -39,6 +39,8 @@ Methods
 +-------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
 | void                                            | :ref:`clear<class_ImporterMesh_method_clear>` **(** **)**                                                                                                                                                                                                                                                                                                                  |
 +-------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| void                                            | :ref:`generate_lods<class_ImporterMesh_method_generate_lods>` **(** :ref:`float<class_float>` normal_merge_angle, :ref:`float<class_float>` normal_split_angle **)**                                                                                                                                                                                                       |
++-------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
 | :ref:`int<class_int>`                           | :ref:`get_blend_shape_count<class_ImporterMesh_method_get_blend_shape_count>` **(** **)** |const|                                                                                                                                                                                                                                                                          |
 +-------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
 | :ref:`BlendShapeMode<enum_Mesh_BlendShapeMode>` | :ref:`get_blend_shape_mode<class_ImporterMesh_method_get_blend_shape_mode>` **(** **)** |const|                                                                                                                                                                                                                                                                            |
@@ -120,6 +122,18 @@ Removes all surfaces and blend shapes from this ``ImporterMesh``.
 
 ----
 
+.. _class_ImporterMesh_method_generate_lods:
+
+- void **generate_lods** **(** :ref:`float<class_float>` normal_merge_angle, :ref:`float<class_float>` normal_split_angle **)**
+
+Generates all lods for this ImporterMesh.
+
+\ ``normal_merge_angle`` and ``normal_split_angle`` are in degrees and used in the same way as the importer settings in ``lods``. As a good default, use 25 and 60 respectively.
+
+The number of generated lods can be accessed using :ref:`get_surface_lod_count<class_ImporterMesh_method_get_surface_lod_count>`, and each LOD is available in :ref:`get_surface_lod_size<class_ImporterMesh_method_get_surface_lod_size>` and :ref:`get_surface_lod_indices<class_ImporterMesh_method_get_surface_lod_indices>`.
+
+----
+
 .. _class_ImporterMesh_method_get_blend_shape_count:
 
 - :ref:`int<class_int>` **get_blend_shape_count** **(** **)** |const|

+ 35 - 33
classes/class_itemlist.rst

@@ -24,40 +24,42 @@ Item text only supports single-line strings, newline characters (e.g. ``\n``) in
 
 All ``set_*`` methods allow negative item index, which makes the item accessed from the last one.
 
+\ **Incremental search:** Like :ref:`PopupMenu<class_PopupMenu>` and :ref:`Tree<class_Tree>`, ``ItemList`` supports searching within the list while the control is focused. Press a key that matches the first letter of an item's name to select the first item starting with the given letter. After that point, there are two ways to perform incremental search: 1) Press the same key again before the timeout duration to select the next item starting with the same letter. 2) Press letter keys that match the rest of the word before the timeout duration to match to select the item in question directly. Both of these actions will be reset to the beginning of the list if the timeout duration has passed since the last keystroke was registered. You can adjust the timeout duration by changing :ref:`ProjectSettings.gui/timers/incremental_search_max_interval_msec<class_ProjectSettings_property_gui/timers/incremental_search_max_interval_msec>`.
+
 Properties
 ----------
 
-+------------------------------------------------------------+-----------------------------------------------------------------------------+---------------------------------------------------------------------------+
-| :ref:`bool<class_bool>`                                    | :ref:`allow_reselect<class_ItemList_property_allow_reselect>`               | ``false``                                                                 |
-+------------------------------------------------------------+-----------------------------------------------------------------------------+---------------------------------------------------------------------------+
-| :ref:`bool<class_bool>`                                    | :ref:`allow_rmb_select<class_ItemList_property_allow_rmb_select>`           | ``false``                                                                 |
-+------------------------------------------------------------+-----------------------------------------------------------------------------+---------------------------------------------------------------------------+
-| :ref:`bool<class_bool>`                                    | :ref:`auto_height<class_ItemList_property_auto_height>`                     | ``false``                                                                 |
-+------------------------------------------------------------+-----------------------------------------------------------------------------+---------------------------------------------------------------------------+
-| :ref:`bool<class_bool>`                                    | clip_contents                                                               | ``true`` (overrides :ref:`Control<class_Control_property_clip_contents>`) |
-+------------------------------------------------------------+-----------------------------------------------------------------------------+---------------------------------------------------------------------------+
-| :ref:`int<class_int>`                                      | :ref:`fixed_column_width<class_ItemList_property_fixed_column_width>`       | ``0``                                                                     |
-+------------------------------------------------------------+-----------------------------------------------------------------------------+---------------------------------------------------------------------------+
-| :ref:`Vector2<class_Vector2>`                              | :ref:`fixed_icon_size<class_ItemList_property_fixed_icon_size>`             | ``Vector2(0, 0)``                                                         |
-+------------------------------------------------------------+-----------------------------------------------------------------------------+---------------------------------------------------------------------------+
-| :ref:`FocusMode<enum_Control_FocusMode>`                   | focus_mode                                                                  | ``2`` (overrides :ref:`Control<class_Control_property_focus_mode>`)       |
-+------------------------------------------------------------+-----------------------------------------------------------------------------+---------------------------------------------------------------------------+
-| :ref:`IconMode<enum_ItemList_IconMode>`                    | :ref:`icon_mode<class_ItemList_property_icon_mode>`                         | ``1``                                                                     |
-+------------------------------------------------------------+-----------------------------------------------------------------------------+---------------------------------------------------------------------------+
-| :ref:`float<class_float>`                                  | :ref:`icon_scale<class_ItemList_property_icon_scale>`                       | ``1.0``                                                                   |
-+------------------------------------------------------------+-----------------------------------------------------------------------------+---------------------------------------------------------------------------+
-| :ref:`int<class_int>`                                      | :ref:`item_count<class_ItemList_property_item_count>`                       | ``0``                                                                     |
-+------------------------------------------------------------+-----------------------------------------------------------------------------+---------------------------------------------------------------------------+
-| :ref:`int<class_int>`                                      | :ref:`max_columns<class_ItemList_property_max_columns>`                     | ``1``                                                                     |
-+------------------------------------------------------------+-----------------------------------------------------------------------------+---------------------------------------------------------------------------+
-| :ref:`int<class_int>`                                      | :ref:`max_text_lines<class_ItemList_property_max_text_lines>`               | ``1``                                                                     |
-+------------------------------------------------------------+-----------------------------------------------------------------------------+---------------------------------------------------------------------------+
-| :ref:`bool<class_bool>`                                    | :ref:`same_column_width<class_ItemList_property_same_column_width>`         | ``false``                                                                 |
-+------------------------------------------------------------+-----------------------------------------------------------------------------+---------------------------------------------------------------------------+
-| :ref:`SelectMode<enum_ItemList_SelectMode>`                | :ref:`select_mode<class_ItemList_property_select_mode>`                     | ``0``                                                                     |
-+------------------------------------------------------------+-----------------------------------------------------------------------------+---------------------------------------------------------------------------+
-| :ref:`OverrunBehavior<enum_TextParagraph_OverrunBehavior>` | :ref:`text_overrun_behavior<class_ItemList_property_text_overrun_behavior>` | ``3``                                                                     |
-+------------------------------------------------------------+-----------------------------------------------------------------------------+---------------------------------------------------------------------------+
++---------------------------------------------------------+-----------------------------------------------------------------------------+---------------------------------------------------------------------------+
+| :ref:`bool<class_bool>`                                 | :ref:`allow_reselect<class_ItemList_property_allow_reselect>`               | ``false``                                                                 |
++---------------------------------------------------------+-----------------------------------------------------------------------------+---------------------------------------------------------------------------+
+| :ref:`bool<class_bool>`                                 | :ref:`allow_rmb_select<class_ItemList_property_allow_rmb_select>`           | ``false``                                                                 |
++---------------------------------------------------------+-----------------------------------------------------------------------------+---------------------------------------------------------------------------+
+| :ref:`bool<class_bool>`                                 | :ref:`auto_height<class_ItemList_property_auto_height>`                     | ``false``                                                                 |
++---------------------------------------------------------+-----------------------------------------------------------------------------+---------------------------------------------------------------------------+
+| :ref:`bool<class_bool>`                                 | clip_contents                                                               | ``true`` (overrides :ref:`Control<class_Control_property_clip_contents>`) |
++---------------------------------------------------------+-----------------------------------------------------------------------------+---------------------------------------------------------------------------+
+| :ref:`int<class_int>`                                   | :ref:`fixed_column_width<class_ItemList_property_fixed_column_width>`       | ``0``                                                                     |
++---------------------------------------------------------+-----------------------------------------------------------------------------+---------------------------------------------------------------------------+
+| :ref:`Vector2<class_Vector2>`                           | :ref:`fixed_icon_size<class_ItemList_property_fixed_icon_size>`             | ``Vector2(0, 0)``                                                         |
++---------------------------------------------------------+-----------------------------------------------------------------------------+---------------------------------------------------------------------------+
+| :ref:`FocusMode<enum_Control_FocusMode>`                | focus_mode                                                                  | ``2`` (overrides :ref:`Control<class_Control_property_focus_mode>`)       |
++---------------------------------------------------------+-----------------------------------------------------------------------------+---------------------------------------------------------------------------+
+| :ref:`IconMode<enum_ItemList_IconMode>`                 | :ref:`icon_mode<class_ItemList_property_icon_mode>`                         | ``1``                                                                     |
++---------------------------------------------------------+-----------------------------------------------------------------------------+---------------------------------------------------------------------------+
+| :ref:`float<class_float>`                               | :ref:`icon_scale<class_ItemList_property_icon_scale>`                       | ``1.0``                                                                   |
++---------------------------------------------------------+-----------------------------------------------------------------------------+---------------------------------------------------------------------------+
+| :ref:`int<class_int>`                                   | :ref:`item_count<class_ItemList_property_item_count>`                       | ``0``                                                                     |
++---------------------------------------------------------+-----------------------------------------------------------------------------+---------------------------------------------------------------------------+
+| :ref:`int<class_int>`                                   | :ref:`max_columns<class_ItemList_property_max_columns>`                     | ``1``                                                                     |
++---------------------------------------------------------+-----------------------------------------------------------------------------+---------------------------------------------------------------------------+
+| :ref:`int<class_int>`                                   | :ref:`max_text_lines<class_ItemList_property_max_text_lines>`               | ``1``                                                                     |
++---------------------------------------------------------+-----------------------------------------------------------------------------+---------------------------------------------------------------------------+
+| :ref:`bool<class_bool>`                                 | :ref:`same_column_width<class_ItemList_property_same_column_width>`         | ``false``                                                                 |
++---------------------------------------------------------+-----------------------------------------------------------------------------+---------------------------------------------------------------------------+
+| :ref:`SelectMode<enum_ItemList_SelectMode>`             | :ref:`select_mode<class_ItemList_property_select_mode>`                     | ``0``                                                                     |
++---------------------------------------------------------+-----------------------------------------------------------------------------+---------------------------------------------------------------------------+
+| :ref:`OverrunBehavior<enum_TextServer_OverrunBehavior>` | :ref:`text_overrun_behavior<class_ItemList_property_text_overrun_behavior>` | ``3``                                                                     |
++---------------------------------------------------------+-----------------------------------------------------------------------------+---------------------------------------------------------------------------+
 
 Methods
 -------
@@ -478,7 +480,7 @@ Allows single or multiple item selection. See the :ref:`SelectMode<enum_ItemList
 
 .. _class_ItemList_property_text_overrun_behavior:
 
-- :ref:`OverrunBehavior<enum_TextParagraph_OverrunBehavior>` **text_overrun_behavior**
+- :ref:`OverrunBehavior<enum_TextServer_OverrunBehavior>` **text_overrun_behavior**
 
 +-----------+----------------------------------+
 | *Default* | ``3``                            |
@@ -488,7 +490,7 @@ Allows single or multiple item selection. See the :ref:`SelectMode<enum_ItemList
 | *Getter*  | get_text_overrun_behavior()      |
 +-----------+----------------------------------+
 
-Sets the clipping behavior when the text exceeds an item's bounding rectangle. See :ref:`OverrunBehavior<enum_TextParagraph_OverrunBehavior>` for a description of all modes.
+Sets the clipping behavior when the text exceeds an item's bounding rectangle. See :ref:`OverrunBehavior<enum_TextServer_OverrunBehavior>` for a description of all modes.
 
 Method Descriptions
 -------------------

+ 43 - 118
classes/class_label.rst

@@ -28,43 +28,43 @@ Tutorials
 Properties
 ----------
 
-+------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------+
-| :ref:`AutowrapMode<enum_Label_AutowrapMode>`                           | :ref:`autowrap_mode<class_Label_property_autowrap_mode>`                                                 | ``0``                                                                        |
-+------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------+
-| :ref:`bool<class_bool>`                                                | :ref:`clip_text<class_Label_property_clip_text>`                                                         | ``false``                                                                    |
-+------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------+
-| :ref:`HorizontalAlignment<enum_@GlobalScope_HorizontalAlignment>`      | :ref:`horizontal_alignment<class_Label_property_horizontal_alignment>`                                   | ``0``                                                                        |
-+------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------+
-| :ref:`String<class_String>`                                            | :ref:`language<class_Label_property_language>`                                                           | ``""``                                                                       |
-+------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------+
-| :ref:`int<class_int>`                                                  | :ref:`lines_skipped<class_Label_property_lines_skipped>`                                                 | ``0``                                                                        |
-+------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------+
-| :ref:`int<class_int>`                                                  | :ref:`max_lines_visible<class_Label_property_max_lines_visible>`                                         | ``-1``                                                                       |
-+------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------+
-| :ref:`MouseFilter<enum_Control_MouseFilter>`                           | mouse_filter                                                                                             | ``2`` (overrides :ref:`Control<class_Control_property_mouse_filter>`)        |
-+------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------+
-| :ref:`float<class_float>`                                              | :ref:`percent_visible<class_Label_property_percent_visible>`                                             | ``1.0``                                                                      |
-+------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------+
-| :ref:`int<class_int>`                                                  | size_flags_vertical                                                                                      | ``4`` (overrides :ref:`Control<class_Control_property_size_flags_vertical>`) |
-+------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------+
-| :ref:`StructuredTextParser<enum_TextServer_StructuredTextParser>`      | :ref:`structured_text_bidi_override<class_Label_property_structured_text_bidi_override>`                 | ``0``                                                                        |
-+------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------+
-| :ref:`Array<class_Array>`                                              | :ref:`structured_text_bidi_override_options<class_Label_property_structured_text_bidi_override_options>` | ``[]``                                                                       |
-+------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------+
-| :ref:`String<class_String>`                                            | :ref:`text<class_Label_property_text>`                                                                   | ``""``                                                                       |
-+------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------+
-| :ref:`TextDirection<enum_Control_TextDirection>`                       | :ref:`text_direction<class_Label_property_text_direction>`                                               | ``0``                                                                        |
-+------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------+
-| :ref:`OverrunBehavior<enum_Label_OverrunBehavior>`                     | :ref:`text_overrun_behavior<class_Label_property_text_overrun_behavior>`                                 | ``0``                                                                        |
-+------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------+
-| :ref:`bool<class_bool>`                                                | :ref:`uppercase<class_Label_property_uppercase>`                                                         | ``false``                                                                    |
-+------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------+
-| :ref:`VerticalAlignment<enum_@GlobalScope_VerticalAlignment>`          | :ref:`vertical_alignment<class_Label_property_vertical_alignment>`                                       | ``0``                                                                        |
-+------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------+
-| :ref:`int<class_int>`                                                  | :ref:`visible_characters<class_Label_property_visible_characters>`                                       | ``-1``                                                                       |
-+------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------+
-| :ref:`VisibleCharactersBehavior<enum_Label_VisibleCharactersBehavior>` | :ref:`visible_characters_behavior<class_Label_property_visible_characters_behavior>`                     | ``0``                                                                        |
-+------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------+
++-----------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------+
+| :ref:`AutowrapMode<enum_TextServer_AutowrapMode>`                           | :ref:`autowrap_mode<class_Label_property_autowrap_mode>`                                                 | ``0``                                                                        |
++-----------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------+
+| :ref:`bool<class_bool>`                                                     | :ref:`clip_text<class_Label_property_clip_text>`                                                         | ``false``                                                                    |
++-----------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------+
+| :ref:`HorizontalAlignment<enum_@GlobalScope_HorizontalAlignment>`           | :ref:`horizontal_alignment<class_Label_property_horizontal_alignment>`                                   | ``0``                                                                        |
++-----------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------+
+| :ref:`String<class_String>`                                                 | :ref:`language<class_Label_property_language>`                                                           | ``""``                                                                       |
++-----------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------+
+| :ref:`int<class_int>`                                                       | :ref:`lines_skipped<class_Label_property_lines_skipped>`                                                 | ``0``                                                                        |
++-----------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------+
+| :ref:`int<class_int>`                                                       | :ref:`max_lines_visible<class_Label_property_max_lines_visible>`                                         | ``-1``                                                                       |
++-----------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------+
+| :ref:`MouseFilter<enum_Control_MouseFilter>`                                | mouse_filter                                                                                             | ``2`` (overrides :ref:`Control<class_Control_property_mouse_filter>`)        |
++-----------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------+
+| :ref:`float<class_float>`                                                   | :ref:`percent_visible<class_Label_property_percent_visible>`                                             | ``1.0``                                                                      |
++-----------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------+
+| :ref:`int<class_int>`                                                       | size_flags_vertical                                                                                      | ``4`` (overrides :ref:`Control<class_Control_property_size_flags_vertical>`) |
++-----------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------+
+| :ref:`StructuredTextParser<enum_TextServer_StructuredTextParser>`           | :ref:`structured_text_bidi_override<class_Label_property_structured_text_bidi_override>`                 | ``0``                                                                        |
++-----------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------+
+| :ref:`Array<class_Array>`                                                   | :ref:`structured_text_bidi_override_options<class_Label_property_structured_text_bidi_override_options>` | ``[]``                                                                       |
++-----------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------+
+| :ref:`String<class_String>`                                                 | :ref:`text<class_Label_property_text>`                                                                   | ``""``                                                                       |
++-----------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------+
+| :ref:`TextDirection<enum_Control_TextDirection>`                            | :ref:`text_direction<class_Label_property_text_direction>`                                               | ``0``                                                                        |
++-----------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------+
+| :ref:`OverrunBehavior<enum_TextServer_OverrunBehavior>`                     | :ref:`text_overrun_behavior<class_Label_property_text_overrun_behavior>`                                 | ``0``                                                                        |
++-----------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------+
+| :ref:`bool<class_bool>`                                                     | :ref:`uppercase<class_Label_property_uppercase>`                                                         | ``false``                                                                    |
++-----------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------+
+| :ref:`VerticalAlignment<enum_@GlobalScope_VerticalAlignment>`               | :ref:`vertical_alignment<class_Label_property_vertical_alignment>`                                       | ``0``                                                                        |
++-----------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------+
+| :ref:`int<class_int>`                                                       | :ref:`visible_characters<class_Label_property_visible_characters>`                                       | ``-1``                                                                       |
++-----------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------+
+| :ref:`VisibleCharactersBehavior<enum_TextServer_VisibleCharactersBehavior>` | :ref:`visible_characters_behavior<class_Label_property_visible_characters_behavior>`                     | ``0``                                                                        |
++-----------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------+
 
 Methods
 -------
@@ -112,87 +112,12 @@ Theme Properties
 | :ref:`StyleBox<class_StyleBox>` | :ref:`normal<class_Label_theme_style_normal>`                              |                       |
 +---------------------------------+----------------------------------------------------------------------------+-----------------------+
 
-Enumerations
-------------
-
-.. _enum_Label_AutowrapMode:
-
-.. _class_Label_constant_AUTOWRAP_OFF:
-
-.. _class_Label_constant_AUTOWRAP_ARBITRARY:
-
-.. _class_Label_constant_AUTOWRAP_WORD:
-
-.. _class_Label_constant_AUTOWRAP_WORD_SMART:
-
-enum **AutowrapMode**:
-
-- **AUTOWRAP_OFF** = **0** --- Autowrap is disabled.
-
-- **AUTOWRAP_ARBITRARY** = **1** --- Wraps the text inside the node's bounding rectangle by allowing to break lines at arbitrary positions, which is useful when very limited space is available.
-
-- **AUTOWRAP_WORD** = **2** --- Wraps the text inside the node's bounding rectangle by soft-breaking between words.
-
-- **AUTOWRAP_WORD_SMART** = **3** --- Behaves similarly to :ref:`AUTOWRAP_WORD<class_Label_constant_AUTOWRAP_WORD>`, but force-breaks a word if that single word does not fit in one line.
-
-----
-
-.. _enum_Label_OverrunBehavior:
-
-.. _class_Label_constant_OVERRUN_NO_TRIMMING:
-
-.. _class_Label_constant_OVERRUN_TRIM_CHAR:
-
-.. _class_Label_constant_OVERRUN_TRIM_WORD:
-
-.. _class_Label_constant_OVERRUN_TRIM_ELLIPSIS:
-
-.. _class_Label_constant_OVERRUN_TRIM_WORD_ELLIPSIS:
-
-enum **OverrunBehavior**:
-
-- **OVERRUN_NO_TRIMMING** = **0** --- No text trimming is performed.
-
-- **OVERRUN_TRIM_CHAR** = **1** --- Trims the text per character.
-
-- **OVERRUN_TRIM_WORD** = **2** --- Trims the text per word.
-
-- **OVERRUN_TRIM_ELLIPSIS** = **3** --- Trims the text per character and adds an ellipsis to indicate that parts are hidden.
-
-- **OVERRUN_TRIM_WORD_ELLIPSIS** = **4** --- Trims the text per word and adds an ellipsis to indicate that parts are hidden.
-
-----
-
-.. _enum_Label_VisibleCharactersBehavior:
-
-.. _class_Label_constant_VC_CHARS_BEFORE_SHAPING:
-
-.. _class_Label_constant_VC_CHARS_AFTER_SHAPING:
-
-.. _class_Label_constant_VC_GLYPHS_AUTO:
-
-.. _class_Label_constant_VC_GLYPHS_LTR:
-
-.. _class_Label_constant_VC_GLYPHS_RTL:
-
-enum **VisibleCharactersBehavior**:
-
-- **VC_CHARS_BEFORE_SHAPING** = **0** --- Trims text before the shaping. e.g, increasing :ref:`visible_characters<class_Label_property_visible_characters>` value is visually identical to typing the text.
-
-- **VC_CHARS_AFTER_SHAPING** = **1** --- Displays glyphs that are mapped to the first :ref:`visible_characters<class_Label_property_visible_characters>` characters from the beginning of the text.
-
-- **VC_GLYPHS_AUTO** = **2** --- Displays :ref:`percent_visible<class_Label_property_percent_visible>` glyphs, starting from the left or from the right, depending on :ref:`Control.layout_direction<class_Control_property_layout_direction>` value.
-
-- **VC_GLYPHS_LTR** = **3** --- Displays :ref:`percent_visible<class_Label_property_percent_visible>` glyphs, starting from the left.
-
-- **VC_GLYPHS_RTL** = **4** --- Displays :ref:`percent_visible<class_Label_property_percent_visible>` glyphs, starting from the right.
-
 Property Descriptions
 ---------------------
 
 .. _class_Label_property_autowrap_mode:
 
-- :ref:`AutowrapMode<enum_Label_AutowrapMode>` **autowrap_mode**
+- :ref:`AutowrapMode<enum_TextServer_AutowrapMode>` **autowrap_mode**
 
 +-----------+--------------------------+
 | *Default* | ``0``                    |
@@ -202,7 +127,7 @@ Property Descriptions
 | *Getter*  | get_autowrap_mode()      |
 +-----------+--------------------------+
 
-If set to something other than :ref:`AUTOWRAP_OFF<class_Label_constant_AUTOWRAP_OFF>`, the text gets wrapped inside the node's bounding rectangle. If you resize the node, it will change its height automatically to show all the text. To see how each mode behaves, see :ref:`AutowrapMode<enum_Label_AutowrapMode>`.
+If set to something other than :ref:`TextServer.AUTOWRAP_OFF<class_TextServer_constant_AUTOWRAP_OFF>`, the text gets wrapped inside the node's bounding rectangle. If you resize the node, it will change its height automatically to show all the text. To see how each mode behaves, see :ref:`AutowrapMode<enum_TextServer_AutowrapMode>`.
 
 ----
 
@@ -370,7 +295,7 @@ Base text writing direction.
 
 .. _class_Label_property_text_overrun_behavior:
 
-- :ref:`OverrunBehavior<enum_Label_OverrunBehavior>` **text_overrun_behavior**
+- :ref:`OverrunBehavior<enum_TextServer_OverrunBehavior>` **text_overrun_behavior**
 
 +-----------+----------------------------------+
 | *Default* | ``0``                            |
@@ -380,7 +305,7 @@ Base text writing direction.
 | *Getter*  | get_text_overrun_behavior()      |
 +-----------+----------------------------------+
 
-Sets the clipping behavior when the text exceeds the node's bounding rectangle. See :ref:`OverrunBehavior<enum_Label_OverrunBehavior>` for a description of all modes.
+Sets the clipping behavior when the text exceeds the node's bounding rectangle. See :ref:`OverrunBehavior<enum_TextServer_OverrunBehavior>` for a description of all modes.
 
 ----
 
@@ -436,7 +361,7 @@ Restricts the number of characters to display. Set to -1 to disable.
 
 .. _class_Label_property_visible_characters_behavior:
 
-- :ref:`VisibleCharactersBehavior<enum_Label_VisibleCharactersBehavior>` **visible_characters_behavior**
+- :ref:`VisibleCharactersBehavior<enum_TextServer_VisibleCharactersBehavior>` **visible_characters_behavior**
 
 +-----------+----------------------------------------+
 | *Default* | ``0``                                  |
@@ -446,7 +371,7 @@ Restricts the number of characters to display. Set to -1 to disable.
 | *Getter*  | get_visible_characters_behavior()      |
 +-----------+----------------------------------------+
 
-Sets the clipping behavior when :ref:`visible_characters<class_Label_property_visible_characters>` or :ref:`percent_visible<class_Label_property_percent_visible>` is set. See :ref:`VisibleCharactersBehavior<enum_Label_VisibleCharactersBehavior>` for more info.
+Sets the clipping behavior when :ref:`visible_characters<class_Label_property_visible_characters>` or :ref:`percent_visible<class_Label_property_percent_visible>` is set. See :ref:`VisibleCharactersBehavior<enum_TextServer_VisibleCharactersBehavior>` for more info.
 
 Method Descriptions
 -------------------

+ 3 - 25
classes/class_label3d.rst

@@ -26,7 +26,7 @@ Properties
 +-------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------+-----------------------+
 | :ref:`float<class_float>`                                         | :ref:`alpha_scissor_threshold<class_Label3D_property_alpha_scissor_threshold>`                             | ``0.5``               |
 +-------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------+-----------------------+
-| :ref:`AutowrapMode<enum_Label3D_AutowrapMode>`                    | :ref:`autowrap_mode<class_Label3D_property_autowrap_mode>`                                                 | ``0``                 |
+| :ref:`AutowrapMode<enum_TextServer_AutowrapMode>`                 | :ref:`autowrap_mode<class_Label3D_property_autowrap_mode>`                                                 | ``0``                 |
 +-------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------+-----------------------+
 | :ref:`BillboardMode<enum_BaseMaterial3D_BillboardMode>`           | :ref:`billboard<class_Label3D_property_billboard>`                                                         | ``0``                 |
 +-------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------+-----------------------+
@@ -99,28 +99,6 @@ Methods
 Enumerations
 ------------
 
-.. _enum_Label3D_AutowrapMode:
-
-.. _class_Label3D_constant_AUTOWRAP_OFF:
-
-.. _class_Label3D_constant_AUTOWRAP_ARBITRARY:
-
-.. _class_Label3D_constant_AUTOWRAP_WORD:
-
-.. _class_Label3D_constant_AUTOWRAP_WORD_SMART:
-
-enum **AutowrapMode**:
-
-- **AUTOWRAP_OFF** = **0** --- Autowrap is disabled.
-
-- **AUTOWRAP_ARBITRARY** = **1** --- Wraps the text inside the node's bounding rectangle by allowing to break lines at arbitrary positions, which is useful when very limited space is available.
-
-- **AUTOWRAP_WORD** = **2** --- Wraps the text inside the node's bounding rectangle by soft-breaking between words.
-
-- **AUTOWRAP_WORD_SMART** = **3** --- Behaves similarly to :ref:`AUTOWRAP_WORD<class_Label3D_constant_AUTOWRAP_WORD>`, but force-breaks a word if that single word does not fit in one line.
-
-----
-
 .. _enum_Label3D_DrawFlags:
 
 .. _class_Label3D_constant_FLAG_SHADED:
@@ -206,7 +184,7 @@ Threshold at which the alpha scissor will discard values.
 
 .. _class_Label3D_property_autowrap_mode:
 
-- :ref:`AutowrapMode<enum_Label3D_AutowrapMode>` **autowrap_mode**
+- :ref:`AutowrapMode<enum_TextServer_AutowrapMode>` **autowrap_mode**
 
 +-----------+--------------------------+
 | *Default* | ``0``                    |
@@ -216,7 +194,7 @@ Threshold at which the alpha scissor will discard values.
 | *Getter*  | get_autowrap_mode()      |
 +-----------+--------------------------+
 
-If set to something other than :ref:`AUTOWRAP_OFF<class_Label3D_constant_AUTOWRAP_OFF>`, the text gets wrapped inside the node's bounding rectangle. If you resize the node, it will change its height automatically to show all the text. To see how each mode behaves, see :ref:`AutowrapMode<enum_Label3D_AutowrapMode>`.
+If set to something other than :ref:`TextServer.AUTOWRAP_OFF<class_TextServer_constant_AUTOWRAP_OFF>`, the text gets wrapped inside the node's bounding rectangle. If you resize the node, it will change its height automatically to show all the text. To see how each mode behaves, see :ref:`AutowrapMode<enum_TextServer_AutowrapMode>`.
 
 ----
 

+ 65 - 21
classes/class_lightmapgi.rst

@@ -16,12 +16,18 @@ Computes and stores baked lightmaps for fast global illumination.
 Description
 -----------
 
-The ``LightmapGI`` node is used to compute and store baked lightmaps. Lightmaps are used to provide high-quality indirect lighting with very little light leaking. ``LightmapGI`` can also provide rough reflections using spherical harmonics if :ref:`directional<class_LightmapGI_property_directional>` is enabled. Dynamic objects can receive indirect lighting thanks to *light probes*, which can be automatically placed by setting :ref:`generate_probes_subdiv<class_LightmapGI_property_generate_probes_subdiv>`. Additional lightmap probes can also be added by creating :ref:`LightmapProbe<class_LightmapProbe>` nodes. The downside is that lightmaps are fully static and cannot be baked in an exported project. Baking a ``LightmapGI`` node is also slower compared to :ref:`VoxelGI<class_VoxelGI>`.
+The ``LightmapGI`` node is used to compute and store baked lightmaps. Lightmaps are used to provide high-quality indirect lighting with very little light leaking. ``LightmapGI`` can also provide rough reflections using spherical harmonics if :ref:`directional<class_LightmapGI_property_directional>` is enabled. Dynamic objects can receive indirect lighting thanks to *light probes*, which can be automatically placed by setting :ref:`generate_probes_subdiv<class_LightmapGI_property_generate_probes_subdiv>` to a value other than :ref:`GENERATE_PROBES_DISABLED<class_LightmapGI_constant_GENERATE_PROBES_DISABLED>`. Additional lightmap probes can also be added by creating :ref:`LightmapProbe<class_LightmapProbe>` nodes. The downside is that lightmaps are fully static and cannot be baked in an exported project. Baking a ``LightmapGI`` node is also slower compared to :ref:`VoxelGI<class_VoxelGI>`.
 
 \ **Procedural generation:** Lightmap baking functionality is only available in the editor. This means ``LightmapGI`` is not suited to procedurally generated or user-built levels. For procedurally generated or user-built levels, use :ref:`VoxelGI<class_VoxelGI>` or SDFGI instead (see :ref:`Environment.sdfgi_enabled<class_Environment_property_sdfgi_enabled>`).
 
 \ **Performance:** ``LightmapGI`` provides the best possible run-time performance for global illumination. It is suitable for low-end hardware including integrated graphics and mobile devices.
 
+\ **Note:** Due to how lightmaps work, most properties only have a visible effect once lightmaps are baked again.
+
+\ **Note:** Lightmap baking on :ref:`CSGShape3D<class_CSGShape3D>`\ s and :ref:`PrimitiveMesh<class_PrimitiveMesh>`\ es is not supported, as these cannot store UV2 data required for baking.
+
+\ **Note:** If no custom lightmappers are installed, ``LightmapGI`` can only be baked when using the Vulkan backend (Clustered or Mobile), not OpenGL.
+
 Properties
 ----------
 
@@ -68,13 +74,13 @@ Enumerations
 
 enum **BakeQuality**:
 
-- **BAKE_QUALITY_LOW** = **0**
+- **BAKE_QUALITY_LOW** = **0** --- Low bake quality (fastest bake times). The quality of this preset can be adjusted by changing :ref:`ProjectSettings.rendering/lightmapping/bake_quality/low_quality_ray_count<class_ProjectSettings_property_rendering/lightmapping/bake_quality/low_quality_ray_count>` and :ref:`ProjectSettings.rendering/lightmapping/bake_quality/low_quality_probe_ray_count<class_ProjectSettings_property_rendering/lightmapping/bake_quality/low_quality_probe_ray_count>`.
 
-- **BAKE_QUALITY_MEDIUM** = **1**
+- **BAKE_QUALITY_MEDIUM** = **1** --- Medium bake quality (fast bake times). The quality of this preset can be adjusted by changing :ref:`ProjectSettings.rendering/lightmapping/bake_quality/medium_quality_ray_count<class_ProjectSettings_property_rendering/lightmapping/bake_quality/medium_quality_ray_count>` and :ref:`ProjectSettings.rendering/lightmapping/bake_quality/medium_quality_probe_ray_count<class_ProjectSettings_property_rendering/lightmapping/bake_quality/medium_quality_probe_ray_count>`.
 
-- **BAKE_QUALITY_HIGH** = **2**
+- **BAKE_QUALITY_HIGH** = **2** --- High bake quality (slow bake times). The quality of this preset can be adjusted by changing :ref:`ProjectSettings.rendering/lightmapping/bake_quality/high_quality_ray_count<class_ProjectSettings_property_rendering/lightmapping/bake_quality/high_quality_ray_count>` and :ref:`ProjectSettings.rendering/lightmapping/bake_quality/high_quality_probe_ray_count<class_ProjectSettings_property_rendering/lightmapping/bake_quality/high_quality_probe_ray_count>`.
 
-- **BAKE_QUALITY_ULTRA** = **3**
+- **BAKE_QUALITY_ULTRA** = **3** --- Highest bake quality (slowest bake times). The quality of this preset can be adjusted by changing :ref:`ProjectSettings.rendering/lightmapping/bake_quality/high_quality_ray_count<class_ProjectSettings_property_rendering/lightmapping/bake_quality/high_quality_ray_count>` and :ref:`ProjectSettings.rendering/lightmapping/bake_quality/ultra_quality_probe_ray_count<class_ProjectSettings_property_rendering/lightmapping/bake_quality/ultra_quality_probe_ray_count>`.
 
 ----
 
@@ -92,15 +98,15 @@ enum **BakeQuality**:
 
 enum **GenerateProbes**:
 
-- **GENERATE_PROBES_DISABLED** = **0**
+- **GENERATE_PROBES_DISABLED** = **0** --- Don't generate lightmap probes for lighting dynamic objects.
 
-- **GENERATE_PROBES_SUBDIV_4** = **1**
+- **GENERATE_PROBES_SUBDIV_4** = **1** --- Lowest level of subdivision (fastest bake times, smallest file sizes).
 
-- **GENERATE_PROBES_SUBDIV_8** = **2**
+- **GENERATE_PROBES_SUBDIV_8** = **2** --- Low level of subdivision (fast bake times, small file sizes).
 
-- **GENERATE_PROBES_SUBDIV_16** = **3**
+- **GENERATE_PROBES_SUBDIV_16** = **3** --- High level of subdivision (slow bake times, large file sizes).
 
-- **GENERATE_PROBES_SUBDIV_32** = **4**
+- **GENERATE_PROBES_SUBDIV_32** = **4** --- Highest level of subdivision (slowest bake times, largest file sizes).
 
 ----
 
@@ -122,19 +128,19 @@ enum **GenerateProbes**:
 
 enum **BakeError**:
 
-- **BAKE_ERROR_OK** = **0**
+- **BAKE_ERROR_OK** = **0** --- Lightmap baking was successful.
 
-- **BAKE_ERROR_NO_LIGHTMAPPER** = **1**
+- **BAKE_ERROR_NO_LIGHTMAPPER** = **1** --- Lightmap baking failed as there is no lightmapper available in this Godot build.
 
-- **BAKE_ERROR_NO_SAVE_PATH** = **2**
+- **BAKE_ERROR_NO_SAVE_PATH** = **2** --- Lightmap baking failed as the :ref:`LightmapGIData<class_LightmapGIData>` save path isn't configured in the resource.
 
-- **BAKE_ERROR_NO_MESHES** = **3**
+- **BAKE_ERROR_NO_MESHES** = **3** --- Lightmap baking failed as there are no meshes whose :ref:`GeometryInstance3D.gi_mode<class_GeometryInstance3D_property_gi_mode>` is :ref:`GeometryInstance3D.GI_MODE_STATIC<class_GeometryInstance3D_constant_GI_MODE_STATIC>` and with valid UV2 mapping in the current scene. You may need to select 3D scenes in the Import dock and change their global illumination mode accordingly.
 
-- **BAKE_ERROR_MESHES_INVALID** = **4**
+- **BAKE_ERROR_MESHES_INVALID** = **4** --- Lightmap baking failed as the lightmapper failed to analyze some of the meshes marked as static for baking.
 
-- **BAKE_ERROR_CANT_CREATE_IMAGE** = **5**
+- **BAKE_ERROR_CANT_CREATE_IMAGE** = **5** --- Lightmap baking failed as the resulting image couldn't be saved or imported by Godot after it was saved.
 
-- **BAKE_ERROR_USER_ABORTED** = **6**
+- **BAKE_ERROR_USER_ABORTED** = **6** --- The user aborted the lightmap baking operation (typically by clicking the **Cancel** button in the progress dialog).
 
 ----
 
@@ -150,13 +156,15 @@ enum **BakeError**:
 
 enum **EnvironmentMode**:
 
-- **ENVIRONMENT_MODE_DISABLED** = **0**
+- **ENVIRONMENT_MODE_DISABLED** = **0** --- Ignore environment lighting when baking lightmaps.
 
-- **ENVIRONMENT_MODE_SCENE** = **1**
+- **ENVIRONMENT_MODE_SCENE** = **1** --- Use the scene's environment lighting when baking lightmaps.
 
-- **ENVIRONMENT_MODE_CUSTOM_SKY** = **2**
+\ **Note:** If baking lightmaps in a scene with no :ref:`WorldEnvironment<class_WorldEnvironment>` node, this will act like :ref:`ENVIRONMENT_MODE_DISABLED<class_LightmapGI_constant_ENVIRONMENT_MODE_DISABLED>`. The editor's preview sky and sun is *not* taken into account by ``LightmapGI`` when baking lightmaps.
 
-- **ENVIRONMENT_MODE_CUSTOM_COLOR** = **3**
+- **ENVIRONMENT_MODE_CUSTOM_SKY** = **2** --- Use :ref:`environment_custom_sky<class_LightmapGI_property_environment_custom_sky>` as a source of environment lighting when baking lightmaps.
+
+- **ENVIRONMENT_MODE_CUSTOM_COLOR** = **3** --- Use :ref:`environment_custom_color<class_LightmapGI_property_environment_custom_color>` multiplied by :ref:`environment_custom_energy<class_LightmapGI_property_environment_custom_energy>` as a constant source of environment lighting when baking lightmaps.
 
 Property Descriptions
 ---------------------
@@ -173,6 +181,8 @@ Property Descriptions
 | *Getter*  | get_bias()      |
 +-----------+-----------------+
 
+The bias to use when computing shadows. Increasing :ref:`bias<class_LightmapGI_property_bias>` can fix shadow acne on the resulting baked lightmap, but can introduce peter-panning (shadows not connecting to their casters). Real-time :ref:`Light3D<class_Light3D>` shadows are not affected by this :ref:`bias<class_LightmapGI_property_bias>` property.
+
 ----
 
 .. _class_LightmapGI_property_bounces:
@@ -187,6 +197,8 @@ Property Descriptions
 | *Getter*  | get_bounces()      |
 +-----------+--------------------+
 
+Number of light bounces that are taken into account during baking. Higher values result in brighter, more realistic lighting, at the cost of longer bake times. If set to ``0``, only environment lighting, direct light and emissive lighting is baked.
+
 ----
 
 .. _class_LightmapGI_property_directional:
@@ -201,6 +213,10 @@ Property Descriptions
 | *Getter*  | is_directional()       |
 +-----------+------------------------+
 
+If ``true``, bakes lightmaps to contain directional information as spherical harmonics. This results in more realistic lighting appearance, especially with normal mapped materials and for lights that their have direct light baked (:ref:`Light3D.light_bake_mode<class_Light3D_property_light_bake_mode>` set to :ref:`Light3D.BAKE_STATIC<class_Light3D_constant_BAKE_STATIC>`). The directional information is also used to provide rough reflections for static and dynamic objects. This has a small run-time performance cost as the shader has to perform more work to interpret the direction information from the lightmap. Directional lightmaps also take longer to bake and result in larger file sizes.
+
+\ **Note:** The property's name has no relationship with :ref:`DirectionalLight3D<class_DirectionalLight3D>`. :ref:`directional<class_LightmapGI_property_directional>` works with all light types.
+
 ----
 
 .. _class_LightmapGI_property_environment_custom_color:
@@ -213,6 +229,8 @@ Property Descriptions
 | *Getter* | get_environment_custom_color()      |
 +----------+-------------------------------------+
 
+The color to use for environment lighting. Only effective if :ref:`environment_mode<class_LightmapGI_property_environment_mode>` is :ref:`ENVIRONMENT_MODE_CUSTOM_COLOR<class_LightmapGI_constant_ENVIRONMENT_MODE_CUSTOM_COLOR>`.
+
 ----
 
 .. _class_LightmapGI_property_environment_custom_energy:
@@ -225,6 +243,8 @@ Property Descriptions
 | *Getter* | get_environment_custom_energy()      |
 +----------+--------------------------------------+
 
+The color multiplier to use for environment lighting. Only effective if :ref:`environment_mode<class_LightmapGI_property_environment_mode>` is :ref:`ENVIRONMENT_MODE_CUSTOM_COLOR<class_LightmapGI_constant_ENVIRONMENT_MODE_CUSTOM_COLOR>`.
+
 ----
 
 .. _class_LightmapGI_property_environment_custom_sky:
@@ -237,6 +257,8 @@ Property Descriptions
 | *Getter* | get_environment_custom_sky()      |
 +----------+-----------------------------------+
 
+The sky to use as a source of environment lighting. Only effective if :ref:`environment_mode<class_LightmapGI_property_environment_mode>` is :ref:`ENVIRONMENT_MODE_CUSTOM_SKY<class_LightmapGI_constant_ENVIRONMENT_MODE_CUSTOM_SKY>`.
+
 ----
 
 .. _class_LightmapGI_property_environment_mode:
@@ -251,6 +273,8 @@ Property Descriptions
 | *Getter*  | get_environment_mode()      |
 +-----------+-----------------------------+
 
+The environment mode to use when baking lightmaps.
+
 ----
 
 .. _class_LightmapGI_property_generate_probes_subdiv:
@@ -265,6 +289,12 @@ Property Descriptions
 | *Getter*  | get_generate_probes()      |
 +-----------+----------------------------+
 
+The level of subdivision to use when automatically generating :ref:`LightmapProbe<class_LightmapProbe>`\ s for dynamic object lighting. Higher values result in more accurate indirect lighting on dynamic objects, at the cost of longer bake times and larger file sizes.
+
+\ **Note:** Automatically generated :ref:`LightmapProbe<class_LightmapProbe>`\ s are not visible as nodes in the Scene tree dock, and cannot be modified this way after they are generated.
+
+\ **Note:** Regardless of :ref:`generate_probes_subdiv<class_LightmapGI_property_generate_probes_subdiv>`, direct lighting on dynamic objects is always applied using :ref:`Light3D<class_Light3D>` nodes in real-time.
+
 ----
 
 .. _class_LightmapGI_property_interior:
@@ -279,6 +309,8 @@ Property Descriptions
 | *Getter*  | is_interior()       |
 +-----------+---------------------+
 
+If ``true``, ignore environment lighting when baking lightmaps.
+
 ----
 
 .. _class_LightmapGI_property_light_data:
@@ -291,6 +323,8 @@ Property Descriptions
 | *Getter* | get_light_data()      |
 +----------+-----------------------+
 
+The :ref:`LightmapGIData<class_LightmapGIData>` associated to this ``LightmapGI`` node. This resource is automatically created after baking, and is not meant to be created manually.
+
 ----
 
 .. _class_LightmapGI_property_max_texture_size:
@@ -305,6 +339,8 @@ Property Descriptions
 | *Getter*  | get_max_texture_size()      |
 +-----------+-----------------------------+
 
+The maximum texture size for the generated texture atlas. Higher values will result in fewer slices being generated, but may not work on all hardware as a result of hardware limitations on texture sizes. Leave :ref:`max_texture_size<class_LightmapGI_property_max_texture_size>` at its default value of ``16384`` if unsure.
+
 ----
 
 .. _class_LightmapGI_property_quality:
@@ -319,6 +355,10 @@ Property Descriptions
 | *Getter*  | get_bake_quality()      |
 +-----------+-------------------------+
 
+The quality preset to use when baking lightmaps. This affects bake times, but output file sizes remain mostly identical across quality levels.
+
+To further speed up bake times, decrease :ref:`bounces<class_LightmapGI_property_bounces>`, disable :ref:`use_denoiser<class_LightmapGI_property_use_denoiser>` and increase the lightmap texel size on 3D scenes in the Import doc.
+
 ----
 
 .. _class_LightmapGI_property_use_denoiser:
@@ -333,6 +373,10 @@ Property Descriptions
 | *Getter*  | is_using_denoiser()     |
 +-----------+-------------------------+
 
+If ``true``, uses a CPU-based denoising algorithm on the generated lightmap. This eliminates most noise within the generated lightmap at the cost of longer bake times. File sizes are generally not impacted significantly by the use of a denoiser, although lossless compression may do a better job at compressing a denoised image.
+
+\ **Note:** The built-in denoiser (OpenImageDenoise) may crash when denoising lightmaps in large scenes. If you encounter a crash at the end of lightmap baking, try disabling :ref:`use_denoiser<class_LightmapGI_property_use_denoiser>`.
+
 .. |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.)`

+ 21 - 0
classes/class_lightmapgidata.rst

@@ -11,7 +11,12 @@ LightmapGIData
 
 **Inherits:** :ref:`Resource<class_Resource>` **<** :ref:`RefCounted<class_RefCounted>` **<** :ref:`Object<class_Object>`
 
+Contains baked lightmap and dynamic object probe data for :ref:`LightmapGI<class_LightmapGI>`.
 
+Description
+-----------
+
+``LightmapGIData`` contains baked lightmap and dynamic object probe data for :ref:`LightmapGI<class_LightmapGI>`. It is replaced every time lightmaps are baked in :ref:`LightmapGI<class_LightmapGI>`.
 
 Properties
 ----------
@@ -50,6 +55,8 @@ Property Descriptions
 | *Getter* | get_light_texture()      |
 +----------+--------------------------+
 
+The lightmap atlas texture generated by the lightmapper.
+
 Method Descriptions
 -------------------
 
@@ -57,36 +64,50 @@ Method Descriptions
 
 - void **add_user** **(** :ref:`NodePath<class_NodePath>` path, :ref:`Rect2<class_Rect2>` uv_scale, :ref:`int<class_int>` slice_index, :ref:`int<class_int>` sub_instance **)**
 
+Adds an object that is considered baked within this ``LightmapGIData``.
+
 ----
 
 .. _class_LightmapGIData_method_clear_users:
 
 - void **clear_users** **(** **)**
 
+Clear all objects that are considred baked within this ``LightmapGIData``.
+
 ----
 
 .. _class_LightmapGIData_method_get_user_count:
 
 - :ref:`int<class_int>` **get_user_count** **(** **)** |const|
 
+Returns the number of objects that are considered baked within this ``LightmapGIData``.
+
 ----
 
 .. _class_LightmapGIData_method_get_user_path:
 
 - :ref:`NodePath<class_NodePath>` **get_user_path** **(** :ref:`int<class_int>` user_idx **)** |const|
 
+Returns the :ref:`NodePath<class_NodePath>` of the baked object at index ``user_idx``.
+
 ----
 
 .. _class_LightmapGIData_method_is_using_spherical_harmonics:
 
 - :ref:`bool<class_bool>` **is_using_spherical_harmonics** **(** **)** |const|
 
+If ``true``, lightmaps were baked with directional information. See also :ref:`LightmapGI.directional<class_LightmapGI_property_directional>`.
+
 ----
 
 .. _class_LightmapGIData_method_set_uses_spherical_harmonics:
 
 - void **set_uses_spherical_harmonics** **(** :ref:`bool<class_bool>` uses_spherical_harmonics **)**
 
+If ``uses_spherical_harmonics`` is ``true``, tells the engine to treat the lightmap data as if it was baked with directional information.
+
+\ **Note:** Changing this value on already baked lightmaps will not cause them to be baked again. This means the material appearance will look incorrect until lightmaps are baked again, in which case the value set here is discarded as the entire ``LightmapGIData`` resource is replaced by the lightmapper.
+
 .. |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.)`

+ 7 - 0
classes/class_lightmapper.rst

@@ -13,7 +13,14 @@ Lightmapper
 
 **Inherited By:** :ref:`LightmapperRD<class_LightmapperRD>`
 
+Abstract class extended by lightmappers, for use in :ref:`LightmapGI<class_LightmapGI>`.
 
+Description
+-----------
+
+This class should be extended by custom lightmapper classes. Lightmappers can then be used with :ref:`LightmapGI<class_LightmapGI>` to provide fast baked global illumination in 3D.
+
+Godot contains a built-in GPU-based lightmapper :ref:`LightmapperRD<class_LightmapperRD>` that uses compute shaders, but custom lightmappers can be implemented by C++ modules.
 
 .. |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.)`

+ 7 - 0
classes/class_lightmapperrd.rst

@@ -11,7 +11,14 @@ LightmapperRD
 
 **Inherits:** :ref:`Lightmapper<class_Lightmapper>` **<** :ref:`RefCounted<class_RefCounted>` **<** :ref:`Object<class_Object>`
 
+The built-in GPU-based lightmapper for use with :ref:`LightmapGI<class_LightmapGI>`.
 
+Description
+-----------
+
+LightmapperRD ("RD" stands for :ref:`RenderingDevice<class_RenderingDevice>`) is the built-in GPU-based lightmapper for use with :ref:`LightmapGI<class_LightmapGI>`. On most dedicated GPUs, it can bake lightmaps much faster than most CPU-based lightmappers. LightmapperRD uses compute shaders to bake lightmaps, so it does not require CUDA or OpenCL libraries to be installed to be usable.
+
+\ **Note:** Only usable when using the Vulkan backend (Clustered or Mobile), not OpenGL.
 
 .. |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.)`

+ 7 - 0
classes/class_lightmapprobe.rst

@@ -11,7 +11,14 @@ LightmapProbe
 
 **Inherits:** :ref:`Node3D<class_Node3D>` **<** :ref:`Node<class_Node>` **<** :ref:`Object<class_Object>`
 
+Represents a single manually placed probe for dynamic object lighting with :ref:`LightmapGI<class_LightmapGI>`.
 
+Description
+-----------
+
+``LightmapProbe`` represents the position of a single manually placed probe for dynamic object lighting with :ref:`LightmapGI<class_LightmapGI>`.
+
+Typically, :ref:`LightmapGI<class_LightmapGI>` probes are placed automatically by setting :ref:`LightmapGI.generate_probes_subdiv<class_LightmapGI_property_generate_probes_subdiv>` to a value other than :ref:`LightmapGI.GENERATE_PROBES_DISABLED<class_LightmapGI_constant_GENERATE_PROBES_DISABLED>`. By creating ``LightmapProbe`` nodes before baking lightmaps, you can add more probes in specific areas for greater detail, or disable automatic generation and rely only on manually placed probes instead.
 
 .. |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.)`

+ 27 - 27
classes/class_mesh.rst

@@ -166,13 +166,13 @@ enum **ArrayType**:
 
 - **ARRAY_TEX_UV2** = **5** --- :ref:`PackedVector2Array<class_PackedVector2Array>` for second UV coordinates.
 
-- **ARRAY_CUSTOM0** = **6**
+- **ARRAY_CUSTOM0** = **6** --- Contains custom color channel 0. :ref:`PackedByteArray<class_PackedByteArray>` if ``(format >> [constant ARRAY_FORMAT_CUSTOM0_SHIFT]) & [constant ARRAY_FORMAT_CUSTOM_MASK])`` is :ref:`ARRAY_CUSTOM_RGBA8_UNORM<class_Mesh_constant_ARRAY_CUSTOM_RGBA8_UNORM>`, :ref:`ARRAY_CUSTOM_RGBA8_UNORM<class_Mesh_constant_ARRAY_CUSTOM_RGBA8_UNORM>`, :ref:`ARRAY_CUSTOM_RG_HALF<class_Mesh_constant_ARRAY_CUSTOM_RG_HALF>` or :ref:`ARRAY_CUSTOM_RGBA_HALF<class_Mesh_constant_ARRAY_CUSTOM_RGBA_HALF>`. :ref:`PackedFloat32Array<class_PackedFloat32Array>` otherwise.
 
-- **ARRAY_CUSTOM1** = **7**
+- **ARRAY_CUSTOM1** = **7** --- Contains custom color channel 1. :ref:`PackedByteArray<class_PackedByteArray>` if ``(format >> [constant ARRAY_FORMAT_CUSTOM1_SHIFT]) & [constant ARRAY_FORMAT_CUSTOM_MASK])`` is :ref:`ARRAY_CUSTOM_RGBA8_UNORM<class_Mesh_constant_ARRAY_CUSTOM_RGBA8_UNORM>`, :ref:`ARRAY_CUSTOM_RGBA8_UNORM<class_Mesh_constant_ARRAY_CUSTOM_RGBA8_UNORM>`, :ref:`ARRAY_CUSTOM_RG_HALF<class_Mesh_constant_ARRAY_CUSTOM_RG_HALF>` or :ref:`ARRAY_CUSTOM_RGBA_HALF<class_Mesh_constant_ARRAY_CUSTOM_RGBA_HALF>`. :ref:`PackedFloat32Array<class_PackedFloat32Array>` otherwise.
 
-- **ARRAY_CUSTOM2** = **8**
+- **ARRAY_CUSTOM2** = **8** --- Contains custom color channel 2. :ref:`PackedByteArray<class_PackedByteArray>` if ``(format >> [constant ARRAY_FORMAT_CUSTOM2_SHIFT]) & [constant ARRAY_FORMAT_CUSTOM_MASK])`` is :ref:`ARRAY_CUSTOM_RGBA8_UNORM<class_Mesh_constant_ARRAY_CUSTOM_RGBA8_UNORM>`, :ref:`ARRAY_CUSTOM_RGBA8_UNORM<class_Mesh_constant_ARRAY_CUSTOM_RGBA8_UNORM>`, :ref:`ARRAY_CUSTOM_RG_HALF<class_Mesh_constant_ARRAY_CUSTOM_RG_HALF>` or :ref:`ARRAY_CUSTOM_RGBA_HALF<class_Mesh_constant_ARRAY_CUSTOM_RGBA_HALF>`. :ref:`PackedFloat32Array<class_PackedFloat32Array>` otherwise.
 
-- **ARRAY_CUSTOM3** = **9**
+- **ARRAY_CUSTOM3** = **9** --- Contains custom color channel 3. :ref:`PackedByteArray<class_PackedByteArray>` if ``(format >> [constant ARRAY_FORMAT_CUSTOM3_SHIFT]) & [constant ARRAY_FORMAT_CUSTOM_MASK])`` is :ref:`ARRAY_CUSTOM_RGBA8_UNORM<class_Mesh_constant_ARRAY_CUSTOM_RGBA8_UNORM>`, :ref:`ARRAY_CUSTOM_RGBA8_UNORM<class_Mesh_constant_ARRAY_CUSTOM_RGBA8_UNORM>`, :ref:`ARRAY_CUSTOM_RG_HALF<class_Mesh_constant_ARRAY_CUSTOM_RG_HALF>` or :ref:`ARRAY_CUSTOM_RGBA_HALF<class_Mesh_constant_ARRAY_CUSTOM_RGBA_HALF>`. :ref:`PackedFloat32Array<class_PackedFloat32Array>` otherwise.
 
 - **ARRAY_BONES** = **10** --- :ref:`PackedFloat32Array<class_PackedFloat32Array>` or :ref:`PackedInt32Array<class_PackedInt32Array>` of bone indices. Each element is a group of 4 numbers.
 
@@ -208,21 +208,21 @@ For triangles, the index array is interpreted as triples, referring to the verti
 
 enum **ArrayCustomFormat**:
 
-- **ARRAY_CUSTOM_RGBA8_UNORM** = **0**
+- **ARRAY_CUSTOM_RGBA8_UNORM** = **0** --- Indicates this custom channel contains unsigned normalized byte colors from 0 to 1, encoded as :ref:`PackedByteArray<class_PackedByteArray>`.
 
-- **ARRAY_CUSTOM_RGBA8_SNORM** = **1**
+- **ARRAY_CUSTOM_RGBA8_SNORM** = **1** --- Indicates this custom channel contains signed normalized byte colors from -1 to 1, encoded as :ref:`PackedByteArray<class_PackedByteArray>`.
 
-- **ARRAY_CUSTOM_RG_HALF** = **2**
+- **ARRAY_CUSTOM_RG_HALF** = **2** --- Indicates this custom channel contains half precision float colors, encoded as :ref:`PackedByteArray<class_PackedByteArray>`. Only red and green channels are used.
 
-- **ARRAY_CUSTOM_RGBA_HALF** = **3**
+- **ARRAY_CUSTOM_RGBA_HALF** = **3** --- Indicates this custom channel contains half precision float colors, encoded as :ref:`PackedByteArray<class_PackedByteArray>`.
 
-- **ARRAY_CUSTOM_R_FLOAT** = **4**
+- **ARRAY_CUSTOM_R_FLOAT** = **4** --- Indicates this custom channel contains full float colors, in a :ref:`PackedFloat32Array<class_PackedFloat32Array>`. Only the red green channel is used.
 
-- **ARRAY_CUSTOM_RG_FLOAT** = **5**
+- **ARRAY_CUSTOM_RG_FLOAT** = **5** --- Indicates this custom channel contains full float colors, in a :ref:`PackedFloat32Array<class_PackedFloat32Array>`. Only red and green channels are used.
 
-- **ARRAY_CUSTOM_RGB_FLOAT** = **6**
+- **ARRAY_CUSTOM_RGB_FLOAT** = **6** --- Indicates this custom channel contains full float colors, in a :ref:`PackedFloat32Array<class_PackedFloat32Array>`. Only red, green and blue channels are used.
 
-- **ARRAY_CUSTOM_RGBA_FLOAT** = **7**
+- **ARRAY_CUSTOM_RGBA_FLOAT** = **7** --- Indicates this custom channel contains full float colors, in a :ref:`PackedFloat32Array<class_PackedFloat32Array>`.
 
 - **ARRAY_CUSTOM_MAX** = **8** --- Represents the size of the :ref:`ArrayCustomFormat<enum_Mesh_ArrayCustomFormat>` enum.
 
@@ -294,13 +294,13 @@ enum **ArrayFormat**:
 
 - **ARRAY_FORMAT_TEX_UV2** = **32** --- Mesh array contains second UV.
 
-- **ARRAY_FORMAT_CUSTOM0** = **64**
+- **ARRAY_FORMAT_CUSTOM0** = **64** --- Mesh array contains custom channel index 0.
 
-- **ARRAY_FORMAT_CUSTOM1** = **128**
+- **ARRAY_FORMAT_CUSTOM1** = **128** --- Mesh array contains custom channel index 1.
 
-- **ARRAY_FORMAT_CUSTOM2** = **256**
+- **ARRAY_FORMAT_CUSTOM2** = **256** --- Mesh array contains custom channel index 2.
 
-- **ARRAY_FORMAT_CUSTOM3** = **512**
+- **ARRAY_FORMAT_CUSTOM3** = **512** --- Mesh array contains custom channel index 3.
 
 - **ARRAY_FORMAT_BONES** = **1024** --- Mesh array contains bones.
 
@@ -308,29 +308,29 @@ enum **ArrayFormat**:
 
 - **ARRAY_FORMAT_INDEX** = **4096** --- Mesh array uses indices.
 
-- **ARRAY_FORMAT_BLEND_SHAPE_MASK** = **7**
+- **ARRAY_FORMAT_BLEND_SHAPE_MASK** = **7** --- Mask of mesh channels permitted in blend shapes.
 
-- **ARRAY_FORMAT_CUSTOM_BASE** = **13**
+- **ARRAY_FORMAT_CUSTOM_BASE** = **13** --- Shift of first custom channel.
 
-- **ARRAY_FORMAT_CUSTOM_BITS** = **3**
+- **ARRAY_FORMAT_CUSTOM_BITS** = **3** --- Number of format bits per custom channel. See :ref:`ArrayCustomFormat<enum_Mesh_ArrayCustomFormat>`.
 
-- **ARRAY_FORMAT_CUSTOM0_SHIFT** = **13**
+- **ARRAY_FORMAT_CUSTOM0_SHIFT** = **13** --- Amount to shift :ref:`ArrayCustomFormat<enum_Mesh_ArrayCustomFormat>` for custom channel index 0.
 
-- **ARRAY_FORMAT_CUSTOM1_SHIFT** = **16**
+- **ARRAY_FORMAT_CUSTOM1_SHIFT** = **16** --- Amount to shift :ref:`ArrayCustomFormat<enum_Mesh_ArrayCustomFormat>` for custom channel index 1.
 
-- **ARRAY_FORMAT_CUSTOM2_SHIFT** = **19**
+- **ARRAY_FORMAT_CUSTOM2_SHIFT** = **19** --- Amount to shift :ref:`ArrayCustomFormat<enum_Mesh_ArrayCustomFormat>` for custom channel index 2.
 
-- **ARRAY_FORMAT_CUSTOM3_SHIFT** = **22**
+- **ARRAY_FORMAT_CUSTOM3_SHIFT** = **22** --- Amount to shift :ref:`ArrayCustomFormat<enum_Mesh_ArrayCustomFormat>` for custom channel index 3.
 
-- **ARRAY_FORMAT_CUSTOM_MASK** = **7**
+- **ARRAY_FORMAT_CUSTOM_MASK** = **7** --- Mask of custom format bits per custom channel. Must be shifted by one of the SHIFT constants. See :ref:`ArrayCustomFormat<enum_Mesh_ArrayCustomFormat>`.
 
-- **ARRAY_COMPRESS_FLAGS_BASE** = **25**
+- **ARRAY_COMPRESS_FLAGS_BASE** = **25** --- Shift of first compress flag. Compress flags should be passed to :ref:`ArrayMesh.add_surface_from_arrays<class_ArrayMesh_method_add_surface_from_arrays>` and :ref:`SurfaceTool.commit<class_SurfaceTool_method_commit>`.
 
 - **ARRAY_FLAG_USE_2D_VERTICES** = **33554432** --- Flag used to mark that the array contains 2D vertices.
 
-- **ARRAY_FLAG_USE_DYNAMIC_UPDATE** = **67108864**
+- **ARRAY_FLAG_USE_DYNAMIC_UPDATE** = **67108864** --- Flag indices that the mesh data will use ``GL_DYNAMIC_DRAW`` on GLES. Unused on Vulkan.
 
-- **ARRAY_FLAG_USE_8_BONE_WEIGHTS** = **134217728**
+- **ARRAY_FLAG_USE_8_BONE_WEIGHTS** = **134217728** --- Flag used to mark that the mesh contains up to 8 bone influences per vertex. This flag indicates that :ref:`ARRAY_BONES<class_Mesh_constant_ARRAY_BONES>` and :ref:`ARRAY_WEIGHTS<class_Mesh_constant_ARRAY_WEIGHTS>` elements will have double length.
 
 ----
 

+ 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:`Sprite2D<class_Sprite2D>` via a tool in the editor toolbar. Select "Sprite2D" 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:`Sprite2D<class_Sprite2D>` via a tool in the editor toolbar. Select the :ref:`Sprite2D<class_Sprite2D>` node, then choose **Sprite2D > Convert to MeshInstance2D** at the top of the 2D editor viewport.
 
 Tutorials
 ---------

+ 125 - 0
classes/class_moviewriter.rst

@@ -0,0 +1,125 @@
+:github_url: hide
+
+.. Generated automatically by doc/tools/make_rst.py in Godot's source tree.
+.. DO NOT EDIT THIS FILE, but the MovieWriter.xml source instead.
+.. The source is found in doc/classes or modules/<name>/doc_classes.
+
+.. _class_MovieWriter:
+
+MovieWriter
+===========
+
+**Inherits:** :ref:`Object<class_Object>`
+
+Abstract class for non-real-time video recording encoders.
+
+Description
+-----------
+
+Godot can record videos with non-real-time simulation. Like the ``--fixed-fps`` command line argument, this forces the reported ``delta`` in :ref:`Node._process<class_Node_method__process>` functions to be identical across frames, regardless of how long it actually took to render the frame. This can be used to record high-quality videos with perfect frame pacing regardless of your hardware's capabilities.
+
+Godot has 2 built-in ``MovieWriter``\ s:
+
+- AVI container with MJPEG for video and uncompressed audio (``.avi`` file extension). Lossy compression, medium file sizes, fast encoding. The lossy compression quality can be adjusted by changing :ref:`ProjectSettings.editor/movie_writer/mjpeg_quality<class_ProjectSettings_property_editor/movie_writer/mjpeg_quality>`. The resulting file can be viewed in most video players, but it must be converted to another format for viewing on the web or by Godot with :ref:`VideoStreamPlayer<class_VideoStreamPlayer>`. AVI output is currently limited to a file of 4 GB in size at most.
+
+- PNG image sequence for video and WAV for audio (``.png`` file extension). Lossless compression, large file sizes, slow encoding. Designed to be encoded to a video file with another tool such as `FFmpeg <https://ffmpeg.org/>`__ after recording. Transparency is currently not supported.
+
+If you need to encode to a different format or pipe a stream through third-party software, you can extend the ``MovieWriter`` class to create your own movie writers. This should typically be done using GDExtension for performance reasons.
+
+\ **Editor usage:** A default movie file path can be specified in :ref:`ProjectSettings.editor/movie_writer/movie_file<class_ProjectSettings_property_editor/movie_writer/movie_file>`. Alternatively, for running single scenes, a ``movie_path`` metadata can be added to the root node, specifying the path to a movie file that will be used when recording that scene. Once a path is set, click the video reel icon in the top-right corner of the editor to enable Movie Maker mode, then run any scene as usual. The engine will start recording as soon as the splash screen is finished, and it will only stop recording when the engine quits. Click the video reel icon again to disable Movie Maker mode. Note that toggling Movie Maker mode does not affect project instances that are already running.
+
+\ **Note:** MovieWriter is available for use in both the editor and exported projects, but it is *not* designed for use by end users to record videos while playing. Players wishing to record gameplay videos should install tools such as `OBS Studio <https://obsproject.com/>`__ or `SimpleScreenRecorder <https://www.maartenbaert.be/simplescreenrecorder/>`__ instead.
+
+Methods
+-------
+
++--------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`int<class_int>`                            | :ref:`_get_audio_mix_rate<class_MovieWriter_method__get_audio_mix_rate>` **(** **)** |virtual| |const|                                                                                        |
++--------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`SpeakerMode<enum_AudioServer_SpeakerMode>` | :ref:`_get_audio_speaker_mode<class_MovieWriter_method__get_audio_speaker_mode>` **(** **)** |virtual| |const|                                                                                |
++--------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`bool<class_bool>`                          | :ref:`_handles_file<class_MovieWriter_method__handles_file>` **(** :ref:`String<class_String>` path **)** |virtual| |const|                                                                   |
++--------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`Error<enum_@GlobalScope_Error>`            | :ref:`_write_begin<class_MovieWriter_method__write_begin>` **(** :ref:`Vector2i<class_Vector2i>` movie_size, :ref:`int<class_int>` fps, :ref:`String<class_String>` base_path **)** |virtual| |
++--------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| void                                             | :ref:`_write_end<class_MovieWriter_method__write_end>` **(** **)** |virtual|                                                                                                                  |
++--------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`Error<enum_@GlobalScope_Error>`            | :ref:`_write_frame<class_MovieWriter_method__write_frame>` **(** :ref:`Image<class_Image>` frame_image, const void* audio_frame_block **)** |virtual|                                         |
++--------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| void                                             | :ref:`add_writer<class_MovieWriter_method_add_writer>` **(** :ref:`MovieWriter<class_MovieWriter>` writer **)** |static|                                                                      |
++--------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+
+Method Descriptions
+-------------------
+
+.. _class_MovieWriter_method__get_audio_mix_rate:
+
+- :ref:`int<class_int>` **_get_audio_mix_rate** **(** **)** |virtual| |const|
+
+Called when the audio sample rate used for recording the audio is requested by the engine. The value returned must be specified in Hz. Defaults to 48000 Hz if :ref:`_get_audio_mix_rate<class_MovieWriter_method__get_audio_mix_rate>` is not overridden.
+
+----
+
+.. _class_MovieWriter_method__get_audio_speaker_mode:
+
+- :ref:`SpeakerMode<enum_AudioServer_SpeakerMode>` **_get_audio_speaker_mode** **(** **)** |virtual| |const|
+
+Called when the audio speaker mode used for recording the audio is requested by the engine. This can affect the number of output channels in the resulting audio file/stream. Defaults to :ref:`AudioServer.SPEAKER_MODE_STEREO<class_AudioServer_constant_SPEAKER_MODE_STEREO>` if :ref:`_get_audio_speaker_mode<class_MovieWriter_method__get_audio_speaker_mode>` is not overridden.
+
+----
+
+.. _class_MovieWriter_method__handles_file:
+
+- :ref:`bool<class_bool>` **_handles_file** **(** :ref:`String<class_String>` path **)** |virtual| |const|
+
+Called when the engine determines whether this ``MovieWriter`` is able to handle the file at ``path``. Must return ``true`` if this ``MovieWriter`` is able to handle the given file path, ``false`` otherwise. Typically, :ref:`_handles_file<class_MovieWriter_method__handles_file>` is overridden as follows to allow the user to record a file at any path with a given file extension:
+
+::
+
+    func _handles_file(path):
+        # Allows specifying an output file with a `.mkv` file extension (case-insensitive),
+        # either in the Project Settings or with the `--write-movie <path>` command line argument.
+        return path.get_extension().to_lower() == "mkv"
+
+----
+
+.. _class_MovieWriter_method__write_begin:
+
+- :ref:`Error<enum_@GlobalScope_Error>` **_write_begin** **(** :ref:`Vector2i<class_Vector2i>` movie_size, :ref:`int<class_int>` fps, :ref:`String<class_String>` base_path **)** |virtual|
+
+Called once before the engine starts writing video and audio data. ``movie_size`` is the width and height of the video to save. ``fps`` is the number of frames per second specified in the project settings or using the ``--fixed-fps <fps>`` command line argument.
+
+----
+
+.. _class_MovieWriter_method__write_end:
+
+- void **_write_end** **(** **)** |virtual|
+
+Called when the engine finishes writing. This occurs when the engine quits by pressing the window manager's close button, or when :ref:`SceneTree.quit<class_SceneTree_method_quit>` is called.
+
+\ **Note:** Pressing :kbd:`Ctrl + C` on the terminal running the editor/project does *not* result in :ref:`_write_end<class_MovieWriter_method__write_end>` being called.
+
+----
+
+.. _class_MovieWriter_method__write_frame:
+
+- :ref:`Error<enum_@GlobalScope_Error>` **_write_frame** **(** :ref:`Image<class_Image>` frame_image, const void* audio_frame_block **)** |virtual|
+
+Called at the end of every rendered frame. The ``frame_image`` and ``audio_frame_block`` function arguments should be written to.
+
+----
+
+.. _class_MovieWriter_method_add_writer:
+
+- void **add_writer** **(** :ref:`MovieWriter<class_MovieWriter>` writer **)** |static|
+
+Adds a writer to be usable by the engine. The supported file extensions can be set by overridding :ref:`_handles_file<class_MovieWriter_method__handles_file>`.
+
+\ **Note:** :ref:`add_writer<class_MovieWriter_method_add_writer>` must be called early enough in the engine initialization to work, as movie writing is designed to start at the same time as the rest of the engine.
+
+.. |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.)`
+.. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)`
+.. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)`
+.. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)`

+ 99 - 39
classes/class_navigationagent2d.rst

@@ -18,6 +18,8 @@ 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 collision avoidance. The agent needs navigation data to work correctly. ``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,10 +30,12 @@ Properties
 +---------------------------+------------------------------------------------------------------------------------------+-----------+
 | :ref:`float<class_float>` | :ref:`max_speed<class_NavigationAgent2D_property_max_speed>`                             | ``200.0`` |
 +---------------------------+------------------------------------------------------------------------------------------+-----------+
-| :ref:`int<class_int>`     | :ref:`navigable_layers<class_NavigationAgent2D_property_navigable_layers>`               | ``1``     |
+| :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_desired_distance<class_NavigationAgent2D_property_path_desired_distance>`     | ``1.0``   |
++---------------------------+------------------------------------------------------------------------------------------+-----------+
 | :ref:`float<class_float>` | :ref:`path_max_distance<class_NavigationAgent2D_property_path_max_distance>`             | ``3.0``   |
 +---------------------------+------------------------------------------------------------------------------------------+-----------+
 | :ref:`float<class_float>` | :ref:`radius<class_NavigationAgent2D_property_radius>`                                   | ``10.0``  |
@@ -44,31 +48,39 @@ Properties
 Methods
 -------
 
-+-----------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`float<class_float>`                           | :ref:`distance_to_target<class_NavigationAgent2D_method_distance_to_target>` **(** **)** |const|                                  |
-+-----------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`Vector2<class_Vector2>`                       | :ref:`get_final_location<class_NavigationAgent2D_method_get_final_location>` **(** **)**                                          |
-+-----------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`PackedVector2Array<class_PackedVector2Array>` | :ref:`get_nav_path<class_NavigationAgent2D_method_get_nav_path>` **(** **)** |const|                                              |
-+-----------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`int<class_int>`                               | :ref:`get_nav_path_index<class_NavigationAgent2D_method_get_nav_path_index>` **(** **)** |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|                                                        |
-+-----------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`Vector2<class_Vector2>`                       | :ref:`get_target_location<class_NavigationAgent2D_method_get_target_location>` **(** **)** |const|                                |
-+-----------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`bool<class_bool>`                             | :ref:`is_navigation_finished<class_NavigationAgent2D_method_is_navigation_finished>` **(** **)**                                  |
-+-----------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`bool<class_bool>`                             | :ref:`is_target_reachable<class_NavigationAgent2D_method_is_target_reachable>` **(** **)**                                        |
-+-----------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`bool<class_bool>`                             | :ref:`is_target_reached<class_NavigationAgent2D_method_is_target_reached>` **(** **)** |const|                                    |
-+-----------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------+
-| 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 **)**               |
-+-----------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------+
++-----------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`float<class_float>`                           | :ref:`distance_to_target<class_NavigationAgent2D_method_distance_to_target>` **(** **)** |const|                                                                           |
++-----------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`Vector2<class_Vector2>`                       | :ref:`get_final_location<class_NavigationAgent2D_method_get_final_location>` **(** **)**                                                                                   |
++-----------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`PackedVector2Array<class_PackedVector2Array>` | :ref:`get_nav_path<class_NavigationAgent2D_method_get_nav_path>` **(** **)** |const|                                                                                       |
++-----------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`int<class_int>`                               | :ref:`get_nav_path_index<class_NavigationAgent2D_method_get_nav_path_index>` **(** **)** |const|                                                                           |
++-----------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`bool<class_bool>`                             | :ref:`get_navigation_layer_value<class_NavigationAgent2D_method_get_navigation_layer_value>` **(** :ref:`int<class_int>` layer_number **)** |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|                                                                                                 |
++-----------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`Vector2<class_Vector2>`                       | :ref:`get_target_location<class_NavigationAgent2D_method_get_target_location>` **(** **)** |const|                                                                         |
++-----------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`bool<class_bool>`                             | :ref:`is_navigation_finished<class_NavigationAgent2D_method_is_navigation_finished>` **(** **)**                                                                           |
++-----------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`bool<class_bool>`                             | :ref:`is_target_reachable<class_NavigationAgent2D_method_is_target_reachable>` **(** **)**                                                                                 |
++-----------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`bool<class_bool>`                             | :ref:`is_target_reached<class_NavigationAgent2D_method_is_target_reached>` **(** **)** |const|                                                                             |
++-----------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| void                                                | :ref:`set_navigation_layer_value<class_NavigationAgent2D_method_set_navigation_layer_value>` **(** :ref:`int<class_int>` layer_number, :ref:`bool<class_bool>` value **)** |
++-----------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| 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 **)**                                                        |
++-----------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
 
 Signals
 -------
@@ -154,19 +166,19 @@ The maximum speed that an agent can move.
 
 ----
 
-.. _class_NavigationAgent2D_property_navigable_layers:
+.. _class_NavigationAgent2D_property_navigation_layers:
 
-- :ref:`int<class_int>` **navigable_layers**
+- :ref:`int<class_int>` **navigation_layers**
 
-+-----------+-----------------------------+
-| *Default* | ``1``                       |
-+-----------+-----------------------------+
-| *Setter*  | set_navigable_layers(value) |
-+-----------+-----------------------------+
-| *Getter*  | get_navigable_layers()      |
-+-----------+-----------------------------+
++-----------+------------------------------+
+| *Default* | ``1``                        |
++-----------+------------------------------+
+| *Setter*  | set_navigation_layers(value) |
++-----------+------------------------------+
+| *Getter*  | get_navigation_layers()      |
++-----------+------------------------------+
 
-A bitfield determining what layers of navigation regions this agent will use to calculate path. Changing it runtime will clear current navigation path and generate new one, according to new layers.
+A bitfield determining what navigation layers of navigation regions this agent will use to calculate path. Changing it runtime will clear current navigation path and generate new one, according to new navigation layers.
 
 ----
 
@@ -186,6 +198,22 @@ The distance to search for other agents.
 
 ----
 
+.. _class_NavigationAgent2D_property_path_desired_distance:
+
+- :ref:`float<class_float>` **path_desired_distance**
+
++-----------+----------------------------------+
+| *Default* | ``1.0``                          |
++-----------+----------------------------------+
+| *Setter*  | set_path_desired_distance(value) |
++-----------+----------------------------------+
+| *Getter*  | get_path_desired_distance()      |
++-----------+----------------------------------+
+
+The distance threshold before a path point is considered to be reached. This will allow an agent to not have to hit a path point on the path exactly, but in the area. If this value is set to high the NavigationAgent will skip points on the path which can lead to leaving the navigation mesh. If this value is set to low the NavigationAgent will be stuck in a repath loop cause it will constantly overshoot or undershoot the distance to the next point on each physics frame update.
+
+----
+
 .. _class_NavigationAgent2D_property_path_max_distance:
 
 - :ref:`float<class_float>` **path_max_distance**
@@ -230,7 +258,7 @@ The radius of the agent.
 | *Getter*  | get_target_desired_distance()      |
 +-----------+------------------------------------+
 
-The distance threshold before a target is considered to be reached. This will allow an agent to not have to hit a point on the path exactly, but in the area.
+The distance threshold before the final target point is considered to be reached. This will allow an agent to not have to hit the point of the final target exactly, but only the area. If this value is set to low the NavigationAgent will be stuck in a repath loop cause it will constantly overshoot or undershoot the distance to the final target point on each physics frame update.
 
 ----
 
@@ -271,7 +299,7 @@ Returns the reachable final location in global coordinates. This can change if t
 
 - :ref:`PackedVector2Array<class_PackedVector2Array>` **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.
 
 ----
 
@@ -283,11 +311,27 @@ Returns which index the agent is currently on in the navigation path's :ref:`Pac
 
 ----
 
+.. _class_NavigationAgent2D_method_get_navigation_layer_value:
+
+- :ref:`bool<class_bool>` **get_navigation_layer_value** **(** :ref:`int<class_int>` layer_number **)** |const|
+
+Returns whether or not the specified layer of the :ref:`navigation_layers<class_NavigationAgent2D_property_navigation_layers>` bitmask is enabled, given a ``layer_number`` between 1 and 32.
+
+----
+
+.. _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.
 
 ----
 
@@ -331,6 +375,22 @@ Returns true if the target location is reached. The target location is set using
 
 ----
 
+.. _class_NavigationAgent2D_method_set_navigation_layer_value:
+
+- void **set_navigation_layer_value** **(** :ref:`int<class_int>` layer_number, :ref:`bool<class_bool>` value **)**
+
+Based on ``value``, enables or disables the specified layer in the :ref:`navigation_layers<class_NavigationAgent2D_property_navigation_layers>` bitmask, given a ``layer_number`` between 1 and 32.
+
+----
+
+.. _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 **)**

+ 99 - 39
classes/class_navigationagent3d.rst

@@ -18,6 +18,8 @@ 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 collision avoidance. The agent needs navigation data to work correctly. ``NavigationAgent3D`` is physics safe.
 
+\ **Note:** After :ref:`set_target_location<class_NavigationAgent3D_method_set_target_location>` is used it is required to use the :ref:`get_next_location<class_NavigationAgent3D_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,10 +34,12 @@ Properties
 +---------------------------+------------------------------------------------------------------------------------------+-----------+
 | :ref:`float<class_float>` | :ref:`max_speed<class_NavigationAgent3D_property_max_speed>`                             | ``10.0``  |
 +---------------------------+------------------------------------------------------------------------------------------+-----------+
-| :ref:`int<class_int>`     | :ref:`navigable_layers<class_NavigationAgent3D_property_navigable_layers>`               | ``1``     |
+| :ref:`int<class_int>`     | :ref:`navigation_layers<class_NavigationAgent3D_property_navigation_layers>`             | ``1``     |
 +---------------------------+------------------------------------------------------------------------------------------+-----------+
 | :ref:`float<class_float>` | :ref:`neighbor_dist<class_NavigationAgent3D_property_neighbor_dist>`                     | ``50.0``  |
 +---------------------------+------------------------------------------------------------------------------------------+-----------+
+| :ref:`float<class_float>` | :ref:`path_desired_distance<class_NavigationAgent3D_property_path_desired_distance>`     | ``1.0``   |
++---------------------------+------------------------------------------------------------------------------------------+-----------+
 | :ref:`float<class_float>` | :ref:`path_max_distance<class_NavigationAgent3D_property_path_max_distance>`             | ``3.0``   |
 +---------------------------+------------------------------------------------------------------------------------------+-----------+
 | :ref:`float<class_float>` | :ref:`radius<class_NavigationAgent3D_property_radius>`                                   | ``1.0``   |
@@ -48,31 +52,39 @@ Properties
 Methods
 -------
 
-+-----------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`float<class_float>`                           | :ref:`distance_to_target<class_NavigationAgent3D_method_distance_to_target>` **(** **)** |const|                                  |
-+-----------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`Vector3<class_Vector3>`                       | :ref:`get_final_location<class_NavigationAgent3D_method_get_final_location>` **(** **)**                                          |
-+-----------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`PackedVector3Array<class_PackedVector3Array>` | :ref:`get_nav_path<class_NavigationAgent3D_method_get_nav_path>` **(** **)** |const|                                              |
-+-----------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`int<class_int>`                               | :ref:`get_nav_path_index<class_NavigationAgent3D_method_get_nav_path_index>` **(** **)** |const|                                  |
-+-----------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`Vector3<class_Vector3>`                       | :ref:`get_next_location<class_NavigationAgent3D_method_get_next_location>` **(** **)**                                            |
-+-----------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`RID<class_RID>`                               | :ref:`get_rid<class_NavigationAgent3D_method_get_rid>` **(** **)** |const|                                                        |
-+-----------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`Vector3<class_Vector3>`                       | :ref:`get_target_location<class_NavigationAgent3D_method_get_target_location>` **(** **)** |const|                                |
-+-----------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`bool<class_bool>`                             | :ref:`is_navigation_finished<class_NavigationAgent3D_method_is_navigation_finished>` **(** **)**                                  |
-+-----------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`bool<class_bool>`                             | :ref:`is_target_reachable<class_NavigationAgent3D_method_is_target_reachable>` **(** **)**                                        |
-+-----------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`bool<class_bool>`                             | :ref:`is_target_reached<class_NavigationAgent3D_method_is_target_reached>` **(** **)** |const|                                    |
-+-----------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------+
-| void                                                | :ref:`set_target_location<class_NavigationAgent3D_method_set_target_location>` **(** :ref:`Vector3<class_Vector3>` location **)** |
-+-----------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------+
-| void                                                | :ref:`set_velocity<class_NavigationAgent3D_method_set_velocity>` **(** :ref:`Vector3<class_Vector3>` velocity **)**               |
-+-----------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------+
++-----------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`float<class_float>`                           | :ref:`distance_to_target<class_NavigationAgent3D_method_distance_to_target>` **(** **)** |const|                                                                           |
++-----------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`Vector3<class_Vector3>`                       | :ref:`get_final_location<class_NavigationAgent3D_method_get_final_location>` **(** **)**                                                                                   |
++-----------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`PackedVector3Array<class_PackedVector3Array>` | :ref:`get_nav_path<class_NavigationAgent3D_method_get_nav_path>` **(** **)** |const|                                                                                       |
++-----------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`int<class_int>`                               | :ref:`get_nav_path_index<class_NavigationAgent3D_method_get_nav_path_index>` **(** **)** |const|                                                                           |
++-----------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`bool<class_bool>`                             | :ref:`get_navigation_layer_value<class_NavigationAgent3D_method_get_navigation_layer_value>` **(** :ref:`int<class_int>` layer_number **)** |const|                        |
++-----------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`RID<class_RID>`                               | :ref:`get_navigation_map<class_NavigationAgent3D_method_get_navigation_map>` **(** **)** |const|                                                                           |
++-----------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`Vector3<class_Vector3>`                       | :ref:`get_next_location<class_NavigationAgent3D_method_get_next_location>` **(** **)**                                                                                     |
++-----------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`RID<class_RID>`                               | :ref:`get_rid<class_NavigationAgent3D_method_get_rid>` **(** **)** |const|                                                                                                 |
++-----------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`Vector3<class_Vector3>`                       | :ref:`get_target_location<class_NavigationAgent3D_method_get_target_location>` **(** **)** |const|                                                                         |
++-----------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`bool<class_bool>`                             | :ref:`is_navigation_finished<class_NavigationAgent3D_method_is_navigation_finished>` **(** **)**                                                                           |
++-----------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`bool<class_bool>`                             | :ref:`is_target_reachable<class_NavigationAgent3D_method_is_target_reachable>` **(** **)**                                                                                 |
++-----------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`bool<class_bool>`                             | :ref:`is_target_reached<class_NavigationAgent3D_method_is_target_reached>` **(** **)** |const|                                                                             |
++-----------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| void                                                | :ref:`set_navigation_layer_value<class_NavigationAgent3D_method_set_navigation_layer_value>` **(** :ref:`int<class_int>` layer_number, :ref:`bool<class_bool>` value **)** |
++-----------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| void                                                | :ref:`set_navigation_map<class_NavigationAgent3D_method_set_navigation_map>` **(** :ref:`RID<class_RID>` navigation_map **)**                                              |
++-----------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| void                                                | :ref:`set_target_location<class_NavigationAgent3D_method_set_target_location>` **(** :ref:`Vector3<class_Vector3>` location **)**                                          |
++-----------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| void                                                | :ref:`set_velocity<class_NavigationAgent3D_method_set_velocity>` **(** :ref:`Vector3<class_Vector3>` velocity **)**                                                        |
++-----------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
 
 Signals
 -------
@@ -190,19 +202,19 @@ The maximum speed that an agent can move.
 
 ----
 
-.. _class_NavigationAgent3D_property_navigable_layers:
+.. _class_NavigationAgent3D_property_navigation_layers:
 
-- :ref:`int<class_int>` **navigable_layers**
+- :ref:`int<class_int>` **navigation_layers**
 
-+-----------+-----------------------------+
-| *Default* | ``1``                       |
-+-----------+-----------------------------+
-| *Setter*  | set_navigable_layers(value) |
-+-----------+-----------------------------+
-| *Getter*  | get_navigable_layers()      |
-+-----------+-----------------------------+
++-----------+------------------------------+
+| *Default* | ``1``                        |
++-----------+------------------------------+
+| *Setter*  | set_navigation_layers(value) |
++-----------+------------------------------+
+| *Getter*  | get_navigation_layers()      |
++-----------+------------------------------+
 
-A bitfield determining what layers of navigation regions this agent will use to calculate path. Changing it runtime will clear current navigation path and generate new one, according to new layers.
+A bitfield determining what navigation layers of navigation regions this NavigationAgent will use to calculate path. Changing it runtime will clear current navigation path and generate new one, according to new navigation layers.
 
 ----
 
@@ -222,6 +234,22 @@ The distance to search for other agents.
 
 ----
 
+.. _class_NavigationAgent3D_property_path_desired_distance:
+
+- :ref:`float<class_float>` **path_desired_distance**
+
++-----------+----------------------------------+
+| *Default* | ``1.0``                          |
++-----------+----------------------------------+
+| *Setter*  | set_path_desired_distance(value) |
++-----------+----------------------------------+
+| *Getter*  | get_path_desired_distance()      |
++-----------+----------------------------------+
+
+The distance threshold before a path point is considered to be reached. This will allow an agent to not have to hit a path point on the path exactly, but in the area. If this value is set to high the NavigationAgent will skip points on the path which can lead to leaving the navigation mesh. If this value is set to low the NavigationAgent will be stuck in a repath loop cause it will constantly overshoot or undershoot the distance to the next point on each physics frame update.
+
+----
+
 .. _class_NavigationAgent3D_property_path_max_distance:
 
 - :ref:`float<class_float>` **path_max_distance**
@@ -266,7 +294,7 @@ The radius of the agent.
 | *Getter*  | get_target_desired_distance()      |
 +-----------+------------------------------------+
 
-The distance threshold before a target is considered to be reached. This will allow an agent to not have to hit a point on the path exactly, but in the area.
+The distance threshold before the final target point is considered to be reached. This will allow an agent to not have to hit the point of the final target exactly, but only the area. If this value is set to low the NavigationAgent will be stuck in a repath loop cause it will constantly overshoot or undershoot the distance to the final target point on each physics frame update.
 
 ----
 
@@ -307,7 +335,7 @@ Returns the reachable final location in global coordinates. This can change if t
 
 - :ref:`PackedVector3Array<class_PackedVector3Array>` **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_NavigationAgent3D_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.
 
 ----
 
@@ -319,11 +347,27 @@ Returns which index the agent is currently on in the navigation path's :ref:`Pac
 
 ----
 
+.. _class_NavigationAgent3D_method_get_navigation_layer_value:
+
+- :ref:`bool<class_bool>` **get_navigation_layer_value** **(** :ref:`int<class_int>` layer_number **)** |const|
+
+Returns whether or not the specified layer of the :ref:`navigation_layers<class_NavigationAgent3D_property_navigation_layers>` bitmask is enabled, given a ``layer_number`` between 1 and 32.
+
+----
+
+.. _class_NavigationAgent3D_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_NavigationAgent3D_method_set_navigation_map>` to change the navigation map for the NavigationAgent and also update the agent on the NavigationServer.
+
+----
+
 .. _class_NavigationAgent3D_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.
 
 ----
 
@@ -367,6 +411,22 @@ Returns true if the target location is reached. The target location is set using
 
 ----
 
+.. _class_NavigationAgent3D_method_set_navigation_layer_value:
+
+- void **set_navigation_layer_value** **(** :ref:`int<class_int>` layer_number, :ref:`bool<class_bool>` value **)**
+
+Based on ``value``, enables or disables the specified layer in the :ref:`navigation_layers<class_NavigationAgent3D_property_navigation_layers>` bitmask, given a ``layer_number`` between 1 and 32.
+
+----
+
+.. _class_NavigationAgent3D_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_NavigationAgent3D_method_set_target_location:
 
 - void **set_target_location** **(** :ref:`Vector3<class_Vector3>` location **)**

+ 155 - 115
classes/class_navigationmesh.rst

@@ -26,49 +26,53 @@ 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>`                                         | ``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/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:`StringName<class_StringName>`                                 | :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:`AABB<class_AABB>`                                             | :ref:`filter_baking_aabb<class_NavigationMesh_property_filter_baking_aabb>`                             | ``AABB(0, 0, 0, 0, 0, 0)`` |
++---------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------+----------------------------+
+| :ref:`Vector3<class_Vector3>`                                       | :ref:`filter_baking_aabb_offset<class_NavigationMesh_property_filter_baking_aabb_offset>`               | ``Vector3(0, 0, 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:`StringName<class_StringName>`                                 | :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 +136,7 @@ enum **ParsedGeometryType**:
 
 - **PARSED_GEOMETRY_MESH_INSTANCES** = **0** --- Parses mesh instances as geometry. This includes :ref:`MeshInstance3D<class_MeshInstance3D>`, :ref:`CSGShape3D<class_CSGShape3D>`, and :ref:`GridMap<class_GridMap>` nodes.
 
-- **PARSED_GEOMETRY_STATIC_COLLIDERS** = **1** --- Parses :ref:`StaticBody3D<class_StaticBody3D>` 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:`StaticBody3D<class_StaticBody3D>` 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 +158,18 @@ enum **SourceGeometryMode**:
 
 - **SOURCE_GEOMETRY_NAVMESH_CHILDREN** = **0** --- Scans the child nodes of :ref:`NavigationRegion3D<class_NavigationRegion3D>` 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 +181,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 +199,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 +219,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 +233,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 +253,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 +269,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,9 +285,9 @@ 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* | ``1.0``                            |
@@ -297,9 +301,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 +317,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 +331,45 @@ 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_baking_aabb:
 
-- :ref:`bool<class_bool>` **filter/filter_walkable_low_height_spans**
+- :ref:`AABB<class_AABB>` **filter_baking_aabb**
 
-+-----------+---------------------------------------------+
-| *Default* | ``false``                                   |
-+-----------+---------------------------------------------+
-| *Setter*  | set_filter_walkable_low_height_spans(value) |
-+-----------+---------------------------------------------+
-| *Getter*  | get_filter_walkable_low_height_spans()      |
-+-----------+---------------------------------------------+
++-----------+-------------------------------+
+| *Default* | ``AABB(0, 0, 0, 0, 0, 0)``    |
++-----------+-------------------------------+
+| *Setter*  | set_filter_baking_aabb(value) |
++-----------+-------------------------------+
+| *Getter*  | get_filter_baking_aabb()      |
++-----------+-------------------------------+
 
-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>`.
+If the baking :ref:`AABB<class_AABB>` has a volume the navigation mesh baking will be restricted to its enclosing area.
 
 ----
 
-.. _class_NavigationMesh_property_filter/ledge_spans:
+.. _class_NavigationMesh_property_filter_baking_aabb_offset:
+
+- :ref:`Vector3<class_Vector3>` **filter_baking_aabb_offset**
+
++-----------+--------------------------------------+
+| *Default* | ``Vector3(0, 0, 0)``                 |
++-----------+--------------------------------------+
+| *Setter*  | set_filter_baking_aabb_offset(value) |
++-----------+--------------------------------------+
+| *Getter*  | get_filter_baking_aabb_offset()      |
++-----------+--------------------------------------+
 
-- :ref:`bool<class_bool>` **filter/ledge_spans**
+The position offset applied to the :ref:`filter_baking_aabb<class_NavigationMesh_property_filter_baking_aabb>` :ref:`AABB<class_AABB>`.
+
+----
+
+.. _class_NavigationMesh_property_filter_ledge_spans:
+
+- :ref:`bool<class_bool>` **filter_ledge_spans**
 
 +-----------+-------------------------------+
 | *Default* | ``false``                     |
@@ -363,9 +383,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 +395,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 +449,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 +465,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:`StringName<class_StringName>` **geometry/source_group_name**
+- :ref:`StringName<class_StringName>` **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 +499,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 +517,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 +535,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 +580,7 @@ Initializes the navigation mesh by setting the vertices and indices according to
 
 - :ref:`bool<class_bool>` **get_collision_mask_value** **(** :ref:`int<class_int>` layer_number **)** |const|
 
-Returns whether or not the specified layer of the :ref:`geometry/collision_mask<class_NavigationMesh_property_geometry/collision_mask>` is enabled, given a ``layer_number`` between 1 and 32.
+Returns whether or not the specified layer of the :ref:`geometry_collision_mask<class_NavigationMesh_property_geometry_collision_mask>` is enabled, given a ``layer_number`` between 1 and 32.
 
 ----
 
@@ -572,7 +612,7 @@ Returns a :ref:`PackedVector3Array<class_PackedVector3Array>` containing all the
 
 - void **set_collision_mask_value** **(** :ref:`int<class_int>` layer_number, :ref:`bool<class_bool>` value **)**
 
-Based on ``value``, enables or disables the specified layer in the :ref:`geometry/collision_mask<class_NavigationMesh_property_geometry/collision_mask>`, given a ``layer_number`` between 1 and 32.
+Based on ``value``, enables or disables the specified layer in the :ref:`geometry_collision_mask<class_NavigationMesh_property_geometry_collision_mask>`, given a ``layer_number`` between 1 and 32.
 
 ----
 

+ 3 - 1
classes/class_navigationmeshgenerator.rst

@@ -24,6 +24,8 @@ Navigation mesh baking happens in multiple steps and the result depends on 3D so
 
 The finalized navigation mesh is then returned and stored inside the :ref:`NavigationMesh<class_NavigationMesh>` for use as a resource inside :ref:`NavigationRegion3D<class_NavigationRegion3D>` nodes.
 
+\ **Note:** Using meshes to not only define walkable surfaces but also obstruct navigation baking does not always work. The navigation baking has no concept of what is a geometry "inside" when dealing with mesh source geometry and this is intentional. Depending on current baking parameters, as soon as the obstructing mesh is large enough to fit a navigation mesh area inside, the baking will generate navigation mesh areas that are inside the obstructing source geometry mesh.
+
 Methods
 -------
 
@@ -40,7 +42,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.
 
 ----
 

+ 82 - 20
classes/class_navigationregion2d.rst

@@ -22,23 +22,37 @@ Two regions can be connected to each other if they share a similar edge. You can
 
 \ **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_NavigationRegion2D_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_NavigationRegion2D_property_travel_cost>` multiplier.
+
 Properties
 ----------
 
-+---------------------------------------------------+-----------------------------------------------------------+----------+
-| :ref:`bool<class_bool>`                           | :ref:`enabled<class_NavigationRegion2D_property_enabled>` | ``true`` |
-+---------------------------------------------------+-----------------------------------------------------------+----------+
-| :ref:`int<class_int>`                             | :ref:`layers<class_NavigationRegion2D_property_layers>`   | ``1``    |
-+---------------------------------------------------+-----------------------------------------------------------+----------+
-| :ref:`NavigationPolygon<class_NavigationPolygon>` | :ref:`navpoly<class_NavigationRegion2D_property_navpoly>` |          |
-+---------------------------------------------------+-----------------------------------------------------------+----------+
++---------------------------------------------------+-------------------------------------------------------------------------------+----------+
+| :ref:`bool<class_bool>`                           | :ref:`enabled<class_NavigationRegion2D_property_enabled>`                     | ``true`` |
++---------------------------------------------------+-------------------------------------------------------------------------------+----------+
+| :ref:`float<class_float>`                         | :ref:`enter_cost<class_NavigationRegion2D_property_enter_cost>`               | ``0.0``  |
++---------------------------------------------------+-------------------------------------------------------------------------------+----------+
+| :ref:`int<class_int>`                             | :ref:`navigation_layers<class_NavigationRegion2D_property_navigation_layers>` | ``1``    |
++---------------------------------------------------+-------------------------------------------------------------------------------+----------+
+| :ref:`NavigationPolygon<class_NavigationPolygon>` | :ref:`navpoly<class_NavigationRegion2D_property_navpoly>`                     |          |
++---------------------------------------------------+-------------------------------------------------------------------------------+----------+
+| :ref:`float<class_float>`                         | :ref:`travel_cost<class_NavigationRegion2D_property_travel_cost>`             | ``1.0``  |
++---------------------------------------------------+-------------------------------------------------------------------------------+----------+
 
 Methods
 -------
 
-+-----------------------+-------------------------------------------------------------------------------------------+
-| :ref:`RID<class_RID>` | :ref:`get_region_rid<class_NavigationRegion2D_method_get_region_rid>` **(** **)** |const| |
-+-----------------------+-------------------------------------------------------------------------------------------+
++-------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`bool<class_bool>` | :ref:`get_navigation_layer_value<class_NavigationRegion2D_method_get_navigation_layer_value>` **(** :ref:`int<class_int>` layer_number **)** |const|                        |
++-------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`RID<class_RID>`   | :ref:`get_region_rid<class_NavigationRegion2D_method_get_region_rid>` **(** **)** |const|                                                                                   |
++-------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| void                    | :ref:`set_navigation_layer_value<class_NavigationRegion2D_method_set_navigation_layer_value>` **(** :ref:`int<class_int>` layer_number, :ref:`bool<class_bool>` value **)** |
++-------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
 
 Property Descriptions
 ---------------------
@@ -59,19 +73,35 @@ Determines if the ``NavigationRegion2D`` is enabled or disabled.
 
 ----
 
-.. _class_NavigationRegion2D_property_layers:
+.. _class_NavigationRegion2D_property_enter_cost:
 
-- :ref:`int<class_int>` **layers**
+- :ref:`float<class_float>` **enter_cost**
 
-+-----------+-------------------+
-| *Default* | ``1``             |
-+-----------+-------------------+
-| *Setter*  | set_layers(value) |
-+-----------+-------------------+
-| *Getter*  | get_layers()      |
-+-----------+-------------------+
++-----------+-----------------------+
+| *Default* | ``0.0``               |
++-----------+-----------------------+
+| *Setter*  | set_enter_cost(value) |
++-----------+-----------------------+
+| *Getter*  | get_enter_cost()      |
++-----------+-----------------------+
 
-A bitfield determining all layers the region belongs to. These layers can be checked upon when requesting a path with :ref:`NavigationServer2D.map_get_path<class_NavigationServer2D_method_map_get_path>`.
+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_NavigationRegion2D_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 layers the region belongs to. These navigation layers can be checked upon when requesting a path with :ref:`NavigationServer2D.map_get_path<class_NavigationServer2D_method_map_get_path>`.
 
 ----
 
@@ -87,15 +117,47 @@ A bitfield determining all layers the region belongs to. These layers can be che
 
 The :ref:`NavigationPolygon<class_NavigationPolygon>` resource to use.
 
+----
+
+.. _class_NavigationRegion2D_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
 -------------------
 
+.. _class_NavigationRegion2D_method_get_navigation_layer_value:
+
+- :ref:`bool<class_bool>` **get_navigation_layer_value** **(** :ref:`int<class_int>` layer_number **)** |const|
+
+Returns whether or not the specified layer of the :ref:`navigation_layers<class_NavigationRegion2D_property_navigation_layers>` bitmask is enabled, given a ``layer_number`` between 1 and 32.
+
+----
+
 .. _class_NavigationRegion2D_method_get_region_rid:
 
 - :ref:`RID<class_RID>` **get_region_rid** **(** **)** |const|
 
 Returns the :ref:`RID<class_RID>` of this region on the :ref:`NavigationServer2D<class_NavigationServer2D>`. Combined with :ref:`NavigationServer2D.map_get_closest_point_owner<class_NavigationServer2D_method_map_get_closest_point_owner>` can be used to identify the ``NavigationRegion2D`` closest to a point on the merged navigation map.
 
+----
+
+.. _class_NavigationRegion2D_method_set_navigation_layer_value:
+
+- void **set_navigation_layer_value** **(** :ref:`int<class_int>` layer_number, :ref:`bool<class_bool>` value **)**
+
+Based on ``value``, enables or disables the specified layer in the :ref:`navigation_layers<class_NavigationRegion2D_property_navigation_layers>` bitmask, given a ``layer_number`` between 1 and 32.
+
 .. |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.)`

+ 86 - 22
classes/class_navigationregion3d.rst

@@ -20,25 +20,41 @@ A region of the navigation map. It tells the :ref:`NavigationServer3D<class_Navi
 
 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:`NavigationServer3D.map_set_edge_connection_margin<class_NavigationServer3D_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_NavigationRegion3D_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_NavigationRegion3D_property_travel_cost>` multiplier.
+
 Properties
 ----------
 
-+---------------------------------------------+-----------------------------------------------------------+----------+
-| :ref:`bool<class_bool>`                     | :ref:`enabled<class_NavigationRegion3D_property_enabled>` | ``true`` |
-+---------------------------------------------+-----------------------------------------------------------+----------+
-| :ref:`int<class_int>`                       | :ref:`layers<class_NavigationRegion3D_property_layers>`   | ``1``    |
-+---------------------------------------------+-----------------------------------------------------------+----------+
-| :ref:`NavigationMesh<class_NavigationMesh>` | :ref:`navmesh<class_NavigationRegion3D_property_navmesh>` |          |
-+---------------------------------------------+-----------------------------------------------------------+----------+
++---------------------------------------------+-------------------------------------------------------------------------------+----------+
+| :ref:`bool<class_bool>`                     | :ref:`enabled<class_NavigationRegion3D_property_enabled>`                     | ``true`` |
++---------------------------------------------+-------------------------------------------------------------------------------+----------+
+| :ref:`float<class_float>`                   | :ref:`enter_cost<class_NavigationRegion3D_property_enter_cost>`               | ``0.0``  |
++---------------------------------------------+-------------------------------------------------------------------------------+----------+
+| :ref:`int<class_int>`                       | :ref:`navigation_layers<class_NavigationRegion3D_property_navigation_layers>` | ``1``    |
++---------------------------------------------+-------------------------------------------------------------------------------+----------+
+| :ref:`NavigationMesh<class_NavigationMesh>` | :ref:`navmesh<class_NavigationRegion3D_property_navmesh>`                     |          |
++---------------------------------------------+-------------------------------------------------------------------------------+----------+
+| :ref:`float<class_float>`                   | :ref:`travel_cost<class_NavigationRegion3D_property_travel_cost>`             | ``1.0``  |
++---------------------------------------------+-------------------------------------------------------------------------------+----------+
 
 Methods
 -------
 
-+-----------------------+--------------------------------------------------------------------------------------------------------------------------------------+
-| void                  | :ref:`bake_navigation_mesh<class_NavigationRegion3D_method_bake_navigation_mesh>` **(** :ref:`bool<class_bool>` on_thread=true **)** |
-+-----------------------+--------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`RID<class_RID>` | :ref:`get_region_rid<class_NavigationRegion3D_method_get_region_rid>` **(** **)** |const|                                            |
-+-----------------------+--------------------------------------------------------------------------------------------------------------------------------------+
++-------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| void                    | :ref:`bake_navigation_mesh<class_NavigationRegion3D_method_bake_navigation_mesh>` **(** :ref:`bool<class_bool>` on_thread=true **)**                                        |
++-------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`bool<class_bool>` | :ref:`get_navigation_layer_value<class_NavigationRegion3D_method_get_navigation_layer_value>` **(** :ref:`int<class_int>` layer_number **)** |const|                        |
++-------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`RID<class_RID>`   | :ref:`get_region_rid<class_NavigationRegion3D_method_get_region_rid>` **(** **)** |const|                                                                                   |
++-------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| void                    | :ref:`set_navigation_layer_value<class_NavigationRegion3D_method_set_navigation_layer_value>` **(** :ref:`int<class_int>` layer_number, :ref:`bool<class_bool>` value **)** |
++-------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
 
 Signals
 -------
@@ -76,19 +92,35 @@ Determines if the ``NavigationRegion3D`` is enabled or disabled.
 
 ----
 
-.. _class_NavigationRegion3D_property_layers:
+.. _class_NavigationRegion3D_property_enter_cost:
 
-- :ref:`int<class_int>` **layers**
+- :ref:`float<class_float>` **enter_cost**
 
-+-----------+-------------------+
-| *Default* | ``1``             |
-+-----------+-------------------+
-| *Setter*  | set_layers(value) |
-+-----------+-------------------+
-| *Getter*  | get_layers()      |
-+-----------+-------------------+
++-----------+-----------------------+
+| *Default* | ``0.0``               |
++-----------+-----------------------+
+| *Setter*  | set_enter_cost(value) |
++-----------+-----------------------+
+| *Getter*  | get_enter_cost()      |
++-----------+-----------------------+
 
-A bitfield determining all layers the region belongs to. These layers can be checked upon when requesting a path with :ref:`NavigationServer3D.map_get_path<class_NavigationServer3D_method_map_get_path>`.
+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_NavigationRegion3D_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 layers the region belongs to. These navigation layers can be checked upon when requesting a path with :ref:`NavigationServer3D.map_get_path<class_NavigationServer3D_method_map_get_path>`.
 
 ----
 
@@ -104,6 +136,22 @@ A bitfield determining all layers the region belongs to. These layers can be che
 
 The :ref:`NavigationMesh<class_NavigationMesh>` resource to use.
 
+----
+
+.. _class_NavigationRegion3D_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
 -------------------
 
@@ -115,12 +163,28 @@ Bakes the :ref:`NavigationMesh<class_NavigationMesh>`. If ``on_thread`` is set t
 
 ----
 
+.. _class_NavigationRegion3D_method_get_navigation_layer_value:
+
+- :ref:`bool<class_bool>` **get_navigation_layer_value** **(** :ref:`int<class_int>` layer_number **)** |const|
+
+Returns whether or not the specified layer of the :ref:`navigation_layers<class_NavigationRegion3D_property_navigation_layers>` bitmask is enabled, given a ``layer_number`` between 1 and 32.
+
+----
+
 .. _class_NavigationRegion3D_method_get_region_rid:
 
 - :ref:`RID<class_RID>` **get_region_rid** **(** **)** |const|
 
 Returns the :ref:`RID<class_RID>` of this region on the :ref:`NavigationServer3D<class_NavigationServer3D>`. Combined with :ref:`NavigationServer3D.map_get_closest_point_owner<class_NavigationServer3D_method_map_get_closest_point_owner>` can be used to identify the ``NavigationRegion3D`` closest to a point on the merged navigation map.
 
+----
+
+.. _class_NavigationRegion3D_method_set_navigation_layer_value:
+
+- void **set_navigation_layer_value** **(** :ref:`int<class_int>` layer_number, :ref:`bool<class_bool>` value **)**
+
+Based on ``value``, enables or disables the specified layer in the :ref:`navigation_layers<class_NavigationRegion3D_property_navigation_layers>` bitmask, given a ``layer_number`` between 1 and 32.
+
 .. |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.)`

+ 165 - 83
classes/class_navigationserver2d.rst

@@ -24,7 +24,7 @@ Maps are made up of regions, which are made of navigation polygons. Together, th
 
 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 ``edge_connection_margin`` to the respective other edge's vertex.
 
-You may assign navigation layers to regions with :ref:`region_set_layers<class_NavigationServer2D_method_region_set_layers>`, which then can be checked upon when requesting a path with :ref:`map_get_path<class_NavigationServer2D_method_map_get_path>`. This allows allowing or forbidding some areas to 2D objects.
+You may assign navigation layers to regions with :ref:`region_set_navigation_layers<class_NavigationServer2D_method_region_set_navigation_layers>`, which then can be checked upon when requesting a path with :ref:`map_get_path<class_NavigationServer2D_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.
 
@@ -40,79 +40,93 @@ Tutorials
 Methods
 -------
 
-+-----------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`RID<class_RID>`                               | :ref:`agent_create<class_NavigationServer2D_method_agent_create>` **(** **)** |const|                                                                                                                                                                              |
-+-----------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`RID<class_RID>`                               | :ref:`agent_get_map<class_NavigationServer2D_method_agent_get_map>` **(** :ref:`RID<class_RID>` agent **)** |const|                                                                                                                                                |
-+-----------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`bool<class_bool>`                             | :ref:`agent_is_map_changed<class_NavigationServer2D_method_agent_is_map_changed>` **(** :ref:`RID<class_RID>` agent **)** |const|                                                                                                                                  |
-+-----------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| void                                                | :ref:`agent_set_callback<class_NavigationServer2D_method_agent_set_callback>` **(** :ref:`RID<class_RID>` agent, :ref:`Object<class_Object>` receiver, :ref:`StringName<class_StringName>` method, :ref:`Variant<class_Variant>` userdata=null **)** |const|       |
-+-----------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| void                                                | :ref:`agent_set_map<class_NavigationServer2D_method_agent_set_map>` **(** :ref:`RID<class_RID>` agent, :ref:`RID<class_RID>` map **)** |const|                                                                                                                     |
-+-----------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| void                                                | :ref:`agent_set_max_neighbors<class_NavigationServer2D_method_agent_set_max_neighbors>` **(** :ref:`RID<class_RID>` agent, :ref:`int<class_int>` count **)** |const|                                                                                               |
-+-----------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| void                                                | :ref:`agent_set_max_speed<class_NavigationServer2D_method_agent_set_max_speed>` **(** :ref:`RID<class_RID>` agent, :ref:`float<class_float>` max_speed **)** |const|                                                                                               |
-+-----------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| void                                                | :ref:`agent_set_neighbor_dist<class_NavigationServer2D_method_agent_set_neighbor_dist>` **(** :ref:`RID<class_RID>` agent, :ref:`float<class_float>` dist **)** |const|                                                                                            |
-+-----------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| void                                                | :ref:`agent_set_position<class_NavigationServer2D_method_agent_set_position>` **(** :ref:`RID<class_RID>` agent, :ref:`Vector2<class_Vector2>` position **)** |const|                                                                                              |
-+-----------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| void                                                | :ref:`agent_set_radius<class_NavigationServer2D_method_agent_set_radius>` **(** :ref:`RID<class_RID>` agent, :ref:`float<class_float>` radius **)** |const|                                                                                                        |
-+-----------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| void                                                | :ref:`agent_set_target_velocity<class_NavigationServer2D_method_agent_set_target_velocity>` **(** :ref:`RID<class_RID>` agent, :ref:`Vector2<class_Vector2>` target_velocity **)** |const|                                                                         |
-+-----------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| void                                                | :ref:`agent_set_time_horizon<class_NavigationServer2D_method_agent_set_time_horizon>` **(** :ref:`RID<class_RID>` agent, :ref:`float<class_float>` time **)** |const|                                                                                              |
-+-----------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| void                                                | :ref:`agent_set_velocity<class_NavigationServer2D_method_agent_set_velocity>` **(** :ref:`RID<class_RID>` agent, :ref:`Vector2<class_Vector2>` velocity **)** |const|                                                                                              |
-+-----------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| void                                                | :ref:`free_rid<class_NavigationServer2D_method_free_rid>` **(** :ref:`RID<class_RID>` rid **)** |const|                                                                                                                                                            |
-+-----------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`RID<class_RID>`                               | :ref:`map_create<class_NavigationServer2D_method_map_create>` **(** **)** |const|                                                                                                                                                                                  |
-+-----------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`Array<class_Array>`                           | :ref:`map_get_agents<class_NavigationServer2D_method_map_get_agents>` **(** :ref:`RID<class_RID>` map **)** |const|                                                                                                                                                |
-+-----------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`float<class_float>`                           | :ref:`map_get_cell_size<class_NavigationServer2D_method_map_get_cell_size>` **(** :ref:`RID<class_RID>` map **)** |const|                                                                                                                                          |
-+-----------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`Vector2<class_Vector2>`                       | :ref:`map_get_closest_point<class_NavigationServer2D_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_NavigationServer2D_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_NavigationServer2D_method_map_get_edge_connection_margin>` **(** :ref:`RID<class_RID>` map **)** |const|                                                                                                                |
-+-----------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`PackedVector2Array<class_PackedVector2Array>` | :ref:`map_get_path<class_NavigationServer2D_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>` layers=1 **)** |const| |
-+-----------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`Array<class_Array>`                           | :ref:`map_get_regions<class_NavigationServer2D_method_map_get_regions>` **(** :ref:`RID<class_RID>` map **)** |const|                                                                                                                                              |
-+-----------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`bool<class_bool>`                             | :ref:`map_is_active<class_NavigationServer2D_method_map_is_active>` **(** :ref:`RID<class_RID>` nap **)** |const|                                                                                                                                                  |
-+-----------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| void                                                | :ref:`map_set_active<class_NavigationServer2D_method_map_set_active>` **(** :ref:`RID<class_RID>` map, :ref:`bool<class_bool>` active **)** |const|                                                                                                                |
-+-----------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| void                                                | :ref:`map_set_cell_size<class_NavigationServer2D_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_NavigationServer2D_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_NavigationServer2D_method_region_create>` **(** **)** |const|                                                                                                                                                                            |
-+-----------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`Vector2<class_Vector2>`                       | :ref:`region_get_connection_pathway_end<class_NavigationServer2D_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_NavigationServer2D_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_NavigationServer2D_method_region_get_connections_count>` **(** :ref:`RID<class_RID>` region **)** |const|                                                                                                                 |
-+-----------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`int<class_int>`                               | :ref:`region_get_layers<class_NavigationServer2D_method_region_get_layers>` **(** :ref:`RID<class_RID>` region **)** |const|                                                                                                                                       |
-+-----------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`RID<class_RID>`                               | :ref:`region_get_map<class_NavigationServer2D_method_region_get_map>` **(** :ref:`RID<class_RID>` region **)** |const|                                                                                                                                             |
-+-----------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| void                                                | :ref:`region_set_layers<class_NavigationServer2D_method_region_set_layers>` **(** :ref:`RID<class_RID>` region, :ref:`int<class_int>` layers **)** |const|                                                                                                         |
-+-----------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| void                                                | :ref:`region_set_map<class_NavigationServer2D_method_region_set_map>` **(** :ref:`RID<class_RID>` region, :ref:`RID<class_RID>` map **)** |const|                                                                                                                  |
-+-----------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| void                                                | :ref:`region_set_navpoly<class_NavigationServer2D_method_region_set_navpoly>` **(** :ref:`RID<class_RID>` region, :ref:`NavigationPolygon<class_NavigationPolygon>` nav_poly **)** |const|                                                                         |
-+-----------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| void                                                | :ref:`region_set_transform<class_NavigationServer2D_method_region_set_transform>` **(** :ref:`RID<class_RID>` region, :ref:`Transform2D<class_Transform2D>` transform **)** |const|                                                                                |
-+-----------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
++-----------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`RID<class_RID>`                               | :ref:`agent_create<class_NavigationServer2D_method_agent_create>` **(** **)** |const|                                                                                                                                                                                         |
++-----------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`RID<class_RID>`                               | :ref:`agent_get_map<class_NavigationServer2D_method_agent_get_map>` **(** :ref:`RID<class_RID>` agent **)** |const|                                                                                                                                                           |
++-----------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`bool<class_bool>`                             | :ref:`agent_is_map_changed<class_NavigationServer2D_method_agent_is_map_changed>` **(** :ref:`RID<class_RID>` agent **)** |const|                                                                                                                                             |
++-----------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| void                                                | :ref:`agent_set_callback<class_NavigationServer2D_method_agent_set_callback>` **(** :ref:`RID<class_RID>` agent, :ref:`Object<class_Object>` receiver, :ref:`StringName<class_StringName>` method, :ref:`Variant<class_Variant>` userdata=null **)** |const|                  |
++-----------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| void                                                | :ref:`agent_set_map<class_NavigationServer2D_method_agent_set_map>` **(** :ref:`RID<class_RID>` agent, :ref:`RID<class_RID>` map **)** |const|                                                                                                                                |
++-----------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| void                                                | :ref:`agent_set_max_neighbors<class_NavigationServer2D_method_agent_set_max_neighbors>` **(** :ref:`RID<class_RID>` agent, :ref:`int<class_int>` count **)** |const|                                                                                                          |
++-----------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| void                                                | :ref:`agent_set_max_speed<class_NavigationServer2D_method_agent_set_max_speed>` **(** :ref:`RID<class_RID>` agent, :ref:`float<class_float>` max_speed **)** |const|                                                                                                          |
++-----------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| void                                                | :ref:`agent_set_neighbor_dist<class_NavigationServer2D_method_agent_set_neighbor_dist>` **(** :ref:`RID<class_RID>` agent, :ref:`float<class_float>` dist **)** |const|                                                                                                       |
++-----------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| void                                                | :ref:`agent_set_position<class_NavigationServer2D_method_agent_set_position>` **(** :ref:`RID<class_RID>` agent, :ref:`Vector2<class_Vector2>` position **)** |const|                                                                                                         |
++-----------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| void                                                | :ref:`agent_set_radius<class_NavigationServer2D_method_agent_set_radius>` **(** :ref:`RID<class_RID>` agent, :ref:`float<class_float>` radius **)** |const|                                                                                                                   |
++-----------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| void                                                | :ref:`agent_set_target_velocity<class_NavigationServer2D_method_agent_set_target_velocity>` **(** :ref:`RID<class_RID>` agent, :ref:`Vector2<class_Vector2>` target_velocity **)** |const|                                                                                    |
++-----------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| void                                                | :ref:`agent_set_time_horizon<class_NavigationServer2D_method_agent_set_time_horizon>` **(** :ref:`RID<class_RID>` agent, :ref:`float<class_float>` time **)** |const|                                                                                                         |
++-----------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| void                                                | :ref:`agent_set_velocity<class_NavigationServer2D_method_agent_set_velocity>` **(** :ref:`RID<class_RID>` agent, :ref:`Vector2<class_Vector2>` velocity **)** |const|                                                                                                         |
++-----------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| void                                                | :ref:`free_rid<class_NavigationServer2D_method_free_rid>` **(** :ref:`RID<class_RID>` rid **)** |const|                                                                                                                                                                       |
++-----------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`Array<class_Array>`                           | :ref:`get_maps<class_NavigationServer2D_method_get_maps>` **(** **)** |const|                                                                                                                                                                                                 |
++-----------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`RID<class_RID>`                               | :ref:`map_create<class_NavigationServer2D_method_map_create>` **(** **)** |const|                                                                                                                                                                                             |
++-----------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| void                                                | :ref:`map_force_update<class_NavigationServer2D_method_map_force_update>` **(** :ref:`RID<class_RID>` map **)**                                                                                                                                                               |
++-----------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`Array<class_Array>`                           | :ref:`map_get_agents<class_NavigationServer2D_method_map_get_agents>` **(** :ref:`RID<class_RID>` map **)** |const|                                                                                                                                                           |
++-----------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`float<class_float>`                           | :ref:`map_get_cell_size<class_NavigationServer2D_method_map_get_cell_size>` **(** :ref:`RID<class_RID>` map **)** |const|                                                                                                                                                     |
++-----------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`Vector2<class_Vector2>`                       | :ref:`map_get_closest_point<class_NavigationServer2D_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_NavigationServer2D_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_NavigationServer2D_method_map_get_edge_connection_margin>` **(** :ref:`RID<class_RID>` map **)** |const|                                                                                                                           |
++-----------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`PackedVector2Array<class_PackedVector2Array>` | :ref:`map_get_path<class_NavigationServer2D_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_NavigationServer2D_method_map_get_regions>` **(** :ref:`RID<class_RID>` map **)** |const|                                                                                                                                                         |
++-----------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`bool<class_bool>`                             | :ref:`map_is_active<class_NavigationServer2D_method_map_is_active>` **(** :ref:`RID<class_RID>` nap **)** |const|                                                                                                                                                             |
++-----------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| void                                                | :ref:`map_set_active<class_NavigationServer2D_method_map_set_active>` **(** :ref:`RID<class_RID>` map, :ref:`bool<class_bool>` active **)** |const|                                                                                                                           |
++-----------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| void                                                | :ref:`map_set_cell_size<class_NavigationServer2D_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_NavigationServer2D_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_NavigationServer2D_method_region_create>` **(** **)** |const|                                                                                                                                                                                       |
++-----------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`Vector2<class_Vector2>`                       | :ref:`region_get_connection_pathway_end<class_NavigationServer2D_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_NavigationServer2D_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_NavigationServer2D_method_region_get_connections_count>` **(** :ref:`RID<class_RID>` region **)** |const|                                                                                                                            |
++-----------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`float<class_float>`                           | :ref:`region_get_enter_cost<class_NavigationServer2D_method_region_get_enter_cost>` **(** :ref:`RID<class_RID>` region **)** |const|                                                                                                                                          |
++-----------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`RID<class_RID>`                               | :ref:`region_get_map<class_NavigationServer2D_method_region_get_map>` **(** :ref:`RID<class_RID>` region **)** |const|                                                                                                                                                        |
++-----------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`int<class_int>`                               | :ref:`region_get_navigation_layers<class_NavigationServer2D_method_region_get_navigation_layers>` **(** :ref:`RID<class_RID>` region **)** |const|                                                                                                                            |
++-----------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`float<class_float>`                           | :ref:`region_get_travel_cost<class_NavigationServer2D_method_region_get_travel_cost>` **(** :ref:`RID<class_RID>` region **)** |const|                                                                                                                                        |
++-----------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`bool<class_bool>`                             | :ref:`region_owns_point<class_NavigationServer2D_method_region_owns_point>` **(** :ref:`RID<class_RID>` region, :ref:`Vector2<class_Vector2>` point **)** |const|                                                                                                             |
++-----------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| void                                                | :ref:`region_set_enter_cost<class_NavigationServer2D_method_region_set_enter_cost>` **(** :ref:`RID<class_RID>` region, :ref:`float<class_float>` enter_cost **)** |const|                                                                                                    |
++-----------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| void                                                | :ref:`region_set_map<class_NavigationServer2D_method_region_set_map>` **(** :ref:`RID<class_RID>` region, :ref:`RID<class_RID>` map **)** |const|                                                                                                                             |
++-----------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| void                                                | :ref:`region_set_navigation_layers<class_NavigationServer2D_method_region_set_navigation_layers>` **(** :ref:`RID<class_RID>` region, :ref:`int<class_int>` navigation_layers **)** |const|                                                                                   |
++-----------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| void                                                | :ref:`region_set_navpoly<class_NavigationServer2D_method_region_set_navpoly>` **(** :ref:`RID<class_RID>` region, :ref:`NavigationPolygon<class_NavigationPolygon>` nav_poly **)** |const|                                                                                    |
++-----------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| void                                                | :ref:`region_set_transform<class_NavigationServer2D_method_region_set_transform>` **(** :ref:`RID<class_RID>` region, :ref:`Transform2D<class_Transform2D>` transform **)** |const|                                                                                           |
++-----------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| void                                                | :ref:`region_set_travel_cost<class_NavigationServer2D_method_region_set_travel_cost>` **(** :ref:`RID<class_RID>` region, :ref:`float<class_float>` travel_cost **)** |const|                                                                                                 |
++-----------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
 
 Signals
 -------
@@ -154,7 +168,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:`StringName<class_StringName>` 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_NavigationServer2D_method_agent_set_callback>` again with a ``null`` object as the ``receiver``.
 
 ----
 
@@ -238,6 +254,14 @@ Destroys the given RID.
 
 ----
 
+.. _class_NavigationServer2D_method_get_maps:
+
+- :ref:`Array<class_Array>` **get_maps** **(** **)** |const|
+
+Returns all created navigation map :ref:`RID<class_RID>`\ s on the NavigationServer. This returns both 2D and 3D created navigation maps as there is technically no distinction between them.
+
+----
+
 .. _class_NavigationServer2D_method_map_create:
 
 - :ref:`RID<class_RID>` **map_create** **(** **)** |const|
@@ -246,6 +270,20 @@ Create a new map.
 
 ----
 
+.. _class_NavigationServer2D_method_map_force_update:
+
+- void **map_force_update** **(** :ref:`RID<class_RID>` map **)**
+
+This function immediately forces synchronization of the specified navigation ``map`` :ref:`RID<class_RID>`. By default navigation maps are only synchronized at the end of each physics frame. This function can be used to immediately (re)calculate all the navigation meshes and region connections of the navigation map. This makes it possible to query a navigation path for a changed map immediately and in the same frame (multiple times if needed).
+
+Due to technical restrictions the current NavigationServer command queue will be flushed. This means all already queued update commands for this physics frame will be executed, even those intended for other maps, regions and agents not part of the specified map. The expensive computation of the navigation meshes and region connections of a map will only be done for the specified map. Other maps will receive the normal synchronization at the end of the physics frame. Should the specified map receive changes after the forced update it will update again as well when the other maps receive their update.
+
+Avoidance processing and dispatch of the ``safe_velocity`` signals is untouched by this function and continues to happen for all maps and agents at the end of the physics frame.
+
+\ **Note:** With great power comes great responsibility. This function should only be used by users that really know what they are doing and have a good reason for it. Forcing an immediate update of a navigation map requires locking the NavigationServer and flushing the entire NavigationServer command queue. Not only can this severely impact the performance of a game but it can also introduce bugs if used inappropriately without much foresight.
+
+----
+
 .. _class_NavigationServer2D_method_map_get_agents:
 
 - :ref:`Array<class_Array>` **map_get_agents** **(** :ref:`RID<class_RID>` map **)** |const|
@@ -288,9 +326,9 @@ Returns the edge connection margin of the map. The edge connection margin is a d
 
 .. _class_NavigationServer2D_method_map_get_path:
 
-- :ref:`PackedVector2Array<class_PackedVector2Array>` **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>` layers=1 **)** |const|
+- :ref:`PackedVector2Array<class_PackedVector2Array>` **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. ``layers`` is a bitmask of all region layers that are allowed to be in the path.
+Returns the navigation path to reach the destination from the origin. ``navigation_layers`` is a bitmask of all region navigation layers that are allowed to be in the path.
 
 ----
 
@@ -366,11 +404,11 @@ Returns how many connections this ``region`` has with other regions in the map.
 
 ----
 
-.. _class_NavigationServer2D_method_region_get_layers:
+.. _class_NavigationServer2D_method_region_get_enter_cost:
 
-- :ref:`int<class_int>` **region_get_layers** **(** :ref:`RID<class_RID>` region **)** |const|
+- :ref:`float<class_float>` **region_get_enter_cost** **(** :ref:`RID<class_RID>` region **)** |const|
 
-Returns the region's layers.
+Returns the ``enter_cost`` of this ``region``.
 
 ----
 
@@ -382,11 +420,39 @@ Returns the navigation map :ref:`RID<class_RID>` the requested ``region`` is cur
 
 ----
 
-.. _class_NavigationServer2D_method_region_set_layers:
+.. _class_NavigationServer2D_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_NavigationServer2D_method_region_get_travel_cost:
 
-- void **region_set_layers** **(** :ref:`RID<class_RID>` region, :ref:`int<class_int>` layers **)** |const|
+- :ref:`float<class_float>` **region_get_travel_cost** **(** :ref:`RID<class_RID>` region **)** |const|
 
-Set the region's layers. This allows selecting regions from a path request (when using :ref:`map_get_path<class_NavigationServer2D_method_map_get_path>`).
+Returns the ``travel_cost`` of this ``region``.
+
+----
+
+.. _class_NavigationServer2D_method_region_owns_point:
+
+- :ref:`bool<class_bool>` **region_owns_point** **(** :ref:`RID<class_RID>` region, :ref:`Vector2<class_Vector2>` point **)** |const|
+
+Returns ``true`` if the provided ``point`` in world space is currently owned by the provided navigation ``region``. Owned in this context means that one of the region's navigation mesh polygon faces has a possible position at the closest distance to this point compared to all other navigation meshes from other navigation regions that are also registered on the navigation map of the provided region.
+
+If multiple navigation meshes have positions at equal distance the navigation region whose polygons are processed first wins the ownership. Polygons are processed in the same order that navigation regions were registered on the NavigationServer.
+
+\ **Note:** If navigation meshes from different navigation regions overlap (which should be avoided in general) the result might not be what is expected.
+
+----
+
+.. _class_NavigationServer2D_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``.
 
 ----
 
@@ -398,6 +464,14 @@ Sets the map for the region.
 
 ----
 
+.. _class_NavigationServer2D_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_NavigationServer2D_method_map_get_path>`).
+
+----
+
 .. _class_NavigationServer2D_method_region_set_navpoly:
 
 - void **region_set_navpoly** **(** :ref:`RID<class_RID>` region, :ref:`NavigationPolygon<class_NavigationPolygon>` nav_poly **)** |const|
@@ -412,6 +486,14 @@ Sets the navigation mesh for the region.
 
 Sets the global transformation for the region.
 
+----
+
+.. _class_NavigationServer2D_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.)`

+ 179 - 97
classes/class_navigationserver3d.rst

@@ -24,7 +24,7 @@ Maps are made up of regions, which are made of navigation meshes. Together, they
 
 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 ``edge_connection_margin`` to the respective other edge's vertex.
 
-You may assign navigation layers to regions with :ref:`region_set_layers<class_NavigationServer3D_method_region_set_layers>`, which then can be checked upon when requesting a path with :ref:`map_get_path<class_NavigationServer3D_method_map_get_path>`. This allows allowing or forbidding some areas to 3D objects.
+You may assign navigation layers to regions with :ref:`region_set_navigation_layers<class_NavigationServer3D_method_region_set_navigation_layers>`, which then can be checked upon when requesting a path with :ref:`map_get_path<class_NavigationServer3D_method_map_get_path>`. This allows allowing or forbidding some areas to 3D 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.
 
@@ -40,93 +40,107 @@ Tutorials
 Methods
 -------
 
-+-----------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`RID<class_RID>`                               | :ref:`agent_create<class_NavigationServer3D_method_agent_create>` **(** **)** |const|                                                                                                                                                                                        |
-+-----------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`RID<class_RID>`                               | :ref:`agent_get_map<class_NavigationServer3D_method_agent_get_map>` **(** :ref:`RID<class_RID>` agent **)** |const|                                                                                                                                                          |
-+-----------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`bool<class_bool>`                             | :ref:`agent_is_map_changed<class_NavigationServer3D_method_agent_is_map_changed>` **(** :ref:`RID<class_RID>` agent **)** |const|                                                                                                                                            |
-+-----------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| void                                                | :ref:`agent_set_callback<class_NavigationServer3D_method_agent_set_callback>` **(** :ref:`RID<class_RID>` agent, :ref:`Object<class_Object>` receiver, :ref:`StringName<class_StringName>` method, :ref:`Variant<class_Variant>` userdata=null **)** |const|                 |
-+-----------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| void                                                | :ref:`agent_set_map<class_NavigationServer3D_method_agent_set_map>` **(** :ref:`RID<class_RID>` agent, :ref:`RID<class_RID>` map **)** |const|                                                                                                                               |
-+-----------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| void                                                | :ref:`agent_set_max_neighbors<class_NavigationServer3D_method_agent_set_max_neighbors>` **(** :ref:`RID<class_RID>` agent, :ref:`int<class_int>` count **)** |const|                                                                                                         |
-+-----------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| void                                                | :ref:`agent_set_max_speed<class_NavigationServer3D_method_agent_set_max_speed>` **(** :ref:`RID<class_RID>` agent, :ref:`float<class_float>` max_speed **)** |const|                                                                                                         |
-+-----------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| void                                                | :ref:`agent_set_neighbor_dist<class_NavigationServer3D_method_agent_set_neighbor_dist>` **(** :ref:`RID<class_RID>` agent, :ref:`float<class_float>` dist **)** |const|                                                                                                      |
-+-----------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| void                                                | :ref:`agent_set_position<class_NavigationServer3D_method_agent_set_position>` **(** :ref:`RID<class_RID>` agent, :ref:`Vector3<class_Vector3>` position **)** |const|                                                                                                        |
-+-----------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| void                                                | :ref:`agent_set_radius<class_NavigationServer3D_method_agent_set_radius>` **(** :ref:`RID<class_RID>` agent, :ref:`float<class_float>` radius **)** |const|                                                                                                                  |
-+-----------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| void                                                | :ref:`agent_set_target_velocity<class_NavigationServer3D_method_agent_set_target_velocity>` **(** :ref:`RID<class_RID>` agent, :ref:`Vector3<class_Vector3>` target_velocity **)** |const|                                                                                   |
-+-----------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| void                                                | :ref:`agent_set_time_horizon<class_NavigationServer3D_method_agent_set_time_horizon>` **(** :ref:`RID<class_RID>` agent, :ref:`float<class_float>` time **)** |const|                                                                                                        |
-+-----------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| void                                                | :ref:`agent_set_velocity<class_NavigationServer3D_method_agent_set_velocity>` **(** :ref:`RID<class_RID>` agent, :ref:`Vector3<class_Vector3>` velocity **)** |const|                                                                                                        |
-+-----------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| void                                                | :ref:`free_rid<class_NavigationServer3D_method_free_rid>` **(** :ref:`RID<class_RID>` rid **)** |const|                                                                                                                                                                      |
-+-----------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`RID<class_RID>`                               | :ref:`map_create<class_NavigationServer3D_method_map_create>` **(** **)** |const|                                                                                                                                                                                            |
-+-----------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`Array<class_Array>`                           | :ref:`map_get_agents<class_NavigationServer3D_method_map_get_agents>` **(** :ref:`RID<class_RID>` map **)** |const|                                                                                                                                                          |
-+-----------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`float<class_float>`                           | :ref:`map_get_cell_size<class_NavigationServer3D_method_map_get_cell_size>` **(** :ref:`RID<class_RID>` map **)** |const|                                                                                                                                                    |
-+-----------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`Vector3<class_Vector3>`                       | :ref:`map_get_closest_point<class_NavigationServer3D_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_NavigationServer3D_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_NavigationServer3D_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_NavigationServer3D_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_NavigationServer3D_method_map_get_edge_connection_margin>` **(** :ref:`RID<class_RID>` map **)** |const|                                                                                                                          |
-+-----------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`PackedVector3Array<class_PackedVector3Array>` | :ref:`map_get_path<class_NavigationServer3D_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>` layers=1 **)** |const|           |
-+-----------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`Array<class_Array>`                           | :ref:`map_get_regions<class_NavigationServer3D_method_map_get_regions>` **(** :ref:`RID<class_RID>` map **)** |const|                                                                                                                                                        |
-+-----------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`Vector3<class_Vector3>`                       | :ref:`map_get_up<class_NavigationServer3D_method_map_get_up>` **(** :ref:`RID<class_RID>` map **)** |const|                                                                                                                                                                  |
-+-----------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`bool<class_bool>`                             | :ref:`map_is_active<class_NavigationServer3D_method_map_is_active>` **(** :ref:`RID<class_RID>` nap **)** |const|                                                                                                                                                            |
-+-----------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| void                                                | :ref:`map_set_active<class_NavigationServer3D_method_map_set_active>` **(** :ref:`RID<class_RID>` map, :ref:`bool<class_bool>` active **)** |const|                                                                                                                          |
-+-----------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| void                                                | :ref:`map_set_cell_size<class_NavigationServer3D_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_NavigationServer3D_method_map_set_edge_connection_margin>` **(** :ref:`RID<class_RID>` map, :ref:`float<class_float>` margin **)** |const|                                                                                        |
-+-----------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| void                                                | :ref:`map_set_up<class_NavigationServer3D_method_map_set_up>` **(** :ref:`RID<class_RID>` map, :ref:`Vector3<class_Vector3>` up **)** |const|                                                                                                                                |
-+-----------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| void                                                | :ref:`process<class_NavigationServer3D_method_process>` **(** :ref:`float<class_float>` delta_time **)**                                                                                                                                                                     |
-+-----------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| void                                                | :ref:`region_bake_navmesh<class_NavigationServer3D_method_region_bake_navmesh>` **(** :ref:`NavigationMesh<class_NavigationMesh>` mesh, :ref:`Node<class_Node>` node **)** |const|                                                                                           |
-+-----------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`RID<class_RID>`                               | :ref:`region_create<class_NavigationServer3D_method_region_create>` **(** **)** |const|                                                                                                                                                                                      |
-+-----------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`Vector3<class_Vector3>`                       | :ref:`region_get_connection_pathway_end<class_NavigationServer3D_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_NavigationServer3D_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_NavigationServer3D_method_region_get_connections_count>` **(** :ref:`RID<class_RID>` region **)** |const|                                                                                                                           |
-+-----------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`int<class_int>`                               | :ref:`region_get_layers<class_NavigationServer3D_method_region_get_layers>` **(** :ref:`RID<class_RID>` region **)** |const|                                                                                                                                                 |
-+-----------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`RID<class_RID>`                               | :ref:`region_get_map<class_NavigationServer3D_method_region_get_map>` **(** :ref:`RID<class_RID>` region **)** |const|                                                                                                                                                       |
-+-----------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| void                                                | :ref:`region_set_layers<class_NavigationServer3D_method_region_set_layers>` **(** :ref:`RID<class_RID>` region, :ref:`int<class_int>` layers **)** |const|                                                                                                                   |
-+-----------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| void                                                | :ref:`region_set_map<class_NavigationServer3D_method_region_set_map>` **(** :ref:`RID<class_RID>` region, :ref:`RID<class_RID>` map **)** |const|                                                                                                                            |
-+-----------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| void                                                | :ref:`region_set_navmesh<class_NavigationServer3D_method_region_set_navmesh>` **(** :ref:`RID<class_RID>` region, :ref:`NavigationMesh<class_NavigationMesh>` nav_mesh **)** |const|                                                                                         |
-+-----------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| void                                                | :ref:`region_set_transform<class_NavigationServer3D_method_region_set_transform>` **(** :ref:`RID<class_RID>` region, :ref:`Transform3D<class_Transform3D>` transform **)** |const|                                                                                          |
-+-----------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| void                                                | :ref:`set_active<class_NavigationServer3D_method_set_active>` **(** :ref:`bool<class_bool>` active **)** |const|                                                                                                                                                             |
-+-----------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
++-----------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`RID<class_RID>`                               | :ref:`agent_create<class_NavigationServer3D_method_agent_create>` **(** **)** |const|                                                                                                                                                                                         |
++-----------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`RID<class_RID>`                               | :ref:`agent_get_map<class_NavigationServer3D_method_agent_get_map>` **(** :ref:`RID<class_RID>` agent **)** |const|                                                                                                                                                           |
++-----------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`bool<class_bool>`                             | :ref:`agent_is_map_changed<class_NavigationServer3D_method_agent_is_map_changed>` **(** :ref:`RID<class_RID>` agent **)** |const|                                                                                                                                             |
++-----------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| void                                                | :ref:`agent_set_callback<class_NavigationServer3D_method_agent_set_callback>` **(** :ref:`RID<class_RID>` agent, :ref:`Object<class_Object>` receiver, :ref:`StringName<class_StringName>` method, :ref:`Variant<class_Variant>` userdata=null **)** |const|                  |
++-----------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| void                                                | :ref:`agent_set_map<class_NavigationServer3D_method_agent_set_map>` **(** :ref:`RID<class_RID>` agent, :ref:`RID<class_RID>` map **)** |const|                                                                                                                                |
++-----------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| void                                                | :ref:`agent_set_max_neighbors<class_NavigationServer3D_method_agent_set_max_neighbors>` **(** :ref:`RID<class_RID>` agent, :ref:`int<class_int>` count **)** |const|                                                                                                          |
++-----------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| void                                                | :ref:`agent_set_max_speed<class_NavigationServer3D_method_agent_set_max_speed>` **(** :ref:`RID<class_RID>` agent, :ref:`float<class_float>` max_speed **)** |const|                                                                                                          |
++-----------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| void                                                | :ref:`agent_set_neighbor_dist<class_NavigationServer3D_method_agent_set_neighbor_dist>` **(** :ref:`RID<class_RID>` agent, :ref:`float<class_float>` dist **)** |const|                                                                                                       |
++-----------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| void                                                | :ref:`agent_set_position<class_NavigationServer3D_method_agent_set_position>` **(** :ref:`RID<class_RID>` agent, :ref:`Vector3<class_Vector3>` position **)** |const|                                                                                                         |
++-----------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| void                                                | :ref:`agent_set_radius<class_NavigationServer3D_method_agent_set_radius>` **(** :ref:`RID<class_RID>` agent, :ref:`float<class_float>` radius **)** |const|                                                                                                                   |
++-----------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| void                                                | :ref:`agent_set_target_velocity<class_NavigationServer3D_method_agent_set_target_velocity>` **(** :ref:`RID<class_RID>` agent, :ref:`Vector3<class_Vector3>` target_velocity **)** |const|                                                                                    |
++-----------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| void                                                | :ref:`agent_set_time_horizon<class_NavigationServer3D_method_agent_set_time_horizon>` **(** :ref:`RID<class_RID>` agent, :ref:`float<class_float>` time **)** |const|                                                                                                         |
++-----------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| void                                                | :ref:`agent_set_velocity<class_NavigationServer3D_method_agent_set_velocity>` **(** :ref:`RID<class_RID>` agent, :ref:`Vector3<class_Vector3>` velocity **)** |const|                                                                                                         |
++-----------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| void                                                | :ref:`free_rid<class_NavigationServer3D_method_free_rid>` **(** :ref:`RID<class_RID>` rid **)** |const|                                                                                                                                                                       |
++-----------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`Array<class_Array>`                           | :ref:`get_maps<class_NavigationServer3D_method_get_maps>` **(** **)** |const|                                                                                                                                                                                                 |
++-----------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`RID<class_RID>`                               | :ref:`map_create<class_NavigationServer3D_method_map_create>` **(** **)** |const|                                                                                                                                                                                             |
++-----------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| void                                                | :ref:`map_force_update<class_NavigationServer3D_method_map_force_update>` **(** :ref:`RID<class_RID>` map **)**                                                                                                                                                               |
++-----------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`Array<class_Array>`                           | :ref:`map_get_agents<class_NavigationServer3D_method_map_get_agents>` **(** :ref:`RID<class_RID>` map **)** |const|                                                                                                                                                           |
++-----------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`float<class_float>`                           | :ref:`map_get_cell_size<class_NavigationServer3D_method_map_get_cell_size>` **(** :ref:`RID<class_RID>` map **)** |const|                                                                                                                                                     |
++-----------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`Vector3<class_Vector3>`                       | :ref:`map_get_closest_point<class_NavigationServer3D_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_NavigationServer3D_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_NavigationServer3D_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_NavigationServer3D_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_NavigationServer3D_method_map_get_edge_connection_margin>` **(** :ref:`RID<class_RID>` map **)** |const|                                                                                                                           |
++-----------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`PackedVector3Array<class_PackedVector3Array>` | :ref:`map_get_path<class_NavigationServer3D_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_NavigationServer3D_method_map_get_regions>` **(** :ref:`RID<class_RID>` map **)** |const|                                                                                                                                                         |
++-----------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`Vector3<class_Vector3>`                       | :ref:`map_get_up<class_NavigationServer3D_method_map_get_up>` **(** :ref:`RID<class_RID>` map **)** |const|                                                                                                                                                                   |
++-----------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`bool<class_bool>`                             | :ref:`map_is_active<class_NavigationServer3D_method_map_is_active>` **(** :ref:`RID<class_RID>` nap **)** |const|                                                                                                                                                             |
++-----------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| void                                                | :ref:`map_set_active<class_NavigationServer3D_method_map_set_active>` **(** :ref:`RID<class_RID>` map, :ref:`bool<class_bool>` active **)** |const|                                                                                                                           |
++-----------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| void                                                | :ref:`map_set_cell_size<class_NavigationServer3D_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_NavigationServer3D_method_map_set_edge_connection_margin>` **(** :ref:`RID<class_RID>` map, :ref:`float<class_float>` margin **)** |const|                                                                                         |
++-----------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| void                                                | :ref:`map_set_up<class_NavigationServer3D_method_map_set_up>` **(** :ref:`RID<class_RID>` map, :ref:`Vector3<class_Vector3>` up **)** |const|                                                                                                                                 |
++-----------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| void                                                | :ref:`process<class_NavigationServer3D_method_process>` **(** :ref:`float<class_float>` delta_time **)**                                                                                                                                                                      |
++-----------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| void                                                | :ref:`region_bake_navmesh<class_NavigationServer3D_method_region_bake_navmesh>` **(** :ref:`NavigationMesh<class_NavigationMesh>` mesh, :ref:`Node<class_Node>` node **)** |const|                                                                                            |
++-----------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`RID<class_RID>`                               | :ref:`region_create<class_NavigationServer3D_method_region_create>` **(** **)** |const|                                                                                                                                                                                       |
++-----------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`Vector3<class_Vector3>`                       | :ref:`region_get_connection_pathway_end<class_NavigationServer3D_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_NavigationServer3D_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_NavigationServer3D_method_region_get_connections_count>` **(** :ref:`RID<class_RID>` region **)** |const|                                                                                                                            |
++-----------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`float<class_float>`                           | :ref:`region_get_enter_cost<class_NavigationServer3D_method_region_get_enter_cost>` **(** :ref:`RID<class_RID>` region **)** |const|                                                                                                                                          |
++-----------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`RID<class_RID>`                               | :ref:`region_get_map<class_NavigationServer3D_method_region_get_map>` **(** :ref:`RID<class_RID>` region **)** |const|                                                                                                                                                        |
++-----------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`int<class_int>`                               | :ref:`region_get_navigation_layers<class_NavigationServer3D_method_region_get_navigation_layers>` **(** :ref:`RID<class_RID>` region **)** |const|                                                                                                                            |
++-----------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`float<class_float>`                           | :ref:`region_get_travel_cost<class_NavigationServer3D_method_region_get_travel_cost>` **(** :ref:`RID<class_RID>` region **)** |const|                                                                                                                                        |
++-----------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`bool<class_bool>`                             | :ref:`region_owns_point<class_NavigationServer3D_method_region_owns_point>` **(** :ref:`RID<class_RID>` region, :ref:`Vector3<class_Vector3>` point **)** |const|                                                                                                             |
++-----------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| void                                                | :ref:`region_set_enter_cost<class_NavigationServer3D_method_region_set_enter_cost>` **(** :ref:`RID<class_RID>` region, :ref:`float<class_float>` enter_cost **)** |const|                                                                                                    |
++-----------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| void                                                | :ref:`region_set_map<class_NavigationServer3D_method_region_set_map>` **(** :ref:`RID<class_RID>` region, :ref:`RID<class_RID>` map **)** |const|                                                                                                                             |
++-----------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| void                                                | :ref:`region_set_navigation_layers<class_NavigationServer3D_method_region_set_navigation_layers>` **(** :ref:`RID<class_RID>` region, :ref:`int<class_int>` navigation_layers **)** |const|                                                                                   |
++-----------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| void                                                | :ref:`region_set_navmesh<class_NavigationServer3D_method_region_set_navmesh>` **(** :ref:`RID<class_RID>` region, :ref:`NavigationMesh<class_NavigationMesh>` nav_mesh **)** |const|                                                                                          |
++-----------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| void                                                | :ref:`region_set_transform<class_NavigationServer3D_method_region_set_transform>` **(** :ref:`RID<class_RID>` region, :ref:`Transform3D<class_Transform3D>` transform **)** |const|                                                                                           |
++-----------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| void                                                | :ref:`region_set_travel_cost<class_NavigationServer3D_method_region_set_travel_cost>` **(** :ref:`RID<class_RID>` region, :ref:`float<class_float>` travel_cost **)** |const|                                                                                                 |
++-----------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| void                                                | :ref:`set_active<class_NavigationServer3D_method_set_active>` **(** :ref:`bool<class_bool>` active **)** |const|                                                                                                                                                              |
++-----------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
 
 Signals
 -------
@@ -168,7 +182,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:`StringName<class_StringName>` 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_NavigationServer3D_method_agent_set_callback>` again with a ``null`` object as the ``receiver``.
 
 ----
 
@@ -252,6 +268,14 @@ Destroys the given RID.
 
 ----
 
+.. _class_NavigationServer3D_method_get_maps:
+
+- :ref:`Array<class_Array>` **get_maps** **(** **)** |const|
+
+Returns all created navigation map :ref:`RID<class_RID>`\ s on the NavigationServer. This returns both 2D and 3D created navigation maps as there is technically no distinction between them.
+
+----
+
 .. _class_NavigationServer3D_method_map_create:
 
 - :ref:`RID<class_RID>` **map_create** **(** **)** |const|
@@ -260,6 +284,20 @@ Create a new map.
 
 ----
 
+.. _class_NavigationServer3D_method_map_force_update:
+
+- void **map_force_update** **(** :ref:`RID<class_RID>` map **)**
+
+This function immediately forces synchronization of the specified navigation ``map`` :ref:`RID<class_RID>`. By default navigation maps are only synchronized at the end of each physics frame. This function can be used to immediately (re)calculate all the navigation meshes and region connections of the navigation map. This makes it possible to query a navigation path for a changed map immediately and in the same frame (multiple times if needed).
+
+Due to technical restrictions the current NavigationServer command queue will be flushed. This means all already queued update commands for this physics frame will be executed, even those intended for other maps, regions and agents not part of the specified map. The expensive computation of the navigation meshes and region connections of a map will only be done for the specified map. Other maps will receive the normal synchronization at the end of the physics frame. Should the specified map receive changes after the forced update it will update again as well when the other maps receive their update.
+
+Avoidance processing and dispatch of the ``safe_velocity`` signals is untouched by this function and continues to happen for all maps and agents at the end of the physics frame.
+
+\ **Note:** With great power comes great responsibility. This function should only be used by users that really know what they are doing and have a good reason for it. Forcing an immediate update of a navigation map requires locking the NavigationServer and flushing the entire NavigationServer command queue. Not only can this severely impact the performance of a game but it can also introduce bugs if used inappropriately without much foresight.
+
+----
+
 .. _class_NavigationServer3D_method_map_get_agents:
 
 - :ref:`Array<class_Array>` **map_get_agents** **(** :ref:`RID<class_RID>` map **)** |const|
@@ -318,9 +356,9 @@ Returns the edge connection margin of the map. This distance is the minimum vert
 
 .. _class_NavigationServer3D_method_map_get_path:
 
-- :ref:`PackedVector3Array<class_PackedVector3Array>` **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>` layers=1 **)** |const|
+- :ref:`PackedVector3Array<class_PackedVector3Array>` **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. ``layers`` is a bitmask of all region layers that are allowed to be in the path.
+Returns the navigation path to reach the destination from the origin. ``navigation_layers`` is a bitmask of all region navigation layers that are allowed to be in the path.
 
 ----
 
@@ -432,11 +470,11 @@ Returns how many connections this ``region`` has with other regions in the map.
 
 ----
 
-.. _class_NavigationServer3D_method_region_get_layers:
+.. _class_NavigationServer3D_method_region_get_enter_cost:
 
-- :ref:`int<class_int>` **region_get_layers** **(** :ref:`RID<class_RID>` region **)** |const|
+- :ref:`float<class_float>` **region_get_enter_cost** **(** :ref:`RID<class_RID>` region **)** |const|
 
-Returns the region's layers.
+Returns the ``enter_cost`` of this ``region``.
 
 ----
 
@@ -448,11 +486,39 @@ Returns the navigation map :ref:`RID<class_RID>` the requested ``region`` is cur
 
 ----
 
-.. _class_NavigationServer3D_method_region_set_layers:
+.. _class_NavigationServer3D_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_NavigationServer3D_method_region_get_travel_cost:
 
-- void **region_set_layers** **(** :ref:`RID<class_RID>` region, :ref:`int<class_int>` layers **)** |const|
+- :ref:`float<class_float>` **region_get_travel_cost** **(** :ref:`RID<class_RID>` region **)** |const|
 
-Set the region's layers. This allows selecting regions from a path request (when using :ref:`map_get_path<class_NavigationServer3D_method_map_get_path>`).
+Returns the ``travel_cost`` of this ``region``.
+
+----
+
+.. _class_NavigationServer3D_method_region_owns_point:
+
+- :ref:`bool<class_bool>` **region_owns_point** **(** :ref:`RID<class_RID>` region, :ref:`Vector3<class_Vector3>` point **)** |const|
+
+Returns ``true`` if the provided ``point`` in world space is currently owned by the provided navigation ``region``. Owned in this context means that one of the region's navigation mesh polygon faces has a possible position at the closest distance to this point compared to all other navigation meshes from other navigation regions that are also registered on the navigation map of the provided region.
+
+If multiple navigation meshes have positions at equal distance the navigation region whose polygons are processed first wins the ownership. Polygons are processed in the same order that navigation regions were registered on the NavigationServer.
+
+\ **Note:** If navigation meshes from different navigation regions overlap (which should be avoided in general) the result might not be what is expected.
+
+----
+
+.. _class_NavigationServer3D_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``.
 
 ----
 
@@ -464,6 +530,14 @@ Sets the map for the region.
 
 ----
 
+.. _class_NavigationServer3D_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_NavigationServer3D_method_map_get_path>`).
+
+----
+
 .. _class_NavigationServer3D_method_region_set_navmesh:
 
 - void **region_set_navmesh** **(** :ref:`RID<class_RID>` region, :ref:`NavigationMesh<class_NavigationMesh>` nav_mesh **)** |const|
@@ -480,6 +554,14 @@ Sets the global transformation for the region.
 
 ----
 
+.. _class_NavigationServer3D_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_NavigationServer3D_method_set_active:
 
 - void **set_active** **(** :ref:`bool<class_bool>` active **)** |const|

+ 15 - 3
classes/class_node.rst

@@ -248,13 +248,17 @@ Signals
 
 Emitted when a child node enters the scene tree, either because it entered on its own or because this node entered with it.
 
+This signal is emitted *after* the child node's own :ref:`NOTIFICATION_ENTER_TREE<class_Node_constant_NOTIFICATION_ENTER_TREE>` and :ref:`tree_entered<class_Node_signal_tree_entered>`.
+
 ----
 
-.. _class_Node_signal_child_exited_tree:
+.. _class_Node_signal_child_exiting_tree:
+
+- **child_exiting_tree** **(** :ref:`Node<class_Node>` node **)**
 
-- **child_exited_tree** **(** :ref:`Node<class_Node>` node **)**
+Emitted when a child node is about to exit the scene tree, either because it is being removed or freed directly, or because this node is exiting the tree.
 
-Emitted when a child node exits the scene tree, either because it exited on its own or because this node exited.
+When this signal is received, the child ``node`` is still in the tree and valid. This signal is emitted *after* the child node's own :ref:`tree_exiting<class_Node_signal_tree_exiting>` and :ref:`NOTIFICATION_EXIT_TREE<class_Node_constant_NOTIFICATION_EXIT_TREE>`.
 
 ----
 
@@ -280,6 +284,8 @@ Emitted when the node is renamed.
 
 Emitted when the node enters the tree.
 
+This signal is emitted *after* the related :ref:`NOTIFICATION_ENTER_TREE<class_Node_constant_NOTIFICATION_ENTER_TREE>` notification.
+
 ----
 
 .. _class_Node_signal_tree_exited:
@@ -296,6 +302,8 @@ Emitted after the node exits the tree and is no longer active.
 
 Emitted when the node is still active but about to exit the tree. This is the right place for de-initialization (or a "destructor", if you will).
 
+This signal is emitted *before* the related :ref:`NOTIFICATION_EXIT_TREE<class_Node_constant_NOTIFICATION_EXIT_TREE>` notification.
+
 Enumerations
 ------------
 
@@ -452,8 +460,12 @@ Constants
 
 - **NOTIFICATION_ENTER_TREE** = **10** --- Notification received when the node enters a :ref:`SceneTree<class_SceneTree>`.
 
+This notification is emitted *before* the related :ref:`tree_entered<class_Node_signal_tree_entered>`.
+
 - **NOTIFICATION_EXIT_TREE** = **11** --- Notification received when the node is about to exit a :ref:`SceneTree<class_SceneTree>`.
 
+This notification is emitted *after* the related :ref:`tree_exiting<class_Node_signal_tree_exiting>`.
+
 - **NOTIFICATION_MOVED_IN_PARENT** = **12** --- Notification received when the node is moved in the parent.
 
 - **NOTIFICATION_READY** = **13** --- Notification received when the node is ready. See :ref:`_ready<class_Node_method__ready>`.

+ 18 - 0
classes/class_node2d.rst

@@ -37,6 +37,8 @@ Properties
 +---------------------------------------+-----------------------------------------------------------------+-------------------+
 | :ref:`Vector2<class_Vector2>`         | :ref:`global_scale<class_Node2D_property_global_scale>`         |                   |
 +---------------------------------------+-----------------------------------------------------------------+-------------------+
+| :ref:`float<class_float>`             | :ref:`global_skew<class_Node2D_property_global_skew>`           |                   |
++---------------------------------------+-----------------------------------------------------------------+-------------------+
 | :ref:`Transform2D<class_Transform2D>` | :ref:`global_transform<class_Node2D_property_global_transform>` |                   |
 +---------------------------------------+-----------------------------------------------------------------+-------------------+
 | :ref:`Vector2<class_Vector2>`         | :ref:`position<class_Node2D_property_position>`                 | ``Vector2(0, 0)`` |
@@ -128,6 +130,20 @@ Global scale.
 
 ----
 
+.. _class_Node2D_property_global_skew:
+
+- :ref:`float<class_float>` **global_skew**
+
++----------+------------------------+
+| *Setter* | set_global_skew(value) |
++----------+------------------------+
+| *Getter* | get_global_skew()      |
++----------+------------------------+
+
+Global skew in radians.
+
+----
+
 .. _class_Node2D_property_global_transform:
 
 - :ref:`Transform2D<class_Transform2D>` **global_transform**
@@ -188,6 +204,8 @@ Rotation in radians, 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_skew:

+ 2 - 0
classes/class_node3d.rst

@@ -345,6 +345,8 @@ Specify the axis rotation order of the :ref:`rotation<class_Node3D_property_rota
 
 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_Node3D_property_top_level:

Rozdielové dáta súboru neboli zobrazené, pretože súbor je príliš veľký
+ 0 - 0
classes/class_object.rst


+ 10 - 0
classes/class_ormmaterial3d.rst

@@ -11,7 +11,17 @@ ORMMaterial3D
 
 **Inherits:** :ref:`BaseMaterial3D<class_BaseMaterial3D>` **<** :ref:`Material<class_Material>` **<** :ref:`Resource<class_Resource>` **<** :ref:`RefCounted<class_RefCounted>` **<** :ref:`Object<class_Object>`
 
+Physically based rendering (PBR) material that can be applied to 3D objects, can use an ORM texture.
 
+Description
+-----------
+
+ORMMaterial3D's properties are inherited from :ref:`BaseMaterial3D<class_BaseMaterial3D>`. Unlike :ref:`StandardMaterial3D<class_StandardMaterial3D>`, ORMMaterial3D uses a single texture for ambient occlusion, roughness and metallic maps, known as an ORM texture.
+
+Tutorials
+---------
+
+- :doc:`Standard Material 3D and ORM Material 3D <../tutorials/3d/standard_material_3d>`
 
 .. |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.)`

+ 17 - 0
classes/class_os.rst

@@ -549,6 +549,10 @@ Here's a minimal example on how to parse command-line arguments into a dictionar
         if argument.find("=") > -1:
             var key_value = argument.split("=")
             arguments[key_value[0].lstrip("--")] = key_value[1]
+        else:
+            # Options without an argument will be present in the dictionary,
+            # with the value set to an empty string.
+            arguments[argument.lstrip("--")] = ""
 
  .. code-tab:: csharp
 
@@ -560,6 +564,12 @@ Here's a minimal example on how to parse command-line arguments into a dictionar
             string[] keyValue = argument.Split("=");
             arguments[keyValue[0].LStrip("--")] = keyValue[1];
         }
+        else
+        {
+            // Options without an argument will be present in the dictionary,
+            // with the value set to an empty string.
+            arguments[keyValue[0].LStrip("--")] = "";
+        }
     }
 
 
@@ -946,8 +956,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_open_midi_inputs:

+ 22 - 0
classes/class_popupmenu.rst

@@ -24,6 +24,8 @@ If no maximum size is set, or if it is set to 0, the ``PopupMenu`` height will b
 
 All ``set_*`` methods allow negative item index, which makes the item accessed from the last one.
 
+\ **Incremental search:** Like :ref:`ItemList<class_ItemList>` and :ref:`Tree<class_Tree>`, ``PopupMenu`` supports searching within the list while the control is focused. Press a key that matches the first letter of an item's name to select the first item starting with the given letter. After that point, there are two ways to perform incremental search: 1) Press the same key again before the timeout duration to select the next item starting with the same letter. 2) Press letter keys that match the rest of the word before the timeout duration to match to select the item in question directly. Both of these actions will be reset to the beginning of the list if the timeout duration has passed since the last keystroke was registered. You can adjust the timeout duration by changing :ref:`ProjectSettings.gui/timers/incremental_search_max_interval_msec<class_ProjectSettings_property_gui/timers/incremental_search_max_interval_msec>`.
+
 Properties
 ----------
 
@@ -83,6 +85,8 @@ Methods
 +--------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
 | :ref:`Key<enum_@GlobalScope_Key>`                | :ref:`get_item_accelerator<class_PopupMenu_method_get_item_accelerator>` **(** :ref:`int<class_int>` index **)** |const|                                                                                                                                              |
 +--------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`int<class_int>`                            | :ref:`get_item_horizontal_offset<class_PopupMenu_method_get_item_horizontal_offset>` **(** :ref:`int<class_int>` index **)** |const|                                                                                                                                  |
++--------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
 | :ref:`Texture2D<class_Texture2D>`                | :ref:`get_item_icon<class_PopupMenu_method_get_item_icon>` **(** :ref:`int<class_int>` index **)** |const|                                                                                                                                                            |
 +--------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
 | :ref:`int<class_int>`                            | :ref:`get_item_id<class_PopupMenu_method_get_item_id>` **(** :ref:`int<class_int>` index **)** |const|                                                                                                                                                                |
@@ -135,6 +139,8 @@ Methods
 +--------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
 | void                                             | :ref:`set_item_disabled<class_PopupMenu_method_set_item_disabled>` **(** :ref:`int<class_int>` index, :ref:`bool<class_bool>` disabled **)**                                                                                                                          |
 +--------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| void                                             | :ref:`set_item_horizontal_offset<class_PopupMenu_method_set_item_horizontal_offset>` **(** :ref:`int<class_int>` index, :ref:`int<class_int>` offset **)**                                                                                                            |
++--------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
 | void                                             | :ref:`set_item_icon<class_PopupMenu_method_set_item_icon>` **(** :ref:`int<class_int>` index, :ref:`Texture2D<class_Texture2D>` icon **)**                                                                                                                            |
 +--------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
 | void                                             | :ref:`set_item_id<class_PopupMenu_method_set_item_id>` **(** :ref:`int<class_int>` index, :ref:`int<class_int>` id **)**                                                                                                                                              |
@@ -546,6 +552,14 @@ Returns the accelerator of the item at the given ``index``. Accelerators are spe
 
 ----
 
+.. _class_PopupMenu_method_get_item_horizontal_offset:
+
+- :ref:`int<class_int>` **get_item_horizontal_offset** **(** :ref:`int<class_int>` index **)** |const|
+
+Returns the horizontal offset of the item at the given ``index``.
+
+----
+
 .. _class_PopupMenu_method_get_item_icon:
 
 - :ref:`Texture2D<class_Texture2D>` **get_item_icon** **(** :ref:`int<class_int>` index **)** |const|
@@ -764,6 +778,14 @@ Enables/disables the item at the given ``index``. When it is disabled, it can't
 
 ----
 
+.. _class_PopupMenu_method_set_item_horizontal_offset:
+
+- void **set_item_horizontal_offset** **(** :ref:`int<class_int>` index, :ref:`int<class_int>` offset **)**
+
+Sets the horizontal offset of the item at the given ``index``.
+
+----
+
 .. _class_PopupMenu_method_set_item_icon:
 
 - void **set_item_icon** **(** :ref:`int<class_int>` index, :ref:`Texture2D<class_Texture2D>` icon **)**

Rozdielové dáta súboru neboli zobrazené, pretože súbor je príliš veľký
+ 1165 - 1147
classes/class_projectsettings.rst


+ 55 - 103
classes/class_richtextlabel.rst

@@ -38,57 +38,57 @@ Tutorials
 Properties
 ----------
 
-+--------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------+---------------------------------------------------------------------------+
-| :ref:`AutowrapMode<enum_RichTextLabel_AutowrapMode>`                           | :ref:`autowrap_mode<class_RichTextLabel_property_autowrap_mode>`                                                 | ``3``                                                                     |
-+--------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------+---------------------------------------------------------------------------+
-| :ref:`bool<class_bool>`                                                        | :ref:`bbcode_enabled<class_RichTextLabel_property_bbcode_enabled>`                                               | ``false``                                                                 |
-+--------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------+---------------------------------------------------------------------------+
-| :ref:`bool<class_bool>`                                                        | clip_contents                                                                                                    | ``true`` (overrides :ref:`Control<class_Control_property_clip_contents>`) |
-+--------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------+---------------------------------------------------------------------------+
-| :ref:`bool<class_bool>`                                                        | :ref:`context_menu_enabled<class_RichTextLabel_property_context_menu_enabled>`                                   | ``false``                                                                 |
-+--------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------+---------------------------------------------------------------------------+
-| :ref:`Array<class_Array>`                                                      | :ref:`custom_effects<class_RichTextLabel_property_custom_effects>`                                               | ``[]``                                                                    |
-+--------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------+---------------------------------------------------------------------------+
-| :ref:`bool<class_bool>`                                                        | :ref:`deselect_on_focus_loss_enabled<class_RichTextLabel_property_deselect_on_focus_loss_enabled>`               | ``true``                                                                  |
-+--------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------+---------------------------------------------------------------------------+
-| :ref:`bool<class_bool>`                                                        | :ref:`fit_content_height<class_RichTextLabel_property_fit_content_height>`                                       | ``false``                                                                 |
-+--------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------+---------------------------------------------------------------------------+
-| :ref:`bool<class_bool>`                                                        | :ref:`hint_underlined<class_RichTextLabel_property_hint_underlined>`                                             | ``true``                                                                  |
-+--------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------+---------------------------------------------------------------------------+
-| :ref:`String<class_String>`                                                    | :ref:`language<class_RichTextLabel_property_language>`                                                           | ``""``                                                                    |
-+--------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------+---------------------------------------------------------------------------+
-| :ref:`bool<class_bool>`                                                        | :ref:`meta_underlined<class_RichTextLabel_property_meta_underlined>`                                             | ``true``                                                                  |
-+--------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------+---------------------------------------------------------------------------+
-| :ref:`bool<class_bool>`                                                        | :ref:`override_selected_font_color<class_RichTextLabel_property_override_selected_font_color>`                   | ``false``                                                                 |
-+--------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------+---------------------------------------------------------------------------+
-| :ref:`float<class_float>`                                                      | :ref:`percent_visible<class_RichTextLabel_property_percent_visible>`                                             | ``1.0``                                                                   |
-+--------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------+---------------------------------------------------------------------------+
-| :ref:`int<class_int>`                                                          | :ref:`progress_bar_delay<class_RichTextLabel_property_progress_bar_delay>`                                       | ``1000``                                                                  |
-+--------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------+---------------------------------------------------------------------------+
-| :ref:`bool<class_bool>`                                                        | :ref:`scroll_active<class_RichTextLabel_property_scroll_active>`                                                 | ``true``                                                                  |
-+--------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------+---------------------------------------------------------------------------+
-| :ref:`bool<class_bool>`                                                        | :ref:`scroll_following<class_RichTextLabel_property_scroll_following>`                                           | ``false``                                                                 |
-+--------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------+---------------------------------------------------------------------------+
-| :ref:`bool<class_bool>`                                                        | :ref:`selection_enabled<class_RichTextLabel_property_selection_enabled>`                                         | ``false``                                                                 |
-+--------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------+---------------------------------------------------------------------------+
-| :ref:`bool<class_bool>`                                                        | :ref:`shortcut_keys_enabled<class_RichTextLabel_property_shortcut_keys_enabled>`                                 | ``true``                                                                  |
-+--------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------+---------------------------------------------------------------------------+
-| :ref:`StructuredTextParser<enum_TextServer_StructuredTextParser>`              | :ref:`structured_text_bidi_override<class_RichTextLabel_property_structured_text_bidi_override>`                 | ``0``                                                                     |
-+--------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------+---------------------------------------------------------------------------+
-| :ref:`Array<class_Array>`                                                      | :ref:`structured_text_bidi_override_options<class_RichTextLabel_property_structured_text_bidi_override_options>` | ``[]``                                                                    |
-+--------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------+---------------------------------------------------------------------------+
-| :ref:`int<class_int>`                                                          | :ref:`tab_size<class_RichTextLabel_property_tab_size>`                                                           | ``4``                                                                     |
-+--------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------+---------------------------------------------------------------------------+
-| :ref:`String<class_String>`                                                    | :ref:`text<class_RichTextLabel_property_text>`                                                                   | ``""``                                                                    |
-+--------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------+---------------------------------------------------------------------------+
-| :ref:`TextDirection<enum_Control_TextDirection>`                               | :ref:`text_direction<class_RichTextLabel_property_text_direction>`                                               | ``0``                                                                     |
-+--------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------+---------------------------------------------------------------------------+
-| :ref:`bool<class_bool>`                                                        | :ref:`threaded<class_RichTextLabel_property_threaded>`                                                           | ``false``                                                                 |
-+--------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------+---------------------------------------------------------------------------+
-| :ref:`int<class_int>`                                                          | :ref:`visible_characters<class_RichTextLabel_property_visible_characters>`                                       | ``-1``                                                                    |
-+--------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------+---------------------------------------------------------------------------+
-| :ref:`VisibleCharactersBehavior<enum_RichTextLabel_VisibleCharactersBehavior>` | :ref:`visible_characters_behavior<class_RichTextLabel_property_visible_characters_behavior>`                     | ``0``                                                                     |
-+--------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------+---------------------------------------------------------------------------+
++-----------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------+---------------------------------------------------------------------------+
+| :ref:`AutowrapMode<enum_TextServer_AutowrapMode>`                           | :ref:`autowrap_mode<class_RichTextLabel_property_autowrap_mode>`                                                 | ``3``                                                                     |
++-----------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------+---------------------------------------------------------------------------+
+| :ref:`bool<class_bool>`                                                     | :ref:`bbcode_enabled<class_RichTextLabel_property_bbcode_enabled>`                                               | ``false``                                                                 |
++-----------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------+---------------------------------------------------------------------------+
+| :ref:`bool<class_bool>`                                                     | clip_contents                                                                                                    | ``true`` (overrides :ref:`Control<class_Control_property_clip_contents>`) |
++-----------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------+---------------------------------------------------------------------------+
+| :ref:`bool<class_bool>`                                                     | :ref:`context_menu_enabled<class_RichTextLabel_property_context_menu_enabled>`                                   | ``false``                                                                 |
++-----------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------+---------------------------------------------------------------------------+
+| :ref:`Array<class_Array>`                                                   | :ref:`custom_effects<class_RichTextLabel_property_custom_effects>`                                               | ``[]``                                                                    |
++-----------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------+---------------------------------------------------------------------------+
+| :ref:`bool<class_bool>`                                                     | :ref:`deselect_on_focus_loss_enabled<class_RichTextLabel_property_deselect_on_focus_loss_enabled>`               | ``true``                                                                  |
++-----------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------+---------------------------------------------------------------------------+
+| :ref:`bool<class_bool>`                                                     | :ref:`fit_content_height<class_RichTextLabel_property_fit_content_height>`                                       | ``false``                                                                 |
++-----------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------+---------------------------------------------------------------------------+
+| :ref:`bool<class_bool>`                                                     | :ref:`hint_underlined<class_RichTextLabel_property_hint_underlined>`                                             | ``true``                                                                  |
++-----------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------+---------------------------------------------------------------------------+
+| :ref:`String<class_String>`                                                 | :ref:`language<class_RichTextLabel_property_language>`                                                           | ``""``                                                                    |
++-----------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------+---------------------------------------------------------------------------+
+| :ref:`bool<class_bool>`                                                     | :ref:`meta_underlined<class_RichTextLabel_property_meta_underlined>`                                             | ``true``                                                                  |
++-----------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------+---------------------------------------------------------------------------+
+| :ref:`bool<class_bool>`                                                     | :ref:`override_selected_font_color<class_RichTextLabel_property_override_selected_font_color>`                   | ``false``                                                                 |
++-----------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------+---------------------------------------------------------------------------+
+| :ref:`float<class_float>`                                                   | :ref:`percent_visible<class_RichTextLabel_property_percent_visible>`                                             | ``1.0``                                                                   |
++-----------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------+---------------------------------------------------------------------------+
+| :ref:`int<class_int>`                                                       | :ref:`progress_bar_delay<class_RichTextLabel_property_progress_bar_delay>`                                       | ``1000``                                                                  |
++-----------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------+---------------------------------------------------------------------------+
+| :ref:`bool<class_bool>`                                                     | :ref:`scroll_active<class_RichTextLabel_property_scroll_active>`                                                 | ``true``                                                                  |
++-----------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------+---------------------------------------------------------------------------+
+| :ref:`bool<class_bool>`                                                     | :ref:`scroll_following<class_RichTextLabel_property_scroll_following>`                                           | ``false``                                                                 |
++-----------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------+---------------------------------------------------------------------------+
+| :ref:`bool<class_bool>`                                                     | :ref:`selection_enabled<class_RichTextLabel_property_selection_enabled>`                                         | ``false``                                                                 |
++-----------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------+---------------------------------------------------------------------------+
+| :ref:`bool<class_bool>`                                                     | :ref:`shortcut_keys_enabled<class_RichTextLabel_property_shortcut_keys_enabled>`                                 | ``true``                                                                  |
++-----------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------+---------------------------------------------------------------------------+
+| :ref:`StructuredTextParser<enum_TextServer_StructuredTextParser>`           | :ref:`structured_text_bidi_override<class_RichTextLabel_property_structured_text_bidi_override>`                 | ``0``                                                                     |
++-----------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------+---------------------------------------------------------------------------+
+| :ref:`Array<class_Array>`                                                   | :ref:`structured_text_bidi_override_options<class_RichTextLabel_property_structured_text_bidi_override_options>` | ``[]``                                                                    |
++-----------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------+---------------------------------------------------------------------------+
+| :ref:`int<class_int>`                                                       | :ref:`tab_size<class_RichTextLabel_property_tab_size>`                                                           | ``4``                                                                     |
++-----------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------+---------------------------------------------------------------------------+
+| :ref:`String<class_String>`                                                 | :ref:`text<class_RichTextLabel_property_text>`                                                                   | ``""``                                                                    |
++-----------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------+---------------------------------------------------------------------------+
+| :ref:`TextDirection<enum_Control_TextDirection>`                            | :ref:`text_direction<class_RichTextLabel_property_text_direction>`                                               | ``0``                                                                     |
++-----------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------+---------------------------------------------------------------------------+
+| :ref:`bool<class_bool>`                                                     | :ref:`threaded<class_RichTextLabel_property_threaded>`                                                           | ``false``                                                                 |
++-----------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------+---------------------------------------------------------------------------+
+| :ref:`int<class_int>`                                                       | :ref:`visible_characters<class_RichTextLabel_property_visible_characters>`                                       | ``-1``                                                                    |
++-----------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------+---------------------------------------------------------------------------+
+| :ref:`VisibleCharactersBehavior<enum_TextServer_VisibleCharactersBehavior>` | :ref:`visible_characters_behavior<class_RichTextLabel_property_visible_characters_behavior>`                     | ``0``                                                                     |
++-----------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------+---------------------------------------------------------------------------+
 
 Methods
 -------
@@ -312,28 +312,6 @@ Triggers when the mouse enters a meta tag.
 Enumerations
 ------------
 
-.. _enum_RichTextLabel_AutowrapMode:
-
-.. _class_RichTextLabel_constant_AUTOWRAP_OFF:
-
-.. _class_RichTextLabel_constant_AUTOWRAP_ARBITRARY:
-
-.. _class_RichTextLabel_constant_AUTOWRAP_WORD:
-
-.. _class_RichTextLabel_constant_AUTOWRAP_WORD_SMART:
-
-enum **AutowrapMode**:
-
-- **AUTOWRAP_OFF** = **0** --- Autowrap is disabled.
-
-- **AUTOWRAP_ARBITRARY** = **1** --- Wraps the text inside the node's bounding rectangle by allowing to break lines at arbitrary positions, which is useful when very limited space is available.
-
-- **AUTOWRAP_WORD** = **2** --- Wraps the text inside the node's bounding rectangle by soft-breaking between words.
-
-- **AUTOWRAP_WORD_SMART** = **3** --- Behaves similarly to :ref:`AUTOWRAP_WORD<class_RichTextLabel_constant_AUTOWRAP_WORD>`, but force-breaks a word if that single word does not fit in one line.
-
-----
-
 .. _enum_RichTextLabel_ListType:
 
 .. _class_RichTextLabel_constant_LIST_NUMBERS:
@@ -468,38 +446,12 @@ enum **ItemType**:
 
 - **ITEM_CUSTOMFX** = **26**
 
-----
-
-.. _enum_RichTextLabel_VisibleCharactersBehavior:
-
-.. _class_RichTextLabel_constant_VC_CHARS_BEFORE_SHAPING:
-
-.. _class_RichTextLabel_constant_VC_CHARS_AFTER_SHAPING:
-
-.. _class_RichTextLabel_constant_VC_GLYPHS_AUTO:
-
-.. _class_RichTextLabel_constant_VC_GLYPHS_LTR:
-
-.. _class_RichTextLabel_constant_VC_GLYPHS_RTL:
-
-enum **VisibleCharactersBehavior**:
-
-- **VC_CHARS_BEFORE_SHAPING** = **0** --- Trims text before the shaping. e.g, increasing :ref:`visible_characters<class_RichTextLabel_property_visible_characters>` value is visually identical to typing the text.
-
-- **VC_CHARS_AFTER_SHAPING** = **1** --- Displays glyphs that are mapped to the first :ref:`visible_characters<class_RichTextLabel_property_visible_characters>` characters from the beginning of the text.
-
-- **VC_GLYPHS_AUTO** = **2** --- Displays :ref:`percent_visible<class_RichTextLabel_property_percent_visible>` glyphs, starting from the left or from the right, depending on :ref:`Control.layout_direction<class_Control_property_layout_direction>` value.
-
-- **VC_GLYPHS_LTR** = **3** --- Displays :ref:`percent_visible<class_RichTextLabel_property_percent_visible>` glyphs, starting from the left.
-
-- **VC_GLYPHS_RTL** = **4** --- Displays :ref:`percent_visible<class_RichTextLabel_property_percent_visible>` glyphs, starting from the right.
-
 Property Descriptions
 ---------------------
 
 .. _class_RichTextLabel_property_autowrap_mode:
 
-- :ref:`AutowrapMode<enum_RichTextLabel_AutowrapMode>` **autowrap_mode**
+- :ref:`AutowrapMode<enum_TextServer_AutowrapMode>` **autowrap_mode**
 
 +-----------+--------------------------+
 | *Default* | ``3``                    |
@@ -509,7 +461,7 @@ Property Descriptions
 | *Getter*  | get_autowrap_mode()      |
 +-----------+--------------------------+
 
-If set to something other than :ref:`AUTOWRAP_OFF<class_RichTextLabel_constant_AUTOWRAP_OFF>`, the text gets wrapped inside the node's bounding rectangle. To see how each mode behaves, see :ref:`AutowrapMode<enum_RichTextLabel_AutowrapMode>`.
+If set to something other than :ref:`TextServer.AUTOWRAP_OFF<class_TextServer_constant_AUTOWRAP_OFF>`, the text gets wrapped inside the node's bounding rectangle. To see how each mode behaves, see :ref:`AutowrapMode<enum_TextServer_AutowrapMode>`.
 
 ----
 
@@ -879,7 +831,7 @@ The restricted number of characters to display in the label. If ``-1``, all char
 
 .. _class_RichTextLabel_property_visible_characters_behavior:
 
-- :ref:`VisibleCharactersBehavior<enum_RichTextLabel_VisibleCharactersBehavior>` **visible_characters_behavior**
+- :ref:`VisibleCharactersBehavior<enum_TextServer_VisibleCharactersBehavior>` **visible_characters_behavior**
 
 +-----------+----------------------------------------+
 | *Default* | ``0``                                  |
@@ -889,7 +841,7 @@ The restricted number of characters to display in the label. If ``-1``, all char
 | *Getter*  | get_visible_characters_behavior()      |
 +-----------+----------------------------------------+
 
-Sets the clipping behavior when :ref:`visible_characters<class_RichTextLabel_property_visible_characters>` or :ref:`percent_visible<class_RichTextLabel_property_percent_visible>` is set. See :ref:`VisibleCharactersBehavior<enum_RichTextLabel_VisibleCharactersBehavior>` for more info.
+Sets the clipping behavior when :ref:`visible_characters<class_RichTextLabel_property_visible_characters>` or :ref:`percent_visible<class_RichTextLabel_property_percent_visible>` is set. See :ref:`VisibleCharactersBehavior<enum_TextServer_VisibleCharactersBehavior>` for more info.
 
 Method Descriptions
 -------------------

+ 1 - 1
classes/class_scenetreetimer.rst

@@ -41,7 +41,7 @@ As opposed to :ref:`Timer<class_Timer>`, it does not require the instantiation o
 
 
 
-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:`RefCounted<class_RefCounted>`.
 
 Properties
 ----------

+ 1 - 1
classes/class_scrollcontainer.rst

@@ -20,7 +20,7 @@ Description
 
 A ScrollContainer node meant to contain a :ref:`Control<class_Control>` child.
 
-ScrollContainers will automatically create a scrollbar child (:ref:`HScrollBar<class_HScrollBar>`, :ref:`VScrollBar<class_VScrollBar>`, or both) when needed and will only draw the Control within the ScrollContainer area. Scrollbars will automatically be drawn at the right (for vertical) or bottom (for horizontal) and will enable dragging to move the viewable Control (and its children) within the ScrollContainer. Scrollbars will also automatically resize the grabber based on the :ref:`Control.minimum_size<class_Control_property_minimum_size>` of the Control relative to the ScrollContainer.
+ScrollContainers will automatically create a scrollbar child (:ref:`HScrollBar<class_HScrollBar>`, :ref:`VScrollBar<class_VScrollBar>`, or both) when needed and will only draw the Control within the ScrollContainer area. Scrollbars will automatically be drawn at the right (for vertical) or bottom (for horizontal) and will enable dragging to move the viewable Control (and its children) within the ScrollContainer. Scrollbars will also automatically resize the grabber based on the :ref:`Control.custom_minimum_size<class_Control_property_custom_minimum_size>` of the Control relative to the ScrollContainer.
 
 Works great with a :ref:`Panel<class_Panel>` control. You can set ``EXPAND`` on the children's size flags, so they will upscale to the ScrollContainer's size if it's larger (scroll is invisible for the chosen dimension).
 

+ 6 - 1
classes/class_standardmaterial3d.rst

@@ -11,12 +11,17 @@ StandardMaterial3D
 
 **Inherits:** :ref:`BaseMaterial3D<class_BaseMaterial3D>` **<** :ref:`Material<class_Material>` **<** :ref:`Resource<class_Resource>` **<** :ref:`RefCounted<class_RefCounted>` **<** :ref:`Object<class_Object>`
 
+Physically based rendering (PBR) material that can be applied to 3D objects.
 
+Description
+-----------
+
+StandardMaterial3D's properties are inherited from :ref:`BaseMaterial3D<class_BaseMaterial3D>`.
 
 Tutorials
 ---------
 
-- :doc:`Standard Material 3D <../tutorials/3d/standard_material_3d>`
+- :doc:`Standard Material 3D and ORM Material 3D <../tutorials/3d/standard_material_3d>`
 
 .. |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.)`

+ 6 - 6
classes/class_string.rst

@@ -122,7 +122,7 @@ Methods
 +-----------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
 | :ref:`String<class_String>`                         | :ref:`json_escape<class_String_method_json_escape>` **(** **)** |const|                                                                                                          |
 +-----------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`String<class_String>`                         | :ref:`left<class_String_method_left>` **(** :ref:`int<class_int>` position **)** |const|                                                                                         |
+| :ref:`String<class_String>`                         | :ref:`left<class_String_method_left>` **(** :ref:`int<class_int>` length **)** |const|                                                                                           |
 +-----------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
 | :ref:`int<class_int>`                               | :ref:`length<class_String_method_length>` **(** **)** |const|                                                                                                                    |
 +-----------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
@@ -166,7 +166,7 @@ Methods
 +-----------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
 | :ref:`int<class_int>`                               | :ref:`rfindn<class_String_method_rfindn>` **(** :ref:`String<class_String>` what, :ref:`int<class_int>` from=-1 **)** |const|                                                    |
 +-----------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`String<class_String>`                         | :ref:`right<class_String_method_right>` **(** :ref:`int<class_int>` position **)** |const|                                                                                       |
+| :ref:`String<class_String>`                         | :ref:`right<class_String_method_right>` **(** :ref:`int<class_int>` length **)** |const|                                                                                         |
 +-----------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
 | :ref:`String<class_String>`                         | :ref:`rpad<class_String_method_rpad>` **(** :ref:`int<class_int>` min_length, :ref:`String<class_String>` character=" " **)** |const|                                            |
 +-----------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
@@ -756,9 +756,9 @@ Returns a copy of the string with special characters escaped using the JSON stan
 
 .. _class_String_method_left:
 
-- :ref:`String<class_String>` **left** **(** :ref:`int<class_int>` position **)** |const|
+- :ref:`String<class_String>` **left** **(** :ref:`int<class_int>` length **)** |const|
 
-Returns a number of characters from the left of the string. If negative ``position`` is used, the characters are counted downwards from ``String``'s length.
+Returns a number of characters from the left of the string. If negative ``length`` is used, the characters are counted downwards from ``String``'s length.
 
 Examples:
 
@@ -971,9 +971,9 @@ Returns the index of the **last** case-insensitive occurrence of the specified s
 
 .. _class_String_method_right:
 
-- :ref:`String<class_String>` **right** **(** :ref:`int<class_int>` position **)** |const|
+- :ref:`String<class_String>` **right** **(** :ref:`int<class_int>` length **)** |const|
 
-Returns a number of characters from the right of the string. If negative ``position`` is used, the characters are counted downwards from ``String``'s length.
+Returns a number of characters from the right of the string. If negative ``length`` is used, the characters are counted downwards from ``String``'s length.
 
 Examples:
 

+ 57 - 25
classes/class_surfacetool.rst

@@ -86,11 +86,11 @@ Methods
 +----------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
 | void                                                     | :ref:`generate_tangents<class_SurfaceTool_method_generate_tangents>` **(** **)**                                                                                                                                                                                                                                                                                                                                                                                                                             |
 +----------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`CustomFormat<enum_SurfaceTool_CustomFormat>`       | :ref:`get_custom_format<class_SurfaceTool_method_get_custom_format>` **(** :ref:`int<class_int>` index **)** |const|                                                                                                                                                                                                                                                                                                                                                                                         |
+| :ref:`AABB<class_AABB>`                                  | :ref:`get_aabb<class_SurfaceTool_method_get_aabb>` **(** **)** |const|                                                                                                                                                                                                                                                                                                                                                                                                                                       |
 +----------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`float<class_float>`                                | :ref:`get_max_axis_length<class_SurfaceTool_method_get_max_axis_length>` **(** **)** |const|                                                                                                                                                                                                                                                                                                                                                                                                                 |
+| :ref:`CustomFormat<enum_SurfaceTool_CustomFormat>`       | :ref:`get_custom_format<class_SurfaceTool_method_get_custom_format>` **(** :ref:`int<class_int>` channel_index **)** |const|                                                                                                                                                                                                                                                                                                                                                                                 |
 +----------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`PrimitiveType<enum_Mesh_PrimitiveType>`            | :ref:`get_primitive<class_SurfaceTool_method_get_primitive>` **(** **)** |const|                                                                                                                                                                                                                                                                                                                                                                                                                             |
+| :ref:`PrimitiveType<enum_Mesh_PrimitiveType>`            | :ref:`get_primitive_type<class_SurfaceTool_method_get_primitive_type>` **(** **)** |const|                                                                                                                                                                                                                                                                                                                                                                                                                   |
 +----------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
 | :ref:`SkinWeightCount<enum_SurfaceTool_SkinWeightCount>` | :ref:`get_skin_weight_count<class_SurfaceTool_method_get_skin_weight_count>` **(** **)** |const|                                                                                                                                                                                                                                                                                                                                                                                                             |
 +----------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
@@ -102,9 +102,9 @@ Methods
 +----------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
 | void                                                     | :ref:`set_color<class_SurfaceTool_method_set_color>` **(** :ref:`Color<class_Color>` color **)**                                                                                                                                                                                                                                                                                                                                                                                                             |
 +----------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| void                                                     | :ref:`set_custom<class_SurfaceTool_method_set_custom>` **(** :ref:`int<class_int>` index, :ref:`Color<class_Color>` custom **)**                                                                                                                                                                                                                                                                                                                                                                             |
+| void                                                     | :ref:`set_custom<class_SurfaceTool_method_set_custom>` **(** :ref:`int<class_int>` channel_index, :ref:`Color<class_Color>` custom_color **)**                                                                                                                                                                                                                                                                                                                                                               |
 +----------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| void                                                     | :ref:`set_custom_format<class_SurfaceTool_method_set_custom_format>` **(** :ref:`int<class_int>` index, :ref:`CustomFormat<enum_SurfaceTool_CustomFormat>` format **)**                                                                                                                                                                                                                                                                                                                                      |
+| void                                                     | :ref:`set_custom_format<class_SurfaceTool_method_set_custom_format>` **(** :ref:`int<class_int>` channel_index, :ref:`CustomFormat<enum_SurfaceTool_CustomFormat>` format **)**                                                                                                                                                                                                                                                                                                                              |
 +----------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
 | void                                                     | :ref:`set_material<class_SurfaceTool_method_set_material>` **(** :ref:`Material<class_Material>` material **)**                                                                                                                                                                                                                                                                                                                                                                                              |
 +----------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
@@ -148,23 +148,23 @@ Enumerations
 
 enum **CustomFormat**:
 
-- **CUSTOM_RGBA8_UNORM** = **0**
+- **CUSTOM_RGBA8_UNORM** = **0** --- Limits range of data passed to `set_custom` to unsigned normalized 0 to 1 stored in 8 bits per channel. See :ref:`Mesh.ARRAY_CUSTOM_RGBA8_UNORM<class_Mesh_constant_ARRAY_CUSTOM_RGBA8_UNORM>`.
 
-- **CUSTOM_RGBA8_SNORM** = **1**
+- **CUSTOM_RGBA8_SNORM** = **1** --- Limits range of data passed to `set_custom` to signed normalized -1 to 1 stored in 8 bits per channel. See :ref:`Mesh.ARRAY_CUSTOM_RGBA8_SNORM<class_Mesh_constant_ARRAY_CUSTOM_RGBA8_SNORM>`.
 
-- **CUSTOM_RG_HALF** = **2**
+- **CUSTOM_RG_HALF** = **2** --- Stores data passed to `set_custom` as half precision floats, and uses only red and green color channels. See :ref:`Mesh.ARRAY_CUSTOM_RG_HALF<class_Mesh_constant_ARRAY_CUSTOM_RG_HALF>`.
 
-- **CUSTOM_RGBA_HALF** = **3**
+- **CUSTOM_RGBA_HALF** = **3** --- Stores data passed to `set_custom` as half precision floats and uses all color channels. See :ref:`Mesh.ARRAY_CUSTOM_RGBA_HALF<class_Mesh_constant_ARRAY_CUSTOM_RGBA_HALF>`.
 
-- **CUSTOM_R_FLOAT** = **4**
+- **CUSTOM_R_FLOAT** = **4** --- Stores data passed to `set_custom` as full precision floats, and uses only red color channel. See :ref:`Mesh.ARRAY_CUSTOM_R_FLOAT<class_Mesh_constant_ARRAY_CUSTOM_R_FLOAT>`.
 
-- **CUSTOM_RG_FLOAT** = **5**
+- **CUSTOM_RG_FLOAT** = **5** --- Stores data passed to `set_custom` as full precision floats, and uses only red and green color channels. See :ref:`Mesh.ARRAY_CUSTOM_RG_FLOAT<class_Mesh_constant_ARRAY_CUSTOM_RG_FLOAT>`.
 
-- **CUSTOM_RGB_FLOAT** = **6**
+- **CUSTOM_RGB_FLOAT** = **6** --- Stores data passed to `set_custom` as full precision floats, and uses only red, green and blue color channels. See :ref:`Mesh.ARRAY_CUSTOM_RGB_FLOAT<class_Mesh_constant_ARRAY_CUSTOM_RGB_FLOAT>`.
 
-- **CUSTOM_RGBA_FLOAT** = **7**
+- **CUSTOM_RGBA_FLOAT** = **7** --- Stores data passed to `set_custom` as full precision floats, and uses all color channels. See :ref:`Mesh.ARRAY_CUSTOM_RGBA_FLOAT<class_Mesh_constant_ARRAY_CUSTOM_RGBA_FLOAT>`.
 
-- **CUSTOM_MAX** = **8**
+- **CUSTOM_MAX** = **8** --- Used to indicate a disabled custom channel.
 
 ----
 
@@ -176,9 +176,9 @@ enum **CustomFormat**:
 
 enum **SkinWeightCount**:
 
-- **SKIN_4_WEIGHTS** = **0**
+- **SKIN_4_WEIGHTS** = **0** --- Each individual vertex can be influenced by only 4 bone weights.
 
-- **SKIN_8_WEIGHTS** = **1**
+- **SKIN_8_WEIGHTS** = **1** --- Each individual vertex can be influenced by up to 8 bone weights.
 
 Method Descriptions
 -------------------
@@ -187,7 +187,7 @@ Method Descriptions
 
 - void **add_index** **(** :ref:`int<class_int>` index **)**
 
-Adds an index to index array if you are using indexed vertices. Does not need to be called before adding vertices.
+Adds a vertex to index array if you are using indexed vertices. Does not need to be called before adding vertices.
 
 ----
 
@@ -279,6 +279,10 @@ Removes the index array by expanding the vertex array.
 
 - :ref:`PackedInt32Array<class_PackedInt32Array>` **generate_lod** **(** :ref:`float<class_float>` nd_threshold, :ref:`int<class_int>` target_index_count=3 **)**
 
+Generates a LOD for a given ``nd_threshold`` in linear units (square root of quadric error metric), using at most ``target_index_count`` indices.
+
+Deprecated. Unused internally and neglects to preserve normals or UVs. Consider using :ref:`ImporterMesh.generate_lods<class_ImporterMesh_method_generate_lods>` instead.
+
 ----
 
 .. _class_SurfaceTool_method_generate_normals:
@@ -299,21 +303,27 @@ Generates a tangent vector for each vertex. Requires that each vertex have UVs a
 
 ----
 
-.. _class_SurfaceTool_method_get_custom_format:
+.. _class_SurfaceTool_method_get_aabb:
 
-- :ref:`CustomFormat<enum_SurfaceTool_CustomFormat>` **get_custom_format** **(** :ref:`int<class_int>` index **)** |const|
+- :ref:`AABB<class_AABB>` **get_aabb** **(** **)** |const|
+
+Returns the axis-aligned bounding box of the vertex positions.
 
 ----
 
-.. _class_SurfaceTool_method_get_max_axis_length:
+.. _class_SurfaceTool_method_get_custom_format:
 
-- :ref:`float<class_float>` **get_max_axis_length** **(** **)** |const|
+- :ref:`CustomFormat<enum_SurfaceTool_CustomFormat>` **get_custom_format** **(** :ref:`int<class_int>` channel_index **)** |const|
+
+Returns the format for custom ``channel_index`` (currently up to 4). Returns :ref:`CUSTOM_MAX<class_SurfaceTool_constant_CUSTOM_MAX>` if this custom channel is unused.
 
 ----
 
-.. _class_SurfaceTool_method_get_primitive:
+.. _class_SurfaceTool_method_get_primitive_type:
+
+- :ref:`PrimitiveType<enum_Mesh_PrimitiveType>` **get_primitive_type** **(** **)** |const|
 
-- :ref:`PrimitiveType<enum_Mesh_PrimitiveType>` **get_primitive** **(** **)** |const|
+Returns the type of mesh geometry, such as :ref:`Mesh.PRIMITIVE_TRIANGLES<class_Mesh_constant_PRIMITIVE_TRIANGLES>`.
 
 ----
 
@@ -321,6 +331,12 @@ Generates a tangent vector for each vertex. Requires that each vertex have UVs a
 
 - :ref:`SkinWeightCount<enum_SurfaceTool_SkinWeightCount>` **get_skin_weight_count** **(** **)** |const|
 
+By default, returns :ref:`SKIN_4_WEIGHTS<class_SurfaceTool_constant_SKIN_4_WEIGHTS>` to indicate only 4 bone influences per vertex are used.
+
+Returns :ref:`SKIN_8_WEIGHTS<class_SurfaceTool_constant_SKIN_8_WEIGHTS>` if up to 8 influences are used.
+
+\ **Note:** This function returns an enum, not the exact number of weights.
+
 ----
 
 .. _class_SurfaceTool_method_index:
@@ -335,6 +351,8 @@ Shrinks the vertex array by creating an index array. This can improve performanc
 
 - void **optimize_indices_for_cache** **(** **)**
 
+Optimizes triangle sorting for performance. Requires that :ref:`get_primitive_type<class_SurfaceTool_method_get_primitive_type>` is :ref:`Mesh.PRIMITIVE_TRIANGLES<class_Mesh_constant_PRIMITIVE_TRIANGLES>`.
+
 ----
 
 .. _class_SurfaceTool_method_set_bones:
@@ -357,13 +375,21 @@ Specifies a :ref:`Color<class_Color>` to use for the *next* vertex. If every ver
 
 .. _class_SurfaceTool_method_set_custom:
 
-- void **set_custom** **(** :ref:`int<class_int>` index, :ref:`Color<class_Color>` custom **)**
+- void **set_custom** **(** :ref:`int<class_int>` channel_index, :ref:`Color<class_Color>` custom_color **)**
+
+Sets the custom value on this vertex for ``channel_index``.
+
+\ :ref:`set_custom_format<class_SurfaceTool_method_set_custom_format>` must be called first for this ``channel_index``. Formats which are not RGBA will ignore other color channels.
 
 ----
 
 .. _class_SurfaceTool_method_set_custom_format:
 
-- void **set_custom_format** **(** :ref:`int<class_int>` index, :ref:`CustomFormat<enum_SurfaceTool_CustomFormat>` format **)**
+- void **set_custom_format** **(** :ref:`int<class_int>` channel_index, :ref:`CustomFormat<enum_SurfaceTool_CustomFormat>` format **)**
+
+Sets the color format for this custom ``channel_index``. Use :ref:`CUSTOM_MAX<class_SurfaceTool_constant_CUSTOM_MAX>` to disable.
+
+Must be invoked after :ref:`begin<class_SurfaceTool_method_begin>` and should be set before :ref:`commit<class_SurfaceTool_method_commit>` or :ref:`commit_to_arrays<class_SurfaceTool_method_commit_to_arrays>`.
 
 ----
 
@@ -387,6 +413,12 @@ Specifies a normal to use for the *next* vertex. If every vertex needs to have t
 
 - void **set_skin_weight_count** **(** :ref:`SkinWeightCount<enum_SurfaceTool_SkinWeightCount>` count **)**
 
+Set to :ref:`SKIN_8_WEIGHTS<class_SurfaceTool_constant_SKIN_8_WEIGHTS>` to indicate that up to 8 bone influences per vertex may be used.
+
+By default, only 4 bone influences are used (:ref:`SKIN_4_WEIGHTS<class_SurfaceTool_constant_SKIN_4_WEIGHTS>`)
+
+\ **Note:** This function takes an enum, not the exact number of weights.
+
 ----
 
 .. _class_SurfaceTool_method_set_smooth_group:

+ 3 - 30
classes/class_textline.rst

@@ -34,7 +34,7 @@ Properties
 +-------------------------------------------------------------------+-----------------------------------------------------------------------------+-----------+
 | :ref:`bool<class_bool>`                                           | :ref:`preserve_invalid<class_TextLine_property_preserve_invalid>`           | ``true``  |
 +-------------------------------------------------------------------+-----------------------------------------------------------------------------+-----------+
-| :ref:`OverrunBehavior<enum_TextLine_OverrunBehavior>`             | :ref:`text_overrun_behavior<class_TextLine_property_text_overrun_behavior>` | ``3``     |
+| :ref:`OverrunBehavior<enum_TextServer_OverrunBehavior>`           | :ref:`text_overrun_behavior<class_TextLine_property_text_overrun_behavior>` | ``3``     |
 +-------------------------------------------------------------------+-----------------------------------------------------------------------------+-----------+
 | :ref:`float<class_float>`                                         | :ref:`width<class_TextLine_property_width>`                                 | ``-1.0``  |
 +-------------------------------------------------------------------+-----------------------------------------------------------------------------+-----------+
@@ -80,33 +80,6 @@ Methods
 | void                          | :ref:`tab_align<class_TextLine_method_tab_align>` **(** :ref:`PackedFloat32Array<class_PackedFloat32Array>` tab_stops **)**                                                                                                                                                                             |
 +-------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
 
-Enumerations
-------------
-
-.. _enum_TextLine_OverrunBehavior:
-
-.. _class_TextLine_constant_OVERRUN_NO_TRIMMING:
-
-.. _class_TextLine_constant_OVERRUN_TRIM_CHAR:
-
-.. _class_TextLine_constant_OVERRUN_TRIM_WORD:
-
-.. _class_TextLine_constant_OVERRUN_TRIM_ELLIPSIS:
-
-.. _class_TextLine_constant_OVERRUN_TRIM_WORD_ELLIPSIS:
-
-enum **OverrunBehavior**:
-
-- **OVERRUN_NO_TRIMMING** = **0** --- No text trimming is performed.
-
-- **OVERRUN_TRIM_CHAR** = **1** --- Trims the text per character.
-
-- **OVERRUN_TRIM_WORD** = **2** --- Trims the text per word.
-
-- **OVERRUN_TRIM_ELLIPSIS** = **3** --- Trims the text per character and adds an ellipsis to indicate that parts are hidden.
-
-- **OVERRUN_TRIM_WORD_ELLIPSIS** = **4** --- Trims the text per word and adds an ellipsis to indicate that parts are hidden.
-
 Property Descriptions
 ---------------------
 
@@ -206,7 +179,7 @@ If set to ``true`` text will display invalid characters.
 
 .. _class_TextLine_property_text_overrun_behavior:
 
-- :ref:`OverrunBehavior<enum_TextLine_OverrunBehavior>` **text_overrun_behavior**
+- :ref:`OverrunBehavior<enum_TextServer_OverrunBehavior>` **text_overrun_behavior**
 
 +-----------+----------------------------------+
 | *Default* | ``3``                            |
@@ -216,7 +189,7 @@ If set to ``true`` text will display invalid characters.
 | *Getter*  | get_text_overrun_behavior()      |
 +-----------+----------------------------------+
 
-Sets the clipping behavior when the text exceeds the text line's set width. See :ref:`OverrunBehavior<enum_TextLine_OverrunBehavior>` for a description of all modes.
+Sets the clipping behavior when the text exceeds the text line's set width. See :ref:`OverrunBehavior<enum_TextServer_OverrunBehavior>` for a description of all modes.
 
 ----
 

+ 3 - 30
classes/class_textparagraph.rst

@@ -38,7 +38,7 @@ Properties
 +-------------------------------------------------------------------+----------------------------------------------------------------------------------+-----------+
 | :ref:`bool<class_bool>`                                           | :ref:`preserve_invalid<class_TextParagraph_property_preserve_invalid>`           | ``true``  |
 +-------------------------------------------------------------------+----------------------------------------------------------------------------------+-----------+
-| :ref:`OverrunBehavior<enum_TextParagraph_OverrunBehavior>`        | :ref:`text_overrun_behavior<class_TextParagraph_property_text_overrun_behavior>` | ``0``     |
+| :ref:`OverrunBehavior<enum_TextServer_OverrunBehavior>`           | :ref:`text_overrun_behavior<class_TextParagraph_property_text_overrun_behavior>` | ``0``     |
 +-------------------------------------------------------------------+----------------------------------------------------------------------------------+-----------+
 | :ref:`float<class_float>`                                         | :ref:`width<class_TextParagraph_property_width>`                                 | ``-1.0``  |
 +-------------------------------------------------------------------+----------------------------------------------------------------------------------+-----------+
@@ -116,33 +116,6 @@ Methods
 | void                            | :ref:`tab_align<class_TextParagraph_method_tab_align>` **(** :ref:`PackedFloat32Array<class_PackedFloat32Array>` tab_stops **)**                                                                                                                                                                                                   |
 +---------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
 
-Enumerations
-------------
-
-.. _enum_TextParagraph_OverrunBehavior:
-
-.. _class_TextParagraph_constant_OVERRUN_NO_TRIMMING:
-
-.. _class_TextParagraph_constant_OVERRUN_TRIM_CHAR:
-
-.. _class_TextParagraph_constant_OVERRUN_TRIM_WORD:
-
-.. _class_TextParagraph_constant_OVERRUN_TRIM_ELLIPSIS:
-
-.. _class_TextParagraph_constant_OVERRUN_TRIM_WORD_ELLIPSIS:
-
-enum **OverrunBehavior**:
-
-- **OVERRUN_NO_TRIMMING** = **0** --- No text trimming is performed.
-
-- **OVERRUN_TRIM_CHAR** = **1** --- Trims the text per character.
-
-- **OVERRUN_TRIM_WORD** = **2** --- Trims the text per word.
-
-- **OVERRUN_TRIM_ELLIPSIS** = **3** --- Trims the text per character and adds an ellipsis to indicate that parts are hidden.
-
-- **OVERRUN_TRIM_WORD_ELLIPSIS** = **4** --- Trims the text per word and adds an ellipsis to indicate that parts are hidden.
-
 Property Descriptions
 ---------------------
 
@@ -276,7 +249,7 @@ If set to ``true`` text will display invalid characters.
 
 .. _class_TextParagraph_property_text_overrun_behavior:
 
-- :ref:`OverrunBehavior<enum_TextParagraph_OverrunBehavior>` **text_overrun_behavior**
+- :ref:`OverrunBehavior<enum_TextServer_OverrunBehavior>` **text_overrun_behavior**
 
 +-----------+----------------------------------+
 | *Default* | ``0``                            |
@@ -286,7 +259,7 @@ If set to ``true`` text will display invalid characters.
 | *Getter*  | get_text_overrun_behavior()      |
 +-----------+----------------------------------+
 
-Sets the clipping behavior when the text exceeds the paragraph's set width. See :ref:`OverrunBehavior<enum_TextParagraph_OverrunBehavior>` for a description of all modes.
+Sets the clipping behavior when the text exceeds the paragraph's set width. See :ref:`OverrunBehavior<enum_TextServer_OverrunBehavior>` for a description of all modes.
 
 ----
 

+ 106 - 2
classes/class_textserver.rst

@@ -48,6 +48,10 @@ Methods
 +-----------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
 | :ref:`float<class_float>`                                       | :ref:`font_get_embolden<class_TextServer_method_font_get_embolden>` **(** :ref:`RID<class_RID>` font_rid **)** |const|                                                                                                                                                                                                                                                 |
 +-----------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`int<class_int>`                                           | :ref:`font_get_face_count<class_TextServer_method_font_get_face_count>` **(** :ref:`RID<class_RID>` font_rid **)** |const|                                                                                                                                                                                                                                             |
++-----------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`int<class_int>`                                           | :ref:`font_get_face_index<class_TextServer_method_font_get_face_index>` **(** :ref:`RID<class_RID>` font_rid **)** |const|                                                                                                                                                                                                                                             |
++-----------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
 | :ref:`int<class_int>`                                           | :ref:`font_get_fixed_size<class_TextServer_method_font_get_fixed_size>` **(** :ref:`RID<class_RID>` font_rid **)** |const|                                                                                                                                                                                                                                             |
 +-----------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
 | :ref:`bool<class_bool>`                                         | :ref:`font_get_generate_mipmaps<class_TextServer_method_font_get_generate_mipmaps>` **(** :ref:`RID<class_RID>` font_rid **)** |const|                                                                                                                                                                                                                                 |
@@ -164,6 +168,8 @@ Methods
 +-----------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
 | void                                                            | :ref:`font_set_embolden<class_TextServer_method_font_set_embolden>` **(** :ref:`RID<class_RID>` font_rid, :ref:`float<class_float>` strength **)**                                                                                                                                                                                                                     |
 +-----------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| void                                                            | :ref:`font_set_face_index<class_TextServer_method_font_set_face_index>` **(** :ref:`RID<class_RID>` font_rid, :ref:`int<class_int>` face_index **)**                                                                                                                                                                                                                   |
++-----------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
 | void                                                            | :ref:`font_set_fixed_size<class_TextServer_method_font_set_fixed_size>` **(** :ref:`RID<class_RID>` font_rid, :ref:`int<class_int>` fixed_size **)**                                                                                                                                                                                                                   |
 +-----------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
 | void                                                            | :ref:`font_set_force_autohinter<class_TextServer_method_font_set_force_autohinter>` **(** :ref:`RID<class_RID>` font_rid, :ref:`bool<class_bool>` force_autohinter **)**                                                                                                                                                                                               |
@@ -448,6 +454,28 @@ enum **JustificationFlag**:
 
 ----
 
+.. _enum_TextServer_AutowrapMode:
+
+.. _class_TextServer_constant_AUTOWRAP_OFF:
+
+.. _class_TextServer_constant_AUTOWRAP_ARBITRARY:
+
+.. _class_TextServer_constant_AUTOWRAP_WORD:
+
+.. _class_TextServer_constant_AUTOWRAP_WORD_SMART:
+
+enum **AutowrapMode**:
+
+- **AUTOWRAP_OFF** = **0** --- Autowrap is disabled.
+
+- **AUTOWRAP_ARBITRARY** = **1** --- Wraps the text inside the node's bounding rectangle by allowing to break lines at arbitrary positions, which is useful when very limited space is available.
+
+- **AUTOWRAP_WORD** = **2** --- Wraps the text inside the node's bounding rectangle by soft-breaking between words.
+
+- **AUTOWRAP_WORD_SMART** = **3** --- Behaves similarly to :ref:`AUTOWRAP_WORD<class_TextServer_constant_AUTOWRAP_WORD>`, but force-breaks a word if that single word does not fit in one line.
+
+----
+
 .. _enum_TextServer_LineBreakFlag:
 
 .. _class_TextServer_constant_BREAK_NONE:
@@ -474,10 +502,62 @@ enum **LineBreakFlag**:
 
 ----
 
-.. _enum_TextServer_TextOverrunFlag:
+.. _enum_TextServer_VisibleCharactersBehavior:
+
+.. _class_TextServer_constant_VC_CHARS_BEFORE_SHAPING:
+
+.. _class_TextServer_constant_VC_CHARS_AFTER_SHAPING:
+
+.. _class_TextServer_constant_VC_GLYPHS_AUTO:
+
+.. _class_TextServer_constant_VC_GLYPHS_LTR:
+
+.. _class_TextServer_constant_VC_GLYPHS_RTL:
+
+enum **VisibleCharactersBehavior**:
+
+- **VC_CHARS_BEFORE_SHAPING** = **0** --- Trims text before the shaping. e.g, increasing :ref:`Label.visible_characters<class_Label_property_visible_characters>` or :ref:`RichTextLabel.visible_characters<class_RichTextLabel_property_visible_characters>` value is visually identical to typing the text.
+
+- **VC_CHARS_AFTER_SHAPING** = **1** --- Displays glyphs that are mapped to the first :ref:`Label.visible_characters<class_Label_property_visible_characters>` or :ref:`RichTextLabel.visible_characters<class_RichTextLabel_property_visible_characters>` characters from the beginning of the text.
+
+- **VC_GLYPHS_AUTO** = **2** --- Displays :ref:`Label.percent_visible<class_Label_property_percent_visible>` or :ref:`RichTextLabel.percent_visible<class_RichTextLabel_property_percent_visible>` glyphs, starting from the left or from the right, depending on :ref:`Control.layout_direction<class_Control_property_layout_direction>` value.
+
+- **VC_GLYPHS_LTR** = **3** --- Displays :ref:`Label.percent_visible<class_Label_property_percent_visible>` or :ref:`RichTextLabel.percent_visible<class_RichTextLabel_property_percent_visible>` glyphs, starting from the left.
+
+- **VC_GLYPHS_RTL** = **4** --- Displays :ref:`Label.percent_visible<class_Label_property_percent_visible>` or :ref:`RichTextLabel.percent_visible<class_RichTextLabel_property_percent_visible>` glyphs, starting from the right.
+
+----
+
+.. _enum_TextServer_OverrunBehavior:
 
 .. _class_TextServer_constant_OVERRUN_NO_TRIMMING:
 
+.. _class_TextServer_constant_OVERRUN_TRIM_CHAR:
+
+.. _class_TextServer_constant_OVERRUN_TRIM_WORD:
+
+.. _class_TextServer_constant_OVERRUN_TRIM_ELLIPSIS:
+
+.. _class_TextServer_constant_OVERRUN_TRIM_WORD_ELLIPSIS:
+
+enum **OverrunBehavior**:
+
+- **OVERRUN_NO_TRIMMING** = **0** --- No text trimming is performed.
+
+- **OVERRUN_TRIM_CHAR** = **1** --- Trims the text per character.
+
+- **OVERRUN_TRIM_WORD** = **2** --- Trims the text per word.
+
+- **OVERRUN_TRIM_ELLIPSIS** = **3** --- Trims the text per character and adds an ellipsis to indicate that parts are hidden.
+
+- **OVERRUN_TRIM_WORD_ELLIPSIS** = **4** --- Trims the text per word and adds an ellipsis to indicate that parts are hidden.
+
+----
+
+.. _enum_TextServer_TextOverrunFlag:
+
+.. _class_TextServer_constant_OVERRUN_NO_TRIM:
+
 .. _class_TextServer_constant_OVERRUN_TRIM:
 
 .. _class_TextServer_constant_OVERRUN_TRIM_WORD_ONLY:
@@ -490,7 +570,7 @@ enum **LineBreakFlag**:
 
 enum **TextOverrunFlag**:
 
-- **OVERRUN_NO_TRIMMING** = **0** --- No trimming is performed.
+- **OVERRUN_NO_TRIM** = **0** --- No trimming is performed.
 
 - **OVERRUN_TRIM** = **1** --- Trims the text when it exceeds the given width.
 
@@ -873,6 +953,22 @@ Returns font embolden strength.
 
 ----
 
+.. _class_TextServer_method_font_get_face_count:
+
+- :ref:`int<class_int>` **font_get_face_count** **(** :ref:`RID<class_RID>` font_rid **)** |const|
+
+Returns number of faces in the TrueType / OpenType collection.
+
+----
+
+.. _class_TextServer_method_font_get_face_index:
+
+- :ref:`int<class_int>` **font_get_face_index** **(** :ref:`RID<class_RID>` font_rid **)** |const|
+
+Recturns an active face index in the TrueType / OpenType collection.
+
+----
+
 .. _class_TextServer_method_font_get_fixed_size:
 
 - :ref:`int<class_int>` **font_get_fixed_size** **(** :ref:`RID<class_RID>` font_rid **)** |const|
@@ -1353,6 +1449,14 @@ Sets font embolden strength. If ``strength`` is not equal to zero, emboldens the
 
 ----
 
+.. _class_TextServer_method_font_set_face_index:
+
+- void **font_set_face_index** **(** :ref:`RID<class_RID>` font_rid, :ref:`int<class_int>` face_index **)**
+
+Sets an active face index in the TrueType / OpenType collection.
+
+----
+
 .. _class_TextServer_method_font_set_fixed_size:
 
 - void **font_set_fixed_size** **(** :ref:`RID<class_RID>` font_rid, :ref:`int<class_int>` fixed_size **)**

+ 30 - 0
classes/class_textserverextension.rst

@@ -48,6 +48,10 @@ Methods
 +-----------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
 | :ref:`float<class_float>`                                       | :ref:`font_get_embolden<class_TextServerExtension_method_font_get_embolden>` **(** :ref:`RID<class_RID>` font_rid **)** |virtual| |const|                                                                                                                                                                                                                                 |
 +-----------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`int<class_int>`                                           | :ref:`font_get_face_count<class_TextServerExtension_method_font_get_face_count>` **(** :ref:`RID<class_RID>` font_rid **)** |virtual| |const|                                                                                                                                                                                                                             |
++-----------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`int<class_int>`                                           | :ref:`font_get_face_index<class_TextServerExtension_method_font_get_face_index>` **(** :ref:`RID<class_RID>` font_rid **)** |virtual| |const|                                                                                                                                                                                                                             |
++-----------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
 | :ref:`int<class_int>`                                           | :ref:`font_get_fixed_size<class_TextServerExtension_method_font_get_fixed_size>` **(** :ref:`RID<class_RID>` font_rid **)** |virtual| |const|                                                                                                                                                                                                                             |
 +-----------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
 | :ref:`bool<class_bool>`                                         | :ref:`font_get_generate_mipmaps<class_TextServerExtension_method_font_get_generate_mipmaps>` **(** :ref:`RID<class_RID>` font_rid **)** |virtual| |const|                                                                                                                                                                                                                 |
@@ -166,6 +170,8 @@ Methods
 +-----------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
 | void                                                            | :ref:`font_set_embolden<class_TextServerExtension_method_font_set_embolden>` **(** :ref:`RID<class_RID>` font_rid, :ref:`float<class_float>` strength **)** |virtual|                                                                                                                                                                                                     |
 +-----------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| void                                                            | :ref:`font_set_face_index<class_TextServerExtension_method_font_set_face_index>` **(** :ref:`RID<class_RID>` font_rid, :ref:`int<class_int>` face_index **)** |virtual|                                                                                                                                                                                                   |
++-----------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
 | void                                                            | :ref:`font_set_fixed_size<class_TextServerExtension_method_font_set_fixed_size>` **(** :ref:`RID<class_RID>` font_rid, :ref:`int<class_int>` fixed_size **)** |virtual|                                                                                                                                                                                                   |
 +-----------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
 | void                                                            | :ref:`font_set_force_autohinter<class_TextServerExtension_method_font_set_force_autohinter>` **(** :ref:`RID<class_RID>` font_rid, :ref:`bool<class_bool>` force_autohinter **)** |virtual|                                                                                                                                                                               |
@@ -488,6 +494,22 @@ Returns font embolden strength.
 
 ----
 
+.. _class_TextServerExtension_method_font_get_face_count:
+
+- :ref:`int<class_int>` **font_get_face_count** **(** :ref:`RID<class_RID>` font_rid **)** |virtual| |const|
+
+Returns number of faces in the TrueType / OpenType collection.
+
+----
+
+.. _class_TextServerExtension_method_font_get_face_index:
+
+- :ref:`int<class_int>` **font_get_face_index** **(** :ref:`RID<class_RID>` font_rid **)** |virtual| |const|
+
+Returns an active face index in the TrueType / OpenType collection.
+
+----
+
 .. _class_TextServerExtension_method_font_get_fixed_size:
 
 - :ref:`int<class_int>` **font_get_fixed_size** **(** :ref:`RID<class_RID>` font_rid **)** |virtual| |const|
@@ -966,6 +988,14 @@ Sets font embolden strength. If ``strength`` is not equal to zero, emboldens the
 
 ----
 
+.. _class_TextServerExtension_method_font_set_face_index:
+
+- void **font_set_face_index** **(** :ref:`RID<class_RID>` font_rid, :ref:`int<class_int>` face_index **)** |virtual|
+
+Sets an active face index in the TrueType / OpenType collection.
+
+----
+
 .. _class_TextServerExtension_method_font_set_fixed_size:
 
 - void **font_set_fixed_size** **(** :ref:`RID<class_RID>` font_rid, :ref:`int<class_int>` fixed_size **)** |virtual|

+ 17 - 13
classes/class_thread.rst

@@ -32,17 +32,17 @@ Tutorials
 Methods
 -------
 
-+---------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`String<class_String>`           | :ref:`get_id<class_Thread_method_get_id>` **(** **)** |const|                                                                                                                               |
-+---------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`bool<class_bool>`               | :ref:`is_alive<class_Thread_method_is_alive>` **(** **)** |const|                                                                                                                           |
-+---------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`bool<class_bool>`               | :ref:`is_started<class_Thread_method_is_started>` **(** **)** |const|                                                                                                                       |
-+---------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`Error<enum_@GlobalScope_Error>` | :ref:`start<class_Thread_method_start>` **(** :ref:`Callable<class_Callable>` callable, :ref:`Variant<class_Variant>` userdata=null, :ref:`Priority<enum_Thread_Priority>` priority=1 **)** |
-+---------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`Variant<class_Variant>`         | :ref:`wait_to_finish<class_Thread_method_wait_to_finish>` **(** **)**                                                                                                                       |
-+---------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
++---------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`String<class_String>`           | :ref:`get_id<class_Thread_method_get_id>` **(** **)** |const|                                                                                  |
++---------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`bool<class_bool>`               | :ref:`is_alive<class_Thread_method_is_alive>` **(** **)** |const|                                                                              |
++---------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`bool<class_bool>`               | :ref:`is_started<class_Thread_method_is_started>` **(** **)** |const|                                                                          |
++---------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`Error<enum_@GlobalScope_Error>` | :ref:`start<class_Thread_method_start>` **(** :ref:`Callable<class_Callable>` callable, :ref:`Priority<enum_Thread_Priority>` priority=1 **)** |
++---------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`Variant<class_Variant>`         | :ref:`wait_to_finish<class_Thread_method_wait_to_finish>` **(** **)**                                                                          |
++---------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------+
 
 Enumerations
 ------------
@@ -94,9 +94,13 @@ Returns ``true`` if this ``Thread`` has been started. Once started, this will re
 
 .. _class_Thread_method_start:
 
-- :ref:`Error<enum_@GlobalScope_Error>` **start** **(** :ref:`Callable<class_Callable>` callable, :ref:`Variant<class_Variant>` userdata=null, :ref:`Priority<enum_Thread_Priority>` priority=1 **)**
+- :ref:`Error<enum_@GlobalScope_Error>` **start** **(** :ref:`Callable<class_Callable>` callable, :ref:`Priority<enum_Thread_Priority>` priority=1 **)**
 
-Starts a new ``Thread`` that calls ``callable`` with ``userdata`` passed as an argument. Even if no userdata is passed, ``callable`` must accept one argument and it will be null. The ``priority`` of the ``Thread`` can be changed by passing a value from the :ref:`Priority<enum_Thread_Priority>` enum.
+Starts a new ``Thread`` that calls ``callable``.
+
+If the method takes some arguments, you can pass them using :ref:`Callable.bind<class_Callable_method_bind>`.
+
+The ``priority`` of the ``Thread`` can be changed by passing a value from the :ref:`Priority<enum_Thread_Priority>` enum.
 
 Returns :ref:`@GlobalScope.OK<class_@GlobalScope_constant_OK>` on success, or :ref:`@GlobalScope.ERR_CANT_CREATE<class_@GlobalScope_constant_ERR_CANT_CREATE>` on failure.
 

+ 46 - 28
classes/class_tiledata.rst

@@ -16,27 +16,29 @@ TileData
 Properties
 ----------
 
-+---------------------------------------------+---------------------------------------------------------------+-----------------------+
-| :ref:`bool<class_bool>`                     | :ref:`flip_h<class_TileData_property_flip_h>`                 | ``false``             |
-+---------------------------------------------+---------------------------------------------------------------+-----------------------+
-| :ref:`bool<class_bool>`                     | :ref:`flip_v<class_TileData_property_flip_v>`                 | ``false``             |
-+---------------------------------------------+---------------------------------------------------------------+-----------------------+
-| :ref:`ShaderMaterial<class_ShaderMaterial>` | :ref:`material<class_TileData_property_material>`             |                       |
-+---------------------------------------------+---------------------------------------------------------------+-----------------------+
-| :ref:`Color<class_Color>`                   | :ref:`modulate<class_TileData_property_modulate>`             | ``Color(1, 1, 1, 1)`` |
-+---------------------------------------------+---------------------------------------------------------------+-----------------------+
-| :ref:`float<class_float>`                   | :ref:`probability<class_TileData_property_probability>`       | ``1.0``               |
-+---------------------------------------------+---------------------------------------------------------------+-----------------------+
-| :ref:`int<class_int>`                       | :ref:`terrain_set<class_TileData_property_terrain_set>`       | ``-1``                |
-+---------------------------------------------+---------------------------------------------------------------+-----------------------+
-| :ref:`Vector2i<class_Vector2i>`             | :ref:`texture_offset<class_TileData_property_texture_offset>` | ``Vector2i(0, 0)``    |
-+---------------------------------------------+---------------------------------------------------------------+-----------------------+
-| :ref:`bool<class_bool>`                     | :ref:`transpose<class_TileData_property_transpose>`           | ``false``             |
-+---------------------------------------------+---------------------------------------------------------------+-----------------------+
-| :ref:`int<class_int>`                       | :ref:`y_sort_origin<class_TileData_property_y_sort_origin>`   | ``0``                 |
-+---------------------------------------------+---------------------------------------------------------------+-----------------------+
-| :ref:`int<class_int>`                       | :ref:`z_index<class_TileData_property_z_index>`               | ``0``                 |
-+---------------------------------------------+---------------------------------------------------------------+-----------------------+
++---------------------------------+---------------------------------------------------------------+-----------------------+
+| :ref:`bool<class_bool>`         | :ref:`flip_h<class_TileData_property_flip_h>`                 | ``false``             |
++---------------------------------+---------------------------------------------------------------+-----------------------+
+| :ref:`bool<class_bool>`         | :ref:`flip_v<class_TileData_property_flip_v>`                 | ``false``             |
++---------------------------------+---------------------------------------------------------------+-----------------------+
+| :ref:`Material<class_Material>` | :ref:`material<class_TileData_property_material>`             |                       |
++---------------------------------+---------------------------------------------------------------+-----------------------+
+| :ref:`Color<class_Color>`       | :ref:`modulate<class_TileData_property_modulate>`             | ``Color(1, 1, 1, 1)`` |
++---------------------------------+---------------------------------------------------------------+-----------------------+
+| :ref:`float<class_float>`       | :ref:`probability<class_TileData_property_probability>`       | ``1.0``               |
++---------------------------------+---------------------------------------------------------------+-----------------------+
+| :ref:`int<class_int>`           | :ref:`terrain<class_TileData_property_terrain>`               | ``-1``                |
++---------------------------------+---------------------------------------------------------------+-----------------------+
+| :ref:`int<class_int>`           | :ref:`terrain_set<class_TileData_property_terrain_set>`       | ``-1``                |
++---------------------------------+---------------------------------------------------------------+-----------------------+
+| :ref:`Vector2i<class_Vector2i>` | :ref:`texture_offset<class_TileData_property_texture_offset>` | ``Vector2i(0, 0)``    |
++---------------------------------+---------------------------------------------------------------+-----------------------+
+| :ref:`bool<class_bool>`         | :ref:`transpose<class_TileData_property_transpose>`           | ``false``             |
++---------------------------------+---------------------------------------------------------------+-----------------------+
+| :ref:`int<class_int>`           | :ref:`y_sort_origin<class_TileData_property_y_sort_origin>`   | ``0``                 |
++---------------------------------+---------------------------------------------------------------+-----------------------+
+| :ref:`int<class_int>`           | :ref:`z_index<class_TileData_property_z_index>`               | ``0``                 |
++---------------------------------+---------------------------------------------------------------+-----------------------+
 
 Methods
 -------
@@ -62,7 +64,7 @@ Methods
 +-----------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
 | :ref:`OccluderPolygon2D<class_OccluderPolygon2D>`   | :ref:`get_occluder<class_TileData_method_get_occluder>` **(** :ref:`int<class_int>` layer_id **)** |const|                                                                                                                           |
 +-----------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`int<class_int>`                               | :ref:`get_peering_bit_terrain<class_TileData_method_get_peering_bit_terrain>` **(** :ref:`CellNeighbor<enum_TileSet_CellNeighbor>` peering_bit **)** |const|                                                                         |
+| :ref:`int<class_int>`                               | :ref:`get_terrain_peering_bit<class_TileData_method_get_terrain_peering_bit>` **(** :ref:`CellNeighbor<enum_TileSet_CellNeighbor>` peering_bit **)** |const|                                                                         |
 +-----------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
 | :ref:`bool<class_bool>`                             | :ref:`is_collision_polygon_one_way<class_TileData_method_is_collision_polygon_one_way>` **(** :ref:`int<class_int>` layer_id, :ref:`int<class_int>` polygon_index **)** |const|                                                      |
 +-----------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
@@ -88,7 +90,7 @@ Methods
 +-----------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
 | void                                                | :ref:`set_occluder<class_TileData_method_set_occluder>` **(** :ref:`int<class_int>` layer_id, :ref:`OccluderPolygon2D<class_OccluderPolygon2D>` occluder_polygon **)**                                                               |
 +-----------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| void                                                | :ref:`set_peering_bit_terrain<class_TileData_method_set_peering_bit_terrain>` **(** :ref:`CellNeighbor<enum_TileSet_CellNeighbor>` peering_bit, :ref:`int<class_int>` terrain **)**                                                  |
+| void                                                | :ref:`set_terrain_peering_bit<class_TileData_method_set_terrain_peering_bit>` **(** :ref:`CellNeighbor<enum_TileSet_CellNeighbor>` peering_bit, :ref:`int<class_int>` terrain **)**                                                  |
 +-----------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
 
 Signals
@@ -131,7 +133,7 @@ Property Descriptions
 
 .. _class_TileData_property_material:
 
-- :ref:`ShaderMaterial<class_ShaderMaterial>` **material**
+- :ref:`Material<class_Material>` **material**
 
 +----------+---------------------+
 | *Setter* | set_material(value) |
@@ -139,6 +141,8 @@ Property Descriptions
 | *Getter* | get_material()      |
 +----------+---------------------+
 
+The :ref:`Material<class_Material>` to use for this ``TileData``. This can be a :ref:`CanvasItemMaterial<class_CanvasItemMaterial>` to use the default shader, or a :ref:`ShaderMaterial<class_ShaderMaterial>` to use a custom shader.
+
 ----
 
 .. _class_TileData_property_modulate:
@@ -169,6 +173,20 @@ Property Descriptions
 
 ----
 
+.. _class_TileData_property_terrain:
+
+- :ref:`int<class_int>` **terrain**
+
++-----------+--------------------+
+| *Default* | ``-1``             |
++-----------+--------------------+
+| *Setter*  | set_terrain(value) |
++-----------+--------------------+
+| *Getter*  | get_terrain()      |
++-----------+--------------------+
+
+----
+
 .. _class_TileData_property_terrain_set:
 
 - :ref:`int<class_int>` **terrain_set**
@@ -320,9 +338,9 @@ Returns the occluder polygon of the tile for the TileSet occlusion layer with in
 
 ----
 
-.. _class_TileData_method_get_peering_bit_terrain:
+.. _class_TileData_method_get_terrain_peering_bit:
 
-- :ref:`int<class_int>` **get_peering_bit_terrain** **(** :ref:`CellNeighbor<enum_TileSet_CellNeighbor>` peering_bit **)** |const|
+- :ref:`int<class_int>` **get_terrain_peering_bit** **(** :ref:`CellNeighbor<enum_TileSet_CellNeighbor>` peering_bit **)** |const|
 
 Returns the tile's terrain bit for the given ``peering_bit`` direction.
 
@@ -424,9 +442,9 @@ Sets the occluder for the TileSet occlusion layer with index ``layer_id``.
 
 ----
 
-.. _class_TileData_method_set_peering_bit_terrain:
+.. _class_TileData_method_set_terrain_peering_bit:
 
-- void **set_peering_bit_terrain** **(** :ref:`CellNeighbor<enum_TileSet_CellNeighbor>` peering_bit, :ref:`int<class_int>` terrain **)**
+- void **set_terrain_peering_bit** **(** :ref:`CellNeighbor<enum_TileSet_CellNeighbor>` peering_bit, :ref:`int<class_int>` terrain **)**
 
 Sets the tile's terrain bit for the given ``peering_bit`` direction.
 

+ 97 - 81
classes/class_tilemap.rst

@@ -53,83 +53,85 @@ Properties
 Methods
 -------
 
-+---------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| void                                        | :ref:`_tile_data_runtime_update<class_TileMap_method__tile_data_runtime_update>` **(** :ref:`int<class_int>` layer, :ref:`Vector2i<class_Vector2i>` coords, :ref:`TileData<class_TileData>` tile_data **)** |virtual|                                                        |
-+---------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`bool<class_bool>`                     | :ref:`_use_tile_data_runtime_update<class_TileMap_method__use_tile_data_runtime_update>` **(** :ref:`int<class_int>` layer, :ref:`Vector2i<class_Vector2i>` coords **)** |virtual|                                                                                           |
-+---------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| void                                        | :ref:`add_layer<class_TileMap_method_add_layer>` **(** :ref:`int<class_int>` to_position **)**                                                                                                                                                                               |
-+---------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| void                                        | :ref:`clear<class_TileMap_method_clear>` **(** **)**                                                                                                                                                                                                                         |
-+---------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| void                                        | :ref:`clear_layer<class_TileMap_method_clear_layer>` **(** :ref:`int<class_int>` layer **)**                                                                                                                                                                                 |
-+---------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| void                                        | :ref:`erase_cell<class_TileMap_method_erase_cell>` **(** :ref:`int<class_int>` layer, :ref:`Vector2i<class_Vector2i>` coords **)**                                                                                                                                           |
-+---------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| void                                        | :ref:`fix_invalid_tiles<class_TileMap_method_fix_invalid_tiles>` **(** **)**                                                                                                                                                                                                 |
-+---------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| void                                        | :ref:`force_update<class_TileMap_method_force_update>` **(** :ref:`int<class_int>` layer=-1 **)**                                                                                                                                                                            |
-+---------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`int<class_int>`                       | :ref:`get_cell_alternative_tile<class_TileMap_method_get_cell_alternative_tile>` **(** :ref:`int<class_int>` layer, :ref:`Vector2i<class_Vector2i>` coords, :ref:`bool<class_bool>` use_proxies **)** |const|                                                                |
-+---------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`Vector2i<class_Vector2i>`             | :ref:`get_cell_atlas_coords<class_TileMap_method_get_cell_atlas_coords>` **(** :ref:`int<class_int>` layer, :ref:`Vector2i<class_Vector2i>` coords, :ref:`bool<class_bool>` use_proxies **)** |const|                                                                        |
-+---------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`int<class_int>`                       | :ref:`get_cell_source_id<class_TileMap_method_get_cell_source_id>` **(** :ref:`int<class_int>` layer, :ref:`Vector2i<class_Vector2i>` coords, :ref:`bool<class_bool>` use_proxies **)** |const|                                                                              |
-+---------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`Vector2i<class_Vector2i>`             | :ref:`get_coords_for_body_rid<class_TileMap_method_get_coords_for_body_rid>` **(** :ref:`RID<class_RID>` body **)**                                                                                                                                                          |
-+---------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`Color<class_Color>`                   | :ref:`get_layer_modulate<class_TileMap_method_get_layer_modulate>` **(** :ref:`int<class_int>` layer **)** |const|                                                                                                                                                           |
-+---------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`String<class_String>`                 | :ref:`get_layer_name<class_TileMap_method_get_layer_name>` **(** :ref:`int<class_int>` layer **)** |const|                                                                                                                                                                   |
-+---------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`int<class_int>`                       | :ref:`get_layer_y_sort_origin<class_TileMap_method_get_layer_y_sort_origin>` **(** :ref:`int<class_int>` layer **)** |const|                                                                                                                                                 |
-+---------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`int<class_int>`                       | :ref:`get_layer_z_index<class_TileMap_method_get_layer_z_index>` **(** :ref:`int<class_int>` layer **)** |const|                                                                                                                                                             |
-+---------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`int<class_int>`                       | :ref:`get_layers_count<class_TileMap_method_get_layers_count>` **(** **)** |const|                                                                                                                                                                                           |
-+---------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`Vector2i<class_Vector2i>`             | :ref:`get_neighbor_cell<class_TileMap_method_get_neighbor_cell>` **(** :ref:`Vector2i<class_Vector2i>` coords, :ref:`CellNeighbor<enum_TileSet_CellNeighbor>` neighbor **)** |const|                                                                                         |
-+---------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`TileMapPattern<class_TileMapPattern>` | :ref:`get_pattern<class_TileMap_method_get_pattern>` **(** :ref:`int<class_int>` layer, :ref:`Vector2i[]<class_Vector2i>` coords_array **)**                                                                                                                                 |
-+---------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`Vector2i[]<class_Vector2i>`           | :ref:`get_surrounding_tiles<class_TileMap_method_get_surrounding_tiles>` **(** :ref:`Vector2i<class_Vector2i>` coords **)**                                                                                                                                                  |
-+---------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`Vector2i[]<class_Vector2i>`           | :ref:`get_used_cells<class_TileMap_method_get_used_cells>` **(** :ref:`int<class_int>` layer **)** |const|                                                                                                                                                                   |
-+---------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`Rect2<class_Rect2>`                   | :ref:`get_used_rect<class_TileMap_method_get_used_rect>` **(** **)**                                                                                                                                                                                                         |
-+---------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`bool<class_bool>`                     | :ref:`is_layer_enabled<class_TileMap_method_is_layer_enabled>` **(** :ref:`int<class_int>` layer **)** |const|                                                                                                                                                               |
-+---------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`bool<class_bool>`                     | :ref:`is_layer_y_sort_enabled<class_TileMap_method_is_layer_y_sort_enabled>` **(** :ref:`int<class_int>` layer **)** |const|                                                                                                                                                 |
-+---------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`Vector2i<class_Vector2i>`             | :ref:`map_pattern<class_TileMap_method_map_pattern>` **(** :ref:`Vector2i<class_Vector2i>` position_in_tilemap, :ref:`Vector2i<class_Vector2i>` coords_in_pattern, :ref:`TileMapPattern<class_TileMapPattern>` pattern **)**                                                 |
-+---------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`Vector2<class_Vector2>`               | :ref:`map_to_world<class_TileMap_method_map_to_world>` **(** :ref:`Vector2i<class_Vector2i>` map_position **)** |const|                                                                                                                                                      |
-+---------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| void                                        | :ref:`move_layer<class_TileMap_method_move_layer>` **(** :ref:`int<class_int>` layer, :ref:`int<class_int>` to_position **)**                                                                                                                                                |
-+---------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| void                                        | :ref:`remove_layer<class_TileMap_method_remove_layer>` **(** :ref:`int<class_int>` layer **)**                                                                                                                                                                               |
-+---------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| void                                        | :ref:`set_cell<class_TileMap_method_set_cell>` **(** :ref:`int<class_int>` layer, :ref:`Vector2i<class_Vector2i>` coords, :ref:`int<class_int>` source_id=-1, :ref:`Vector2i<class_Vector2i>` atlas_coords=Vector2i(-1, -1), :ref:`int<class_int>` alternative_tile=0 **)**  |
-+---------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| void                                        | :ref:`set_cells_from_surrounding_terrains<class_TileMap_method_set_cells_from_surrounding_terrains>` **(** :ref:`int<class_int>` layer, :ref:`Vector2i[]<class_Vector2i>` cells, :ref:`int<class_int>` terrain_set, :ref:`bool<class_bool>` ignore_empty_terrains=true **)** |
-+---------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| void                                        | :ref:`set_layer_enabled<class_TileMap_method_set_layer_enabled>` **(** :ref:`int<class_int>` layer, :ref:`bool<class_bool>` enabled **)**                                                                                                                                    |
-+---------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| void                                        | :ref:`set_layer_modulate<class_TileMap_method_set_layer_modulate>` **(** :ref:`int<class_int>` layer, :ref:`Color<class_Color>` enabled **)**                                                                                                                                |
-+---------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| void                                        | :ref:`set_layer_name<class_TileMap_method_set_layer_name>` **(** :ref:`int<class_int>` layer, :ref:`String<class_String>` name **)**                                                                                                                                         |
-+---------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| void                                        | :ref:`set_layer_y_sort_enabled<class_TileMap_method_set_layer_y_sort_enabled>` **(** :ref:`int<class_int>` layer, :ref:`bool<class_bool>` y_sort_enabled **)**                                                                                                               |
-+---------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| void                                        | :ref:`set_layer_y_sort_origin<class_TileMap_method_set_layer_y_sort_origin>` **(** :ref:`int<class_int>` layer, :ref:`int<class_int>` y_sort_origin **)**                                                                                                                    |
-+---------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| void                                        | :ref:`set_layer_z_index<class_TileMap_method_set_layer_z_index>` **(** :ref:`int<class_int>` layer, :ref:`int<class_int>` z_index **)**                                                                                                                                      |
-+---------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| void                                        | :ref:`set_pattern<class_TileMap_method_set_pattern>` **(** :ref:`int<class_int>` layer, :ref:`Vector2i<class_Vector2i>` position, :ref:`TileMapPattern<class_TileMapPattern>` pattern **)**                                                                                  |
-+---------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`Vector2i<class_Vector2i>`             | :ref:`world_to_map<class_TileMap_method_world_to_map>` **(** :ref:`Vector2<class_Vector2>` world_position **)** |const|                                                                                                                                                      |
-+---------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
++---------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| void                                        | :ref:`_tile_data_runtime_update<class_TileMap_method__tile_data_runtime_update>` **(** :ref:`int<class_int>` layer, :ref:`Vector2i<class_Vector2i>` coords, :ref:`TileData<class_TileData>` tile_data **)** |virtual|                                                                   |
++---------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`bool<class_bool>`                     | :ref:`_use_tile_data_runtime_update<class_TileMap_method__use_tile_data_runtime_update>` **(** :ref:`int<class_int>` layer, :ref:`Vector2i<class_Vector2i>` coords **)** |virtual|                                                                                                      |
++---------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| void                                        | :ref:`add_layer<class_TileMap_method_add_layer>` **(** :ref:`int<class_int>` to_position **)**                                                                                                                                                                                          |
++---------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| void                                        | :ref:`clear<class_TileMap_method_clear>` **(** **)**                                                                                                                                                                                                                                    |
++---------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| void                                        | :ref:`clear_layer<class_TileMap_method_clear_layer>` **(** :ref:`int<class_int>` layer **)**                                                                                                                                                                                            |
++---------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| void                                        | :ref:`erase_cell<class_TileMap_method_erase_cell>` **(** :ref:`int<class_int>` layer, :ref:`Vector2i<class_Vector2i>` coords **)**                                                                                                                                                      |
++---------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| void                                        | :ref:`fix_invalid_tiles<class_TileMap_method_fix_invalid_tiles>` **(** **)**                                                                                                                                                                                                            |
++---------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| void                                        | :ref:`force_update<class_TileMap_method_force_update>` **(** :ref:`int<class_int>` layer=-1 **)**                                                                                                                                                                                       |
++---------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`int<class_int>`                       | :ref:`get_cell_alternative_tile<class_TileMap_method_get_cell_alternative_tile>` **(** :ref:`int<class_int>` layer, :ref:`Vector2i<class_Vector2i>` coords, :ref:`bool<class_bool>` use_proxies **)** |const|                                                                           |
++---------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`Vector2i<class_Vector2i>`             | :ref:`get_cell_atlas_coords<class_TileMap_method_get_cell_atlas_coords>` **(** :ref:`int<class_int>` layer, :ref:`Vector2i<class_Vector2i>` coords, :ref:`bool<class_bool>` use_proxies **)** |const|                                                                                   |
++---------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`int<class_int>`                       | :ref:`get_cell_source_id<class_TileMap_method_get_cell_source_id>` **(** :ref:`int<class_int>` layer, :ref:`Vector2i<class_Vector2i>` coords, :ref:`bool<class_bool>` use_proxies **)** |const|                                                                                         |
++---------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`Vector2i<class_Vector2i>`             | :ref:`get_coords_for_body_rid<class_TileMap_method_get_coords_for_body_rid>` **(** :ref:`RID<class_RID>` body **)**                                                                                                                                                                     |
++---------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`Color<class_Color>`                   | :ref:`get_layer_modulate<class_TileMap_method_get_layer_modulate>` **(** :ref:`int<class_int>` layer **)** |const|                                                                                                                                                                      |
++---------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`String<class_String>`                 | :ref:`get_layer_name<class_TileMap_method_get_layer_name>` **(** :ref:`int<class_int>` layer **)** |const|                                                                                                                                                                              |
++---------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`int<class_int>`                       | :ref:`get_layer_y_sort_origin<class_TileMap_method_get_layer_y_sort_origin>` **(** :ref:`int<class_int>` layer **)** |const|                                                                                                                                                            |
++---------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`int<class_int>`                       | :ref:`get_layer_z_index<class_TileMap_method_get_layer_z_index>` **(** :ref:`int<class_int>` layer **)** |const|                                                                                                                                                                        |
++---------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`int<class_int>`                       | :ref:`get_layers_count<class_TileMap_method_get_layers_count>` **(** **)** |const|                                                                                                                                                                                                      |
++---------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`Vector2i<class_Vector2i>`             | :ref:`get_neighbor_cell<class_TileMap_method_get_neighbor_cell>` **(** :ref:`Vector2i<class_Vector2i>` coords, :ref:`CellNeighbor<enum_TileSet_CellNeighbor>` neighbor **)** |const|                                                                                                    |
++---------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`TileMapPattern<class_TileMapPattern>` | :ref:`get_pattern<class_TileMap_method_get_pattern>` **(** :ref:`int<class_int>` layer, :ref:`Vector2i[]<class_Vector2i>` coords_array **)**                                                                                                                                            |
++---------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`Vector2i[]<class_Vector2i>`           | :ref:`get_surrounding_tiles<class_TileMap_method_get_surrounding_tiles>` **(** :ref:`Vector2i<class_Vector2i>` coords **)**                                                                                                                                                             |
++---------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`Vector2i[]<class_Vector2i>`           | :ref:`get_used_cells<class_TileMap_method_get_used_cells>` **(** :ref:`int<class_int>` layer **)** |const|                                                                                                                                                                              |
++---------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`Rect2<class_Rect2>`                   | :ref:`get_used_rect<class_TileMap_method_get_used_rect>` **(** **)**                                                                                                                                                                                                                    |
++---------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`bool<class_bool>`                     | :ref:`is_layer_enabled<class_TileMap_method_is_layer_enabled>` **(** :ref:`int<class_int>` layer **)** |const|                                                                                                                                                                          |
++---------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`bool<class_bool>`                     | :ref:`is_layer_y_sort_enabled<class_TileMap_method_is_layer_y_sort_enabled>` **(** :ref:`int<class_int>` layer **)** |const|                                                                                                                                                            |
++---------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`Vector2i<class_Vector2i>`             | :ref:`map_pattern<class_TileMap_method_map_pattern>` **(** :ref:`Vector2i<class_Vector2i>` position_in_tilemap, :ref:`Vector2i<class_Vector2i>` coords_in_pattern, :ref:`TileMapPattern<class_TileMapPattern>` pattern **)**                                                            |
++---------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`Vector2<class_Vector2>`               | :ref:`map_to_world<class_TileMap_method_map_to_world>` **(** :ref:`Vector2i<class_Vector2i>` map_position **)** |const|                                                                                                                                                                 |
++---------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| void                                        | :ref:`move_layer<class_TileMap_method_move_layer>` **(** :ref:`int<class_int>` layer, :ref:`int<class_int>` to_position **)**                                                                                                                                                           |
++---------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| void                                        | :ref:`remove_layer<class_TileMap_method_remove_layer>` **(** :ref:`int<class_int>` layer **)**                                                                                                                                                                                          |
++---------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| void                                        | :ref:`set_cell<class_TileMap_method_set_cell>` **(** :ref:`int<class_int>` layer, :ref:`Vector2i<class_Vector2i>` coords, :ref:`int<class_int>` source_id=-1, :ref:`Vector2i<class_Vector2i>` atlas_coords=Vector2i(-1, -1), :ref:`int<class_int>` alternative_tile=0 **)**             |
++---------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| void                                        | :ref:`set_cells_terrain_connect<class_TileMap_method_set_cells_terrain_connect>` **(** :ref:`int<class_int>` layer, :ref:`Vector2i[]<class_Vector2i>` cells, :ref:`int<class_int>` terrain_set, :ref:`int<class_int>` terrain, :ref:`bool<class_bool>` ignore_empty_terrains=true **)** |
++---------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| void                                        | :ref:`set_cells_terrain_path<class_TileMap_method_set_cells_terrain_path>` **(** :ref:`int<class_int>` layer, :ref:`Vector2i[]<class_Vector2i>` path, :ref:`int<class_int>` terrain_set, :ref:`int<class_int>` terrain, :ref:`bool<class_bool>` ignore_empty_terrains=true **)**        |
++---------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| void                                        | :ref:`set_layer_enabled<class_TileMap_method_set_layer_enabled>` **(** :ref:`int<class_int>` layer, :ref:`bool<class_bool>` enabled **)**                                                                                                                                               |
++---------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| void                                        | :ref:`set_layer_modulate<class_TileMap_method_set_layer_modulate>` **(** :ref:`int<class_int>` layer, :ref:`Color<class_Color>` enabled **)**                                                                                                                                           |
++---------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| void                                        | :ref:`set_layer_name<class_TileMap_method_set_layer_name>` **(** :ref:`int<class_int>` layer, :ref:`String<class_String>` name **)**                                                                                                                                                    |
++---------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| void                                        | :ref:`set_layer_y_sort_enabled<class_TileMap_method_set_layer_y_sort_enabled>` **(** :ref:`int<class_int>` layer, :ref:`bool<class_bool>` y_sort_enabled **)**                                                                                                                          |
++---------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| void                                        | :ref:`set_layer_y_sort_origin<class_TileMap_method_set_layer_y_sort_origin>` **(** :ref:`int<class_int>` layer, :ref:`int<class_int>` y_sort_origin **)**                                                                                                                               |
++---------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| void                                        | :ref:`set_layer_z_index<class_TileMap_method_set_layer_z_index>` **(** :ref:`int<class_int>` layer, :ref:`int<class_int>` z_index **)**                                                                                                                                                 |
++---------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| void                                        | :ref:`set_pattern<class_TileMap_method_set_pattern>` **(** :ref:`int<class_int>` layer, :ref:`Vector2i<class_Vector2i>` position, :ref:`TileMapPattern<class_TileMapPattern>` pattern **)**                                                                                             |
++---------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`Vector2i<class_Vector2i>`             | :ref:`world_to_map<class_TileMap_method_world_to_map>` **(** :ref:`Vector2<class_Vector2>` world_position **)** |const|                                                                                                                                                                 |
++---------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
 
 Signals
 -------
@@ -493,13 +495,27 @@ Sets the tile indentifiers for the cell on layer ``layer`` at coordinates ``coor
 
 ----
 
-.. _class_TileMap_method_set_cells_from_surrounding_terrains:
+.. _class_TileMap_method_set_cells_terrain_connect:
 
-- void **set_cells_from_surrounding_terrains** **(** :ref:`int<class_int>` layer, :ref:`Vector2i[]<class_Vector2i>` cells, :ref:`int<class_int>` terrain_set, :ref:`bool<class_bool>` ignore_empty_terrains=true **)**
+- void **set_cells_terrain_connect** **(** :ref:`int<class_int>` layer, :ref:`Vector2i[]<class_Vector2i>` cells, :ref:`int<class_int>` terrain_set, :ref:`int<class_int>` terrain, :ref:`bool<class_bool>` ignore_empty_terrains=true **)**
 
-Updates all the cells in the ``cells`` coordinates array and replace them by tiles that matches the surrounding cells terrains. Only cells form the given ``terrain_set`` are considered.
+Update all the cells in the ``cells`` coordinates array so that they use the given ``terrain`` for the given ``terrain_set``. If an updated cell has the same terrain as one of its neighboring cells, this function tries to join the two. This function might update neighboring tiles if needed to create correct terrain transitions.				If ``ignore_empty_terrains`` is true, empty terrains will be ignored when trying to find the best fitting tile for the given terrain constraints.
 
-If ``ignore_empty_terrains`` is true, zones with no terrain defined are ignored to select the tiles.
+If ``ignore_empty_terrains`` is true, empty terrains will be ignored when trying to find the best fitting tile for the given terrain constraints.
+
+\ **Note:** To work correctly, ``set_cells_terrain_connect`` requires the TileMap's TileSet to have terrains set up with all required terrain combinations. Otherwise, it may produce unexpected results.
+
+----
+
+.. _class_TileMap_method_set_cells_terrain_path:
+
+- void **set_cells_terrain_path** **(** :ref:`int<class_int>` layer, :ref:`Vector2i[]<class_Vector2i>` path, :ref:`int<class_int>` terrain_set, :ref:`int<class_int>` terrain, :ref:`bool<class_bool>` ignore_empty_terrains=true **)**
+
+Update all the cells in the ``cells`` coordinates array so that they use the given ``terrain`` for the given ``terrain_set``. The function will also connect two successive cell in the path with the same terrain. This function might update neighboring tiles if needed to create correct terrain transitions.
+
+If ``ignore_empty_terrains`` is true, empty terrains will be ignored when trying to find the best fitting tile for the given terrain constraints.
+
+\ **Note:** To work correctly, ``set_cells_terrain_path`` requires the TileMap's TileSet to have terrains set up with all required terrain combinations. Otherwise, it may produce unexpected results.
 
 ----
 

+ 2 - 0
classes/class_transform2d.rst

@@ -339,6 +339,8 @@ Sets the transform's rotation (in radians).
 
 Sets the transform's scale.
 
+\ **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_set_skew:

+ 2 - 0
classes/class_tree.rst

@@ -51,6 +51,8 @@ Trees are built via code, using :ref:`TreeItem<class_TreeItem>` objects to creat
 
 To iterate over all the :ref:`TreeItem<class_TreeItem>` objects in a ``Tree`` object, use :ref:`TreeItem.get_next<class_TreeItem_method_get_next>` and :ref:`TreeItem.get_first_child<class_TreeItem_method_get_first_child>` after getting the root through :ref:`get_root<class_Tree_method_get_root>`. You can use :ref:`Object.free<class_Object_method_free>` on a :ref:`TreeItem<class_TreeItem>` to remove it from the ``Tree``.
 
+\ **Incremental search:** Like :ref:`ItemList<class_ItemList>` and :ref:`PopupMenu<class_PopupMenu>`, ``Tree`` supports searching within the list while the control is focused. Press a key that matches the first letter of an item's name to select the first item starting with the given letter. After that point, there are two ways to perform incremental search: 1) Press the same key again before the timeout duration to select the next item starting with the same letter. 2) Press letter keys that match the rest of the word before the timeout duration to match to select the item in question directly. Both of these actions will be reset to the beginning of the list if the timeout duration has passed since the last keystroke was registered. You can adjust the timeout duration by changing :ref:`ProjectSettings.gui/timers/incremental_search_max_interval_msec<class_ProjectSettings_property_gui/timers/incremental_search_max_interval_msec>`.
+
 Properties
 ----------
 

+ 3 - 23
classes/class_visualshader.rst

@@ -23,11 +23,9 @@ The visual shader editor creates the shader.
 Properties
 ----------
 
-+-------------------------------------+-------------------------------------------------------------------+-------------------+
-| :ref:`Dictionary<class_Dictionary>` | :ref:`engine_version<class_VisualShader_property_engine_version>` | ``{}``            |
-+-------------------------------------+-------------------------------------------------------------------+-------------------+
-| :ref:`Vector2<class_Vector2>`       | :ref:`graph_offset<class_VisualShader_property_graph_offset>`     | ``Vector2(0, 0)`` |
-+-------------------------------------+-------------------------------------------------------------------+-------------------+
++-------------------------------+---------------------------------------------------------------+-------------------+
+| :ref:`Vector2<class_Vector2>` | :ref:`graph_offset<class_VisualShader_property_graph_offset>` | ``Vector2(0, 0)`` |
++-------------------------------+---------------------------------------------------------------+-------------------+
 
 Methods
 -------
@@ -187,24 +185,6 @@ Constants
 Property Descriptions
 ---------------------
 
-.. _class_VisualShader_property_engine_version:
-
-- :ref:`Dictionary<class_Dictionary>` **engine_version**
-
-+-----------+---------------------------+
-| *Default* | ``{}``                    |
-+-----------+---------------------------+
-| *Setter*  | set_engine_version(value) |
-+-----------+---------------------------+
-| *Getter*  | get_engine_version()      |
-+-----------+---------------------------+
-
-The Godot version this ``VisualShader`` was designed for, in the form of a :ref:`Dictionary<class_Dictionary>` with ``major`` and ``minor`` keys with integer values. Example: ``{"major": 4, "minor": 0}``\ 
-
-This is used by the editor to convert visual shaders from older Godot versions.
-
-----
-
 .. _class_VisualShader_property_graph_offset:
 
 - :ref:`Vector2<class_Vector2>` **graph_offset**

+ 10 - 0
classes/class_webrtcpeerconnection.rst

@@ -48,6 +48,8 @@ Methods
 +-------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
 | :ref:`Error<enum_@GlobalScope_Error>`                             | :ref:`poll<class_WebRTCPeerConnection_method_poll>` **(** **)**                                                                                                                            |
 +-------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| void                                                              | :ref:`set_default_extension<class_WebRTCPeerConnection_method_set_default_extension>` **(** :ref:`StringName<class_StringName>` extension_class **)** |static|                             |
++-------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
 | :ref:`Error<enum_@GlobalScope_Error>`                             | :ref:`set_local_description<class_WebRTCPeerConnection_method_set_local_description>` **(** :ref:`String<class_String>` type, :ref:`String<class_String>` sdp **)**                        |
 +-------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
 | :ref:`Error<enum_@GlobalScope_Error>`                             | :ref:`set_remote_description<class_WebRTCPeerConnection_method_set_remote_description>` **(** :ref:`String<class_String>` type, :ref:`String<class_String>` sdp **)**                      |
@@ -211,6 +213,14 @@ Call this method frequently (e.g. in :ref:`Node._process<class_Node_method__proc
 
 ----
 
+.. _class_WebRTCPeerConnection_method_set_default_extension:
+
+- void **set_default_extension** **(** :ref:`StringName<class_StringName>` extension_class **)** |static|
+
+Sets the ``extension_class`` as the default :ref:`WebRTCPeerConnectionExtension<class_WebRTCPeerConnectionExtension>` returned when creating a new ``WebRTCPeerConnection``.
+
+----
+
 .. _class_WebRTCPeerConnection_method_set_local_description:
 
 - :ref:`Error<enum_@GlobalScope_Error>` **set_local_description** **(** :ref:`String<class_String>` type, :ref:`String<class_String>` sdp **)**

+ 0 - 8
classes/class_webrtcpeerconnectionextension.rst

@@ -35,8 +35,6 @@ Methods
 +-----------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
 | :ref:`int<class_int>`       | :ref:`_set_remote_description<class_WebRTCPeerConnectionExtension_method__set_remote_description>` **(** :ref:`String<class_String>` p_type, :ref:`String<class_String>` p_sdp **)** |virtual|                                             |
 +-----------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| void                        | :ref:`make_default<class_WebRTCPeerConnectionExtension_method_make_default>` **(** **)**                                                                                                                                                   |
-+-----------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
 
 Method Descriptions
 -------------------
@@ -93,12 +91,6 @@ Method Descriptions
 
 - :ref:`int<class_int>` **_set_remote_description** **(** :ref:`String<class_String>` p_type, :ref:`String<class_String>` p_sdp **)** |virtual|
 
-----
-
-.. _class_WebRTCPeerConnectionExtension_method_make_default:
-
-- void **make_default** **(** **)**
-
 .. |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.)`

+ 182 - 40
classes/class_window.rst

@@ -18,7 +18,9 @@ Base class for all windows.
 Description
 -----------
 
-A node that creates a window.
+A node that creates a window. The window can either be a native system window or embedded inside another ``Window`` (see :ref:`Viewport.gui_embed_subwindows<class_Viewport_property_gui_embed_subwindows>`).
+
+At runtime, ``Window``\ s will not close automatically when requested. You need to handle it manually using :ref:`close_requested<class_Window_signal_close_requested>` (this applies both to clicking close button and clicking outside popup).
 
 Properties
 ----------
@@ -176,8 +178,6 @@ Theme Properties
 +-----------------------------------+--------------------------------------------------------------------------------+-----------------------------------+
 | :ref:`int<class_int>`             | :ref:`resize_margin<class_Window_theme_constant_resize_margin>`                | ``4``                             |
 +-----------------------------------+--------------------------------------------------------------------------------+-----------------------------------+
-| :ref:`int<class_int>`             | :ref:`scaleborder_size<class_Window_theme_constant_scaleborder_size>`          | ``4``                             |
-+-----------------------------------+--------------------------------------------------------------------------------+-----------------------------------+
 | :ref:`int<class_int>`             | :ref:`title_height<class_Window_theme_constant_title_height>`                  | ``36``                            |
 +-----------------------------------+--------------------------------------------------------------------------------+-----------------------------------+
 | :ref:`int<class_int>`             | :ref:`title_outline_size<class_Window_theme_constant_title_outline_size>`      | ``0``                             |
@@ -200,12 +200,18 @@ Signals
 
 - **about_to_popup** **(** **)**
 
+Emitted right after :ref:`popup<class_Window_method_popup>` call, before the ``Window`` appears or does anything.
+
 ----
 
 .. _class_Window_signal_close_requested:
 
 - **close_requested** **(** **)**
 
+Emitted when the ``Window``'s close button is pressed or when :ref:`popup_window<class_Window_property_popup_window>` is enabled and user clicks outside the window.
+
+This signal can be used to handle window closing, e.g. by connecting it to :ref:`hide<class_Window_method_hide>`.
+
 ----
 
 .. _class_Window_signal_files_dropped:
@@ -232,48 +238,64 @@ Example usage:
 
 - **focus_entered** **(** **)**
 
+Emitted when the ``Window`` gains focus.
+
 ----
 
 .. _class_Window_signal_focus_exited:
 
 - **focus_exited** **(** **)**
 
+Emitted when the ``Window`` loses its focus.
+
 ----
 
 .. _class_Window_signal_go_back_requested:
 
 - **go_back_requested** **(** **)**
 
+Emitted when a go back request is sent (e.g. pressing the "Back" button on Android), right after :ref:`Node.NOTIFICATION_WM_GO_BACK_REQUEST<class_Node_constant_NOTIFICATION_WM_GO_BACK_REQUEST>`.
+
 ----
 
 .. _class_Window_signal_mouse_entered:
 
 - **mouse_entered** **(** **)**
 
+Emitted when the mouse cursor enters the ``Window``'s area, regardless if it's currently focused or not.
+
 ----
 
 .. _class_Window_signal_mouse_exited:
 
 - **mouse_exited** **(** **)**
 
+Emitted when the mouse cursor exits the ``Window``'s area (including when it's hovered over another window on top of this one).
+
 ----
 
 .. _class_Window_signal_theme_changed:
 
 - **theme_changed** **(** **)**
 
+Emitted when the :ref:`theme<class_Window_property_theme>` is modified or changed to another :ref:`Theme<class_Theme>`.
+
 ----
 
 .. _class_Window_signal_visibility_changed:
 
 - **visibility_changed** **(** **)**
 
+Emitted when ``Window`` is made visible or disappears.
+
 ----
 
 .. _class_Window_signal_window_input:
 
 - **window_input** **(** :ref:`InputEvent<class_InputEvent>` event **)**
 
+Emitted when the ``Window`` is currently focused and receives any input, passing the received event as an argument.
+
 Enumerations
 ------------
 
@@ -291,11 +313,11 @@ Enumerations
 
 enum **Mode**:
 
-- **MODE_WINDOWED** = **0** --- Windowed mode.
+- **MODE_WINDOWED** = **0** --- Windowed mode, i.e. ``Window`` doesn't occupy whole screen (unless set to the size of the screen).
 
-- **MODE_MINIMIZED** = **1** --- Minimized window mode.
+- **MODE_MINIMIZED** = **1** --- Minimized window mode, i.e. ``Window`` is not visible and available on window manager's window list. Normally happens when the minimize button is presesd.
 
-- **MODE_MAXIMIZED** = **2** --- Maximized window mode.
+- **MODE_MAXIMIZED** = **2** --- Maximized window mode, i.e. ``Window`` will occupy whole screen area except task bar and still display its borders. Normally happens when the minimize button is presesd.
 
 - **MODE_FULLSCREEN** = **3** --- Fullscreen window mode. Note that this is not *exclusive* fullscreen. On Windows and Linux, a borderless window is used to emulate fullscreen. On macOS, a new desktop is used to display the running project.
 
@@ -327,19 +349,19 @@ Regardless of the platform, enabling fullscreen will change the window size to m
 
 enum **Flags**:
 
-- **FLAG_RESIZE_DISABLED** = **0** --- The window's ability to be resized.
+- **FLAG_RESIZE_DISABLED** = **0** --- The window's ability to be resized. Set with :ref:`unresizable<class_Window_property_unresizable>`.
 
-- **FLAG_BORDERLESS** = **1** --- Borderless window.
+- **FLAG_BORDERLESS** = **1** --- Borderless window. Set with :ref:`borderless<class_Window_property_borderless>`.
 
-- **FLAG_ALWAYS_ON_TOP** = **2** --- Flag for making the window always on top of all other windows.
+- **FLAG_ALWAYS_ON_TOP** = **2** --- Flag for making the window always on top of all other windows. Set with :ref:`always_on_top<class_Window_property_always_on_top>`.
 
-- **FLAG_TRANSPARENT** = **3**
+- **FLAG_TRANSPARENT** = **3** --- Flag for per-pixel transparency. Set with :ref:`transparent<class_Window_property_transparent>`.
 
-- **FLAG_NO_FOCUS** = **4**
+- **FLAG_NO_FOCUS** = **4** --- The window's ability to gain focus. Set with :ref:`unfocusable<class_Window_property_unfocusable>`.
 
-- **FLAG_POPUP** = **5**
+- **FLAG_POPUP** = **5** --- Whether the window is popup or a regular window. Set with :ref:`popup_window<class_Window_property_popup_window>`.
 
-- **FLAG_MAX** = **6**
+- **FLAG_MAX** = **6** --- Max value of the :ref:`Flags<enum_Window_Flags>`.
 
 ----
 
@@ -353,11 +375,11 @@ enum **Flags**:
 
 enum **ContentScaleMode**:
 
-- **CONTENT_SCALE_MODE_DISABLED** = **0**
+- **CONTENT_SCALE_MODE_DISABLED** = **0** --- The content will not be scaled to match the ``Window``'s size.
 
-- **CONTENT_SCALE_MODE_CANVAS_ITEMS** = **1**
+- **CONTENT_SCALE_MODE_CANVAS_ITEMS** = **1** --- The content will be rendered at the target size. This is more performance-expensive than :ref:`CONTENT_SCALE_MODE_VIEWPORT<class_Window_constant_CONTENT_SCALE_MODE_VIEWPORT>`, but provides better results.
 
-- **CONTENT_SCALE_MODE_VIEWPORT** = **2**
+- **CONTENT_SCALE_MODE_VIEWPORT** = **2** --- The content will be rendered at the base size and then scaled to the target size. More performant than :ref:`CONTENT_SCALE_MODE_CANVAS_ITEMS<class_Window_constant_CONTENT_SCALE_MODE_CANVAS_ITEMS>`, but results in pixelated image.
 
 ----
 
@@ -375,15 +397,15 @@ enum **ContentScaleMode**:
 
 enum **ContentScaleAspect**:
 
-- **CONTENT_SCALE_ASPECT_IGNORE** = **0**
+- **CONTENT_SCALE_ASPECT_IGNORE** = **0** --- The aspect will be ignored. Scaling will simply stretch the content to fit the target size.
 
-- **CONTENT_SCALE_ASPECT_KEEP** = **1**
+- **CONTENT_SCALE_ASPECT_KEEP** = **1** --- The content's aspect will be preserved. If the target size has different aspect from the base one, the image will be centered and black bars will appear on left and right sides.
 
-- **CONTENT_SCALE_ASPECT_KEEP_WIDTH** = **2**
+- **CONTENT_SCALE_ASPECT_KEEP_WIDTH** = **2** --- The content can be expanded vertically. Scaling horizontally will result in keeping the width ratio and then black bars on left and right sides.
 
-- **CONTENT_SCALE_ASPECT_KEEP_HEIGHT** = **3**
+- **CONTENT_SCALE_ASPECT_KEEP_HEIGHT** = **3** --- The content can be expanded horizontally. Scaling vertically will result in keeping the height ratio and then black bars on top and bottom sides.
 
-- **CONTENT_SCALE_ASPECT_EXPAND** = **4**
+- **CONTENT_SCALE_ASPECT_EXPAND** = **4** --- The content's aspect will be preserved. If the target size has different aspect from the base one, the content will stay in the to-left corner and add an extra visible area in the stretched space.
 
 ----
 
@@ -412,7 +434,7 @@ Constants
 
 .. _class_Window_constant_NOTIFICATION_VISIBILITY_CHANGED:
 
-- **NOTIFICATION_VISIBILITY_CHANGED** = **30**
+- **NOTIFICATION_VISIBILITY_CHANGED** = **30** --- Emitted when ``Window``'s visibility changes, right before :ref:`visibility_changed<class_Window_signal_visibility_changed>`.
 
 Property Descriptions
 ---------------------
@@ -429,7 +451,7 @@ Property Descriptions
 | *Getter*  | get_flag()      |
 +-----------+-----------------+
 
-If ``true``, the window will be on top of all other windows.
+If ``true``, the window will be on top of all other windows. Does not work if :ref:`transient<class_Window_property_transient>` is enabled.
 
 ----
 
@@ -477,6 +499,8 @@ If ``true``, the window will have no borders.
 | *Getter*  | get_content_scale_aspect()      |
 +-----------+---------------------------------+
 
+Specifies how the content's aspect behaves when the ``Window`` is resized. The base aspect is determined by :ref:`content_scale_size<class_Window_property_content_scale_size>`.
+
 ----
 
 .. _class_Window_property_content_scale_factor:
@@ -491,6 +515,8 @@ If ``true``, the window will have no borders.
 | *Getter*  | get_content_scale_factor()      |
 +-----------+---------------------------------+
 
+Specifies the base scale of ``Window``'s content when its :ref:`size<class_Window_property_size>` is equal to :ref:`content_scale_size<class_Window_property_content_scale_size>`.
+
 ----
 
 .. _class_Window_property_content_scale_mode:
@@ -505,6 +531,8 @@ If ``true``, the window will have no borders.
 | *Getter*  | get_content_scale_mode()      |
 +-----------+-------------------------------+
 
+Specifies how the content is scaled when the ``Window`` is resized.
+
 ----
 
 .. _class_Window_property_content_scale_size:
@@ -519,6 +547,8 @@ If ``true``, the window will have no borders.
 | *Getter*  | get_content_scale_size()      |
 +-----------+-------------------------------+
 
+Base size of the content (i.e. nodes that are drawn inside the window). If non-zero, ``Window``'s content will be scaled when the window is resized to a different size.
+
 ----
 
 .. _class_Window_property_current_screen:
@@ -549,6 +579,10 @@ The screen the window is currently on.
 | *Getter*  | is_exclusive()       |
 +-----------+----------------------+
 
+If ``true``, the ``Window`` will be in exclusive mode. Exclusive windows are always on top of their parent and will block all input going to the parent ``Window``.
+
+Needs :ref:`transient<class_Window_property_transient>` enabled to work.
+
 ----
 
 .. _class_Window_property_max_size:
@@ -563,6 +597,8 @@ The screen the window is currently on.
 | *Getter*  | get_max_size()      |
 +-----------+---------------------+
 
+If non-zero, the ``Window`` can't be resized to be bigger than this size.
+
 ----
 
 .. _class_Window_property_min_size:
@@ -577,6 +613,8 @@ The screen the window is currently on.
 | *Getter*  | get_min_size()      |
 +-----------+---------------------+
 
+If non-zero, the ``Window`` can't be resized to be smaller than this size.
+
 ----
 
 .. _class_Window_property_mode:
@@ -609,6 +647,8 @@ Set's the window's current mode.
 | *Getter*  | get_flag()      |
 +-----------+-----------------+
 
+If ``true``, the ``Window`` will be considered a popup. Popups are sub-windows that don't show as separate windows in system's window manager's window list and will send close request when anything is clicked outside of them (unless :ref:`exclusive<class_Window_property_exclusive>` is enabled).
+
 ----
 
 .. _class_Window_property_position:
@@ -653,6 +693,10 @@ The window's size in pixels.
 | *Getter* | get_theme()      |
 +----------+------------------+
 
+The :ref:`Theme<class_Theme>` resource that determines the style of the underlying :ref:`Control<class_Control>` nodes.
+
+\ ``Window`` styles will have no effect unless the window is embedded.
+
 ----
 
 .. _class_Window_property_theme_type_variation:
@@ -667,6 +711,8 @@ The window's size in pixels.
 | *Getter*  | get_theme_type_variation()      |
 +-----------+---------------------------------+
 
+The name of a theme type variation used by this ``Window`` to look up its own theme items. See :ref:`Control.theme_type_variation<class_Control_property_theme_type_variation>` for more details.
+
 ----
 
 .. _class_Window_property_title:
@@ -681,7 +727,7 @@ The window's size in pixels.
 | *Getter*  | get_title()      |
 +-----------+------------------+
 
-The window's title.
+The window's title. If the ``Window`` is non-embedded, title styles set in :ref:`Theme<class_Theme>` will have no effect.
 
 ----
 
@@ -697,6 +743,10 @@ The window's title.
 | *Getter*  | is_transient()       |
 +-----------+----------------------+
 
+If ``true``, the ``Window`` is transient, i.e. it's considered a child of another ``Window``. Transient windows can't be in fullscreen mode and will return focus to their parent when closed.
+
+Note that behavior might be different depending on the platform.
+
 ----
 
 .. _class_Window_property_transparent:
@@ -711,6 +761,8 @@ The window's title.
 | *Getter*  | get_flag()      |
 +-----------+-----------------+
 
+If ``true``, the ``Window``'s background can be transparent. This is best used with embedded windows. Currently non-embedded ``Window`` transparency is implemented only for MacOS.
+
 ----
 
 .. _class_Window_property_unfocusable:
@@ -725,6 +777,8 @@ The window's title.
 | *Getter*  | get_flag()      |
 +-----------+-----------------+
 
+If ``true``, the ``Window`` can't be focused nor interacted with. It can still be visible.
+
 ----
 
 .. _class_Window_property_unresizable:
@@ -739,7 +793,7 @@ The window's title.
 | *Getter*  | get_flag()      |
 +-----------+-----------------+
 
-If ``true``, the window can't be resized.
+If ``true``, the window can't be resized. Minimize and maximize buttons are disabled.
 
 ----
 
@@ -771,6 +825,10 @@ If ``true``, the window is visible.
 | *Getter*  | is_wrapping_controls()   |
 +-----------+--------------------------+
 
+If ``true``, the window's size will automatically update when a child node is added or removed.
+
+If ``false``, you need to call :ref:`child_controls_changed<class_Window_method_child_controls_changed>` manually.
+
 Method Descriptions
 -------------------
 
@@ -786,13 +844,15 @@ Returns whether the window is being drawn to the screen.
 
 - void **child_controls_changed** **(** **)**
 
+Requests an update of the ``Window`` size to fit underlying :ref:`Control<class_Control>` nodes.
+
 ----
 
 .. _class_Window_method_get_contents_minimum_size:
 
 - :ref:`Vector2<class_Vector2>` **get_contents_minimum_size** **(** **)** |const|
 
-Returns the combined minimum size from the child :ref:`Control<class_Control>` nodes of the window.
+Returns the combined minimum size from the child :ref:`Control<class_Control>` nodes of the window. Use :ref:`child_controls_changed<class_Window_method_child_controls_changed>` to update it when children nodes have changed.
 
 ----
 
@@ -824,30 +884,50 @@ Returns the window's size including its border.
 
 - :ref:`Color<class_Color>` **get_theme_color** **(** :ref:`StringName<class_StringName>` name, :ref:`StringName<class_StringName>` theme_type="" **)** |const|
 
+Returns the :ref:`Color<class_Color>` at ``name`` if the theme has ``theme_type``.
+
+See :ref:`Control.get_theme_color<class_Control_method_get_theme_color>` for more details.
+
 ----
 
 .. _class_Window_method_get_theme_constant:
 
 - :ref:`int<class_int>` **get_theme_constant** **(** :ref:`StringName<class_StringName>` name, :ref:`StringName<class_StringName>` theme_type="" **)** |const|
 
+Returns the constant at ``name`` if the theme has ``theme_type``.
+
+See :ref:`Control.get_theme_color<class_Control_method_get_theme_color>` for more details.
+
 ----
 
 .. _class_Window_method_get_theme_default_base_scale:
 
 - :ref:`float<class_float>` **get_theme_default_base_scale** **(** **)** |const|
 
+Returns the default base scale defined in the attached :ref:`Theme<class_Theme>`.
+
+See :ref:`Theme.default_base_scale<class_Theme_property_default_base_scale>` for more details.
+
 ----
 
 .. _class_Window_method_get_theme_default_font:
 
 - :ref:`Font<class_Font>` **get_theme_default_font** **(** **)** |const|
 
+Returns the default :ref:`Font<class_Font>` defined in the attached :ref:`Theme<class_Theme>`.
+
+See :ref:`Theme.default_font<class_Theme_property_default_font>` for more details.
+
 ----
 
 .. _class_Window_method_get_theme_default_font_size:
 
 - :ref:`int<class_int>` **get_theme_default_font_size** **(** **)** |const|
 
+Returns the default font size defined in the attached :ref:`Theme<class_Theme>`.
+
+See :ref:`Theme.default_font_size<class_Theme_property_default_font_size>` for more details.
+
 ----
 
 .. _class_Window_method_get_theme_font:
@@ -856,6 +936,8 @@ Returns the window's size including its border.
 
 Returns the :ref:`Font<class_Font>` at ``name`` if the theme has ``theme_type``.
 
+See :ref:`Control.get_theme_color<class_Control_method_get_theme_color>` for more details.
+
 ----
 
 .. _class_Window_method_get_theme_font_size:
@@ -864,18 +946,28 @@ Returns the :ref:`Font<class_Font>` at ``name`` if the theme has ``theme_type``.
 
 Returns the font size at ``name`` if the theme has ``theme_type``.
 
+See :ref:`Control.get_theme_color<class_Control_method_get_theme_color>` for more details.
+
 ----
 
 .. _class_Window_method_get_theme_icon:
 
 - :ref:`Texture2D<class_Texture2D>` **get_theme_icon** **(** :ref:`StringName<class_StringName>` name, :ref:`StringName<class_StringName>` theme_type="" **)** |const|
 
+Returns the icon at ``name`` if the theme has ``theme_type``.
+
+See :ref:`Control.get_theme_color<class_Control_method_get_theme_color>` for more details.
+
 ----
 
 .. _class_Window_method_get_theme_stylebox:
 
 - :ref:`StyleBox<class_StyleBox>` **get_theme_stylebox** **(** :ref:`StringName<class_StringName>` name, :ref:`StringName<class_StringName>` theme_type="" **)** |const|
 
+Returns the :ref:`StyleBox<class_StyleBox>` at ``name`` if the theme has ``theme_type``.
+
+See :ref:`Control.get_theme_color<class_Control_method_get_theme_color>` for more details.
+
 ----
 
 .. _class_Window_method_grab_focus:
@@ -898,12 +990,16 @@ Returns ``true`` if the window is focused.
 
 - :ref:`bool<class_bool>` **has_theme_color** **(** :ref:`StringName<class_StringName>` name, :ref:`StringName<class_StringName>` theme_type="" **)** |const|
 
+Returns ``true`` if :ref:`Color<class_Color>` with ``name`` is in ``theme_type``.
+
 ----
 
 .. _class_Window_method_has_theme_constant:
 
 - :ref:`bool<class_bool>` **has_theme_constant** **(** :ref:`StringName<class_StringName>` name, :ref:`StringName<class_StringName>` theme_type="" **)** |const|
 
+Returns ``true`` if constant with ``name`` is in ``theme_type``.
+
 ----
 
 .. _class_Window_method_has_theme_font:
@@ -912,8 +1008,6 @@ Returns ``true`` if the window is focused.
 
 Returns ``true`` if :ref:`Font<class_Font>` with ``name`` is in ``theme_type``.
 
-Returns ``false`` if the theme does not have ``theme_type``.
-
 ----
 
 .. _class_Window_method_has_theme_font_size:
@@ -922,26 +1016,30 @@ Returns ``false`` if the theme does not have ``theme_type``.
 
 Returns ``true`` if font size with ``name`` is in ``theme_type``.
 
-Returns ``false`` if the theme does not have ``theme_type``.
-
 ----
 
 .. _class_Window_method_has_theme_icon:
 
 - :ref:`bool<class_bool>` **has_theme_icon** **(** :ref:`StringName<class_StringName>` name, :ref:`StringName<class_StringName>` theme_type="" **)** |const|
 
+Returns ``true`` if icon with ``name`` is in ``theme_type``.
+
 ----
 
 .. _class_Window_method_has_theme_stylebox:
 
 - :ref:`bool<class_bool>` **has_theme_stylebox** **(** :ref:`StringName<class_StringName>` name, :ref:`StringName<class_StringName>` theme_type="" **)** |const|
 
+Returns ``true`` if :ref:`StyleBox<class_StyleBox>` with ``name`` is in ``theme_type``.
+
 ----
 
 .. _class_Window_method_hide:
 
 - void **hide** **(** **)**
 
+Hides the window. This is not the same as minimized state. Hidden window can't be interacted with and needs to be made visible with :ref:`show<class_Window_method_show>`.
+
 ----
 
 .. _class_Window_method_is_embedded:
@@ -964,54 +1062,80 @@ Returns ``true`` if layout is right-to-left.
 
 - :ref:`bool<class_bool>` **is_maximize_allowed** **(** **)** |const|
 
+Returns ``true`` if the window can be maximized (the maximize button is enabled).
+
 ----
 
 .. _class_Window_method_is_using_font_oversampling:
 
 - :ref:`bool<class_bool>` **is_using_font_oversampling** **(** **)** |const|
 
+Returns ``true`` if font oversampling is enabled. See :ref:`set_use_font_oversampling<class_Window_method_set_use_font_oversampling>`.
+
 ----
 
 .. _class_Window_method_move_to_foreground:
 
 - void **move_to_foreground** **(** **)**
 
+Moves the ``Window`` on top of other windows and focuses it.
+
 ----
 
 .. _class_Window_method_popup:
 
 - void **popup** **(** :ref:`Rect2i<class_Rect2i>` rect=Rect2i(0, 0, 0, 0) **)**
 
+Shows the ``Window`` and makes it transient (see :ref:`transient<class_Window_property_transient>`). If ``rect`` is provided, it will be set as the ``Window``'s size.
+
+Fails if called on the main window.
+
 ----
 
 .. _class_Window_method_popup_centered:
 
 - void **popup_centered** **(** :ref:`Vector2i<class_Vector2i>` minsize=Vector2i(0, 0) **)**
 
+Popups the ``Window`` at the center of the current screen, with optionally given minimum size.
+
+If the ``Window`` is embedded, it will be centered in the parent :ref:`Viewport<class_Viewport>` instead.
+
 ----
 
 .. _class_Window_method_popup_centered_clamped:
 
 - void **popup_centered_clamped** **(** :ref:`Vector2i<class_Vector2i>` minsize=Vector2i(0, 0), :ref:`float<class_float>` fallback_ratio=0.75 **)**
 
+Popups the ``Window`` centered inside its parent ``Window``.
+
+\ ``fallback_ratio`` determines the maximum size of the ``Window``, in relation to its parent.
+
 ----
 
 .. _class_Window_method_popup_centered_ratio:
 
 - void **popup_centered_ratio** **(** :ref:`float<class_float>` ratio=0.8 **)**
 
+Popups the ``Window`` centered inside its parent ``Window`` and sets its size as a ``ratio`` of parent's size.
+
 ----
 
 .. _class_Window_method_popup_on_parent:
 
 - void **popup_on_parent** **(** :ref:`Rect2i<class_Rect2i>` parent_rect **)**
 
+Popups the ``Window`` with a position shifted by parent ``Window``'s position.
+
+If the ``Window`` is embedded, has the same effect as :ref:`popup<class_Window_method_popup>`.
+
 ----
 
 .. _class_Window_method_request_attention:
 
 - void **request_attention** **(** **)**
 
+Tells the OS that the ``Window`` needs an attention. This makes the window stand out in some way depending on the system, e.g. it might blink on the task bar.
+
 ----
 
 .. _class_Window_method_reset_size:
@@ -1034,12 +1158,16 @@ Sets a specified window flag.
 
 - void **set_ime_active** **(** :ref:`bool<class_bool>` active **)**
 
+If ``active`` is ``true``, enables system's native IME (Input Method Editor).
+
 ----
 
 .. _class_Window_method_set_ime_position:
 
 - void **set_ime_position** **(** :ref:`Vector2i<class_Vector2i>` position **)**
 
+Moves IME to the given position.
+
 ----
 
 .. _class_Window_method_set_layout_direction:
@@ -1054,12 +1182,16 @@ Sets layout direction and text writing direction. Right-to-left layouts are nece
 
 - void **set_use_font_oversampling** **(** :ref:`bool<class_bool>` enable **)**
 
+Enables font oversampling. This makes fonts look better when they are scaled up.
+
 ----
 
 .. _class_Window_method_show:
 
 - void **show** **(** **)**
 
+Makes the ``Window`` appear. This enables interactions with the ``Window`` and doesn't change any of its property other than visibility (unlike e.g. :ref:`popup<class_Window_method_popup>`).
+
 Theme Property Descriptions
 ---------------------------
 
@@ -1071,6 +1203,8 @@ Theme Property Descriptions
 | *Default* | ``Color(0.875, 0.875, 0.875, 1)`` |
 +-----------+-----------------------------------+
 
+The color of the title's text.
+
 ----
 
 .. _class_Window_theme_color_title_outline_modulate:
@@ -1081,7 +1215,7 @@ Theme Property Descriptions
 | *Default* | ``Color(1, 1, 1, 1)`` |
 +-----------+-----------------------+
 
-The color of the title outline.
+The color of the title's text outline.
 
 ----
 
@@ -1093,6 +1227,8 @@ The color of the title outline.
 | *Default* | ``18`` |
 +-----------+--------+
 
+Horizontal position offset of the close button.
+
 ----
 
 .. _class_Window_theme_constant_close_v_offset:
@@ -1103,6 +1239,8 @@ The color of the title outline.
 | *Default* | ``24`` |
 +-----------+--------+
 
+Vertical position offset of the close button.
+
 ----
 
 .. _class_Window_theme_constant_resize_margin:
@@ -1113,15 +1251,7 @@ The color of the title outline.
 | *Default* | ``4`` |
 +-----------+-------+
 
-----
-
-.. _class_Window_theme_constant_scaleborder_size:
-
-- :ref:`int<class_int>` **scaleborder_size**
-
-+-----------+-------+
-| *Default* | ``4`` |
-+-----------+-------+
+Defines the outside margin at which the window border can be grabbed with mouse and resized.
 
 ----
 
@@ -1133,6 +1263,8 @@ The color of the title outline.
 | *Default* | ``36`` |
 +-----------+--------+
 
+Height of the title bar.
+
 ----
 
 .. _class_Window_theme_constant_title_outline_size:
@@ -1151,6 +1283,8 @@ The size of the title outline.
 
 - :ref:`Font<class_Font>` **title_font**
 
+The font used to draw the title.
+
 ----
 
 .. _class_Window_theme_font_size_title_font_size:
@@ -1165,18 +1299,26 @@ The size of the title font.
 
 - :ref:`Texture2D<class_Texture2D>` **close**
 
+The icon for the close button.
+
 ----
 
 .. _class_Window_theme_icon_close_pressed:
 
 - :ref:`Texture2D<class_Texture2D>` **close_pressed**
 
+The icon for the close button when it's being pressed.
+
 ----
 
 .. _class_Window_theme_style_embedded_border:
 
 - :ref:`StyleBox<class_StyleBox>` **embedded_border**
 
+The background style used when the ``Window`` is embedded. Note that this is drawn only under the window's content, excluding the title. For proper borders and title bar style, you can use ``expand_margin_*`` properties of :ref:`StyleBoxFlat<class_StyleBoxFlat>`.
+
+\ **Note:** The content background will not be visible unless :ref:`transparent<class_Window_property_transparent>` is enabled.
+
 .. |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.)`

+ 1 - 1
classes/class_world3d.rst

@@ -93,7 +93,7 @@ The World3D's :ref:`Environment<class_Environment>`.
 | *Getter* | get_fallback_environment()      |
 +----------+---------------------------------+
 
-The World3D's fallback_environment will be used if the World3D's :ref:`Environment<class_Environment>` fails or is missing.
+The World3D's fallback environment will be used if :ref:`environment<class_World3D_property_environment>` fails or is missing.
 
 ----
 

+ 2 - 0
classes/class_worldenvironment.rst

@@ -55,6 +55,8 @@ Property Descriptions
 | *Getter* | get_camera_effects()      |
 +----------+---------------------------+
 
+The :ref:`CameraEffects<class_CameraEffects>` resource used by this ``WorldEnvironment``, defining the default properties. This :ref:`CameraEffects<class_CameraEffects>` resource will be used by all :ref:`Camera3D<class_Camera3D>`\ s that do not define their own :ref:`CameraEffects<class_CameraEffects>`.
+
 ----
 
 .. _class_WorldEnvironment_property_environment:

Niektoré súbory nie sú zobrazené, pretože je v týchto rozdielových dátach zmenené mnoho súborov