Browse Source

classref: Sync with current 3.5 branch (af8a02dd)

Rémi Verschelde 3 years ago
parent
commit
95ae1de7d1
92 changed files with 2116 additions and 372 deletions
  1. 20 15
      classes/[email protected]
  2. 3 3
      classes/[email protected]
  3. 5 5
      classes/class_animatedsprite.rst
  4. 2 0
      classes/class_animationplayer.rst
  5. 2 2
      classes/class_array.rst
  6. 1 1
      classes/class_arraymesh.rst
  7. 5 0
      classes/class_aspectratiocontainer.rst
  8. 1 1
      classes/class_astar.rst
  9. 1 1
      classes/class_astar2d.rst
  10. 6 6
      classes/class_basis.rst
  11. 5 0
      classes/class_boxcontainer.rst
  12. 2 2
      classes/class_camera.rst
  13. 23 3
      classes/class_canvasitem.rst
  14. 5 0
      classes/class_centercontainer.rst
  15. 2 0
      classes/class_collisionpolygon2d.rst
  16. 2 0
      classes/class_collisionshape2d.rst
  17. 5 0
      classes/class_container.rst
  18. 2 2
      classes/class_control.rst
  19. 0 2
      classes/class_cryptokey.rst
  20. 1 1
      classes/class_dictionary.rst
  21. 1 1
      classes/class_editorfilesystem.rst
  22. 27 9
      classes/class_editorspinslider.rst
  23. 7 5
      classes/class_environment.rst
  24. 20 20
      classes/class_filedialog.rst
  25. 108 23
      classes/class_font.rst
  26. 2 2
      classes/class_geometry.rst
  27. 1 1
      classes/class_geometryinstance.rst
  28. 42 5
      classes/class_gradient.rst
  29. 2 2
      classes/class_graphedit.rst
  30. 2 0
      classes/class_gridcontainer.rst
  31. 0 2
      classes/class_hashingcontext.rst
  32. 5 0
      classes/class_hboxcontainer.rst
  33. 5 0
      classes/class_hsplitcontainer.rst
  34. 10 6
      classes/class_httprequest.rst
  35. 2 2
      classes/class_input.rst
  36. 2 0
      classes/class_inputmap.rst
  37. 544 0
      classes/class_label3d.rst
  38. 5 3
      classes/class_line2d.rst
  39. 5 0
      classes/class_margincontainer.rst
  40. 40 0
      classes/class_navigation2dserver.rst
  41. 38 20
      classes/class_navigationagent.rst
  42. 19 1
      classes/class_navigationagent2d.rst
  43. 12 12
      classes/class_navigationmesh.rst
  44. 10 4
      classes/class_navigationmeshgenerator.rst
  45. 15 5
      classes/class_navigationmeshinstance.rst
  46. 10 0
      classes/class_navigationobstacle.rst
  47. 10 0
      classes/class_navigationobstacle2d.rst
  48. 16 0
      classes/class_navigationpolygoninstance.rst
  49. 40 0
      classes/class_navigationserver.rst
  50. 1 1
      classes/class_networkedmultiplayerenet.rst
  51. 5 5
      classes/class_node.rst
  52. 2 2
      classes/class_object.rst
  53. 3 1
      classes/class_optionbutton.rst
  54. 39 13
      classes/class_os.rst
  55. 2 0
      classes/class_panelcontainer.rst
  56. 3 1
      classes/class_polygon2d.rst
  57. 59 1
      classes/class_poolbytearray.rst
  58. 60 2
      classes/class_poolcolorarray.rst
  59. 59 1
      classes/class_poolintarray.rst
  60. 85 27
      classes/class_poolrealarray.rst
  61. 60 2
      classes/class_poolstringarray.rst
  62. 60 2
      classes/class_poolvector2array.rst
  63. 59 1
      classes/class_poolvector3array.rst
  64. 11 1
      classes/class_popupmenu.rst
  65. 1 1
      classes/class_primitivemesh.rst
  66. 2 2
      classes/class_propertytweener.rst
  67. 56 4
      classes/class_proximitygroup.rst
  68. 7 3
      classes/class_richtextlabel.rst
  69. 2 2
      classes/class_rigidbody.rst
  70. 2 2
      classes/class_rigidbody2d.rst
  71. 40 24
      classes/class_scenetree.rst
  72. 4 0
      classes/class_scenetreetween.rst
  73. 5 0
      classes/class_scrollcontainer.rst
  74. 10 2
      classes/class_shape2d.rst
  75. 23 1
      classes/class_spatialmaterial.rst
  76. 5 0
      classes/class_splitcontainer.rst
  77. 94 28
      classes/class_spritebase3d.rst
  78. 5 0
      classes/class_tabcontainer.rst
  79. 176 0
      classes/class_textmesh.rst
  80. 47 47
      classes/class_time.rst
  81. 5 5
      classes/class_transform.rst
  82. 5 5
      classes/class_transform2d.rst
  83. 1 1
      classes/class_tree.rst
  84. 1 1
      classes/class_tween.rst
  85. 2 0
      classes/class_vboxcontainer.rst
  86. 3 3
      classes/class_vector2.rst
  87. 3 3
      classes/class_vector3.rst
  88. 2 2
      classes/class_videostreamgdnative.rst
  89. 8 6
      classes/class_visualserver.rst
  90. 5 0
      classes/class_vsplitcontainer.rst
  91. 1 1
      classes/class_webxrinterface.rst
  92. 0 2
      classes/class_x509certificate.rst

+ 20 - 15
classes/[email protected]

@@ -834,6 +834,8 @@ Similar to :ref:`lerp<class_@GDScript_method_lerp>`, but interpolates correctly
         rotation = lerp_angle(min_angle, max_angle, elapsed)
         elapsed += delta
 
+\ **Note:** This method lerps through the shortest path between ``from`` and ``to``. However, when these two angles are approximately ``PI + k * TAU`` apart for any integer ``k``, it's not obvious which way they lerp due to floating-point precision errors. For example, ``lerp_angle(0, PI, weight)`` lerps counter-clockwise, while ``lerp_angle(0, PI + 5 * TAU, weight)`` lerps clockwise.
+
 ----
 
 .. _class_@GDScript_method_linear2db:
@@ -1178,12 +1180,14 @@ Converts an angle expressed in radians to degrees.
 
 - :ref:`float<class_float>` **rand_range** **(** :ref:`float<class_float>` from, :ref:`float<class_float>` to **)**
 
-Random range, any floating point value between ``from`` and ``to``.
+Returns a random floating point value between ``from`` and ``to`` (both endpoints inclusive).
 
 ::
 
     prints(rand_range(0, 1), rand_range(0, 1)) # Prints e.g. 0.135591 0.405263
 
+\ **Note:** This is equivalent to ``randf() * (to - from) + from``.
+
 ----
 
 .. _class_@GDScript_method_rand_seed:
@@ -1238,33 +1242,34 @@ Randomizes the seed (or the internal state) of the random number generator. Curr
 
 - :ref:`Array<class_Array>` **range** **(** ... **)** |vararg|
 
-Returns an array with the given range. Range can be 1 argument ``N`` (0 to ``N`` - 1), two arguments (``initial``, ``final - 1``) or three arguments (``initial``, ``final - 1``, ``increment``). Returns an empty array if the range isn't valid (e.g. ``range(2, 5, -1)`` or ``range(5, 5, 1)``).
+Returns an array with the given range. :ref:`range<class_@GDScript_method_range>` can be called in three ways:
 
-Returns an array with the given range. ``range()`` can have 1 argument N (``0`` to ``N - 1``), two arguments (``initial``, ``final - 1``) or three arguments (``initial``, ``final - 1``, ``increment``). ``increment`` can be negative. If ``increment`` is negative, ``final - 1`` will become ``final + 1``. Also, the initial value must be greater than the final value for the loop to run.
+\ ``range(n: int)``: Starts from 0, increases by steps of 1, and stops *before* ``n``. The argument ``n`` is **exclusive**.
 
-::
+\ ``range(b: int, n: int)``: Starts from ``b``, increases by steps of 1, and stops *before* ``n``. The arguments ``b`` and ``n`` are **inclusive** and **exclusive**, respectively.
 
-    print(range(4))
-    print(range(2, 5))
-    print(range(0, 6, 2))
+\ ``range(b: int, n: int, s: int)``: Starts from ``b``, increases/decreases by steps of ``s``, and stops *before* ``n``. The arguments ``b`` and ``n`` are **inclusive** and **exclusive**, respectively. The argument ``s`` **can** be negative, but not ``0``. If ``s`` is ``0``, an error message is printed.
 
-Output:
+\ :ref:`range<class_@GDScript_method_range>` converts all arguments to :ref:`int<class_int>` before processing.
+
+\ **Note:** Returns an empty array if no value meets the value constraint (e.g. ``range(2, 5, -1)`` or ``range(5, 5, 1)``).
+
+Examples:
 
 ::
 
-    [0, 1, 2, 3]
-    [2, 3, 4]
-    [0, 2, 4]
+    print(range(4))        # Prints [0, 1, 2, 3]
+    print(range(2, 5))     # Prints [2, 3, 4]
+    print(range(0, 6, 2))  # Prints [0, 2, 4]
+    print(range(4, 1, -1)) # Prints [4, 3, 2]
 
 To iterate over an :ref:`Array<class_Array>` backwards, use:
 
 ::
 
     var array = [3, 6, 9]
-    var i := array.size() - 1
-    while i >= 0:
-        print(array[i])
-        i -= 1
+    for i in range(array.size(), 0, -1):
+        print(array[i - 1])
 
 Output:
 

+ 3 - 3
classes/[email protected]

@@ -1474,11 +1474,11 @@ enum **JoystickList**:
 
 - **JOY_BUTTON_MAX** = **128** --- The maximum number of game controller buttons supported by the engine. The actual limit may be lower on specific platforms:
 
-- Android: Up to 36 buttons.
+	- Android: Up to 36 buttons.
 
-- Linux: Up to 80 buttons.
+	- Linux: Up to 80 buttons.
 
-- Windows and macOS: Up to 128 buttons.
+	- Windows and macOS: Up to 128 buttons.
 
 - **JOY_SONY_CIRCLE** = **1** --- DualShock circle button.
 

+ 5 - 5
classes/class_animatedsprite.rst

@@ -11,14 +11,14 @@ AnimatedSprite
 
 **Inherits:** :ref:`Node2D<class_Node2D>` **<** :ref:`CanvasItem<class_CanvasItem>` **<** :ref:`Node<class_Node>` **<** :ref:`Object<class_Object>`
 
-Sprite node that can use multiple textures for animation.
+Sprite node that contains multiple textures as frames to play for animation.
 
 Description
 -----------
 
-Animations are created using a :ref:`SpriteFrames<class_SpriteFrames>` resource, which can be configured in the editor via the SpriteFrames panel.
+``AnimatedSprite`` is similar to the :ref:`Sprite<class_Sprite>` node, except it carries multiple textures as animation frames. Animations are created using a :ref:`SpriteFrames<class_SpriteFrames>` resource, which allows you to import image files (or a folder containing said files) to provide the animation frames for the sprite. The :ref:`SpriteFrames<class_SpriteFrames>` resource can be configured in the editor via the SpriteFrames bottom panel.
 
-\ **Note:** You can associate a set of normal maps by creating additional :ref:`SpriteFrames<class_SpriteFrames>` resources with a ``_normal`` suffix. For example, having 2 :ref:`SpriteFrames<class_SpriteFrames>` resources ``run`` and ``run_normal`` will make it so the ``run`` animation uses the normal map.
+\ **Note:** You can associate a set of normal or specular maps by creating additional :ref:`SpriteFrames<class_SpriteFrames>` resources with a ``_normal`` or ``_specular`` suffix. For example, having 3 :ref:`SpriteFrames<class_SpriteFrames>` resources ``run``, ``run_normal``, and ``run_specular`` will make it so the ``run`` animation uses normal and specular maps.
 
 Tutorials
 ---------
@@ -91,7 +91,7 @@ Property Descriptions
 | *Getter*  | get_animation()      |
 +-----------+----------------------+
 
-The current animation from the ``frames`` resource. If this value changes, the ``frame`` counter is reset.
+The current animation from the :ref:`frames<class_AnimatedSprite_property_frames>` resource. If this value changes, the ``frame`` counter is reset.
 
 ----
 
@@ -169,7 +169,7 @@ The displayed animation frame's index.
 | *Getter* | get_sprite_frames()      |
 +----------+--------------------------+
 
-The :ref:`SpriteFrames<class_SpriteFrames>` resource containing the animation(s).
+The :ref:`SpriteFrames<class_SpriteFrames>` resource containing the animation(s). Allows you the option to load, edit, clear, make unique and save the states of the :ref:`SpriteFrames<class_SpriteFrames>` resource.
 
 ----
 

+ 2 - 0
classes/class_animationplayer.rst

@@ -531,6 +531,8 @@ Renames an existing animation with key ``name`` to ``newname``.
 
 Seeks the animation to the ``seconds`` point in time (in seconds). If ``update`` is ``true``, the animation updates too, otherwise it updates at process time. Events between the current frame and ``seconds`` are skipped.
 
+\ **Note:** Seeking to the end of the animation doesn't emit :ref:`animation_finished<class_AnimationPlayer_signal_animation_finished>`. If you want to skip animation and emit the signal, use :ref:`advance<class_AnimationPlayer_method_advance>`.
+
 ----
 
 .. _class_AnimationPlayer_method_set_blend_time:

+ 2 - 2
classes/class_array.rst

@@ -313,7 +313,7 @@ Assigns the given value to all elements in the array. This can typically be used
 
 - :ref:`int<class_int>` **find** **(** :ref:`Variant<class_Variant>` what, :ref:`int<class_int>` from=0 **)**
 
-Searches the array for a value and returns its index or ``-1`` if not found. Optionally, the initial search index can be passed.
+Searches the array for a value and returns its index or ``-1`` if not found. Optionally, the initial search index can be passed. Returns ``-1`` if ``from`` is out of bounds.
 
 ----
 
@@ -474,7 +474,7 @@ Resizes the array to contain a different number of elements. If the array size i
 
 - :ref:`int<class_int>` **rfind** **(** :ref:`Variant<class_Variant>` what, :ref:`int<class_int>` from=-1 **)**
 
-Searches the array in reverse order. Optionally, a start search index can be passed. If negative, the start index is considered relative to the end of the array.
+Searches the array in reverse order. Optionally, a start search index can be passed. If negative, the start index is considered relative to the end of the array. If the adjusted start index is out of bounds, this method searches from the end of the array.
 
 ----
 

+ 1 - 1
classes/class_arraymesh.rst

@@ -195,7 +195,7 @@ Constants
 
 .. _class_ArrayMesh_constant_ARRAY_WEIGHTS_SIZE:
 
-- **NO_INDEX_ARRAY** = **-1** --- Default value used for index_array_len when no indices are present.
+- **NO_INDEX_ARRAY** = **-1** --- Value used internally when no indices are present.
 
 - **ARRAY_WEIGHTS_SIZE** = **4** --- Amount of weights/bone indices per vertex (always 4).
 

+ 5 - 0
classes/class_aspectratiocontainer.rst

@@ -18,6 +18,11 @@ Description
 
 Arranges child controls in a way to preserve their aspect ratio automatically whenever the container is resized. Solves the problem where the container size is dynamic and the contents' size needs to adjust accordingly without losing proportions.
 
+Tutorials
+---------
+
+- :doc:`GUI containers <../tutorials/ui/gui_containers>`
+
 Properties
 ----------
 

+ 1 - 1
classes/class_astar.rst

@@ -119,7 +119,7 @@ Note that this function is hidden in the default ``AStar`` class.
 
 - void **add_point** **(** :ref:`int<class_int>` id, :ref:`Vector3<class_Vector3>` position, :ref:`float<class_float>` weight_scale=1.0 **)**
 
-Adds a new point at the given position with the given identifier. The ``id`` must be 0 or larger, and the ``weight_scale`` must be 1 or larger.
+Adds a new point at the given position with the given identifier. The ``id`` must be 0 or larger, and the ``weight_scale`` must be 0.0 or greater.
 
 The ``weight_scale`` is multiplied by the result of :ref:`_compute_cost<class_AStar_method__compute_cost>` when determining the overall cost of traveling across a segment from a neighboring point to this point. Thus, all else being equal, the algorithm prefers points with lower ``weight_scale``\ s to form a path.
 

+ 1 - 1
classes/class_astar2d.rst

@@ -100,7 +100,7 @@ Note that this function is hidden in the default ``AStar2D`` class.
 
 - void **add_point** **(** :ref:`int<class_int>` id, :ref:`Vector2<class_Vector2>` position, :ref:`float<class_float>` weight_scale=1.0 **)**
 
-Adds a new point at the given position with the given identifier. The ``id`` must be 0 or larger, and the ``weight_scale`` must be 1 or larger.
+Adds a new point at the given position with the given identifier. The ``id`` must be 0 or larger, and the ``weight_scale`` must be 0.0 or greater.
 
 The ``weight_scale`` is multiplied by the result of :ref:`_compute_cost<class_AStar2D_method__compute_cost>` when determining the overall cost of traveling across a segment from a neighboring point to this point. Thus, all else being equal, the algorithm prefers points with lower ``weight_scale``\ s to form a path.
 

+ 6 - 6
classes/class_basis.rst

@@ -58,7 +58,7 @@ Methods
 +-------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------+
 | :ref:`Basis<class_Basis>`     | :ref:`Basis<class_Basis_method_Basis>` **(** :ref:`Vector3<class_Vector3>` from **)**                                                                               |
 +-------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`Basis<class_Basis>`     | :ref:`Basis<class_Basis_method_Basis>` **(** :ref:`Vector3<class_Vector3>` axis, :ref:`float<class_float>` phi **)**                                                |
+| :ref:`Basis<class_Basis>`     | :ref:`Basis<class_Basis_method_Basis>` **(** :ref:`Vector3<class_Vector3>` axis, :ref:`float<class_float>` angle **)**                                              |
 +-------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------+
 | :ref:`Basis<class_Basis>`     | :ref:`Basis<class_Basis_method_Basis>` **(** :ref:`Vector3<class_Vector3>` x_axis, :ref:`Vector3<class_Vector3>` y_axis, :ref:`Vector3<class_Vector3>` z_axis **)** |
 +-------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------+
@@ -78,7 +78,7 @@ Methods
 +-------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------+
 | :ref:`Basis<class_Basis>`     | :ref:`orthonormalized<class_Basis_method_orthonormalized>` **(** **)**                                                                                              |
 +-------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`Basis<class_Basis>`     | :ref:`rotated<class_Basis_method_rotated>` **(** :ref:`Vector3<class_Vector3>` axis, :ref:`float<class_float>` phi **)**                                            |
+| :ref:`Basis<class_Basis>`     | :ref:`rotated<class_Basis_method_rotated>` **(** :ref:`Vector3<class_Vector3>` axis, :ref:`float<class_float>` angle **)**                                          |
 +-------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------+
 | :ref:`Basis<class_Basis>`     | :ref:`scaled<class_Basis_method_scaled>` **(** :ref:`Vector3<class_Vector3>` scale **)**                                                                            |
 +-------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------+
@@ -174,9 +174,9 @@ Consider using the :ref:`Quat<class_Quat>` constructor instead, which uses a qua
 
 ----
 
-- :ref:`Basis<class_Basis>` **Basis** **(** :ref:`Vector3<class_Vector3>` axis, :ref:`float<class_float>` phi **)**
+- :ref:`Basis<class_Basis>` **Basis** **(** :ref:`Vector3<class_Vector3>` axis, :ref:`float<class_float>` angle **)**
 
-Constructs a pure rotation basis matrix, rotated around the given ``axis`` by ``phi``, in radians. The axis must be a normalized vector.
+Constructs a pure rotation basis matrix, rotated around the given ``axis`` by ``angle`` (in radians). The axis must be a normalized vector.
 
 ----
 
@@ -258,9 +258,9 @@ Returns the orthonormalized version of the matrix (useful to call from time to t
 
 .. _class_Basis_method_rotated:
 
-- :ref:`Basis<class_Basis>` **rotated** **(** :ref:`Vector3<class_Vector3>` axis, :ref:`float<class_float>` phi **)**
+- :ref:`Basis<class_Basis>` **rotated** **(** :ref:`Vector3<class_Vector3>` axis, :ref:`float<class_float>` angle **)**
 
-Introduce an additional rotation around the given axis by phi (radians). The axis must be a normalized vector.
+Introduce an additional rotation around the given axis by ``angle`` (in radians). The axis must be a normalized vector.
 
 ----
 

+ 5 - 0
classes/class_boxcontainer.rst

@@ -20,6 +20,11 @@ Description
 
 Arranges child controls vertically or horizontally, and rearranges the controls automatically when their minimum size changes.
 
+Tutorials
+---------
+
+- :doc:`GUI containers <../tutorials/ui/gui_containers>`
+
 Properties
 ----------
 

+ 2 - 2
classes/class_camera.rst

@@ -444,7 +444,7 @@ Returns the 3D point in world space that maps to the given 2D coordinate in the
 
 - :ref:`Vector3<class_Vector3>` **project_ray_normal** **(** :ref:`Vector2<class_Vector2>` screen_point **)** |const|
 
-Returns a normal vector in world space, that is the result of projecting a point on the :ref:`Viewport<class_Viewport>` rectangle by the camera projection. This is useful for casting rays in the form of (origin, normal) for object intersection or picking.
+Returns a normal vector in world space, that is the result of projecting a point on the :ref:`Viewport<class_Viewport>` rectangle by the inverse camera projection. This is useful for casting rays in the form of (origin, normal) for object intersection or picking.
 
 ----
 
@@ -452,7 +452,7 @@ Returns a normal vector in world space, that is the result of projecting a point
 
 - :ref:`Vector3<class_Vector3>` **project_ray_origin** **(** :ref:`Vector2<class_Vector2>` screen_point **)** |const|
 
-Returns a 3D position in world space, that is the result of projecting a point on the :ref:`Viewport<class_Viewport>` rectangle by the camera projection. This is useful for casting rays in the form of (origin, normal) for object intersection or picking.
+Returns a 3D position in world space, that is the result of projecting a point on the :ref:`Viewport<class_Viewport>` rectangle by the inverse camera projection. This is useful for casting rays in the form of (origin, normal) for object intersection or picking.
 
 ----
 

+ 23 - 3
classes/class_canvasitem.rst

@@ -386,6 +386,10 @@ Overridable function called by the engine (if defined) to draw the canvas item.
 
 Draws a unfilled arc between the given angles. The larger the value of ``point_count``, the smoother the curve. See also :ref:`draw_circle<class_CanvasItem_method_draw_circle>`.
 
+\ **Note:** Line drawing is not accelerated by batching if ``antialiased`` is ``true``.
+
+\ **Note:** Due to how it works, built-in antialiasing will not look correct for translucent lines and may not work on certain platforms. As a workaround, install the `Antialiased Line2D <https://github.com/godot-extended-libraries/godot-antialiased-line2d>`__ add-on then create an AntialiasedRegularPolygon2D node. That node relies on a texture with custom mipmaps to perform antialiasing. 2D batching is also still supported with those antialiased lines.
+
 ----
 
 .. _class_CanvasItem_method_draw_char:
@@ -402,6 +406,8 @@ Draws a string character using a custom font. Returns the advance, depending on
 
 Draws a colored, unfilled circle. See also :ref:`draw_arc<class_CanvasItem_method_draw_arc>`, :ref:`draw_polyline<class_CanvasItem_method_draw_polyline>` and :ref:`draw_polygon<class_CanvasItem_method_draw_polygon>`.
 
+\ **Note:** Built-in antialiasing is not provided for :ref:`draw_circle<class_CanvasItem_method_draw_circle>`. As a workaround, install the `Antialiased Line2D <https://github.com/godot-extended-libraries/godot-antialiased-line2d>`__ add-on then create an AntialiasedRegularPolygon2D node. That node relies on a texture with custom mipmaps to perform antialiasing.
+
 ----
 
 .. _class_CanvasItem_method_draw_colored_polygon:
@@ -410,6 +416,8 @@ Draws a colored, unfilled circle. See also :ref:`draw_arc<class_CanvasItem_metho
 
 Draws a colored polygon of any amount of points, convex or concave. Unlike :ref:`draw_polygon<class_CanvasItem_method_draw_polygon>`, a single color must be specified for the whole polygon.
 
+\ **Note:** Due to how it works, built-in antialiasing will not look correct for translucent polygons and may not work on certain platforms. As a workaround, install the `Antialiased Line2D <https://github.com/godot-extended-libraries/godot-antialiased-line2d>`__ add-on then create an AntialiasedPolygon2D node. That node relies on a texture with custom mipmaps to perform antialiasing.
+
 ----
 
 .. _class_CanvasItem_method_draw_line:
@@ -418,6 +426,10 @@ Draws a colored polygon of any amount of points, convex or concave. Unlike :ref:
 
 Draws a line from a 2D point to another, with a given color and width. It can be optionally antialiased. See also :ref:`draw_multiline<class_CanvasItem_method_draw_multiline>` and :ref:`draw_polyline<class_CanvasItem_method_draw_polyline>`.
 
+\ **Note:** Line drawing is not accelerated by batching if ``antialiased`` is ``true``.
+
+\ **Note:** Due to how it works, built-in antialiasing will not look correct for translucent lines and may not work on certain platforms. As a workaround, install the `Antialiased Line2D <https://github.com/godot-extended-libraries/godot-antialiased-line2d>`__ add-on then create an AntialiasedLine2D node. That node relies on a texture with custom mipmaps to perform antialiasing. 2D batching is also still supported with those antialiased lines.
+
 ----
 
 .. _class_CanvasItem_method_draw_mesh:
@@ -434,7 +446,7 @@ Draws a :ref:`Mesh<class_Mesh>` in 2D, using the provided texture. See :ref:`Mes
 
 Draws multiple disconnected lines with a uniform ``color``. When drawing large amounts of lines, this is faster than using individual :ref:`draw_line<class_CanvasItem_method_draw_line>` calls. To draw interconnected lines, use :ref:`draw_polyline<class_CanvasItem_method_draw_polyline>` instead.
 
-\ **Note:** ``width`` and ``antialiased`` are currently not implemented and have no effect.
+\ **Note:** ``width`` and ``antialiased`` are currently not implemented and have no effect. As a workaround, install the `Antialiased Line2D <https://github.com/godot-extended-libraries/godot-antialiased-line2d>`__ add-on then create an AntialiasedLine2D node. That node relies on a texture with custom mipmaps to perform antialiasing. 2D batching is also still supported with those antialiased lines.
 
 ----
 
@@ -444,7 +456,7 @@ Draws multiple disconnected lines with a uniform ``color``. When drawing large a
 
 Draws multiple disconnected lines with a uniform ``width`` and segment-by-segment coloring. Colors assigned to line segments match by index between ``points`` and ``colors``. When drawing large amounts of lines, this is faster than using individual :ref:`draw_line<class_CanvasItem_method_draw_line>` calls. To draw interconnected lines, use :ref:`draw_polyline_colors<class_CanvasItem_method_draw_polyline_colors>` instead.
 
-\ **Note:** ``width`` and ``antialiased`` are currently not implemented and have no effect.
+\ **Note:** ``width`` and ``antialiased`` are currently not implemented and have no effect. As a workaround, install the `Antialiased Line2D <https://github.com/godot-extended-libraries/godot-antialiased-line2d>`__ add-on then create an AntialiasedLine2D node. That node relies on a texture with custom mipmaps to perform antialiasing. 2D batching is also still supported with those antialiased lines.
 
 ----
 
@@ -462,6 +474,8 @@ Draws a :ref:`MultiMesh<class_MultiMesh>` in 2D with the provided texture. See :
 
 Draws a solid polygon of any amount of points, convex or concave. Unlike :ref:`draw_colored_polygon<class_CanvasItem_method_draw_colored_polygon>`, each point's color can be changed individually. See also :ref:`draw_polyline<class_CanvasItem_method_draw_polyline>` and :ref:`draw_polyline_colors<class_CanvasItem_method_draw_polyline_colors>`.
 
+\ **Note:** Due to how it works, built-in antialiasing will not look correct for translucent polygons and may not work on certain platforms. As a workaround, install the `Antialiased Line2D <https://github.com/godot-extended-libraries/godot-antialiased-line2d>`__ add-on then create an AntialiasedPolygon2D node. That node relies on a texture with custom mipmaps to perform antialiasing.
+
 ----
 
 .. _class_CanvasItem_method_draw_polyline:
@@ -470,6 +484,8 @@ Draws a solid polygon of any amount of points, convex or concave. Unlike :ref:`d
 
 Draws interconnected line segments with a uniform ``color`` and ``width`` and optional antialiasing. When drawing large amounts of lines, this is faster than using individual :ref:`draw_line<class_CanvasItem_method_draw_line>` calls. To draw disconnected lines, use :ref:`draw_multiline<class_CanvasItem_method_draw_multiline>` instead. See also :ref:`draw_polygon<class_CanvasItem_method_draw_polygon>`.
 
+\ **Note:** Due to how it works, built-in antialiasing will not look correct for translucent polygons and may not work on certain platforms. As a workaround, install the `Antialiased Line2D <https://github.com/godot-extended-libraries/godot-antialiased-line2d>`__ add-on then create an AntialiasedPolygon2D node. That node relies on a texture with custom mipmaps to perform antialiasing.
+
 ----
 
 .. _class_CanvasItem_method_draw_polyline_colors:
@@ -478,6 +494,8 @@ Draws interconnected line segments with a uniform ``color`` and ``width`` and op
 
 Draws interconnected line segments with a uniform ``width`` and segment-by-segment coloring, and optional antialiasing. Colors assigned to line segments match by index between ``points`` and ``colors``. When drawing large amounts of lines, this is faster than using individual :ref:`draw_line<class_CanvasItem_method_draw_line>` calls. To draw disconnected lines, use :ref:`draw_multiline_colors<class_CanvasItem_method_draw_multiline_colors>` instead. See also :ref:`draw_polygon<class_CanvasItem_method_draw_polygon>`.
 
+\ **Note:** Due to how it works, built-in antialiasing will not look correct for translucent polygons and may not work on certain platforms. As a workaround, install the `Antialiased Line2D <https://github.com/godot-extended-libraries/godot-antialiased-line2d>`__ add-on then create an AntialiasedPolygon2D node. That node relies on a texture with custom mipmaps to perform antialiasing.
+
 ----
 
 .. _class_CanvasItem_method_draw_primitive:
@@ -492,10 +510,12 @@ Draws a custom primitive. 1 point for a point, 2 points for a line, 3 points for
 
 - void **draw_rect** **(** :ref:`Rect2<class_Rect2>` rect, :ref:`Color<class_Color>` color, :ref:`bool<class_bool>` filled=true, :ref:`float<class_float>` width=1.0, :ref:`bool<class_bool>` antialiased=false **)**
 
-Draws a rectangle. If ``filled`` is ``true``, the rectangle will be filled with the ``color`` specified. If ``filled`` is ``false``, the rectangle will be drawn as a stroke with the ``color`` and ``width`` specified. If ``antialiased`` is ``true``, the lines will be antialiased.
+Draws a rectangle. If ``filled`` is ``true``, the rectangle will be filled with the ``color`` specified. If ``filled`` is ``false``, the rectangle will be drawn as a stroke with the ``color`` and ``width`` specified. If ``antialiased`` is ``true``, the lines will attempt to perform antialiasing using OpenGL line smoothing.
 
 \ **Note:** ``width`` and ``antialiased`` are only effective if ``filled`` is ``false``.
 
+\ **Note:** Due to how it works, built-in antialiasing will not look correct for translucent polygons and may not work on certain platforms. As a workaround, install the `Antialiased Line2D <https://github.com/godot-extended-libraries/godot-antialiased-line2d>`__ add-on then create an AntialiasedPolygon2D node. That node relies on a texture with custom mipmaps to perform antialiasing.
+
 ----
 
 .. _class_CanvasItem_method_draw_set_transform:

+ 5 - 0
classes/class_centercontainer.rst

@@ -18,6 +18,11 @@ Description
 
 CenterContainer keeps children controls centered. This container keeps all children to their minimum size, in the center.
 
+Tutorials
+---------
+
+- :doc:`GUI containers <../tutorials/ui/gui_containers>`
+
 Properties
 ----------
 

+ 2 - 0
classes/class_collisionpolygon2d.rst

@@ -97,6 +97,8 @@ If ``true``, no collisions will be detected.
 
 If ``true``, only edges that face up, relative to ``CollisionPolygon2D``'s rotation, will collide with other objects.
 
+\ **Note:** This property has no effect if this ``CollisionPolygon2D`` is a child of an :ref:`Area2D<class_Area2D>` node.
+
 ----
 
 .. _class_CollisionPolygon2D_property_one_way_collision_margin:

+ 2 - 0
classes/class_collisionshape2d.rst

@@ -75,6 +75,8 @@ A disabled collision shape has no effect in the world. This property should be c
 
 Sets whether this collision shape should only detect collision on one side (top or bottom).
 
+\ **Note:** This property has no effect if this ``CollisionShape2D`` is a child of an :ref:`Area2D<class_Area2D>` node.
+
 ----
 
 .. _class_CollisionShape2D_property_one_way_collision_margin:

+ 5 - 0
classes/class_container.rst

@@ -22,6 +22,11 @@ Base node for containers. A ``Container`` contains other controls and automatica
 
 A Control can inherit this to create custom container classes.
 
+Tutorials
+---------
+
+- :doc:`GUI containers <../tutorials/ui/gui_containers>`
+
 Methods
 -------
 

+ 2 - 2
classes/class_control.rst

@@ -433,9 +433,9 @@ enum **CursorShape**:
 
 - **CURSOR_CROSS** = **3** --- Show the system's cross mouse cursor when the user hovers the node.
 
-- **CURSOR_WAIT** = **4** --- Show the system's wait mouse cursor, often an hourglass, when the user hovers the node.
+- **CURSOR_WAIT** = **4** --- Show the system's wait mouse cursor when the user hovers the node. Often an hourglass.
 
-- **CURSOR_BUSY** = **5** --- Show the system's busy mouse cursor when the user hovers the node. Often an hourglass.
+- **CURSOR_BUSY** = **5** --- Show the system's busy mouse cursor when the user hovers the node. Often an arrow with a small hourglass.
 
 - **CURSOR_DRAG** = **6** --- Show the system's drag mouse cursor, often a closed fist or a cross symbol, when the user hovers the node. It tells the user they're currently dragging an item, like a node in the Scene dock.
 

+ 0 - 2
classes/class_cryptokey.rst

@@ -20,8 +20,6 @@ The CryptoKey class represents a cryptographic key. Keys can be loaded and saved
 
 They can be used to generate a self-signed :ref:`X509Certificate<class_X509Certificate>` via :ref:`Crypto.generate_self_signed_certificate<class_Crypto_method_generate_self_signed_certificate>` and as private key in :ref:`StreamPeerSSL.accept_stream<class_StreamPeerSSL_method_accept_stream>` along with the appropriate certificate.
 
-\ **Note:** Not available in HTML5 exports.
-
 Methods
 -------
 

+ 1 - 1
classes/class_dictionary.rst

@@ -49,7 +49,7 @@ You can access a dictionary's values by referencing the appropriate key. In the
 
 ::
 
-    export(string, "White", "Yellow", "Orange") var my_color
+    export(String, "White", "Yellow", "Orange") var my_color
     var points_dict = {"White": 50, "Yellow": 75, "Orange": 100}
     func _ready():
         # We can't use dot syntax here as `my_color` is a variable.

+ 1 - 1
classes/class_editorfilesystem.rst

@@ -115,7 +115,7 @@ Returns the scan progress for 0 to 1 if the FS is being scanned.
 
 - :ref:`bool<class_bool>` **is_scanning** **(** **)** |const|
 
-Returns ``true`` of the filesystem is being scanned.
+Returns ``true`` if the filesystem is being scanned.
 
 ----
 

+ 27 - 9
classes/class_editorspinslider.rst

@@ -21,15 +21,17 @@ This :ref:`Control<class_Control>` node is used in the editor's Inspector dock t
 Properties
 ----------
 
-+------------------------------------------+-------------------------------------------------------------+---------------------------------------------------------------------+
-| :ref:`bool<class_bool>`                  | :ref:`flat<class_EditorSpinSlider_property_flat>`           | ``false``                                                           |
-+------------------------------------------+-------------------------------------------------------------+---------------------------------------------------------------------+
-| :ref:`FocusMode<enum_Control_FocusMode>` | focus_mode                                                  | ``2`` (overrides :ref:`Control<class_Control_property_focus_mode>`) |
-+------------------------------------------+-------------------------------------------------------------+---------------------------------------------------------------------+
-| :ref:`String<class_String>`              | :ref:`label<class_EditorSpinSlider_property_label>`         | ``""``                                                              |
-+------------------------------------------+-------------------------------------------------------------+---------------------------------------------------------------------+
-| :ref:`bool<class_bool>`                  | :ref:`read_only<class_EditorSpinSlider_property_read_only>` | ``false``                                                           |
-+------------------------------------------+-------------------------------------------------------------+---------------------------------------------------------------------+
++------------------------------------------+-----------------------------------------------------------------+---------------------------------------------------------------------+
+| :ref:`bool<class_bool>`                  | :ref:`flat<class_EditorSpinSlider_property_flat>`               | ``false``                                                           |
++------------------------------------------+-----------------------------------------------------------------+---------------------------------------------------------------------+
+| :ref:`FocusMode<enum_Control_FocusMode>` | focus_mode                                                      | ``2`` (overrides :ref:`Control<class_Control_property_focus_mode>`) |
++------------------------------------------+-----------------------------------------------------------------+---------------------------------------------------------------------+
+| :ref:`bool<class_bool>`                  | :ref:`hide_slider<class_EditorSpinSlider_property_hide_slider>` | ``false``                                                           |
++------------------------------------------+-----------------------------------------------------------------+---------------------------------------------------------------------+
+| :ref:`String<class_String>`              | :ref:`label<class_EditorSpinSlider_property_label>`             | ``""``                                                              |
++------------------------------------------+-----------------------------------------------------------------+---------------------------------------------------------------------+
+| :ref:`bool<class_bool>`                  | :ref:`read_only<class_EditorSpinSlider_property_read_only>`     | ``false``                                                           |
++------------------------------------------+-----------------------------------------------------------------+---------------------------------------------------------------------+
 
 Property Descriptions
 ---------------------
@@ -48,6 +50,22 @@ Property Descriptions
 
 ----
 
+.. _class_EditorSpinSlider_property_hide_slider:
+
+- :ref:`bool<class_bool>` **hide_slider**
+
++-----------+------------------------+
+| *Default* | ``false``              |
++-----------+------------------------+
+| *Setter*  | set_hide_slider(value) |
++-----------+------------------------+
+| *Getter*  | is_hiding_slider()     |
++-----------+------------------------+
+
+If ``true``, the slider is hidden.
+
+----
+
 .. _class_EditorSpinSlider_property_label:
 
 - :ref:`String<class_String>` **label**

+ 7 - 5
classes/class_environment.rst

@@ -312,15 +312,17 @@ enum **GlowBlendMode**:
 
 enum **ToneMapper**:
 
-- **TONE_MAPPER_LINEAR** = **0** --- Linear tonemapper operator. Reads the linear data and passes it on unmodified.
+- **TONE_MAPPER_LINEAR** = **0** --- Linear tonemapper operator. Reads the linear data and passes it on unmodified. This can cause bright lighting to look blown out, with noticeable clipping in the output colors.
 
-- **TONE_MAPPER_REINHARDT** = **1** --- Reinhardt tonemapper operator. Performs a variation on rendered pixels' colors by this formula: ``color = color / (1 + color)``.
+- **TONE_MAPPER_REINHARDT** = **1** --- Reinhardt tonemapper operator. Performs a variation on rendered pixels' colors by this formula: ``color = color / (1 + color)``. This avoids clipping bright highlights, but the resulting image can look a bit dull.
 
-- **TONE_MAPPER_FILMIC** = **2** --- Filmic tonemapper operator.
+- **TONE_MAPPER_FILMIC** = **2** --- Filmic tonemapper operator. This avoids clipping bright highlights, with a resulting image that usually looks more vivid than :ref:`TONE_MAPPER_REINHARDT<class_Environment_constant_TONE_MAPPER_REINHARDT>`.
 
-- **TONE_MAPPER_ACES** = **3** --- Academy Color Encoding System tonemapper operator. Performs an approximation of the ACES tonemapping curve.
+- **TONE_MAPPER_ACES** = **3** --- Use the legacy Godot version of the Academy Color Encoding System tonemapper. Unlike :ref:`TONE_MAPPER_ACES_FITTED<class_Environment_constant_TONE_MAPPER_ACES_FITTED>`, this version of ACES does not handle bright lighting in a physically accurate way. ACES typically has a more contrasted output compared to :ref:`TONE_MAPPER_REINHARDT<class_Environment_constant_TONE_MAPPER_REINHARDT>` and :ref:`TONE_MAPPER_FILMIC<class_Environment_constant_TONE_MAPPER_FILMIC>`.
 
-- **TONE_MAPPER_ACES_FITTED** = **4** --- High quality Academy Color Encoding System tonemapper operator that matches the industry standard. Performs a more physically accurate curve fit which better simulates how light works in the real world. The color of lights and emissive materials will become lighter as the emissive energy increases, and will eventually become white if the light is bright enough to saturate the camera sensor.
+\ **Note:** This tonemapping operator will be removed in Godot 4.0 in favor of the more accurate :ref:`TONE_MAPPER_ACES_FITTED<class_Environment_constant_TONE_MAPPER_ACES_FITTED>`.
+
+- **TONE_MAPPER_ACES_FITTED** = **4** --- Use the Academy Color Encoding System tonemapper. ACES is slightly more expensive than other options, but it handles bright lighting in a more realistic fashion by desaturating it as it becomes brighter. ACES typically has a more contrasted output compared to :ref:`TONE_MAPPER_REINHARDT<class_Environment_constant_TONE_MAPPER_REINHARDT>` and :ref:`TONE_MAPPER_FILMIC<class_Environment_constant_TONE_MAPPER_FILMIC>`.
 
 ----
 

+ 20 - 20
classes/class_filedialog.rst

@@ -63,23 +63,23 @@ Methods
 Theme Properties
 ----------------
 
-+-------------------------------+--------------------------------------------------------------------------------+---------------------------+
-| :ref:`Color<class_Color>`     | :ref:`file_icon_modulate<class_FileDialog_theme_color_file_icon_modulate>`     | ``Color( 1, 1, 1, 1 )``   |
-+-------------------------------+--------------------------------------------------------------------------------+---------------------------+
-| :ref:`Color<class_Color>`     | :ref:`files_disabled<class_FileDialog_theme_color_files_disabled>`             | ``Color( 0, 0, 0, 0.7 )`` |
-+-------------------------------+--------------------------------------------------------------------------------+---------------------------+
-| :ref:`Color<class_Color>`     | :ref:`folder_icon_modulate<class_FileDialog_theme_color_folder_icon_modulate>` | ``Color( 1, 1, 1, 1 )``   |
-+-------------------------------+--------------------------------------------------------------------------------+---------------------------+
-| :ref:`Texture<class_Texture>` | :ref:`file<class_FileDialog_theme_icon_file>`                                  |                           |
-+-------------------------------+--------------------------------------------------------------------------------+---------------------------+
-| :ref:`Texture<class_Texture>` | :ref:`folder<class_FileDialog_theme_icon_folder>`                              |                           |
-+-------------------------------+--------------------------------------------------------------------------------+---------------------------+
-| :ref:`Texture<class_Texture>` | :ref:`parent_folder<class_FileDialog_theme_icon_parent_folder>`                |                           |
-+-------------------------------+--------------------------------------------------------------------------------+---------------------------+
-| :ref:`Texture<class_Texture>` | :ref:`reload<class_FileDialog_theme_icon_reload>`                              |                           |
-+-------------------------------+--------------------------------------------------------------------------------+---------------------------+
-| :ref:`Texture<class_Texture>` | :ref:`toggle_hidden<class_FileDialog_theme_icon_toggle_hidden>`                |                           |
-+-------------------------------+--------------------------------------------------------------------------------+---------------------------+
++-------------------------------+--------------------------------------------------------------------------------+----------------------------+
+| :ref:`Color<class_Color>`     | :ref:`file_icon_modulate<class_FileDialog_theme_color_file_icon_modulate>`     | ``Color( 1, 1, 1, 1 )``    |
++-------------------------------+--------------------------------------------------------------------------------+----------------------------+
+| :ref:`Color<class_Color>`     | :ref:`files_disabled<class_FileDialog_theme_color_files_disabled>`             | ``Color( 1, 1, 1, 0.25 )`` |
++-------------------------------+--------------------------------------------------------------------------------+----------------------------+
+| :ref:`Color<class_Color>`     | :ref:`folder_icon_modulate<class_FileDialog_theme_color_folder_icon_modulate>` | ``Color( 1, 1, 1, 1 )``    |
++-------------------------------+--------------------------------------------------------------------------------+----------------------------+
+| :ref:`Texture<class_Texture>` | :ref:`file<class_FileDialog_theme_icon_file>`                                  |                            |
++-------------------------------+--------------------------------------------------------------------------------+----------------------------+
+| :ref:`Texture<class_Texture>` | :ref:`folder<class_FileDialog_theme_icon_folder>`                              |                            |
++-------------------------------+--------------------------------------------------------------------------------+----------------------------+
+| :ref:`Texture<class_Texture>` | :ref:`parent_folder<class_FileDialog_theme_icon_parent_folder>`                |                            |
++-------------------------------+--------------------------------------------------------------------------------+----------------------------+
+| :ref:`Texture<class_Texture>` | :ref:`reload<class_FileDialog_theme_icon_reload>`                              |                            |
++-------------------------------+--------------------------------------------------------------------------------+----------------------------+
+| :ref:`Texture<class_Texture>` | :ref:`toggle_hidden<class_FileDialog_theme_icon_toggle_hidden>`                |                            |
++-------------------------------+--------------------------------------------------------------------------------+----------------------------+
 
 Signals
 -------
@@ -352,9 +352,9 @@ The color modulation applied to the file icon.
 
 - :ref:`Color<class_Color>` **files_disabled**
 
-+-----------+---------------------------+
-| *Default* | ``Color( 0, 0, 0, 0.7 )`` |
-+-----------+---------------------------+
++-----------+----------------------------+
+| *Default* | ``Color( 1, 1, 1, 0.25 )`` |
++-----------+----------------------------+
 
 The color tint for disabled files (when the ``FileDialog`` is used in open folder mode).
 

+ 108 - 23
classes/class_font.rst

@@ -29,29 +29,60 @@ Font contains a Unicode-compatible character set, as well as the ability to draw
 Methods
 -------
 
-+-------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| void                          | :ref:`draw<class_Font_method_draw>` **(** :ref:`RID<class_RID>` canvas_item, :ref:`Vector2<class_Vector2>` position, :ref:`String<class_String>` string, :ref:`Color<class_Color>` modulate=Color( 1, 1, 1, 1 ), :ref:`int<class_int>` clip_w=-1, :ref:`Color<class_Color>` outline_modulate=Color( 1, 1, 1, 1 ) **)** |const| |
-+-------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`float<class_float>`     | :ref:`draw_char<class_Font_method_draw_char>` **(** :ref:`RID<class_RID>` canvas_item, :ref:`Vector2<class_Vector2>` position, :ref:`int<class_int>` char, :ref:`int<class_int>` next=-1, :ref:`Color<class_Color>` modulate=Color( 1, 1, 1, 1 ), :ref:`bool<class_bool>` outline=false **)** |const|                          |
-+-------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`float<class_float>`     | :ref:`get_ascent<class_Font_method_get_ascent>` **(** **)** |const|                                                                                                                                                                                                                                                            |
-+-------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`Vector2<class_Vector2>` | :ref:`get_char_size<class_Font_method_get_char_size>` **(** :ref:`int<class_int>` char, :ref:`int<class_int>` next=0 **)** |const|                                                                                                                                                                                             |
-+-------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`float<class_float>`     | :ref:`get_descent<class_Font_method_get_descent>` **(** **)** |const|                                                                                                                                                                                                                                                          |
-+-------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`float<class_float>`     | :ref:`get_height<class_Font_method_get_height>` **(** **)** |const|                                                                                                                                                                                                                                                            |
-+-------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`Vector2<class_Vector2>` | :ref:`get_string_size<class_Font_method_get_string_size>` **(** :ref:`String<class_String>` string **)** |const|                                                                                                                                                                                                               |
-+-------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`Vector2<class_Vector2>` | :ref:`get_wordwrap_string_size<class_Font_method_get_wordwrap_string_size>` **(** :ref:`String<class_String>` string, :ref:`float<class_float>` width **)** |const|                                                                                                                                                            |
-+-------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`bool<class_bool>`       | :ref:`has_outline<class_Font_method_has_outline>` **(** **)** |const|                                                                                                                                                                                                                                                          |
-+-------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`bool<class_bool>`       | :ref:`is_distance_field_hint<class_Font_method_is_distance_field_hint>` **(** **)** |const|                                                                                                                                                                                                                                    |
-+-------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| void                          | :ref:`update_changes<class_Font_method_update_changes>` **(** **)**                                                                                                                                                                                                                                                            |
-+-------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
++-------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| void                                | :ref:`draw<class_Font_method_draw>` **(** :ref:`RID<class_RID>` canvas_item, :ref:`Vector2<class_Vector2>` position, :ref:`String<class_String>` string, :ref:`Color<class_Color>` modulate=Color( 1, 1, 1, 1 ), :ref:`int<class_int>` clip_w=-1, :ref:`Color<class_Color>` outline_modulate=Color( 1, 1, 1, 1 ) **)** |const| |
++-------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`float<class_float>`           | :ref:`draw_char<class_Font_method_draw_char>` **(** :ref:`RID<class_RID>` canvas_item, :ref:`Vector2<class_Vector2>` position, :ref:`int<class_int>` char, :ref:`int<class_int>` next=-1, :ref:`Color<class_Color>` modulate=Color( 1, 1, 1, 1 ), :ref:`bool<class_bool>` outline=false **)** |const|                          |
++-------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`float<class_float>`           | :ref:`get_ascent<class_Font_method_get_ascent>` **(** **)** |const|                                                                                                                                                                                                                                                            |
++-------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`Dictionary<class_Dictionary>` | :ref:`get_char_contours<class_Font_method_get_char_contours>` **(** :ref:`int<class_int>` char, :ref:`int<class_int>` next=0 **)** |const|                                                                                                                                                                                     |
++-------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`Vector2<class_Vector2>`       | :ref:`get_char_size<class_Font_method_get_char_size>` **(** :ref:`int<class_int>` char, :ref:`int<class_int>` next=0 **)** |const|                                                                                                                                                                                             |
++-------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`RID<class_RID>`               | :ref:`get_char_texture<class_Font_method_get_char_texture>` **(** :ref:`int<class_int>` char, :ref:`int<class_int>` next=0, :ref:`bool<class_bool>` outline=false **)** |const|                                                                                                                                                |
++-------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`Vector2<class_Vector2>`       | :ref:`get_char_texture_size<class_Font_method_get_char_texture_size>` **(** :ref:`int<class_int>` char, :ref:`int<class_int>` next=0, :ref:`bool<class_bool>` outline=false **)** |const|                                                                                                                                      |
++-------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`Vector2<class_Vector2>`       | :ref:`get_char_tx_offset<class_Font_method_get_char_tx_offset>` **(** :ref:`int<class_int>` char, :ref:`int<class_int>` next=0, :ref:`bool<class_bool>` outline=false **)** |const|                                                                                                                                            |
++-------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`Vector2<class_Vector2>`       | :ref:`get_char_tx_size<class_Font_method_get_char_tx_size>` **(** :ref:`int<class_int>` char, :ref:`int<class_int>` next=0, :ref:`bool<class_bool>` outline=false **)** |const|                                                                                                                                                |
++-------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`Rect2<class_Rect2>`           | :ref:`get_char_tx_uv_rect<class_Font_method_get_char_tx_uv_rect>` **(** :ref:`int<class_int>` char, :ref:`int<class_int>` next=0, :ref:`bool<class_bool>` outline=false **)** |const|                                                                                                                                          |
++-------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`float<class_float>`           | :ref:`get_descent<class_Font_method_get_descent>` **(** **)** |const|                                                                                                                                                                                                                                                          |
++-------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`float<class_float>`           | :ref:`get_height<class_Font_method_get_height>` **(** **)** |const|                                                                                                                                                                                                                                                            |
++-------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`Vector2<class_Vector2>`       | :ref:`get_string_size<class_Font_method_get_string_size>` **(** :ref:`String<class_String>` string **)** |const|                                                                                                                                                                                                               |
++-------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`Vector2<class_Vector2>`       | :ref:`get_wordwrap_string_size<class_Font_method_get_wordwrap_string_size>` **(** :ref:`String<class_String>` string, :ref:`float<class_float>` width **)** |const|                                                                                                                                                            |
++-------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`bool<class_bool>`             | :ref:`has_outline<class_Font_method_has_outline>` **(** **)** |const|                                                                                                                                                                                                                                                          |
++-------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`bool<class_bool>`             | :ref:`is_distance_field_hint<class_Font_method_is_distance_field_hint>` **(** **)** |const|                                                                                                                                                                                                                                    |
++-------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| void                                | :ref:`update_changes<class_Font_method_update_changes>` **(** **)**                                                                                                                                                                                                                                                            |
++-------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+
+Enumerations
+------------
+
+.. _enum_Font_ContourPointTag:
+
+.. _class_Font_constant_CONTOUR_CURVE_TAG_ON:
+
+.. _class_Font_constant_CONTOUR_CURVE_TAG_OFF_CONIC:
+
+.. _class_Font_constant_CONTOUR_CURVE_TAG_OFF_CUBIC:
+
+enum **ContourPointTag**:
+
+- **CONTOUR_CURVE_TAG_ON** = **1** --- Contour point is on the curve.
+
+- **CONTOUR_CURVE_TAG_OFF_CONIC** = **0** --- Contour point isn't on the curve, but serves as a control point for a conic (quadratic) Bézier arc.
+
+- **CONTOUR_CURVE_TAG_OFF_CUBIC** = **2** --- Contour point isn't on the curve, but serves as a control point for a cubic Bézier arc.
 
 Method Descriptions
 -------------------
@@ -82,6 +113,20 @@ Returns the font ascent (number of pixels above the baseline).
 
 ----
 
+.. _class_Font_method_get_char_contours:
+
+- :ref:`Dictionary<class_Dictionary>` **get_char_contours** **(** :ref:`int<class_int>` char, :ref:`int<class_int>` next=0 **)** |const|
+
+Returns outline contours of the glyph as a ``Dictionary`` with the following contents:
+
+\ ``points``         - :ref:`PoolVector3Array<class_PoolVector3Array>`, containing outline points. ``x`` and ``y`` are point coordinates. ``z`` is the type of the point, using the :ref:`ContourPointTag<enum_Font_ContourPointTag>` values.
+
+\ ``contours``       - :ref:`PoolIntArray<class_PoolIntArray>`, containing indices the end points of each contour.
+
+\ ``orientation``    - :ref:`bool<class_bool>`, contour orientation. If ``true``, clockwise contours must be filled.
+
+----
+
 .. _class_Font_method_get_char_size:
 
 - :ref:`Vector2<class_Vector2>` **get_char_size** **(** :ref:`int<class_int>` char, :ref:`int<class_int>` next=0 **)** |const|
@@ -90,6 +135,46 @@ Returns the size of a character, optionally taking kerning into account if the n
 
 ----
 
+.. _class_Font_method_get_char_texture:
+
+- :ref:`RID<class_RID>` **get_char_texture** **(** :ref:`int<class_int>` char, :ref:`int<class_int>` next=0, :ref:`bool<class_bool>` outline=false **)** |const|
+
+Returns resource id of the cache texture containing the char.
+
+----
+
+.. _class_Font_method_get_char_texture_size:
+
+- :ref:`Vector2<class_Vector2>` **get_char_texture_size** **(** :ref:`int<class_int>` char, :ref:`int<class_int>` next=0, :ref:`bool<class_bool>` outline=false **)** |const|
+
+Returns size of the cache texture containing the char.
+
+----
+
+.. _class_Font_method_get_char_tx_offset:
+
+- :ref:`Vector2<class_Vector2>` **get_char_tx_offset** **(** :ref:`int<class_int>` char, :ref:`int<class_int>` next=0, :ref:`bool<class_bool>` outline=false **)** |const|
+
+Returns char offset from the baseline.
+
+----
+
+.. _class_Font_method_get_char_tx_size:
+
+- :ref:`Vector2<class_Vector2>` **get_char_tx_size** **(** :ref:`int<class_int>` char, :ref:`int<class_int>` next=0, :ref:`bool<class_bool>` outline=false **)** |const|
+
+Returns size of the char.
+
+----
+
+.. _class_Font_method_get_char_tx_uv_rect:
+
+- :ref:`Rect2<class_Rect2>` **get_char_tx_uv_rect** **(** :ref:`int<class_int>` char, :ref:`int<class_int>` next=0, :ref:`bool<class_bool>` outline=false **)** |const|
+
+Returns rectangle in the cache texture containing the char.
+
+----
+
 .. _class_Font_method_get_descent:
 
 - :ref:`float<class_float>` **get_descent** **(** **)** |const|

+ 2 - 2
classes/class_geometry.rst

@@ -333,7 +333,7 @@ Returns ``true`` if ``polygon``'s vertices are ordered in clockwise order, other
 
 - :ref:`Variant<class_Variant>` **line_intersects_line_2d** **(** :ref:`Vector2<class_Vector2>` from_a, :ref:`Vector2<class_Vector2>` dir_a, :ref:`Vector2<class_Vector2>` from_b, :ref:`Vector2<class_Vector2>` dir_b **)**
 
-Checks if the two lines (``from_a``, ``dir_a``) and (``from_b``, ``dir_b``) intersect. If yes, return the point of intersection as :ref:`Vector2<class_Vector2>`. If no intersection takes place, returns an empty :ref:`Variant<class_Variant>`.
+Checks if the two lines (``from_a``, ``dir_a``) and (``from_b``, ``dir_b``) intersect. If yes, return the point of intersection as :ref:`Vector2<class_Vector2>`. If no intersection takes place, returns ``null``.
 
 \ **Note:** The lines are specified using direction vectors, not end points.
 
@@ -436,7 +436,7 @@ Checks if the segment (``from``, ``to``) intersects the cylinder with height ``h
 
 - :ref:`Variant<class_Variant>` **segment_intersects_segment_2d** **(** :ref:`Vector2<class_Vector2>` from_a, :ref:`Vector2<class_Vector2>` to_a, :ref:`Vector2<class_Vector2>` from_b, :ref:`Vector2<class_Vector2>` to_b **)**
 
-Checks if the two segments (``from_a``, ``to_a``) and (``from_b``, ``to_b``) intersect. If yes, return the point of intersection as :ref:`Vector2<class_Vector2>`. If no intersection takes place, returns an empty :ref:`Variant<class_Variant>`.
+Checks if the two segments (``from_a``, ``to_a``) and (``from_b``, ``to_b``) intersect. If yes, return the point of intersection as :ref:`Vector2<class_Vector2>`. If no intersection takes place, returns ``null``.
 
 ----
 

+ 1 - 1
classes/class_geometryinstance.rst

@@ -11,7 +11,7 @@ GeometryInstance
 
 **Inherits:** :ref:`VisualInstance<class_VisualInstance>` **<** :ref:`CullInstance<class_CullInstance>` **<** :ref:`Spatial<class_Spatial>` **<** :ref:`Node<class_Node>` **<** :ref:`Object<class_Object>`
 
-**Inherited By:** :ref:`CPUParticles<class_CPUParticles>`, :ref:`CSGShape<class_CSGShape>`, :ref:`ImmediateGeometry<class_ImmediateGeometry>`, :ref:`MeshInstance<class_MeshInstance>`, :ref:`MultiMeshInstance<class_MultiMeshInstance>`, :ref:`Particles<class_Particles>`, :ref:`SpriteBase3D<class_SpriteBase3D>`
+**Inherited By:** :ref:`CPUParticles<class_CPUParticles>`, :ref:`CSGShape<class_CSGShape>`, :ref:`ImmediateGeometry<class_ImmediateGeometry>`, :ref:`Label3D<class_Label3D>`, :ref:`MeshInstance<class_MeshInstance>`, :ref:`MultiMeshInstance<class_MultiMeshInstance>`, :ref:`Particles<class_Particles>`, :ref:`SpriteBase3D<class_SpriteBase3D>`
 
 Base node for geometry-based visual instances.
 

+ 42 - 5
classes/class_gradient.rst

@@ -21,11 +21,13 @@ Given a set of colors, this resource will interpolate them in order. This means
 Properties
 ----------
 
-+---------------------------------------------+-------------------------------------------------+----------------------------------------------+
-| :ref:`PoolColorArray<class_PoolColorArray>` | :ref:`colors<class_Gradient_property_colors>`   | ``PoolColorArray( 0, 0, 0, 1, 1, 1, 1, 1 )`` |
-+---------------------------------------------+-------------------------------------------------+----------------------------------------------+
-| :ref:`PoolRealArray<class_PoolRealArray>`   | :ref:`offsets<class_Gradient_property_offsets>` | ``PoolRealArray( 0, 1 )``                    |
-+---------------------------------------------+-------------------------------------------------+----------------------------------------------+
++-----------------------------------------------------------+-----------------------------------------------------------------------+----------------------------------------------+
+| :ref:`PoolColorArray<class_PoolColorArray>`               | :ref:`colors<class_Gradient_property_colors>`                         | ``PoolColorArray( 0, 0, 0, 1, 1, 1, 1, 1 )`` |
++-----------------------------------------------------------+-----------------------------------------------------------------------+----------------------------------------------+
+| :ref:`InterpolationMode<enum_Gradient_InterpolationMode>` | :ref:`interpolation_mode<class_Gradient_property_interpolation_mode>` | ``0``                                        |
++-----------------------------------------------------------+-----------------------------------------------------------------------+----------------------------------------------+
+| :ref:`PoolRealArray<class_PoolRealArray>`                 | :ref:`offsets<class_Gradient_property_offsets>`                       | ``PoolRealArray( 0, 1 )``                    |
++-----------------------------------------------------------+-----------------------------------------------------------------------+----------------------------------------------+
 
 Methods
 -------
@@ -48,6 +50,25 @@ Methods
 | void                      | :ref:`set_offset<class_Gradient_method_set_offset>` **(** :ref:`int<class_int>` point, :ref:`float<class_float>` offset **)**   |
 +---------------------------+---------------------------------------------------------------------------------------------------------------------------------+
 
+Enumerations
+------------
+
+.. _enum_Gradient_InterpolationMode:
+
+.. _class_Gradient_constant_GRADIENT_INTERPOLATE_LINEAR:
+
+.. _class_Gradient_constant_GRADIENT_INTERPOLATE_CONSTANT:
+
+.. _class_Gradient_constant_GRADIENT_INTERPOLATE_CUBIC:
+
+enum **InterpolationMode**:
+
+- **GRADIENT_INTERPOLATE_LINEAR** = **0** --- Linear interpolation.
+
+- **GRADIENT_INTERPOLATE_CONSTANT** = **1** --- Constant interpolation, color changes abruptly at each point and stays uniform between. This might cause visible aliasing when used for a gradient texture in some cases.
+
+- **GRADIENT_INTERPOLATE_CUBIC** = **2** --- Cubic interpolation.
+
 Property Descriptions
 ---------------------
 
@@ -67,6 +88,22 @@ Gradient's colors returned as a :ref:`PoolColorArray<class_PoolColorArray>`.
 
 ----
 
+.. _class_Gradient_property_interpolation_mode:
+
+- :ref:`InterpolationMode<enum_Gradient_InterpolationMode>` **interpolation_mode**
+
++-----------+-------------------------------+
+| *Default* | ``0``                         |
++-----------+-------------------------------+
+| *Setter*  | set_interpolation_mode(value) |
++-----------+-------------------------------+
+| *Getter*  | get_interpolation_mode()      |
++-----------+-------------------------------+
+
+Defines how the colors between points of the gradient are interpolated. See :ref:`InterpolationMode<enum_Gradient_InterpolationMode>` for available modes.
+
+----
+
 .. _class_Gradient_property_offsets:
 
 - :ref:`PoolRealArray<class_PoolRealArray>` **offsets**

+ 2 - 2
classes/class_graphedit.rst

@@ -176,9 +176,9 @@ Emitted when the user presses ``Ctrl + C``.
 
 .. _class_GraphEdit_signal_delete_nodes_request:
 
-- **delete_nodes_request** **(** **)**
+- **delete_nodes_request** **(** :ref:`Array<class_Array>` nodes **)**
 
-Emitted when a GraphNode is attempted to be removed from the GraphEdit.
+Emitted when a GraphNode is attempted to be removed from the GraphEdit. Provides a list of node names to be removed (all selected nodes, excluding nodes without closing button).
 
 ----
 

+ 2 - 0
classes/class_gridcontainer.rst

@@ -25,6 +25,8 @@ Notice that grid layout will preserve the columns and rows for every size of the
 Tutorials
 ---------
 
+- :doc:`GUI containers <../tutorials/ui/gui_containers>`
+
 - `OS Test Demo <https://godotengine.org/asset-library/asset/677>`__
 
 Properties

+ 0 - 2
classes/class_hashingcontext.rst

@@ -42,8 +42,6 @@ The :ref:`HashType<enum_HashingContext_HashType>` enum shows the supported hashi
         # Print the result as hex string and array.
         printt(res.hex_encode(), Array(res))
 
-\ **Note:** Not available in HTML5 exports.
-
 Methods
 -------
 

+ 5 - 0
classes/class_hboxcontainer.rst

@@ -20,6 +20,11 @@ Description
 
 Horizontal box container. See :ref:`BoxContainer<class_BoxContainer>`.
 
+Tutorials
+---------
+
+- :doc:`GUI containers <../tutorials/ui/gui_containers>`
+
 Theme Properties
 ----------------
 

+ 5 - 0
classes/class_hsplitcontainer.rst

@@ -18,6 +18,11 @@ Description
 
 Horizontal split container. See :ref:`SplitContainer<class_SplitContainer>`. This goes from left to right.
 
+Tutorials
+---------
+
+- :doc:`GUI containers <../tutorials/ui/gui_containers>`
+
 Theme Properties
 ----------------
 

+ 10 - 6
classes/class_httprequest.rst

@@ -103,7 +103,7 @@ Properties
 +-----------------------------+----------------------------------------------------------------------------+-----------+
 | :ref:`int<class_int>`       | :ref:`max_redirects<class_HTTPRequest_property_max_redirects>`             | ``8``     |
 +-----------------------------+----------------------------------------------------------------------------+-----------+
-| :ref:`int<class_int>`       | :ref:`timeout<class_HTTPRequest_property_timeout>`                         | ``0``     |
+| :ref:`float<class_float>`   | :ref:`timeout<class_HTTPRequest_property_timeout>`                         | ``0.0``   |
 +-----------------------------+----------------------------------------------------------------------------+-----------+
 | :ref:`bool<class_bool>`     | :ref:`use_threads<class_HTTPRequest_property_use_threads>`                 | ``false`` |
 +-----------------------------+----------------------------------------------------------------------------+-----------+
@@ -212,7 +212,7 @@ Property Descriptions
 | *Getter*  | get_body_size_limit()      |
 +-----------+----------------------------+
 
-Maximum allowed size for response bodies.
+Maximum allowed size for response bodies (``-1`` means no limit). When only small files are expected, this can be used to prevent disallow receiving files that are too large, preventing potential denial of service attacks.
 
 ----
 
@@ -246,7 +246,9 @@ Set this to a lower value (e.g. 4096 for 4 KiB) when downloading small files to
 | *Getter*  | get_download_file()      |
 +-----------+--------------------------+
 
-The file to download into. Will output any received file into it.
+The file to download into. If set to a non-empty string, the request output will be written to the file located at the path. If a file already exists at the specified location, it will be overwritten as soon as body data begins to be received.
+
+\ **Note:** Folders are not automatically created when the file is created. If :ref:`download_file<class_HTTPRequest_property_download_file>` points to a subfolder, it's recommended to create the necessary folders beforehand using :ref:`Directory.make_dir_recursive<class_Directory_method_make_dir_recursive>` to ensure the file can be written.
 
 ----
 
@@ -262,22 +264,24 @@ The file to download into. Will output any received file into it.
 | *Getter*  | get_max_redirects()      |
 +-----------+--------------------------+
 
-Maximum number of allowed redirects.
+Maximum number of allowed redirects. This is used to prevent endless redirect loops.
 
 ----
 
 .. _class_HTTPRequest_property_timeout:
 
-- :ref:`int<class_int>` **timeout**
+- :ref:`float<class_float>` **timeout**
 
 +-----------+--------------------+
-| *Default* | ``0``              |
+| *Default* | ``0.0``            |
 +-----------+--------------------+
 | *Setter*  | set_timeout(value) |
 +-----------+--------------------+
 | *Getter*  | get_timeout()      |
 +-----------+--------------------+
 
+If set to a value greater than ``0.0``, the HTTP request will time out after ``timeout`` seconds have passed and the request is not *completed* yet. For small HTTP requests such as REST API usage, set :ref:`timeout<class_HTTPRequest_property_timeout>` to a value greater than ``0.0`` to prevent the application from getting stuck if the request fails to get a response in a timely manner. For file downloads, leave this to ``0.0`` to prevent the download from failing if it takes too much time.
+
 ----
 
 .. _class_HTTPRequest_property_use_threads:

+ 2 - 2
classes/class_input.rst

@@ -212,9 +212,9 @@ enum **CursorShape**:
 
 - **CURSOR_CROSS** = **3** --- Cross cursor. Typically appears over regions in which a drawing operation can be performed or for selections.
 
-- **CURSOR_WAIT** = **4** --- Wait cursor. Indicates that the application is busy performing an operation. This cursor shape denotes that the application is still usable during the operation.
+- **CURSOR_WAIT** = **4** --- Wait cursor. Indicates that the application is busy performing an operation. This cursor shape denotes that the application isn't usable during the operation (e.g. something is blocking its main thread).
 
-- **CURSOR_BUSY** = **5** --- Busy cursor. Indicates that the application is busy performing an operation. This cursor shape denotes that the application isn't usable during the operation (e.g. something is blocking its main thread).
+- **CURSOR_BUSY** = **5** --- Busy cursor. Indicates that the application is busy performing an operation. This cursor shape denotes that the application is still usable during the operation.
 
 - **CURSOR_DRAG** = **6** --- Drag cursor. Usually displayed when dragging something.
 

+ 2 - 0
classes/class_inputmap.rst

@@ -139,6 +139,8 @@ If ``exact_match`` is ``false``, it ignores additional input modifiers for :ref:
 
 Returns an array of :ref:`InputEvent<class_InputEvent>`\ s associated with a given action.
 
+\ **Note:** When used in the editor (e.g. a tool script or :ref:`EditorPlugin<class_EditorPlugin>`), this method will return events for the editor action. If you want to access your project's input binds from the editor, read the ``input/*`` settings from :ref:`ProjectSettings<class_ProjectSettings>`.
+
 ----
 
 .. _class_InputMap_method_get_actions:

+ 544 - 0
classes/class_label3d.rst

@@ -0,0 +1,544 @@
+:github_url: hide
+
+.. Generated automatically by doc/tools/make_rst.py in Godot's source tree.
+.. DO NOT EDIT THIS FILE, but the Label3D.xml source instead.
+.. The source is found in doc/classes or modules/<name>/doc_classes.
+
+.. _class_Label3D:
+
+Label3D
+=======
+
+**Inherits:** :ref:`GeometryInstance<class_GeometryInstance>` **<** :ref:`VisualInstance<class_VisualInstance>` **<** :ref:`CullInstance<class_CullInstance>` **<** :ref:`Spatial<class_Spatial>` **<** :ref:`Node<class_Node>` **<** :ref:`Object<class_Object>`
+
+Displays plain text in a 3D world.
+
+Description
+-----------
+
+Label3D displays plain text in a 3D world. It gives you control over the horizontal and vertical alignment.
+
+Properties
+----------
+
++----------------------------------------------------------+--------------------------------------------------------------------------------+-------------------------+
+| :ref:`AlphaCutMode<enum_Label3D_AlphaCutMode>`           | :ref:`alpha_cut<class_Label3D_property_alpha_cut>`                             | ``0``                   |
++----------------------------------------------------------+--------------------------------------------------------------------------------+-------------------------+
+| :ref:`float<class_float>`                                | :ref:`alpha_scissor_threshold<class_Label3D_property_alpha_scissor_threshold>` | ``0.5``                 |
++----------------------------------------------------------+--------------------------------------------------------------------------------+-------------------------+
+| :ref:`bool<class_bool>`                                  | :ref:`autowrap<class_Label3D_property_autowrap>`                               | ``false``               |
++----------------------------------------------------------+--------------------------------------------------------------------------------+-------------------------+
+| :ref:`BillboardMode<enum_SpatialMaterial_BillboardMode>` | :ref:`billboard<class_Label3D_property_billboard>`                             | ``0``                   |
++----------------------------------------------------------+--------------------------------------------------------------------------------+-------------------------+
+| :ref:`bool<class_bool>`                                  | :ref:`double_sided<class_Label3D_property_double_sided>`                       | ``true``                |
++----------------------------------------------------------+--------------------------------------------------------------------------------+-------------------------+
+| :ref:`bool<class_bool>`                                  | :ref:`fixed_size<class_Label3D_property_fixed_size>`                           | ``false``               |
++----------------------------------------------------------+--------------------------------------------------------------------------------+-------------------------+
+| :ref:`Font<class_Font>`                                  | :ref:`font<class_Label3D_property_font>`                                       |                         |
++----------------------------------------------------------+--------------------------------------------------------------------------------+-------------------------+
+| :ref:`Align<enum_Label3D_Align>`                         | :ref:`horizontal_alignment<class_Label3D_property_horizontal_alignment>`       | ``1``                   |
++----------------------------------------------------------+--------------------------------------------------------------------------------+-------------------------+
+| :ref:`float<class_float>`                                | :ref:`line_spacing<class_Label3D_property_line_spacing>`                       | ``0.0``                 |
++----------------------------------------------------------+--------------------------------------------------------------------------------+-------------------------+
+| :ref:`Color<class_Color>`                                | :ref:`modulate<class_Label3D_property_modulate>`                               | ``Color( 1, 1, 1, 1 )`` |
++----------------------------------------------------------+--------------------------------------------------------------------------------+-------------------------+
+| :ref:`bool<class_bool>`                                  | :ref:`no_depth_test<class_Label3D_property_no_depth_test>`                     | ``false``               |
++----------------------------------------------------------+--------------------------------------------------------------------------------+-------------------------+
+| :ref:`Vector2<class_Vector2>`                            | :ref:`offset<class_Label3D_property_offset>`                                   | ``Vector2( 0, 0 )``     |
++----------------------------------------------------------+--------------------------------------------------------------------------------+-------------------------+
+| :ref:`Color<class_Color>`                                | :ref:`outline_modulate<class_Label3D_property_outline_modulate>`               | ``Color( 0, 0, 0, 1 )`` |
++----------------------------------------------------------+--------------------------------------------------------------------------------+-------------------------+
+| :ref:`int<class_int>`                                    | :ref:`outline_render_priority<class_Label3D_property_outline_render_priority>` | ``-1``                  |
++----------------------------------------------------------+--------------------------------------------------------------------------------+-------------------------+
+| :ref:`float<class_float>`                                | :ref:`pixel_size<class_Label3D_property_pixel_size>`                           | ``0.01``                |
++----------------------------------------------------------+--------------------------------------------------------------------------------+-------------------------+
+| :ref:`int<class_int>`                                    | :ref:`render_priority<class_Label3D_property_render_priority>`                 | ``0``                   |
++----------------------------------------------------------+--------------------------------------------------------------------------------+-------------------------+
+| :ref:`bool<class_bool>`                                  | :ref:`shaded<class_Label3D_property_shaded>`                                   | ``false``               |
++----------------------------------------------------------+--------------------------------------------------------------------------------+-------------------------+
+| :ref:`String<class_String>`                              | :ref:`text<class_Label3D_property_text>`                                       | ``""``                  |
++----------------------------------------------------------+--------------------------------------------------------------------------------+-------------------------+
+| :ref:`bool<class_bool>`                                  | :ref:`uppercase<class_Label3D_property_uppercase>`                             | ``false``               |
++----------------------------------------------------------+--------------------------------------------------------------------------------+-------------------------+
+| :ref:`VAlign<enum_Label3D_VAlign>`                       | :ref:`vertical_alignment<class_Label3D_property_vertical_alignment>`           | ``1``                   |
++----------------------------------------------------------+--------------------------------------------------------------------------------+-------------------------+
+| :ref:`float<class_float>`                                | :ref:`width<class_Label3D_property_width>`                                     | ``500.0``               |
++----------------------------------------------------------+--------------------------------------------------------------------------------+-------------------------+
+
+Methods
+-------
+
++-----------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`TriangleMesh<class_TriangleMesh>` | :ref:`generate_triangle_mesh<class_Label3D_method_generate_triangle_mesh>` **(** **)** |const|                                                      |
++-----------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`bool<class_bool>`                 | :ref:`get_draw_flag<class_Label3D_method_get_draw_flag>` **(** :ref:`DrawFlags<enum_Label3D_DrawFlags>` flag **)** |const|                          |
++-----------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------+
+| void                                    | :ref:`set_draw_flag<class_Label3D_method_set_draw_flag>` **(** :ref:`DrawFlags<enum_Label3D_DrawFlags>` flag, :ref:`bool<class_bool>` enabled **)** |
++-----------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------+
+
+Enumerations
+------------
+
+.. _enum_Label3D_DrawFlags:
+
+.. _class_Label3D_constant_FLAG_SHADED:
+
+.. _class_Label3D_constant_FLAG_DOUBLE_SIDED:
+
+.. _class_Label3D_constant_FLAG_DISABLE_DEPTH_TEST:
+
+.. _class_Label3D_constant_FLAG_FIXED_SIZE:
+
+.. _class_Label3D_constant_FLAG_MAX:
+
+enum **DrawFlags**:
+
+- **FLAG_SHADED** = **0** --- If set, lights in the environment affect the label.
+
+- **FLAG_DOUBLE_SIDED** = **1** --- If set, text can be seen from the back as well. If not, the texture is invisible when looking at it from behind.
+
+- **FLAG_DISABLE_DEPTH_TEST** = **2** --- Disables the depth test, so this object is drawn on top of all others. However, objects drawn after it in the draw order may cover it.
+
+- **FLAG_FIXED_SIZE** = **3** --- Label is scaled by depth so that it always appears the same size on screen.
+
+- **FLAG_MAX** = **4** --- Represents the size of the :ref:`DrawFlags<enum_Label3D_DrawFlags>` enum.
+
+----
+
+.. _enum_Label3D_AlphaCutMode:
+
+.. _class_Label3D_constant_ALPHA_CUT_DISABLED:
+
+.. _class_Label3D_constant_ALPHA_CUT_DISCARD:
+
+.. _class_Label3D_constant_ALPHA_CUT_OPAQUE_PREPASS:
+
+enum **AlphaCutMode**:
+
+- **ALPHA_CUT_DISABLED** = **0** --- This mode performs standard alpha blending. It can display translucent areas, but transparency sorting issues may be visible when multiple transparent materials are overlapping.
+
+- **ALPHA_CUT_DISCARD** = **1** --- This mode only allows fully transparent or fully opaque pixels. This mode is also known as *alpha testing* or *1-bit transparency*.
+
+\ **Note:** This mode might have issues with anti-aliased fonts and outlines, try adjusting :ref:`alpha_scissor_threshold<class_Label3D_property_alpha_scissor_threshold>` or using SDF font.
+
+\ **Note:** When using text with overlapping glyphs (e.g., cursive scripts), this mode might have transparency sorting issues between the main text and the outline.
+
+- **ALPHA_CUT_OPAQUE_PREPASS** = **2** --- This mode draws fully opaque pixels in the depth prepass. This is slower than :ref:`ALPHA_CUT_DISABLED<class_Label3D_constant_ALPHA_CUT_DISABLED>` or :ref:`ALPHA_CUT_DISCARD<class_Label3D_constant_ALPHA_CUT_DISCARD>`, but it allows displaying translucent areas and smooth edges while using proper sorting.
+
+\ **Note:** When using text with overlapping glyphs (e.g., cursive scripts), this mode might have transparency sorting issues between the main text and the outline.
+
+----
+
+.. _enum_Label3D_Align:
+
+.. _class_Label3D_constant_ALIGN_LEFT:
+
+.. _class_Label3D_constant_ALIGN_CENTER:
+
+.. _class_Label3D_constant_ALIGN_RIGHT:
+
+.. _class_Label3D_constant_ALIGN_FILL:
+
+enum **Align**:
+
+- **ALIGN_LEFT** = **0** --- Align rows to the left (default).
+
+- **ALIGN_CENTER** = **1** --- Align rows centered.
+
+- **ALIGN_RIGHT** = **2** --- Align rows to the right.
+
+- **ALIGN_FILL** = **3** --- Expand row whitespaces to fit the width.
+
+----
+
+.. _enum_Label3D_VAlign:
+
+.. _class_Label3D_constant_VALIGN_TOP:
+
+.. _class_Label3D_constant_VALIGN_CENTER:
+
+.. _class_Label3D_constant_VALIGN_BOTTOM:
+
+.. _class_Label3D_constant_VALIGN_FILL:
+
+enum **VAlign**:
+
+- **VALIGN_TOP** = **0** --- Align the whole text to the top.
+
+- **VALIGN_CENTER** = **1** --- Align the whole text to the center.
+
+- **VALIGN_BOTTOM** = **2** --- Align the whole text to the bottom.
+
+- **VALIGN_FILL** = **3** --- Align the whole text by spreading the rows.
+
+Property Descriptions
+---------------------
+
+.. _class_Label3D_property_alpha_cut:
+
+- :ref:`AlphaCutMode<enum_Label3D_AlphaCutMode>` **alpha_cut**
+
++-----------+---------------------------+
+| *Default* | ``0``                     |
++-----------+---------------------------+
+| *Setter*  | set_alpha_cut_mode(value) |
++-----------+---------------------------+
+| *Getter*  | get_alpha_cut_mode()      |
++-----------+---------------------------+
+
+The alpha cutting mode to use for the sprite. See :ref:`AlphaCutMode<enum_Label3D_AlphaCutMode>` for possible values.
+
+----
+
+.. _class_Label3D_property_alpha_scissor_threshold:
+
+- :ref:`float<class_float>` **alpha_scissor_threshold**
+
++-----------+------------------------------------+
+| *Default* | ``0.5``                            |
++-----------+------------------------------------+
+| *Setter*  | set_alpha_scissor_threshold(value) |
++-----------+------------------------------------+
+| *Getter*  | get_alpha_scissor_threshold()      |
++-----------+------------------------------------+
+
+Threshold at which the alpha scissor will discard values.
+
+----
+
+.. _class_Label3D_property_autowrap:
+
+- :ref:`bool<class_bool>` **autowrap**
+
++-----------+---------------------+
+| *Default* | ``false``           |
++-----------+---------------------+
+| *Setter*  | set_autowrap(value) |
++-----------+---------------------+
+| *Getter*  | get_autowrap()      |
++-----------+---------------------+
+
+If ``true``, wraps the text to the :ref:`width<class_Label3D_property_width>`.
+
+----
+
+.. _class_Label3D_property_billboard:
+
+- :ref:`BillboardMode<enum_SpatialMaterial_BillboardMode>` **billboard**
+
++-----------+---------------------------+
+| *Default* | ``0``                     |
++-----------+---------------------------+
+| *Setter*  | set_billboard_mode(value) |
++-----------+---------------------------+
+| *Getter*  | get_billboard_mode()      |
++-----------+---------------------------+
+
+The billboard mode to use for the label. See :ref:`BillboardMode<enum_SpatialMaterial_BillboardMode>` for possible values.
+
+----
+
+.. _class_Label3D_property_double_sided:
+
+- :ref:`bool<class_bool>` **double_sided**
+
++-----------+----------------------+
+| *Default* | ``true``             |
++-----------+----------------------+
+| *Setter*  | set_draw_flag(value) |
++-----------+----------------------+
+| *Getter*  | get_draw_flag()      |
++-----------+----------------------+
+
+If ``true``, text can be seen from the back as well, if ``false``, it is invisible when looking at it from behind.
+
+----
+
+.. _class_Label3D_property_fixed_size:
+
+- :ref:`bool<class_bool>` **fixed_size**
+
++-----------+----------------------+
+| *Default* | ``false``            |
++-----------+----------------------+
+| *Setter*  | set_draw_flag(value) |
++-----------+----------------------+
+| *Getter*  | get_draw_flag()      |
++-----------+----------------------+
+
+If ``true``, the label is rendered at the same size regardless of distance.
+
+----
+
+.. _class_Label3D_property_font:
+
+- :ref:`Font<class_Font>` **font**
+
++----------+-----------------+
+| *Setter* | set_font(value) |
++----------+-----------------+
+| *Getter* | get_font()      |
++----------+-----------------+
+
+:ref:`Font<class_Font>` used for the ``Label3D``'s text.
+
+----
+
+.. _class_Label3D_property_horizontal_alignment:
+
+- :ref:`Align<enum_Label3D_Align>` **horizontal_alignment**
+
++-----------+---------------------------------+
+| *Default* | ``1``                           |
++-----------+---------------------------------+
+| *Setter*  | set_horizontal_alignment(value) |
++-----------+---------------------------------+
+| *Getter*  | get_horizontal_alignment()      |
++-----------+---------------------------------+
+
+Controls the text's horizontal alignment. Supports left, center, right. Set it to one of the :ref:`Align<enum_Label3D_Align>` constants.
+
+----
+
+.. _class_Label3D_property_line_spacing:
+
+- :ref:`float<class_float>` **line_spacing**
+
++-----------+-------------------------+
+| *Default* | ``0.0``                 |
++-----------+-------------------------+
+| *Setter*  | set_line_spacing(value) |
++-----------+-------------------------+
+| *Getter*  | get_line_spacing()      |
++-----------+-------------------------+
+
+Vertical space between lines in multiline ``Label3D``.
+
+----
+
+.. _class_Label3D_property_modulate:
+
+- :ref:`Color<class_Color>` **modulate**
+
++-----------+-------------------------+
+| *Default* | ``Color( 1, 1, 1, 1 )`` |
++-----------+-------------------------+
+| *Setter*  | set_modulate(value)     |
++-----------+-------------------------+
+| *Getter*  | get_modulate()          |
++-----------+-------------------------+
+
+Text :ref:`Color<class_Color>` of the ``Label3D``.
+
+----
+
+.. _class_Label3D_property_no_depth_test:
+
+- :ref:`bool<class_bool>` **no_depth_test**
+
++-----------+----------------------+
+| *Default* | ``false``            |
++-----------+----------------------+
+| *Setter*  | set_draw_flag(value) |
++-----------+----------------------+
+| *Getter*  | get_draw_flag()      |
++-----------+----------------------+
+
+If ``true``, depth testing is disabled and the object will be drawn in render order.
+
+----
+
+.. _class_Label3D_property_offset:
+
+- :ref:`Vector2<class_Vector2>` **offset**
+
++-----------+---------------------+
+| *Default* | ``Vector2( 0, 0 )`` |
++-----------+---------------------+
+| *Setter*  | set_offset(value)   |
++-----------+---------------------+
+| *Getter*  | get_offset()        |
++-----------+---------------------+
+
+The text drawing offset (in pixels).
+
+----
+
+.. _class_Label3D_property_outline_modulate:
+
+- :ref:`Color<class_Color>` **outline_modulate**
+
++-----------+-----------------------------+
+| *Default* | ``Color( 0, 0, 0, 1 )``     |
++-----------+-----------------------------+
+| *Setter*  | set_outline_modulate(value) |
++-----------+-----------------------------+
+| *Getter*  | get_outline_modulate()      |
++-----------+-----------------------------+
+
+The tint of :ref:`Font<class_Font>`'s outline.
+
+----
+
+.. _class_Label3D_property_outline_render_priority:
+
+- :ref:`int<class_int>` **outline_render_priority**
+
++-----------+------------------------------------+
+| *Default* | ``-1``                             |
++-----------+------------------------------------+
+| *Setter*  | set_outline_render_priority(value) |
++-----------+------------------------------------+
+| *Getter*  | get_outline_render_priority()      |
++-----------+------------------------------------+
+
+Sets the render priority for the text outline. Higher priority objects will be sorted in front of lower priority objects.
+
+\ **Node:** This only applies if :ref:`alpha_cut<class_Label3D_property_alpha_cut>` is set to :ref:`ALPHA_CUT_DISABLED<class_Label3D_constant_ALPHA_CUT_DISABLED>` (default value).
+
+\ **Note:** This only applies to sorting of transparent objects. This will not impact how transparent objects are sorted relative to opaque objects. This is because opaque objects are not sorted, while transparent objects are sorted from back to front (subject to priority).
+
+----
+
+.. _class_Label3D_property_pixel_size:
+
+- :ref:`float<class_float>` **pixel_size**
+
++-----------+-----------------------+
+| *Default* | ``0.01``              |
++-----------+-----------------------+
+| *Setter*  | set_pixel_size(value) |
++-----------+-----------------------+
+| *Getter*  | get_pixel_size()      |
++-----------+-----------------------+
+
+The size of one pixel's width on the label to scale it in 3D.
+
+----
+
+.. _class_Label3D_property_render_priority:
+
+- :ref:`int<class_int>` **render_priority**
+
++-----------+----------------------------+
+| *Default* | ``0``                      |
++-----------+----------------------------+
+| *Setter*  | set_render_priority(value) |
++-----------+----------------------------+
+| *Getter*  | get_render_priority()      |
++-----------+----------------------------+
+
+Sets the render priority for the text. Higher priority objects will be sorted in front of lower priority objects.
+
+\ **Node:** This only applies if :ref:`alpha_cut<class_Label3D_property_alpha_cut>` is set to :ref:`ALPHA_CUT_DISABLED<class_Label3D_constant_ALPHA_CUT_DISABLED>` (default value).
+
+\ **Note:** This only applies to sorting of transparent objects. This will not impact how transparent objects are sorted relative to opaque objects. This is because opaque objects are not sorted, while transparent objects are sorted from back to front (subject to priority).
+
+----
+
+.. _class_Label3D_property_shaded:
+
+- :ref:`bool<class_bool>` **shaded**
+
++-----------+----------------------+
+| *Default* | ``false``            |
++-----------+----------------------+
+| *Setter*  | set_draw_flag(value) |
++-----------+----------------------+
+| *Getter*  | get_draw_flag()      |
++-----------+----------------------+
+
+If ``true``, the :ref:`Light<class_Light>` in the :ref:`Environment<class_Environment>` has effects on the label.
+
+----
+
+.. _class_Label3D_property_text:
+
+- :ref:`String<class_String>` **text**
+
++-----------+-----------------+
+| *Default* | ``""``          |
++-----------+-----------------+
+| *Setter*  | set_text(value) |
++-----------+-----------------+
+| *Getter*  | get_text()      |
++-----------+-----------------+
+
+The text to display on screen.
+
+----
+
+.. _class_Label3D_property_uppercase:
+
+- :ref:`bool<class_bool>` **uppercase**
+
++-----------+----------------------+
+| *Default* | ``false``            |
++-----------+----------------------+
+| *Setter*  | set_uppercase(value) |
++-----------+----------------------+
+| *Getter*  | is_uppercase()       |
++-----------+----------------------+
+
+If ``true``, all the text displays as UPPERCASE.
+
+----
+
+.. _class_Label3D_property_vertical_alignment:
+
+- :ref:`VAlign<enum_Label3D_VAlign>` **vertical_alignment**
+
++-----------+-------------------------------+
+| *Default* | ``1``                         |
++-----------+-------------------------------+
+| *Setter*  | set_vertical_alignment(value) |
++-----------+-------------------------------+
+| *Getter*  | get_vertical_alignment()      |
++-----------+-------------------------------+
+
+Controls the text's vertical alignment. Supports top, center, bottom. Set it to one of the :ref:`VAlign<enum_Label3D_VAlign>` constants.
+
+----
+
+.. _class_Label3D_property_width:
+
+- :ref:`float<class_float>` **width**
+
++-----------+------------------+
+| *Default* | ``500.0``        |
++-----------+------------------+
+| *Setter*  | set_width(value) |
++-----------+------------------+
+| *Getter*  | get_width()      |
++-----------+------------------+
+
+Text width (in pixels), used for autowrap and fill alignment.
+
+Method Descriptions
+-------------------
+
+.. _class_Label3D_method_generate_triangle_mesh:
+
+- :ref:`TriangleMesh<class_TriangleMesh>` **generate_triangle_mesh** **(** **)** |const|
+
+Returns a :ref:`TriangleMesh<class_TriangleMesh>` with the label's vertices following its current configuration (such as its :ref:`pixel_size<class_Label3D_property_pixel_size>`).
+
+----
+
+.. _class_Label3D_method_get_draw_flag:
+
+- :ref:`bool<class_bool>` **get_draw_flag** **(** :ref:`DrawFlags<enum_Label3D_DrawFlags>` flag **)** |const|
+
+Returns the value of the specified flag.
+
+----
+
+.. _class_Label3D_method_set_draw_flag:
+
+- void **set_draw_flag** **(** :ref:`DrawFlags<enum_Label3D_DrawFlags>` flag, :ref:`bool<class_bool>` enabled **)**
+
+If ``true``, the specified flag will be enabled. See :ref:`DrawFlags<enum_Label3D_DrawFlags>` for a list of flags.
+
+.. |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 - 3
classes/class_line2d.rst

@@ -16,7 +16,7 @@ A 2D line.
 Description
 -----------
 
-A line through several points in 2D space.
+A line through several points in 2D space. Supports varying width and color over the line's length, texturing, and several cap/joint types.
 
 \ **Note:** By default, Godot can only draw up to 4,096 polygon points at a time. To increase this limit, open the Project Settings and increase :ref:`ProjectSettings.rendering/limits/buffers/canvas_polygon_buffer_size_kb<class_ProjectSettings_property_rendering/limits/buffers/canvas_polygon_buffer_size_kb>` and :ref:`ProjectSettings.rendering/limits/buffers/canvas_polygon_index_buffer_size_kb<class_ProjectSettings_property_rendering/limits/buffers/canvas_polygon_index_buffer_size_kb>`.
 
@@ -145,9 +145,11 @@ Property Descriptions
 | *Getter*  | get_antialiased()      |
 +-----------+------------------------+
 
-If ``true``, the line's border will be anti-aliased.
+If ``true``, the line's border will attempt to perform antialiasing by drawing thin OpenGL smooth lines on the line's edges.
 
-\ **Note:** Line2D is not accelerated by batching when being anti-aliased.
+\ **Note:** Line2D is not accelerated by batching if :ref:`antialiased<class_Line2D_property_antialiased>` is ``true``.
+
+\ **Note:** Due to how it works, built-in antialiasing will not look correct for translucent lines and may not work on certain platforms. As a workaround, install the `Antialiased Line2D <https://github.com/godot-extended-libraries/godot-antialiased-line2d>`__ add-on then create an AntialiasedLine2D node. That node relies on a texture with custom mipmaps to perform antialiasing. 2D batching is also still supported with those antialiased lines.
 
 ----
 

+ 5 - 0
classes/class_margincontainer.rst

@@ -29,6 +29,11 @@ Adds a top, left, bottom, and right margin to all :ref:`Control<class_Control>`
     add_constant_override("margin_bottom", margin_value)
     add_constant_override("margin_right", margin_value)
 
+Tutorials
+---------
+
+- :doc:`GUI containers <../tutorials/ui/gui_containers>`
+
 Theme Properties
 ----------------
 

+ 40 - 0
classes/class_navigation2dserver.rst

@@ -37,6 +37,8 @@ Methods
 +-------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
 | :ref:`RID<class_RID>`                           | :ref:`agent_create<class_Navigation2DServer_method_agent_create>` **(** **)** |const|                                                                                                                                                                |
 +-------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`RID<class_RID>`                           | :ref:`agent_get_map<class_Navigation2DServer_method_agent_get_map>` **(** :ref:`RID<class_RID>` agent **)** |const|                                                                                                                                  |
++-------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
 | :ref:`bool<class_bool>`                         | :ref:`agent_is_map_changed<class_Navigation2DServer_method_agent_is_map_changed>` **(** :ref:`RID<class_RID>` agent **)** |const|                                                                                                                    |
 +-------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
 | void                                            | :ref:`agent_set_callback<class_Navigation2DServer_method_agent_set_callback>` **(** :ref:`RID<class_RID>` agent, :ref:`Object<class_Object>` receiver, :ref:`String<class_String>` method, :ref:`Variant<class_Variant>` userdata=null **)** |const| |
@@ -63,6 +65,8 @@ Methods
 +-------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
 | :ref:`RID<class_RID>`                           | :ref:`map_create<class_Navigation2DServer_method_map_create>` **(** **)** |const|                                                                                                                                                                    |
 +-------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`Array<class_Array>`                       | :ref:`map_get_agents<class_Navigation2DServer_method_map_get_agents>` **(** :ref:`RID<class_RID>` map **)** |const|                                                                                                                                  |
++-------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
 | :ref:`float<class_float>`                       | :ref:`map_get_cell_size<class_Navigation2DServer_method_map_get_cell_size>` **(** :ref:`RID<class_RID>` map **)** |const|                                                                                                                            |
 +-------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
 | :ref:`Vector2<class_Vector2>`                   | :ref:`map_get_closest_point<class_Navigation2DServer_method_map_get_closest_point>` **(** :ref:`RID<class_RID>` map, :ref:`Vector2<class_Vector2>` to_point **)** |const|                                                                            |
@@ -73,6 +77,8 @@ Methods
 +-------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
 | :ref:`PoolVector2Array<class_PoolVector2Array>` | :ref:`map_get_path<class_Navigation2DServer_method_map_get_path>` **(** :ref:`RID<class_RID>` map, :ref:`Vector2<class_Vector2>` origin, :ref:`Vector2<class_Vector2>` destination, :ref:`bool<class_bool>` optimize **)** |const|                   |
 +-------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`Array<class_Array>`                       | :ref:`map_get_regions<class_Navigation2DServer_method_map_get_regions>` **(** :ref:`RID<class_RID>` map **)** |const|                                                                                                                                |
++-------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
 | :ref:`bool<class_bool>`                         | :ref:`map_is_active<class_Navigation2DServer_method_map_is_active>` **(** :ref:`RID<class_RID>` nap **)** |const|                                                                                                                                    |
 +-------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
 | void                                            | :ref:`map_set_active<class_Navigation2DServer_method_map_set_active>` **(** :ref:`RID<class_RID>` map, :ref:`bool<class_bool>` active **)** |const|                                                                                                  |
@@ -83,6 +89,8 @@ Methods
 +-------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
 | :ref:`RID<class_RID>`                           | :ref:`region_create<class_Navigation2DServer_method_region_create>` **(** **)** |const|                                                                                                                                                              |
 +-------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`RID<class_RID>`                           | :ref:`region_get_map<class_Navigation2DServer_method_region_get_map>` **(** :ref:`RID<class_RID>` region **)** |const|                                                                                                                               |
++-------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
 | void                                            | :ref:`region_set_map<class_Navigation2DServer_method_region_set_map>` **(** :ref:`RID<class_RID>` region, :ref:`RID<class_RID>` map **)** |const|                                                                                                    |
 +-------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
 | void                                            | :ref:`region_set_navpoly<class_Navigation2DServer_method_region_set_navpoly>` **(** :ref:`RID<class_RID>` region, :ref:`NavigationPolygon<class_NavigationPolygon>` nav_poly **)** |const|                                                           |
@@ -101,6 +109,14 @@ Creates the agent.
 
 ----
 
+.. _class_Navigation2DServer_method_agent_get_map:
+
+- :ref:`RID<class_RID>` **agent_get_map** **(** :ref:`RID<class_RID>` agent **)** |const|
+
+Returns the navigation map :ref:`RID<class_RID>` the requested ``agent`` is currently assigned to.
+
+----
+
 .. _class_Navigation2DServer_method_agent_is_map_changed:
 
 - :ref:`bool<class_bool>` **agent_is_map_changed** **(** :ref:`RID<class_RID>` agent **)** |const|
@@ -205,6 +221,14 @@ Create a new map.
 
 ----
 
+.. _class_Navigation2DServer_method_map_get_agents:
+
+- :ref:`Array<class_Array>` **map_get_agents** **(** :ref:`RID<class_RID>` map **)** |const|
+
+Returns all navigation agents :ref:`RID<class_RID>`\ s that are currently assigned to the requested navigation ``map``.
+
+----
+
 .. _class_Navigation2DServer_method_map_get_cell_size:
 
 - :ref:`float<class_float>` **map_get_cell_size** **(** :ref:`RID<class_RID>` map **)** |const|
@@ -245,6 +269,14 @@ Returns the navigation path to reach the destination from the origin.
 
 ----
 
+.. _class_Navigation2DServer_method_map_get_regions:
+
+- :ref:`Array<class_Array>` **map_get_regions** **(** :ref:`RID<class_RID>` map **)** |const|
+
+Returns all navigation regions :ref:`RID<class_RID>`\ s that are currently assigned to the requested navigation ``map``.
+
+----
+
 .. _class_Navigation2DServer_method_map_is_active:
 
 - :ref:`bool<class_bool>` **map_is_active** **(** :ref:`RID<class_RID>` nap **)** |const|
@@ -285,6 +317,14 @@ Creates a new region.
 
 ----
 
+.. _class_Navigation2DServer_method_region_get_map:
+
+- :ref:`RID<class_RID>` **region_get_map** **(** :ref:`RID<class_RID>` region **)** |const|
+
+Returns the navigation map :ref:`RID<class_RID>` the requested ``region`` is currently assigned to.
+
+----
+
 .. _class_Navigation2DServer_method_region_set_map:
 
 - void **region_set_map** **(** :ref:`RID<class_RID>` region, :ref:`RID<class_RID>` map **)** |const|

+ 38 - 20
classes/class_navigationagent.rst

@@ -21,25 +21,27 @@ Description
 Properties
 ----------
 
-+---------------------------+----------------------------------------------------------------------------------------+----------+
-| :ref:`float<class_float>` | :ref:`agent_height_offset<class_NavigationAgent_property_agent_height_offset>`         | ``0.0``  |
-+---------------------------+----------------------------------------------------------------------------------------+----------+
-| :ref:`bool<class_bool>`   | :ref:`ignore_y<class_NavigationAgent_property_ignore_y>`                               | ``true`` |
-+---------------------------+----------------------------------------------------------------------------------------+----------+
-| :ref:`int<class_int>`     | :ref:`max_neighbors<class_NavigationAgent_property_max_neighbors>`                     | ``10``   |
-+---------------------------+----------------------------------------------------------------------------------------+----------+
-| :ref:`float<class_float>` | :ref:`max_speed<class_NavigationAgent_property_max_speed>`                             | ``10.0`` |
-+---------------------------+----------------------------------------------------------------------------------------+----------+
-| :ref:`float<class_float>` | :ref:`neighbor_dist<class_NavigationAgent_property_neighbor_dist>`                     | ``50.0`` |
-+---------------------------+----------------------------------------------------------------------------------------+----------+
-| :ref:`float<class_float>` | :ref:`path_max_distance<class_NavigationAgent_property_path_max_distance>`             | ``3.0``  |
-+---------------------------+----------------------------------------------------------------------------------------+----------+
-| :ref:`float<class_float>` | :ref:`radius<class_NavigationAgent_property_radius>`                                   | ``1.0``  |
-+---------------------------+----------------------------------------------------------------------------------------+----------+
-| :ref:`float<class_float>` | :ref:`target_desired_distance<class_NavigationAgent_property_target_desired_distance>` | ``1.0``  |
-+---------------------------+----------------------------------------------------------------------------------------+----------+
-| :ref:`float<class_float>` | :ref:`time_horizon<class_NavigationAgent_property_time_horizon>`                       | ``5.0``  |
-+---------------------------+----------------------------------------------------------------------------------------+----------+
++---------------------------+----------------------------------------------------------------------------------------+-----------+
+| :ref:`float<class_float>` | :ref:`agent_height_offset<class_NavigationAgent_property_agent_height_offset>`         | ``0.0``   |
++---------------------------+----------------------------------------------------------------------------------------+-----------+
+| :ref:`bool<class_bool>`   | :ref:`avoidance_enabled<class_NavigationAgent_property_avoidance_enabled>`             | ``false`` |
++---------------------------+----------------------------------------------------------------------------------------+-----------+
+| :ref:`bool<class_bool>`   | :ref:`ignore_y<class_NavigationAgent_property_ignore_y>`                               | ``true``  |
++---------------------------+----------------------------------------------------------------------------------------+-----------+
+| :ref:`int<class_int>`     | :ref:`max_neighbors<class_NavigationAgent_property_max_neighbors>`                     | ``10``    |
++---------------------------+----------------------------------------------------------------------------------------+-----------+
+| :ref:`float<class_float>` | :ref:`max_speed<class_NavigationAgent_property_max_speed>`                             | ``10.0``  |
++---------------------------+----------------------------------------------------------------------------------------+-----------+
+| :ref:`float<class_float>` | :ref:`neighbor_dist<class_NavigationAgent_property_neighbor_dist>`                     | ``50.0``  |
++---------------------------+----------------------------------------------------------------------------------------+-----------+
+| :ref:`float<class_float>` | :ref:`path_max_distance<class_NavigationAgent_property_path_max_distance>`             | ``3.0``   |
++---------------------------+----------------------------------------------------------------------------------------+-----------+
+| :ref:`float<class_float>` | :ref:`radius<class_NavigationAgent_property_radius>`                                   | ``1.0``   |
++---------------------------+----------------------------------------------------------------------------------------+-----------+
+| :ref:`float<class_float>` | :ref:`target_desired_distance<class_NavigationAgent_property_target_desired_distance>` | ``1.0``   |
++---------------------------+----------------------------------------------------------------------------------------+-----------+
+| :ref:`float<class_float>` | :ref:`time_horizon<class_NavigationAgent_property_time_horizon>`                       | ``5.0``   |
++---------------------------+----------------------------------------------------------------------------------------+-----------+
 
 Methods
 -------
@@ -126,6 +128,22 @@ The agent height offset to match the navigation mesh height.
 
 ----
 
+.. _class_NavigationAgent_property_avoidance_enabled:
+
+- :ref:`bool<class_bool>` **avoidance_enabled**
+
++-----------+------------------------------+
+| *Default* | ``false``                    |
++-----------+------------------------------+
+| *Setter*  | set_avoidance_enabled(value) |
++-----------+------------------------------+
+| *Getter*  | get_avoidance_enabled()      |
++-----------+------------------------------+
+
+If ``true`` the agent is registered for an RVO avoidance callback on the :ref:`NavigationServer<class_NavigationServer>`. When :ref:`set_velocity<class_NavigationAgent_method_set_velocity>` is used and the processing is completed a ``safe_velocity`` Vector3 is received with a signal connection to :ref:`velocity_computed<class_NavigationAgent_signal_velocity_computed>`. Avoidance processing with many registered agents has a significant performance cost and should only be enabled on agents that currently require it.
+
+----
+
 .. _class_NavigationAgent_property_ignore_y:
 
 - :ref:`bool<class_bool>` **ignore_y**
@@ -307,7 +325,7 @@ Returns a :ref:`Vector3<class_Vector3>` in global coordinates, that can be moved
 
 - :ref:`RID<class_RID>` **get_rid** **(** **)** |const|
 
-Returns the object's :ref:`RID<class_RID>`.
+Returns the :ref:`RID<class_RID>` of this agent on the :ref:`NavigationServer<class_NavigationServer>`.
 
 ----
 

+ 19 - 1
classes/class_navigationagent2d.rst

@@ -21,6 +21,8 @@ Description
 Properties
 ----------
 
++---------------------------+------------------------------------------------------------------------------------------+-----------+
+| :ref:`bool<class_bool>`   | :ref:`avoidance_enabled<class_NavigationAgent2D_property_avoidance_enabled>`             | ``false`` |
 +---------------------------+------------------------------------------------------------------------------------------+-----------+
 | :ref:`int<class_int>`     | :ref:`max_neighbors<class_NavigationAgent2D_property_max_neighbors>`                     | ``10``    |
 +---------------------------+------------------------------------------------------------------------------------------+-----------+
@@ -106,6 +108,22 @@ Notifies when the collision avoidance velocity is calculated after a call to :re
 Property Descriptions
 ---------------------
 
+.. _class_NavigationAgent2D_property_avoidance_enabled:
+
+- :ref:`bool<class_bool>` **avoidance_enabled**
+
++-----------+------------------------------+
+| *Default* | ``false``                    |
++-----------+------------------------------+
+| *Setter*  | set_avoidance_enabled(value) |
++-----------+------------------------------+
+| *Getter*  | get_avoidance_enabled()      |
++-----------+------------------------------+
+
+If ``true`` the agent is registered for an RVO avoidance callback on the :ref:`Navigation2DServer<class_Navigation2DServer>`. When :ref:`set_velocity<class_NavigationAgent2D_method_set_velocity>` is used and the processing is completed a ``safe_velocity`` Vector2 is received with a signal connection to :ref:`velocity_computed<class_NavigationAgent2D_signal_velocity_computed>`. Avoidance processing with many registered agents has a significant performance cost and should only be enabled on agents that currently require it.
+
+----
+
 .. _class_NavigationAgent2D_property_max_neighbors:
 
 - :ref:`int<class_int>` **max_neighbors**
@@ -271,7 +289,7 @@ Returns a :ref:`Vector2<class_Vector2>` in global coordinates, that can be moved
 
 - :ref:`RID<class_RID>` **get_rid** **(** **)** |const|
 
-Returns the object's :ref:`RID<class_RID>`.
+Returns the :ref:`RID<class_RID>` of this agent on the :ref:`Navigation2DServer<class_Navigation2DServer>`.
 
 ----
 

+ 12 - 12
classes/class_navigationmesh.rst

@@ -27,17 +27,17 @@ Properties
 ----------
 
 +---------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------+-----------+
-| :ref:`float<class_float>`                                           | :ref:`agent/height<class_NavigationMesh_property_agent/height>`                                                               | ``2.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.9``   |
+| :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.6``   |
+| :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.2``   |
+| :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.3``   |
+| :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``   |
 +---------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------+-----------+
@@ -65,7 +65,7 @@ Properties
 +---------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------+-----------+
 | :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>`                                                         | ``8.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``     |
 +---------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------+-----------+
@@ -168,7 +168,7 @@ Property Descriptions
 - :ref:`float<class_float>` **agent/height**
 
 +-----------+-------------------------+
-| *Default* | ``2.0``                 |
+| *Default* | ``1.5``                 |
 +-----------+-------------------------+
 | *Setter*  | set_agent_height(value) |
 +-----------+-------------------------+
@@ -186,7 +186,7 @@ The minimum floor to ceiling height that will still allow the floor area to be c
 - :ref:`float<class_float>` **agent/max_climb**
 
 +-----------+----------------------------+
-| *Default* | ``0.9``                    |
+| *Default* | ``0.25``                   |
 +-----------+----------------------------+
 | *Setter*  | set_agent_max_climb(value) |
 +-----------+----------------------------+
@@ -220,7 +220,7 @@ The maximum slope that is considered walkable, in degrees.
 - :ref:`float<class_float>` **agent/radius**
 
 +-----------+-------------------------+
-| *Default* | ``0.6``                 |
+| *Default* | ``0.5``                 |
 +-----------+-------------------------+
 | *Setter*  | set_agent_radius(value) |
 +-----------+-------------------------+
@@ -238,7 +238,7 @@ The distance to erode/shrink the walkable area of the heightfield away from obst
 - :ref:`float<class_float>` **cell/height**
 
 +-----------+------------------------+
-| *Default* | ``0.2``                |
+| *Default* | ``0.25``               |
 +-----------+------------------------+
 | *Setter*  | set_cell_height(value) |
 +-----------+------------------------+
@@ -254,7 +254,7 @@ The Y axis cell size to use for fields.
 - :ref:`float<class_float>` **cell/size**
 
 +-----------+----------------------+
-| *Default* | ``0.3``              |
+| *Default* | ``0.25``             |
 +-----------+----------------------+
 | *Setter*  | set_cell_size(value) |
 +-----------+----------------------+
@@ -482,7 +482,7 @@ Any regions with a size smaller than this will be merged with larger regions if
 - :ref:`float<class_float>` **region/min_size**
 
 +-----------+----------------------------+
-| *Default* | ``8.0``                    |
+| *Default* | ``2.0``                    |
 +-----------+----------------------------+
 | *Setter*  | set_region_min_size(value) |
 +-----------+----------------------------+

+ 10 - 4
classes/class_navigationmeshgenerator.rst

@@ -11,12 +11,18 @@ NavigationMeshGenerator
 
 **Inherits:** :ref:`Object<class_Object>`
 
-This class is responsible for creating and clearing navigation meshes.
+Helper class for creating and clearing navigation meshes.
 
 Description
 -----------
 
-This class is responsible for creating and clearing navigation meshes.
+This class is responsible for creating and clearing 3D navigation meshes used as :ref:`NavigationMesh<class_NavigationMesh>` resources inside :ref:`NavigationMeshInstance<class_NavigationMeshInstance>`. The ``NavigationMeshGenerator`` has very limited to no use for 2D as the navigation mesh baking process expects 3D node types and 3D source geometry to parse.
+
+The entire navigation mesh baking is best done in a separate thread as the voxelization, collision tests and mesh optimization steps involved are very performance and time hungry operations.
+
+Navigation mesh baking happens in multiple steps and the result depends on 3D source geometry and properties of the :ref:`NavigationMesh<class_NavigationMesh>` resource. In the first step, starting from a root node and depending on :ref:`NavigationMesh<class_NavigationMesh>` properties all valid 3D source geometry nodes are collected from the :ref:`SceneTree<class_SceneTree>`. Second, all collected nodes are parsed for their relevant 3D geometry data and a combined 3D mesh is build. Due to the many different types of parsable objects, from normal :ref:`MeshInstance<class_MeshInstance>`\ s to :ref:`CSGShape<class_CSGShape>`\ s or various :ref:`CollisionObject<class_CollisionObject>`\ s, some operations to collect geometry data can trigger :ref:`VisualServer<class_VisualServer>` and :ref:`PhysicsServer<class_PhysicsServer>` synchronizations. Server synchronization can have a negative effect on baking time or framerate as it often involves :ref:`Mutex<class_Mutex>` locking for thread security. Many parsable objects and the continuous synchronization with other threaded Servers can increase the baking time significantly. On the other hand only a few but very large and complex objects will take some time to prepare for the Servers which can noticeably stall the next frame render. As a general rule the total amount of parsable objects and their individual size and complexity should be balanced to avoid framerate issues or very long baking times. The combined mesh is then passed to the Recast Navigation Object to test the source geometry for walkable terrain suitable to :ref:`NavigationMesh<class_NavigationMesh>` agent properties by creating a voxel world around the meshes bounding area.
+
+The finalized navigation mesh is then returned and stored inside the :ref:`NavigationMesh<class_NavigationMesh>` for use as a resource inside :ref:`NavigationMeshInstance<class_NavigationMeshInstance>` nodes.
 
 Methods
 -------
@@ -34,7 +40,7 @@ Method Descriptions
 
 - void **bake** **(** :ref:`NavigationMesh<class_NavigationMesh>` nav_mesh, :ref:`Node<class_Node>` root_node **)**
 
-Bakes the navigation mesh. This will allow you to use pathfinding with the navigation system.
+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.
 
 ----
 
@@ -42,7 +48,7 @@ Bakes the navigation mesh. This will allow you to use pathfinding with the navig
 
 - void **clear** **(** :ref:`NavigationMesh<class_NavigationMesh>` nav_mesh **)**
 
-Clears the navigation mesh.
+Removes all polygons and vertices from the provided ``nav_mesh`` resource.
 
 .. |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 - 5
classes/class_navigationmeshinstance.rst

@@ -30,9 +30,11 @@ Properties
 Methods
 -------
 
-+------+---------------------------------------------------------------------------------------------------+
-| void | :ref:`bake_navigation_mesh<class_NavigationMeshInstance_method_bake_navigation_mesh>` **(** **)** |
-+------+---------------------------------------------------------------------------------------------------+
++-----------------------+------------------------------------------------------------------------------------------------------------------------------------------+
+| void                  | :ref:`bake_navigation_mesh<class_NavigationMeshInstance_method_bake_navigation_mesh>` **(** :ref:`bool<class_bool>` on_thread=true **)** |
++-----------------------+------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`RID<class_RID>` | :ref:`get_region_rid<class_NavigationMeshInstance_method_get_region_rid>` **(** **)** |const|                                            |
++-----------------------+------------------------------------------------------------------------------------------------------------------------------------------+
 
 Signals
 -------
@@ -87,9 +89,17 @@ Method Descriptions
 
 .. _class_NavigationMeshInstance_method_bake_navigation_mesh:
 
-- void **bake_navigation_mesh** **(** **)**
+- void **bake_navigation_mesh** **(** :ref:`bool<class_bool>` on_thread=true **)**
 
-Bakes the :ref:`NavigationMesh<class_NavigationMesh>`. The baking is done in a separate thread because navigation baking is not a cheap operation. This can be done at runtime. When it is completed, it automatically sets the new :ref:`NavigationMesh<class_NavigationMesh>`.
+Bakes the :ref:`NavigationMesh<class_NavigationMesh>`. If ``on_thread`` is set to ``true`` (default), the baking is done on a separate thread. Baking on separate thread is useful because navigation baking is not a cheap operation. When it is completed, it automatically sets the new :ref:`NavigationMesh<class_NavigationMesh>`. Please note that baking on separate thread may be very slow if geometry is parsed from meshes as async access to each mesh involves heavy synchronization. Also, please note that baking on a separate thread is automatically disabled on operating systems that cannot use threads (such as HTML5 with threads disabled).
+
+----
+
+.. _class_NavigationMeshInstance_method_get_region_rid:
+
+- :ref:`RID<class_RID>` **get_region_rid** **(** **)** |const|
+
+Returns the :ref:`RID<class_RID>` of this region on the :ref:`NavigationServer<class_NavigationServer>`. Combined with :ref:`NavigationServer.map_get_closest_point_owner<class_NavigationServer_method_map_get_closest_point_owner>` can be used to identify the ``NavigationMeshInstance`` closest to a point on the merged navigation map.
 
 .. |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.)`

+ 10 - 0
classes/class_navigationobstacle.rst

@@ -33,6 +33,8 @@ Methods
 +-------------------------+----------------------------------------------------------------------------------------------------------------------+
 | :ref:`Node<class_Node>` | :ref:`get_navigation<class_NavigationObstacle_method_get_navigation>` **(** **)** |const|                            |
 +-------------------------+----------------------------------------------------------------------------------------------------------------------+
+| :ref:`RID<class_RID>`   | :ref:`get_rid<class_NavigationObstacle_method_get_rid>` **(** **)** |const|                                          |
++-------------------------+----------------------------------------------------------------------------------------------------------------------+
 | void                    | :ref:`set_navigation<class_NavigationObstacle_method_set_navigation>` **(** :ref:`Node<class_Node>` navigation **)** |
 +-------------------------+----------------------------------------------------------------------------------------------------------------------+
 
@@ -80,6 +82,14 @@ Returns the :ref:`Navigation<class_Navigation>` node that the obstacle is using
 
 ----
 
+.. _class_NavigationObstacle_method_get_rid:
+
+- :ref:`RID<class_RID>` **get_rid** **(** **)** |const|
+
+Returns the :ref:`RID<class_RID>` of this obstacle on the :ref:`NavigationServer<class_NavigationServer>`.
+
+----
+
 .. _class_NavigationObstacle_method_set_navigation:
 
 - void **set_navigation** **(** :ref:`Node<class_Node>` navigation **)**

+ 10 - 0
classes/class_navigationobstacle2d.rst

@@ -33,6 +33,8 @@ Methods
 +-------------------------+------------------------------------------------------------------------------------------------------------------------+
 | :ref:`Node<class_Node>` | :ref:`get_navigation<class_NavigationObstacle2D_method_get_navigation>` **(** **)** |const|                            |
 +-------------------------+------------------------------------------------------------------------------------------------------------------------+
+| :ref:`RID<class_RID>`   | :ref:`get_rid<class_NavigationObstacle2D_method_get_rid>` **(** **)** |const|                                          |
++-------------------------+------------------------------------------------------------------------------------------------------------------------+
 | void                    | :ref:`set_navigation<class_NavigationObstacle2D_method_set_navigation>` **(** :ref:`Node<class_Node>` navigation **)** |
 +-------------------------+------------------------------------------------------------------------------------------------------------------------+
 
@@ -80,6 +82,14 @@ Returns the :ref:`Navigation2D<class_Navigation2D>` node that the obstacle is us
 
 ----
 
+.. _class_NavigationObstacle2D_method_get_rid:
+
+- :ref:`RID<class_RID>` **get_rid** **(** **)** |const|
+
+Returns the :ref:`RID<class_RID>` of this obstacle on the :ref:`Navigation2DServer<class_Navigation2DServer>`.
+
+----
+
 .. _class_NavigationObstacle2D_method_set_navigation:
 
 - void **set_navigation** **(** :ref:`Node<class_Node>` navigation **)**

+ 16 - 0
classes/class_navigationpolygoninstance.rst

@@ -22,6 +22,13 @@ Properties
 | :ref:`NavigationPolygon<class_NavigationPolygon>` | :ref:`navpoly<class_NavigationPolygonInstance_property_navpoly>` |          |
 +---------------------------------------------------+------------------------------------------------------------------+----------+
 
+Methods
+-------
+
++-----------------------+--------------------------------------------------------------------------------------------------+
+| :ref:`RID<class_RID>` | :ref:`get_region_rid<class_NavigationPolygonInstance_method_get_region_rid>` **(** **)** |const| |
++-----------------------+--------------------------------------------------------------------------------------------------+
+
 Property Descriptions
 ---------------------
 
@@ -49,6 +56,15 @@ Property Descriptions
 | *Getter* | get_navigation_polygon()      |
 +----------+-------------------------------+
 
+Method Descriptions
+-------------------
+
+.. _class_NavigationPolygonInstance_method_get_region_rid:
+
+- :ref:`RID<class_RID>` **get_region_rid** **(** **)** |const|
+
+Returns the :ref:`RID<class_RID>` of this region on the :ref:`Navigation2DServer<class_Navigation2DServer>`. Combined with :ref:`Navigation2DServer.map_get_closest_point_owner<class_Navigation2DServer_method_map_get_closest_point_owner>` can be used to identify the ``NavigationPolygonInstance`` closest to a point on the merged navigation map.
+
 .. |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.)`

+ 40 - 0
classes/class_navigationserver.rst

@@ -37,6 +37,8 @@ Methods
 +-------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
 | :ref:`RID<class_RID>`                           | :ref:`agent_create<class_NavigationServer_method_agent_create>` **(** **)** |const|                                                                                                                                                                                        |
 +-------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`RID<class_RID>`                           | :ref:`agent_get_map<class_NavigationServer_method_agent_get_map>` **(** :ref:`RID<class_RID>` agent **)** |const|                                                                                                                                                          |
++-------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
 | :ref:`bool<class_bool>`                         | :ref:`agent_is_map_changed<class_NavigationServer_method_agent_is_map_changed>` **(** :ref:`RID<class_RID>` agent **)** |const|                                                                                                                                            |
 +-------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
 | void                                            | :ref:`agent_set_callback<class_NavigationServer_method_agent_set_callback>` **(** :ref:`RID<class_RID>` agent, :ref:`Object<class_Object>` receiver, :ref:`String<class_String>` method, :ref:`Variant<class_Variant>` userdata=null **)** |const|                         |
@@ -63,6 +65,8 @@ Methods
 +-------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
 | :ref:`RID<class_RID>`                           | :ref:`map_create<class_NavigationServer_method_map_create>` **(** **)** |const|                                                                                                                                                                                            |
 +-------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`Array<class_Array>`                       | :ref:`map_get_agents<class_NavigationServer_method_map_get_agents>` **(** :ref:`RID<class_RID>` map **)** |const|                                                                                                                                                          |
++-------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
 | :ref:`float<class_float>`                       | :ref:`map_get_cell_height<class_NavigationServer_method_map_get_cell_height>` **(** :ref:`RID<class_RID>` map **)** |const|                                                                                                                                                |
 +-------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
 | :ref:`float<class_float>`                       | :ref:`map_get_cell_size<class_NavigationServer_method_map_get_cell_size>` **(** :ref:`RID<class_RID>` map **)** |const|                                                                                                                                                    |
@@ -79,6 +83,8 @@ Methods
 +-------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
 | :ref:`PoolVector3Array<class_PoolVector3Array>` | :ref:`map_get_path<class_NavigationServer_method_map_get_path>` **(** :ref:`RID<class_RID>` map, :ref:`Vector3<class_Vector3>` origin, :ref:`Vector3<class_Vector3>` destination, :ref:`bool<class_bool>` optimize **)** |const|                                           |
 +-------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`Array<class_Array>`                       | :ref:`map_get_regions<class_NavigationServer_method_map_get_regions>` **(** :ref:`RID<class_RID>` map **)** |const|                                                                                                                                                        |
++-------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
 | :ref:`Vector3<class_Vector3>`                   | :ref:`map_get_up<class_NavigationServer_method_map_get_up>` **(** :ref:`RID<class_RID>` map **)** |const|                                                                                                                                                                  |
 +-------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
 | :ref:`bool<class_bool>`                         | :ref:`map_is_active<class_NavigationServer_method_map_is_active>` **(** :ref:`RID<class_RID>` nap **)** |const|                                                                                                                                                            |
@@ -99,6 +105,8 @@ Methods
 +-------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
 | :ref:`RID<class_RID>`                           | :ref:`region_create<class_NavigationServer_method_region_create>` **(** **)** |const|                                                                                                                                                                                      |
 +-------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`RID<class_RID>`                           | :ref:`region_get_map<class_NavigationServer_method_region_get_map>` **(** :ref:`RID<class_RID>` region **)** |const|                                                                                                                                                       |
++-------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
 | void                                            | :ref:`region_set_map<class_NavigationServer_method_region_set_map>` **(** :ref:`RID<class_RID>` region, :ref:`RID<class_RID>` map **)** |const|                                                                                                                            |
 +-------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
 | void                                            | :ref:`region_set_navmesh<class_NavigationServer_method_region_set_navmesh>` **(** :ref:`RID<class_RID>` region, :ref:`NavigationMesh<class_NavigationMesh>` nav_mesh **)** |const|                                                                                         |
@@ -119,6 +127,14 @@ Creates the agent.
 
 ----
 
+.. _class_NavigationServer_method_agent_get_map:
+
+- :ref:`RID<class_RID>` **agent_get_map** **(** :ref:`RID<class_RID>` agent **)** |const|
+
+Returns the navigation map :ref:`RID<class_RID>` the requested ``agent`` is currently assigned to.
+
+----
+
 .. _class_NavigationServer_method_agent_is_map_changed:
 
 - :ref:`bool<class_bool>` **agent_is_map_changed** **(** :ref:`RID<class_RID>` agent **)** |const|
@@ -223,6 +239,14 @@ Create a new map.
 
 ----
 
+.. _class_NavigationServer_method_map_get_agents:
+
+- :ref:`Array<class_Array>` **map_get_agents** **(** :ref:`RID<class_RID>` map **)** |const|
+
+Returns all navigation agents :ref:`RID<class_RID>`\ s that are currently assigned to the requested navigation ``map``.
+
+----
+
 .. _class_NavigationServer_method_map_get_cell_height:
 
 - :ref:`float<class_float>` **map_get_cell_height** **(** :ref:`RID<class_RID>` map **)** |const|
@@ -287,6 +311,14 @@ Returns the navigation path to reach the destination from the origin.
 
 ----
 
+.. _class_NavigationServer_method_map_get_regions:
+
+- :ref:`Array<class_Array>` **map_get_regions** **(** :ref:`RID<class_RID>` map **)** |const|
+
+Returns all navigation regions :ref:`RID<class_RID>`\ s that are currently assigned to the requested navigation ``map``.
+
+----
+
 .. _class_NavigationServer_method_map_get_up:
 
 - :ref:`Vector3<class_Vector3>` **map_get_up** **(** :ref:`RID<class_RID>` map **)** |const|
@@ -371,6 +403,14 @@ Creates a new region.
 
 ----
 
+.. _class_NavigationServer_method_region_get_map:
+
+- :ref:`RID<class_RID>` **region_get_map** **(** :ref:`RID<class_RID>` region **)** |const|
+
+Returns the navigation map :ref:`RID<class_RID>` the requested ``region`` is currently assigned to.
+
+----
+
 .. _class_NavigationServer_method_region_set_map:
 
 - void **region_set_map** **(** :ref:`RID<class_RID>` region, :ref:`RID<class_RID>` map **)** |const|

+ 1 - 1
classes/class_networkedmultiplayerenet.rst

@@ -195,7 +195,7 @@ When set to an empty string, the ``address`` parameter passed to :ref:`create_cl
 | *Getter*  | is_dtls_verify_enabled()       |
 +-----------+--------------------------------+
 
-Enable or disable certificate verification when :ref:`use_dtls<class_NetworkedMultiplayerENet_property_use_dtls>` ``true``.
+Enable or disable certificate verification when :ref:`use_dtls<class_NetworkedMultiplayerENet_property_use_dtls>` is ``true``.
 
 ----
 

+ 5 - 5
classes/class_node.rst

@@ -1160,7 +1160,7 @@ Returns ``true`` if the local system is the master of this node.
 
 Returns ``true`` if the physics interpolated flag is set for this Node (see :ref:`physics_interpolation_mode<class_Node_property_physics_interpolation_mode>`).
 
-\ **Note:** Interpolation will only be active is both the flag is set **and** physics interpolation is enabled within the :ref:`SceneTree<class_SceneTree>`. This can be tested using :ref:`is_physics_interpolated_and_enabled<class_Node_method_is_physics_interpolated_and_enabled>`.
+\ **Note:** Interpolation will only be active if both the flag is set **and** physics interpolation is enabled within the :ref:`SceneTree<class_SceneTree>`. This can be tested using :ref:`is_physics_interpolated_and_enabled<class_Node_method_is_physics_interpolated_and_enabled>`.
 
 ----
 
@@ -1384,7 +1384,7 @@ This glitch can be prevented by calling ``reset_physics_interpolation``, which t
 
 - :ref:`Variant<class_Variant>` **rpc** **(** :ref:`String<class_String>` method, ... **)** |vararg|
 
-Sends a remote procedure call request for the given ``method`` to peers on the network (and locally), optionally sending all additional arguments as arguments to the method called by the RPC. The call request will only be received by nodes with the same :ref:`NodePath<class_NodePath>`, including the exact same node name. Behaviour depends on the RPC configuration for the given method, see :ref:`rpc_config<class_Node_method_rpc_config>`. Methods are not exposed to RPCs by default. See also :ref:`rset<class_Node_method_rset>` and :ref:`rset_config<class_Node_method_rset_config>` for properties. Returns an empty :ref:`Variant<class_Variant>`.
+Sends a remote procedure call request for the given ``method`` to peers on the network (and locally), optionally sending all additional arguments as arguments to the method called by the RPC. The call request will only be received by nodes with the same :ref:`NodePath<class_NodePath>`, including the exact same node name. Behaviour depends on the RPC configuration for the given method, see :ref:`rpc_config<class_Node_method_rpc_config>`. Methods are not exposed to RPCs by default. See also :ref:`rset<class_Node_method_rset>` and :ref:`rset_config<class_Node_method_rset_config>` for properties. Returns ``null``.
 
 \ **Note:** You can only safely use RPCs on clients after you received the ``connected_to_server`` signal from the :ref:`SceneTree<class_SceneTree>`. You also need to keep track of the connection state, either by the :ref:`SceneTree<class_SceneTree>` signals like ``server_disconnected`` or by checking ``SceneTree.network_peer.get_connection_status() == CONNECTION_CONNECTED``.
 
@@ -1402,7 +1402,7 @@ Changes the RPC mode for the given ``method`` to the given ``mode``. See :ref:`R
 
 - :ref:`Variant<class_Variant>` **rpc_id** **(** :ref:`int<class_int>` peer_id, :ref:`String<class_String>` method, ... **)** |vararg|
 
-Sends a :ref:`rpc<class_Node_method_rpc>` to a specific peer identified by ``peer_id`` (see :ref:`NetworkedMultiplayerPeer.set_target_peer<class_NetworkedMultiplayerPeer_method_set_target_peer>`). Returns an empty :ref:`Variant<class_Variant>`.
+Sends a :ref:`rpc<class_Node_method_rpc>` to a specific peer identified by ``peer_id`` (see :ref:`NetworkedMultiplayerPeer.set_target_peer<class_NetworkedMultiplayerPeer_method_set_target_peer>`). Returns ``null``.
 
 ----
 
@@ -1410,7 +1410,7 @@ Sends a :ref:`rpc<class_Node_method_rpc>` to a specific peer identified by ``pee
 
 - :ref:`Variant<class_Variant>` **rpc_unreliable** **(** :ref:`String<class_String>` method, ... **)** |vararg|
 
-Sends a :ref:`rpc<class_Node_method_rpc>` using an unreliable protocol. Returns an empty :ref:`Variant<class_Variant>`.
+Sends a :ref:`rpc<class_Node_method_rpc>` using an unreliable protocol. Returns ``null``.
 
 ----
 
@@ -1418,7 +1418,7 @@ Sends a :ref:`rpc<class_Node_method_rpc>` using an unreliable protocol. Returns
 
 - :ref:`Variant<class_Variant>` **rpc_unreliable_id** **(** :ref:`int<class_int>` peer_id, :ref:`String<class_String>` method, ... **)** |vararg|
 
-Sends a :ref:`rpc<class_Node_method_rpc>` to a specific peer identified by ``peer_id`` using an unreliable protocol (see :ref:`NetworkedMultiplayerPeer.set_target_peer<class_NetworkedMultiplayerPeer_method_set_target_peer>`). Returns an empty :ref:`Variant<class_Variant>`.
+Sends a :ref:`rpc<class_Node_method_rpc>` to a specific peer identified by ``peer_id`` using an unreliable protocol (see :ref:`NetworkedMultiplayerPeer.set_target_peer<class_NetworkedMultiplayerPeer_method_set_target_peer>`). Returns ``null``.
 
 ----
 

+ 2 - 2
classes/class_object.rst

@@ -316,7 +316,7 @@ Returns ``true`` if the object can translate strings. See :ref:`set_message_tran
 
 Connects a ``signal`` to a ``method`` on a ``target`` object. Pass optional ``binds`` to the call as an :ref:`Array<class_Array>` of parameters. These parameters will be passed to the method after any parameter used in the call to :ref:`emit_signal<class_Object_method_emit_signal>`. Use ``flags`` to set deferred or one-shot connections. See :ref:`ConnectFlags<enum_Object_ConnectFlags>` constants.
 
-A ``signal`` can only be connected once to a ``method``. It will throw an error if already connected, unless the signal was connected with :ref:`CONNECT_REFERENCE_COUNTED<class_Object_constant_CONNECT_REFERENCE_COUNTED>`. To avoid this, first, use :ref:`is_connected<class_Object_method_is_connected>` to check for existing connections.
+A ``signal`` can only be connected once to a ``method``. It will print an error if already connected, unless the signal was connected with :ref:`CONNECT_REFERENCE_COUNTED<class_Object_constant_CONNECT_REFERENCE_COUNTED>`. To avoid this, first, use :ref:`is_connected<class_Object_method_is_connected>` to check for existing connections.
 
 If the ``target`` is destroyed in the game's lifecycle, the connection will be lost.
 
@@ -345,7 +345,7 @@ An example of the relationship between ``binds`` passed to :ref:`connect<class_O
 
 Disconnects a ``signal`` from a ``method`` on the given ``target``.
 
-If you try to disconnect a connection that does not exist, the method will throw an error. Use :ref:`is_connected<class_Object_method_is_connected>` to ensure that the connection exists.
+If you try to disconnect a connection that does not exist, the method will print an error. Use :ref:`is_connected<class_Object_method_is_connected>` to ensure that the connection exists.
 
 ----
 

+ 3 - 1
classes/class_optionbutton.rst

@@ -254,7 +254,7 @@ Returns the :ref:`PopupMenu<class_PopupMenu>` contained in this button.
 
 - :ref:`int<class_int>` **get_selected_id** **(** **)** |const|
 
-Returns the ID of the selected item, or ``0`` if no item is selected.
+Returns the ID of the selected item, or ``-1`` if no item is selected.
 
 ----
 
@@ -288,6 +288,8 @@ Removes the item at index ``idx``.
 
 Selects an item by index and makes it the current item. This will work even if the item is disabled.
 
+Passing ``-1`` as the index deselects any currently selected item.
+
 ----
 
 .. _class_OptionButton_method_set_item_disabled:

+ 39 - 13
classes/class_os.rst

@@ -120,6 +120,8 @@ Methods
 +-----------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
 | :ref:`Dictionary<class_Dictionary>`           | :ref:`get_datetime_from_unix_time<class_OS_method_get_datetime_from_unix_time>` **(** :ref:`int<class_int>` unix_time_val **)** |const|                                                                                                                                                                            |
 +-----------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`Array<class_Array>`                     | :ref:`get_display_cutouts<class_OS_method_get_display_cutouts>` **(** **)** |const|                                                                                                                                                                                                                                |
++-----------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
 | :ref:`int<class_int>`                         | :ref:`get_dynamic_memory_usage<class_OS_method_get_dynamic_memory_usage>` **(** **)** |const|                                                                                                                                                                                                                      |
 +-----------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
 | :ref:`String<class_String>`                   | :ref:`get_environment<class_OS_method_get_environment>` **(** :ref:`String<class_String>` variable **)** |const|                                                                                                                                                                                                   |
@@ -242,6 +244,8 @@ Methods
 +-----------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
 | :ref:`bool<class_bool>`                       | :ref:`is_ok_left_and_cancel_right<class_OS_method_is_ok_left_and_cancel_right>` **(** **)** |const|                                                                                                                                                                                                                |
 +-----------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`bool<class_bool>`                       | :ref:`is_process_running<class_OS_method_is_process_running>` **(** :ref:`int<class_int>` pid **)** |const|                                                                                                                                                                                                        |
++-----------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
 | :ref:`bool<class_bool>`                       | :ref:`is_scancode_unicode<class_OS_method_is_scancode_unicode>` **(** :ref:`int<class_int>` code **)** |const|                                                                                                                                                                                                     |
 +-----------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
 | :ref:`bool<class_bool>`                       | :ref:`is_stdout_verbose<class_OS_method_is_stdout_verbose>` **(** **)** |const|                                                                                                                                                                                                                                    |
@@ -442,39 +446,39 @@ enum **HandleType**:
 
 - **APPLICATION_HANDLE** = **0** --- Application handle:
 
-- Windows: ``HINSTANCE`` of the application
+	- Windows: ``HINSTANCE`` of the application
 
-- MacOS: ``NSApplication*`` of the application (not yet implemented)
+	- MacOS: ``NSApplication*`` of the application (not yet implemented)
 
-- Android: ``JNIEnv*`` of the application (not yet implemented)
+	- Android: ``JNIEnv*`` of the application (not yet implemented)
 
 - **DISPLAY_HANDLE** = **1** --- Display handle:
 
-- Linux: ``X11::Display*`` for the display
+	- Linux: ``X11::Display*`` for the display
 
 - **WINDOW_HANDLE** = **2** --- Window handle:
 
-- Windows: ``HWND`` of the main window
+	- Windows: ``HWND`` of the main window
 
-- Linux: ``X11::Window*`` of the main window
+	- Linux: ``X11::Window*`` of the main window
 
-- MacOS: ``NSWindow*`` of the main window (not yet implemented)
+	- MacOS: ``NSWindow*`` of the main window (not yet implemented)
 
-- Android: ``jObject`` the main android activity (not yet implemented)
+	- Android: ``jObject`` the main android activity (not yet implemented)
 
 - **WINDOW_VIEW** = **3** --- Window view:
 
-- Windows: ``HDC`` of the main window drawing context
+	- Windows: ``HDC`` of the main window drawing context
 
-- MacOS: ``NSView*`` of the main windows view (not yet implemented)
+	- MacOS: ``NSView*`` of the main windows view (not yet implemented)
 
 - **OPENGL_CONTEXT** = **4** --- OpenGL Context:
 
-- Windows: ``HGLRC``\ 
+	- Windows: ``HGLRC``\ 
 
-- Linux: ``X11::GLXContext``\ 
+	- Linux: ``X11::GLXContext``\ 
 
-- MacOS: ``NSOpenGLContext*`` (not yet implemented)
+	- MacOS: ``NSOpenGLContext*`` (not yet implemented)
 
 ----
 
@@ -1203,6 +1207,16 @@ The returned Dictionary's values will be the same as :ref:`get_datetime<class_OS
 
 ----
 
+.. _class_OS_method_get_display_cutouts:
+
+- :ref:`Array<class_Array>` **get_display_cutouts** **(** **)** |const|
+
+Returns an :ref:`Array<class_Array>` of :ref:`Rect2<class_Rect2>`, each of which is the bounding rectangle for a display cutout or notch. These are non-functional areas on edge-to-edge screens used by cameras and sensors. Returns an empty array if the device does not have cutouts. See also :ref:`get_window_safe_area<class_OS_method_get_window_safe_area>`.
+
+\ **Note:** Currently only implemented on Android. Other platforms will return an empty array even if they do have display cutouts or notches.
+
+----
+
 .. _class_OS_method_get_dynamic_memory_usage:
 
 - :ref:`int<class_int>` **get_dynamic_memory_usage** **(** **)** |const|
@@ -1824,6 +1838,18 @@ Returns ``true`` if the **OK** button should appear on the left and **Cancel** o
 
 ----
 
+.. _class_OS_method_is_process_running:
+
+- :ref:`bool<class_bool>` **is_process_running** **(** :ref:`int<class_int>` pid **)** |const|
+
+Returns ``true`` if the child process ID (``pid``) is still running or ``false`` if it has terminated.
+
+Must be a valid ID generated from :ref:`execute<class_OS_method_execute>`.
+
+\ **Note:** This method is implemented on Android, iOS, Linux, macOS and Windows.
+
+----
+
 .. _class_OS_method_is_scancode_unicode:
 
 - :ref:`bool<class_bool>` **is_scancode_unicode** **(** :ref:`int<class_int>` code **)** |const|

+ 2 - 0
classes/class_panelcontainer.rst

@@ -23,6 +23,8 @@ Panel container type. This container fits controls inside of the delimited area
 Tutorials
 ---------
 
+- :doc:`GUI containers <../tutorials/ui/gui_containers>`
+
 - `2D Role Playing Game Demo <https://godotengine.org/asset-library/asset/520>`__
 
 Theme Properties

+ 3 - 1
classes/class_polygon2d.rst

@@ -95,7 +95,9 @@ Property Descriptions
 | *Getter*  | get_antialiased()      |
 +-----------+------------------------+
 
-If ``true``, polygon edges will be anti-aliased.
+If ``true``, attempts to perform antialiasing for polygon edges by drawing a thin OpenGL smooth line on the edges.
+
+\ **Note:** Due to how it works, built-in antialiasing will not look correct for translucent polygons and may not work on certain platforms. As a workaround, install the `Antialiased Line2D <https://github.com/godot-extended-libraries/godot-antialiased-line2d>`__ add-on then create an AntialiasedPolygon2D node. That node relies on a texture with custom mipmaps to perform antialiasing.
 
 ----
 

+ 59 - 1
classes/class_poolbytearray.rst

@@ -16,7 +16,23 @@ Description
 
 An array specifically designed to hold bytes. Optimized for memory usage, does not fragment the memory.
 
-\ **Note:** This type is passed by value and not by reference.
+\ **Note:** This type is passed by value and not by reference. This means that when *mutating* a class property of type ``PoolByteArray`` or mutating a ``PoolByteArray`` within an :ref:`Array<class_Array>` or :ref:`Dictionary<class_Dictionary>`, changes will be lost:
+
+::
+
+    var array = [PoolByteArray()]
+    array[0].push_back(123)
+    print(array)  # [[]] (empty PoolByteArray within an empty Array)
+
+Instead, the entire ``PoolByteArray`` property must be *reassigned* with ``=`` for it to be changed:
+
+::
+
+    var array = [PoolByteArray()]
+    var pool_array = array[0]
+    pool_array.push_back(123)
+    array[0] = pool_array
+    print(array)  # [[123]] (PoolByteArray with 1 element inside an Array)
 
 Methods
 -------
@@ -30,6 +46,8 @@ Methods
 +-------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------+
 | :ref:`PoolByteArray<class_PoolByteArray>` | :ref:`compress<class_PoolByteArray_method_compress>` **(** :ref:`int<class_int>` compression_mode=0 **)**                                                            |
 +-------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`int<class_int>`                     | :ref:`count<class_PoolByteArray_method_count>` **(** :ref:`int<class_int>` value **)**                                                                               |
++-------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------+
 | :ref:`PoolByteArray<class_PoolByteArray>` | :ref:`decompress<class_PoolByteArray_method_decompress>` **(** :ref:`int<class_int>` buffer_size, :ref:`int<class_int>` compression_mode=0 **)**                     |
 +-------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------+
 | :ref:`PoolByteArray<class_PoolByteArray>` | :ref:`decompress_dynamic<class_PoolByteArray_method_decompress_dynamic>` **(** :ref:`int<class_int>` max_output_size, :ref:`int<class_int>` compression_mode=0 **)** |
@@ -38,10 +56,14 @@ Methods
 +-------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------+
 | void                                      | :ref:`fill<class_PoolByteArray_method_fill>` **(** :ref:`int<class_int>` byte **)**                                                                                  |
 +-------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`int<class_int>`                     | :ref:`find<class_PoolByteArray_method_find>` **(** :ref:`int<class_int>` value, :ref:`int<class_int>` from=0 **)**                                                   |
++-------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------+
 | :ref:`String<class_String>`               | :ref:`get_string_from_ascii<class_PoolByteArray_method_get_string_from_ascii>` **(** **)**                                                                           |
 +-------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------+
 | :ref:`String<class_String>`               | :ref:`get_string_from_utf8<class_PoolByteArray_method_get_string_from_utf8>` **(** **)**                                                                             |
 +-------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`bool<class_bool>`                   | :ref:`has<class_PoolByteArray_method_has>` **(** :ref:`int<class_int>` value **)**                                                                                   |
++-------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------+
 | :ref:`String<class_String>`               | :ref:`hex_encode<class_PoolByteArray_method_hex_encode>` **(** **)**                                                                                                 |
 +-------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------+
 | :ref:`int<class_int>`                     | :ref:`insert<class_PoolByteArray_method_insert>` **(** :ref:`int<class_int>` idx, :ref:`int<class_int>` byte **)**                                                   |
@@ -54,6 +76,8 @@ Methods
 +-------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------+
 | void                                      | :ref:`resize<class_PoolByteArray_method_resize>` **(** :ref:`int<class_int>` idx **)**                                                                               |
 +-------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`int<class_int>`                     | :ref:`rfind<class_PoolByteArray_method_rfind>` **(** :ref:`int<class_int>` value, :ref:`int<class_int>` from=-1 **)**                                                |
++-------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------+
 | void                                      | :ref:`set<class_PoolByteArray_method_set>` **(** :ref:`int<class_int>` idx, :ref:`int<class_int>` byte **)**                                                         |
 +-------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------+
 | :ref:`int<class_int>`                     | :ref:`size<class_PoolByteArray_method_size>` **(** **)**                                                                                                             |
@@ -96,6 +120,14 @@ Returns a new ``PoolByteArray`` with the data compressed. Set the compression mo
 
 ----
 
+.. _class_PoolByteArray_method_count:
+
+- :ref:`int<class_int>` **count** **(** :ref:`int<class_int>` value **)**
+
+Returns the number of times an element is in the array.
+
+----
+
 .. _class_PoolByteArray_method_decompress:
 
 - :ref:`PoolByteArray<class_PoolByteArray>` **decompress** **(** :ref:`int<class_int>` buffer_size, :ref:`int<class_int>` compression_mode=0 **)**
@@ -134,6 +166,14 @@ Assigns the given value to all elements in the array. This can typically be used
 
 ----
 
+.. _class_PoolByteArray_method_find:
+
+- :ref:`int<class_int>` **find** **(** :ref:`int<class_int>` value, :ref:`int<class_int>` from=0 **)**
+
+Searches the array for a value and returns its index or ``-1`` if not found. Optionally, the initial search index can be passed. Returns ``-1`` if ``from`` is out of bounds.
+
+----
+
 .. _class_PoolByteArray_method_get_string_from_ascii:
 
 - :ref:`String<class_String>` **get_string_from_ascii** **(** **)**
@@ -150,6 +190,16 @@ Returns a copy of the array's contents as :ref:`String<class_String>`. Slower th
 
 ----
 
+.. _class_PoolByteArray_method_has:
+
+- :ref:`bool<class_bool>` **has** **(** :ref:`int<class_int>` value **)**
+
+Returns ``true`` if the array contains the given value.
+
+\ **Note:** This is equivalent to using the ``in`` operator.
+
+----
+
 .. _class_PoolByteArray_method_hex_encode:
 
 - :ref:`String<class_String>` **hex_encode** **(** **)**
@@ -205,6 +255,14 @@ Sets the size of the array. If the array is grown, reserves elements at the end
 
 ----
 
+.. _class_PoolByteArray_method_rfind:
+
+- :ref:`int<class_int>` **rfind** **(** :ref:`int<class_int>` value, :ref:`int<class_int>` from=-1 **)**
+
+Searches the array in reverse order. Optionally, a start search index can be passed. If negative, the start index is considered relative to the end of the array. If the adjusted start index is out of bounds, this method searches from the end of the array.
+
+----
+
 .. _class_PoolByteArray_method_set:
 
 - void **set** **(** :ref:`int<class_int>` idx, :ref:`int<class_int>` byte **)**

+ 60 - 2
classes/class_poolcolorarray.rst

@@ -9,14 +9,30 @@
 PoolColorArray
 ==============
 
-A pooled array of :ref:`Color<class_Color>`.
+A pooled array of :ref:`Color<class_Color>`\ s.
 
 Description
 -----------
 
 An array specifically designed to hold :ref:`Color<class_Color>`. Optimized for memory usage, does not fragment the memory.
 
-\ **Note:** This type is passed by value and not by reference.
+\ **Note:** This type is passed by value and not by reference. This means that when *mutating* a class property of type ``PoolColorArray`` or mutating a ``PoolColorArray`` within an :ref:`Array<class_Array>` or :ref:`Dictionary<class_Dictionary>`, changes will be lost:
+
+::
+
+    var array = [PoolColorArray()]
+    array[0].push_back(Color(0.1, 0.2, 0.3, 0.4))
+    print(array)  # [[]] (empty PoolColorArray within an empty Array)
+
+Instead, the entire ``PoolColorArray`` property must be *reassigned* with ``=`` for it to be changed:
+
+::
+
+    var array = [PoolColorArray()]
+    var pool_array = array[0]
+    pool_array.push_back(Color(0.1, 0.2, 0.3, 0.4))
+    array[0] = pool_array
+    print(array)  # [[(0.1, 0.2, 0.3, 0.4)]] (PoolColorArray with 1 element inside an Array)
 
 Methods
 -------
@@ -28,10 +44,16 @@ Methods
 +---------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------+
 | void                                        | :ref:`append_array<class_PoolColorArray_method_append_array>` **(** :ref:`PoolColorArray<class_PoolColorArray>` array **)** |
 +---------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------+
+| :ref:`int<class_int>`                       | :ref:`count<class_PoolColorArray_method_count>` **(** :ref:`Color<class_Color>` value **)**                                 |
++---------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------+
 | :ref:`bool<class_bool>`                     | :ref:`empty<class_PoolColorArray_method_empty>` **(** **)**                                                                 |
 +---------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------+
 | void                                        | :ref:`fill<class_PoolColorArray_method_fill>` **(** :ref:`Color<class_Color>` color **)**                                   |
 +---------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------+
+| :ref:`int<class_int>`                       | :ref:`find<class_PoolColorArray_method_find>` **(** :ref:`Color<class_Color>` value, :ref:`int<class_int>` from=0 **)**     |
++---------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------+
+| :ref:`bool<class_bool>`                     | :ref:`has<class_PoolColorArray_method_has>` **(** :ref:`Color<class_Color>` value **)**                                     |
++---------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------+
 | :ref:`int<class_int>`                       | :ref:`insert<class_PoolColorArray_method_insert>` **(** :ref:`int<class_int>` idx, :ref:`Color<class_Color>` color **)**    |
 +---------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------+
 | void                                        | :ref:`invert<class_PoolColorArray_method_invert>` **(** **)**                                                               |
@@ -42,6 +64,8 @@ Methods
 +---------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------+
 | void                                        | :ref:`resize<class_PoolColorArray_method_resize>` **(** :ref:`int<class_int>` idx **)**                                     |
 +---------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------+
+| :ref:`int<class_int>`                       | :ref:`rfind<class_PoolColorArray_method_rfind>` **(** :ref:`Color<class_Color>` value, :ref:`int<class_int>` from=-1 **)**  |
++---------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------+
 | void                                        | :ref:`set<class_PoolColorArray_method_set>` **(** :ref:`int<class_int>` idx, :ref:`Color<class_Color>` color **)**          |
 +---------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------+
 | :ref:`int<class_int>`                       | :ref:`size<class_PoolColorArray_method_size>` **(** **)**                                                                   |
@@ -74,6 +98,14 @@ Appends a ``PoolColorArray`` at the end of this array.
 
 ----
 
+.. _class_PoolColorArray_method_count:
+
+- :ref:`int<class_int>` **count** **(** :ref:`Color<class_Color>` value **)**
+
+Returns the number of times an element is in the array.
+
+----
+
 .. _class_PoolColorArray_method_empty:
 
 - :ref:`bool<class_bool>` **empty** **(** **)**
@@ -90,6 +122,24 @@ Assigns the given value to all elements in the array. This can typically be used
 
 ----
 
+.. _class_PoolColorArray_method_find:
+
+- :ref:`int<class_int>` **find** **(** :ref:`Color<class_Color>` value, :ref:`int<class_int>` from=0 **)**
+
+Searches the array for a value and returns its index or ``-1`` if not found. Optionally, the initial search index can be passed. Returns ``-1`` if ``from`` is out of bounds.
+
+----
+
+.. _class_PoolColorArray_method_has:
+
+- :ref:`bool<class_bool>` **has** **(** :ref:`Color<class_Color>` value **)**
+
+Returns ``true`` if the array contains the given value.
+
+\ **Note:** This is equivalent to using the ``in`` operator.
+
+----
+
 .. _class_PoolColorArray_method_insert:
 
 - :ref:`int<class_int>` **insert** **(** :ref:`int<class_int>` idx, :ref:`Color<class_Color>` color **)**
@@ -130,6 +180,14 @@ Sets the size of the array. If the array is grown, reserves elements at the end
 
 ----
 
+.. _class_PoolColorArray_method_rfind:
+
+- :ref:`int<class_int>` **rfind** **(** :ref:`Color<class_Color>` value, :ref:`int<class_int>` from=-1 **)**
+
+Searches the array in reverse order. Optionally, a start search index can be passed. If negative, the start index is considered relative to the end of the array. If the adjusted start index is out of bounds, this method searches from the end of the array.
+
+----
+
 .. _class_PoolColorArray_method_set:
 
 - void **set** **(** :ref:`int<class_int>` idx, :ref:`Color<class_Color>` color **)**

+ 59 - 1
classes/class_poolintarray.rst

@@ -16,7 +16,23 @@ Description
 
 An array specifically designed to hold integer values (:ref:`int<class_int>`). Optimized for memory usage, does not fragment the memory.
 
-\ **Note:** This type is passed by value and not by reference.
+\ **Note:** This type is passed by value and not by reference. This means that when *mutating* a class property of type ``PoolIntArray`` or mutating a ``PoolIntArray`` within an :ref:`Array<class_Array>` or :ref:`Dictionary<class_Dictionary>`, changes will be lost:
+
+::
+
+    var array = [PoolIntArray()]
+    array[0].push_back(1234)
+    print(array)  # [[]] (empty PoolIntArray within an empty Array)
+
+Instead, the entire ``PoolIntArray`` property must be *reassigned* with ``=`` for it to be changed:
+
+::
+
+    var array = [PoolIntArray()]
+    var pool_array = array[0]
+    pool_array.push_back(1234)
+    array[0] = pool_array
+    print(array)  # [[1234]] (PoolIntArray with 1 element inside an Array)
 
 \ **Note:** This type is limited to signed 32-bit integers, which means it can only take values in the interval ``[-2^31, 2^31 - 1]``, i.e. ``[-2147483648, 2147483647]``. Exceeding those bounds will wrap around. In comparison, :ref:`int<class_int>` uses signed 64-bit integers which can hold much larger values.
 
@@ -30,10 +46,16 @@ Methods
 +-----------------------------------------+-----------------------------------------------------------------------------------------------------------------------+
 | void                                    | :ref:`append_array<class_PoolIntArray_method_append_array>` **(** :ref:`PoolIntArray<class_PoolIntArray>` array **)** |
 +-----------------------------------------+-----------------------------------------------------------------------------------------------------------------------+
+| :ref:`int<class_int>`                   | :ref:`count<class_PoolIntArray_method_count>` **(** :ref:`int<class_int>` value **)**                                 |
++-----------------------------------------+-----------------------------------------------------------------------------------------------------------------------+
 | :ref:`bool<class_bool>`                 | :ref:`empty<class_PoolIntArray_method_empty>` **(** **)**                                                             |
 +-----------------------------------------+-----------------------------------------------------------------------------------------------------------------------+
 | void                                    | :ref:`fill<class_PoolIntArray_method_fill>` **(** :ref:`int<class_int>` integer **)**                                 |
 +-----------------------------------------+-----------------------------------------------------------------------------------------------------------------------+
+| :ref:`int<class_int>`                   | :ref:`find<class_PoolIntArray_method_find>` **(** :ref:`int<class_int>` value, :ref:`int<class_int>` from=0 **)**     |
++-----------------------------------------+-----------------------------------------------------------------------------------------------------------------------+
+| :ref:`bool<class_bool>`                 | :ref:`has<class_PoolIntArray_method_has>` **(** :ref:`int<class_int>` value **)**                                     |
++-----------------------------------------+-----------------------------------------------------------------------------------------------------------------------+
 | :ref:`int<class_int>`                   | :ref:`insert<class_PoolIntArray_method_insert>` **(** :ref:`int<class_int>` idx, :ref:`int<class_int>` integer **)**  |
 +-----------------------------------------+-----------------------------------------------------------------------------------------------------------------------+
 | void                                    | :ref:`invert<class_PoolIntArray_method_invert>` **(** **)**                                                           |
@@ -44,6 +66,8 @@ Methods
 +-----------------------------------------+-----------------------------------------------------------------------------------------------------------------------+
 | void                                    | :ref:`resize<class_PoolIntArray_method_resize>` **(** :ref:`int<class_int>` idx **)**                                 |
 +-----------------------------------------+-----------------------------------------------------------------------------------------------------------------------+
+| :ref:`int<class_int>`                   | :ref:`rfind<class_PoolIntArray_method_rfind>` **(** :ref:`int<class_int>` value, :ref:`int<class_int>` from=-1 **)**  |
++-----------------------------------------+-----------------------------------------------------------------------------------------------------------------------+
 | void                                    | :ref:`set<class_PoolIntArray_method_set>` **(** :ref:`int<class_int>` idx, :ref:`int<class_int>` integer **)**        |
 +-----------------------------------------+-----------------------------------------------------------------------------------------------------------------------+
 | :ref:`int<class_int>`                   | :ref:`size<class_PoolIntArray_method_size>` **(** **)**                                                               |
@@ -76,6 +100,14 @@ Appends a ``PoolIntArray`` at the end of this array.
 
 ----
 
+.. _class_PoolIntArray_method_count:
+
+- :ref:`int<class_int>` **count** **(** :ref:`int<class_int>` value **)**
+
+Returns the number of times an element is in the array.
+
+----
+
 .. _class_PoolIntArray_method_empty:
 
 - :ref:`bool<class_bool>` **empty** **(** **)**
@@ -92,6 +124,24 @@ Assigns the given value to all elements in the array. This can typically be used
 
 ----
 
+.. _class_PoolIntArray_method_find:
+
+- :ref:`int<class_int>` **find** **(** :ref:`int<class_int>` value, :ref:`int<class_int>` from=0 **)**
+
+Searches the array for a value and returns its index or ``-1`` if not found. Optionally, the initial search index can be passed. Returns ``-1`` if ``from`` is out of bounds.
+
+----
+
+.. _class_PoolIntArray_method_has:
+
+- :ref:`bool<class_bool>` **has** **(** :ref:`int<class_int>` value **)**
+
+Returns ``true`` if the array contains the given value.
+
+\ **Note:** This is equivalent to using the ``in`` operator.
+
+----
+
 .. _class_PoolIntArray_method_insert:
 
 - :ref:`int<class_int>` **insert** **(** :ref:`int<class_int>` idx, :ref:`int<class_int>` integer **)**
@@ -134,6 +184,14 @@ Sets the size of the array. If the array is grown, reserves elements at the end
 
 ----
 
+.. _class_PoolIntArray_method_rfind:
+
+- :ref:`int<class_int>` **rfind** **(** :ref:`int<class_int>` value, :ref:`int<class_int>` from=-1 **)**
+
+Searches the array in reverse order. Optionally, a start search index can be passed. If negative, the start index is considered relative to the end of the array. If the adjusted start index is out of bounds, this method searches from the end of the array.
+
+----
+
 .. _class_PoolIntArray_method_set:
 
 - void **set** **(** :ref:`int<class_int>` idx, :ref:`int<class_int>` integer **)**

+ 85 - 27
classes/class_poolrealarray.rst

@@ -9,45 +9,69 @@
 PoolRealArray
 =============
 
-A pooled array of reals (:ref:`float<class_float>`).
+A pooled array of real numbers (:ref:`float<class_float>`).
 
 Description
 -----------
 
 An array specifically designed to hold floating-point values. Optimized for memory usage, does not fragment the memory.
 
-\ **Note:** This type is passed by value and not by reference.
+\ **Note:** This type is passed by value and not by reference. This means that when *mutating* a class property of type ``PoolRealArray`` or mutating a ``PoolRealArray`` within an :ref:`Array<class_Array>` or :ref:`Dictionary<class_Dictionary>`, changes will be lost:
+
+::
+
+    var array = [PoolRealArray()]
+    array[0].push_back(12.34)
+    print(array)  # [[]] (empty PoolRealArray within an empty Array)
+
+Instead, the entire ``PoolRealArray`` property must be *reassigned* with ``=`` for it to be changed:
+
+::
+
+    var array = [PoolRealArray()]
+    var pool_array = array[0]
+    pool_array.push_back(12.34)
+    array[0] = pool_array
+    print(array)  # [[12.34]] (PoolRealArray with 1 element inside an Array)
 
 \ **Note:** Unlike primitive :ref:`float<class_float>`\ s which are 64-bit, numbers stored in ``PoolRealArray`` are 32-bit floats. This means values stored in ``PoolRealArray`` have lower precision compared to primitive :ref:`float<class_float>`\ s. If you need to store 64-bit floats in an array, use a generic :ref:`Array<class_Array>` with :ref:`float<class_float>` elements as these will still be 64-bit. However, using a generic :ref:`Array<class_Array>` to store :ref:`float<class_float>`\ s will use roughly 6 times more memory compared to a ``PoolRealArray``.
 
 Methods
 -------
 
-+-------------------------------------------+--------------------------------------------------------------------------------------------------------------------------+
-| :ref:`PoolRealArray<class_PoolRealArray>` | :ref:`PoolRealArray<class_PoolRealArray_method_PoolRealArray>` **(** :ref:`Array<class_Array>` from **)**                |
-+-------------------------------------------+--------------------------------------------------------------------------------------------------------------------------+
-| void                                      | :ref:`append<class_PoolRealArray_method_append>` **(** :ref:`float<class_float>` value **)**                             |
-+-------------------------------------------+--------------------------------------------------------------------------------------------------------------------------+
-| void                                      | :ref:`append_array<class_PoolRealArray_method_append_array>` **(** :ref:`PoolRealArray<class_PoolRealArray>` array **)** |
-+-------------------------------------------+--------------------------------------------------------------------------------------------------------------------------+
-| :ref:`bool<class_bool>`                   | :ref:`empty<class_PoolRealArray_method_empty>` **(** **)**                                                               |
-+-------------------------------------------+--------------------------------------------------------------------------------------------------------------------------+
-| void                                      | :ref:`fill<class_PoolRealArray_method_fill>` **(** :ref:`float<class_float>` value **)**                                 |
-+-------------------------------------------+--------------------------------------------------------------------------------------------------------------------------+
-| :ref:`int<class_int>`                     | :ref:`insert<class_PoolRealArray_method_insert>` **(** :ref:`int<class_int>` idx, :ref:`float<class_float>` value **)**  |
-+-------------------------------------------+--------------------------------------------------------------------------------------------------------------------------+
-| void                                      | :ref:`invert<class_PoolRealArray_method_invert>` **(** **)**                                                             |
-+-------------------------------------------+--------------------------------------------------------------------------------------------------------------------------+
-| void                                      | :ref:`push_back<class_PoolRealArray_method_push_back>` **(** :ref:`float<class_float>` value **)**                       |
-+-------------------------------------------+--------------------------------------------------------------------------------------------------------------------------+
-| void                                      | :ref:`remove<class_PoolRealArray_method_remove>` **(** :ref:`int<class_int>` idx **)**                                   |
-+-------------------------------------------+--------------------------------------------------------------------------------------------------------------------------+
-| void                                      | :ref:`resize<class_PoolRealArray_method_resize>` **(** :ref:`int<class_int>` idx **)**                                   |
-+-------------------------------------------+--------------------------------------------------------------------------------------------------------------------------+
-| void                                      | :ref:`set<class_PoolRealArray_method_set>` **(** :ref:`int<class_int>` idx, :ref:`float<class_float>` value **)**        |
-+-------------------------------------------+--------------------------------------------------------------------------------------------------------------------------+
-| :ref:`int<class_int>`                     | :ref:`size<class_PoolRealArray_method_size>` **(** **)**                                                                 |
-+-------------------------------------------+--------------------------------------------------------------------------------------------------------------------------+
++-------------------------------------------+---------------------------------------------------------------------------------------------------------------------------+
+| :ref:`PoolRealArray<class_PoolRealArray>` | :ref:`PoolRealArray<class_PoolRealArray_method_PoolRealArray>` **(** :ref:`Array<class_Array>` from **)**                 |
++-------------------------------------------+---------------------------------------------------------------------------------------------------------------------------+
+| void                                      | :ref:`append<class_PoolRealArray_method_append>` **(** :ref:`float<class_float>` value **)**                              |
++-------------------------------------------+---------------------------------------------------------------------------------------------------------------------------+
+| void                                      | :ref:`append_array<class_PoolRealArray_method_append_array>` **(** :ref:`PoolRealArray<class_PoolRealArray>` array **)**  |
++-------------------------------------------+---------------------------------------------------------------------------------------------------------------------------+
+| :ref:`int<class_int>`                     | :ref:`count<class_PoolRealArray_method_count>` **(** :ref:`float<class_float>` value **)**                                |
++-------------------------------------------+---------------------------------------------------------------------------------------------------------------------------+
+| :ref:`bool<class_bool>`                   | :ref:`empty<class_PoolRealArray_method_empty>` **(** **)**                                                                |
++-------------------------------------------+---------------------------------------------------------------------------------------------------------------------------+
+| void                                      | :ref:`fill<class_PoolRealArray_method_fill>` **(** :ref:`float<class_float>` value **)**                                  |
++-------------------------------------------+---------------------------------------------------------------------------------------------------------------------------+
+| :ref:`int<class_int>`                     | :ref:`find<class_PoolRealArray_method_find>` **(** :ref:`float<class_float>` value, :ref:`int<class_int>` from=0 **)**    |
++-------------------------------------------+---------------------------------------------------------------------------------------------------------------------------+
+| :ref:`bool<class_bool>`                   | :ref:`has<class_PoolRealArray_method_has>` **(** :ref:`float<class_float>` value **)**                                    |
++-------------------------------------------+---------------------------------------------------------------------------------------------------------------------------+
+| :ref:`int<class_int>`                     | :ref:`insert<class_PoolRealArray_method_insert>` **(** :ref:`int<class_int>` idx, :ref:`float<class_float>` value **)**   |
++-------------------------------------------+---------------------------------------------------------------------------------------------------------------------------+
+| void                                      | :ref:`invert<class_PoolRealArray_method_invert>` **(** **)**                                                              |
++-------------------------------------------+---------------------------------------------------------------------------------------------------------------------------+
+| void                                      | :ref:`push_back<class_PoolRealArray_method_push_back>` **(** :ref:`float<class_float>` value **)**                        |
++-------------------------------------------+---------------------------------------------------------------------------------------------------------------------------+
+| void                                      | :ref:`remove<class_PoolRealArray_method_remove>` **(** :ref:`int<class_int>` idx **)**                                    |
++-------------------------------------------+---------------------------------------------------------------------------------------------------------------------------+
+| void                                      | :ref:`resize<class_PoolRealArray_method_resize>` **(** :ref:`int<class_int>` idx **)**                                    |
++-------------------------------------------+---------------------------------------------------------------------------------------------------------------------------+
+| :ref:`int<class_int>`                     | :ref:`rfind<class_PoolRealArray_method_rfind>` **(** :ref:`float<class_float>` value, :ref:`int<class_int>` from=-1 **)** |
++-------------------------------------------+---------------------------------------------------------------------------------------------------------------------------+
+| void                                      | :ref:`set<class_PoolRealArray_method_set>` **(** :ref:`int<class_int>` idx, :ref:`float<class_float>` value **)**         |
++-------------------------------------------+---------------------------------------------------------------------------------------------------------------------------+
+| :ref:`int<class_int>`                     | :ref:`size<class_PoolRealArray_method_size>` **(** **)**                                                                  |
++-------------------------------------------+---------------------------------------------------------------------------------------------------------------------------+
 
 Method Descriptions
 -------------------
@@ -76,6 +100,14 @@ Appends a ``PoolRealArray`` at the end of this array.
 
 ----
 
+.. _class_PoolRealArray_method_count:
+
+- :ref:`int<class_int>` **count** **(** :ref:`float<class_float>` value **)**
+
+Returns the number of times an element is in the array.
+
+----
+
 .. _class_PoolRealArray_method_empty:
 
 - :ref:`bool<class_bool>` **empty** **(** **)**
@@ -92,6 +124,24 @@ Assigns the given value to all elements in the array. This can typically be used
 
 ----
 
+.. _class_PoolRealArray_method_find:
+
+- :ref:`int<class_int>` **find** **(** :ref:`float<class_float>` value, :ref:`int<class_int>` from=0 **)**
+
+Searches the array for a value and returns its index or ``-1`` if not found. Optionally, the initial search index can be passed. Returns ``-1`` if ``from`` is out of bounds.
+
+----
+
+.. _class_PoolRealArray_method_has:
+
+- :ref:`bool<class_bool>` **has** **(** :ref:`float<class_float>` value **)**
+
+Returns ``true`` if the array contains the given value.
+
+\ **Note:** This is equivalent to using the ``in`` operator.
+
+----
+
 .. _class_PoolRealArray_method_insert:
 
 - :ref:`int<class_int>` **insert** **(** :ref:`int<class_int>` idx, :ref:`float<class_float>` value **)**
@@ -134,6 +184,14 @@ Sets the size of the array. If the array is grown, reserves elements at the end
 
 ----
 
+.. _class_PoolRealArray_method_rfind:
+
+- :ref:`int<class_int>` **rfind** **(** :ref:`float<class_float>` value, :ref:`int<class_int>` from=-1 **)**
+
+Searches the array in reverse order. Optionally, a start search index can be passed. If negative, the start index is considered relative to the end of the array. If the adjusted start index is out of bounds, this method searches from the end of the array.
+
+----
+
 .. _class_PoolRealArray_method_set:
 
 - void **set** **(** :ref:`int<class_int>` idx, :ref:`float<class_float>` value **)**

+ 60 - 2
classes/class_poolstringarray.rst

@@ -9,14 +9,30 @@
 PoolStringArray
 ===============
 
-A pooled array of :ref:`String<class_String>`.
+A pooled array of :ref:`String<class_String>`\ s.
 
 Description
 -----------
 
 An array specifically designed to hold :ref:`String<class_String>`\ s. Optimized for memory usage, does not fragment the memory.
 
-\ **Note:** This type is passed by value and not by reference.
+\ **Note:** This type is passed by value and not by reference. This means that when *mutating* a class property of type ``PoolStringArray`` or mutating a ``PoolStringArray`` within an :ref:`Array<class_Array>` or :ref:`Dictionary<class_Dictionary>`, changes will be lost:
+
+::
+
+    var array = [PoolStringArray()]
+    array[0].push_back("hello")
+    print(array)  # [[]] (empty PoolStringArray within an empty Array)
+
+Instead, the entire ``PoolStringArray`` property must be *reassigned* with ``=`` for it to be changed:
+
+::
+
+    var array = [PoolStringArray()]
+    var pool_array = array[0]
+    pool_array.push_back("hello")
+    array[0] = pool_array
+    print(array)  # [[hello]] (PoolStringArray with 1 element inside an Array)
 
 Tutorials
 ---------
@@ -33,10 +49,16 @@ Methods
 +-----------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------+
 | void                                          | :ref:`append_array<class_PoolStringArray_method_append_array>` **(** :ref:`PoolStringArray<class_PoolStringArray>` array **)** |
 +-----------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`int<class_int>`                         | :ref:`count<class_PoolStringArray_method_count>` **(** :ref:`String<class_String>` value **)**                                 |
++-----------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------+
 | :ref:`bool<class_bool>`                       | :ref:`empty<class_PoolStringArray_method_empty>` **(** **)**                                                                   |
 +-----------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------+
 | void                                          | :ref:`fill<class_PoolStringArray_method_fill>` **(** :ref:`String<class_String>` string **)**                                  |
 +-----------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`int<class_int>`                         | :ref:`find<class_PoolStringArray_method_find>` **(** :ref:`String<class_String>` value, :ref:`int<class_int>` from=0 **)**     |
++-----------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`bool<class_bool>`                       | :ref:`has<class_PoolStringArray_method_has>` **(** :ref:`String<class_String>` value **)**                                     |
++-----------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------+
 | :ref:`int<class_int>`                         | :ref:`insert<class_PoolStringArray_method_insert>` **(** :ref:`int<class_int>` idx, :ref:`String<class_String>` string **)**   |
 +-----------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------+
 | void                                          | :ref:`invert<class_PoolStringArray_method_invert>` **(** **)**                                                                 |
@@ -49,6 +71,8 @@ Methods
 +-----------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------+
 | void                                          | :ref:`resize<class_PoolStringArray_method_resize>` **(** :ref:`int<class_int>` idx **)**                                       |
 +-----------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`int<class_int>`                         | :ref:`rfind<class_PoolStringArray_method_rfind>` **(** :ref:`String<class_String>` value, :ref:`int<class_int>` from=-1 **)**  |
++-----------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------+
 | void                                          | :ref:`set<class_PoolStringArray_method_set>` **(** :ref:`int<class_int>` idx, :ref:`String<class_String>` string **)**         |
 +-----------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------+
 | :ref:`int<class_int>`                         | :ref:`size<class_PoolStringArray_method_size>` **(** **)**                                                                     |
@@ -81,6 +105,14 @@ Appends a ``PoolStringArray`` at the end of this array.
 
 ----
 
+.. _class_PoolStringArray_method_count:
+
+- :ref:`int<class_int>` **count** **(** :ref:`String<class_String>` value **)**
+
+Returns the number of times an element is in the array.
+
+----
+
 .. _class_PoolStringArray_method_empty:
 
 - :ref:`bool<class_bool>` **empty** **(** **)**
@@ -97,6 +129,24 @@ Assigns the given value to all elements in the array. This can typically be used
 
 ----
 
+.. _class_PoolStringArray_method_find:
+
+- :ref:`int<class_int>` **find** **(** :ref:`String<class_String>` value, :ref:`int<class_int>` from=0 **)**
+
+Searches the array for a value and returns its index or ``-1`` if not found. Optionally, the initial search index can be passed. Returns ``-1`` if ``from`` is out of bounds.
+
+----
+
+.. _class_PoolStringArray_method_has:
+
+- :ref:`bool<class_bool>` **has** **(** :ref:`String<class_String>` value **)**
+
+Returns ``true`` if the array contains the given value.
+
+\ **Note:** This is equivalent to using the ``in`` operator.
+
+----
+
 .. _class_PoolStringArray_method_insert:
 
 - :ref:`int<class_int>` **insert** **(** :ref:`int<class_int>` idx, :ref:`String<class_String>` string **)**
@@ -145,6 +195,14 @@ Sets the size of the array. If the array is grown, reserves elements at the end
 
 ----
 
+.. _class_PoolStringArray_method_rfind:
+
+- :ref:`int<class_int>` **rfind** **(** :ref:`String<class_String>` value, :ref:`int<class_int>` from=-1 **)**
+
+Searches the array in reverse order. Optionally, a start search index can be passed. If negative, the start index is considered relative to the end of the array. If the adjusted start index is out of bounds, this method searches from the end of the array.
+
+----
+
 .. _class_PoolStringArray_method_set:
 
 - void **set** **(** :ref:`int<class_int>` idx, :ref:`String<class_String>` string **)**

+ 60 - 2
classes/class_poolvector2array.rst

@@ -9,14 +9,30 @@
 PoolVector2Array
 ================
 
-A pooled array of :ref:`Vector2<class_Vector2>`.
+A pooled array of :ref:`Vector2<class_Vector2>`\ s.
 
 Description
 -----------
 
 An array specifically designed to hold :ref:`Vector2<class_Vector2>`. Optimized for memory usage, does not fragment the memory.
 
-\ **Note:** This type is passed by value and not by reference.
+\ **Note:** This type is passed by value and not by reference. This means that when *mutating* a class property of type ``PoolVector2Array`` or mutating a ``PoolVector2Array`` within an :ref:`Array<class_Array>` or :ref:`Dictionary<class_Dictionary>`, changes will be lost:
+
+::
+
+    var array = [PoolVector2Array()]
+    array[0].push_back(Vector2(12, 34))
+    print(array)  # [[]] (empty PoolVector2Array within an empty Array)
+
+Instead, the entire ``PoolVector2Array`` property must be *reassigned* with ``=`` for it to be changed:
+
+::
+
+    var array = [PoolVector2Array()]
+    var pool_array = array[0]
+    pool_array.push_back(Vector2(12, 34))
+    array[0] = pool_array
+    print(array)  # [[(12, 34)]] (PoolVector2Array with 1 element inside an Array)
 
 Tutorials
 ---------
@@ -33,10 +49,16 @@ Methods
 +-------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------+
 | void                                            | :ref:`append_array<class_PoolVector2Array_method_append_array>` **(** :ref:`PoolVector2Array<class_PoolVector2Array>` array **)** |
 +-------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`int<class_int>`                           | :ref:`count<class_PoolVector2Array_method_count>` **(** :ref:`Vector2<class_Vector2>` value **)**                                 |
++-------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------+
 | :ref:`bool<class_bool>`                         | :ref:`empty<class_PoolVector2Array_method_empty>` **(** **)**                                                                     |
 +-------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------+
 | void                                            | :ref:`fill<class_PoolVector2Array_method_fill>` **(** :ref:`Vector2<class_Vector2>` vector2 **)**                                 |
 +-------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`int<class_int>`                           | :ref:`find<class_PoolVector2Array_method_find>` **(** :ref:`Vector2<class_Vector2>` value, :ref:`int<class_int>` from=0 **)**     |
++-------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`bool<class_bool>`                         | :ref:`has<class_PoolVector2Array_method_has>` **(** :ref:`Vector2<class_Vector2>` value **)**                                     |
++-------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------+
 | :ref:`int<class_int>`                           | :ref:`insert<class_PoolVector2Array_method_insert>` **(** :ref:`int<class_int>` idx, :ref:`Vector2<class_Vector2>` vector2 **)**  |
 +-------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------+
 | void                                            | :ref:`invert<class_PoolVector2Array_method_invert>` **(** **)**                                                                   |
@@ -47,6 +69,8 @@ Methods
 +-------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------+
 | void                                            | :ref:`resize<class_PoolVector2Array_method_resize>` **(** :ref:`int<class_int>` idx **)**                                         |
 +-------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`int<class_int>`                           | :ref:`rfind<class_PoolVector2Array_method_rfind>` **(** :ref:`Vector2<class_Vector2>` value, :ref:`int<class_int>` from=-1 **)**  |
++-------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------+
 | void                                            | :ref:`set<class_PoolVector2Array_method_set>` **(** :ref:`int<class_int>` idx, :ref:`Vector2<class_Vector2>` vector2 **)**        |
 +-------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------+
 | :ref:`int<class_int>`                           | :ref:`size<class_PoolVector2Array_method_size>` **(** **)**                                                                       |
@@ -79,6 +103,14 @@ Appends a ``PoolVector2Array`` at the end of this array.
 
 ----
 
+.. _class_PoolVector2Array_method_count:
+
+- :ref:`int<class_int>` **count** **(** :ref:`Vector2<class_Vector2>` value **)**
+
+Returns the number of times an element is in the array.
+
+----
+
 .. _class_PoolVector2Array_method_empty:
 
 - :ref:`bool<class_bool>` **empty** **(** **)**
@@ -95,6 +127,24 @@ Assigns the given value to all elements in the array. This can typically be used
 
 ----
 
+.. _class_PoolVector2Array_method_find:
+
+- :ref:`int<class_int>` **find** **(** :ref:`Vector2<class_Vector2>` value, :ref:`int<class_int>` from=0 **)**
+
+Searches the array for a value and returns its index or ``-1`` if not found. Optionally, the initial search index can be passed. Returns ``-1`` if ``from`` is out of bounds.
+
+----
+
+.. _class_PoolVector2Array_method_has:
+
+- :ref:`bool<class_bool>` **has** **(** :ref:`Vector2<class_Vector2>` value **)**
+
+Returns ``true`` if the array contains the given value.
+
+\ **Note:** This is equivalent to using the ``in`` operator.
+
+----
+
 .. _class_PoolVector2Array_method_insert:
 
 - :ref:`int<class_int>` **insert** **(** :ref:`int<class_int>` idx, :ref:`Vector2<class_Vector2>` vector2 **)**
@@ -135,6 +185,14 @@ Sets the size of the array. If the array is grown, reserves elements at the end
 
 ----
 
+.. _class_PoolVector2Array_method_rfind:
+
+- :ref:`int<class_int>` **rfind** **(** :ref:`Vector2<class_Vector2>` value, :ref:`int<class_int>` from=-1 **)**
+
+Searches the array in reverse order. Optionally, a start search index can be passed. If negative, the start index is considered relative to the end of the array. If the adjusted start index is out of bounds, this method searches from the end of the array.
+
+----
+
 .. _class_PoolVector2Array_method_set:
 
 - void **set** **(** :ref:`int<class_int>` idx, :ref:`Vector2<class_Vector2>` vector2 **)**

+ 59 - 1
classes/class_poolvector3array.rst

@@ -16,7 +16,23 @@ Description
 
 An array specifically designed to hold :ref:`Vector3<class_Vector3>`. Optimized for memory usage, does not fragment the memory.
 
-\ **Note:** This type is passed by value and not by reference.
+\ **Note:** This type is passed by value and not by reference. This means that when *mutating* a class property of type ``PoolVector3Array`` or mutating a ``PoolVector3Array`` within an :ref:`Array<class_Array>` or :ref:`Dictionary<class_Dictionary>`, changes will be lost:
+
+::
+
+    var array = [PoolVector3Array()]
+    array[0].push_back(Vector3(12, 34, 56))
+    print(array)  # [[]] (empty PoolVector3Array within an empty Array)
+
+Instead, the entire ``PoolVector3Array`` property must be *reassigned* with ``=`` for it to be changed:
+
+::
+
+    var array = [PoolVector3Array()]
+    var pool_array = array[0]
+    pool_array.push_back(Vector3(12, 34, 56))
+    array[0] = pool_array
+    print(array)  # [[(12, 34, 56)]] (PoolVector3Array with 1 element inside an Array)
 
 Methods
 -------
@@ -28,10 +44,16 @@ Methods
 +-------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------+
 | void                                            | :ref:`append_array<class_PoolVector3Array_method_append_array>` **(** :ref:`PoolVector3Array<class_PoolVector3Array>` array **)** |
 +-------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`int<class_int>`                           | :ref:`count<class_PoolVector3Array_method_count>` **(** :ref:`Vector3<class_Vector3>` value **)**                                 |
++-------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------+
 | :ref:`bool<class_bool>`                         | :ref:`empty<class_PoolVector3Array_method_empty>` **(** **)**                                                                     |
 +-------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------+
 | void                                            | :ref:`fill<class_PoolVector3Array_method_fill>` **(** :ref:`Vector3<class_Vector3>` vector3 **)**                                 |
 +-------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`int<class_int>`                           | :ref:`find<class_PoolVector3Array_method_find>` **(** :ref:`Vector3<class_Vector3>` value, :ref:`int<class_int>` from=0 **)**     |
++-------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`bool<class_bool>`                         | :ref:`has<class_PoolVector3Array_method_has>` **(** :ref:`Vector3<class_Vector3>` value **)**                                     |
++-------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------+
 | :ref:`int<class_int>`                           | :ref:`insert<class_PoolVector3Array_method_insert>` **(** :ref:`int<class_int>` idx, :ref:`Vector3<class_Vector3>` vector3 **)**  |
 +-------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------+
 | void                                            | :ref:`invert<class_PoolVector3Array_method_invert>` **(** **)**                                                                   |
@@ -42,6 +64,8 @@ Methods
 +-------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------+
 | void                                            | :ref:`resize<class_PoolVector3Array_method_resize>` **(** :ref:`int<class_int>` idx **)**                                         |
 +-------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`int<class_int>`                           | :ref:`rfind<class_PoolVector3Array_method_rfind>` **(** :ref:`Vector3<class_Vector3>` value, :ref:`int<class_int>` from=-1 **)**  |
++-------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------+
 | void                                            | :ref:`set<class_PoolVector3Array_method_set>` **(** :ref:`int<class_int>` idx, :ref:`Vector3<class_Vector3>` vector3 **)**        |
 +-------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------+
 | :ref:`int<class_int>`                           | :ref:`size<class_PoolVector3Array_method_size>` **(** **)**                                                                       |
@@ -74,6 +98,14 @@ Appends a ``PoolVector3Array`` at the end of this array.
 
 ----
 
+.. _class_PoolVector3Array_method_count:
+
+- :ref:`int<class_int>` **count** **(** :ref:`Vector3<class_Vector3>` value **)**
+
+Returns the number of times an element is in the array.
+
+----
+
 .. _class_PoolVector3Array_method_empty:
 
 - :ref:`bool<class_bool>` **empty** **(** **)**
@@ -90,6 +122,24 @@ Assigns the given value to all elements in the array. This can typically be used
 
 ----
 
+.. _class_PoolVector3Array_method_find:
+
+- :ref:`int<class_int>` **find** **(** :ref:`Vector3<class_Vector3>` value, :ref:`int<class_int>` from=0 **)**
+
+Searches the array for a value and returns its index or ``-1`` if not found. Optionally, the initial search index can be passed. Returns ``-1`` if ``from`` is out of bounds.
+
+----
+
+.. _class_PoolVector3Array_method_has:
+
+- :ref:`bool<class_bool>` **has** **(** :ref:`Vector3<class_Vector3>` value **)**
+
+Returns ``true`` if the array contains the given value.
+
+\ **Note:** This is equivalent to using the ``in`` operator.
+
+----
+
 .. _class_PoolVector3Array_method_insert:
 
 - :ref:`int<class_int>` **insert** **(** :ref:`int<class_int>` idx, :ref:`Vector3<class_Vector3>` vector3 **)**
@@ -130,6 +180,14 @@ Sets the size of the array. If the array is grown, reserves elements at the end
 
 ----
 
+.. _class_PoolVector3Array_method_rfind:
+
+- :ref:`int<class_int>` **rfind** **(** :ref:`Vector3<class_Vector3>` value, :ref:`int<class_int>` from=-1 **)**
+
+Searches the array in reverse order. Optionally, a start search index can be passed. If negative, the start index is considered relative to the end of the array. If the adjusted start index is out of bounds, this method searches from the end of the array.
+
+----
+
 .. _class_PoolVector3Array_method_set:
 
 - void **set** **(** :ref:`int<class_int>` idx, :ref:`Vector3<class_Vector3>` vector3 **)**

+ 11 - 1
classes/class_popupmenu.rst

@@ -168,6 +168,8 @@ Theme Properties
 +---------------------------------+-------------------------------------------------------------------------------------+----------------------------------+
 | :ref:`Font<class_Font>`         | :ref:`font<class_PopupMenu_theme_font_font>`                                        |                                  |
 +---------------------------------+-------------------------------------------------------------------------------------+----------------------------------+
+| :ref:`Font<class_Font>`         | :ref:`font_separator<class_PopupMenu_theme_font_font_separator>`                    |                                  |
++---------------------------------+-------------------------------------------------------------------------------------+----------------------------------+
 | :ref:`Texture<class_Texture>`   | :ref:`checked<class_PopupMenu_theme_icon_checked>`                                  |                                  |
 +---------------------------------+-------------------------------------------------------------------------------------+----------------------------------+
 | :ref:`Texture<class_Texture>`   | :ref:`radio_checked<class_PopupMenu_theme_icon_radio_checked>`                      |                                  |
@@ -552,7 +554,7 @@ Returns the text of the item at index ``idx``.
 
 - :ref:`String<class_String>` **get_item_tooltip** **(** :ref:`int<class_int>` idx **)** |const|
 
-Returns the tooltip associated with the specified index index ``idx``.
+Returns the tooltip associated with the specified index ``idx``.
 
 ----
 
@@ -875,6 +877,14 @@ The vertical space between each menu item.
 
 ----
 
+.. _class_PopupMenu_theme_font_font_separator:
+
+- :ref:`Font<class_Font>` **font_separator**
+
+:ref:`Font<class_Font>` used for the labeled separator.
+
+----
+
 .. _class_PopupMenu_theme_icon_checked:
 
 - :ref:`Texture<class_Texture>` **checked**

+ 1 - 1
classes/class_primitivemesh.rst

@@ -11,7 +11,7 @@ PrimitiveMesh
 
 **Inherits:** :ref:`Mesh<class_Mesh>` **<** :ref:`Resource<class_Resource>` **<** :ref:`Reference<class_Reference>` **<** :ref:`Object<class_Object>`
 
-**Inherited By:** :ref:`CapsuleMesh<class_CapsuleMesh>`, :ref:`CubeMesh<class_CubeMesh>`, :ref:`CylinderMesh<class_CylinderMesh>`, :ref:`PlaneMesh<class_PlaneMesh>`, :ref:`PointMesh<class_PointMesh>`, :ref:`PrismMesh<class_PrismMesh>`, :ref:`QuadMesh<class_QuadMesh>`, :ref:`SphereMesh<class_SphereMesh>`
+**Inherited By:** :ref:`CapsuleMesh<class_CapsuleMesh>`, :ref:`CubeMesh<class_CubeMesh>`, :ref:`CylinderMesh<class_CylinderMesh>`, :ref:`PlaneMesh<class_PlaneMesh>`, :ref:`PointMesh<class_PointMesh>`, :ref:`PrismMesh<class_PrismMesh>`, :ref:`QuadMesh<class_QuadMesh>`, :ref:`SphereMesh<class_SphereMesh>`, :ref:`TextMesh<class_TextMesh>`
 
 Base class for all primitive meshes. Handles applying a :ref:`Material<class_Material>` to a primitive mesh.
 

+ 2 - 2
classes/class_propertytweener.rst

@@ -91,7 +91,7 @@ Sets the time in seconds after which the ``PropertyTweener`` will start interpol
 
 - :ref:`PropertyTweener<class_PropertyTweener>` **set_ease** **(** :ref:`EaseType<enum_Tween_EaseType>` ease **)**
 
-Sets the type of used easing from :ref:`EaseType<enum_Tween_EaseType>`. If not set, the default easing is used from the :ref:`Tween<class_Tween>` that contains this Tweener.
+Sets the type of used easing from :ref:`EaseType<enum_Tween_EaseType>`. If not set, the default easing is used from the :ref:`SceneTreeTween<class_SceneTreeTween>` that contains this Tweener.
 
 ----
 
@@ -99,7 +99,7 @@ Sets the type of used easing from :ref:`EaseType<enum_Tween_EaseType>`. If not s
 
 - :ref:`PropertyTweener<class_PropertyTweener>` **set_trans** **(** :ref:`TransitionType<enum_Tween_TransitionType>` trans **)**
 
-Sets the type of used transition from :ref:`TransitionType<enum_Tween_TransitionType>`. If not set, the default transition is used from the :ref:`Tween<class_Tween>` that contains this Tweener.
+Sets the type of used transition from :ref:`TransitionType<enum_Tween_TransitionType>`. If not set, the default transition is used from the :ref:`SceneTreeTween<class_SceneTreeTween>` that contains this Tweener.
 
 .. |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.)`

+ 56 - 4
classes/class_proximitygroup.rst

@@ -11,12 +11,46 @@ ProximityGroup
 
 **Inherits:** :ref:`Spatial<class_Spatial>` **<** :ref:`Node<class_Node>` **<** :ref:`Object<class_Object>`
 
-General-purpose proximity detection node.
+General-purpose 3D proximity detection node.
 
 Description
 -----------
 
-General-purpose proximity detection node.
+General-purpose proximity detection node. ``ProximityGroup`` can be used for *approximate* distance checks, which are faster than exact distance checks using :ref:`Vector3.distance_to<class_Vector3_method_distance_to>` or :ref:`Vector3.distance_squared_to<class_Vector3_method_distance_squared_to>`.
+
+\ ``ProximityGroup`` nodes are automatically grouped together, as long as they share the same :ref:`group_name<class_ProximityGroup_property_group_name>` and intersect with each other. By calling the :ref:`broadcast<class_ProximityGroup_method_broadcast>`, you can invoke a specified method with various parameters to all intersecting members.
+
+\ ``ProximityGroup`` is cuboid-shaped and consists of a cluster of :ref:`Vector3<class_Vector3>` coordinates. The coordinates are automatically calculated by calling :ref:`grid_radius<class_ProximityGroup_property_grid_radius>`. To allow ``ProximityGroup`` to find its peers (and perform automatic grouping), you need to define its :ref:`group_name<class_ProximityGroup_property_group_name>` to a non-empty :ref:`String<class_String>`. As soon as this object's shape intersects with another ``ProximityGroup`` object' shape, and both share the same :ref:`group_name<class_ProximityGroup_property_group_name>`, they will belong together for as long as they intersect.
+
+Since ``ProximityGroup`` doesn't rely the physics engine, you don't need to add any other node as a child (unlike :ref:`PhysicsBody<class_PhysicsBody>`).
+
+The ``ProximityGroup`` uses the :ref:`SceneTree<class_SceneTree>` groups in the background by calling the method :ref:`Node.add_to_group<class_Node_method_add_to_group>` internally. The :ref:`SceneTree<class_SceneTree>` group names are constructed by combining the :ref:`group_name<class_ProximityGroup_property_group_name>` with its coordinates, which are calculated using the :ref:`grid_radius<class_ProximityGroup_property_grid_radius>` you defined beforehand.
+
+\ **Example:** A ``ProximityGroup`` node named ``"PlanetEarth"`` at position ``Vector3(6, 6, 6)`` with a :ref:`group_name<class_ProximityGroup_property_group_name>` set to ``"planets"`` and a :ref:`grid_radius<class_ProximityGroup_property_grid_radius>` of ``Vector3(1, 2, 3)`` will create the following :ref:`SceneTree<class_SceneTree>` group names:
+
+::
+
+    - "planets|5|4|3"
+    - "planets|5|4|4"
+    - "planets|5|4|5"
+    - "planets|5|4|6"
+    - "planets|5|4|7"
+    - "planets|5|4|8"
+    - "planets|5|4|9"
+    - ...
+
+If there is another ``ProximityGroup`` named ``"PlanetMars"`` with group name ``"planets"``, and one of its coordinates is ``Vector3(5, 4, 7)``, it would normally create the :ref:`SceneTree<class_SceneTree>` group called ``"planets|5|4|7"``. However, since this group name already exists, this ``ProximityGroup`` object will be *added* to the existing one. ``"PlanetEarth"`` is already in this group. As long as both nodes don't change their transform and stop intersecting (or exit the scene tree), they are grouped together. As long as this intersection exists, any call to :ref:`broadcast<class_ProximityGroup_method_broadcast>` will affect *both* ``ProximityGroup`` nodes.
+
+There are 3 caveats to keep in mind when using ``ProximityGroup``:
+
+- The larger the grid radius, the more coordinates and the more :ref:`SceneTree<class_SceneTree>` groups are created. This can have a performance impact if too many groups are created.
+
+- If the ``ProximityGroup`` node is transformed in any way (or is removed from the scene tree), the groupings will have to be recalculated. This can also have a performance impact.
+
+- If your :ref:`grid_radius<class_ProximityGroup_property_grid_radius>` is smaller than ``Vector3(1, 1, 1)``, it will be rounded up to ``Vector3(1, 1, 1)``. Therefore, small grid radius values may lead to unwanted groupings.
+
+
+\ **Note:** ``ProximityGroup`` will be removed in Godot 4.0 in favor of more effective and faster :ref:`VisibilityNotifier<class_VisibilityNotifier>` functionality. For most use cases, :ref:`Vector3.distance_to<class_Vector3_method_distance_to>` or :ref:`Vector3.distance_squared_to<class_Vector3_method_distance_squared_to>` are fast enough too, especially if you call them less often using a :ref:`Timer<class_Timer>` node.
 
 Properties
 ----------
@@ -43,6 +77,12 @@ Signals
 
 - **broadcast** **(** :ref:`String<class_String>` method, :ref:`Array<class_Array>` parameters **)**
 
+Emitted when the user calls the :ref:`broadcast<class_ProximityGroup_method_broadcast>` method and has set :ref:`dispatch_mode<class_ProximityGroup_property_dispatch_mode>` to :ref:`MODE_SIGNAL<class_ProximityGroup_constant_MODE_SIGNAL>`.
+
+The given method and its parameters are passed on to the listeners who connected to this signal of this object, as well as any ``ProximityGroup`` node this node is grouped together with.
+
+\ **Note:** This signal is *not* emitted by default, as the default :ref:`dispatch_mode<class_ProximityGroup_property_dispatch_mode>` is :ref:`MODE_PROXY<class_ProximityGroup_constant_MODE_PROXY>`.
+
 Enumerations
 ------------
 
@@ -54,9 +94,9 @@ Enumerations
 
 enum **DispatchMode**:
 
-- **MODE_PROXY** = **0**
+- **MODE_PROXY** = **0** --- This ``ProximityGroup``'s parent will be target of :ref:`broadcast<class_ProximityGroup_method_broadcast>`.
 
-- **MODE_SIGNAL** = **1**
+- **MODE_SIGNAL** = **1** --- This ``ProximityGroup`` will emit the :ref:`broadcast<class_ProximityGroup_signal_broadcast>` *signal* when calling the :ref:`broadcast<class_ProximityGroup_method_broadcast>` *method*.
 
 Property Descriptions
 ---------------------
@@ -73,6 +113,8 @@ Property Descriptions
 | *Getter*  | get_dispatch_mode()      |
 +-----------+--------------------------+
 
+Specifies which node gets contacted on a call of method :ref:`broadcast<class_ProximityGroup_method_broadcast>`.
+
 ----
 
 .. _class_ProximityGroup_property_grid_radius:
@@ -87,6 +129,8 @@ Property Descriptions
 | *Getter*  | get_grid_radius()      |
 +-----------+------------------------+
 
+The size of the space in 3D units. This also sets the amount of coordinates required to calculate whether two ``ProximityGroup`` nodes are intersecting or not. Smaller :ref:`grid_radius<class_ProximityGroup_property_grid_radius>` values can be used for more precise proximity checks at the cost of performance, since more groups will be created.
+
 ----
 
 .. _class_ProximityGroup_property_group_name:
@@ -101,6 +145,10 @@ Property Descriptions
 | *Getter*  | get_group_name()      |
 +-----------+-----------------------+
 
+Specify the common group name, to let other ``ProximityGroup`` nodes know, if they should be auto-grouped with this node in case they intersect with each other.
+
+For example, if you have a ``ProximityGroup`` node named ``"Earth"`` and another called ``"Mars"``, with both nodes having ``"planet"`` as their :ref:`group_name<class_ProximityGroup_property_group_name>`. Give both planets a significantly larger :ref:`grid_radius<class_ProximityGroup_property_grid_radius>` than their actual radius, position them close enough and they'll be automatically grouped.
+
 Method Descriptions
 -------------------
 
@@ -108,6 +156,10 @@ Method Descriptions
 
 - void **broadcast** **(** :ref:`String<class_String>` method, :ref:`Variant<class_Variant>` parameters **)**
 
+Calls on all intersecting ``ProximityGroup`` the given method and parameters.
+
+If the :ref:`dispatch_mode<class_ProximityGroup_property_dispatch_mode>` is set to :ref:`MODE_PROXY<class_ProximityGroup_constant_MODE_PROXY>` (the default), all calls are delegated to their respective parent :ref:`Node<class_Node>`.
+
 .. |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 - 3
classes/class_richtextlabel.rst

@@ -596,10 +596,12 @@ Adds raw non-BBCode-parsed text to the tag stack.
 
 - :ref:`Error<enum_@GlobalScope_Error>` **append_bbcode** **(** :ref:`String<class_String>` bbcode **)**
 
-Parses ``bbcode`` and adds tags to the tag stack as needed. Returns the result of the parsing, :ref:`@GlobalScope.OK<class_@GlobalScope_constant_OK>` if successful.
+Parses ``bbcode`` and adds tags to the tag stack as needed.
 
 \ **Note:** Using this method, you can't close a tag that was opened in a previous :ref:`append_bbcode<class_RichTextLabel_method_append_bbcode>` call. This is done to improve performance, especially when updating large RichTextLabels since rebuilding the whole BBCode every time would be slower. If you absolutely need to close a tag in a future method call, append the :ref:`bbcode_text<class_RichTextLabel_property_bbcode_text>` instead of using :ref:`append_bbcode<class_RichTextLabel_method_append_bbcode>`.
 
+\ **Note:** This method internals' can't possibly fail, but an error code is returned for backwards compatibility, which will always be :ref:`@GlobalScope.OK<class_@GlobalScope_constant_OK>`.
+
 ----
 
 .. _class_RichTextLabel_method_clear:
@@ -688,7 +690,9 @@ Adds a newline tag to the tag stack.
 
 - :ref:`Error<enum_@GlobalScope_Error>` **parse_bbcode** **(** :ref:`String<class_String>` bbcode **)**
 
-The assignment version of :ref:`append_bbcode<class_RichTextLabel_method_append_bbcode>`. Clears the tag stack and inserts the new content. Returns :ref:`@GlobalScope.OK<class_@GlobalScope_constant_OK>` if parses ``bbcode`` successfully.
+The assignment version of :ref:`append_bbcode<class_RichTextLabel_method_append_bbcode>`. Clears the tag stack and inserts the new content.
+
+\ **Note:** This method internals' can't possibly fail, but an error code is returned for backwards compatibility, which will always be :ref:`@GlobalScope.OK<class_@GlobalScope_constant_OK>`.
 
 ----
 
@@ -1023,7 +1027,7 @@ The default text font.
 
 - :ref:`StyleBox<class_StyleBox>` **focus**
 
-The background The background used when the ``RichTextLabel`` is focused.
+The background used when the ``RichTextLabel`` is focused.
 
 ----
 

+ 2 - 2
classes/class_rigidbody.rst

@@ -222,7 +222,7 @@ Property Descriptions
 | *Getter*  | get_angular_damp()      |
 +-----------+-------------------------+
 
-Damps RigidBody's rotational forces.
+Damps RigidBody's rotational forces. If this value is different from -1.0 it will be added to any linear damp derived from the world or areas.
 
 See :ref:`ProjectSettings.physics/3d/default_angular_damp<class_ProjectSettings_property_physics/3d/default_angular_damp>` for more details about damping.
 
@@ -486,7 +486,7 @@ This is multiplied by the global 3D gravity setting found in **Project > Project
 | *Getter*  | get_linear_damp()      |
 +-----------+------------------------+
 
-The body's linear damp. Cannot be less than -1.0. If this value is different from -1.0, any linear damp derived from the world or areas will be overridden.
+The body's linear damp. Cannot be less than -1.0. If this value is different from -1.0 it will be added to any linear damp derived from the world or areas.
 
 See :ref:`ProjectSettings.physics/3d/default_linear_damp<class_ProjectSettings_property_physics/3d/default_linear_damp>` for more details about damping.
 

+ 2 - 2
classes/class_rigidbody2d.rst

@@ -224,7 +224,7 @@ Property Descriptions
 | *Getter*  | get_angular_damp()      |
 +-----------+-------------------------+
 
-Damps the body's :ref:`angular_velocity<class_RigidBody2D_property_angular_velocity>`. If ``-1``, the body will use the **Default Angular Damp** defined in **Project > Project Settings > Physics > 2d**.
+Damps the body's :ref:`angular_velocity<class_RigidBody2D_property_angular_velocity>`. If ``-1``, the body will use the **Default Angular Damp** defined in **Project > Project Settings > Physics > 2d**. If greater than ``-1`` it will be added to the default project value.
 
 See :ref:`ProjectSettings.physics/2d/default_angular_damp<class_ProjectSettings_property_physics/2d/default_angular_damp>` for more details about damping.
 
@@ -438,7 +438,7 @@ The body's moment of inertia. This is like mass, but for rotation: it determines
 | *Getter*  | get_linear_damp()      |
 +-----------+------------------------+
 
-Damps the body's :ref:`linear_velocity<class_RigidBody2D_property_linear_velocity>`. If ``-1``, the body will use the **Default Linear Damp** in **Project > Project Settings > Physics > 2d**.
+Damps the body's :ref:`linear_velocity<class_RigidBody2D_property_linear_velocity>`. If ``-1``, the body will use the **Default Linear Damp** in **Project > Project Settings > Physics > 2d**. If greater than ``-1`` it will be added to the default project value.
 
 See :ref:`ProjectSettings.physics/2d/default_linear_damp<class_ProjectSettings_property_physics/2d/default_linear_damp>` for more details about damping.
 

+ 40 - 24
classes/class_scenetree.rst

@@ -32,6 +32,8 @@ Tutorials
 Properties
 ----------
 
++-----------------------------------------------------------------+------------------------------------------------------------------------------------------------+-----------+
+| :ref:`bool<class_bool>`                                         | :ref:`auto_accept_quit<class_SceneTree_property_auto_accept_quit>`                             | ``true``  |
 +-----------------------------------------------------------------+------------------------------------------------------------------------------------------------+-----------+
 | :ref:`Node<class_Node>`                                         | :ref:`current_scene<class_SceneTree_property_current_scene>`                                   |           |
 +-----------------------------------------------------------------+------------------------------------------------------------------------------------------------+-----------+
@@ -51,6 +53,8 @@ Properties
 +-----------------------------------------------------------------+------------------------------------------------------------------------------------------------+-----------+
 | :ref:`bool<class_bool>`                                         | :ref:`physics_interpolation<class_SceneTree_property_physics_interpolation>`                   | ``false`` |
 +-----------------------------------------------------------------+------------------------------------------------------------------------------------------------+-----------+
+| :ref:`bool<class_bool>`                                         | :ref:`quit_on_go_back<class_SceneTree_property_quit_on_go_back>`                               | ``true``  |
++-----------------------------------------------------------------+------------------------------------------------------------------------------------------------+-----------+
 | :ref:`bool<class_bool>`                                         | :ref:`refuse_new_network_connections<class_SceneTree_property_refuse_new_network_connections>` | ``false`` |
 +-----------------------------------------------------------------+------------------------------------------------------------------------------------------------+-----------+
 | :ref:`Viewport<class_Viewport>`                                 | :ref:`root<class_SceneTree_property_root>`                                                     |           |
@@ -106,16 +110,12 @@ Methods
 +---------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
 | :ref:`Error<enum_@GlobalScope_Error>`       | :ref:`reload_current_scene<class_SceneTree_method_reload_current_scene>` **(** **)**                                                                                                                                                                                      |
 +---------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| void                                        | :ref:`set_auto_accept_quit<class_SceneTree_method_set_auto_accept_quit>` **(** :ref:`bool<class_bool>` enabled **)**                                                                                                                                                      |
-+---------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
 | void                                        | :ref:`set_group<class_SceneTree_method_set_group>` **(** :ref:`String<class_String>` group, :ref:`String<class_String>` property, :ref:`Variant<class_Variant>` value **)**                                                                                               |
 +---------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
 | void                                        | :ref:`set_group_flags<class_SceneTree_method_set_group_flags>` **(** :ref:`int<class_int>` call_flags, :ref:`String<class_String>` group, :ref:`String<class_String>` property, :ref:`Variant<class_Variant>` value **)**                                                 |
 +---------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
 | void                                        | :ref:`set_input_as_handled<class_SceneTree_method_set_input_as_handled>` **(** **)**                                                                                                                                                                                      |
 +---------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| void                                        | :ref:`set_quit_on_go_back<class_SceneTree_method_set_quit_on_go_back>` **(** :ref:`bool<class_bool>` enabled **)**                                                                                                                                                        |
-+---------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
 | void                                        | :ref:`set_screen_stretch<class_SceneTree_method_set_screen_stretch>` **(** :ref:`StretchMode<enum_SceneTree_StretchMode>` mode, :ref:`StretchAspect<enum_SceneTree_StretchAspect>` aspect, :ref:`Vector2<class_Vector2>` minsize, :ref:`float<class_float>` scale=1 **)** |
 +---------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
 
@@ -310,6 +310,24 @@ enum **StretchAspect**:
 Property Descriptions
 ---------------------
 
+.. _class_SceneTree_property_auto_accept_quit:
+
+- :ref:`bool<class_bool>` **auto_accept_quit**
+
++-----------+-----------------------------+
+| *Default* | ``true``                    |
++-----------+-----------------------------+
+| *Setter*  | set_auto_accept_quit(value) |
++-----------+-----------------------------+
+| *Getter*  | is_auto_accept_quit()       |
++-----------+-----------------------------+
+
+If ``true``, the application automatically accepts quitting.
+
+For mobile platforms, see :ref:`quit_on_go_back<class_SceneTree_property_quit_on_go_back>`.
+
+----
+
 .. _class_SceneTree_property_current_scene:
 
 - :ref:`Node<class_Node>` **current_scene**
@@ -452,6 +470,24 @@ Although physics interpolation would normally be globally turned on and off usin
 
 ----
 
+.. _class_SceneTree_property_quit_on_go_back:
+
+- :ref:`bool<class_bool>` **quit_on_go_back**
+
++-----------+----------------------------+
+| *Default* | ``true``                   |
++-----------+----------------------------+
+| *Setter*  | set_quit_on_go_back(value) |
++-----------+----------------------------+
+| *Getter*  | is_quit_on_go_back()       |
++-----------+----------------------------+
+
+If ``true``, the application quits automatically on going back (e.g. on Android).
+
+To handle 'Go Back' button when this option is disabled, use :ref:`MainLoop.NOTIFICATION_WM_GO_BACK_REQUEST<class_MainLoop_constant_NOTIFICATION_WM_GO_BACK_REQUEST>`.
+
+----
+
 .. _class_SceneTree_property_refuse_new_network_connections:
 
 - :ref:`bool<class_bool>` **refuse_new_network_connections**
@@ -715,16 +751,6 @@ Returns :ref:`@GlobalScope.OK<class_@GlobalScope_constant_OK>` on success, :ref:
 
 ----
 
-.. _class_SceneTree_method_set_auto_accept_quit:
-
-- void **set_auto_accept_quit** **(** :ref:`bool<class_bool>` enabled **)**
-
-If ``true``, the application automatically accepts quitting. Enabled by default.
-
-For mobile platforms, see :ref:`set_quit_on_go_back<class_SceneTree_method_set_quit_on_go_back>`.
-
-----
-
 .. _class_SceneTree_method_set_group:
 
 - void **set_group** **(** :ref:`String<class_String>` group, :ref:`String<class_String>` property, :ref:`Variant<class_Variant>` value **)**
@@ -749,16 +775,6 @@ Marks the most recent :ref:`InputEvent<class_InputEvent>` as handled.
 
 ----
 
-.. _class_SceneTree_method_set_quit_on_go_back:
-
-- void **set_quit_on_go_back** **(** :ref:`bool<class_bool>` enabled **)**
-
-If ``true``, the application quits automatically on going back (e.g. on Android). Enabled by default.
-
-To handle 'Go Back' button when this option is disabled, use :ref:`MainLoop.NOTIFICATION_WM_GO_BACK_REQUEST<class_MainLoop_constant_NOTIFICATION_WM_GO_BACK_REQUEST>`.
-
-----
-
 .. _class_SceneTree_method_set_screen_stretch:
 
 - void **set_screen_stretch** **(** :ref:`StretchMode<enum_SceneTree_StretchMode>` mode, :ref:`StretchAspect<enum_SceneTree_StretchAspect>` aspect, :ref:`Vector2<class_Vector2>` minsize, :ref:`float<class_float>` scale=1 **)**

+ 4 - 0
classes/class_scenetreetween.rst

@@ -125,6 +125,10 @@ Signals
 
 - **finished** **(** **)**
 
+Emitted when the ``SceneTreeTween`` has finished all tweening. Never emitted when the ``SceneTreeTween`` is set to infinite looping (see :ref:`set_loops<class_SceneTreeTween_method_set_loops>`).
+
+\ **Note:** The ``SceneTreeTween`` is removed (invalidated) after this signal is emitted, but it doesn't happen immediately, but on the next processing frame. Calling :ref:`stop<class_SceneTreeTween_method_stop>` inside the signal callback will preserve the ``SceneTreeTween``.
+
 ----
 
 .. _class_SceneTreeTween_signal_loop_finished:

+ 5 - 0
classes/class_scrollcontainer.rst

@@ -20,6 +20,11 @@ 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.rect_min_size<class_Control_property_rect_min_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).
 
+Tutorials
+---------
+
+- :doc:`GUI containers <../tutorials/ui/gui_containers>`
+
 Properties
 ----------
 

+ 10 - 2
classes/class_shape2d.rst

@@ -81,7 +81,11 @@ This method needs the transformation matrix for this shape (``local_xform``), th
 
 - :ref:`Array<class_Array>` **collide_and_get_contacts** **(** :ref:`Transform2D<class_Transform2D>` local_xform, :ref:`Shape2D<class_Shape2D>` with_shape, :ref:`Transform2D<class_Transform2D>` shape_xform **)**
 
-Returns a list of the points where this shape touches another. If there are no collisions the list is empty.
+Returns a list of contact point pairs where this shape touches another.
+
+If there are no collisions, the returned list is empty. Otherwise, the returned list contains contact points arranged in pairs, with entries alternating between points on the boundary of this shape and points on the boundary of ``with_shape``.
+
+A collision pair A, B can be used to calculate the collision normal with ``(B - A).normalized()``, and the collision depth with ``(B - A).length()``. This information is typically used to separate shapes, particularly in collision solvers.
 
 This method needs the transformation matrix for this shape (``local_xform``), the shape to check collisions with (``with_shape``), and the transformation matrix of that shape (``shape_xform``).
 
@@ -101,7 +105,11 @@ This method needs the transformation matrix for this shape (``local_xform``), th
 
 - :ref:`Array<class_Array>` **collide_with_motion_and_get_contacts** **(** :ref:`Transform2D<class_Transform2D>` local_xform, :ref:`Vector2<class_Vector2>` local_motion, :ref:`Shape2D<class_Shape2D>` with_shape, :ref:`Transform2D<class_Transform2D>` shape_xform, :ref:`Vector2<class_Vector2>` shape_motion **)**
 
-Returns a list of the points where this shape would touch another, if a given movement was applied. If there are no collisions the list is empty.
+Returns a list of contact point pairs where this shape would touch another, if a given movement was applied.
+
+If there would be no collisions, the returned list is empty. Otherwise, the returned list contains contact points arranged in pairs, with entries alternating between points on the boundary of this shape and points on the boundary of ``with_shape``.
+
+A collision pair A, B can be used to calculate the collision normal with ``(B - A).normalized()``, and the collision depth with ``(B - A).length()``. This information is typically used to separate shapes, particularly in collision solvers.
 
 This method needs the transformation matrix for this shape (``local_xform``), the movement to test on this shape (``local_motion``), the shape to check collisions with (``with_shape``), the transformation matrix of that shape (``shape_xform``), and the movement to test onto the other object (``shape_motion``).
 

+ 23 - 1
classes/class_spatialmaterial.rst

@@ -105,6 +105,8 @@ Properties
 +----------------------------------------------------------------+------------------------------------------------------------------------------------------------------+-------------------------+
 | :ref:`bool<class_bool>`                                        | :ref:`flags_albedo_tex_force_srgb<class_SpatialMaterial_property_flags_albedo_tex_force_srgb>`       | ``false``               |
 +----------------------------------------------------------------+------------------------------------------------------------------------------------------------------+-------------------------+
+| :ref:`bool<class_bool>`                                        | :ref:`flags_albedo_tex_msdf<class_SpatialMaterial_property_flags_albedo_tex_msdf>`                   | ``false``               |
++----------------------------------------------------------------+------------------------------------------------------------------------------------------------------+-------------------------+
 | :ref:`bool<class_bool>`                                        | :ref:`flags_disable_ambient_light<class_SpatialMaterial_property_flags_disable_ambient_light>`       | ``false``               |
 +----------------------------------------------------------------+------------------------------------------------------------------------------------------------------+-------------------------+
 | :ref:`bool<class_bool>`                                        | :ref:`flags_do_not_receive_shadows<class_SpatialMaterial_property_flags_do_not_receive_shadows>`     | ``false``               |
@@ -500,6 +502,8 @@ enum **CullMode**:
 
 .. _class_SpatialMaterial_constant_FLAG_USE_SHADOW_TO_OPACITY:
 
+.. _class_SpatialMaterial_constant_FLAG_ALBEDO_TEXTURE_SDF:
+
 .. _class_SpatialMaterial_constant_FLAG_MAX:
 
 enum **Flags**:
@@ -542,7 +546,9 @@ enum **Flags**:
 
 - **FLAG_USE_SHADOW_TO_OPACITY** = **18** --- Enables the shadow to opacity feature.
 
-- **FLAG_MAX** = **19** --- Represents the size of the :ref:`Flags<enum_SpatialMaterial_Flags>` enum.
+- **FLAG_ALBEDO_TEXTURE_SDF** = **19** --- Enables signed distance field rendering shader.
+
+- **FLAG_MAX** = **20** --- Represents the size of the :ref:`Flags<enum_SpatialMaterial_Flags>` enum.
 
 ----
 
@@ -1285,6 +1291,22 @@ Forces a conversion of the :ref:`albedo_texture<class_SpatialMaterial_property_a
 
 ----
 
+.. _class_SpatialMaterial_property_flags_albedo_tex_msdf:
+
+- :ref:`bool<class_bool>` **flags_albedo_tex_msdf**
+
++-----------+-----------------+
+| *Default* | ``false``       |
++-----------+-----------------+
+| *Setter*  | set_flag(value) |
++-----------+-----------------+
+| *Getter*  | get_flag()      |
++-----------+-----------------+
+
+Enables signed distance field rendering shader.
+
+----
+
 .. _class_SpatialMaterial_property_flags_disable_ambient_light:
 
 - :ref:`bool<class_bool>` **flags_disable_ambient_light**

+ 5 - 0
classes/class_splitcontainer.rst

@@ -20,6 +20,11 @@ Description
 
 Container for splitting two :ref:`Control<class_Control>`\ s vertically or horizontally, with a grabber that allows adjusting the split offset or ratio.
 
+Tutorials
+---------
+
+- :doc:`GUI containers <../tutorials/ui/gui_containers>`
+
 Properties
 ----------
 

+ 94 - 28
classes/class_spritebase3d.rst

@@ -23,33 +23,39 @@ A node that displays 2D texture information in a 3D environment.
 Properties
 ----------
 
-+----------------------------------------------------------+---------------------------------------------------------------+-------------------------+
-| :ref:`AlphaCutMode<enum_SpriteBase3D_AlphaCutMode>`      | :ref:`alpha_cut<class_SpriteBase3D_property_alpha_cut>`       | ``0``                   |
-+----------------------------------------------------------+---------------------------------------------------------------+-------------------------+
-| Vector3.Axis                                             | :ref:`axis<class_SpriteBase3D_property_axis>`                 | ``2``                   |
-+----------------------------------------------------------+---------------------------------------------------------------+-------------------------+
-| :ref:`BillboardMode<enum_SpatialMaterial_BillboardMode>` | :ref:`billboard<class_SpriteBase3D_property_billboard>`       | ``0``                   |
-+----------------------------------------------------------+---------------------------------------------------------------+-------------------------+
-| :ref:`bool<class_bool>`                                  | :ref:`centered<class_SpriteBase3D_property_centered>`         | ``true``                |
-+----------------------------------------------------------+---------------------------------------------------------------+-------------------------+
-| :ref:`bool<class_bool>`                                  | :ref:`double_sided<class_SpriteBase3D_property_double_sided>` | ``true``                |
-+----------------------------------------------------------+---------------------------------------------------------------+-------------------------+
-| :ref:`bool<class_bool>`                                  | :ref:`flip_h<class_SpriteBase3D_property_flip_h>`             | ``false``               |
-+----------------------------------------------------------+---------------------------------------------------------------+-------------------------+
-| :ref:`bool<class_bool>`                                  | :ref:`flip_v<class_SpriteBase3D_property_flip_v>`             | ``false``               |
-+----------------------------------------------------------+---------------------------------------------------------------+-------------------------+
-| :ref:`Color<class_Color>`                                | :ref:`modulate<class_SpriteBase3D_property_modulate>`         | ``Color( 1, 1, 1, 1 )`` |
-+----------------------------------------------------------+---------------------------------------------------------------+-------------------------+
-| :ref:`Vector2<class_Vector2>`                            | :ref:`offset<class_SpriteBase3D_property_offset>`             | ``Vector2( 0, 0 )``     |
-+----------------------------------------------------------+---------------------------------------------------------------+-------------------------+
-| :ref:`float<class_float>`                                | :ref:`opacity<class_SpriteBase3D_property_opacity>`           | ``1.0``                 |
-+----------------------------------------------------------+---------------------------------------------------------------+-------------------------+
-| :ref:`float<class_float>`                                | :ref:`pixel_size<class_SpriteBase3D_property_pixel_size>`     | ``0.01``                |
-+----------------------------------------------------------+---------------------------------------------------------------+-------------------------+
-| :ref:`bool<class_bool>`                                  | :ref:`shaded<class_SpriteBase3D_property_shaded>`             | ``false``               |
-+----------------------------------------------------------+---------------------------------------------------------------+-------------------------+
-| :ref:`bool<class_bool>`                                  | :ref:`transparent<class_SpriteBase3D_property_transparent>`   | ``true``                |
-+----------------------------------------------------------+---------------------------------------------------------------+-------------------------+
++----------------------------------------------------------+---------------------------------------------------------------------+-------------------------+
+| :ref:`AlphaCutMode<enum_SpriteBase3D_AlphaCutMode>`      | :ref:`alpha_cut<class_SpriteBase3D_property_alpha_cut>`             | ``0``                   |
++----------------------------------------------------------+---------------------------------------------------------------------+-------------------------+
+| Vector3.Axis                                             | :ref:`axis<class_SpriteBase3D_property_axis>`                       | ``2``                   |
++----------------------------------------------------------+---------------------------------------------------------------------+-------------------------+
+| :ref:`BillboardMode<enum_SpatialMaterial_BillboardMode>` | :ref:`billboard<class_SpriteBase3D_property_billboard>`             | ``0``                   |
++----------------------------------------------------------+---------------------------------------------------------------------+-------------------------+
+| :ref:`bool<class_bool>`                                  | :ref:`centered<class_SpriteBase3D_property_centered>`               | ``true``                |
++----------------------------------------------------------+---------------------------------------------------------------------+-------------------------+
+| :ref:`bool<class_bool>`                                  | :ref:`double_sided<class_SpriteBase3D_property_double_sided>`       | ``true``                |
++----------------------------------------------------------+---------------------------------------------------------------------+-------------------------+
+| :ref:`bool<class_bool>`                                  | :ref:`fixed_size<class_SpriteBase3D_property_fixed_size>`           | ``false``               |
++----------------------------------------------------------+---------------------------------------------------------------------+-------------------------+
+| :ref:`bool<class_bool>`                                  | :ref:`flip_h<class_SpriteBase3D_property_flip_h>`                   | ``false``               |
++----------------------------------------------------------+---------------------------------------------------------------------+-------------------------+
+| :ref:`bool<class_bool>`                                  | :ref:`flip_v<class_SpriteBase3D_property_flip_v>`                   | ``false``               |
++----------------------------------------------------------+---------------------------------------------------------------------+-------------------------+
+| :ref:`Color<class_Color>`                                | :ref:`modulate<class_SpriteBase3D_property_modulate>`               | ``Color( 1, 1, 1, 1 )`` |
++----------------------------------------------------------+---------------------------------------------------------------------+-------------------------+
+| :ref:`bool<class_bool>`                                  | :ref:`no_depth_test<class_SpriteBase3D_property_no_depth_test>`     | ``false``               |
++----------------------------------------------------------+---------------------------------------------------------------------+-------------------------+
+| :ref:`Vector2<class_Vector2>`                            | :ref:`offset<class_SpriteBase3D_property_offset>`                   | ``Vector2( 0, 0 )``     |
++----------------------------------------------------------+---------------------------------------------------------------------+-------------------------+
+| :ref:`float<class_float>`                                | :ref:`opacity<class_SpriteBase3D_property_opacity>`                 | ``1.0``                 |
++----------------------------------------------------------+---------------------------------------------------------------------+-------------------------+
+| :ref:`float<class_float>`                                | :ref:`pixel_size<class_SpriteBase3D_property_pixel_size>`           | ``0.01``                |
++----------------------------------------------------------+---------------------------------------------------------------------+-------------------------+
+| :ref:`int<class_int>`                                    | :ref:`render_priority<class_SpriteBase3D_property_render_priority>` | ``0``                   |
++----------------------------------------------------------+---------------------------------------------------------------------+-------------------------+
+| :ref:`bool<class_bool>`                                  | :ref:`shaded<class_SpriteBase3D_property_shaded>`                   | ``false``               |
++----------------------------------------------------------+---------------------------------------------------------------------+-------------------------+
+| :ref:`bool<class_bool>`                                  | :ref:`transparent<class_SpriteBase3D_property_transparent>`         | ``true``                |
++----------------------------------------------------------+---------------------------------------------------------------------+-------------------------+
 
 Methods
 -------
@@ -75,6 +81,10 @@ Enumerations
 
 .. _class_SpriteBase3D_constant_FLAG_DOUBLE_SIDED:
 
+.. _class_SpriteBase3D_constant_FLAG_DISABLE_DEPTH_TEST:
+
+.. _class_SpriteBase3D_constant_FLAG_FIXED_SIZE:
+
 .. _class_SpriteBase3D_constant_FLAG_MAX:
 
 enum **DrawFlags**:
@@ -85,7 +95,11 @@ enum **DrawFlags**:
 
 - **FLAG_DOUBLE_SIDED** = **2** --- If set, texture can be seen from the back as well, if not, it is invisible when looking at it from behind.
 
-- **FLAG_MAX** = **3** --- Represents the size of the :ref:`DrawFlags<enum_SpriteBase3D_DrawFlags>` enum.
+- **FLAG_DISABLE_DEPTH_TEST** = **3** --- Disables the depth test, so this object is drawn on top of all others. However, objects drawn after it in the draw order may cover it.
+
+- **FLAG_FIXED_SIZE** = **4** --- Sprite is scaled by depth so that it always appears the same size on screen.
+
+- **FLAG_MAX** = **5** --- Represents the size of the :ref:`DrawFlags<enum_SpriteBase3D_DrawFlags>` enum.
 
 ----
 
@@ -184,6 +198,22 @@ If ``true``, texture can be seen from the back as well, if ``false``, it is invi
 
 ----
 
+.. _class_SpriteBase3D_property_fixed_size:
+
+- :ref:`bool<class_bool>` **fixed_size**
+
++-----------+----------------------+
+| *Default* | ``false``            |
++-----------+----------------------+
+| *Setter*  | set_draw_flag(value) |
++-----------+----------------------+
+| *Getter*  | get_draw_flag()      |
++-----------+----------------------+
+
+If ``true``, the label is rendered at the same size regardless of distance.
+
+----
+
 .. _class_SpriteBase3D_property_flip_h:
 
 - :ref:`bool<class_bool>` **flip_h**
@@ -234,6 +264,22 @@ A color value used to *multiply* the texture's colors. Can be used for mood-colo
 
 ----
 
+.. _class_SpriteBase3D_property_no_depth_test:
+
+- :ref:`bool<class_bool>` **no_depth_test**
+
++-----------+----------------------+
+| *Default* | ``false``            |
++-----------+----------------------+
+| *Setter*  | set_draw_flag(value) |
++-----------+----------------------+
+| *Getter*  | get_draw_flag()      |
++-----------+----------------------+
+
+If ``true``, depth testing is disabled and the object will be drawn in render order.
+
+----
+
 .. _class_SpriteBase3D_property_offset:
 
 - :ref:`Vector2<class_Vector2>` **offset**
@@ -284,6 +330,26 @@ The size of one pixel's width on the sprite to scale it in 3D.
 
 ----
 
+.. _class_SpriteBase3D_property_render_priority:
+
+- :ref:`int<class_int>` **render_priority**
+
++-----------+----------------------------+
+| *Default* | ``0``                      |
++-----------+----------------------------+
+| *Setter*  | set_render_priority(value) |
++-----------+----------------------------+
+| *Getter*  | get_render_priority()      |
++-----------+----------------------------+
+
+Sets the render priority for the sprite. Higher priority objects will be sorted in front of lower priority objects.
+
+\ **Node:** This only applies if :ref:`alpha_cut<class_SpriteBase3D_property_alpha_cut>` is set to :ref:`ALPHA_CUT_DISABLED<class_SpriteBase3D_constant_ALPHA_CUT_DISABLED>` (default value).
+
+\ **Note:** This only applies to sorting of transparent objects. This will not impact how transparent objects are sorted relative to opaque objects. This is because opaque objects are not sorted, while transparent objects are sorted from back to front (subject to priority).
+
+----
+
 .. _class_SpriteBase3D_property_shaded:
 
 - :ref:`bool<class_bool>` **shaded**

+ 5 - 0
classes/class_tabcontainer.rst

@@ -22,6 +22,11 @@ Ignores non-:ref:`Control<class_Control>` children.
 
 \ **Note:** The drawing of the clickable tabs themselves is handled by this node. Adding :ref:`Tabs<class_Tabs>` as children is not needed.
 
+Tutorials
+---------
+
+- :doc:`GUI containers <../tutorials/ui/gui_containers>`
+
 Properties
 ----------
 

+ 176 - 0
classes/class_textmesh.rst

@@ -0,0 +1,176 @@
+:github_url: hide
+
+.. Generated automatically by doc/tools/make_rst.py in Godot's source tree.
+.. DO NOT EDIT THIS FILE, but the TextMesh.xml source instead.
+.. The source is found in doc/classes or modules/<name>/doc_classes.
+
+.. _class_TextMesh:
+
+TextMesh
+========
+
+**Inherits:** :ref:`PrimitiveMesh<class_PrimitiveMesh>` **<** :ref:`Mesh<class_Mesh>` **<** :ref:`Resource<class_Resource>` **<** :ref:`Reference<class_Reference>` **<** :ref:`Object<class_Object>`
+
+Generate an :ref:`PrimitiveMesh<class_PrimitiveMesh>` from the text.
+
+Description
+-----------
+
+Generate an :ref:`PrimitiveMesh<class_PrimitiveMesh>` from the text.
+
+TextMesh can be generated only when using dynamic fonts with vector glyph contours. Bitmap fonts (including bitmap data in the TrueType/OpenType containers, like color emoji fonts) are not supported.
+
+The UV layout is arranged in 4 horizontal strips, top to bottom: 40% of the height for the front face, 40% for the back face, 10% for the outer edges and 10% for the inner edges.
+
+Properties
+----------
+
++-----------------------------------+---------------------------------------------------------------------------+-----------+
+| :ref:`float<class_float>`         | :ref:`curve_step<class_TextMesh_property_curve_step>`                     | ``0.5``   |
++-----------------------------------+---------------------------------------------------------------------------+-----------+
+| :ref:`float<class_float>`         | :ref:`depth<class_TextMesh_property_depth>`                               | ``0.05``  |
++-----------------------------------+---------------------------------------------------------------------------+-----------+
+| :ref:`Font<class_Font>`           | :ref:`font<class_TextMesh_property_font>`                                 |           |
++-----------------------------------+---------------------------------------------------------------------------+-----------+
+| :ref:`Align<enum_TextMesh_Align>` | :ref:`horizontal_alignment<class_TextMesh_property_horizontal_alignment>` | ``1``     |
++-----------------------------------+---------------------------------------------------------------------------+-----------+
+| :ref:`float<class_float>`         | :ref:`pixel_size<class_TextMesh_property_pixel_size>`                     | ``0.01``  |
++-----------------------------------+---------------------------------------------------------------------------+-----------+
+| :ref:`String<class_String>`       | :ref:`text<class_TextMesh_property_text>`                                 | ``""``    |
++-----------------------------------+---------------------------------------------------------------------------+-----------+
+| :ref:`bool<class_bool>`           | :ref:`uppercase<class_TextMesh_property_uppercase>`                       | ``false`` |
++-----------------------------------+---------------------------------------------------------------------------+-----------+
+
+Enumerations
+------------
+
+.. _enum_TextMesh_Align:
+
+.. _class_TextMesh_constant_ALIGN_LEFT:
+
+.. _class_TextMesh_constant_ALIGN_CENTER:
+
+.. _class_TextMesh_constant_ALIGN_RIGHT:
+
+enum **Align**:
+
+- **ALIGN_LEFT** = **0** --- Align rows to the left (default).
+
+- **ALIGN_CENTER** = **1** --- Align rows centered.
+
+- **ALIGN_RIGHT** = **2** --- Align rows to the right.
+
+Property Descriptions
+---------------------
+
+.. _class_TextMesh_property_curve_step:
+
+- :ref:`float<class_float>` **curve_step**
+
++-----------+-----------------------+
+| *Default* | ``0.5``               |
++-----------+-----------------------+
+| *Setter*  | set_curve_step(value) |
++-----------+-----------------------+
+| *Getter*  | get_curve_step()      |
++-----------+-----------------------+
+
+Step (in pixels) used to approximate Bézier curves.
+
+----
+
+.. _class_TextMesh_property_depth:
+
+- :ref:`float<class_float>` **depth**
+
++-----------+------------------+
+| *Default* | ``0.05``         |
++-----------+------------------+
+| *Setter*  | set_depth(value) |
++-----------+------------------+
+| *Getter*  | get_depth()      |
++-----------+------------------+
+
+Depths of the mesh, if set to ``0.0`` only front surface, is generated, and UV layout is changed to use full texture for the front face only.
+
+----
+
+.. _class_TextMesh_property_font:
+
+- :ref:`Font<class_Font>` **font**
+
++----------+-----------------+
+| *Setter* | set_font(value) |
++----------+-----------------+
+| *Getter* | get_font()      |
++----------+-----------------+
+
+:ref:`Font<class_Font>` used for the ``TextMesh``'s text.
+
+----
+
+.. _class_TextMesh_property_horizontal_alignment:
+
+- :ref:`Align<enum_TextMesh_Align>` **horizontal_alignment**
+
++-----------+---------------------------------+
+| *Default* | ``1``                           |
++-----------+---------------------------------+
+| *Setter*  | set_horizontal_alignment(value) |
++-----------+---------------------------------+
+| *Getter*  | get_horizontal_alignment()      |
++-----------+---------------------------------+
+
+Controls the text's horizontal alignment. Supports left, center and right. Set it to one of the :ref:`Align<enum_TextMesh_Align>` constants.
+
+----
+
+.. _class_TextMesh_property_pixel_size:
+
+- :ref:`float<class_float>` **pixel_size**
+
++-----------+-----------------------+
+| *Default* | ``0.01``              |
++-----------+-----------------------+
+| *Setter*  | set_pixel_size(value) |
++-----------+-----------------------+
+| *Getter*  | get_pixel_size()      |
++-----------+-----------------------+
+
+The size of one pixel's width on the text to scale it in 3D.
+
+----
+
+.. _class_TextMesh_property_text:
+
+- :ref:`String<class_String>` **text**
+
++-----------+-----------------+
+| *Default* | ``""``          |
++-----------+-----------------+
+| *Setter*  | set_text(value) |
++-----------+-----------------+
+| *Getter*  | get_text()      |
++-----------+-----------------+
+
+The text to generate mesh from.
+
+----
+
+.. _class_TextMesh_property_uppercase:
+
+- :ref:`bool<class_bool>` **uppercase**
+
++-----------+----------------------+
+| *Default* | ``false``            |
++-----------+----------------------+
+| *Setter*  | set_uppercase(value) |
++-----------+----------------------+
+| *Getter*  | is_uppercase()       |
++-----------+----------------------+
+
+If ``true``, all the text displays as UPPERCASE.
+
+.. |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.)`

+ 47 - 47
classes/class_time.rst

@@ -29,49 +29,49 @@ When getting time information from the system, the time can either be in the loc
 Methods
 -------
 
-+-------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`Dictionary<class_Dictionary>` | :ref:`get_date_dict_from_system<class_Time_method_get_date_dict_from_system>` **(** :ref:`bool<class_bool>` utc=false **)** |const|                                                              |
-+-------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`Dictionary<class_Dictionary>` | :ref:`get_date_dict_from_unix_time<class_Time_method_get_date_dict_from_unix_time>` **(** :ref:`int<class_int>` unix_time_val **)** |const|                                                      |
-+-------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`String<class_String>`         | :ref:`get_date_string_from_system<class_Time_method_get_date_string_from_system>` **(** :ref:`bool<class_bool>` utc=false **)** |const|                                                          |
-+-------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`String<class_String>`         | :ref:`get_date_string_from_unix_time<class_Time_method_get_date_string_from_unix_time>` **(** :ref:`int<class_int>` unix_time_val **)** |const|                                                  |
-+-------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`Dictionary<class_Dictionary>` | :ref:`get_datetime_dict_from_string<class_Time_method_get_datetime_dict_from_string>` **(** :ref:`String<class_String>` datetime, :ref:`bool<class_bool>` weekday **)** |const|                  |
-+-------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`Dictionary<class_Dictionary>` | :ref:`get_datetime_dict_from_system<class_Time_method_get_datetime_dict_from_system>` **(** :ref:`bool<class_bool>` utc=false **)** |const|                                                      |
-+-------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`Dictionary<class_Dictionary>` | :ref:`get_datetime_dict_from_unix_time<class_Time_method_get_datetime_dict_from_unix_time>` **(** :ref:`int<class_int>` unix_time_val **)** |const|                                              |
-+-------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`String<class_String>`         | :ref:`get_datetime_string_from_dict<class_Time_method_get_datetime_string_from_dict>` **(** :ref:`Dictionary<class_Dictionary>` datetime, :ref:`bool<class_bool>` use_space **)** |const|        |
-+-------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`String<class_String>`         | :ref:`get_datetime_string_from_system<class_Time_method_get_datetime_string_from_system>` **(** :ref:`bool<class_bool>` utc=false, :ref:`bool<class_bool>` use_space=false **)** |const|         |
-+-------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`String<class_String>`         | :ref:`get_datetime_string_from_unix_time<class_Time_method_get_datetime_string_from_unix_time>` **(** :ref:`int<class_int>` unix_time_val, :ref:`bool<class_bool>` use_space=false **)** |const| |
-+-------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`String<class_String>`         | :ref:`get_offset_string_from_offset_minutes<class_Time_method_get_offset_string_from_offset_minutes>` **(** :ref:`int<class_int>` offset_minutes **)** |const|                                   |
-+-------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`int<class_int>`               | :ref:`get_ticks_msec<class_Time_method_get_ticks_msec>` **(** **)** |const|                                                                                                                      |
-+-------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`int<class_int>`               | :ref:`get_ticks_usec<class_Time_method_get_ticks_usec>` **(** **)** |const|                                                                                                                      |
-+-------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`Dictionary<class_Dictionary>` | :ref:`get_time_dict_from_system<class_Time_method_get_time_dict_from_system>` **(** :ref:`bool<class_bool>` utc=false **)** |const|                                                              |
-+-------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`Dictionary<class_Dictionary>` | :ref:`get_time_dict_from_unix_time<class_Time_method_get_time_dict_from_unix_time>` **(** :ref:`int<class_int>` unix_time_val **)** |const|                                                      |
-+-------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`String<class_String>`         | :ref:`get_time_string_from_system<class_Time_method_get_time_string_from_system>` **(** :ref:`bool<class_bool>` utc=false **)** |const|                                                          |
-+-------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`String<class_String>`         | :ref:`get_time_string_from_unix_time<class_Time_method_get_time_string_from_unix_time>` **(** :ref:`int<class_int>` unix_time_val **)** |const|                                                  |
-+-------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`Dictionary<class_Dictionary>` | :ref:`get_time_zone_from_system<class_Time_method_get_time_zone_from_system>` **(** **)** |const|                                                                                                |
-+-------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`int<class_int>`               | :ref:`get_unix_time_from_datetime_dict<class_Time_method_get_unix_time_from_datetime_dict>` **(** :ref:`Dictionary<class_Dictionary>` datetime **)** |const|                                     |
-+-------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`int<class_int>`               | :ref:`get_unix_time_from_datetime_string<class_Time_method_get_unix_time_from_datetime_string>` **(** :ref:`String<class_String>` datetime **)** |const|                                         |
-+-------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`float<class_float>`           | :ref:`get_unix_time_from_system<class_Time_method_get_unix_time_from_system>` **(** **)** |const|                                                                                                |
-+-------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
++-------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`Dictionary<class_Dictionary>` | :ref:`get_date_dict_from_system<class_Time_method_get_date_dict_from_system>` **(** :ref:`bool<class_bool>` utc=false **)** |const|                                                                         |
++-------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`Dictionary<class_Dictionary>` | :ref:`get_date_dict_from_unix_time<class_Time_method_get_date_dict_from_unix_time>` **(** :ref:`int<class_int>` unix_time_val **)** |const|                                                                 |
++-------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`String<class_String>`         | :ref:`get_date_string_from_system<class_Time_method_get_date_string_from_system>` **(** :ref:`bool<class_bool>` utc=false **)** |const|                                                                     |
++-------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`String<class_String>`         | :ref:`get_date_string_from_unix_time<class_Time_method_get_date_string_from_unix_time>` **(** :ref:`int<class_int>` unix_time_val **)** |const|                                                             |
++-------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`Dictionary<class_Dictionary>` | :ref:`get_datetime_dict_from_datetime_string<class_Time_method_get_datetime_dict_from_datetime_string>` **(** :ref:`String<class_String>` datetime, :ref:`bool<class_bool>` weekday **)** |const|           |
++-------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`Dictionary<class_Dictionary>` | :ref:`get_datetime_dict_from_system<class_Time_method_get_datetime_dict_from_system>` **(** :ref:`bool<class_bool>` utc=false **)** |const|                                                                 |
++-------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`Dictionary<class_Dictionary>` | :ref:`get_datetime_dict_from_unix_time<class_Time_method_get_datetime_dict_from_unix_time>` **(** :ref:`int<class_int>` unix_time_val **)** |const|                                                         |
++-------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`String<class_String>`         | :ref:`get_datetime_string_from_datetime_dict<class_Time_method_get_datetime_string_from_datetime_dict>` **(** :ref:`Dictionary<class_Dictionary>` datetime, :ref:`bool<class_bool>` use_space **)** |const| |
++-------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`String<class_String>`         | :ref:`get_datetime_string_from_system<class_Time_method_get_datetime_string_from_system>` **(** :ref:`bool<class_bool>` utc=false, :ref:`bool<class_bool>` use_space=false **)** |const|                    |
++-------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`String<class_String>`         | :ref:`get_datetime_string_from_unix_time<class_Time_method_get_datetime_string_from_unix_time>` **(** :ref:`int<class_int>` unix_time_val, :ref:`bool<class_bool>` use_space=false **)** |const|            |
++-------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`String<class_String>`         | :ref:`get_offset_string_from_offset_minutes<class_Time_method_get_offset_string_from_offset_minutes>` **(** :ref:`int<class_int>` offset_minutes **)** |const|                                              |
++-------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`int<class_int>`               | :ref:`get_ticks_msec<class_Time_method_get_ticks_msec>` **(** **)** |const|                                                                                                                                 |
++-------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`int<class_int>`               | :ref:`get_ticks_usec<class_Time_method_get_ticks_usec>` **(** **)** |const|                                                                                                                                 |
++-------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`Dictionary<class_Dictionary>` | :ref:`get_time_dict_from_system<class_Time_method_get_time_dict_from_system>` **(** :ref:`bool<class_bool>` utc=false **)** |const|                                                                         |
++-------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`Dictionary<class_Dictionary>` | :ref:`get_time_dict_from_unix_time<class_Time_method_get_time_dict_from_unix_time>` **(** :ref:`int<class_int>` unix_time_val **)** |const|                                                                 |
++-------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`String<class_String>`         | :ref:`get_time_string_from_system<class_Time_method_get_time_string_from_system>` **(** :ref:`bool<class_bool>` utc=false **)** |const|                                                                     |
++-------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`String<class_String>`         | :ref:`get_time_string_from_unix_time<class_Time_method_get_time_string_from_unix_time>` **(** :ref:`int<class_int>` unix_time_val **)** |const|                                                             |
++-------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`Dictionary<class_Dictionary>` | :ref:`get_time_zone_from_system<class_Time_method_get_time_zone_from_system>` **(** **)** |const|                                                                                                           |
++-------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`int<class_int>`               | :ref:`get_unix_time_from_datetime_dict<class_Time_method_get_unix_time_from_datetime_dict>` **(** :ref:`Dictionary<class_Dictionary>` datetime **)** |const|                                                |
++-------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`int<class_int>`               | :ref:`get_unix_time_from_datetime_string<class_Time_method_get_unix_time_from_datetime_string>` **(** :ref:`String<class_String>` datetime **)** |const|                                                    |
++-------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`float<class_float>`           | :ref:`get_unix_time_from_system<class_Time_method_get_unix_time_from_system>` **(** **)** |const|                                                                                                           |
++-------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
 
 Enumerations
 ------------
@@ -201,9 +201,9 @@ Converts the given Unix timestamp to an ISO 8601 date string (YYYY-MM-DD).
 
 ----
 
-.. _class_Time_method_get_datetime_dict_from_string:
+.. _class_Time_method_get_datetime_dict_from_datetime_string:
 
-- :ref:`Dictionary<class_Dictionary>` **get_datetime_dict_from_string** **(** :ref:`String<class_String>` datetime, :ref:`bool<class_bool>` weekday **)** |const|
+- :ref:`Dictionary<class_Dictionary>` **get_datetime_dict_from_datetime_string** **(** :ref:`String<class_String>` datetime, :ref:`bool<class_bool>` weekday **)** |const|
 
 Converts the given ISO 8601 date and time string (YYYY-MM-DDTHH:MM:SS) to a dictionary of keys: ``year``, ``month``, ``day``, ``weekday``, ``hour``, ``minute``, and ``second``.
 
@@ -231,9 +231,9 @@ The returned Dictionary's values will be the same as the :ref:`get_datetime_dict
 
 ----
 
-.. _class_Time_method_get_datetime_string_from_dict:
+.. _class_Time_method_get_datetime_string_from_datetime_dict:
 
-- :ref:`String<class_String>` **get_datetime_string_from_dict** **(** :ref:`Dictionary<class_Dictionary>` datetime, :ref:`bool<class_bool>` use_space **)** |const|
+- :ref:`String<class_String>` **get_datetime_string_from_datetime_dict** **(** :ref:`Dictionary<class_Dictionary>` datetime, :ref:`bool<class_bool>` use_space **)** |const|
 
 Converts the given dictionary of keys to an ISO 8601 date and time string (YYYY-MM-DDTHH:MM:SS).
 

+ 5 - 5
classes/class_transform.rst

@@ -68,7 +68,7 @@ Methods
 +-----------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
 | :ref:`Transform<class_Transform>` | :ref:`orthonormalized<class_Transform_method_orthonormalized>` **(** **)**                                                                                                                                            |
 +-----------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`Transform<class_Transform>` | :ref:`rotated<class_Transform_method_rotated>` **(** :ref:`Vector3<class_Vector3>` axis, :ref:`float<class_float>` phi **)**                                                                                          |
+| :ref:`Transform<class_Transform>` | :ref:`rotated<class_Transform_method_rotated>` **(** :ref:`Vector3<class_Vector3>` axis, :ref:`float<class_float>` angle **)**                                                                                        |
 +-----------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
 | :ref:`Transform<class_Transform>` | :ref:`scaled<class_Transform_method_scaled>` **(** :ref:`Vector3<class_Vector3>` scale **)**                                                                                                                          |
 +-----------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
@@ -212,9 +212,9 @@ Returns the transform with the basis orthogonal (90 degrees), and normalized axi
 
 .. _class_Transform_method_rotated:
 
-- :ref:`Transform<class_Transform>` **rotated** **(** :ref:`Vector3<class_Vector3>` axis, :ref:`float<class_float>` phi **)**
+- :ref:`Transform<class_Transform>` **rotated** **(** :ref:`Vector3<class_Vector3>` axis, :ref:`float<class_float>` angle **)**
 
-Rotates the transform around the given axis by the given angle (in radians), using matrix multiplication. The axis must be a normalized vector.
+Returns a copy of the transform rotated around the given ``axis`` by the given ``angle`` (in radians), using matrix multiplication. The ``axis`` must be a normalized vector.
 
 ----
 
@@ -222,7 +222,7 @@ Rotates the transform around the given axis by the given angle (in radians), usi
 
 - :ref:`Transform<class_Transform>` **scaled** **(** :ref:`Vector3<class_Vector3>` scale **)**
 
-Scales basis and origin of the transform by the given scale factor, using matrix multiplication.
+Returns a copy of the transform with its basis and origin scaled by the given ``scale`` factor, using matrix multiplication.
 
 ----
 
@@ -230,7 +230,7 @@ Scales basis and origin of the transform by the given scale factor, using matrix
 
 - :ref:`Transform<class_Transform>` **translated** **(** :ref:`Vector3<class_Vector3>` offset **)**
 
-Translates the transform by the given offset, relative to the transform's basis vectors.
+Returns a copy of the transform translated by the given ``offset``, relative to the transform's basis vectors.
 
 Unlike :ref:`rotated<class_Transform_method_rotated>` and :ref:`scaled<class_Transform_method_scaled>`, this does not use matrix multiplication.
 

+ 5 - 5
classes/class_transform2d.rst

@@ -70,7 +70,7 @@ Methods
 +---------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
 | :ref:`Transform2D<class_Transform2D>` | :ref:`orthonormalized<class_Transform2D_method_orthonormalized>` **(** **)**                                                                                                          |
 +---------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`Transform2D<class_Transform2D>` | :ref:`rotated<class_Transform2D_method_rotated>` **(** :ref:`float<class_float>` phi **)**                                                                                            |
+| :ref:`Transform2D<class_Transform2D>` | :ref:`rotated<class_Transform2D_method_rotated>` **(** :ref:`float<class_float>` angle **)**                                                                                          |
 +---------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
 | :ref:`Transform2D<class_Transform2D>` | :ref:`scaled<class_Transform2D_method_scaled>` **(** :ref:`Vector2<class_Vector2>` scale **)**                                                                                        |
 +---------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
@@ -242,9 +242,9 @@ Returns the transform with the basis orthogonal (90 degrees), and normalized axi
 
 .. _class_Transform2D_method_rotated:
 
-- :ref:`Transform2D<class_Transform2D>` **rotated** **(** :ref:`float<class_float>` phi **)**
+- :ref:`Transform2D<class_Transform2D>` **rotated** **(** :ref:`float<class_float>` angle **)**
 
-Rotates the transform by the given angle (in radians), using matrix multiplication.
+Returns a copy of the transform rotated by the given ``angle`` (in radians), using matrix multiplication.
 
 ----
 
@@ -252,7 +252,7 @@ Rotates the transform by the given angle (in radians), using matrix multiplicati
 
 - :ref:`Transform2D<class_Transform2D>` **scaled** **(** :ref:`Vector2<class_Vector2>` scale **)**
 
-Scales the transform by the given scale factor, using matrix multiplication.
+Returns a copy of the transform scaled by the given ``scale`` factor, using matrix multiplication.
 
 ----
 
@@ -260,7 +260,7 @@ Scales the transform by the given scale factor, using matrix multiplication.
 
 - :ref:`Transform2D<class_Transform2D>` **translated** **(** :ref:`Vector2<class_Vector2>` offset **)**
 
-Translates the transform by the given offset, relative to the transform's basis vectors.
+Returns a copy of the transform translated by the given ``offset``, relative to the transform's basis vectors.
 
 Unlike :ref:`rotated<class_Transform2D_method_rotated>` and :ref:`scaled<class_Transform2D_method_scaled>`, this does not use matrix multiplication.
 

+ 1 - 1
classes/class_tree.rst

@@ -601,7 +601,7 @@ Returns the currently edited item. Can be used with :ref:`item_edited<class_Tree
 ::
 
     func _ready():
-        $Tree.item_edited.connect(on_Tree_item_edited)
+        $Tree.connect("item_edited", self, "on_Tree_item_edited")
     
     func on_Tree_item_edited():
         print($Tree.get_edited()) # This item just got edited (e.g. checked).

+ 1 - 1
classes/class_tween.rst

@@ -366,7 +366,7 @@ Stops animation and removes all tweens.
 
 - :ref:`bool<class_bool>` **reset** **(** :ref:`Object<class_Object>` object, :ref:`String<class_String>` key="" **)**
 
-Resets a tween to its initial value (the one given, not the one before the tween), given its object and property/method pair. By default, all tweens are removed, unless ``key`` is specified.
+Resets a tween to its initial value (the one given, not the one before the tween), given its object and property/method pair. By default, all tweens are reset, unless ``key`` is specified.
 
 ----
 

+ 2 - 0
classes/class_vboxcontainer.rst

@@ -23,6 +23,8 @@ Vertical box container. See :ref:`BoxContainer<class_BoxContainer>`.
 Tutorials
 ---------
 
+- :doc:`GUI containers <../tutorials/ui/gui_containers>`
+
 - `3D Voxel Demo <https://godotengine.org/asset-library/asset/676>`__
 
 Theme Properties

+ 3 - 3
classes/class_vector2.rst

@@ -102,7 +102,7 @@ Methods
 +-------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
 | :ref:`Vector2<class_Vector2>` | :ref:`reflect<class_Vector2_method_reflect>` **(** :ref:`Vector2<class_Vector2>` n **)**                                                                                                                                  |
 +-------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`Vector2<class_Vector2>` | :ref:`rotated<class_Vector2_method_rotated>` **(** :ref:`float<class_float>` phi **)**                                                                                                                                    |
+| :ref:`Vector2<class_Vector2>` | :ref:`rotated<class_Vector2_method_rotated>` **(** :ref:`float<class_float>` angle **)**                                                                                                                                  |
 +-------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
 | :ref:`Vector2<class_Vector2>` | :ref:`round<class_Vector2_method_round>` **(** **)**                                                                                                                                                                      |
 +-------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
@@ -436,9 +436,9 @@ Returns the vector reflected (i.e. mirrored, or symmetric) over a line defined b
 
 .. _class_Vector2_method_rotated:
 
-- :ref:`Vector2<class_Vector2>` **rotated** **(** :ref:`float<class_float>` phi **)**
+- :ref:`Vector2<class_Vector2>` **rotated** **(** :ref:`float<class_float>` angle **)**
 
-Returns the vector rotated by ``phi`` radians. See also :ref:`@GDScript.deg2rad<class_@GDScript_method_deg2rad>`.
+Returns the vector rotated by ``angle`` (in radians). See also :ref:`@GDScript.deg2rad<class_@GDScript_method_deg2rad>`.
 
 ----
 

+ 3 - 3
classes/class_vector3.rst

@@ -104,7 +104,7 @@ Methods
 +-------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
 | :ref:`Vector3<class_Vector3>` | :ref:`reflect<class_Vector3_method_reflect>` **(** :ref:`Vector3<class_Vector3>` n **)**                                                                                                                                  |
 +-------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`Vector3<class_Vector3>` | :ref:`rotated<class_Vector3_method_rotated>` **(** :ref:`Vector3<class_Vector3>` axis, :ref:`float<class_float>` phi **)**                                                                                                |
+| :ref:`Vector3<class_Vector3>` | :ref:`rotated<class_Vector3_method_rotated>` **(** :ref:`Vector3<class_Vector3>` axis, :ref:`float<class_float>` angle **)**                                                                                              |
 +-------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
 | :ref:`Vector3<class_Vector3>` | :ref:`round<class_Vector3_method_round>` **(** **)**                                                                                                                                                                      |
 +-------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
@@ -448,9 +448,9 @@ Returns this vector reflected from a plane defined by the given normal.
 
 .. _class_Vector3_method_rotated:
 
-- :ref:`Vector3<class_Vector3>` **rotated** **(** :ref:`Vector3<class_Vector3>` axis, :ref:`float<class_float>` phi **)**
+- :ref:`Vector3<class_Vector3>` **rotated** **(** :ref:`Vector3<class_Vector3>` axis, :ref:`float<class_float>` angle **)**
 
-Rotates this vector around a given axis by ``phi`` radians. The axis must be a normalized vector.
+Rotates this vector around a given axis by ``angle`` (in radians). The axis must be a normalized vector.
 
 ----
 

+ 2 - 2
classes/class_videostreamgdnative.rst

@@ -11,12 +11,12 @@ VideoStreamGDNative
 
 **Inherits:** :ref:`VideoStream<class_VideoStream>` **<** :ref:`Resource<class_Resource>` **<** :ref:`Reference<class_Reference>` **<** :ref:`Object<class_Object>`
 
-:ref:`VideoStream<class_VideoStream>` resource for for video formats implemented via GDNative.
+:ref:`VideoStream<class_VideoStream>` resource for video formats implemented via GDNative.
 
 Description
 -----------
 
-:ref:`VideoStream<class_VideoStream>` resource for for video formats implemented via GDNative.
+:ref:`VideoStream<class_VideoStream>` resource for video formats implemented via GDNative.
 
 It can be used via `godot-videodecoder <https://github.com/KidRigger/godot-videodecoder>`__ which uses the `FFmpeg <https://ffmpeg.org>`__ library.
 

+ 8 - 6
classes/class_visualserver.rst

@@ -1897,15 +1897,17 @@ enum **EnvironmentGlowBlendMode**:
 
 enum **EnvironmentToneMapper**:
 
-- **ENV_TONE_MAPPER_LINEAR** = **0** --- Output color as they came in.
+- **ENV_TONE_MAPPER_LINEAR** = **0** --- Output color as they came in. This can cause bright lighting to look blown out, with noticeable clipping in the output colors.
 
-- **ENV_TONE_MAPPER_REINHARD** = **1** --- Use the Reinhard tonemapper.
+- **ENV_TONE_MAPPER_REINHARD** = **1** --- Use the Reinhard tonemapper. Performs a variation on rendered pixels' colors by this formula: ``color = color / (1 + color)``. This avoids clipping bright highlights, but the resulting image can look a bit dull.
 
-- **ENV_TONE_MAPPER_FILMIC** = **2** --- Use the filmic tonemapper.
+- **ENV_TONE_MAPPER_FILMIC** = **2** --- Use the filmic tonemapper. This avoids clipping bright highlights, with a resulting image that usually looks more vivid than :ref:`ENV_TONE_MAPPER_REINHARD<class_VisualServer_constant_ENV_TONE_MAPPER_REINHARD>`.
 
-- **ENV_TONE_MAPPER_ACES** = **3** --- Use the ACES tonemapper.
+- **ENV_TONE_MAPPER_ACES** = **3** --- Use the legacy Godot version of the Academy Color Encoding System tonemapper. Unlike :ref:`ENV_TONE_MAPPER_ACES_FITTED<class_VisualServer_constant_ENV_TONE_MAPPER_ACES_FITTED>`, this version of ACES does not handle bright lighting in a physically accurate way. ACES typically has a more contrasted output compared to :ref:`ENV_TONE_MAPPER_REINHARD<class_VisualServer_constant_ENV_TONE_MAPPER_REINHARD>` and :ref:`ENV_TONE_MAPPER_FILMIC<class_VisualServer_constant_ENV_TONE_MAPPER_FILMIC>`.
 
-- **ENV_TONE_MAPPER_ACES_FITTED** = **4** --- Use the ACES Fitted tonemapper.
+\ **Note:** This tonemapping operator will be removed in Godot 4.0 in favor of the more accurate :ref:`ENV_TONE_MAPPER_ACES_FITTED<class_VisualServer_constant_ENV_TONE_MAPPER_ACES_FITTED>`.
+
+- **ENV_TONE_MAPPER_ACES_FITTED** = **4** --- Use the Academy Color Encoding System tonemapper. ACES is slightly more expensive than other options, but it handles bright lighting in a more realistic fashion by desaturating it as it becomes brighter. ACES typically has a more contrasted output compared to :ref:`ENV_TONE_MAPPER_REINHARD<class_VisualServer_constant_ENV_TONE_MAPPER_REINHARD>` and :ref:`ENV_TONE_MAPPER_FILMIC<class_VisualServer_constant_ENV_TONE_MAPPER_FILMIC>`.
 
 ----
 
@@ -3710,7 +3712,7 @@ Returns the value of a certain material's parameter.
 
 - :ref:`Variant<class_Variant>` **material_get_param_default** **(** :ref:`RID<class_RID>` material, :ref:`String<class_String>` parameter **)** |const|
 
-Returns the default value for the param if available. Otherwise returns an empty :ref:`Variant<class_Variant>`.
+Returns the default value for the param if available. Returns ``null`` otherwise.
 
 ----
 

+ 5 - 0
classes/class_vsplitcontainer.rst

@@ -18,6 +18,11 @@ Description
 
 Vertical split container. See :ref:`SplitContainer<class_SplitContainer>`. This goes from top to bottom.
 
+Tutorials
+---------
+
+- :doc:`GUI containers <../tutorials/ui/gui_containers>`
+
 Theme Properties
 ----------------
 

+ 1 - 1
classes/class_webxrinterface.rst

@@ -286,7 +286,7 @@ Enumerations
 
 enum **TargetRayMode**:
 
-- **TARGET_RAY_MODE_UNKNOWN** = **0** --- We don't know the the target ray mode.
+- **TARGET_RAY_MODE_UNKNOWN** = **0** --- We don't know the target ray mode.
 
 - **TARGET_RAY_MODE_GAZE** = **1** --- Target ray originates at the viewer's eyes and points in the direction they are looking.
 

+ 0 - 2
classes/class_x509certificate.rst

@@ -20,8 +20,6 @@ The X509Certificate class represents an X509 certificate. Certificates can be lo
 
 They can be used as the server certificate in :ref:`StreamPeerSSL.accept_stream<class_StreamPeerSSL_method_accept_stream>` (along with the proper :ref:`CryptoKey<class_CryptoKey>`), and to specify the only certificate that should be accepted when connecting to an SSL server via :ref:`StreamPeerSSL.connect_to_stream<class_StreamPeerSSL_method_connect_to_stream>`.
 
-\ **Note:** Not available in HTML5 exports.
-
 Methods
 -------