Przeglądaj źródła

classref: Sync with current master branch (c09d83010)

Rémi Verschelde 3 lat temu
rodzic
commit
8d5cdb0c7a
100 zmienionych plików z 3371 dodań i 1670 usunięć
  1. 16 15
      classes/[email protected]
  2. 34 22
      classes/[email protected]
  3. 0 12
      classes/class_aabb.rst
  4. 33 17
      classes/class_acceptdialog.rst
  5. 4 4
      classes/class_animatedsprite2d.rst
  6. 112 0
      classes/class_animationlibrary.rst
  7. 41 41
      classes/class_animationnode.rst
  8. 3 1
      classes/class_animationnodeblendtree.rst
  9. 4 4
      classes/class_animationnodeoneshot.rst
  10. 0 40
      classes/class_animationnodestatemachine.rst
  11. 43 15
      classes/class_animationplayer.rst
  12. 79 13
      classes/class_array.rst
  13. 5 0
      classes/class_aspectratiocontainer.rst
  14. 2 2
      classes/class_astar2d.rst
  15. 103 103
      classes/class_astar3d.rst
  16. 7 0
      classes/class_audioeffectstereoenhance.rst
  17. 56 72
      classes/class_basebutton.rst
  18. 95 23
      classes/class_basematerial3d.rst
  19. 6 18
      classes/class_basis.rst
  20. 0 14
      classes/class_bool.rst
  21. 5 0
      classes/class_boxcontainer.rst
  22. 4 2
      classes/class_boxshape3d.rst
  23. 4 4
      classes/class_button.rst
  24. 0 12
      classes/class_callable.rst
  25. 1 1
      classes/class_camera2d.rst
  26. 3 3
      classes/class_camera3d.rst
  27. 36 20
      classes/class_canvasitem.rst
  28. 4 2
      classes/class_capsuleshape2d.rst
  29. 4 2
      classes/class_capsuleshape3d.rst
  30. 5 0
      classes/class_centercontainer.rst
  31. 1 1
      classes/class_characterbody2d.rst
  32. 1 1
      classes/class_characterbody3d.rst
  33. 14 10
      classes/class_checkbox.rst
  34. 6 6
      classes/class_checkbutton.rst
  35. 4 2
      classes/class_circleshape2d.rst
  36. 0 10
      classes/class_classdb.rst
  37. 2 2
      classes/class_codeedit.rst
  38. 2 0
      classes/class_collisionobject2d.rst
  39. 5 1
      classes/class_collisionpolygon2d.rst
  40. 4 2
      classes/class_collisionpolygon3d.rst
  41. 2 0
      classes/class_collisionshape2d.rst
  42. 233 200
      classes/class_color.rst
  43. 4 0
      classes/class_colorpicker.rst
  44. 3 3
      classes/class_colorpickerbutton.rst
  45. 5 3
      classes/class_concavepolygonshape2d.rst
  46. 4 2
      classes/class_concavepolygonshape3d.rst
  47. 5 0
      classes/class_container.rst
  48. 120 114
      classes/class_control.rst
  49. 5 3
      classes/class_convexpolygonshape2d.rst
  50. 6 2
      classes/class_convexpolygonshape3d.rst
  51. 9 5
      classes/class_cpuparticles2d.rst
  52. 9 5
      classes/class_cpuparticles3d.rst
  53. 0 2
      classes/class_crypto.rst
  54. 0 2
      classes/class_cryptokey.rst
  55. 13 13
      classes/class_csgprimitive3d.rst
  56. 2 2
      classes/class_csgsphere3d.rst
  57. 18 10
      classes/class_curve.rst
  58. 19 11
      classes/class_curve2d.rst
  59. 19 11
      classes/class_curve3d.rst
  60. 53 13
      classes/class_cylindermesh.rst
  61. 4 2
      classes/class_cylindershape3d.rst
  62. 2 0
      classes/class_decal.rst
  63. 34 36
      classes/class_dictionary.rst
  64. 43 27
      classes/class_directionallight3d.rst
  65. 3 1
      classes/class_directory.rst
  66. 714 238
      classes/class_displayserver.rst
  67. 2 2
      classes/class_editorexportplugin.rst
  68. 18 24
      classes/class_editorfiledialog.rst
  69. 37 21
      classes/class_editorfilesystem.rst
  70. 62 0
      classes/class_editorfilesystemimportformatsupportquery.rst
  71. 11 3
      classes/class_editorinspector.rst
  72. 2 2
      classes/class_editorinspectorplugin.rst
  73. 11 1
      classes/class_editorplugin.rst
  74. 17 21
      classes/class_editorsceneformatimporter.rst
  75. 34 0
      classes/class_editorsceneformatimporterblend.rst
  76. 6 25
      classes/class_editorsceneformatimporterfbx.rst
  77. 4 4
      classes/class_editorscenepostimportplugin.rst
  78. 27 11
      classes/class_editorspinslider.rst
  79. 24 0
      classes/class_engine.rst
  80. 9 9
      classes/class_engineprofiler.rst
  81. 152 104
      classes/class_environment.rst
  82. 563 0
      classes/class_fastnoiselite.rst
  83. 2 2
      classes/class_file.rst
  84. 42 48
      classes/class_filedialog.rst
  85. 14 12
      classes/class_float.rst
  86. 6 4
      classes/class_fogvolume.rst
  87. 10 0
      classes/class_font.rst
  88. 20 2
      classes/class_fontdata.rst
  89. 2 2
      classes/class_geometry2d.rst
  90. 2 2
      classes/class_geometry3d.rst
  91. 90 114
      classes/class_geometryinstance3d.rst
  92. 2 2
      classes/class_gltfdocument.rst
  93. 29 53
      classes/class_gltfdocumentextension.rst
  94. 16 0
      classes/class_gltfstate.rst
  95. 18 0
      classes/class_gpuparticles2d.rst
  96. 2 0
      classes/class_gpuparticles3d.rst
  97. 25 0
      classes/class_gpuparticlesattractor3d.rst
  98. 9 0
      classes/class_gpuparticlesattractorbox3d.rst
  99. 11 0
      classes/class_gpuparticlesattractorsphere3d.rst
  100. 15 0
      classes/class_gpuparticlesattractorvectorfield3d.rst

+ 16 - 15
classes/[email protected]

@@ -295,33 +295,34 @@ Output in the console would look something like this:
 
 - :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()(/code] converts all arguments to :ref:`int<class_int>` before processing.
-[codeblock]
-    print(range(4))
-    print(range(2, 5))
-    print(range(0, 6, 2))
+\ ``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.
 
-Output:
+\ ``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.
+
+\ :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:
 

+ 34 - 22
classes/[email protected]

@@ -1458,7 +1458,7 @@ enum **KeyModifierMask**:
 
 - **KEY_CODE_MASK** = **33554431** --- Key Code mask.
 
-- **KEY_MODIFIER_MASK** = **-16777216** --- Modifier key mask.
+- **KEY_MODIFIER_MASK** = **2130706432** --- Modifier key mask.
 
 - **KEY_MASK_SHIFT** = **33554432** --- Shift key mask.
 
@@ -1642,11 +1642,11 @@ enum **JoyButton**:
 
 - **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.
 
 ----
 
@@ -2085,7 +2085,9 @@ enum **PropertyHint**:
 
 Additionally, other keywords can be included: "exp" for exponential range editing, "radians" for editing radian angles in degrees, "degrees" to hint at an angle and "noslider" to hide the slider.
 
-- **PROPERTY_HINT_ENUM** = **2** --- Hints that an integer, float or string property is an enumerated value to pick in a list specified via a hint string such as ``"Hello,Something,Else"``.
+- **PROPERTY_HINT_ENUM** = **2** --- Hints that an integer, float or string property is an enumerated value to pick in a list specified via a hint string.
+
+The hint string is a comma separated list of names such as ``"Hello,Something,Else"``. For integer and float properties, the first name in the list has value 0, the next 1, and so on. Explicit values can also be specified by appending ``:integer`` to the name, e.g. ``"Zero,One,Three:3,Four,Six:6"``.
 
 - **PROPERTY_HINT_ENUM_SUGGESTION** = **3** --- Hints that a string property can be an enumerated value to pick in a list specified via a hint string such as ``"Hello,Something,Else"``.
 
@@ -2268,11 +2270,11 @@ enum **PropertyUsageFlags**:
 
 - **PROPERTY_USAGE_INTERNATIONALIZED** = **64** --- The property is a translatable string.
 
-- **PROPERTY_USAGE_GROUP** = **128** --- Used to group properties together in the editor.
+- **PROPERTY_USAGE_GROUP** = **128** --- Used to group properties together in the editor. See :ref:`EditorInspector<class_EditorInspector>`.
 
 - **PROPERTY_USAGE_CATEGORY** = **256** --- Used to categorize properties together in the editor.
 
-- **PROPERTY_USAGE_SUBGROUP** = **512** --- Used to group properties together in the editor in a subgroup (under a group).
+- **PROPERTY_USAGE_SUBGROUP** = **512** --- Used to group properties together in the editor in a subgroup (under a group). See :ref:`EditorInspector<class_EditorInspector>`.
 
 - **PROPERTY_USAGE_NO_INSTANCE_STATE** = **2048** --- The property does not save its state in :ref:`PackedScene<class_PackedScene>`.
 
@@ -2336,6 +2338,8 @@ enum **PropertyUsageFlags**:
 
 .. _class_@GlobalScope_constant_METHOD_FLAG_FROM_SCRIPT:
 
+.. _class_@GlobalScope_constant_METHOD_FLAG_VARARG:
+
 .. _class_@GlobalScope_constant_METHOD_FLAG_STATIC:
 
 .. _class_@GlobalScope_constant_METHOD_FLAG_OBJECT_CORE:
@@ -2358,6 +2362,8 @@ enum **MethodFlags**:
 
 - **METHOD_FLAG_FROM_SCRIPT** = **64** --- Deprecated method flag, unused.
 
+- **METHOD_FLAG_VARARG** = **128**
+
 - **METHOD_FLAG_STATIC** = **256**
 
 - **METHOD_FLAG_OBJECT_CORE** = **512** --- Used internally. Allows to not dump core virtuals such as ``_notification`` to the JSON API.
@@ -2372,7 +2378,7 @@ enum **MethodFlags**:
 
 .. _class_@GlobalScope_constant_RPC_MODE_ANY_PEER:
 
-.. _class_@GlobalScope_constant_RPC_MODE_AUTH:
+.. _class_@GlobalScope_constant_RPC_MODE_AUTHORITY:
 
 enum **RPCMode**:
 
@@ -2380,7 +2386,7 @@ enum **RPCMode**:
 
 - **RPC_MODE_ANY_PEER** = **1** --- Used with :ref:`Node.rpc_config<class_Node_method_rpc_config>` to set a method to be callable remotely by any peer. Analogous to the ``@rpc(any)`` annotation. Calls are accepted from all remote peers, no matter if they are node's authority or not.
 
-- **RPC_MODE_AUTH** = **2** --- Used with :ref:`Node.rpc_config<class_Node_method_rpc_config>` to set a method to be callable remotely only by the current multiplayer authority (which is the server by default). Analogous to the ``@rpc(auth)`` annotation. See :ref:`Node.set_multiplayer_authority<class_Node_method_set_multiplayer_authority>`.
+- **RPC_MODE_AUTHORITY** = **2** --- Used with :ref:`Node.rpc_config<class_Node_method_rpc_config>` to set a method to be callable remotely only by the current multiplayer authority (which is the server by default). Analogous to the ``@rpc(authority)`` annotation. See :ref:`Node.set_multiplayer_authority<class_Node_method_set_multiplayer_authority>`.
 
 ----
 
@@ -2580,6 +2586,8 @@ enum **Variant.Type**:
 
 .. _class_@GlobalScope_constant_OP_MODULE:
 
+.. _class_@GlobalScope_constant_OP_POWER:
+
 .. _class_@GlobalScope_constant_OP_SHIFT_LEFT:
 
 .. _class_@GlobalScope_constant_OP_SHIFT_RIGHT:
@@ -2632,29 +2640,31 @@ enum **Variant.Operator**:
 
 - **OP_MODULE** = **12** --- Remainder/modulo operator (``%``).
 
-- **OP_SHIFT_LEFT** = **13** --- Left shift operator (``<<``).
+- **OP_POWER** = **13** --- Power operator (``**``).
+
+- **OP_SHIFT_LEFT** = **14** --- Left shift operator (``<<``).
 
-- **OP_SHIFT_RIGHT** = **14** --- Right shift operator (``>>``).
+- **OP_SHIFT_RIGHT** = **15** --- Right shift operator (``>>``).
 
-- **OP_BIT_AND** = **15** --- Bitwise AND operator (``&``).
+- **OP_BIT_AND** = **16** --- Bitwise AND operator (``&``).
 
-- **OP_BIT_OR** = **16** --- Bitwise OR operator (``|``).
+- **OP_BIT_OR** = **17** --- Bitwise OR operator (``|``).
 
-- **OP_BIT_XOR** = **17** --- Bitwise XOR operator (``^``).
+- **OP_BIT_XOR** = **18** --- Bitwise XOR operator (``^``).
 
-- **OP_BIT_NEGATE** = **18** --- Bitwise NOT operator (``~``).
+- **OP_BIT_NEGATE** = **19** --- Bitwise NOT operator (``~``).
 
-- **OP_AND** = **19** --- Logical AND operator (``and`` or ``&&``).
+- **OP_AND** = **20** --- Logical AND operator (``and`` or ``&&``).
 
-- **OP_OR** = **20** --- Logical OR operator (``or`` or ``||``).
+- **OP_OR** = **21** --- Logical OR operator (``or`` or ``||``).
 
-- **OP_XOR** = **21** --- Logical XOR operator (not implemented in GDScript).
+- **OP_XOR** = **22** --- Logical XOR operator (not implemented in GDScript).
 
-- **OP_NOT** = **22** --- Logical NOT operator (``not`` or ``!``).
+- **OP_NOT** = **23** --- Logical NOT operator (``not`` or ``!``).
 
-- **OP_IN** = **23** --- Logical IN operator (``in``).
+- **OP_IN** = **24** --- Logical IN operator (``in``).
 
-- **OP_MAX** = **24** --- Represents the size of the :ref:`Variant.Operator<enum_@GlobalScope_Variant.Operator>` enum.
+- **OP_MAX** = **25** --- Represents the size of the :ref:`Variant.Operator<enum_@GlobalScope_Variant.Operator>` enum.
 
 Property Descriptions
 ---------------------
@@ -3207,7 +3217,7 @@ Returns an "eased" value of ``x`` based on an easing function defined with ``cur
 
 \ `ease() curve values cheatsheet <https://raw.githubusercontent.com/godotengine/godot-docs/master/img/ease_cheatsheet.png>`__\ 
 
-See also :ref:`smoothstep<class_@GlobalScope_method_smoothstep>`. If you need to perform more advanced transitions, use :ref:`Tween<class_Tween>` or :ref:`AnimationPlayer<class_AnimationPlayer>`.
+See also :ref:`smoothstep<class_@GlobalScope_method_smoothstep>`. If you need to perform more advanced transitions, use :ref:`Tween.interpolate_value<class_Tween_method_interpolate_value>`.
 
 ----
 
@@ -3428,6 +3438,8 @@ Similar to :ref:`lerp<class_@GlobalScope_method_lerp>`, but interpolates correct
         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_@GlobalScope_method_linear2db:

+ 0 - 12
classes/class_aabb.rst

@@ -109,15 +109,11 @@ Methods
 Operators
 ---------
 
-+-------------------------+---------------------------------------------------------------------------------------------------------+
-| :ref:`bool<class_bool>` | :ref:`operator !=<class_AABB_operator_neq_bool>` **(** **)**                                            |
 +-------------------------+---------------------------------------------------------------------------------------------------------+
 | :ref:`bool<class_bool>` | :ref:`operator !=<class_AABB_operator_neq_bool>` **(** :ref:`AABB<class_AABB>` right **)**              |
 +-------------------------+---------------------------------------------------------------------------------------------------------+
 | :ref:`AABB<class_AABB>` | :ref:`operator *<class_AABB_operator_mul_AABB>` **(** :ref:`Transform3D<class_Transform3D>` right **)** |
 +-------------------------+---------------------------------------------------------------------------------------------------------+
-| :ref:`bool<class_bool>` | :ref:`operator ==<class_AABB_operator_eq_bool>` **(** **)**                                             |
-+-------------------------+---------------------------------------------------------------------------------------------------------+
 | :ref:`bool<class_bool>` | :ref:`operator ==<class_AABB_operator_eq_bool>` **(** :ref:`AABB<class_AABB>` right **)**               |
 +-------------------------+---------------------------------------------------------------------------------------------------------+
 
@@ -400,10 +396,6 @@ Operator Descriptions
 
 .. _class_AABB_operator_neq_bool:
 
-- :ref:`bool<class_bool>` **operator !=** **(** **)**
-
-----
-
 - :ref:`bool<class_bool>` **operator !=** **(** :ref:`AABB<class_AABB>` right **)**
 
 Returns ``true`` if the vectors are not equal.
@@ -422,10 +414,6 @@ Inversely transforms (multiplies) the ``AABB`` by the given :ref:`Transform3D<cl
 
 .. _class_AABB_operator_eq_bool:
 
-- :ref:`bool<class_bool>` **operator ==** **(** **)**
-
-----
-
 - :ref:`bool<class_bool>` **operator ==** **(** :ref:`AABB<class_AABB>` right **)**
 
 Returns ``true`` if the AABBs are exactly equal.

+ 33 - 17
classes/class_acceptdialog.rst

@@ -23,23 +23,25 @@ This dialog is useful for small notifications to the user about an event. It can
 Properties
 ----------
 
-+-----------------------------+-------------------------------------------------------------------------+-------------------------------------------------------------------------+
-| :ref:`bool<class_bool>`     | :ref:`dialog_autowrap<class_AcceptDialog_property_dialog_autowrap>`     | ``false``                                                               |
-+-----------------------------+-------------------------------------------------------------------------+-------------------------------------------------------------------------+
-| :ref:`bool<class_bool>`     | :ref:`dialog_hide_on_ok<class_AcceptDialog_property_dialog_hide_on_ok>` | ``true``                                                                |
-+-----------------------------+-------------------------------------------------------------------------+-------------------------------------------------------------------------+
-| :ref:`String<class_String>` | :ref:`dialog_text<class_AcceptDialog_property_dialog_text>`             | ``""``                                                                  |
-+-----------------------------+-------------------------------------------------------------------------+-------------------------------------------------------------------------+
-| :ref:`bool<class_bool>`     | exclusive                                                               | ``true`` (overrides :ref:`Window<class_Window_property_exclusive>`)     |
-+-----------------------------+-------------------------------------------------------------------------+-------------------------------------------------------------------------+
-| :ref:`String<class_String>` | title                                                                   | ``"Alert!"`` (overrides :ref:`Window<class_Window_property_title>`)     |
-+-----------------------------+-------------------------------------------------------------------------+-------------------------------------------------------------------------+
-| :ref:`bool<class_bool>`     | transient                                                               | ``true`` (overrides :ref:`Window<class_Window_property_transient>`)     |
-+-----------------------------+-------------------------------------------------------------------------+-------------------------------------------------------------------------+
-| :ref:`bool<class_bool>`     | visible                                                                 | ``false`` (overrides :ref:`Window<class_Window_property_visible>`)      |
-+-----------------------------+-------------------------------------------------------------------------+-------------------------------------------------------------------------+
-| :ref:`bool<class_bool>`     | wrap_controls                                                           | ``true`` (overrides :ref:`Window<class_Window_property_wrap_controls>`) |
-+-----------------------------+-------------------------------------------------------------------------+-------------------------------------------------------------------------+
++-----------------------------+-----------------------------------------------------------------------------------+-------------------------------------------------------------------------+
+| :ref:`bool<class_bool>`     | :ref:`dialog_autowrap<class_AcceptDialog_property_dialog_autowrap>`               | ``false``                                                               |
++-----------------------------+-----------------------------------------------------------------------------------+-------------------------------------------------------------------------+
+| :ref:`bool<class_bool>`     | :ref:`dialog_close_on_escape<class_AcceptDialog_property_dialog_close_on_escape>` | ``true``                                                                |
++-----------------------------+-----------------------------------------------------------------------------------+-------------------------------------------------------------------------+
+| :ref:`bool<class_bool>`     | :ref:`dialog_hide_on_ok<class_AcceptDialog_property_dialog_hide_on_ok>`           | ``true``                                                                |
++-----------------------------+-----------------------------------------------------------------------------------+-------------------------------------------------------------------------+
+| :ref:`String<class_String>` | :ref:`dialog_text<class_AcceptDialog_property_dialog_text>`                       | ``""``                                                                  |
++-----------------------------+-----------------------------------------------------------------------------------+-------------------------------------------------------------------------+
+| :ref:`bool<class_bool>`     | exclusive                                                                         | ``true`` (overrides :ref:`Window<class_Window_property_exclusive>`)     |
++-----------------------------+-----------------------------------------------------------------------------------+-------------------------------------------------------------------------+
+| :ref:`String<class_String>` | title                                                                             | ``"Alert!"`` (overrides :ref:`Window<class_Window_property_title>`)     |
++-----------------------------+-----------------------------------------------------------------------------------+-------------------------------------------------------------------------+
+| :ref:`bool<class_bool>`     | transient                                                                         | ``true`` (overrides :ref:`Window<class_Window_property_transient>`)     |
++-----------------------------+-----------------------------------------------------------------------------------+-------------------------------------------------------------------------+
+| :ref:`bool<class_bool>`     | visible                                                                           | ``false`` (overrides :ref:`Window<class_Window_property_visible>`)      |
++-----------------------------+-----------------------------------------------------------------------------------+-------------------------------------------------------------------------+
+| :ref:`bool<class_bool>`     | wrap_controls                                                                     | ``true`` (overrides :ref:`Window<class_Window_property_wrap_controls>`) |
++-----------------------------+-----------------------------------------------------------------------------------+-------------------------------------------------------------------------+
 
 Methods
 -------
@@ -109,6 +111,20 @@ Sets autowrapping for the text in the dialog.
 
 ----
 
+.. _class_AcceptDialog_property_dialog_close_on_escape:
+
+- :ref:`bool<class_bool>` **dialog_close_on_escape**
+
++-----------+----------------------------+
+| *Default* | ``true``                   |
++-----------+----------------------------+
+| *Setter*  | set_close_on_escape(value) |
++-----------+----------------------------+
+| *Getter*  | get_close_on_escape()      |
++-----------+----------------------------+
+
+----
+
 .. _class_AcceptDialog_property_dialog_hide_on_ok:
 
 - :ref:`bool<class_bool>` **dialog_hide_on_ok**

+ 4 - 4
classes/class_animatedsprite2d.rst

@@ -11,12 +11,12 @@ AnimatedSprite2D
 
 **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.
+``AnimatedSprite2D`` is similar to the :ref:`Sprite2D<class_Sprite2D>` 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 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.
 
@@ -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_AnimatedSprite2D_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.
 
 ----
 

+ 112 - 0
classes/class_animationlibrary.rst

@@ -0,0 +1,112 @@
+:github_url: hide
+
+.. Generated automatically by doc/tools/make_rst.py in Godot's source tree.
+.. DO NOT EDIT THIS FILE, but the AnimationLibrary.xml source instead.
+.. The source is found in doc/classes or modules/<name>/doc_classes.
+
+.. _class_AnimationLibrary:
+
+AnimationLibrary
+================
+
+**Inherits:** :ref:`Resource<class_Resource>` **<** :ref:`RefCounted<class_RefCounted>` **<** :ref:`Object<class_Object>`
+
+
+
+Properties
+----------
+
++-------------------------------------+-----------------------------------------------------+--------+
+| :ref:`Dictionary<class_Dictionary>` | :ref:`_data<class_AnimationLibrary_property__data>` | ``{}`` |
++-------------------------------------+-----------------------------------------------------+--------+
+
+Methods
+-------
+
++---------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`Error<enum_@GlobalScope_Error>` | :ref:`add_animation<class_AnimationLibrary_method_add_animation>` **(** :ref:`StringName<class_StringName>` name, :ref:`Animation<class_Animation>` animation **)**       |
++---------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`Animation<class_Animation>`     | :ref:`get_animation<class_AnimationLibrary_method_get_animation>` **(** :ref:`StringName<class_StringName>` name **)** |const|                                            |
++---------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`StringName[]<class_StringName>` | :ref:`get_animation_list<class_AnimationLibrary_method_get_animation_list>` **(** **)** |const|                                                                           |
++---------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`bool<class_bool>`               | :ref:`has_animation<class_AnimationLibrary_method_has_animation>` **(** :ref:`StringName<class_StringName>` name **)** |const|                                            |
++---------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| void                                  | :ref:`remove_animation<class_AnimationLibrary_method_remove_animation>` **(** :ref:`StringName<class_StringName>` name **)**                                              |
++---------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| void                                  | :ref:`rename_animation<class_AnimationLibrary_method_rename_animation>` **(** :ref:`StringName<class_StringName>` name, :ref:`StringName<class_StringName>` newname **)** |
++---------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+
+Signals
+-------
+
+.. _class_AnimationLibrary_signal_animation_added:
+
+- **animation_added** **(** :ref:`Animation<class_Animation>` name **)**
+
+----
+
+.. _class_AnimationLibrary_signal_animation_removed:
+
+- **animation_removed** **(** :ref:`Animation<class_Animation>` name **)**
+
+----
+
+.. _class_AnimationLibrary_signal_animation_renamed:
+
+- **animation_renamed** **(** :ref:`Animation<class_Animation>` name, :ref:`Animation<class_Animation>` to_name **)**
+
+Property Descriptions
+---------------------
+
+.. _class_AnimationLibrary_property__data:
+
+- :ref:`Dictionary<class_Dictionary>` **_data**
+
++-----------+--------+
+| *Default* | ``{}`` |
++-----------+--------+
+
+Method Descriptions
+-------------------
+
+.. _class_AnimationLibrary_method_add_animation:
+
+- :ref:`Error<enum_@GlobalScope_Error>` **add_animation** **(** :ref:`StringName<class_StringName>` name, :ref:`Animation<class_Animation>` animation **)**
+
+----
+
+.. _class_AnimationLibrary_method_get_animation:
+
+- :ref:`Animation<class_Animation>` **get_animation** **(** :ref:`StringName<class_StringName>` name **)** |const|
+
+----
+
+.. _class_AnimationLibrary_method_get_animation_list:
+
+- :ref:`StringName[]<class_StringName>` **get_animation_list** **(** **)** |const|
+
+----
+
+.. _class_AnimationLibrary_method_has_animation:
+
+- :ref:`bool<class_bool>` **has_animation** **(** :ref:`StringName<class_StringName>` name **)** |const|
+
+----
+
+.. _class_AnimationLibrary_method_remove_animation:
+
+- void **remove_animation** **(** :ref:`StringName<class_StringName>` name **)**
+
+----
+
+.. _class_AnimationLibrary_method_rename_animation:
+
+- void **rename_animation** **(** :ref:`StringName<class_StringName>` name, :ref:`StringName<class_StringName>` newname **)**
+
+.. |virtual| replace:: :abbr:`virtual (This method should typically be overridden by the user to have any effect.)`
+.. |const| replace:: :abbr:`const (This method has no side effects. It doesn't modify any of the instance's member variables.)`
+.. |vararg| replace:: :abbr:`vararg (This method accepts any number of arguments after the ones described here.)`
+.. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)`
+.. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)`
+.. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)`

+ 41 - 41
classes/class_animationnode.rst

@@ -37,43 +37,43 @@ Properties
 Methods
 -------
 
-+-------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`String<class_String>`               | :ref:`_get_caption<class_AnimationNode_method__get_caption>` **(** **)** |virtual| |const|                                                                                                                                                                                                                                                                         |
-+-------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`AnimationNode<class_AnimationNode>` | :ref:`_get_child_by_name<class_AnimationNode_method__get_child_by_name>` **(** :ref:`StringName<class_StringName>` name **)** |virtual| |const|                                                                                                                                                                                                                    |
-+-------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`Dictionary<class_Dictionary>`       | :ref:`_get_child_nodes<class_AnimationNode_method__get_child_nodes>` **(** **)** |virtual| |const|                                                                                                                                                                                                                                                                 |
-+-------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`Variant<class_Variant>`             | :ref:`_get_parameter_default_value<class_AnimationNode_method__get_parameter_default_value>` **(** :ref:`StringName<class_StringName>` parameter **)** |virtual| |const|                                                                                                                                                                                           |
-+-------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`Array<class_Array>`                 | :ref:`_get_parameter_list<class_AnimationNode_method__get_parameter_list>` **(** **)** |virtual| |const|                                                                                                                                                                                                                                                           |
-+-------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`bool<class_bool>`                   | :ref:`_has_filter<class_AnimationNode_method__has_filter>` **(** **)** |virtual| |const|                                                                                                                                                                                                                                                                           |
-+-------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`float<class_float>`                 | :ref:`_process<class_AnimationNode_method__process>` **(** :ref:`float<class_float>` time, :ref:`bool<class_bool>` seek **)** |virtual| |const|                                                                                                                                                                                                                    |
-+-------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| void                                      | :ref:`add_input<class_AnimationNode_method_add_input>` **(** :ref:`String<class_String>` name **)**                                                                                                                                                                                                                                                                |
-+-------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| void                                      | :ref:`blend_animation<class_AnimationNode_method_blend_animation>` **(** :ref:`StringName<class_StringName>` animation, :ref:`float<class_float>` time, :ref:`float<class_float>` delta, :ref:`bool<class_bool>` seeked, :ref:`float<class_float>` blend, :ref:`int<class_int>` pingponged=0 **)**                                                                 |
-+-------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`float<class_float>`                 | :ref:`blend_input<class_AnimationNode_method_blend_input>` **(** :ref:`int<class_int>` input_index, :ref:`float<class_float>` time, :ref:`bool<class_bool>` seek, :ref:`float<class_float>` blend, :ref:`FilterAction<enum_AnimationNode_FilterAction>` filter=0, :ref:`bool<class_bool>` optimize=true **)**                                                      |
-+-------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`float<class_float>`                 | :ref:`blend_node<class_AnimationNode_method_blend_node>` **(** :ref:`StringName<class_StringName>` name, :ref:`AnimationNode<class_AnimationNode>` node, :ref:`float<class_float>` time, :ref:`bool<class_bool>` seek, :ref:`float<class_float>` blend, :ref:`FilterAction<enum_AnimationNode_FilterAction>` filter=0, :ref:`bool<class_bool>` optimize=true **)** |
-+-------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`int<class_int>`                     | :ref:`get_input_count<class_AnimationNode_method_get_input_count>` **(** **)** |const|                                                                                                                                                                                                                                                                             |
-+-------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`String<class_String>`               | :ref:`get_input_name<class_AnimationNode_method_get_input_name>` **(** :ref:`int<class_int>` input **)**                                                                                                                                                                                                                                                           |
-+-------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`Variant<class_Variant>`             | :ref:`get_parameter<class_AnimationNode_method_get_parameter>` **(** :ref:`StringName<class_StringName>` name **)** |const|                                                                                                                                                                                                                                        |
-+-------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`bool<class_bool>`                   | :ref:`is_path_filtered<class_AnimationNode_method_is_path_filtered>` **(** :ref:`NodePath<class_NodePath>` path **)** |const|                                                                                                                                                                                                                                      |
-+-------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| void                                      | :ref:`remove_input<class_AnimationNode_method_remove_input>` **(** :ref:`int<class_int>` index **)**                                                                                                                                                                                                                                                               |
-+-------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| void                                      | :ref:`set_filter_path<class_AnimationNode_method_set_filter_path>` **(** :ref:`NodePath<class_NodePath>` path, :ref:`bool<class_bool>` enable **)**                                                                                                                                                                                                                |
-+-------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| void                                      | :ref:`set_parameter<class_AnimationNode_method_set_parameter>` **(** :ref:`StringName<class_StringName>` name, :ref:`Variant<class_Variant>` value **)**                                                                                                                                                                                                           |
-+-------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
++-------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`String<class_String>`               | :ref:`_get_caption<class_AnimationNode_method__get_caption>` **(** **)** |virtual| |const|                                                                                                                                                                                                                                                                                                            |
++-------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`AnimationNode<class_AnimationNode>` | :ref:`_get_child_by_name<class_AnimationNode_method__get_child_by_name>` **(** :ref:`StringName<class_StringName>` name **)** |virtual| |const|                                                                                                                                                                                                                                                       |
++-------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`Dictionary<class_Dictionary>`       | :ref:`_get_child_nodes<class_AnimationNode_method__get_child_nodes>` **(** **)** |virtual| |const|                                                                                                                                                                                                                                                                                                    |
++-------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`Variant<class_Variant>`             | :ref:`_get_parameter_default_value<class_AnimationNode_method__get_parameter_default_value>` **(** :ref:`StringName<class_StringName>` parameter **)** |virtual| |const|                                                                                                                                                                                                                              |
++-------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`Array<class_Array>`                 | :ref:`_get_parameter_list<class_AnimationNode_method__get_parameter_list>` **(** **)** |virtual| |const|                                                                                                                                                                                                                                                                                              |
++-------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`bool<class_bool>`                   | :ref:`_has_filter<class_AnimationNode_method__has_filter>` **(** **)** |virtual| |const|                                                                                                                                                                                                                                                                                                              |
++-------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`float<class_float>`                 | :ref:`_process<class_AnimationNode_method__process>` **(** :ref:`float<class_float>` time, :ref:`bool<class_bool>` seek, :ref:`bool<class_bool>` seek_root **)** |virtual| |const|                                                                                                                                                                                                                    |
++-------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| void                                      | :ref:`add_input<class_AnimationNode_method_add_input>` **(** :ref:`String<class_String>` name **)**                                                                                                                                                                                                                                                                                                   |
++-------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| void                                      | :ref:`blend_animation<class_AnimationNode_method_blend_animation>` **(** :ref:`StringName<class_StringName>` animation, :ref:`float<class_float>` time, :ref:`float<class_float>` delta, :ref:`bool<class_bool>` seeked, :ref:`bool<class_bool>` seek_root, :ref:`float<class_float>` blend, :ref:`int<class_int>` pingponged=0 **)**                                                                 |
++-------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`float<class_float>`                 | :ref:`blend_input<class_AnimationNode_method_blend_input>` **(** :ref:`int<class_int>` input_index, :ref:`float<class_float>` time, :ref:`bool<class_bool>` seek, :ref:`bool<class_bool>` seek_root, :ref:`float<class_float>` blend, :ref:`FilterAction<enum_AnimationNode_FilterAction>` filter=0, :ref:`bool<class_bool>` optimize=true **)**                                                      |
++-------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`float<class_float>`                 | :ref:`blend_node<class_AnimationNode_method_blend_node>` **(** :ref:`StringName<class_StringName>` name, :ref:`AnimationNode<class_AnimationNode>` node, :ref:`float<class_float>` time, :ref:`bool<class_bool>` seek, :ref:`bool<class_bool>` seek_root, :ref:`float<class_float>` blend, :ref:`FilterAction<enum_AnimationNode_FilterAction>` filter=0, :ref:`bool<class_bool>` optimize=true **)** |
++-------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`int<class_int>`                     | :ref:`get_input_count<class_AnimationNode_method_get_input_count>` **(** **)** |const|                                                                                                                                                                                                                                                                                                                |
++-------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`String<class_String>`               | :ref:`get_input_name<class_AnimationNode_method_get_input_name>` **(** :ref:`int<class_int>` input **)**                                                                                                                                                                                                                                                                                              |
++-------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`Variant<class_Variant>`             | :ref:`get_parameter<class_AnimationNode_method_get_parameter>` **(** :ref:`StringName<class_StringName>` name **)** |const|                                                                                                                                                                                                                                                                           |
++-------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`bool<class_bool>`                   | :ref:`is_path_filtered<class_AnimationNode_method_is_path_filtered>` **(** :ref:`NodePath<class_NodePath>` path **)** |const|                                                                                                                                                                                                                                                                         |
++-------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| void                                      | :ref:`remove_input<class_AnimationNode_method_remove_input>` **(** :ref:`int<class_int>` index **)**                                                                                                                                                                                                                                                                                                  |
++-------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| void                                      | :ref:`set_filter_path<class_AnimationNode_method_set_filter_path>` **(** :ref:`NodePath<class_NodePath>` path, :ref:`bool<class_bool>` enable **)**                                                                                                                                                                                                                                                   |
++-------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| void                                      | :ref:`set_parameter<class_AnimationNode_method_set_parameter>` **(** :ref:`StringName<class_StringName>` name, :ref:`Variant<class_Variant>` value **)**                                                                                                                                                                                                                                              |
++-------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
 
 Signals
 -------
@@ -183,7 +183,7 @@ Returns whether you want the blend tree editor to display filter editing on this
 
 .. _class_AnimationNode_method__process:
 
-- :ref:`float<class_float>` **_process** **(** :ref:`float<class_float>` time, :ref:`bool<class_bool>` seek **)** |virtual| |const|
+- :ref:`float<class_float>` **_process** **(** :ref:`float<class_float>` time, :ref:`bool<class_bool>` seek, :ref:`bool<class_bool>` seek_root **)** |virtual| |const|
 
 User-defined callback called when a custom node is processed. The ``time`` parameter is a relative delta, unless ``seek`` is ``true``, in which case it is absolute.
 
@@ -203,7 +203,7 @@ Adds an input to the node. This is only useful for nodes created for use in an :
 
 .. _class_AnimationNode_method_blend_animation:
 
-- void **blend_animation** **(** :ref:`StringName<class_StringName>` animation, :ref:`float<class_float>` time, :ref:`float<class_float>` delta, :ref:`bool<class_bool>` seeked, :ref:`float<class_float>` blend, :ref:`int<class_int>` pingponged=0 **)**
+- void **blend_animation** **(** :ref:`StringName<class_StringName>` animation, :ref:`float<class_float>` time, :ref:`float<class_float>` delta, :ref:`bool<class_bool>` seeked, :ref:`bool<class_bool>` seek_root, :ref:`float<class_float>` blend, :ref:`int<class_int>` pingponged=0 **)**
 
 Blend an animation by ``blend`` amount (name must be valid in the linked :ref:`AnimationPlayer<class_AnimationPlayer>`). A ``time`` and ``delta`` may be passed, as well as whether ``seek`` happened.
 
@@ -211,7 +211,7 @@ Blend an animation by ``blend`` amount (name must be valid in the linked :ref:`A
 
 .. _class_AnimationNode_method_blend_input:
 
-- :ref:`float<class_float>` **blend_input** **(** :ref:`int<class_int>` input_index, :ref:`float<class_float>` time, :ref:`bool<class_bool>` seek, :ref:`float<class_float>` blend, :ref:`FilterAction<enum_AnimationNode_FilterAction>` filter=0, :ref:`bool<class_bool>` optimize=true **)**
+- :ref:`float<class_float>` **blend_input** **(** :ref:`int<class_int>` input_index, :ref:`float<class_float>` time, :ref:`bool<class_bool>` seek, :ref:`bool<class_bool>` seek_root, :ref:`float<class_float>` blend, :ref:`FilterAction<enum_AnimationNode_FilterAction>` filter=0, :ref:`bool<class_bool>` optimize=true **)**
 
 Blend an input. This is only useful for nodes created for an :ref:`AnimationNodeBlendTree<class_AnimationNodeBlendTree>`. The ``time`` parameter is a relative delta, unless ``seek`` is ``true``, in which case it is absolute. A filter mode may be optionally passed (see :ref:`FilterAction<enum_AnimationNode_FilterAction>` for options).
 
@@ -219,7 +219,7 @@ Blend an input. This is only useful for nodes created for an :ref:`AnimationNode
 
 .. _class_AnimationNode_method_blend_node:
 
-- :ref:`float<class_float>` **blend_node** **(** :ref:`StringName<class_StringName>` name, :ref:`AnimationNode<class_AnimationNode>` node, :ref:`float<class_float>` time, :ref:`bool<class_bool>` seek, :ref:`float<class_float>` blend, :ref:`FilterAction<enum_AnimationNode_FilterAction>` filter=0, :ref:`bool<class_bool>` optimize=true **)**
+- :ref:`float<class_float>` **blend_node** **(** :ref:`StringName<class_StringName>` name, :ref:`AnimationNode<class_AnimationNode>` node, :ref:`float<class_float>` time, :ref:`bool<class_bool>` seek, :ref:`bool<class_bool>` seek_root, :ref:`float<class_float>` blend, :ref:`FilterAction<enum_AnimationNode_FilterAction>` filter=0, :ref:`bool<class_bool>` optimize=true **)**
 
 Blend another animation node (in case this node contains children animation nodes). This function is only useful if you inherit from :ref:`AnimationRootNode<class_AnimationRootNode>` instead, else editors will not display your node for addition.
 

+ 3 - 1
classes/class_animationnodeblendtree.rst

@@ -16,7 +16,9 @@ AnimationNodeBlendTree
 Description
 -----------
 
-This node may contain a sub-tree of any other blend type nodes, such as mix, blend2, blend3, one shot, etc. This is one of the most commonly used roots.
+This node may contain a sub-tree of any other blend type nodes, such as :ref:`AnimationNodeTransition<class_AnimationNodeTransition>`, :ref:`AnimationNodeBlend2<class_AnimationNodeBlend2>`, :ref:`AnimationNodeBlend3<class_AnimationNodeBlend3>`, :ref:`AnimationNodeOneShot<class_AnimationNodeOneShot>`, etc. This is one of the most commonly used roots.
+
+An :ref:`AnimationNodeOutput<class_AnimationNodeOutput>` node named ``output`` is created by default.
 
 Tutorials
 ---------

+ 4 - 4
classes/class_animationnodeoneshot.rst

@@ -35,9 +35,9 @@ Properties
 +---------------------------------------------------+-----------------------------------------------------------------------------------------------+-----------+
 | :ref:`float<class_float>`                         | :ref:`autorestart_random_delay<class_AnimationNodeOneShot_property_autorestart_random_delay>` | ``0.0``   |
 +---------------------------------------------------+-----------------------------------------------------------------------------------------------+-----------+
-| :ref:`float<class_float>`                         | :ref:`fadein_time<class_AnimationNodeOneShot_property_fadein_time>`                           | ``0.1``   |
+| :ref:`float<class_float>`                         | :ref:`fadein_time<class_AnimationNodeOneShot_property_fadein_time>`                           | ``0.0``   |
 +---------------------------------------------------+-----------------------------------------------------------------------------------------------+-----------+
-| :ref:`float<class_float>`                         | :ref:`fadeout_time<class_AnimationNodeOneShot_property_fadeout_time>`                         | ``0.1``   |
+| :ref:`float<class_float>`                         | :ref:`fadeout_time<class_AnimationNodeOneShot_property_fadeout_time>`                         | ``0.0``   |
 +---------------------------------------------------+-----------------------------------------------------------------------------------------------+-----------+
 | :ref:`MixMode<enum_AnimationNodeOneShot_MixMode>` | :ref:`mix_mode<class_AnimationNodeOneShot_property_mix_mode>`                                 | ``0``     |
 +---------------------------------------------------+-----------------------------------------------------------------------------------------------+-----------+
@@ -115,7 +115,7 @@ If :ref:`autorestart<class_AnimationNodeOneShot_property_autorestart>` is ``true
 - :ref:`float<class_float>` **fadein_time**
 
 +-----------+------------------------+
-| *Default* | ``0.1``                |
+| *Default* | ``0.0``                |
 +-----------+------------------------+
 | *Setter*  | set_fadein_time(value) |
 +-----------+------------------------+
@@ -129,7 +129,7 @@ If :ref:`autorestart<class_AnimationNodeOneShot_property_autorestart>` is ``true
 - :ref:`float<class_float>` **fadeout_time**
 
 +-----------+-------------------------+
-| *Default* | ``0.1``                 |
+| *Default* | ``0.0``                 |
 +-----------+-------------------------+
 | *Setter*  | set_fadeout_time(value) |
 +-----------+-------------------------+

+ 0 - 40
classes/class_animationnodestatemachine.rst

@@ -48,8 +48,6 @@ Methods
 +---------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
 | void                                                                                  | :ref:`add_transition<class_AnimationNodeStateMachine_method_add_transition>` **(** :ref:`StringName<class_StringName>` from, :ref:`StringName<class_StringName>` to, :ref:`AnimationNodeStateMachineTransition<class_AnimationNodeStateMachineTransition>` transition **)** |
 +---------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`String<class_String>`                                                           | :ref:`get_end_node<class_AnimationNodeStateMachine_method_get_end_node>` **(** **)** |const|                                                                                                                                                                                |
-+---------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
 | :ref:`Vector2<class_Vector2>`                                                         | :ref:`get_graph_offset<class_AnimationNodeStateMachine_method_get_graph_offset>` **(** **)** |const|                                                                                                                                                                        |
 +---------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
 | :ref:`AnimationNode<class_AnimationNode>`                                             | :ref:`get_node<class_AnimationNodeStateMachine_method_get_node>` **(** :ref:`StringName<class_StringName>` name **)** |const|                                                                                                                                               |
@@ -58,8 +56,6 @@ Methods
 +---------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
 | :ref:`Vector2<class_Vector2>`                                                         | :ref:`get_node_position<class_AnimationNodeStateMachine_method_get_node_position>` **(** :ref:`StringName<class_StringName>` name **)** |const|                                                                                                                             |
 +---------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`String<class_String>`                                                           | :ref:`get_start_node<class_AnimationNodeStateMachine_method_get_start_node>` **(** **)** |const|                                                                                                                                                                            |
-+---------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
 | :ref:`AnimationNodeStateMachineTransition<class_AnimationNodeStateMachineTransition>` | :ref:`get_transition<class_AnimationNodeStateMachine_method_get_transition>` **(** :ref:`int<class_int>` idx **)** |const|                                                                                                                                                  |
 +---------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
 | :ref:`int<class_int>`                                                                 | :ref:`get_transition_count<class_AnimationNodeStateMachine_method_get_transition_count>` **(** **)** |const|                                                                                                                                                                |
@@ -82,14 +78,10 @@ Methods
 +---------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
 | void                                                                                  | :ref:`replace_node<class_AnimationNodeStateMachine_method_replace_node>` **(** :ref:`StringName<class_StringName>` name, :ref:`AnimationNode<class_AnimationNode>` node **)**                                                                                               |
 +---------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| void                                                                                  | :ref:`set_end_node<class_AnimationNodeStateMachine_method_set_end_node>` **(** :ref:`StringName<class_StringName>` name **)**                                                                                                                                               |
-+---------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
 | void                                                                                  | :ref:`set_graph_offset<class_AnimationNodeStateMachine_method_set_graph_offset>` **(** :ref:`Vector2<class_Vector2>` offset **)**                                                                                                                                           |
 +---------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
 | void                                                                                  | :ref:`set_node_position<class_AnimationNodeStateMachine_method_set_node_position>` **(** :ref:`StringName<class_StringName>` name, :ref:`Vector2<class_Vector2>` position **)**                                                                                             |
 +---------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| void                                                                                  | :ref:`set_start_node<class_AnimationNodeStateMachine_method_set_start_node>` **(** :ref:`StringName<class_StringName>` name **)**                                                                                                                                           |
-+---------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
 
 Method Descriptions
 -------------------
@@ -110,14 +102,6 @@ Adds a transition between the given nodes.
 
 ----
 
-.. _class_AnimationNodeStateMachine_method_get_end_node:
-
-- :ref:`String<class_String>` **get_end_node** **(** **)** |const|
-
-Returns the graph's end node.
-
-----
-
 .. _class_AnimationNodeStateMachine_method_get_graph_offset:
 
 - :ref:`Vector2<class_Vector2>` **get_graph_offset** **(** **)** |const|
@@ -150,14 +134,6 @@ Returns the given node's coordinates. Used for display in the editor.
 
 ----
 
-.. _class_AnimationNodeStateMachine_method_get_start_node:
-
-- :ref:`String<class_String>` **get_start_node** **(** **)** |const|
-
-Returns the graph's end node.
-
-----
-
 .. _class_AnimationNodeStateMachine_method_get_transition:
 
 - :ref:`AnimationNodeStateMachineTransition<class_AnimationNodeStateMachineTransition>` **get_transition** **(** :ref:`int<class_int>` idx **)** |const|
@@ -244,14 +220,6 @@ Renames the given node.
 
 ----
 
-.. _class_AnimationNodeStateMachine_method_set_end_node:
-
-- void **set_end_node** **(** :ref:`StringName<class_StringName>` name **)**
-
-Sets the given node as the graph end point.
-
-----
-
 .. _class_AnimationNodeStateMachine_method_set_graph_offset:
 
 - void **set_graph_offset** **(** :ref:`Vector2<class_Vector2>` offset **)**
@@ -266,14 +234,6 @@ Sets the draw offset of the graph. Used for display in the editor.
 
 Sets the node's coordinates. Used for display in the editor.
 
-----
-
-.. _class_AnimationNodeStateMachine_method_set_start_node:
-
-- void **set_start_node** **(** :ref:`StringName<class_StringName>` name **)**
-
-Sets the given node as the graph start point.
-
 .. |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.)`

+ 43 - 15
classes/class_animationplayer.rst

@@ -64,7 +64,7 @@ Methods
 -------
 
 +---------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`Error<enum_@GlobalScope_Error>`             | :ref:`add_animation<class_AnimationPlayer_method_add_animation>` **(** :ref:`StringName<class_StringName>` name, :ref:`Animation<class_Animation>` animation **)**                                                                    |
+| :ref:`Error<enum_@GlobalScope_Error>`             | :ref:`add_animation_library<class_AnimationPlayer_method_add_animation_library>` **(** :ref:`StringName<class_StringName>` name, :ref:`AnimationLibrary<class_AnimationLibrary>` library **)**                                        |
 +---------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
 | void                                              | :ref:`advance<class_AnimationPlayer_method_advance>` **(** :ref:`float<class_float>` delta **)**                                                                                                                                      |
 +---------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
@@ -78,8 +78,14 @@ Methods
 +---------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
 | :ref:`StringName<class_StringName>`               | :ref:`find_animation<class_AnimationPlayer_method_find_animation>` **(** :ref:`Animation<class_Animation>` animation **)** |const|                                                                                                    |
 +---------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`StringName<class_StringName>`               | :ref:`find_animation_library<class_AnimationPlayer_method_find_animation_library>` **(** :ref:`Animation<class_Animation>` animation **)** |const|                                                                                    |
++---------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
 | :ref:`Animation<class_Animation>`                 | :ref:`get_animation<class_AnimationPlayer_method_get_animation>` **(** :ref:`StringName<class_StringName>` name **)** |const|                                                                                                         |
 +---------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`AnimationLibrary<class_AnimationLibrary>`   | :ref:`get_animation_library<class_AnimationPlayer_method_get_animation_library>` **(** :ref:`StringName<class_StringName>` name **)** |const|                                                                                         |
++---------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`StringName[]<class_StringName>`             | :ref:`get_animation_library_list<class_AnimationPlayer_method_get_animation_library_list>` **(** **)** |const|                                                                                                                        |
++---------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
 | :ref:`PackedStringArray<class_PackedStringArray>` | :ref:`get_animation_list<class_AnimationPlayer_method_get_animation_list>` **(** **)** |const|                                                                                                                                        |
 +---------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
 | :ref:`float<class_float>`                         | :ref:`get_blend_time<class_AnimationPlayer_method_get_blend_time>` **(** :ref:`StringName<class_StringName>` anim_from, :ref:`StringName<class_StringName>` anim_to **)** |const|                                                     |
@@ -90,6 +96,8 @@ Methods
 +---------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
 | :ref:`bool<class_bool>`                           | :ref:`has_animation<class_AnimationPlayer_method_has_animation>` **(** :ref:`StringName<class_StringName>` name **)** |const|                                                                                                         |
 +---------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`bool<class_bool>`                           | :ref:`has_animation_library<class_AnimationPlayer_method_has_animation_library>` **(** :ref:`StringName<class_StringName>` name **)** |const|                                                                                         |
++---------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
 | :ref:`bool<class_bool>`                           | :ref:`is_playing<class_AnimationPlayer_method_is_playing>` **(** **)** |const|                                                                                                                                                        |
 +---------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
 | void                                              | :ref:`play<class_AnimationPlayer_method_play>` **(** :ref:`StringName<class_StringName>` name="", :ref:`float<class_float>` custom_blend=-1, :ref:`float<class_float>` custom_speed=1.0, :ref:`bool<class_bool>` from_end=false **)** |
@@ -98,9 +106,9 @@ Methods
 +---------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
 | void                                              | :ref:`queue<class_AnimationPlayer_method_queue>` **(** :ref:`StringName<class_StringName>` name **)**                                                                                                                                 |
 +---------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| void                                              | :ref:`remove_animation<class_AnimationPlayer_method_remove_animation>` **(** :ref:`StringName<class_StringName>` name **)**                                                                                                           |
+| void                                              | :ref:`remove_animation_library<class_AnimationPlayer_method_remove_animation_library>` **(** :ref:`StringName<class_StringName>` name **)**                                                                                           |
 +---------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| void                                              | :ref:`rename_animation<class_AnimationPlayer_method_rename_animation>` **(** :ref:`StringName<class_StringName>` name, :ref:`StringName<class_StringName>` newname **)**                                                              |
+| void                                              | :ref:`rename_animation_library<class_AnimationPlayer_method_rename_animation_library>` **(** :ref:`StringName<class_StringName>` name, :ref:`StringName<class_StringName>` newname **)**                                              |
 +---------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
 | void                                              | :ref:`seek<class_AnimationPlayer_method_seek>` **(** :ref:`float<class_float>` seconds, :ref:`bool<class_bool>` update=false **)**                                                                                                    |
 +---------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
@@ -365,11 +373,9 @@ The node from which node path references will travel.
 Method Descriptions
 -------------------
 
-.. _class_AnimationPlayer_method_add_animation:
-
-- :ref:`Error<enum_@GlobalScope_Error>` **add_animation** **(** :ref:`StringName<class_StringName>` name, :ref:`Animation<class_Animation>` animation **)**
+.. _class_AnimationPlayer_method_add_animation_library:
 
-Adds ``animation`` to the player accessible with the key ``name``.
+- :ref:`Error<enum_@GlobalScope_Error>` **add_animation_library** **(** :ref:`StringName<class_StringName>` name, :ref:`AnimationLibrary<class_AnimationLibrary>` library **)**
 
 ----
 
@@ -421,6 +427,12 @@ Returns the name of ``animation`` or an empty string if not found.
 
 ----
 
+.. _class_AnimationPlayer_method_find_animation_library:
+
+- :ref:`StringName<class_StringName>` **find_animation_library** **(** :ref:`Animation<class_Animation>` animation **)** |const|
+
+----
+
 .. _class_AnimationPlayer_method_get_animation:
 
 - :ref:`Animation<class_Animation>` **get_animation** **(** :ref:`StringName<class_StringName>` name **)** |const|
@@ -429,6 +441,18 @@ Returns the :ref:`Animation<class_Animation>` with key ``name`` or ``null`` if n
 
 ----
 
+.. _class_AnimationPlayer_method_get_animation_library:
+
+- :ref:`AnimationLibrary<class_AnimationLibrary>` **get_animation_library** **(** :ref:`StringName<class_StringName>` name **)** |const|
+
+----
+
+.. _class_AnimationPlayer_method_get_animation_library_list:
+
+- :ref:`StringName[]<class_StringName>` **get_animation_library_list** **(** **)** |const|
+
+----
+
 .. _class_AnimationPlayer_method_get_animation_list:
 
 - :ref:`PackedStringArray<class_PackedStringArray>` **get_animation_list** **(** **)** |const|
@@ -469,6 +493,12 @@ Returns ``true`` if the ``AnimationPlayer`` stores an :ref:`Animation<class_Anim
 
 ----
 
+.. _class_AnimationPlayer_method_has_animation_library:
+
+- :ref:`bool<class_bool>` **has_animation_library** **(** :ref:`StringName<class_StringName>` name **)** |const|
+
+----
+
 .. _class_AnimationPlayer_method_is_playing:
 
 - :ref:`bool<class_bool>` **is_playing** **(** **)** |const|
@@ -509,19 +539,15 @@ Queues an animation for playback once the current one is done.
 
 ----
 
-.. _class_AnimationPlayer_method_remove_animation:
+.. _class_AnimationPlayer_method_remove_animation_library:
 
-- void **remove_animation** **(** :ref:`StringName<class_StringName>` name **)**
-
-Removes the animation with key ``name``.
+- void **remove_animation_library** **(** :ref:`StringName<class_StringName>` name **)**
 
 ----
 
-.. _class_AnimationPlayer_method_rename_animation:
-
-- void **rename_animation** **(** :ref:`StringName<class_StringName>` name, :ref:`StringName<class_StringName>` newname **)**
+.. _class_AnimationPlayer_method_rename_animation_library:
 
-Renames an existing animation with key ``name`` to ``newname``.
+- void **rename_animation_library** **(** :ref:`StringName<class_StringName>` name, :ref:`StringName<class_StringName>` newname **)**
 
 ----
 
@@ -531,6 +557,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:

+ 79 - 13
classes/class_array.rst

@@ -97,6 +97,10 @@ Constructors
 Methods
 -------
 
++-------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`bool<class_bool>`       | :ref:`all<class_Array_method_all>` **(** :ref:`Callable<class_Callable>` method **)** |const|                                                                                                  |
++-------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`bool<class_bool>`       | :ref:`any<class_Array_method_any>` **(** :ref:`Callable<class_Callable>` method **)** |const|                                                                                                  |
 +-------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
 | void                          | :ref:`append<class_Array_method_append>` **(** :ref:`Variant<class_Variant>` value **)**                                                                                                       |
 +-------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
@@ -174,8 +178,6 @@ Methods
 Operators
 ---------
 
-+---------------------------+-----------------------------------------------------------------------------------------------+
-| :ref:`bool<class_bool>`   | :ref:`operator !=<class_Array_operator_neq_bool>` **(** **)**                                 |
 +---------------------------+-----------------------------------------------------------------------------------------------+
 | :ref:`bool<class_bool>`   | :ref:`operator !=<class_Array_operator_neq_bool>` **(** :ref:`Array<class_Array>` right **)** |
 +---------------------------+-----------------------------------------------------------------------------------------------+
@@ -185,8 +187,6 @@ Operators
 +---------------------------+-----------------------------------------------------------------------------------------------+
 | :ref:`bool<class_bool>`   | :ref:`operator <=<class_Array_operator_lte_bool>` **(** :ref:`Array<class_Array>` right **)** |
 +---------------------------+-----------------------------------------------------------------------------------------------+
-| :ref:`bool<class_bool>`   | :ref:`operator ==<class_Array_operator_eq_bool>` **(** **)**                                  |
-+---------------------------+-----------------------------------------------------------------------------------------------+
 | :ref:`bool<class_bool>`   | :ref:`operator ==<class_Array_operator_eq_bool>` **(** :ref:`Array<class_Array>` right **)**  |
 +---------------------------+-----------------------------------------------------------------------------------------------+
 | :ref:`bool<class_bool>`   | :ref:`operator ><class_Array_operator_gt_bool>` **(** :ref:`Array<class_Array>` right **)**   |
@@ -268,6 +268,58 @@ Constructs an array from a :ref:`PackedVector3Array<class_PackedVector3Array>`.
 Method Descriptions
 -------------------
 
+.. _class_Array_method_all:
+
+- :ref:`bool<class_bool>` **all** **(** :ref:`Callable<class_Callable>` method **)** |const|
+
+Calls the provided :ref:`Callable<class_Callable>` on each element in the array and returns ``true`` if the :ref:`Callable<class_Callable>` returns ``true`` for *all* elements in the array. If the :ref:`Callable<class_Callable>` returns ``false`` for one array element or more, this method returns ``false``.
+
+The callable's method should take one :ref:`Variant<class_Variant>` parameter (the current array element) and return a boolean value.
+
+::
+
+    func _ready():
+        print([6, 10, 6].all(greater_than_5))  # Prints True (3 elements evaluate to `true`).
+        print([4, 10, 4].all(greater_than_5))  # Prints False (1 elements evaluate to `true`).
+        print([4, 4, 4].all(greater_than_5))  # Prints False (0 elements evaluate to `true`).
+    
+        print([6, 10, 6].all(func(number): return number > 5))  # Prints True. Same as the first line above, but using lambda function.
+    
+    func greater_than_5(number):
+        return number > 5
+
+See also :ref:`any<class_Array_method_any>`, :ref:`filter<class_Array_method_filter>`, :ref:`map<class_Array_method_map>` and :ref:`reduce<class_Array_method_reduce>`.
+
+\ **Note:** Unlike relying on the size of an array returned by :ref:`filter<class_Array_method_filter>`, this method will return as early as possible to improve performance (especially with large arrays).
+
+----
+
+.. _class_Array_method_any:
+
+- :ref:`bool<class_bool>` **any** **(** :ref:`Callable<class_Callable>` method **)** |const|
+
+Calls the provided :ref:`Callable<class_Callable>` on each element in the array and returns ``true`` if the :ref:`Callable<class_Callable>` returns ``true`` for *one or more* elements in the array. If the :ref:`Callable<class_Callable>` returns ``false`` for all elements in the array, this method returns ``false``.
+
+The callable's method should take one :ref:`Variant<class_Variant>` parameter (the current array element) and return a boolean value.
+
+::
+
+    func _ready():
+        print([6, 10, 6].any(greater_than_5))  # Prints True (3 elements evaluate to `true`).
+        print([4, 10, 4].any(greater_than_5))  # Prints True (1 elements evaluate to `true`).
+        print([4, 4, 4].any(greater_than_5))  # Prints False (0 elements evaluate to `true`).
+    
+        print([6, 10, 6].any(func(number): return number > 5))  # Prints True. Same as the first line above, but using lambda function.
+    
+    func greater_than_5(number):
+        return number > 5
+
+See also :ref:`all<class_Array_method_all>`, :ref:`filter<class_Array_method_filter>`, :ref:`map<class_Array_method_map>` and :ref:`reduce<class_Array_method_reduce>`.
+
+\ **Note:** Unlike relying on the size of an array returned by :ref:`filter<class_Array_method_filter>`, this method will return as early as possible to improve performance (especially with large arrays).
+
+----
+
 .. _class_Array_method_append:
 
 - void **append** **(** :ref:`Variant<class_Variant>` value **)**
@@ -351,7 +403,7 @@ If ``deep`` is ``true``, a deep copy is performed: all nested arrays and diction
 
 - void **erase** **(** :ref:`Variant<class_Variant>` value **)**
 
-Removes the first occurrence of a value from the array. To remove an element by index, use :ref:`remove_at<class_Array_method_remove_at>` instead.
+Removes the first occurrence of a value from the array. If the value does not exist in the array, nothing happens. To remove an element by index, use :ref:`remove_at<class_Array_method_remove_at>` instead.
 
 \ **Note:** This method acts in-place and doesn't return a value.
 
@@ -401,6 +453,8 @@ The callable's method should take one :ref:`Variant<class_Variant>` parameter (t
     func remove_1(number):
         return number != 1
 
+See also :ref:`any<class_Array_method_any>`, :ref:`all<class_Array_method_all>`, :ref:`map<class_Array_method_map>` and :ref:`reduce<class_Array_method_reduce>`.
+
 ----
 
 .. _class_Array_method_find:
@@ -529,6 +583,8 @@ The callable's method should take one :ref:`Variant<class_Variant>` parameter (t
     func negate(number):
         return -number
 
+See also :ref:`filter<class_Array_method_filter>`, :ref:`reduce<class_Array_method_reduce>`, :ref:`any<class_Array_method_any>` and :ref:`all<class_Array_method_all>`.
+
 ----
 
 .. _class_Array_method_max:
@@ -610,6 +666,8 @@ The callable's method takes two arguments: the current value of ``accum`` and th
     func sum(accum, number):
         return accum + number
 
+See also :ref:`map<class_Array_method_map>`, :ref:`filter<class_Array_method_filter>`, :ref:`any<class_Array_method_any>` and :ref:`all<class_Array_method_all>`.
+
 ----
 
 .. _class_Array_method_remove_at:
@@ -751,58 +809,66 @@ Operator Descriptions
 
 .. _class_Array_operator_neq_bool:
 
-- :ref:`bool<class_bool>` **operator !=** **(** **)**
-
-----
-
 - :ref:`bool<class_bool>` **operator !=** **(** :ref:`Array<class_Array>` right **)**
 
+Compares the left operand ``Array`` against the ``right`` ``Array``. Returns ``true`` if the sizes or contents of the arrays are *not* equal, ``false`` otherwise.
+
 ----
 
 .. _class_Array_operator_sum_Array:
 
 - :ref:`Array<class_Array>` **operator +** **(** :ref:`Array<class_Array>` right **)**
 
+Concatenates two ``Array``\ s together, with the ``right`` ``Array`` being added to the end of the ``Array`` specified in the left operand. For example, ``[1, 2] + [3, 4]`` results in ``[1, 2, 3, 4]``.
+
 ----
 
 .. _class_Array_operator_lt_bool:
 
 - :ref:`bool<class_bool>` **operator <** **(** :ref:`Array<class_Array>` right **)**
 
+Performs a comparison for each index between the left operand ``Array`` and the ``right`` ``Array``, considering the highest common index of both arrays for this comparison: Returns ``true`` on the first occurrence of an element that is less, or ``false`` if the element is greater. Note that depending on the type of data stored, this function may be recursive. If all elements are equal, it compares the length of both arrays and returns ``false`` if the left operand ``Array`` has less elements, otherwise it returns ``true``.
+
 ----
 
 .. _class_Array_operator_lte_bool:
 
 - :ref:`bool<class_bool>` **operator <=** **(** :ref:`Array<class_Array>` right **)**
 
+Performs a comparison for each index between the left operand ``Array`` and the ``right`` ``Array``, considering the highest common index of both arrays for this comparison: Returns ``true`` on the first occurrence of an element that is less, or ``false`` if the element is greater. Note that depending on the type of data stored, this function may be recursive. If all elements are equal, it compares the length of both arrays and returns ``true`` if the left operand ``Array`` has less or the same number of elements, otherwise it returns ``false``.
+
 ----
 
 .. _class_Array_operator_eq_bool:
 
-- :ref:`bool<class_bool>` **operator ==** **(** **)**
-
-----
-
 - :ref:`bool<class_bool>` **operator ==** **(** :ref:`Array<class_Array>` right **)**
 
+Compares the left operand ``Array`` against the ``right`` ``Array``. Returns ``true`` if the sizes and contents of the arrays are equal, ``false`` otherwise.
+
 ----
 
 .. _class_Array_operator_gt_bool:
 
 - :ref:`bool<class_bool>` **operator >** **(** :ref:`Array<class_Array>` right **)**
 
+Performs a comparison for each index between the left operand ``Array`` and the ``right`` ``Array``, considering the highest common index of both arrays for this comparison: Returns ``true`` on the first occurrence of an element that is greater, or ``false`` if the element is less. Note that depending on the type of data stored, this function may be recursive. If all elements are equal, it compares the length of both arrays and returns ``true`` if the ``right`` ``Array`` has more elements, otherwise it returns ``false``.
+
 ----
 
 .. _class_Array_operator_gte_bool:
 
 - :ref:`bool<class_bool>` **operator >=** **(** :ref:`Array<class_Array>` right **)**
 
+Performs a comparison for each index between the left operand ``Array`` and the ``right`` ``Array``, considering the highest common index of both arrays for this comparison: Returns ``true`` on the first occurrence of an element that is greater, or ``false`` if the element is less. Note that depending on the type of data stored, this function may be recursive. If all elements are equal, it compares the length of both arrays and returns ``true`` if the ``right`` ``Array`` has more or the same number of elements, otherwise it returns ``false``.
+
 ----
 
 .. _class_Array_operator_idx_void:
 
 - void **operator []** **(** :ref:`int<class_int>` index **)**
 
+Returns a reference to the element of type :ref:`Variant<class_Variant>` at the specified location. Arrays start at index 0. ``index`` can be a zero or positive value to start from the beginning, or a negative value to start from the end. Out-of-bounds array access causes a run-time error, which will result in an error being printed and the project execution pausing if run from the editor.
+
 .. |virtual| replace:: :abbr:`virtual (This method should typically be overridden by the user to have any effect.)`
 .. |const| replace:: :abbr:`const (This method has no side effects. It doesn't modify any of the instance's member variables.)`
 .. |vararg| replace:: :abbr:`vararg (This method accepts any number of arguments after the ones described here.)`

+ 5 - 0
classes/class_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
 ----------
 

+ 2 - 2
classes/class_astar2d.rst

@@ -16,7 +16,7 @@ AStar class representation that uses 2D vectors as edges.
 Description
 -----------
 
-This is a wrapper for the :ref:`AStar<class_AStar>` class which uses 2D vectors instead of 3D vectors.
+This is a wrapper for the :ref:`AStar3D<class_AStar3D>` class which uses 2D vectors instead of 3D vectors.
 
 Methods
 -------
@@ -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.
 

+ 103 - 103
classes/class_astar.rst → classes/class_astar3d.rst

@@ -1,13 +1,13 @@
 :github_url: hide
 
 .. Generated automatically by doc/tools/make_rst.py in Godot's source tree.
-.. DO NOT EDIT THIS FILE, but the AStar.xml source instead.
+.. DO NOT EDIT THIS FILE, but the AStar3D.xml source instead.
 .. The source is found in doc/classes or modules/<name>/doc_classes.
 
-.. _class_AStar:
+.. _class_AStar3D:
 
-AStar
-=====
+AStar3D
+=======
 
 **Inherits:** :ref:`RefCounted<class_RefCounted>` **<** :ref:`Object<class_Object>`
 
@@ -18,9 +18,9 @@ Description
 
 A\* (A star) is a computer algorithm that is widely used in pathfinding and graph traversal, the process of plotting short paths among vertices (points), passing through a given set of edges (segments). It enjoys widespread use due to its performance and accuracy. Godot's A\* implementation uses points in three-dimensional space and Euclidean distances by default.
 
-You must add points manually with :ref:`add_point<class_AStar_method_add_point>` and create segments manually with :ref:`connect_points<class_AStar_method_connect_points>`. Then you can test if there is a path between two points with the :ref:`are_points_connected<class_AStar_method_are_points_connected>` function, get a path containing indices by :ref:`get_id_path<class_AStar_method_get_id_path>`, or one containing actual coordinates with :ref:`get_point_path<class_AStar_method_get_point_path>`.
+You must add points manually with :ref:`add_point<class_AStar3D_method_add_point>` and create segments manually with :ref:`connect_points<class_AStar3D_method_connect_points>`. Then you can test if there is a path between two points with the :ref:`are_points_connected<class_AStar3D_method_are_points_connected>` function, get a path containing indices by :ref:`get_id_path<class_AStar3D_method_get_id_path>`, or one containing actual coordinates with :ref:`get_point_path<class_AStar3D_method_get_point_path>`.
 
-It is also possible to use non-Euclidean distances. To do so, create a class that extends ``AStar`` and override methods :ref:`_compute_cost<class_AStar_method__compute_cost>` and :ref:`_estimate_cost<class_AStar_method__estimate_cost>`. Both take two indices and return a length, as is shown in the following example.
+It is also possible to use non-Euclidean distances. To do so, create a class that extends ``AStar3D`` and override methods :ref:`_compute_cost<class_AStar3D_method__compute_cost>` and :ref:`_estimate_cost<class_AStar3D_method__estimate_cost>`. Both take two indices and return a length, as is shown in the following example.
 
 
 .. tabs::
@@ -28,7 +28,7 @@ It is also possible to use non-Euclidean distances. To do so, create a class tha
  .. code-tab:: gdscript
 
     class MyAStar:
-        extends AStar
+        extends AStar3D
     
         func _compute_cost(u, v):
             return abs(u - v)
@@ -38,7 +38,7 @@ It is also possible to use non-Euclidean distances. To do so, create a class tha
 
  .. code-tab:: csharp
 
-    public class MyAStar : AStar
+    public class MyAStar : AStar3D
     {
         public override float _ComputeCost(int u, int v)
         {
@@ -52,107 +52,107 @@ It is also possible to use non-Euclidean distances. To do so, create a class tha
 
 
 
-\ :ref:`_estimate_cost<class_AStar_method__estimate_cost>` should return a lower bound of the distance, i.e. ``_estimate_cost(u, v) <= _compute_cost(u, v)``. This serves as a hint to the algorithm because the custom ``_compute_cost`` might be computation-heavy. If this is not the case, make :ref:`_estimate_cost<class_AStar_method__estimate_cost>` return the same value as :ref:`_compute_cost<class_AStar_method__compute_cost>` to provide the algorithm with the most accurate information.
+\ :ref:`_estimate_cost<class_AStar3D_method__estimate_cost>` should return a lower bound of the distance, i.e. ``_estimate_cost(u, v) <= _compute_cost(u, v)``. This serves as a hint to the algorithm because the custom ``_compute_cost`` might be computation-heavy. If this is not the case, make :ref:`_estimate_cost<class_AStar3D_method__estimate_cost>` return the same value as :ref:`_compute_cost<class_AStar3D_method__compute_cost>` to provide the algorithm with the most accurate information.
 
-If the default :ref:`_estimate_cost<class_AStar_method__estimate_cost>` and :ref:`_compute_cost<class_AStar_method__compute_cost>` methods are used, or if the supplied :ref:`_estimate_cost<class_AStar_method__estimate_cost>` method returns a lower bound of the cost, then the paths returned by A\* will be the lowest-cost paths. Here, the cost of a path equals the sum of the :ref:`_compute_cost<class_AStar_method__compute_cost>` results of all segments in the path multiplied by the ``weight_scale``\ s of the endpoints of the respective segments. If the default methods are used and the ``weight_scale``\ s of all points are set to ``1.0``, then this equals the sum of Euclidean distances of all segments in the path.
+If the default :ref:`_estimate_cost<class_AStar3D_method__estimate_cost>` and :ref:`_compute_cost<class_AStar3D_method__compute_cost>` methods are used, or if the supplied :ref:`_estimate_cost<class_AStar3D_method__estimate_cost>` method returns a lower bound of the cost, then the paths returned by A\* will be the lowest-cost paths. Here, the cost of a path equals the sum of the :ref:`_compute_cost<class_AStar3D_method__compute_cost>` results of all segments in the path multiplied by the ``weight_scale``\ s of the endpoints of the respective segments. If the default methods are used and the ``weight_scale``\ s of all points are set to ``1.0``, then this equals the sum of Euclidean distances of all segments in the path.
 
 Methods
 -------
 
-+-----------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`float<class_float>`                           | :ref:`_compute_cost<class_AStar_method__compute_cost>` **(** :ref:`int<class_int>` from_id, :ref:`int<class_int>` to_id **)** |virtual| |const|                                            |
-+-----------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`float<class_float>`                           | :ref:`_estimate_cost<class_AStar_method__estimate_cost>` **(** :ref:`int<class_int>` from_id, :ref:`int<class_int>` to_id **)** |virtual| |const|                                          |
-+-----------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| void                                                | :ref:`add_point<class_AStar_method_add_point>` **(** :ref:`int<class_int>` id, :ref:`Vector3<class_Vector3>` position, :ref:`float<class_float>` weight_scale=1.0 **)**                    |
-+-----------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`bool<class_bool>`                             | :ref:`are_points_connected<class_AStar_method_are_points_connected>` **(** :ref:`int<class_int>` id, :ref:`int<class_int>` to_id, :ref:`bool<class_bool>` bidirectional=true **)** |const| |
-+-----------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| void                                                | :ref:`clear<class_AStar_method_clear>` **(** **)**                                                                                                                                         |
-+-----------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| void                                                | :ref:`connect_points<class_AStar_method_connect_points>` **(** :ref:`int<class_int>` id, :ref:`int<class_int>` to_id, :ref:`bool<class_bool>` bidirectional=true **)**                     |
-+-----------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| void                                                | :ref:`disconnect_points<class_AStar_method_disconnect_points>` **(** :ref:`int<class_int>` id, :ref:`int<class_int>` to_id, :ref:`bool<class_bool>` bidirectional=true **)**               |
-+-----------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`int<class_int>`                               | :ref:`get_available_point_id<class_AStar_method_get_available_point_id>` **(** **)** |const|                                                                                               |
-+-----------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`int<class_int>`                               | :ref:`get_closest_point<class_AStar_method_get_closest_point>` **(** :ref:`Vector3<class_Vector3>` to_position, :ref:`bool<class_bool>` include_disabled=false **)** |const|               |
-+-----------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`Vector3<class_Vector3>`                       | :ref:`get_closest_position_in_segment<class_AStar_method_get_closest_position_in_segment>` **(** :ref:`Vector3<class_Vector3>` to_position **)** |const|                                   |
-+-----------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`PackedInt32Array<class_PackedInt32Array>`     | :ref:`get_id_path<class_AStar_method_get_id_path>` **(** :ref:`int<class_int>` from_id, :ref:`int<class_int>` to_id **)**                                                                  |
-+-----------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`int<class_int>`                               | :ref:`get_point_capacity<class_AStar_method_get_point_capacity>` **(** **)** |const|                                                                                                       |
-+-----------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`PackedInt32Array<class_PackedInt32Array>`     | :ref:`get_point_connections<class_AStar_method_get_point_connections>` **(** :ref:`int<class_int>` id **)**                                                                                |
-+-----------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`int<class_int>`                               | :ref:`get_point_count<class_AStar_method_get_point_count>` **(** **)** |const|                                                                                                             |
-+-----------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`Array<class_Array>`                           | :ref:`get_point_ids<class_AStar_method_get_point_ids>` **(** **)**                                                                                                                         |
-+-----------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`PackedVector3Array<class_PackedVector3Array>` | :ref:`get_point_path<class_AStar_method_get_point_path>` **(** :ref:`int<class_int>` from_id, :ref:`int<class_int>` to_id **)**                                                            |
-+-----------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`Vector3<class_Vector3>`                       | :ref:`get_point_position<class_AStar_method_get_point_position>` **(** :ref:`int<class_int>` id **)** |const|                                                                              |
-+-----------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`float<class_float>`                           | :ref:`get_point_weight_scale<class_AStar_method_get_point_weight_scale>` **(** :ref:`int<class_int>` id **)** |const|                                                                      |
-+-----------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`bool<class_bool>`                             | :ref:`has_point<class_AStar_method_has_point>` **(** :ref:`int<class_int>` id **)** |const|                                                                                                |
-+-----------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`bool<class_bool>`                             | :ref:`is_point_disabled<class_AStar_method_is_point_disabled>` **(** :ref:`int<class_int>` id **)** |const|                                                                                |
-+-----------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| void                                                | :ref:`remove_point<class_AStar_method_remove_point>` **(** :ref:`int<class_int>` id **)**                                                                                                  |
-+-----------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| void                                                | :ref:`reserve_space<class_AStar_method_reserve_space>` **(** :ref:`int<class_int>` num_nodes **)**                                                                                         |
-+-----------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| void                                                | :ref:`set_point_disabled<class_AStar_method_set_point_disabled>` **(** :ref:`int<class_int>` id, :ref:`bool<class_bool>` disabled=true **)**                                               |
-+-----------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| void                                                | :ref:`set_point_position<class_AStar_method_set_point_position>` **(** :ref:`int<class_int>` id, :ref:`Vector3<class_Vector3>` position **)**                                              |
-+-----------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| void                                                | :ref:`set_point_weight_scale<class_AStar_method_set_point_weight_scale>` **(** :ref:`int<class_int>` id, :ref:`float<class_float>` weight_scale **)**                                      |
-+-----------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
++-----------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`float<class_float>`                           | :ref:`_compute_cost<class_AStar3D_method__compute_cost>` **(** :ref:`int<class_int>` from_id, :ref:`int<class_int>` to_id **)** |virtual| |const|                                            |
++-----------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`float<class_float>`                           | :ref:`_estimate_cost<class_AStar3D_method__estimate_cost>` **(** :ref:`int<class_int>` from_id, :ref:`int<class_int>` to_id **)** |virtual| |const|                                          |
++-----------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| void                                                | :ref:`add_point<class_AStar3D_method_add_point>` **(** :ref:`int<class_int>` id, :ref:`Vector3<class_Vector3>` position, :ref:`float<class_float>` weight_scale=1.0 **)**                    |
++-----------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`bool<class_bool>`                             | :ref:`are_points_connected<class_AStar3D_method_are_points_connected>` **(** :ref:`int<class_int>` id, :ref:`int<class_int>` to_id, :ref:`bool<class_bool>` bidirectional=true **)** |const| |
++-----------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| void                                                | :ref:`clear<class_AStar3D_method_clear>` **(** **)**                                                                                                                                         |
++-----------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| void                                                | :ref:`connect_points<class_AStar3D_method_connect_points>` **(** :ref:`int<class_int>` id, :ref:`int<class_int>` to_id, :ref:`bool<class_bool>` bidirectional=true **)**                     |
++-----------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| void                                                | :ref:`disconnect_points<class_AStar3D_method_disconnect_points>` **(** :ref:`int<class_int>` id, :ref:`int<class_int>` to_id, :ref:`bool<class_bool>` bidirectional=true **)**               |
++-----------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`int<class_int>`                               | :ref:`get_available_point_id<class_AStar3D_method_get_available_point_id>` **(** **)** |const|                                                                                               |
++-----------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`int<class_int>`                               | :ref:`get_closest_point<class_AStar3D_method_get_closest_point>` **(** :ref:`Vector3<class_Vector3>` to_position, :ref:`bool<class_bool>` include_disabled=false **)** |const|               |
++-----------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`Vector3<class_Vector3>`                       | :ref:`get_closest_position_in_segment<class_AStar3D_method_get_closest_position_in_segment>` **(** :ref:`Vector3<class_Vector3>` to_position **)** |const|                                   |
++-----------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`PackedInt32Array<class_PackedInt32Array>`     | :ref:`get_id_path<class_AStar3D_method_get_id_path>` **(** :ref:`int<class_int>` from_id, :ref:`int<class_int>` to_id **)**                                                                  |
++-----------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`int<class_int>`                               | :ref:`get_point_capacity<class_AStar3D_method_get_point_capacity>` **(** **)** |const|                                                                                                       |
++-----------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`PackedInt32Array<class_PackedInt32Array>`     | :ref:`get_point_connections<class_AStar3D_method_get_point_connections>` **(** :ref:`int<class_int>` id **)**                                                                                |
++-----------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`int<class_int>`                               | :ref:`get_point_count<class_AStar3D_method_get_point_count>` **(** **)** |const|                                                                                                             |
++-----------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`Array<class_Array>`                           | :ref:`get_point_ids<class_AStar3D_method_get_point_ids>` **(** **)**                                                                                                                         |
++-----------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`PackedVector3Array<class_PackedVector3Array>` | :ref:`get_point_path<class_AStar3D_method_get_point_path>` **(** :ref:`int<class_int>` from_id, :ref:`int<class_int>` to_id **)**                                                            |
++-----------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`Vector3<class_Vector3>`                       | :ref:`get_point_position<class_AStar3D_method_get_point_position>` **(** :ref:`int<class_int>` id **)** |const|                                                                              |
++-----------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`float<class_float>`                           | :ref:`get_point_weight_scale<class_AStar3D_method_get_point_weight_scale>` **(** :ref:`int<class_int>` id **)** |const|                                                                      |
++-----------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`bool<class_bool>`                             | :ref:`has_point<class_AStar3D_method_has_point>` **(** :ref:`int<class_int>` id **)** |const|                                                                                                |
++-----------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`bool<class_bool>`                             | :ref:`is_point_disabled<class_AStar3D_method_is_point_disabled>` **(** :ref:`int<class_int>` id **)** |const|                                                                                |
++-----------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| void                                                | :ref:`remove_point<class_AStar3D_method_remove_point>` **(** :ref:`int<class_int>` id **)**                                                                                                  |
++-----------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| void                                                | :ref:`reserve_space<class_AStar3D_method_reserve_space>` **(** :ref:`int<class_int>` num_nodes **)**                                                                                         |
++-----------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| void                                                | :ref:`set_point_disabled<class_AStar3D_method_set_point_disabled>` **(** :ref:`int<class_int>` id, :ref:`bool<class_bool>` disabled=true **)**                                               |
++-----------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| void                                                | :ref:`set_point_position<class_AStar3D_method_set_point_position>` **(** :ref:`int<class_int>` id, :ref:`Vector3<class_Vector3>` position **)**                                              |
++-----------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| void                                                | :ref:`set_point_weight_scale<class_AStar3D_method_set_point_weight_scale>` **(** :ref:`int<class_int>` id, :ref:`float<class_float>` weight_scale **)**                                      |
++-----------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
 
 Method Descriptions
 -------------------
 
-.. _class_AStar_method__compute_cost:
+.. _class_AStar3D_method__compute_cost:
 
 - :ref:`float<class_float>` **_compute_cost** **(** :ref:`int<class_int>` from_id, :ref:`int<class_int>` to_id **)** |virtual| |const|
 
 Called when computing the cost between two connected points.
 
-Note that this function is hidden in the default ``AStar`` class.
+Note that this function is hidden in the default ``AStar3D`` class.
 
 ----
 
-.. _class_AStar_method__estimate_cost:
+.. _class_AStar3D_method__estimate_cost:
 
 - :ref:`float<class_float>` **_estimate_cost** **(** :ref:`int<class_int>` from_id, :ref:`int<class_int>` to_id **)** |virtual| |const|
 
 Called when estimating the cost between a point and the path's ending point.
 
-Note that this function is hidden in the default ``AStar`` class.
+Note that this function is hidden in the default ``AStar3D`` class.
 
 ----
 
-.. _class_AStar_method_add_point:
+.. _class_AStar3D_method_add_point:
 
 - 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.
+The ``weight_scale`` is multiplied by the result of :ref:`_compute_cost<class_AStar3D_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.
 
 
 .. tabs::
 
  .. code-tab:: gdscript
 
-    var astar = AStar.new()
+    var astar = AStar3D.new()
     astar.add_point(1, Vector3(1, 0, 0), 4) # Adds the point (1, 0, 0) with weight_scale 4 and id 1
 
  .. code-tab:: csharp
 
-    var astar = new AStar();
+    var astar = new AStar3D();
     astar.AddPoint(1, new Vector3(1, 0, 0), 4); // Adds the point (1, 0, 0) with weight_scale 4 and id 1
 
 
@@ -161,7 +161,7 @@ If there already exists a point for the given ``id``, its position and weight sc
 
 ----
 
-.. _class_AStar_method_are_points_connected:
+.. _class_AStar3D_method_are_points_connected:
 
 - :ref:`bool<class_bool>` **are_points_connected** **(** :ref:`int<class_int>` id, :ref:`int<class_int>` to_id, :ref:`bool<class_bool>` bidirectional=true **)** |const|
 
@@ -169,7 +169,7 @@ Returns whether the two given points are directly connected by a segment. If ``b
 
 ----
 
-.. _class_AStar_method_clear:
+.. _class_AStar3D_method_clear:
 
 - void **clear** **(** **)**
 
@@ -177,7 +177,7 @@ Clears all the points and segments.
 
 ----
 
-.. _class_AStar_method_connect_points:
+.. _class_AStar3D_method_connect_points:
 
 - void **connect_points** **(** :ref:`int<class_int>` id, :ref:`int<class_int>` to_id, :ref:`bool<class_bool>` bidirectional=true **)**
 
@@ -188,14 +188,14 @@ Creates a segment between the given points. If ``bidirectional`` is ``false``, o
 
  .. code-tab:: gdscript
 
-    var astar = AStar.new()
+    var astar = AStar3D.new()
     astar.add_point(1, Vector3(1, 1, 0))
     astar.add_point(2, Vector3(0, 5, 0))
     astar.connect_points(1, 2, false)
 
  .. code-tab:: csharp
 
-    var astar = new AStar();
+    var astar = new AStar3D();
     astar.AddPoint(1, new Vector3(1, 1, 0));
     astar.AddPoint(2, new Vector3(0, 5, 0));
     astar.ConnectPoints(1, 2, false);
@@ -204,7 +204,7 @@ Creates a segment between the given points. If ``bidirectional`` is ``false``, o
 
 ----
 
-.. _class_AStar_method_disconnect_points:
+.. _class_AStar3D_method_disconnect_points:
 
 - void **disconnect_points** **(** :ref:`int<class_int>` id, :ref:`int<class_int>` to_id, :ref:`bool<class_bool>` bidirectional=true **)**
 
@@ -212,7 +212,7 @@ Deletes the segment between the given points. If ``bidirectional`` is ``false``,
 
 ----
 
-.. _class_AStar_method_get_available_point_id:
+.. _class_AStar3D_method_get_available_point_id:
 
 - :ref:`int<class_int>` **get_available_point_id** **(** **)** |const|
 
@@ -220,7 +220,7 @@ Returns the next available point ID with no point associated to it.
 
 ----
 
-.. _class_AStar_method_get_closest_point:
+.. _class_AStar3D_method_get_closest_point:
 
 - :ref:`int<class_int>` **get_closest_point** **(** :ref:`Vector3<class_Vector3>` to_position, :ref:`bool<class_bool>` include_disabled=false **)** |const|
 
@@ -230,7 +230,7 @@ Returns the ID of the closest point to ``to_position``, optionally taking disabl
 
 ----
 
-.. _class_AStar_method_get_closest_position_in_segment:
+.. _class_AStar3D_method_get_closest_position_in_segment:
 
 - :ref:`Vector3<class_Vector3>` **get_closest_position_in_segment** **(** :ref:`Vector3<class_Vector3>` to_position **)** |const|
 
@@ -241,7 +241,7 @@ Returns the closest position to ``to_position`` that resides inside a segment be
 
  .. code-tab:: gdscript
 
-    var astar = AStar.new()
+    var astar = AStar3D.new()
     astar.add_point(1, Vector3(0, 0, 0))
     astar.add_point(2, Vector3(0, 5, 0))
     astar.connect_points(1, 2)
@@ -249,7 +249,7 @@ Returns the closest position to ``to_position`` that resides inside a segment be
 
  .. code-tab:: csharp
 
-    var astar = new AStar();
+    var astar = new AStar3D();
     astar.AddPoint(1, new Vector3(0, 0, 0));
     astar.AddPoint(2, new Vector3(0, 5, 0));
     astar.ConnectPoints(1, 2);
@@ -261,18 +261,18 @@ The result is in the segment that goes from ``y = 0`` to ``y = 5``. It's the clo
 
 ----
 
-.. _class_AStar_method_get_id_path:
+.. _class_AStar3D_method_get_id_path:
 
 - :ref:`PackedInt32Array<class_PackedInt32Array>` **get_id_path** **(** :ref:`int<class_int>` from_id, :ref:`int<class_int>` to_id **)**
 
-Returns an array with the IDs of the points that form the path found by AStar between the given points. The array is ordered from the starting point to the ending point of the path.
+Returns an array with the IDs of the points that form the path found by AStar3D between the given points. The array is ordered from the starting point to the ending point of the path.
 
 
 .. tabs::
 
  .. code-tab:: gdscript
 
-    var astar = AStar.new()
+    var astar = AStar3D.new()
     astar.add_point(1, Vector3(0, 0, 0))
     astar.add_point(2, Vector3(0, 1, 0), 1) # Default weight is 1
     astar.add_point(3, Vector3(1, 1, 0))
@@ -287,7 +287,7 @@ Returns an array with the IDs of the points that form the path found by AStar be
 
  .. code-tab:: csharp
 
-    var astar = new AStar();
+    var astar = new AStar3D();
     astar.AddPoint(1, new Vector3(0, 0, 0));
     astar.AddPoint(2, new Vector3(0, 1, 0), 1); // Default weight is 1
     astar.AddPoint(3, new Vector3(1, 1, 0));
@@ -304,7 +304,7 @@ If you change the 2nd point's weight to 3, then the result will be ``[1, 4, 3]``
 
 ----
 
-.. _class_AStar_method_get_point_capacity:
+.. _class_AStar3D_method_get_point_capacity:
 
 - :ref:`int<class_int>` **get_point_capacity** **(** **)** |const|
 
@@ -312,7 +312,7 @@ Returns the capacity of the structure backing the points, useful in conjunction
 
 ----
 
-.. _class_AStar_method_get_point_connections:
+.. _class_AStar3D_method_get_point_connections:
 
 - :ref:`PackedInt32Array<class_PackedInt32Array>` **get_point_connections** **(** :ref:`int<class_int>` id **)**
 
@@ -323,7 +323,7 @@ Returns an array with the IDs of the points that form the connection with the gi
 
  .. code-tab:: gdscript
 
-    var astar = AStar.new()
+    var astar = AStar3D.new()
     astar.add_point(1, Vector3(0, 0, 0))
     astar.add_point(2, Vector3(0, 1, 0))
     astar.add_point(3, Vector3(1, 1, 0))
@@ -336,7 +336,7 @@ Returns an array with the IDs of the points that form the connection with the gi
 
  .. code-tab:: csharp
 
-    var astar = new AStar();
+    var astar = new AStar3D();
     astar.AddPoint(1, new Vector3(0, 0, 0));
     astar.AddPoint(2, new Vector3(0, 1, 0));
     astar.AddPoint(3, new Vector3(1, 1, 0));
@@ -350,7 +350,7 @@ Returns an array with the IDs of the points that form the connection with the gi
 
 ----
 
-.. _class_AStar_method_get_point_count:
+.. _class_AStar3D_method_get_point_count:
 
 - :ref:`int<class_int>` **get_point_count** **(** **)** |const|
 
@@ -358,7 +358,7 @@ Returns the number of points currently in the points pool.
 
 ----
 
-.. _class_AStar_method_get_point_ids:
+.. _class_AStar3D_method_get_point_ids:
 
 - :ref:`Array<class_Array>` **get_point_ids** **(** **)**
 
@@ -366,17 +366,17 @@ Returns an array of all point IDs.
 
 ----
 
-.. _class_AStar_method_get_point_path:
+.. _class_AStar3D_method_get_point_path:
 
 - :ref:`PackedVector3Array<class_PackedVector3Array>` **get_point_path** **(** :ref:`int<class_int>` from_id, :ref:`int<class_int>` to_id **)**
 
-Returns an array with the points that are in the path found by AStar between the given points. The array is ordered from the starting point to the ending point of the path.
+Returns an array with the points that are in the path found by AStar3D between the given points. The array is ordered from the starting point to the ending point of the path.
 
 \ **Note:** This method is not thread-safe. If called from a :ref:`Thread<class_Thread>`, it will return an empty :ref:`PackedVector3Array<class_PackedVector3Array>` and will print an error message.
 
 ----
 
-.. _class_AStar_method_get_point_position:
+.. _class_AStar3D_method_get_point_position:
 
 - :ref:`Vector3<class_Vector3>` **get_point_position** **(** :ref:`int<class_int>` id **)** |const|
 
@@ -384,7 +384,7 @@ Returns the position of the point associated with the given ``id``.
 
 ----
 
-.. _class_AStar_method_get_point_weight_scale:
+.. _class_AStar3D_method_get_point_weight_scale:
 
 - :ref:`float<class_float>` **get_point_weight_scale** **(** :ref:`int<class_int>` id **)** |const|
 
@@ -392,7 +392,7 @@ Returns the weight scale of the point associated with the given ``id``.
 
 ----
 
-.. _class_AStar_method_has_point:
+.. _class_AStar3D_method_has_point:
 
 - :ref:`bool<class_bool>` **has_point** **(** :ref:`int<class_int>` id **)** |const|
 
@@ -400,7 +400,7 @@ Returns whether a point associated with the given ``id`` exists.
 
 ----
 
-.. _class_AStar_method_is_point_disabled:
+.. _class_AStar3D_method_is_point_disabled:
 
 - :ref:`bool<class_bool>` **is_point_disabled** **(** :ref:`int<class_int>` id **)** |const|
 
@@ -408,7 +408,7 @@ Returns whether a point is disabled or not for pathfinding. By default, all poin
 
 ----
 
-.. _class_AStar_method_remove_point:
+.. _class_AStar3D_method_remove_point:
 
 - void **remove_point** **(** :ref:`int<class_int>` id **)**
 
@@ -416,7 +416,7 @@ Removes the point associated with the given ``id`` from the points pool.
 
 ----
 
-.. _class_AStar_method_reserve_space:
+.. _class_AStar3D_method_reserve_space:
 
 - void **reserve_space** **(** :ref:`int<class_int>` num_nodes **)**
 
@@ -424,7 +424,7 @@ Reserves space internally for ``num_nodes`` points, useful if you're adding a kn
 
 ----
 
-.. _class_AStar_method_set_point_disabled:
+.. _class_AStar3D_method_set_point_disabled:
 
 - void **set_point_disabled** **(** :ref:`int<class_int>` id, :ref:`bool<class_bool>` disabled=true **)**
 
@@ -432,7 +432,7 @@ Disables or enables the specified point for pathfinding. Useful for making a tem
 
 ----
 
-.. _class_AStar_method_set_point_position:
+.. _class_AStar3D_method_set_point_position:
 
 - void **set_point_position** **(** :ref:`int<class_int>` id, :ref:`Vector3<class_Vector3>` position **)**
 
@@ -440,11 +440,11 @@ Sets the ``position`` for the point with the given ``id``.
 
 ----
 
-.. _class_AStar_method_set_point_weight_scale:
+.. _class_AStar3D_method_set_point_weight_scale:
 
 - void **set_point_weight_scale** **(** :ref:`int<class_int>` id, :ref:`float<class_float>` weight_scale **)**
 
-Sets the ``weight_scale`` for the point with the given ``id``. 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.
+Sets the ``weight_scale`` for the point with the given ``id``. The ``weight_scale`` is multiplied by the result of :ref:`_compute_cost<class_AStar3D_method__compute_cost>` when determining the overall cost of traveling across a segment from a neighboring point to this point.
 
 .. |virtual| replace:: :abbr:`virtual (This method should typically be overridden by the user to have any effect.)`
 .. |const| replace:: :abbr:`const (This method has no side effects. It doesn't modify any of the instance's member variables.)`

+ 7 - 0
classes/class_audioeffectstereoenhance.rst

@@ -11,7 +11,12 @@ AudioEffectStereoEnhance
 
 **Inherits:** :ref:`AudioEffect<class_AudioEffect>` **<** :ref:`Resource<class_Resource>` **<** :ref:`RefCounted<class_RefCounted>` **<** :ref:`Object<class_Object>`
 
+An audio effect that can be used to adjust the intensity of stereo panning.
 
+Description
+-----------
+
+An audio effect that can be used to adjust the intensity of stereo panning.
 
 Properties
 ----------
@@ -39,6 +44,8 @@ Property Descriptions
 | *Getter*  | get_pan_pullout()      |
 +-----------+------------------------+
 
+Values greater than 1.0 increase intensity of any panning on audio passing through this effect, whereas values less than 1.0 will decrease the panning intensity. A value of 0.0 will downmix audio to mono.
+
 ----
 
 .. _class_AudioEffectStereoEnhance_property_surround:

+ 56 - 72
classes/class_basebutton.rst

@@ -23,29 +23,27 @@ BaseButton is the abstract base class for buttons, so it shouldn't be used direc
 Properties
 ----------
 
-+---------------------------------------------------+-----------------------------------------------------------------------------+---------------------------------------------------------------------+
-| :ref:`ActionMode<enum_BaseButton_ActionMode>`     | :ref:`action_mode<class_BaseButton_property_action_mode>`                   | ``1``                                                               |
-+---------------------------------------------------+-----------------------------------------------------------------------------+---------------------------------------------------------------------+
-| :ref:`ButtonGroup<class_ButtonGroup>`             | :ref:`button_group<class_BaseButton_property_button_group>`                 |                                                                     |
-+---------------------------------------------------+-----------------------------------------------------------------------------+---------------------------------------------------------------------+
-| :ref:`MouseButton<enum_@GlobalScope_MouseButton>` | :ref:`button_mask<class_BaseButton_property_button_mask>`                   | ``1``                                                               |
-+---------------------------------------------------+-----------------------------------------------------------------------------+---------------------------------------------------------------------+
-| :ref:`bool<class_bool>`                           | :ref:`button_pressed<class_BaseButton_property_button_pressed>`             | ``false``                                                           |
-+---------------------------------------------------+-----------------------------------------------------------------------------+---------------------------------------------------------------------+
-| :ref:`bool<class_bool>`                           | :ref:`disabled<class_BaseButton_property_disabled>`                         | ``false``                                                           |
-+---------------------------------------------------+-----------------------------------------------------------------------------+---------------------------------------------------------------------+
-| :ref:`FocusMode<enum_Control_FocusMode>`          | focus_mode                                                                  | ``2`` (overrides :ref:`Control<class_Control_property_focus_mode>`) |
-+---------------------------------------------------+-----------------------------------------------------------------------------+---------------------------------------------------------------------+
-| :ref:`bool<class_bool>`                           | :ref:`keep_pressed_outside<class_BaseButton_property_keep_pressed_outside>` | ``false``                                                           |
-+---------------------------------------------------+-----------------------------------------------------------------------------+---------------------------------------------------------------------+
-| :ref:`Shortcut<class_Shortcut>`                   | :ref:`shortcut<class_BaseButton_property_shortcut>`                         |                                                                     |
-+---------------------------------------------------+-----------------------------------------------------------------------------+---------------------------------------------------------------------+
-| :ref:`Node<class_Node>`                           | :ref:`shortcut_context<class_BaseButton_property_shortcut_context>`         |                                                                     |
-+---------------------------------------------------+-----------------------------------------------------------------------------+---------------------------------------------------------------------+
-| :ref:`bool<class_bool>`                           | :ref:`shortcut_in_tooltip<class_BaseButton_property_shortcut_in_tooltip>`   | ``true``                                                            |
-+---------------------------------------------------+-----------------------------------------------------------------------------+---------------------------------------------------------------------+
-| :ref:`bool<class_bool>`                           | :ref:`toggle_mode<class_BaseButton_property_toggle_mode>`                   | ``false``                                                           |
-+---------------------------------------------------+-----------------------------------------------------------------------------+---------------------------------------------------------------------+
++---------------------------------------------------+-----------------------------------------------------------------------------+
+| :ref:`ActionMode<enum_BaseButton_ActionMode>`     | :ref:`action_mode<class_BaseButton_property_action_mode>`                   |
++---------------------------------------------------+-----------------------------------------------------------------------------+
+| :ref:`ButtonGroup<class_ButtonGroup>`             | :ref:`button_group<class_BaseButton_property_button_group>`                 |
++---------------------------------------------------+-----------------------------------------------------------------------------+
+| :ref:`MouseButton<enum_@GlobalScope_MouseButton>` | :ref:`button_mask<class_BaseButton_property_button_mask>`                   |
++---------------------------------------------------+-----------------------------------------------------------------------------+
+| :ref:`bool<class_bool>`                           | :ref:`button_pressed<class_BaseButton_property_button_pressed>`             |
++---------------------------------------------------+-----------------------------------------------------------------------------+
+| :ref:`bool<class_bool>`                           | :ref:`disabled<class_BaseButton_property_disabled>`                         |
++---------------------------------------------------+-----------------------------------------------------------------------------+
+| :ref:`bool<class_bool>`                           | :ref:`keep_pressed_outside<class_BaseButton_property_keep_pressed_outside>` |
++---------------------------------------------------+-----------------------------------------------------------------------------+
+| :ref:`Shortcut<class_Shortcut>`                   | :ref:`shortcut<class_BaseButton_property_shortcut>`                         |
++---------------------------------------------------+-----------------------------------------------------------------------------+
+| :ref:`Node<class_Node>`                           | :ref:`shortcut_context<class_BaseButton_property_shortcut_context>`         |
++---------------------------------------------------+-----------------------------------------------------------------------------+
+| :ref:`bool<class_bool>`                           | :ref:`shortcut_in_tooltip<class_BaseButton_property_shortcut_in_tooltip>`   |
++---------------------------------------------------+-----------------------------------------------------------------------------+
+| :ref:`bool<class_bool>`                           | :ref:`toggle_mode<class_BaseButton_property_toggle_mode>`                   |
++---------------------------------------------------+-----------------------------------------------------------------------------+
 
 Methods
 -------
@@ -145,13 +143,11 @@ Property Descriptions
 
 - :ref:`ActionMode<enum_BaseButton_ActionMode>` **action_mode**
 
-+-----------+------------------------+
-| *Default* | ``1``                  |
-+-----------+------------------------+
-| *Setter*  | set_action_mode(value) |
-+-----------+------------------------+
-| *Getter*  | get_action_mode()      |
-+-----------+------------------------+
++----------+------------------------+
+| *Setter* | set_action_mode(value) |
++----------+------------------------+
+| *Getter* | get_action_mode()      |
++----------+------------------------+
 
 Determines when the button is considered clicked, one of the :ref:`ActionMode<enum_BaseButton_ActionMode>` constants.
 
@@ -175,13 +171,11 @@ The :ref:`ButtonGroup<class_ButtonGroup>` associated with the button. Not to be
 
 - :ref:`MouseButton<enum_@GlobalScope_MouseButton>` **button_mask**
 
-+-----------+------------------------+
-| *Default* | ``1``                  |
-+-----------+------------------------+
-| *Setter*  | set_button_mask(value) |
-+-----------+------------------------+
-| *Getter*  | get_button_mask()      |
-+-----------+------------------------+
++----------+------------------------+
+| *Setter* | set_button_mask(value) |
++----------+------------------------+
+| *Getter* | get_button_mask()      |
++----------+------------------------+
 
 Binary mask to choose which mouse buttons this button will respond to.
 
@@ -193,13 +187,11 @@ To allow both left-click and right-click, use ``MOUSE_BUTTON_MASK_LEFT | MOUSE_B
 
 - :ref:`bool<class_bool>` **button_pressed**
 
-+-----------+--------------------+
-| *Default* | ``false``          |
-+-----------+--------------------+
-| *Setter*  | set_pressed(value) |
-+-----------+--------------------+
-| *Getter*  | is_pressed()       |
-+-----------+--------------------+
++----------+--------------------+
+| *Setter* | set_pressed(value) |
++----------+--------------------+
+| *Getter* | is_pressed()       |
++----------+--------------------+
 
 If ``true``, the button's state is pressed. Means the button is pressed down or toggled (if :ref:`toggle_mode<class_BaseButton_property_toggle_mode>` is active). Only works if :ref:`toggle_mode<class_BaseButton_property_toggle_mode>` is ``true``.
 
@@ -211,13 +203,11 @@ If ``true``, the button's state is pressed. Means the button is pressed down or
 
 - :ref:`bool<class_bool>` **disabled**
 
-+-----------+---------------------+
-| *Default* | ``false``           |
-+-----------+---------------------+
-| *Setter*  | set_disabled(value) |
-+-----------+---------------------+
-| *Getter*  | is_disabled()       |
-+-----------+---------------------+
++----------+---------------------+
+| *Setter* | set_disabled(value) |
++----------+---------------------+
+| *Getter* | is_disabled()       |
++----------+---------------------+
 
 If ``true``, the button is in disabled state and can't be clicked or toggled.
 
@@ -227,13 +217,11 @@ If ``true``, the button is in disabled state and can't be clicked or toggled.
 
 - :ref:`bool<class_bool>` **keep_pressed_outside**
 
-+-----------+---------------------------------+
-| *Default* | ``false``                       |
-+-----------+---------------------------------+
-| *Setter*  | set_keep_pressed_outside(value) |
-+-----------+---------------------------------+
-| *Getter*  | is_keep_pressed_outside()       |
-+-----------+---------------------------------+
++----------+---------------------------------+
+| *Setter* | set_keep_pressed_outside(value) |
++----------+---------------------------------+
+| *Getter* | is_keep_pressed_outside()       |
++----------+---------------------------------+
 
 If ``true``, the button stays pressed when moving the cursor outside the button while pressing it.
 
@@ -273,13 +261,11 @@ The :ref:`Node<class_Node>` which must be a parent of the focused GUI :ref:`Cont
 
 - :ref:`bool<class_bool>` **shortcut_in_tooltip**
 
-+-----------+----------------------------------+
-| *Default* | ``true``                         |
-+-----------+----------------------------------+
-| *Setter*  | set_shortcut_in_tooltip(value)   |
-+-----------+----------------------------------+
-| *Getter*  | is_shortcut_in_tooltip_enabled() |
-+-----------+----------------------------------+
++----------+----------------------------------+
+| *Setter* | set_shortcut_in_tooltip(value)   |
++----------+----------------------------------+
+| *Getter* | is_shortcut_in_tooltip_enabled() |
++----------+----------------------------------+
 
 If ``true``, the button will add information about its shortcut in the tooltip.
 
@@ -289,13 +275,11 @@ If ``true``, the button will add information about its shortcut in the tooltip.
 
 - :ref:`bool<class_bool>` **toggle_mode**
 
-+-----------+------------------------+
-| *Default* | ``false``              |
-+-----------+------------------------+
-| *Setter*  | set_toggle_mode(value) |
-+-----------+------------------------+
-| *Getter*  | is_toggle_mode()       |
-+-----------+------------------------+
++----------+------------------------+
+| *Setter* | set_toggle_mode(value) |
++----------+------------------------+
+| *Getter* | is_toggle_mode()       |
++----------+------------------------+
 
 If ``true``, the button is in toggle mode. Makes the button flip state between pressed and unpressed each time its area is clicked.
 

+ 95 - 23
classes/class_basematerial3d.rst

@@ -31,10 +31,12 @@ Properties
 +-----------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------+-----------------------+
 | :ref:`Color<class_Color>`                                       | :ref:`albedo_color<class_BaseMaterial3D_property_albedo_color>`                                                   | ``Color(1, 1, 1, 1)`` |
 +-----------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------+-----------------------+
-| :ref:`bool<class_bool>`                                         | :ref:`albedo_tex_force_srgb<class_BaseMaterial3D_property_albedo_tex_force_srgb>`                                 | ``false``             |
-+-----------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------+-----------------------+
 | :ref:`Texture2D<class_Texture2D>`                               | :ref:`albedo_texture<class_BaseMaterial3D_property_albedo_texture>`                                               |                       |
 +-----------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------+-----------------------+
+| :ref:`bool<class_bool>`                                         | :ref:`albedo_texture_force_srgb<class_BaseMaterial3D_property_albedo_texture_force_srgb>`                         | ``false``             |
++-----------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------+-----------------------+
+| :ref:`bool<class_bool>`                                         | :ref:`albedo_texture_msdf<class_BaseMaterial3D_property_albedo_texture_msdf>`                                     | ``false``             |
++-----------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------+-----------------------+
 | :ref:`float<class_float>`                                       | :ref:`alpha_antialiasing_edge<class_BaseMaterial3D_property_alpha_antialiasing_edge>`                             |                       |
 +-----------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------+-----------------------+
 | :ref:`AlphaAntiAliasing<enum_BaseMaterial3D_AlphaAntiAliasing>` | :ref:`alpha_antialiasing_mode<class_BaseMaterial3D_property_alpha_antialiasing_mode>`                             |                       |
@@ -151,6 +153,10 @@ Properties
 +-----------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------+-----------------------+
 | :ref:`TextureChannel<enum_BaseMaterial3D_TextureChannel>`       | :ref:`metallic_texture_channel<class_BaseMaterial3D_property_metallic_texture_channel>`                           | ``0``                 |
 +-----------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------+-----------------------+
+| :ref:`float<class_float>`                                       | :ref:`msdf_outline_size<class_BaseMaterial3D_property_msdf_outline_size>`                                         | ``0.0``               |
++-----------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------+-----------------------+
+| :ref:`float<class_float>`                                       | :ref:`msdf_pixel_range<class_BaseMaterial3D_property_msdf_pixel_range>`                                           | ``4.0``               |
++-----------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------+-----------------------+
 | :ref:`bool<class_bool>`                                         | :ref:`no_depth_test<class_BaseMaterial3D_property_no_depth_test>`                                                 | ``false``             |
 +-----------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------+-----------------------+
 | :ref:`bool<class_bool>`                                         | :ref:`normal_enabled<class_BaseMaterial3D_property_normal_enabled>`                                               | ``false``             |
@@ -632,6 +638,8 @@ enum **CullMode**:
 
 .. _class_BaseMaterial3D_constant_FLAG_PARTICLE_TRAILS_MODE:
 
+.. _class_BaseMaterial3D_constant_FLAG_ALBEDO_TEXTURE_MSDF:
+
 .. _class_BaseMaterial3D_constant_FLAG_MAX:
 
 enum **Flags**:
@@ -640,7 +648,9 @@ enum **Flags**:
 
 - **FLAG_ALBEDO_FROM_VERTEX_COLOR** = **1** --- Set ``ALBEDO`` to the per-vertex color specified in the mesh.
 
-- **FLAG_SRGB_VERTEX_COLOR** = **2** --- Vertex color is in sRGB space and needs to be converted to linear. Only applies in the Vulkan renderer.
+- **FLAG_SRGB_VERTEX_COLOR** = **2** --- Vertex colors are considered to be stored in sRGB color space and are converted to linear color space during rendering. See also :ref:`vertex_color_is_srgb<class_BaseMaterial3D_property_vertex_color_is_srgb>`.
+
+\ **Note:** Only effective when using the Vulkan Clustered or Vulkan Mobile backends.
 
 - **FLAG_USE_POINT_SIZE** = **3** --- Uses point size to alter the size of primitive points. Also changes the albedo texture lookup to use ``POINT_COORD`` instead of ``UV``.
 
@@ -660,7 +670,7 @@ enum **Flags**:
 
 - **FLAG_EMISSION_ON_UV2** = **11** --- Use ``UV2`` coordinates to look up from the :ref:`emission_texture<class_BaseMaterial3D_property_emission_texture>`.
 
-- **FLAG_ALBEDO_TEXTURE_FORCE_SRGB** = **12** --- Forces the shader to convert albedo from sRGB space to linear space.
+- **FLAG_ALBEDO_TEXTURE_FORCE_SRGB** = **12** --- Forces the shader to convert albedo from sRGB space to linear space. See also :ref:`albedo_texture_force_srgb<class_BaseMaterial3D_property_albedo_texture_force_srgb>`.
 
 - **FLAG_DONT_RECEIVE_SHADOWS** = **13** --- Disables receiving shadows from other objects.
 
@@ -676,7 +686,9 @@ enum **Flags**:
 
 - **FLAG_PARTICLE_TRAILS_MODE** = **19**
 
-- **FLAG_MAX** = **20** --- Represents the size of the :ref:`Flags<enum_BaseMaterial3D_Flags>` enum.
+- **FLAG_ALBEDO_TEXTURE_MSDF** = **20** --- Enables multichannel signed distance field rendering shader.
+
+- **FLAG_MAX** = **21** --- Represents the size of the :ref:`Flags<enum_BaseMaterial3D_Flags>` enum.
 
 ----
 
@@ -766,7 +778,7 @@ enum **TextureChannel**:
 
 - **TEXTURE_CHANNEL_ALPHA** = **3** --- Used to read from the alpha channel of a texture.
 
-- **TEXTURE_CHANNEL_GRAYSCALE** = **4** --- Currently unused.
+- **TEXTURE_CHANNEL_GRAYSCALE** = **4** --- Used to read from the linear (non-perceptual) average of the red, green and blue channels of a texture.
 
 ----
 
@@ -821,11 +833,29 @@ Property Descriptions
 
 The material's base color.
 
+\ **Note:** If :ref:`detail_enabled<class_BaseMaterial3D_property_detail_enabled>` is ``true`` and a :ref:`detail_albedo<class_BaseMaterial3D_property_detail_albedo>` texture is specified, :ref:`albedo_color<class_BaseMaterial3D_property_albedo_color>` will *not* modulate the detail texture. This can be used to color partial areas of a material by not specifying an albedo texture and using a transparent :ref:`detail_albedo<class_BaseMaterial3D_property_detail_albedo>` texture instead.
+
+----
+
+.. _class_BaseMaterial3D_property_albedo_texture:
+
+- :ref:`Texture2D<class_Texture2D>` **albedo_texture**
+
++----------+--------------------+
+| *Setter* | set_texture(value) |
++----------+--------------------+
+| *Getter* | get_texture()      |
++----------+--------------------+
+
+Texture to multiply by :ref:`albedo_color<class_BaseMaterial3D_property_albedo_color>`. Used for basic texturing of objects.
+
+If the texture appears unexpectedly too dark or too bright, check :ref:`albedo_texture_force_srgb<class_BaseMaterial3D_property_albedo_texture_force_srgb>`.
+
 ----
 
-.. _class_BaseMaterial3D_property_albedo_tex_force_srgb:
+.. _class_BaseMaterial3D_property_albedo_texture_force_srgb:
 
-- :ref:`bool<class_bool>` **albedo_tex_force_srgb**
+- :ref:`bool<class_bool>` **albedo_texture_force_srgb**
 
 +-----------+-----------------+
 | *Default* | ``false``       |
@@ -835,21 +865,25 @@ The material's base color.
 | *Getter*  | get_flag()      |
 +-----------+-----------------+
 
-Forces a conversion of the :ref:`albedo_texture<class_BaseMaterial3D_property_albedo_texture>` from sRGB space to linear space.
+If ``true``, forces a conversion of the :ref:`albedo_texture<class_BaseMaterial3D_property_albedo_texture>` from sRGB color space to linear color space. See also :ref:`vertex_color_is_srgb<class_BaseMaterial3D_property_vertex_color_is_srgb>`.
+
+This should only be enabled when needed (typically when using a :ref:`ViewportTexture<class_ViewportTexture>` as :ref:`albedo_texture<class_BaseMaterial3D_property_albedo_texture>`). If :ref:`albedo_texture_force_srgb<class_BaseMaterial3D_property_albedo_texture_force_srgb>` is ``true`` when it shouldn't be, the texture will appear to be too dark. If :ref:`albedo_texture_force_srgb<class_BaseMaterial3D_property_albedo_texture_force_srgb>` is ``false`` when it shouldn't be, the texture will appear to be too bright.
 
 ----
 
-.. _class_BaseMaterial3D_property_albedo_texture:
+.. _class_BaseMaterial3D_property_albedo_texture_msdf:
 
-- :ref:`Texture2D<class_Texture2D>` **albedo_texture**
+- :ref:`bool<class_bool>` **albedo_texture_msdf**
 
-+----------+--------------------+
-| *Setter* | set_texture(value) |
-+----------+--------------------+
-| *Getter* | get_texture()      |
-+----------+--------------------+
++-----------+-----------------+
+| *Default* | ``false``       |
++-----------+-----------------+
+| *Setter*  | set_flag(value) |
++-----------+-----------------+
+| *Getter*  | get_flag()      |
++-----------+-----------------+
 
-Texture to multiply by :ref:`albedo_color<class_BaseMaterial3D_property_albedo_color>`. Used for basic texturing of objects.
+Enables multichannel signed distance field rendering shader. Use :ref:`msdf_pixel_range<class_BaseMaterial3D_property_msdf_pixel_range>` and :ref:`msdf_outline_size<class_BaseMaterial3D_property_msdf_outline_size>` to configure MSDF parameters.
 
 ----
 
@@ -1243,7 +1277,9 @@ Determines when depth rendering takes place. See :ref:`DepthDrawMode<enum_BaseMa
 | *Getter* | get_texture()      |
 +----------+--------------------+
 
-Texture that specifies the color of the detail overlay.
+Texture that specifies the color of the detail overlay. :ref:`detail_albedo<class_BaseMaterial3D_property_detail_albedo>`'s alpha channel is used as a mask, even when the material is opaque. To use a dedicated texture as a mask, see :ref:`detail_mask<class_BaseMaterial3D_property_detail_mask>`.
+
+\ **Note:** :ref:`detail_albedo<class_BaseMaterial3D_property_detail_albedo>` is *not* modulated by :ref:`albedo_color<class_BaseMaterial3D_property_albedo_color>`.
 
 ----
 
@@ -1275,7 +1311,7 @@ Specifies how the :ref:`detail_albedo<class_BaseMaterial3D_property_detail_albed
 | *Getter*  | get_feature()      |
 +-----------+--------------------+
 
-If ``true``, enables the detail overlay. Detail is a second texture that gets mixed over the surface of the object based on :ref:`detail_mask<class_BaseMaterial3D_property_detail_mask>`. This can be used to add variation to objects, or to blend between two different albedo/normal textures.
+If ``true``, enables the detail overlay. Detail is a second texture that gets mixed over the surface of the object based on :ref:`detail_mask<class_BaseMaterial3D_property_detail_mask>` and :ref:`detail_albedo<class_BaseMaterial3D_property_detail_albedo>`'s alpha channel. This can be used to add variation to objects, or to blend between two different albedo/normal textures.
 
 ----
 
@@ -1289,7 +1325,7 @@ If ``true``, enables the detail overlay. Detail is a second texture that gets mi
 | *Getter* | get_texture()      |
 +----------+--------------------+
 
-Texture used to specify how the detail textures get blended with the base textures.
+Texture used to specify how the detail textures get blended with the base textures. :ref:`detail_mask<class_BaseMaterial3D_property_detail_mask>` can be used together with :ref:`detail_albedo<class_BaseMaterial3D_property_detail_albedo>`'s alpha channel (if any).
 
 ----
 
@@ -1303,7 +1339,7 @@ Texture used to specify how the detail textures get blended with the base textur
 | *Getter* | get_texture()      |
 +----------+--------------------+
 
-Texture that specifies the per-pixel normal of the detail overlay.
+Texture that specifies the per-pixel normal of the detail overlay. The :ref:`detail_normal<class_BaseMaterial3D_property_detail_normal>` texture only uses the red and green channels; the blue and alpha channels are ignored. The normal read from :ref:`detail_normal<class_BaseMaterial3D_property_detail_normal>` is oriented around the surface normal provided by the :ref:`Mesh<class_Mesh>`.
 
 \ **Note:** Godot expects the normal map to use X+, Y+, and Z+ coordinates. See `this page <http://wiki.polycount.com/wiki/Normal_Map_Technical_Details#Common_Swizzle_Coordinates>`__ for a comparison of normal map coordinates expected by popular engines.
 
@@ -1755,6 +1791,38 @@ Specifies the channel of the :ref:`metallic_texture<class_BaseMaterial3D_propert
 
 ----
 
+.. _class_BaseMaterial3D_property_msdf_outline_size:
+
+- :ref:`float<class_float>` **msdf_outline_size**
+
++-----------+------------------------------+
+| *Default* | ``0.0``                      |
++-----------+------------------------------+
+| *Setter*  | set_msdf_outline_size(value) |
++-----------+------------------------------+
+| *Getter*  | get_msdf_outline_size()      |
++-----------+------------------------------+
+
+The width of the shape outine.
+
+----
+
+.. _class_BaseMaterial3D_property_msdf_pixel_range:
+
+- :ref:`float<class_float>` **msdf_pixel_range**
+
++-----------+-----------------------------+
+| *Default* | ``4.0``                     |
++-----------+-----------------------------+
+| *Setter*  | set_msdf_pixel_range(value) |
++-----------+-----------------------------+
+| *Getter*  | get_msdf_pixel_range()      |
++-----------+-----------------------------+
+
+The width of the range around the shape between the minimum and maximum representable signed distance.
+
+----
+
 .. _class_BaseMaterial3D_property_no_depth_test:
 
 - :ref:`bool<class_bool>` **no_depth_test**
@@ -1813,12 +1881,14 @@ The strength of the normal map's effect.
 | *Getter* | get_texture()      |
 +----------+--------------------+
 
-Texture used to specify the normal at a given pixel. The ``normal_texture`` only uses the red and green channels; the blue and alpha channels are ignored. The normal read from ``normal_texture`` is oriented around the surface normal provided by the :ref:`Mesh<class_Mesh>`.
+Texture used to specify the normal at a given pixel. The :ref:`normal_texture<class_BaseMaterial3D_property_normal_texture>` only uses the red and green channels; the blue and alpha channels are ignored. The normal read from :ref:`normal_texture<class_BaseMaterial3D_property_normal_texture>` is oriented around the surface normal provided by the :ref:`Mesh<class_Mesh>`.
 
 \ **Note:** The mesh must have both normals and tangents defined in its vertex data. Otherwise, the normal map won't render correctly and will only appear to darken the whole surface. If creating geometry with :ref:`SurfaceTool<class_SurfaceTool>`, you can use :ref:`SurfaceTool.generate_normals<class_SurfaceTool_method_generate_normals>` and :ref:`SurfaceTool.generate_tangents<class_SurfaceTool_method_generate_tangents>` to automatically generate normals and tangents respectively.
 
 \ **Note:** Godot expects the normal map to use X+, Y+, and Z+ coordinates. See `this page <http://wiki.polycount.com/wiki/Normal_Map_Technical_Details#Common_Swizzle_Coordinates>`__ for a comparison of normal map coordinates expected by popular engines.
 
+\ **Note:** If :ref:`detail_enabled<class_BaseMaterial3D_property_detail_enabled>` is ``true``, the :ref:`detail_albedo<class_BaseMaterial3D_property_detail_albedo>` texture is drawn *below* the :ref:`normal_texture<class_BaseMaterial3D_property_normal_texture>`. To display a normal map *above* the :ref:`detail_albedo<class_BaseMaterial3D_property_detail_albedo>` texture, use :ref:`detail_normal<class_BaseMaterial3D_property_detail_normal>` instead.
+
 ----
 
 .. _class_BaseMaterial3D_property_orm_texture:
@@ -2527,7 +2597,9 @@ If ``true``, triplanar mapping for ``UV2`` is calculated in world space rather t
 | *Getter*  | get_flag()      |
 +-----------+-----------------+
 
-If ``true``, the model's vertex colors are processed as sRGB mode.
+If ``true``, vertex colors are considered to be stored in sRGB color space and are converted to linear color space during rendering. If ``false``, vertex colors are considered to be stored in linear color space and are rendered as-is. See also :ref:`albedo_texture_force_srgb<class_BaseMaterial3D_property_albedo_texture_force_srgb>`.
+
+\ **Note:** Only effective when using the Vulkan Clustered or Vulkan Mobile backends.
 
 ----
 

+ 6 - 18
classes/class_basis.rst

@@ -58,7 +58,7 @@ Constructors
 +---------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
 | :ref:`Basis<class_Basis>` | :ref:`Basis<class_Basis_constructor_Basis>` **(** :ref:`Basis<class_Basis>` from **)**                                                                                   |
 +---------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`Basis<class_Basis>` | :ref:`Basis<class_Basis_constructor_Basis>` **(** :ref:`Vector3<class_Vector3>` axis, :ref:`float<class_float>` phi **)**                                                |
+| :ref:`Basis<class_Basis>` | :ref:`Basis<class_Basis_constructor_Basis>` **(** :ref:`Vector3<class_Vector3>` axis, :ref:`float<class_float>` angle **)**                                              |
 +---------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
 | :ref:`Basis<class_Basis>` | :ref:`Basis<class_Basis_constructor_Basis>` **(** :ref:`Quaternion<class_Quaternion>` from **)**                                                                         |
 +---------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
@@ -91,7 +91,7 @@ Methods
 +-------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------+
 | :ref:`Basis<class_Basis>`           | :ref:`orthonormalized<class_Basis_method_orthonormalized>` **(** **)** |const|                                                                                |
 +-------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`Basis<class_Basis>`           | :ref:`rotated<class_Basis_method_rotated>` **(** :ref:`Vector3<class_Vector3>` axis, :ref:`float<class_float>` phi **)** |const|                              |
+| :ref:`Basis<class_Basis>`           | :ref:`rotated<class_Basis_method_rotated>` **(** :ref:`Vector3<class_Vector3>` axis, :ref:`float<class_float>` angle **)** |const|                            |
 +-------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------+
 | :ref:`Basis<class_Basis>`           | :ref:`scaled<class_Basis_method_scaled>` **(** :ref:`Vector3<class_Vector3>` scale **)** |const|                                                              |
 +-------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------+
@@ -109,8 +109,6 @@ Methods
 Operators
 ---------
 
-+-------------------------------+-----------------------------------------------------------------------------------------------------+
-| :ref:`bool<class_bool>`       | :ref:`operator !=<class_Basis_operator_neq_bool>` **(** **)**                                       |
 +-------------------------------+-----------------------------------------------------------------------------------------------------+
 | :ref:`bool<class_bool>`       | :ref:`operator !=<class_Basis_operator_neq_bool>` **(** :ref:`Basis<class_Basis>` right **)**       |
 +-------------------------------+-----------------------------------------------------------------------------------------------------+
@@ -122,8 +120,6 @@ Operators
 +-------------------------------+-----------------------------------------------------------------------------------------------------+
 | :ref:`Basis<class_Basis>`     | :ref:`operator *<class_Basis_operator_mul_Basis>` **(** :ref:`int<class_int>` right **)**           |
 +-------------------------------+-----------------------------------------------------------------------------------------------------+
-| :ref:`bool<class_bool>`       | :ref:`operator ==<class_Basis_operator_eq_bool>` **(** **)**                                        |
-+-------------------------------+-----------------------------------------------------------------------------------------------------+
 | :ref:`bool<class_bool>`       | :ref:`operator ==<class_Basis_operator_eq_bool>` **(** :ref:`Basis<class_Basis>` right **)**        |
 +-------------------------------+-----------------------------------------------------------------------------------------------------+
 | :ref:`Vector3<class_Vector3>` | :ref:`operator []<class_Basis_operator_idx_Vector3>` **(** :ref:`int<class_int>` index **)**        |
@@ -228,9 +224,9 @@ Constructs a ``Basis`` as a copy of the given ``Basis``.
 
 ----
 
-- :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.
 
 ----
 
@@ -341,9 +337,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 **)** |const|
+- :ref:`Basis<class_Basis>` **rotated** **(** :ref:`Vector3<class_Vector3>` axis, :ref:`float<class_float>` angle **)** |const|
 
-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.
 
 ----
 
@@ -398,10 +394,6 @@ Operator Descriptions
 
 .. _class_Basis_operator_neq_bool:
 
-- :ref:`bool<class_bool>` **operator !=** **(** **)**
-
-----
-
 - :ref:`bool<class_bool>` **operator !=** **(** :ref:`Basis<class_Basis>` right **)**
 
 Returns ``true`` if the ``Basis`` matrices are not equal.
@@ -438,10 +430,6 @@ This operator multiplies all components of the ``Basis``, which scales it unifor
 
 .. _class_Basis_operator_eq_bool:
 
-- :ref:`bool<class_bool>` **operator ==** **(** **)**
-
-----
-
 - :ref:`bool<class_bool>` **operator ==** **(** :ref:`Basis<class_Basis>` right **)**
 
 Returns ``true`` if the ``Basis`` matrices are exactly equal.

+ 0 - 14
classes/class_bool.rst

@@ -134,15 +134,11 @@ Constructors
 Operators
 ---------
 
-+-------------------------+--------------------------------------------------------------------------------------------+
-| :ref:`bool<class_bool>` | :ref:`operator !=<class_bool_operator_neq_bool>` **(** **)**                               |
 +-------------------------+--------------------------------------------------------------------------------------------+
 | :ref:`bool<class_bool>` | :ref:`operator !=<class_bool_operator_neq_bool>` **(** :ref:`bool<class_bool>` right **)** |
 +-------------------------+--------------------------------------------------------------------------------------------+
 | :ref:`bool<class_bool>` | :ref:`operator <<class_bool_operator_lt_bool>` **(** :ref:`bool<class_bool>` right **)**   |
 +-------------------------+--------------------------------------------------------------------------------------------+
-| :ref:`bool<class_bool>` | :ref:`operator ==<class_bool_operator_eq_bool>` **(** **)**                                |
-+-------------------------+--------------------------------------------------------------------------------------------+
 | :ref:`bool<class_bool>` | :ref:`operator ==<class_bool_operator_eq_bool>` **(** :ref:`bool<class_bool>` right **)**  |
 +-------------------------+--------------------------------------------------------------------------------------------+
 | :ref:`bool<class_bool>` | :ref:`operator ><class_bool_operator_gt_bool>` **(** :ref:`bool<class_bool>` right **)**   |
@@ -180,10 +176,6 @@ Operator Descriptions
 
 .. _class_bool_operator_neq_bool:
 
-- :ref:`bool<class_bool>` **operator !=** **(** **)**
-
-----
-
 - :ref:`bool<class_bool>` **operator !=** **(** :ref:`bool<class_bool>` right **)**
 
 Returns ``true`` if two bools are different, i.e. one is ``true`` and the other is ``false``.
@@ -200,12 +192,6 @@ Returns ``true`` if the left operand is ``false`` and the right operand is ``tru
 
 .. _class_bool_operator_eq_bool:
 
-- :ref:`bool<class_bool>` **operator ==** **(** **)**
-
-Returns ``true`` if two bools are equal, i.e. both are ``true`` or both are ``false``.
-
-----
-
 - :ref:`bool<class_bool>` **operator ==** **(** :ref:`bool<class_bool>` right **)**
 
 Returns ``true`` if two bools are equal, i.e. both are ``true`` or both are ``false``.

+ 5 - 0
classes/class_boxcontainer.rst

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

+ 4 - 2
classes/class_boxshape3d.rst

@@ -11,12 +11,14 @@ BoxShape3D
 
 **Inherits:** :ref:`Shape3D<class_Shape3D>` **<** :ref:`Resource<class_Resource>` **<** :ref:`RefCounted<class_RefCounted>` **<** :ref:`Object<class_Object>`
 
-Box shape resource.
+Box shape resource for 3D collisions.
 
 Description
 -----------
 
-3D box shape that can be a child of a :ref:`PhysicsBody3D<class_PhysicsBody3D>` or :ref:`Area3D<class_Area3D>`.
+3D box shape to be added as a *direct* child of a :ref:`PhysicsBody3D<class_PhysicsBody3D>` or :ref:`Area3D<class_Area3D>` using a :ref:`CollisionShape3D<class_CollisionShape3D>` node.
+
+\ **Performance:** Being a primitive collision shape, ``BoxShape3D`` is fast to check collisions against (though not as fast as :ref:`SphereShape3D<class_SphereShape3D>`).
 
 Tutorials
 ---------

+ 4 - 4
classes/class_button.rst

@@ -130,7 +130,7 @@ Theme Properties
 +---------------------------------+------------------------------------------------------------------------------------+-------------------------------------+
 | :ref:`Color<class_Color>`       | :ref:`icon_pressed_color<class_Button_theme_color_icon_pressed_color>`             | ``Color(1, 1, 1, 1)``               |
 +---------------------------------+------------------------------------------------------------------------------------+-------------------------------------+
-| :ref:`int<class_int>`           | :ref:`hseparation<class_Button_theme_constant_hseparation>`                        | ``2``                               |
+| :ref:`int<class_int>`           | :ref:`h_separation<class_Button_theme_constant_h_separation>`                      | ``2``                               |
 +---------------------------------+------------------------------------------------------------------------------------+-------------------------------------+
 | :ref:`int<class_int>`           | :ref:`outline_size<class_Button_theme_constant_outline_size>`                      | ``0``                               |
 +---------------------------------+------------------------------------------------------------------------------------+-------------------------------------+
@@ -228,7 +228,7 @@ Flat buttons don't display decoration.
 
 Button's icon, if text is present the icon will be placed before the text.
 
-To edit margin and spacing of the icon, use :ref:`hseparation<class_Button_theme_constant_hseparation>` theme property and ``content_margin_*`` properties of the used :ref:`StyleBox<class_StyleBox>`\ es.
+To edit margin and spacing of the icon, use :ref:`h_separation<class_Button_theme_constant_h_separation>` theme property and ``content_margin_*`` properties of the used :ref:`StyleBox<class_StyleBox>`\ es.
 
 ----
 
@@ -478,9 +478,9 @@ Icon modulate :ref:`Color<class_Color>` used when the ``Button`` is being presse
 
 ----
 
-.. _class_Button_theme_constant_hseparation:
+.. _class_Button_theme_constant_h_separation:
 
-- :ref:`int<class_int>` **hseparation**
+- :ref:`int<class_int>` **h_separation**
 
 +-----------+-------+
 | *Default* | ``2`` |

+ 0 - 12
classes/class_callable.rst

@@ -96,13 +96,9 @@ Methods
 Operators
 ---------
 
-+-------------------------+--------------------------------------------------------------------------------------------------------+
-| :ref:`bool<class_bool>` | :ref:`operator !=<class_Callable_operator_neq_bool>` **(** **)**                                       |
 +-------------------------+--------------------------------------------------------------------------------------------------------+
 | :ref:`bool<class_bool>` | :ref:`operator !=<class_Callable_operator_neq_bool>` **(** :ref:`Callable<class_Callable>` right **)** |
 +-------------------------+--------------------------------------------------------------------------------------------------------+
-| :ref:`bool<class_bool>` | :ref:`operator ==<class_Callable_operator_eq_bool>` **(** **)**                                        |
-+-------------------------+--------------------------------------------------------------------------------------------------------+
 | :ref:`bool<class_bool>` | :ref:`operator ==<class_Callable_operator_eq_bool>` **(** :ref:`Callable<class_Callable>` right **)**  |
 +-------------------------+--------------------------------------------------------------------------------------------------------+
 
@@ -247,10 +243,6 @@ Operator Descriptions
 
 .. _class_Callable_operator_neq_bool:
 
-- :ref:`bool<class_bool>` **operator !=** **(** **)**
-
-----
-
 - :ref:`bool<class_bool>` **operator !=** **(** :ref:`Callable<class_Callable>` right **)**
 
 Returns ``true`` if both ``Callable``\ s invoke different targets.
@@ -259,10 +251,6 @@ Returns ``true`` if both ``Callable``\ s invoke different targets.
 
 .. _class_Callable_operator_eq_bool:
 
-- :ref:`bool<class_bool>` **operator ==** **(** **)**
-
-----
-
 - :ref:`bool<class_bool>` **operator ==** **(** :ref:`Callable<class_Callable>` right **)**
 
 Returns ``true`` if both ``Callable``\ s invoke the same custom target.

+ 1 - 1
classes/class_camera2d.rst

@@ -545,7 +545,7 @@ Speed in pixels per second of the camera's smoothing effect when :ref:`smoothing
 | *Getter*  | get_zoom()        |
 +-----------+-------------------+
 
-The camera's zoom relative to the viewport. Values larger than ``Vector2(1, 1)`` zoom out and smaller values zoom in. For an example, use ``Vector2(0.5, 0.5)`` for a 2× zoom-in, and ``Vector2(4, 4)`` for a 4× zoom-out.
+The camera's zoom. A zoom of ``Vector(2, 2)`` doubles the size seen in the viewport. A zoom of ``Vector(0.5, 0.5)`` halves the size seen in the viewport.
 
 Method Descriptions
 -------------------

+ 3 - 3
classes/class_camera3d.rst

@@ -363,7 +363,7 @@ The camera's projection mode. In :ref:`PROJECTION_PERSPECTIVE<class_Camera3D_con
 | *Getter*  | get_size()      |
 +-----------+-----------------+
 
-The camera's size measured as 1/2 the width or height. Only applicable in orthogonal mode. Since :ref:`keep_aspect<class_Camera3D_property_keep_aspect>` locks on axis, ``size`` sets the other axis' size length.
+The camera's size measured as 1/2 the width or height. Only applicable in orthogonal and frustum modes. Since :ref:`keep_aspect<class_Camera3D_property_keep_aspect>` locks on axis, ``size`` sets the other axis' size length.
 
 ----
 
@@ -478,7 +478,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.
 
 ----
 
@@ -486,7 +486,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.
 
 ----
 

+ 36 - 20
classes/class_canvasitem.rst

@@ -55,8 +55,6 @@ Properties
 +-----------------------------------------------------+---------------------------------------------------------------------------+-----------------------+
 | :ref:`bool<class_bool>`                             | :ref:`show_behind_parent<class_CanvasItem_property_show_behind_parent>`   | ``false``             |
 +-----------------------------------------------------+---------------------------------------------------------------------------+-----------------------+
-| :ref:`bool<class_bool>`                             | :ref:`show_on_top<class_CanvasItem_property_show_on_top>`                 |                       |
-+-----------------------------------------------------+---------------------------------------------------------------------------+-----------------------+
 | :ref:`TextureFilter<enum_CanvasItem_TextureFilter>` | :ref:`texture_filter<class_CanvasItem_property_texture_filter>`           | ``0``                 |
 +-----------------------------------------------------+---------------------------------------------------------------------------+-----------------------+
 | :ref:`TextureRepeat<enum_CanvasItem_TextureRepeat>` | :ref:`texture_repeat<class_CanvasItem_property_texture_repeat>`           | ``0``                 |
@@ -84,9 +82,11 @@ Methods
 +---------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
 | void                                  | :ref:`draw_colored_polygon<class_CanvasItem_method_draw_colored_polygon>` **(** :ref:`PackedVector2Array<class_PackedVector2Array>` points, :ref:`Color<class_Color>` color, :ref:`PackedVector2Array<class_PackedVector2Array>` uvs=PackedVector2Array(), :ref:`Texture2D<class_Texture2D>` texture=null **)**                                                                                                                                                                                                                                                                   |
 +---------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| void                                  | :ref:`draw_dashed_line<class_CanvasItem_method_draw_dashed_line>` **(** :ref:`Vector2<class_Vector2>` from, :ref:`Vector2<class_Vector2>` to, :ref:`Color<class_Color>` color, :ref:`float<class_float>` width=1.0, :ref:`float<class_float>` dash=2.0 **)**                                                                                                                                                                                                                                                                                                                      |
++---------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
 | void                                  | :ref:`draw_end_animation<class_CanvasItem_method_draw_end_animation>` **(** **)**                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 |
 +---------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| void                                  | :ref:`draw_line<class_CanvasItem_method_draw_line>` **(** :ref:`Vector2<class_Vector2>` from, :ref:`Vector2<class_Vector2>` to, :ref:`Color<class_Color>` color, :ref:`float<class_float>` width=1.0 **)**                                                                                                                                                                                                                                                                                                                                                                        |
+| void                                  | :ref:`draw_line<class_CanvasItem_method_draw_line>` **(** :ref:`Vector2<class_Vector2>` from, :ref:`Vector2<class_Vector2>` to, :ref:`Color<class_Color>` color, :ref:`float<class_float>` width=1.0, :ref:`bool<class_bool>` antialiased=false **)**                                                                                                                                                                                                                                                                                                                             |
 +---------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
 | void                                  | :ref:`draw_mesh<class_CanvasItem_method_draw_mesh>` **(** :ref:`Mesh<class_Mesh>` mesh, :ref:`Texture2D<class_Texture2D>` texture, :ref:`Transform2D<class_Transform2D>` transform=Transform2D(1, 0, 0, 1, 0, 0), :ref:`Color<class_Color>` modulate=Color(1, 1, 1, 1) **)**                                                                                                                                                                                                                                                                                                      |
 +---------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
@@ -140,6 +140,8 @@ Methods
 +---------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
 | :ref:`Vector2<class_Vector2>`         | :ref:`get_local_mouse_position<class_CanvasItem_method_get_local_mouse_position>` **(** **)** |const|                                                                                                                                                                                                                                                                                                                                                                                                                                                                             |
 +---------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`Transform2D<class_Transform2D>` | :ref:`get_screen_transform<class_CanvasItem_method_get_screen_transform>` **(** **)** |const|                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     |
++---------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
 | :ref:`Transform2D<class_Transform2D>` | :ref:`get_transform<class_CanvasItem_method_get_transform>` **(** **)** |const|                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   |
 +---------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
 | :ref:`Rect2<class_Rect2>`             | :ref:`get_viewport_rect<class_CanvasItem_method_get_viewport_rect>` **(** **)** |const|                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           |
@@ -276,6 +278,8 @@ Constants
 
 .. _class_CanvasItem_constant_NOTIFICATION_TRANSFORM_CHANGED:
 
+.. _class_CanvasItem_constant_NOTIFICATION_LOCAL_TRANSFORM_CHANGED:
+
 .. _class_CanvasItem_constant_NOTIFICATION_DRAW:
 
 .. _class_CanvasItem_constant_NOTIFICATION_VISIBILITY_CHANGED:
@@ -284,7 +288,9 @@ Constants
 
 .. _class_CanvasItem_constant_NOTIFICATION_EXIT_CANVAS:
 
-- **NOTIFICATION_TRANSFORM_CHANGED** = **2000** --- The ``CanvasItem``'s transform has changed. This notification is only received if enabled by :ref:`set_notify_transform<class_CanvasItem_method_set_notify_transform>` or :ref:`set_notify_local_transform<class_CanvasItem_method_set_notify_local_transform>`.
+- **NOTIFICATION_TRANSFORM_CHANGED** = **2000** --- The ``CanvasItem``'s global transform has changed. This notification is only received if enabled by :ref:`set_notify_transform<class_CanvasItem_method_set_notify_transform>`.
+
+- **NOTIFICATION_LOCAL_TRANSFORM_CHANGED** = **35** --- The ``CanvasItem``'s local transform has changed. This notification is only received if enabled by :ref:`set_notify_local_transform<class_CanvasItem_method_set_notify_local_transform>`.
 
 - **NOTIFICATION_DRAW** = **30** --- The ``CanvasItem`` is requested to draw.
 
@@ -389,14 +395,6 @@ If ``true``, the object draws behind its parent.
 
 ----
 
-.. _class_CanvasItem_property_show_on_top:
-
-- :ref:`bool<class_bool>` **show_on_top**
-
-If ``true``, the object draws on top of its parent.
-
-----
-
 .. _class_CanvasItem_property_texture_filter:
 
 - :ref:`TextureFilter<enum_CanvasItem_TextureFilter>` **texture_filter**
@@ -441,7 +439,7 @@ The texture repeating mode to use on this ``CanvasItem``.
 | *Getter*  | is_set_as_top_level()   |
 +-----------+-------------------------+
 
-If ``true``, the node will not inherit its transform from parent ``CanvasItem``\ s.
+If ``true``, this ``CanvasItem`` will *not* inherit its transform from parent ``CanvasItem``\ s. Its draw order will also be changed to make it draw on top of other ``CanvasItem``\ s that do not have :ref:`top_level<class_CanvasItem_property_top_level>` set to ``true``. The ``CanvasItem`` will effectively act as if it was placed as a child of a bare :ref:`Node<class_Node>`.
 
 ----
 
@@ -516,7 +514,7 @@ Draws a string character using a custom font. Returns the advance, depending on
 
 - void **draw_circle** **(** :ref:`Vector2<class_Vector2>` position, :ref:`float<class_float>` radius, :ref:`Color<class_Color>` color **)**
 
-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>`.
+Draws a colored, filled 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>`.
 
 ----
 
@@ -528,6 +526,14 @@ Draws a colored polygon of any amount of points, convex or concave. Unlike :ref:
 
 ----
 
+.. _class_CanvasItem_method_draw_dashed_line:
+
+- void **draw_dashed_line** **(** :ref:`Vector2<class_Vector2>` from, :ref:`Vector2<class_Vector2>` to, :ref:`Color<class_Color>` color, :ref:`float<class_float>` width=1.0, :ref:`float<class_float>` dash=2.0 **)**
+
+Draws a dashed line from a 2D point to another, with a given color and width. See also :ref:`draw_multiline<class_CanvasItem_method_draw_multiline>` and :ref:`draw_polyline<class_CanvasItem_method_draw_polyline>`.
+
+----
+
 .. _class_CanvasItem_method_draw_end_animation:
 
 - void **draw_end_animation** **(** **)**
@@ -538,9 +544,9 @@ After submitting all animations slices via :ref:`draw_animation_slice<class_Canv
 
 .. _class_CanvasItem_method_draw_line:
 
-- void **draw_line** **(** :ref:`Vector2<class_Vector2>` from, :ref:`Vector2<class_Vector2>` to, :ref:`Color<class_Color>` color, :ref:`float<class_float>` width=1.0 **)**
+- void **draw_line** **(** :ref:`Vector2<class_Vector2>` from, :ref:`Vector2<class_Vector2>` to, :ref:`Color<class_Color>` color, :ref:`float<class_float>` width=1.0, :ref:`bool<class_bool>` antialiased=false **)**
 
-Draws a line from a 2D point to another, with a given color and width. See also :ref:`draw_multiline<class_CanvasItem_method_draw_multiline>` and :ref:`draw_polyline<class_CanvasItem_method_draw_polyline>`.
+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>`.
 
 ----
 
@@ -608,7 +614,7 @@ Draws a solid polygon of any amount of points, convex or concave. Unlike :ref:`d
 
 - void **draw_polyline** **(** :ref:`PackedVector2Array<class_PackedVector2Array>` points, :ref:`Color<class_Color>` color, :ref:`float<class_float>` width=1.0, :ref:`bool<class_bool>` antialiased=false **)**
 
-Draws interconnected line segments with a uniform ``color`` and ``width``. 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>`.
+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>`.
 
 ----
 
@@ -616,7 +622,7 @@ Draws interconnected line segments with a uniform ``color`` and ``width``. When
 
 - void **draw_polyline_colors** **(** :ref:`PackedVector2Array<class_PackedVector2Array>` points, :ref:`PackedColorArray<class_PackedColorArray>` colors, :ref:`float<class_float>` width=1.0, :ref:`bool<class_bool>` antialiased=false **)**
 
-Draws interconnected line segments 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 disconnected lines, use :ref:`draw_multiline_colors<class_CanvasItem_method_draw_multiline_colors>` instead. See also :ref:`draw_polygon<class_CanvasItem_method_draw_polygon>`.
+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>`.
 
 ----
 
@@ -785,6 +791,16 @@ Returns the mouse's position in this ``CanvasItem`` using the local coordinate s
 
 ----
 
+.. _class_CanvasItem_method_get_screen_transform:
+
+- :ref:`Transform2D<class_Transform2D>` **get_screen_transform** **(** **)** |const|
+
+Returns the transform of this ``CanvasItem`` in global screen coordinates (i.e. taking window position into account). Mostly useful for editor plugins.
+
+Equals to :ref:`get_global_transform<class_CanvasItem_method_get_global_transform>` if the window is embedded (see :ref:`Viewport.gui_embed_subwindows<class_Viewport_property_gui_embed_subwindows>`).
+
+----
+
 .. _class_CanvasItem_method_get_transform:
 
 - :ref:`Transform2D<class_Transform2D>` **get_transform** **(** **)** |const|
@@ -869,7 +885,7 @@ Transformations issued by ``event``'s inputs are applied in local space instead
 
 - void **set_notify_local_transform** **(** :ref:`bool<class_bool>` enable **)**
 
-If ``enable`` is ``true``, children will be updated with local transform data.
+If ``enable`` is ``true``, this node will receive :ref:`NOTIFICATION_LOCAL_TRANSFORM_CHANGED<class_CanvasItem_constant_NOTIFICATION_LOCAL_TRANSFORM_CHANGED>` when its local transform changes.
 
 ----
 
@@ -877,7 +893,7 @@ If ``enable`` is ``true``, children will be updated with local transform data.
 
 - void **set_notify_transform** **(** :ref:`bool<class_bool>` enable **)**
 
-If ``enable`` is ``true``, children will be updated with global transform data.
+If ``enable`` is ``true``, this node will receive :ref:`NOTIFICATION_TRANSFORM_CHANGED<class_CanvasItem_constant_NOTIFICATION_TRANSFORM_CHANGED>` when its global transform changes.
 
 ----
 

+ 4 - 2
classes/class_capsuleshape2d.rst

@@ -11,12 +11,14 @@ CapsuleShape2D
 
 **Inherits:** :ref:`Shape2D<class_Shape2D>` **<** :ref:`Resource<class_Resource>` **<** :ref:`RefCounted<class_RefCounted>` **<** :ref:`Object<class_Object>`
 
-Capsule shape for 2D collisions.
+Capsule shape resource for 2D physics.
 
 Description
 -----------
 
-Capsule shape for 2D collisions.
+2D capsule shape to be added as a *direct* child of a :ref:`PhysicsBody2D<class_PhysicsBody2D>` or :ref:`Area2D<class_Area2D>` using a :ref:`CollisionShape2D<class_CollisionShape2D>` node. In 2D, a capsule is a rectangle shape with half-circles at both ends.
+
+\ **Performance:** Being a primitive collision shape, ``CapsuleShape2D`` is fast to check collisions against (though not as fast as :ref:`CircleShape2D<class_CircleShape2D>`).
 
 Properties
 ----------

+ 4 - 2
classes/class_capsuleshape3d.rst

@@ -11,12 +11,14 @@ CapsuleShape3D
 
 **Inherits:** :ref:`Shape3D<class_Shape3D>` **<** :ref:`Resource<class_Resource>` **<** :ref:`RefCounted<class_RefCounted>` **<** :ref:`Object<class_Object>`
 
-Capsule shape for collisions.
+Capsule shape resource for 3D collisions.
 
 Description
 -----------
 
-Capsule shape for collisions.
+3D capsule shape to be added as a *direct* child of a :ref:`PhysicsBody3D<class_PhysicsBody3D>` or :ref:`Area3D<class_Area3D>` using a :ref:`CollisionShape3D<class_CollisionShape3D>` node. In 3D, a capsule is a cylinder shape with hemispheres at both ends.
+
+\ **Performance:** Being a primitive collision shape, ``CapsuleShape3D`` is fast to check collisions against (though not as fast as :ref:`SphereShape3D<class_SphereShape3D>`). ``CapsuleShape3D`` is cheaper to check collisions against compared to :ref:`CylinderShape3D<class_CylinderShape3D>`.
 
 Tutorials
 ---------

+ 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
 ----------
 

+ 1 - 1
classes/class_characterbody2d.rst

@@ -359,7 +359,7 @@ If ``true``, during a jump against the ceiling, the body will slide, if ``false`
 | *Getter*  | get_up_direction()      |
 +-----------+-------------------------+
 
-Direction vector used to determine what is a wall and what is a floor (or a ceiling), rather than a wall, when calling :ref:`move_and_slide<class_CharacterBody2D_method_move_and_slide>`. Defaults to ``Vector2.UP``. If set to ``Vector2(0, 0)``, everything is considered a wall. This is useful for topdown games.
+Vector pointing upwards, used to determine what is a wall and what is a floor (or a ceiling) when calling :ref:`move_and_slide<class_CharacterBody2D_method_move_and_slide>`. Defaults to ``Vector2.UP``. As the vector will be normalized it can't be equal to :ref:`Vector2.ZERO<class_Vector2_constant_ZERO>`, if you want all collisions to be reported as walls, consider using :ref:`MOTION_MODE_FLOATING<class_CharacterBody2D_constant_MOTION_MODE_FLOATING>` as :ref:`motion_mode<class_CharacterBody2D_property_motion_mode>`.
 
 ----
 

+ 1 - 1
classes/class_characterbody3d.rst

@@ -361,7 +361,7 @@ If ``true``, during a jump against the ceiling, the body will slide, if ``false`
 | *Getter*  | get_up_direction()      |
 +-----------+-------------------------+
 
-Direction vector used to determine what is a wall and what is a floor (or a ceiling), rather than a wall, when calling :ref:`move_and_slide<class_CharacterBody3D_method_move_and_slide>`. Defaults to ``Vector3.UP``. If set to ``Vector3(0, 0, 0)``, everything is considered a wall. This is useful for topdown games.
+Vector pointing upwards, used to determine what is a wall and what is a floor (or a ceiling) when calling :ref:`move_and_slide<class_CharacterBody3D_method_move_and_slide>`. Defaults to ``Vector3.UP``. As the vector will be normalized it can't be equal to :ref:`Vector3.ZERO<class_Vector3_constant_ZERO>`, if you want all collisions to be reported as walls, consider using :ref:`MOTION_MODE_FLOATING<class_CharacterBody3D_constant_MOTION_MODE_FLOATING>` as :ref:`motion_mode<class_CharacterBody3D_property_motion_mode>`.
 
 ----
 

+ 14 - 10
classes/class_checkbox.rst

@@ -47,9 +47,9 @@ Theme Properties
 +-----------------------------------+--------------------------------------------------------------------------------------+-------------------------------------+
 | :ref:`Color<class_Color>`         | :ref:`font_pressed_color<class_CheckBox_theme_color_font_pressed_color>`             | ``Color(1, 1, 1, 1)``               |
 +-----------------------------------+--------------------------------------------------------------------------------------+-------------------------------------+
-| :ref:`int<class_int>`             | :ref:`check_vadjust<class_CheckBox_theme_constant_check_vadjust>`                    | ``0``                               |
+| :ref:`int<class_int>`             | :ref:`check_v_adjust<class_CheckBox_theme_constant_check_v_adjust>`                  | ``0``                               |
 +-----------------------------------+--------------------------------------------------------------------------------------+-------------------------------------+
-| :ref:`int<class_int>`             | :ref:`hseparation<class_CheckBox_theme_constant_hseparation>`                        | ``4``                               |
+| :ref:`int<class_int>`             | :ref:`h_separation<class_CheckBox_theme_constant_h_separation>`                      | ``4``                               |
 +-----------------------------------+--------------------------------------------------------------------------------------+-------------------------------------+
 | :ref:`int<class_int>`             | :ref:`outline_size<class_CheckBox_theme_constant_outline_size>`                      | ``0``                               |
 +-----------------------------------+--------------------------------------------------------------------------------------+-------------------------------------+
@@ -173,9 +173,9 @@ The ``CheckBox`` text's font color when it's pressed.
 
 ----
 
-.. _class_CheckBox_theme_constant_check_vadjust:
+.. _class_CheckBox_theme_constant_check_v_adjust:
 
-- :ref:`int<class_int>` **check_vadjust**
+- :ref:`int<class_int>` **check_v_adjust**
 
 +-----------+-------+
 | *Default* | ``0`` |
@@ -185,9 +185,9 @@ The vertical offset used when rendering the check icons (in pixels).
 
 ----
 
-.. _class_CheckBox_theme_constant_hseparation:
+.. _class_CheckBox_theme_constant_h_separation:
 
-- :ref:`int<class_int>` **hseparation**
+- :ref:`int<class_int>` **h_separation**
 
 +-----------+-------+
 | *Default* | ``4`` |
@@ -237,7 +237,7 @@ The check icon to display when the ``CheckBox`` is checked.
 
 - :ref:`Texture2D<class_Texture2D>` **checked_disabled**
 
-The check icon to display when the ``CheckBox`` is checked and disabled.
+The check icon to display when the ``CheckBox`` is checked and is disabled.
 
 ----
 
@@ -245,7 +245,7 @@ The check icon to display when the ``CheckBox`` is checked and disabled.
 
 - :ref:`Texture2D<class_Texture2D>` **radio_checked**
 
-If the ``CheckBox`` is configured as a radio button, the icon to display when the ``CheckBox`` is checked.
+The check icon to display when the ``CheckBox`` is configured as a radio button and is checked.
 
 ----
 
@@ -253,13 +253,15 @@ If the ``CheckBox`` is configured as a radio button, the icon to display when th
 
 - :ref:`Texture2D<class_Texture2D>` **radio_checked_disabled**
 
+The check icon to display when the ``CheckBox`` is configured as a radio button, is disabled, and is unchecked.
+
 ----
 
 .. _class_CheckBox_theme_icon_radio_unchecked:
 
 - :ref:`Texture2D<class_Texture2D>` **radio_unchecked**
 
-If the ``CheckBox`` is configured as a radio button, the icon to display when the ``CheckBox`` is unchecked.
+The check icon to display when the ``CheckBox`` is configured as a radio button and is unchecked.
 
 ----
 
@@ -267,6 +269,8 @@ If the ``CheckBox`` is configured as a radio button, the icon to display when th
 
 - :ref:`Texture2D<class_Texture2D>` **radio_unchecked_disabled**
 
+The check icon to display when the ``CheckBox`` is configured as a radio button, is disabled, and is unchecked.
+
 ----
 
 .. _class_CheckBox_theme_icon_unchecked:
@@ -281,7 +285,7 @@ The check icon to display when the ``CheckBox`` is unchecked.
 
 - :ref:`Texture2D<class_Texture2D>` **unchecked_disabled**
 
-The check icon to display when the ``CheckBox`` is unchecked and disabled.
+The check icon to display when the ``CheckBox`` is unchecked and is disabled.
 
 ----
 

+ 6 - 6
classes/class_checkbutton.rst

@@ -47,9 +47,9 @@ Theme Properties
 +-----------------------------------+-----------------------------------------------------------------------------------------+-------------------------------------+
 | :ref:`Color<class_Color>`         | :ref:`font_pressed_color<class_CheckButton_theme_color_font_pressed_color>`             | ``Color(1, 1, 1, 1)``               |
 +-----------------------------------+-----------------------------------------------------------------------------------------+-------------------------------------+
-| :ref:`int<class_int>`             | :ref:`check_vadjust<class_CheckButton_theme_constant_check_vadjust>`                    | ``0``                               |
+| :ref:`int<class_int>`             | :ref:`check_v_adjust<class_CheckButton_theme_constant_check_v_adjust>`                  | ``0``                               |
 +-----------------------------------+-----------------------------------------------------------------------------------------+-------------------------------------+
-| :ref:`int<class_int>`             | :ref:`hseparation<class_CheckButton_theme_constant_hseparation>`                        | ``4``                               |
+| :ref:`int<class_int>`             | :ref:`h_separation<class_CheckButton_theme_constant_h_separation>`                      | ``4``                               |
 +-----------------------------------+-----------------------------------------------------------------------------------------+-------------------------------------+
 | :ref:`int<class_int>`             | :ref:`outline_size<class_CheckButton_theme_constant_outline_size>`                      | ``0``                               |
 +-----------------------------------+-----------------------------------------------------------------------------------------+-------------------------------------+
@@ -173,9 +173,9 @@ The ``CheckButton`` text's font color when it's pressed.
 
 ----
 
-.. _class_CheckButton_theme_constant_check_vadjust:
+.. _class_CheckButton_theme_constant_check_v_adjust:
 
-- :ref:`int<class_int>` **check_vadjust**
+- :ref:`int<class_int>` **check_v_adjust**
 
 +-----------+-------+
 | *Default* | ``0`` |
@@ -185,9 +185,9 @@ The vertical offset used when rendering the toggle icons (in pixels).
 
 ----
 
-.. _class_CheckButton_theme_constant_hseparation:
+.. _class_CheckButton_theme_constant_h_separation:
 
-- :ref:`int<class_int>` **hseparation**
+- :ref:`int<class_int>` **h_separation**
 
 +-----------+-------+
 | *Default* | ``4`` |

+ 4 - 2
classes/class_circleshape2d.rst

@@ -11,12 +11,14 @@ CircleShape2D
 
 **Inherits:** :ref:`Shape2D<class_Shape2D>` **<** :ref:`Resource<class_Resource>` **<** :ref:`RefCounted<class_RefCounted>` **<** :ref:`Object<class_Object>`
 
-Circular shape for 2D collisions.
+Circular shape resource for 2D physics.
 
 Description
 -----------
 
-Circular shape for 2D collisions. This shape is useful for modeling balls or small characters and its collision detection with everything else is very fast.
+2D circular shape to be added as a *direct* child of a :ref:`PhysicsBody2D<class_PhysicsBody2D>` or :ref:`Area2D<class_Area2D>` using a :ref:`CollisionShape2D<class_CollisionShape2D>` node. This shape is useful for modeling balls or small characters and its collision detection with everything else is very fast.
+
+\ **Performance:** Being a primitive collision shape, ``CircleShape2D`` is the fastest collision shape to check collisions against, as it only requires a distance check with the shape's origin.
 
 Properties
 ----------

+ 0 - 10
classes/class_classdb.rst

@@ -26,8 +26,6 @@ Methods
 +---------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
 | :ref:`bool<class_bool>`                           | :ref:`class_exists<class_ClassDB_method_class_exists>` **(** :ref:`StringName<class_StringName>` class **)** |const|                                                                                                                               |
 +---------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`StringName<class_StringName>`               | :ref:`class_get_category<class_ClassDB_method_class_get_category>` **(** :ref:`StringName<class_StringName>` class **)** |const|                                                                                                                   |
-+---------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
 | :ref:`PackedStringArray<class_PackedStringArray>` | :ref:`class_get_enum_constants<class_ClassDB_method_class_get_enum_constants>` **(** :ref:`StringName<class_StringName>` class, :ref:`StringName<class_StringName>` enum, :ref:`bool<class_bool>` no_inheritance=false **)** |const|               |
 +---------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
 | :ref:`PackedStringArray<class_PackedStringArray>` | :ref:`class_get_enum_list<class_ClassDB_method_class_get_enum_list>` **(** :ref:`StringName<class_StringName>` class, :ref:`bool<class_bool>` no_inheritance=false **)** |const|                                                                   |
@@ -90,14 +88,6 @@ Returns whether the specified ``class`` is available or not.
 
 ----
 
-.. _class_ClassDB_method_class_get_category:
-
-- :ref:`StringName<class_StringName>` **class_get_category** **(** :ref:`StringName<class_StringName>` class **)** |const|
-
-Returns a category associated with the class for use in documentation and the Asset Library. Debug mode required.
-
-----
-
 .. _class_ClassDB_method_class_get_enum_constants:
 
 - :ref:`PackedStringArray<class_PackedStringArray>` **class_get_enum_constants** **(** :ref:`StringName<class_StringName>` class, :ref:`StringName<class_StringName>` enum, :ref:`bool<class_bool>` no_inheritance=false **)** |const|

+ 2 - 2
classes/class_codeedit.rst

@@ -52,7 +52,7 @@ Properties
 +------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------+---------------------------------------------------------------------------+
 | :ref:`bool<class_bool>`                              | :ref:`indent_automatic<class_CodeEdit_property_indent_automatic>`                                                 | ``false``                                                                 |
 +------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------+---------------------------------------------------------------------------+
-| :ref:`String[]<class_String>`                        | :ref:`indent_automatic_prefixes<class_CodeEdit_property_indent_automatic_prefixes>`                               | ``["(", ":", "[", "{"]``                                                  |
+| :ref:`String[]<class_String>`                        | :ref:`indent_automatic_prefixes<class_CodeEdit_property_indent_automatic_prefixes>`                               | ``[":", "{", "[", "("]``                                                  |
 +------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------+---------------------------------------------------------------------------+
 | :ref:`int<class_int>`                                | :ref:`indent_size<class_CodeEdit_property_indent_size>`                                                           | ``4``                                                                     |
 +------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------+---------------------------------------------------------------------------+
@@ -597,7 +597,7 @@ Sets whether automatic indent are enabled, this will add an extra indent if a pr
 - :ref:`String[]<class_String>` **indent_automatic_prefixes**
 
 +-----------+---------------------------------+
-| *Default* | ``["(", ":", "[", "{"]``        |
+| *Default* | ``[":", "{", "[", "("]``        |
 +-----------+---------------------------------+
 | *Setter*  | set_auto_indent_prefixes(value) |
 +-----------+---------------------------------+

+ 2 - 0
classes/class_collisionobject2d.rst

@@ -20,6 +20,8 @@ Description
 
 CollisionObject2D is the base class for 2D physics objects. It can hold any number of 2D collision :ref:`Shape2D<class_Shape2D>`\ s. Each shape must be assigned to a *shape owner*. The CollisionObject2D can have any number of shape owners. Shape owners are not nodes and do not appear in the editor, but are accessible through code using the ``shape_owner_*`` methods.
 
+\ **Note:** Only collisions between objects within the same canvas (:ref:`Viewport<class_Viewport>` canvas or :ref:`CanvasLayer<class_CanvasLayer>`) are supported. The behavior of collisions between objects in different canvases is undefined.
+
 Properties
 ----------
 

+ 5 - 1
classes/class_collisionpolygon2d.rst

@@ -16,7 +16,9 @@ Defines a 2D collision polygon.
 Description
 -----------
 
-Provides a 2D collision polygon to a :ref:`CollisionObject2D<class_CollisionObject2D>` parent. Polygons can be drawn in the editor or specified by a list of vertices.
+Provides a concave or convex 2D collision polygon to a :ref:`CollisionObject2D<class_CollisionObject2D>` parent. Polygons can be drawn in the editor or specified by a list of vertices. See also :ref:`ConvexPolygonShape2D<class_ConvexPolygonShape2D>`.
+
+In the editor, a ``CollisionPolygon2D`` can be generated from a :ref:`Sprite2D<class_Sprite2D>`'s outline by selecting a :ref:`Sprite2D<class_Sprite2D>` node, going to the **Sprite2D** menu at the top of the 2D editor viewport then choosing **Create CollisionPolygon2D Sibling**.
 
 Properties
 ----------
@@ -97,6 +99,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:

+ 4 - 2
classes/class_collisionpolygon3d.rst

@@ -11,12 +11,14 @@ CollisionPolygon3D
 
 **Inherits:** :ref:`Node3D<class_Node3D>` **<** :ref:`Node<class_Node>` **<** :ref:`Object<class_Object>`
 
-Editor-only class for defining a collision polygon in 3D space.
+Editor-only node for defining a collision polygon in 3D space.
 
 Description
 -----------
 
-Allows editing a collision polygon's vertices on a selected plane. Can also set a depth perpendicular to that plane. This class is only available in the editor. It will not appear in the scene tree at run-time. Creates a :ref:`Shape3D<class_Shape3D>` for gameplay. Properties modified during gameplay will have no effect.
+Allows editing a concave or convex collision polygon's vertices on a selected plane. Can also set a depth perpendicular to that plane. This class is only available in the editor. It will not appear in the scene tree at run-time. Creates several :ref:`ConvexPolygonShape3D<class_ConvexPolygonShape3D>`\ s at run-time to represent the original polygon using convex decomposition.
+
+\ **Note:** Since this is an editor-only helper, properties modified during gameplay will have no effect.
 
 Properties
 ----------

+ 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:

+ 233 - 200
classes/class_color.rst

@@ -82,65 +82,69 @@ Constructors
 Methods
 -------
 
-+-----------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`Color<class_Color>`   | :ref:`blend<class_Color_method_blend>` **(** :ref:`Color<class_Color>` over **)** |const|                                                                                                    |
-+-----------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`Color<class_Color>`   | :ref:`clamp<class_Color_method_clamp>` **(** :ref:`Color<class_Color>` min=Color(0, 0, 0, 0), :ref:`Color<class_Color>` max=Color(1, 1, 1, 1) **)** |const|                                  |
-+-----------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`Color<class_Color>`   | :ref:`darkened<class_Color_method_darkened>` **(** :ref:`float<class_float>` amount **)** |const|                                                                                            |
-+-----------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`int<class_int>`       | :ref:`find_named_color<class_Color_method_find_named_color>` **(** :ref:`String<class_String>` name **)** |static|                                                                           |
-+-----------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`Color<class_Color>`   | :ref:`from_hsv<class_Color_method_from_hsv>` **(** :ref:`float<class_float>` h, :ref:`float<class_float>` s, :ref:`float<class_float>` v, :ref:`float<class_float>` alpha=1.0 **)** |static| |
-+-----------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`Color<class_Color>`   | :ref:`from_rgbe9995<class_Color_method_from_rgbe9995>` **(** :ref:`int<class_int>` rgbe **)** |static|                                                                                       |
-+-----------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`Color<class_Color>`   | :ref:`from_string<class_Color_method_from_string>` **(** :ref:`String<class_String>` str, :ref:`Color<class_Color>` default **)** |static|                                                   |
-+-----------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`float<class_float>`   | :ref:`get_luminance<class_Color_method_get_luminance>` **(** **)** |const|                                                                                                                   |
-+-----------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`Color<class_Color>`   | :ref:`get_named_color<class_Color_method_get_named_color>` **(** :ref:`int<class_int>` idx **)** |static|                                                                                    |
-+-----------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`int<class_int>`       | :ref:`get_named_color_count<class_Color_method_get_named_color_count>` **(** **)** |static|                                                                                                  |
-+-----------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`String<class_String>` | :ref:`get_named_color_name<class_Color_method_get_named_color_name>` **(** :ref:`int<class_int>` idx **)** |static|                                                                          |
-+-----------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`Color<class_Color>`   | :ref:`hex<class_Color_method_hex>` **(** :ref:`int<class_int>` hex **)** |static|                                                                                                            |
-+-----------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`Color<class_Color>`   | :ref:`hex64<class_Color_method_hex64>` **(** :ref:`int<class_int>` hex **)** |static|                                                                                                        |
-+-----------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`Color<class_Color>`   | :ref:`html<class_Color_method_html>` **(** :ref:`String<class_String>` rgba **)** |static|                                                                                                   |
-+-----------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`bool<class_bool>`     | :ref:`html_is_valid<class_Color_method_html_is_valid>` **(** :ref:`String<class_String>` color **)** |static|                                                                                |
-+-----------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`Color<class_Color>`   | :ref:`inverted<class_Color_method_inverted>` **(** **)** |const|                                                                                                                             |
-+-----------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`bool<class_bool>`     | :ref:`is_equal_approx<class_Color_method_is_equal_approx>` **(** :ref:`Color<class_Color>` to **)** |const|                                                                                  |
-+-----------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`Color<class_Color>`   | :ref:`lerp<class_Color_method_lerp>` **(** :ref:`Color<class_Color>` to, :ref:`float<class_float>` weight **)** |const|                                                                      |
-+-----------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`Color<class_Color>`   | :ref:`lightened<class_Color_method_lightened>` **(** :ref:`float<class_float>` amount **)** |const|                                                                                          |
-+-----------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`int<class_int>`       | :ref:`to_abgr32<class_Color_method_to_abgr32>` **(** **)** |const|                                                                                                                           |
-+-----------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`int<class_int>`       | :ref:`to_abgr64<class_Color_method_to_abgr64>` **(** **)** |const|                                                                                                                           |
-+-----------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`int<class_int>`       | :ref:`to_argb32<class_Color_method_to_argb32>` **(** **)** |const|                                                                                                                           |
-+-----------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`int<class_int>`       | :ref:`to_argb64<class_Color_method_to_argb64>` **(** **)** |const|                                                                                                                           |
-+-----------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`String<class_String>` | :ref:`to_html<class_Color_method_to_html>` **(** :ref:`bool<class_bool>` with_alpha=true **)** |const|                                                                                       |
-+-----------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`int<class_int>`       | :ref:`to_rgba32<class_Color_method_to_rgba32>` **(** **)** |const|                                                                                                                           |
-+-----------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`int<class_int>`       | :ref:`to_rgba64<class_Color_method_to_rgba64>` **(** **)** |const|                                                                                                                           |
-+-----------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
++-----------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`Color<class_Color>`   | :ref:`blend<class_Color_method_blend>` **(** :ref:`Color<class_Color>` over **)** |const|                                                                                                          |
++-----------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`Color<class_Color>`   | :ref:`clamp<class_Color_method_clamp>` **(** :ref:`Color<class_Color>` min=Color(0, 0, 0, 0), :ref:`Color<class_Color>` max=Color(1, 1, 1, 1) **)** |const|                                        |
++-----------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`Color<class_Color>`   | :ref:`darkened<class_Color_method_darkened>` **(** :ref:`float<class_float>` amount **)** |const|                                                                                                  |
++-----------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`int<class_int>`       | :ref:`find_named_color<class_Color_method_find_named_color>` **(** :ref:`String<class_String>` name **)** |static|                                                                                 |
++-----------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`Color<class_Color>`   | :ref:`from_hsv<class_Color_method_from_hsv>` **(** :ref:`float<class_float>` h, :ref:`float<class_float>` s, :ref:`float<class_float>` v, :ref:`float<class_float>` alpha=1.0 **)** |static|       |
++-----------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`Color<class_Color>`   | :ref:`from_ok_hsl<class_Color_method_from_ok_hsl>` **(** :ref:`float<class_float>` h, :ref:`float<class_float>` s, :ref:`float<class_float>` l, :ref:`float<class_float>` alpha=1.0 **)** |static| |
++-----------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`Color<class_Color>`   | :ref:`from_rgbe9995<class_Color_method_from_rgbe9995>` **(** :ref:`int<class_int>` rgbe **)** |static|                                                                                             |
++-----------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`Color<class_Color>`   | :ref:`from_string<class_Color_method_from_string>` **(** :ref:`String<class_String>` str, :ref:`Color<class_Color>` default **)** |static|                                                         |
++-----------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`float<class_float>`   | :ref:`get_luminance<class_Color_method_get_luminance>` **(** **)** |const|                                                                                                                         |
++-----------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`Color<class_Color>`   | :ref:`get_named_color<class_Color_method_get_named_color>` **(** :ref:`int<class_int>` idx **)** |static|                                                                                          |
++-----------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`int<class_int>`       | :ref:`get_named_color_count<class_Color_method_get_named_color_count>` **(** **)** |static|                                                                                                        |
++-----------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`String<class_String>` | :ref:`get_named_color_name<class_Color_method_get_named_color_name>` **(** :ref:`int<class_int>` idx **)** |static|                                                                                |
++-----------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`Color<class_Color>`   | :ref:`hex<class_Color_method_hex>` **(** :ref:`int<class_int>` hex **)** |static|                                                                                                                  |
++-----------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`Color<class_Color>`   | :ref:`hex64<class_Color_method_hex64>` **(** :ref:`int<class_int>` hex **)** |static|                                                                                                              |
++-----------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`Color<class_Color>`   | :ref:`html<class_Color_method_html>` **(** :ref:`String<class_String>` rgba **)** |static|                                                                                                         |
++-----------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`bool<class_bool>`     | :ref:`html_is_valid<class_Color_method_html_is_valid>` **(** :ref:`String<class_String>` color **)** |static|                                                                                      |
++-----------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`Color<class_Color>`   | :ref:`inverted<class_Color_method_inverted>` **(** **)** |const|                                                                                                                                   |
++-----------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`bool<class_bool>`     | :ref:`is_equal_approx<class_Color_method_is_equal_approx>` **(** :ref:`Color<class_Color>` to **)** |const|                                                                                        |
++-----------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`Color<class_Color>`   | :ref:`lerp<class_Color_method_lerp>` **(** :ref:`Color<class_Color>` to, :ref:`float<class_float>` weight **)** |const|                                                                            |
++-----------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`Color<class_Color>`   | :ref:`lightened<class_Color_method_lightened>` **(** :ref:`float<class_float>` amount **)** |const|                                                                                                |
++-----------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`Color<class_Color>`   | :ref:`linear_to_srgb<class_Color_method_linear_to_srgb>` **(** **)** |const|                                                                                                                       |
++-----------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`Color<class_Color>`   | :ref:`srgb_to_linear<class_Color_method_srgb_to_linear>` **(** **)** |const|                                                                                                                       |
++-----------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`int<class_int>`       | :ref:`to_abgr32<class_Color_method_to_abgr32>` **(** **)** |const|                                                                                                                                 |
++-----------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`int<class_int>`       | :ref:`to_abgr64<class_Color_method_to_abgr64>` **(** **)** |const|                                                                                                                                 |
++-----------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`int<class_int>`       | :ref:`to_argb32<class_Color_method_to_argb32>` **(** **)** |const|                                                                                                                                 |
++-----------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`int<class_int>`       | :ref:`to_argb64<class_Color_method_to_argb64>` **(** **)** |const|                                                                                                                                 |
++-----------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`String<class_String>` | :ref:`to_html<class_Color_method_to_html>` **(** :ref:`bool<class_bool>` with_alpha=true **)** |const|                                                                                             |
++-----------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`int<class_int>`       | :ref:`to_rgba32<class_Color_method_to_rgba32>` **(** **)** |const|                                                                                                                                 |
++-----------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`int<class_int>`       | :ref:`to_rgba64<class_Color_method_to_rgba64>` **(** **)** |const|                                                                                                                                 |
++-----------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
 
 Operators
 ---------
 
-+---------------------------+-----------------------------------------------------------------------------------------------+
-| :ref:`bool<class_bool>`   | :ref:`operator !=<class_Color_operator_neq_bool>` **(** **)**                                 |
 +---------------------------+-----------------------------------------------------------------------------------------------+
 | :ref:`bool<class_bool>`   | :ref:`operator !=<class_Color_operator_neq_bool>` **(** :ref:`Color<class_Color>` right **)** |
 +---------------------------+-----------------------------------------------------------------------------------------------+
@@ -160,8 +164,6 @@ Operators
 +---------------------------+-----------------------------------------------------------------------------------------------+
 | :ref:`Color<class_Color>` | :ref:`operator /<class_Color_operator_div_Color>` **(** :ref:`int<class_int>` right **)**     |
 +---------------------------+-----------------------------------------------------------------------------------------------+
-| :ref:`bool<class_bool>`   | :ref:`operator ==<class_Color_operator_eq_bool>` **(** **)**                                  |
-+---------------------------+-----------------------------------------------------------------------------------------------+
 | :ref:`bool<class_bool>`   | :ref:`operator ==<class_Color_operator_eq_bool>` **(** :ref:`Color<class_Color>` right **)**  |
 +---------------------------+-----------------------------------------------------------------------------------------------+
 | :ref:`float<class_float>` | :ref:`operator []<class_Color_operator_idx_float>` **(** :ref:`int<class_int>` index **)**    |
@@ -466,297 +468,297 @@ Constants
 
 .. _class_Color_constant_YELLOW_GREEN:
 
-- **ALICE_BLUE** = **Color(0.94, 0.97, 1, 1)** --- Alice blue color.
+- **ALICE_BLUE** = **Color(0.941176, 0.972549, 1, 1)** --- Alice blue color.
 
-- **ANTIQUE_WHITE** = **Color(0.98, 0.92, 0.84, 1)** --- Antique white color.
+- **ANTIQUE_WHITE** = **Color(0.980392, 0.921569, 0.843137, 1)** --- Antique white color.
 
 - **AQUA** = **Color(0, 1, 1, 1)** --- Aqua color.
 
-- **AQUAMARINE** = **Color(0.5, 1, 0.83, 1)** --- Aquamarine color.
+- **AQUAMARINE** = **Color(0.498039, 1, 0.831373, 1)** --- Aquamarine color.
 
-- **AZURE** = **Color(0.94, 1, 1, 1)** --- Azure color.
+- **AZURE** = **Color(0.941176, 1, 1, 1)** --- Azure color.
 
-- **BEIGE** = **Color(0.96, 0.96, 0.86, 1)** --- Beige color.
+- **BEIGE** = **Color(0.960784, 0.960784, 0.862745, 1)** --- Beige color.
 
-- **BISQUE** = **Color(1, 0.89, 0.77, 1)** --- Bisque color.
+- **BISQUE** = **Color(1, 0.894118, 0.768627, 1)** --- Bisque color.
 
 - **BLACK** = **Color(0, 0, 0, 1)** --- Black color.
 
-- **BLANCHED_ALMOND** = **Color(1, 0.92, 0.8, 1)** --- Blanched almond color.
+- **BLANCHED_ALMOND** = **Color(1, 0.921569, 0.803922, 1)** --- Blanched almond color.
 
 - **BLUE** = **Color(0, 0, 1, 1)** --- Blue color.
 
-- **BLUE_VIOLET** = **Color(0.54, 0.17, 0.89, 1)** --- Blue violet color.
+- **BLUE_VIOLET** = **Color(0.541176, 0.168627, 0.886275, 1)** --- Blue violet color.
 
-- **BROWN** = **Color(0.65, 0.16, 0.16, 1)** --- Brown color.
+- **BROWN** = **Color(0.647059, 0.164706, 0.164706, 1)** --- Brown color.
 
-- **BURLYWOOD** = **Color(0.87, 0.72, 0.53, 1)** --- Burlywood color.
+- **BURLYWOOD** = **Color(0.870588, 0.721569, 0.529412, 1)** --- Burlywood color.
 
-- **CADET_BLUE** = **Color(0.37, 0.62, 0.63, 1)** --- Cadet blue color.
+- **CADET_BLUE** = **Color(0.372549, 0.619608, 0.627451, 1)** --- Cadet blue color.
 
-- **CHARTREUSE** = **Color(0.5, 1, 0, 1)** --- Chartreuse color.
+- **CHARTREUSE** = **Color(0.498039, 1, 0, 1)** --- Chartreuse color.
 
-- **CHOCOLATE** = **Color(0.82, 0.41, 0.12, 1)** --- Chocolate color.
+- **CHOCOLATE** = **Color(0.823529, 0.411765, 0.117647, 1)** --- Chocolate color.
 
-- **CORAL** = **Color(1, 0.5, 0.31, 1)** --- Coral color.
+- **CORAL** = **Color(1, 0.498039, 0.313726, 1)** --- Coral color.
 
-- **CORNFLOWER_BLUE** = **Color(0.39, 0.58, 0.93, 1)** --- Cornflower blue color.
+- **CORNFLOWER_BLUE** = **Color(0.392157, 0.584314, 0.929412, 1)** --- Cornflower blue color.
 
-- **CORNSILK** = **Color(1, 0.97, 0.86, 1)** --- Cornsilk color.
+- **CORNSILK** = **Color(1, 0.972549, 0.862745, 1)** --- Cornsilk color.
 
-- **CRIMSON** = **Color(0.86, 0.08, 0.24, 1)** --- Crimson color.
+- **CRIMSON** = **Color(0.862745, 0.0784314, 0.235294, 1)** --- Crimson color.
 
 - **CYAN** = **Color(0, 1, 1, 1)** --- Cyan color.
 
-- **DARK_BLUE** = **Color(0, 0, 0.55, 1)** --- Dark blue color.
+- **DARK_BLUE** = **Color(0, 0, 0.545098, 1)** --- Dark blue color.
 
-- **DARK_CYAN** = **Color(0, 0.55, 0.55, 1)** --- Dark cyan color.
+- **DARK_CYAN** = **Color(0, 0.545098, 0.545098, 1)** --- Dark cyan color.
 
-- **DARK_GOLDENROD** = **Color(0.72, 0.53, 0.04, 1)** --- Dark goldenrod color.
+- **DARK_GOLDENROD** = **Color(0.721569, 0.52549, 0.0431373, 1)** --- Dark goldenrod color.
 
-- **DARK_GRAY** = **Color(0.66, 0.66, 0.66, 1)** --- Dark gray color.
+- **DARK_GRAY** = **Color(0.662745, 0.662745, 0.662745, 1)** --- Dark gray color.
 
-- **DARK_GREEN** = **Color(0, 0.39, 0, 1)** --- Dark green color.
+- **DARK_GREEN** = **Color(0, 0.392157, 0, 1)** --- Dark green color.
 
-- **DARK_KHAKI** = **Color(0.74, 0.72, 0.42, 1)** --- Dark khaki color.
+- **DARK_KHAKI** = **Color(0.741176, 0.717647, 0.419608, 1)** --- Dark khaki color.
 
-- **DARK_MAGENTA** = **Color(0.55, 0, 0.55, 1)** --- Dark magenta color.
+- **DARK_MAGENTA** = **Color(0.545098, 0, 0.545098, 1)** --- Dark magenta color.
 
-- **DARK_OLIVE_GREEN** = **Color(0.33, 0.42, 0.18, 1)** --- Dark olive green color.
+- **DARK_OLIVE_GREEN** = **Color(0.333333, 0.419608, 0.184314, 1)** --- Dark olive green color.
 
-- **DARK_ORANGE** = **Color(1, 0.55, 0, 1)** --- Dark orange color.
+- **DARK_ORANGE** = **Color(1, 0.54902, 0, 1)** --- Dark orange color.
 
-- **DARK_ORCHID** = **Color(0.6, 0.2, 0.8, 1)** --- Dark orchid color.
+- **DARK_ORCHID** = **Color(0.6, 0.196078, 0.8, 1)** --- Dark orchid color.
 
-- **DARK_RED** = **Color(0.55, 0, 0, 1)** --- Dark red color.
+- **DARK_RED** = **Color(0.545098, 0, 0, 1)** --- Dark red color.
 
-- **DARK_SALMON** = **Color(0.91, 0.59, 0.48, 1)** --- Dark salmon color.
+- **DARK_SALMON** = **Color(0.913725, 0.588235, 0.478431, 1)** --- Dark salmon color.
 
-- **DARK_SEA_GREEN** = **Color(0.56, 0.74, 0.56, 1)** --- Dark sea green color.
+- **DARK_SEA_GREEN** = **Color(0.560784, 0.737255, 0.560784, 1)** --- Dark sea green color.
 
-- **DARK_SLATE_BLUE** = **Color(0.28, 0.24, 0.55, 1)** --- Dark slate blue color.
+- **DARK_SLATE_BLUE** = **Color(0.282353, 0.239216, 0.545098, 1)** --- Dark slate blue color.
 
-- **DARK_SLATE_GRAY** = **Color(0.18, 0.31, 0.31, 1)** --- Dark slate gray color.
+- **DARK_SLATE_GRAY** = **Color(0.184314, 0.309804, 0.309804, 1)** --- Dark slate gray color.
 
-- **DARK_TURQUOISE** = **Color(0, 0.81, 0.82, 1)** --- Dark turquoise color.
+- **DARK_TURQUOISE** = **Color(0, 0.807843, 0.819608, 1)** --- Dark turquoise color.
 
-- **DARK_VIOLET** = **Color(0.58, 0, 0.83, 1)** --- Dark violet color.
+- **DARK_VIOLET** = **Color(0.580392, 0, 0.827451, 1)** --- Dark violet color.
 
-- **DEEP_PINK** = **Color(1, 0.08, 0.58, 1)** --- Deep pink color.
+- **DEEP_PINK** = **Color(1, 0.0784314, 0.576471, 1)** --- Deep pink color.
 
-- **DEEP_SKY_BLUE** = **Color(0, 0.75, 1, 1)** --- Deep sky blue color.
+- **DEEP_SKY_BLUE** = **Color(0, 0.74902, 1, 1)** --- Deep sky blue color.
 
-- **DIM_GRAY** = **Color(0.41, 0.41, 0.41, 1)** --- Dim gray color.
+- **DIM_GRAY** = **Color(0.411765, 0.411765, 0.411765, 1)** --- Dim gray color.
 
-- **DODGER_BLUE** = **Color(0.12, 0.56, 1, 1)** --- Dodger blue color.
+- **DODGER_BLUE** = **Color(0.117647, 0.564706, 1, 1)** --- Dodger blue color.
 
-- **FIREBRICK** = **Color(0.7, 0.13, 0.13, 1)** --- Firebrick color.
+- **FIREBRICK** = **Color(0.698039, 0.133333, 0.133333, 1)** --- Firebrick color.
 
-- **FLORAL_WHITE** = **Color(1, 0.98, 0.94, 1)** --- Floral white color.
+- **FLORAL_WHITE** = **Color(1, 0.980392, 0.941176, 1)** --- Floral white color.
 
-- **FOREST_GREEN** = **Color(0.13, 0.55, 0.13, 1)** --- Forest green color.
+- **FOREST_GREEN** = **Color(0.133333, 0.545098, 0.133333, 1)** --- Forest green color.
 
 - **FUCHSIA** = **Color(1, 0, 1, 1)** --- Fuchsia color.
 
-- **GAINSBORO** = **Color(0.86, 0.86, 0.86, 1)** --- Gainsboro color.
+- **GAINSBORO** = **Color(0.862745, 0.862745, 0.862745, 1)** --- Gainsboro color.
 
-- **GHOST_WHITE** = **Color(0.97, 0.97, 1, 1)** --- Ghost white color.
+- **GHOST_WHITE** = **Color(0.972549, 0.972549, 1, 1)** --- Ghost white color.
 
-- **GOLD** = **Color(1, 0.84, 0, 1)** --- Gold color.
+- **GOLD** = **Color(1, 0.843137, 0, 1)** --- Gold color.
 
-- **GOLDENROD** = **Color(0.85, 0.65, 0.13, 1)** --- Goldenrod color.
+- **GOLDENROD** = **Color(0.854902, 0.647059, 0.12549, 1)** --- Goldenrod color.
 
-- **GRAY** = **Color(0.75, 0.75, 0.75, 1)** --- Gray color.
+- **GRAY** = **Color(0.745098, 0.745098, 0.745098, 1)** --- Gray color.
 
 - **GREEN** = **Color(0, 1, 0, 1)** --- Green color.
 
-- **GREEN_YELLOW** = **Color(0.68, 1, 0.18, 1)** --- Green yellow color.
+- **GREEN_YELLOW** = **Color(0.678431, 1, 0.184314, 1)** --- Green yellow color.
 
-- **HONEYDEW** = **Color(0.94, 1, 0.94, 1)** --- Honeydew color.
+- **HONEYDEW** = **Color(0.941176, 1, 0.941176, 1)** --- Honeydew color.
 
-- **HOT_PINK** = **Color(1, 0.41, 0.71, 1)** --- Hot pink color.
+- **HOT_PINK** = **Color(1, 0.411765, 0.705882, 1)** --- Hot pink color.
 
-- **INDIAN_RED** = **Color(0.8, 0.36, 0.36, 1)** --- Indian red color.
+- **INDIAN_RED** = **Color(0.803922, 0.360784, 0.360784, 1)** --- Indian red color.
 
-- **INDIGO** = **Color(0.29, 0, 0.51, 1)** --- Indigo color.
+- **INDIGO** = **Color(0.294118, 0, 0.509804, 1)** --- Indigo color.
 
-- **IVORY** = **Color(1, 1, 0.94, 1)** --- Ivory color.
+- **IVORY** = **Color(1, 1, 0.941176, 1)** --- Ivory color.
 
-- **KHAKI** = **Color(0.94, 0.9, 0.55, 1)** --- Khaki color.
+- **KHAKI** = **Color(0.941176, 0.901961, 0.54902, 1)** --- Khaki color.
 
-- **LAVENDER** = **Color(0.9, 0.9, 0.98, 1)** --- Lavender color.
+- **LAVENDER** = **Color(0.901961, 0.901961, 0.980392, 1)** --- Lavender color.
 
-- **LAVENDER_BLUSH** = **Color(1, 0.94, 0.96, 1)** --- Lavender blush color.
+- **LAVENDER_BLUSH** = **Color(1, 0.941176, 0.960784, 1)** --- Lavender blush color.
 
-- **LAWN_GREEN** = **Color(0.49, 0.99, 0, 1)** --- Lawn green color.
+- **LAWN_GREEN** = **Color(0.486275, 0.988235, 0, 1)** --- Lawn green color.
 
-- **LEMON_CHIFFON** = **Color(1, 0.98, 0.8, 1)** --- Lemon chiffon color.
+- **LEMON_CHIFFON** = **Color(1, 0.980392, 0.803922, 1)** --- Lemon chiffon color.
 
-- **LIGHT_BLUE** = **Color(0.68, 0.85, 0.9, 1)** --- Light blue color.
+- **LIGHT_BLUE** = **Color(0.678431, 0.847059, 0.901961, 1)** --- Light blue color.
 
-- **LIGHT_CORAL** = **Color(0.94, 0.5, 0.5, 1)** --- Light coral color.
+- **LIGHT_CORAL** = **Color(0.941176, 0.501961, 0.501961, 1)** --- Light coral color.
 
-- **LIGHT_CYAN** = **Color(0.88, 1, 1, 1)** --- Light cyan color.
+- **LIGHT_CYAN** = **Color(0.878431, 1, 1, 1)** --- Light cyan color.
 
-- **LIGHT_GOLDENROD** = **Color(0.98, 0.98, 0.82, 1)** --- Light goldenrod color.
+- **LIGHT_GOLDENROD** = **Color(0.980392, 0.980392, 0.823529, 1)** --- Light goldenrod color.
 
-- **LIGHT_GRAY** = **Color(0.83, 0.83, 0.83, 1)** --- Light gray color.
+- **LIGHT_GRAY** = **Color(0.827451, 0.827451, 0.827451, 1)** --- Light gray color.
 
-- **LIGHT_GREEN** = **Color(0.56, 0.93, 0.56, 1)** --- Light green color.
+- **LIGHT_GREEN** = **Color(0.564706, 0.933333, 0.564706, 1)** --- Light green color.
 
-- **LIGHT_PINK** = **Color(1, 0.71, 0.76, 1)** --- Light pink color.
+- **LIGHT_PINK** = **Color(1, 0.713726, 0.756863, 1)** --- Light pink color.
 
-- **LIGHT_SALMON** = **Color(1, 0.63, 0.48, 1)** --- Light salmon color.
+- **LIGHT_SALMON** = **Color(1, 0.627451, 0.478431, 1)** --- Light salmon color.
 
-- **LIGHT_SEA_GREEN** = **Color(0.13, 0.7, 0.67, 1)** --- Light sea green color.
+- **LIGHT_SEA_GREEN** = **Color(0.12549, 0.698039, 0.666667, 1)** --- Light sea green color.
 
-- **LIGHT_SKY_BLUE** = **Color(0.53, 0.81, 0.98, 1)** --- Light sky blue color.
+- **LIGHT_SKY_BLUE** = **Color(0.529412, 0.807843, 0.980392, 1)** --- Light sky blue color.
 
-- **LIGHT_SLATE_GRAY** = **Color(0.47, 0.53, 0.6, 1)** --- Light slate gray color.
+- **LIGHT_SLATE_GRAY** = **Color(0.466667, 0.533333, 0.6, 1)** --- Light slate gray color.
 
-- **LIGHT_STEEL_BLUE** = **Color(0.69, 0.77, 0.87, 1)** --- Light steel blue color.
+- **LIGHT_STEEL_BLUE** = **Color(0.690196, 0.768627, 0.870588, 1)** --- Light steel blue color.
 
-- **LIGHT_YELLOW** = **Color(1, 1, 0.88, 1)** --- Light yellow color.
+- **LIGHT_YELLOW** = **Color(1, 1, 0.878431, 1)** --- Light yellow color.
 
 - **LIME** = **Color(0, 1, 0, 1)** --- Lime color.
 
-- **LIME_GREEN** = **Color(0.2, 0.8, 0.2, 1)** --- Lime green color.
+- **LIME_GREEN** = **Color(0.196078, 0.803922, 0.196078, 1)** --- Lime green color.
 
-- **LINEN** = **Color(0.98, 0.94, 0.9, 1)** --- Linen color.
+- **LINEN** = **Color(0.980392, 0.941176, 0.901961, 1)** --- Linen color.
 
 - **MAGENTA** = **Color(1, 0, 1, 1)** --- Magenta color.
 
-- **MAROON** = **Color(0.69, 0.19, 0.38, 1)** --- Maroon color.
+- **MAROON** = **Color(0.690196, 0.188235, 0.376471, 1)** --- Maroon color.
 
-- **MEDIUM_AQUAMARINE** = **Color(0.4, 0.8, 0.67, 1)** --- Medium aquamarine color.
+- **MEDIUM_AQUAMARINE** = **Color(0.4, 0.803922, 0.666667, 1)** --- Medium aquamarine color.
 
-- **MEDIUM_BLUE** = **Color(0, 0, 0.8, 1)** --- Medium blue color.
+- **MEDIUM_BLUE** = **Color(0, 0, 0.803922, 1)** --- Medium blue color.
 
-- **MEDIUM_ORCHID** = **Color(0.73, 0.33, 0.83, 1)** --- Medium orchid color.
+- **MEDIUM_ORCHID** = **Color(0.729412, 0.333333, 0.827451, 1)** --- Medium orchid color.
 
-- **MEDIUM_PURPLE** = **Color(0.58, 0.44, 0.86, 1)** --- Medium purple color.
+- **MEDIUM_PURPLE** = **Color(0.576471, 0.439216, 0.858824, 1)** --- Medium purple color.
 
-- **MEDIUM_SEA_GREEN** = **Color(0.24, 0.7, 0.44, 1)** --- Medium sea green color.
+- **MEDIUM_SEA_GREEN** = **Color(0.235294, 0.701961, 0.443137, 1)** --- Medium sea green color.
 
-- **MEDIUM_SLATE_BLUE** = **Color(0.48, 0.41, 0.93, 1)** --- Medium slate blue color.
+- **MEDIUM_SLATE_BLUE** = **Color(0.482353, 0.407843, 0.933333, 1)** --- Medium slate blue color.
 
-- **MEDIUM_SPRING_GREEN** = **Color(0, 0.98, 0.6, 1)** --- Medium spring green color.
+- **MEDIUM_SPRING_GREEN** = **Color(0, 0.980392, 0.603922, 1)** --- Medium spring green color.
 
-- **MEDIUM_TURQUOISE** = **Color(0.28, 0.82, 0.8, 1)** --- Medium turquoise color.
+- **MEDIUM_TURQUOISE** = **Color(0.282353, 0.819608, 0.8, 1)** --- Medium turquoise color.
 
-- **MEDIUM_VIOLET_RED** = **Color(0.78, 0.08, 0.52, 1)** --- Medium violet red color.
+- **MEDIUM_VIOLET_RED** = **Color(0.780392, 0.0823529, 0.521569, 1)** --- Medium violet red color.
 
-- **MIDNIGHT_BLUE** = **Color(0.1, 0.1, 0.44, 1)** --- Midnight blue color.
+- **MIDNIGHT_BLUE** = **Color(0.0980392, 0.0980392, 0.439216, 1)** --- Midnight blue color.
 
-- **MINT_CREAM** = **Color(0.96, 1, 0.98, 1)** --- Mint cream color.
+- **MINT_CREAM** = **Color(0.960784, 1, 0.980392, 1)** --- Mint cream color.
 
-- **MISTY_ROSE** = **Color(1, 0.89, 0.88, 1)** --- Misty rose color.
+- **MISTY_ROSE** = **Color(1, 0.894118, 0.882353, 1)** --- Misty rose color.
 
-- **MOCCASIN** = **Color(1, 0.89, 0.71, 1)** --- Moccasin color.
+- **MOCCASIN** = **Color(1, 0.894118, 0.709804, 1)** --- Moccasin color.
 
-- **NAVAJO_WHITE** = **Color(1, 0.87, 0.68, 1)** --- Navajo white color.
+- **NAVAJO_WHITE** = **Color(1, 0.870588, 0.678431, 1)** --- Navajo white color.
 
-- **NAVY_BLUE** = **Color(0, 0, 0.5, 1)** --- Navy blue color.
+- **NAVY_BLUE** = **Color(0, 0, 0.501961, 1)** --- Navy blue color.
 
-- **OLD_LACE** = **Color(0.99, 0.96, 0.9, 1)** --- Old lace color.
+- **OLD_LACE** = **Color(0.992157, 0.960784, 0.901961, 1)** --- Old lace color.
 
-- **OLIVE** = **Color(0.5, 0.5, 0, 1)** --- Olive color.
+- **OLIVE** = **Color(0.501961, 0.501961, 0, 1)** --- Olive color.
 
-- **OLIVE_DRAB** = **Color(0.42, 0.56, 0.14, 1)** --- Olive drab color.
+- **OLIVE_DRAB** = **Color(0.419608, 0.556863, 0.137255, 1)** --- Olive drab color.
 
-- **ORANGE** = **Color(1, 0.65, 0, 1)** --- Orange color.
+- **ORANGE** = **Color(1, 0.647059, 0, 1)** --- Orange color.
 
-- **ORANGE_RED** = **Color(1, 0.27, 0, 1)** --- Orange red color.
+- **ORANGE_RED** = **Color(1, 0.270588, 0, 1)** --- Orange red color.
 
-- **ORCHID** = **Color(0.85, 0.44, 0.84, 1)** --- Orchid color.
+- **ORCHID** = **Color(0.854902, 0.439216, 0.839216, 1)** --- Orchid color.
 
-- **PALE_GOLDENROD** = **Color(0.93, 0.91, 0.67, 1)** --- Pale goldenrod color.
+- **PALE_GOLDENROD** = **Color(0.933333, 0.909804, 0.666667, 1)** --- Pale goldenrod color.
 
-- **PALE_GREEN** = **Color(0.6, 0.98, 0.6, 1)** --- Pale green color.
+- **PALE_GREEN** = **Color(0.596078, 0.984314, 0.596078, 1)** --- Pale green color.
 
-- **PALE_TURQUOISE** = **Color(0.69, 0.93, 0.93, 1)** --- Pale turquoise color.
+- **PALE_TURQUOISE** = **Color(0.686275, 0.933333, 0.933333, 1)** --- Pale turquoise color.
 
-- **PALE_VIOLET_RED** = **Color(0.86, 0.44, 0.58, 1)** --- Pale violet red color.
+- **PALE_VIOLET_RED** = **Color(0.858824, 0.439216, 0.576471, 1)** --- Pale violet red color.
 
-- **PAPAYA_WHIP** = **Color(1, 0.94, 0.84, 1)** --- Papaya whip color.
+- **PAPAYA_WHIP** = **Color(1, 0.937255, 0.835294, 1)** --- Papaya whip color.
 
-- **PEACH_PUFF** = **Color(1, 0.85, 0.73, 1)** --- Peach puff color.
+- **PEACH_PUFF** = **Color(1, 0.854902, 0.72549, 1)** --- Peach puff color.
 
-- **PERU** = **Color(0.8, 0.52, 0.25, 1)** --- Peru color.
+- **PERU** = **Color(0.803922, 0.521569, 0.247059, 1)** --- Peru color.
 
-- **PINK** = **Color(1, 0.75, 0.8, 1)** --- Pink color.
+- **PINK** = **Color(1, 0.752941, 0.796078, 1)** --- Pink color.
 
-- **PLUM** = **Color(0.87, 0.63, 0.87, 1)** --- Plum color.
+- **PLUM** = **Color(0.866667, 0.627451, 0.866667, 1)** --- Plum color.
 
-- **POWDER_BLUE** = **Color(0.69, 0.88, 0.9, 1)** --- Powder blue color.
+- **POWDER_BLUE** = **Color(0.690196, 0.878431, 0.901961, 1)** --- Powder blue color.
 
-- **PURPLE** = **Color(0.63, 0.13, 0.94, 1)** --- Purple color.
+- **PURPLE** = **Color(0.627451, 0.12549, 0.941176, 1)** --- Purple color.
 
 - **REBECCA_PURPLE** = **Color(0.4, 0.2, 0.6, 1)** --- Rebecca purple color.
 
 - **RED** = **Color(1, 0, 0, 1)** --- Red color.
 
-- **ROSY_BROWN** = **Color(0.74, 0.56, 0.56, 1)** --- Rosy brown color.
+- **ROSY_BROWN** = **Color(0.737255, 0.560784, 0.560784, 1)** --- Rosy brown color.
 
-- **ROYAL_BLUE** = **Color(0.25, 0.41, 0.88, 1)** --- Royal blue color.
+- **ROYAL_BLUE** = **Color(0.254902, 0.411765, 0.882353, 1)** --- Royal blue color.
 
-- **SADDLE_BROWN** = **Color(0.55, 0.27, 0.07, 1)** --- Saddle brown color.
+- **SADDLE_BROWN** = **Color(0.545098, 0.270588, 0.0745098, 1)** --- Saddle brown color.
 
-- **SALMON** = **Color(0.98, 0.5, 0.45, 1)** --- Salmon color.
+- **SALMON** = **Color(0.980392, 0.501961, 0.447059, 1)** --- Salmon color.
 
-- **SANDY_BROWN** = **Color(0.96, 0.64, 0.38, 1)** --- Sandy brown color.
+- **SANDY_BROWN** = **Color(0.956863, 0.643137, 0.376471, 1)** --- Sandy brown color.
 
-- **SEA_GREEN** = **Color(0.18, 0.55, 0.34, 1)** --- Sea green color.
+- **SEA_GREEN** = **Color(0.180392, 0.545098, 0.341176, 1)** --- Sea green color.
 
-- **SEASHELL** = **Color(1, 0.96, 0.93, 1)** --- Seashell color.
+- **SEASHELL** = **Color(1, 0.960784, 0.933333, 1)** --- Seashell color.
 
-- **SIENNA** = **Color(0.63, 0.32, 0.18, 1)** --- Sienna color.
+- **SIENNA** = **Color(0.627451, 0.321569, 0.176471, 1)** --- Sienna color.
 
-- **SILVER** = **Color(0.75, 0.75, 0.75, 1)** --- Silver color.
+- **SILVER** = **Color(0.752941, 0.752941, 0.752941, 1)** --- Silver color.
 
-- **SKY_BLUE** = **Color(0.53, 0.81, 0.92, 1)** --- Sky blue color.
+- **SKY_BLUE** = **Color(0.529412, 0.807843, 0.921569, 1)** --- Sky blue color.
 
-- **SLATE_BLUE** = **Color(0.42, 0.35, 0.8, 1)** --- Slate blue color.
+- **SLATE_BLUE** = **Color(0.415686, 0.352941, 0.803922, 1)** --- Slate blue color.
 
-- **SLATE_GRAY** = **Color(0.44, 0.5, 0.56, 1)** --- Slate gray color.
+- **SLATE_GRAY** = **Color(0.439216, 0.501961, 0.564706, 1)** --- Slate gray color.
 
-- **SNOW** = **Color(1, 0.98, 0.98, 1)** --- Snow color.
+- **SNOW** = **Color(1, 0.980392, 0.980392, 1)** --- Snow color.
 
-- **SPRING_GREEN** = **Color(0, 1, 0.5, 1)** --- Spring green color.
+- **SPRING_GREEN** = **Color(0, 1, 0.498039, 1)** --- Spring green color.
 
-- **STEEL_BLUE** = **Color(0.27, 0.51, 0.71, 1)** --- Steel blue color.
+- **STEEL_BLUE** = **Color(0.27451, 0.509804, 0.705882, 1)** --- Steel blue color.
 
-- **TAN** = **Color(0.82, 0.71, 0.55, 1)** --- Tan color.
+- **TAN** = **Color(0.823529, 0.705882, 0.54902, 1)** --- Tan color.
 
-- **TEAL** = **Color(0, 0.5, 0.5, 1)** --- Teal color.
+- **TEAL** = **Color(0, 0.501961, 0.501961, 1)** --- Teal color.
 
-- **THISTLE** = **Color(0.85, 0.75, 0.85, 1)** --- Thistle color.
+- **THISTLE** = **Color(0.847059, 0.74902, 0.847059, 1)** --- Thistle color.
 
-- **TOMATO** = **Color(1, 0.39, 0.28, 1)** --- Tomato color.
+- **TOMATO** = **Color(1, 0.388235, 0.278431, 1)** --- Tomato color.
 
 - **TRANSPARENT** = **Color(1, 1, 1, 0)** --- Transparent color (white with zero alpha).
 
-- **TURQUOISE** = **Color(0.25, 0.88, 0.82, 1)** --- Turquoise color.
+- **TURQUOISE** = **Color(0.25098, 0.878431, 0.815686, 1)** --- Turquoise color.
 
-- **VIOLET** = **Color(0.93, 0.51, 0.93, 1)** --- Violet color.
+- **VIOLET** = **Color(0.933333, 0.509804, 0.933333, 1)** --- Violet color.
 
-- **WEB_GRAY** = **Color(0.5, 0.5, 0.5, 1)** --- Web gray color.
+- **WEB_GRAY** = **Color(0.501961, 0.501961, 0.501961, 1)** --- Web gray color.
 
-- **WEB_GREEN** = **Color(0, 0.5, 0, 1)** --- Web green color.
+- **WEB_GREEN** = **Color(0, 0.501961, 0, 1)** --- Web green color.
 
-- **WEB_MAROON** = **Color(0.5, 0, 0, 1)** --- Web maroon color.
+- **WEB_MAROON** = **Color(0.501961, 0, 0, 1)** --- Web maroon color.
 
-- **WEB_PURPLE** = **Color(0.5, 0, 0.5, 1)** --- Web purple color.
+- **WEB_PURPLE** = **Color(0.501961, 0, 0.501961, 1)** --- Web purple color.
 
-- **WHEAT** = **Color(0.96, 0.87, 0.7, 1)** --- Wheat color.
+- **WHEAT** = **Color(0.960784, 0.870588, 0.701961, 1)** --- Wheat color.
 
 - **WHITE** = **Color(1, 1, 1, 1)** --- White color.
 
-- **WHITE_SMOKE** = **Color(0.96, 0.96, 0.96, 1)** --- White smoke color.
+- **WHITE_SMOKE** = **Color(0.960784, 0.960784, 0.960784, 1)** --- White smoke color.
 
 - **YELLOW** = **Color(1, 1, 0, 1)** --- Yellow color.
 
-- **YELLOW_GREEN** = **Color(0.6, 0.8, 0.2, 1)** --- Yellow green color.
+- **YELLOW_GREEN** = **Color(0.603922, 0.803922, 0.196078, 1)** --- Yellow green color.
 
 Property Descriptions
 ---------------------
@@ -1051,11 +1053,32 @@ Constructs a color from an `HSV profile <https://en.wikipedia.org/wiki/HSL_and_H
 
  .. code-tab:: gdscript
 
-    var c = Color.from_hsv(0.58, 0.5, 0.79, 0.8)
+    var color = Color.from_hsv(0.58, 0.5, 0.79, 0.8)
+
+ .. code-tab:: csharp
+
+    var color = Color.FromHsv(0.58f, 0.5f, 0.79f, 0.8f);
+
+
+
+----
+
+.. _class_Color_method_from_ok_hsl:
+
+- :ref:`Color<class_Color>` **from_ok_hsl** **(** :ref:`float<class_float>` h, :ref:`float<class_float>` s, :ref:`float<class_float>` l, :ref:`float<class_float>` alpha=1.0 **)** |static|
+
+Constructs a color from an `OK HSL profile <https://bottosson.github.io/posts/colorpicker/>`__. ``h`` (hue), ``s`` (saturation), and ``v`` (value) are typically between 0 and 1.
+
+
+.. tabs::
+
+ .. code-tab:: gdscript
+
+    var color = Color.from_ok_hsl(0.58, 0.5, 0.79, 0.8)
 
  .. code-tab:: csharp
 
-    var c = Color.FromHsv(0.58f, 0.5f, 0.79f, 0.8f);
+    var color = Color.FromOkHsl(0.58f, 0.5f, 0.79f, 0.8f);
 
 
 
@@ -1081,6 +1104,8 @@ Returns the luminance of the color in the ``[0.0, 1.0]`` range.
 
 This is useful when determining light or dark color. Colors with a luminance smaller than 0.5 can be generally considered dark.
 
+\ **Note:** :ref:`get_luminance<class_Color_method_get_luminance>` relies on the colour being in the linear color space to return an accurate relative luminance value. If the color is in the sRGB color space, use :ref:`srgb_to_linear<class_Color_method_srgb_to_linear>` to convert it to the linear color space first.
+
 ----
 
 .. _class_Color_method_get_named_color:
@@ -1252,6 +1277,22 @@ Returns a new color resulting from making this color lighter by the specified pe
 
 
 
+----
+
+.. _class_Color_method_linear_to_srgb:
+
+- :ref:`Color<class_Color>` **linear_to_srgb** **(** **)** |const|
+
+Returns the color converted to the `sRGB <https://en.wikipedia.org/wiki/SRGB>`__ color space. This assumes the original color is in the linear color space. See also :ref:`srgb_to_linear<class_Color_method_srgb_to_linear>` which performs the opposite operation.
+
+----
+
+.. _class_Color_method_srgb_to_linear:
+
+- :ref:`Color<class_Color>` **srgb_to_linear** **(** **)** |const|
+
+Returns the color converted to the linear color space. This assumes the original color is in the sRGB color space. See also :ref:`linear_to_srgb<class_Color_method_linear_to_srgb>` which performs the opposite operation.
+
 ----
 
 .. _class_Color_method_to_abgr32:
@@ -1422,10 +1463,6 @@ Operator Descriptions
 
 .. _class_Color_operator_neq_bool:
 
-- :ref:`bool<class_bool>` **operator !=** **(** **)**
-
-----
-
 - :ref:`bool<class_bool>` **operator !=** **(** :ref:`Color<class_Color>` right **)**
 
 Returns ``true`` if the colors are not equal.
@@ -1492,10 +1529,6 @@ Divides each component of the ``Color`` by the given :ref:`int<class_int>`.
 
 .. _class_Color_operator_eq_bool:
 
-- :ref:`bool<class_bool>` **operator ==** **(** **)**
-
-----
-
 - :ref:`bool<class_bool>` **operator ==** **(** :ref:`Color<class_Color>` right **)**
 
 Returns ``true`` if the colors are exactly equal.

+ 4 - 0
classes/class_colorpicker.rst

@@ -122,6 +122,8 @@ Enumerations
 
 .. _class_ColorPicker_constant_SHAPE_VHS_CIRCLE:
 
+.. _class_ColorPicker_constant_SHAPE_OKHSL_CIRCLE:
+
 enum **PickerShapeType**:
 
 - **SHAPE_HSV_RECTANGLE** = **0** --- HSV Color Model rectangle color space.
@@ -130,6 +132,8 @@ enum **PickerShapeType**:
 
 - **SHAPE_VHS_CIRCLE** = **2** --- HSV Color Model circle color space. Use Saturation as a radius.
 
+- **SHAPE_OKHSL_CIRCLE** = **3** --- HSL OK Color Model circle color space.
+
 Property Descriptions
 ---------------------
 

+ 3 - 3
classes/class_colorpickerbutton.rst

@@ -65,7 +65,7 @@ Theme Properties
 +-----------------------------------+-------------------------------------------------------------------------------------+-------------------------------+
 | :ref:`Color<class_Color>`         | :ref:`font_pressed_color<class_ColorPickerButton_theme_color_font_pressed_color>`   | ``Color(0.8, 0.8, 0.8, 1)``   |
 +-----------------------------------+-------------------------------------------------------------------------------------+-------------------------------+
-| :ref:`int<class_int>`             | :ref:`hseparation<class_ColorPickerButton_theme_constant_hseparation>`              | ``2``                         |
+| :ref:`int<class_int>`             | :ref:`h_separation<class_ColorPickerButton_theme_constant_h_separation>`            | ``2``                         |
 +-----------------------------------+-------------------------------------------------------------------------------------+-------------------------------+
 | :ref:`int<class_int>`             | :ref:`outline_size<class_ColorPickerButton_theme_constant_outline_size>`            | ``0``                         |
 +-----------------------------------+-------------------------------------------------------------------------------------+-------------------------------+
@@ -240,9 +240,9 @@ Text :ref:`Color<class_Color>` used when the ``ColorPickerButton`` is being pres
 
 ----
 
-.. _class_ColorPickerButton_theme_constant_hseparation:
+.. _class_ColorPickerButton_theme_constant_h_separation:
 
-- :ref:`int<class_int>` **hseparation**
+- :ref:`int<class_int>` **h_separation**
 
 +-----------+-------+
 | *Default* | ``2`` |

+ 5 - 3
classes/class_concavepolygonshape2d.rst

@@ -11,14 +11,16 @@ ConcavePolygonShape2D
 
 **Inherits:** :ref:`Shape2D<class_Shape2D>` **<** :ref:`Resource<class_Resource>` **<** :ref:`RefCounted<class_RefCounted>` **<** :ref:`Object<class_Object>`
 
-Concave polygon 2D shape resource for physics.
+Concave polygon shape resource for 2D physics.
 
 Description
 -----------
 
-Concave polygon 2D shape resource for physics. It is made out of segments and is optimal for complex polygonal concave collisions. However, it is not advised to use for :ref:`RigidDynamicBody2D<class_RigidDynamicBody2D>` nodes. A CollisionPolygon2D in convex decomposition mode (solids) or several convex objects are advised for that instead. Otherwise, a concave polygon 2D shape is better for static collisions.
+2D concave polygon shape to be added as a *direct* child of a :ref:`PhysicsBody2D<class_PhysicsBody2D>` or :ref:`Area2D<class_Area2D>` using a :ref:`CollisionShape2D<class_CollisionShape2D>` node. It is made out of segments and is optimal for complex polygonal concave collisions. However, it is not advised to use for :ref:`RigidDynamicBody2D<class_RigidDynamicBody2D>` nodes. A CollisionPolygon2D in convex decomposition mode (solids) or several convex objects are advised for that instead. Otherwise, a concave polygon 2D shape is better for static collisions.
 
-The main difference between a :ref:`ConvexPolygonShape2D<class_ConvexPolygonShape2D>` and a ``ConcavePolygonShape2D`` is that a concave polygon assumes it is concave and uses a more complex method of collision detection, and a convex one forces itself to be convex in order to speed up collision detection.
+The main difference between a :ref:`ConvexPolygonShape2D<class_ConvexPolygonShape2D>` and a ``ConcavePolygonShape2D`` is that a concave polygon assumes it is concave and uses a more complex method of collision detection, and a convex one forces itself to be convex to speed up collision detection.
+
+\ **Performance:** Due to its complexity, ``ConcavePolygonShape2D`` is the slowest collision shape to check collisions against. Its use should generally be limited to level geometry. For convex geometry, using :ref:`ConvexPolygonShape2D<class_ConvexPolygonShape2D>` will perform better. For dynamic physics bodies that need concave collision, several :ref:`ConvexPolygonShape2D<class_ConvexPolygonShape2D>`\ s can be used to represent its collision by using convex decomposition; see :ref:`ConvexPolygonShape2D<class_ConvexPolygonShape2D>`'s documentation for instructions. However, consider using primitive collision shapes such as :ref:`CircleShape2D<class_CircleShape2D>` or :ref:`RectangleShape2D<class_RectangleShape2D>` first.
 
 Properties
 ----------

+ 4 - 2
classes/class_concavepolygonshape3d.rst

@@ -11,15 +11,17 @@ ConcavePolygonShape3D
 
 **Inherits:** :ref:`Shape3D<class_Shape3D>` **<** :ref:`Resource<class_Resource>` **<** :ref:`RefCounted<class_RefCounted>` **<** :ref:`Object<class_Object>`
 
-Concave polygon shape.
+Concave polygon shape resource (also called "trimesh") for 3D physics.
 
 Description
 -----------
 
-Concave polygon shape resource, which can be set into a :ref:`PhysicsBody3D<class_PhysicsBody3D>` or area. This shape is created by feeding a list of triangles.
+3D concave polygon shape resource (also called "trimesh") to be added as a *direct* child of a :ref:`PhysicsBody3D<class_PhysicsBody3D>` or :ref:`Area3D<class_Area3D>` using a :ref:`CollisionShape3D<class_CollisionShape3D>` node. This shape is created by feeding a list of triangles. Despite its name, ``ConcavePolygonShape3D`` can also store convex polygon shapes. However, unlike :ref:`ConvexPolygonShape3D<class_ConvexPolygonShape3D>`, ``ConcavePolygonShape3D`` is *not* limited to storing convex shapes exclusively.
 
 \ **Note:** When used for collision, ``ConcavePolygonShape3D`` is intended to work with static :ref:`PhysicsBody3D<class_PhysicsBody3D>` nodes like :ref:`StaticBody3D<class_StaticBody3D>` and will not work with :ref:`CharacterBody3D<class_CharacterBody3D>` or :ref:`RigidDynamicBody3D<class_RigidDynamicBody3D>` with a mode other than Static.
 
+\ **Performance:** Due to its complexity, ``ConcavePolygonShape3D`` is the slowest collision shape to check collisions against. Its use should generally be limited to level geometry. For convex geometry, using :ref:`ConvexPolygonShape3D<class_ConvexPolygonShape3D>` will perform better. For dynamic physics bodies that need concave collision, several :ref:`ConvexPolygonShape3D<class_ConvexPolygonShape3D>`\ s can be used to represent its collision by using convex decomposition; see :ref:`ConvexPolygonShape3D<class_ConvexPolygonShape3D>`'s documentation for instructions. However, consider using primitive collision shapes such as :ref:`SphereShape3D<class_SphereShape3D>` or :ref:`BoxShape3D<class_BoxShape3D>` first.
+
 Tutorials
 ---------
 

+ 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>`
+
 Properties
 ----------
 

+ 120 - 114
classes/class_control.rst

@@ -52,77 +52,79 @@ Tutorials
 Properties
 ----------
 
-+------------------------------------------------------+--------------------------------------------------------------------------------------+-------------------+
-| :ref:`float<class_float>`                            | :ref:`anchor_bottom<class_Control_property_anchor_bottom>`                           | ``0.0``           |
-+------------------------------------------------------+--------------------------------------------------------------------------------------+-------------------+
-| :ref:`float<class_float>`                            | :ref:`anchor_left<class_Control_property_anchor_left>`                               | ``0.0``           |
-+------------------------------------------------------+--------------------------------------------------------------------------------------+-------------------+
-| :ref:`float<class_float>`                            | :ref:`anchor_right<class_Control_property_anchor_right>`                             | ``0.0``           |
-+------------------------------------------------------+--------------------------------------------------------------------------------------+-------------------+
-| :ref:`float<class_float>`                            | :ref:`anchor_top<class_Control_property_anchor_top>`                                 | ``0.0``           |
-+------------------------------------------------------+--------------------------------------------------------------------------------------+-------------------+
-| :ref:`bool<class_bool>`                              | :ref:`auto_translate<class_Control_property_auto_translate>`                         | ``true``          |
-+------------------------------------------------------+--------------------------------------------------------------------------------------+-------------------+
-| :ref:`bool<class_bool>`                              | :ref:`clip_contents<class_Control_property_clip_contents>`                           | ``false``         |
-+------------------------------------------------------+--------------------------------------------------------------------------------------+-------------------+
-| :ref:`FocusMode<enum_Control_FocusMode>`             | :ref:`focus_mode<class_Control_property_focus_mode>`                                 | ``0``             |
-+------------------------------------------------------+--------------------------------------------------------------------------------------+-------------------+
-| :ref:`NodePath<class_NodePath>`                      | :ref:`focus_neighbor_bottom<class_Control_property_focus_neighbor_bottom>`           | ``NodePath("")``  |
-+------------------------------------------------------+--------------------------------------------------------------------------------------+-------------------+
-| :ref:`NodePath<class_NodePath>`                      | :ref:`focus_neighbor_left<class_Control_property_focus_neighbor_left>`               | ``NodePath("")``  |
-+------------------------------------------------------+--------------------------------------------------------------------------------------+-------------------+
-| :ref:`NodePath<class_NodePath>`                      | :ref:`focus_neighbor_right<class_Control_property_focus_neighbor_right>`             | ``NodePath("")``  |
-+------------------------------------------------------+--------------------------------------------------------------------------------------+-------------------+
-| :ref:`NodePath<class_NodePath>`                      | :ref:`focus_neighbor_top<class_Control_property_focus_neighbor_top>`                 | ``NodePath("")``  |
-+------------------------------------------------------+--------------------------------------------------------------------------------------+-------------------+
-| :ref:`NodePath<class_NodePath>`                      | :ref:`focus_next<class_Control_property_focus_next>`                                 | ``NodePath("")``  |
-+------------------------------------------------------+--------------------------------------------------------------------------------------+-------------------+
-| :ref:`NodePath<class_NodePath>`                      | :ref:`focus_previous<class_Control_property_focus_previous>`                         | ``NodePath("")``  |
-+------------------------------------------------------+--------------------------------------------------------------------------------------+-------------------+
-| :ref:`Vector2<class_Vector2>`                        | :ref:`global_position<class_Control_property_global_position>`                       |                   |
-+------------------------------------------------------+--------------------------------------------------------------------------------------+-------------------+
-| :ref:`GrowDirection<enum_Control_GrowDirection>`     | :ref:`grow_horizontal<class_Control_property_grow_horizontal>`                       | ``1``             |
-+------------------------------------------------------+--------------------------------------------------------------------------------------+-------------------+
-| :ref:`GrowDirection<enum_Control_GrowDirection>`     | :ref:`grow_vertical<class_Control_property_grow_vertical>`                           | ``1``             |
-+------------------------------------------------------+--------------------------------------------------------------------------------------+-------------------+
-| :ref:`String<class_String>`                          | :ref:`hint_tooltip<class_Control_property_hint_tooltip>`                             | ``""``            |
-+------------------------------------------------------+--------------------------------------------------------------------------------------+-------------------+
-| :ref:`LayoutDirection<enum_Control_LayoutDirection>` | :ref:`layout_direction<class_Control_property_layout_direction>`                     | ``0``             |
-+------------------------------------------------------+--------------------------------------------------------------------------------------+-------------------+
-| :ref:`Vector2<class_Vector2>`                        | :ref:`minimum_size<class_Control_property_minimum_size>`                             | ``Vector2(0, 0)`` |
-+------------------------------------------------------+--------------------------------------------------------------------------------------+-------------------+
-| :ref:`CursorShape<enum_Control_CursorShape>`         | :ref:`mouse_default_cursor_shape<class_Control_property_mouse_default_cursor_shape>` | ``0``             |
-+------------------------------------------------------+--------------------------------------------------------------------------------------+-------------------+
-| :ref:`MouseFilter<enum_Control_MouseFilter>`         | :ref:`mouse_filter<class_Control_property_mouse_filter>`                             | ``0``             |
-+------------------------------------------------------+--------------------------------------------------------------------------------------+-------------------+
-| :ref:`float<class_float>`                            | :ref:`offset_bottom<class_Control_property_offset_bottom>`                           | ``0.0``           |
-+------------------------------------------------------+--------------------------------------------------------------------------------------+-------------------+
-| :ref:`float<class_float>`                            | :ref:`offset_left<class_Control_property_offset_left>`                               | ``0.0``           |
-+------------------------------------------------------+--------------------------------------------------------------------------------------+-------------------+
-| :ref:`float<class_float>`                            | :ref:`offset_right<class_Control_property_offset_right>`                             | ``0.0``           |
-+------------------------------------------------------+--------------------------------------------------------------------------------------+-------------------+
-| :ref:`float<class_float>`                            | :ref:`offset_top<class_Control_property_offset_top>`                                 | ``0.0``           |
-+------------------------------------------------------+--------------------------------------------------------------------------------------+-------------------+
-| :ref:`Vector2<class_Vector2>`                        | :ref:`pivot_offset<class_Control_property_pivot_offset>`                             | ``Vector2(0, 0)`` |
-+------------------------------------------------------+--------------------------------------------------------------------------------------+-------------------+
-| :ref:`Vector2<class_Vector2>`                        | :ref:`position<class_Control_property_position>`                                     | ``Vector2(0, 0)`` |
-+------------------------------------------------------+--------------------------------------------------------------------------------------+-------------------+
-| :ref:`float<class_float>`                            | :ref:`rotation<class_Control_property_rotation>`                                     | ``0.0``           |
-+------------------------------------------------------+--------------------------------------------------------------------------------------+-------------------+
-| :ref:`Vector2<class_Vector2>`                        | :ref:`scale<class_Control_property_scale>`                                           | ``Vector2(1, 1)`` |
-+------------------------------------------------------+--------------------------------------------------------------------------------------+-------------------+
-| :ref:`Vector2<class_Vector2>`                        | :ref:`size<class_Control_property_size>`                                             | ``Vector2(0, 0)`` |
-+------------------------------------------------------+--------------------------------------------------------------------------------------+-------------------+
-| :ref:`int<class_int>`                                | :ref:`size_flags_horizontal<class_Control_property_size_flags_horizontal>`           | ``1``             |
-+------------------------------------------------------+--------------------------------------------------------------------------------------+-------------------+
-| :ref:`float<class_float>`                            | :ref:`size_flags_stretch_ratio<class_Control_property_size_flags_stretch_ratio>`     | ``1.0``           |
-+------------------------------------------------------+--------------------------------------------------------------------------------------+-------------------+
-| :ref:`int<class_int>`                                | :ref:`size_flags_vertical<class_Control_property_size_flags_vertical>`               | ``1``             |
-+------------------------------------------------------+--------------------------------------------------------------------------------------+-------------------+
-| :ref:`Theme<class_Theme>`                            | :ref:`theme<class_Control_property_theme>`                                           |                   |
-+------------------------------------------------------+--------------------------------------------------------------------------------------+-------------------+
-| :ref:`StringName<class_StringName>`                  | :ref:`theme_type_variation<class_Control_property_theme_type_variation>`             | ``&""``           |
-+------------------------------------------------------+--------------------------------------------------------------------------------------+-------------------+
++------------------------------------------------------+----------------------------------------------------------------------------------------------+-------------------+
+| :ref:`float<class_float>`                            | :ref:`anchor_bottom<class_Control_property_anchor_bottom>`                                   | ``0.0``           |
++------------------------------------------------------+----------------------------------------------------------------------------------------------+-------------------+
+| :ref:`float<class_float>`                            | :ref:`anchor_left<class_Control_property_anchor_left>`                                       | ``0.0``           |
++------------------------------------------------------+----------------------------------------------------------------------------------------------+-------------------+
+| :ref:`float<class_float>`                            | :ref:`anchor_right<class_Control_property_anchor_right>`                                     | ``0.0``           |
++------------------------------------------------------+----------------------------------------------------------------------------------------------+-------------------+
+| :ref:`float<class_float>`                            | :ref:`anchor_top<class_Control_property_anchor_top>`                                         | ``0.0``           |
++------------------------------------------------------+----------------------------------------------------------------------------------------------+-------------------+
+| :ref:`bool<class_bool>`                              | :ref:`auto_translate<class_Control_property_auto_translate>`                                 | ``true``          |
++------------------------------------------------------+----------------------------------------------------------------------------------------------+-------------------+
+| :ref:`bool<class_bool>`                              | :ref:`clip_contents<class_Control_property_clip_contents>`                                   | ``false``         |
++------------------------------------------------------+----------------------------------------------------------------------------------------------+-------------------+
+| :ref:`FocusMode<enum_Control_FocusMode>`             | :ref:`focus_mode<class_Control_property_focus_mode>`                                         | ``0``             |
++------------------------------------------------------+----------------------------------------------------------------------------------------------+-------------------+
+| :ref:`NodePath<class_NodePath>`                      | :ref:`focus_neighbor_bottom<class_Control_property_focus_neighbor_bottom>`                   | ``NodePath("")``  |
++------------------------------------------------------+----------------------------------------------------------------------------------------------+-------------------+
+| :ref:`NodePath<class_NodePath>`                      | :ref:`focus_neighbor_left<class_Control_property_focus_neighbor_left>`                       | ``NodePath("")``  |
++------------------------------------------------------+----------------------------------------------------------------------------------------------+-------------------+
+| :ref:`NodePath<class_NodePath>`                      | :ref:`focus_neighbor_right<class_Control_property_focus_neighbor_right>`                     | ``NodePath("")``  |
++------------------------------------------------------+----------------------------------------------------------------------------------------------+-------------------+
+| :ref:`NodePath<class_NodePath>`                      | :ref:`focus_neighbor_top<class_Control_property_focus_neighbor_top>`                         | ``NodePath("")``  |
++------------------------------------------------------+----------------------------------------------------------------------------------------------+-------------------+
+| :ref:`NodePath<class_NodePath>`                      | :ref:`focus_next<class_Control_property_focus_next>`                                         | ``NodePath("")``  |
++------------------------------------------------------+----------------------------------------------------------------------------------------------+-------------------+
+| :ref:`NodePath<class_NodePath>`                      | :ref:`focus_previous<class_Control_property_focus_previous>`                                 | ``NodePath("")``  |
++------------------------------------------------------+----------------------------------------------------------------------------------------------+-------------------+
+| :ref:`Vector2<class_Vector2>`                        | :ref:`global_position<class_Control_property_global_position>`                               |                   |
++------------------------------------------------------+----------------------------------------------------------------------------------------------+-------------------+
+| :ref:`GrowDirection<enum_Control_GrowDirection>`     | :ref:`grow_horizontal<class_Control_property_grow_horizontal>`                               | ``1``             |
++------------------------------------------------------+----------------------------------------------------------------------------------------------+-------------------+
+| :ref:`GrowDirection<enum_Control_GrowDirection>`     | :ref:`grow_vertical<class_Control_property_grow_vertical>`                                   | ``1``             |
++------------------------------------------------------+----------------------------------------------------------------------------------------------+-------------------+
+| :ref:`String<class_String>`                          | :ref:`hint_tooltip<class_Control_property_hint_tooltip>`                                     | ``""``            |
++------------------------------------------------------+----------------------------------------------------------------------------------------------+-------------------+
+| :ref:`LayoutDirection<enum_Control_LayoutDirection>` | :ref:`layout_direction<class_Control_property_layout_direction>`                             | ``0``             |
++------------------------------------------------------+----------------------------------------------------------------------------------------------+-------------------+
+| :ref:`Vector2<class_Vector2>`                        | :ref:`minimum_size<class_Control_property_minimum_size>`                                     | ``Vector2(0, 0)`` |
++------------------------------------------------------+----------------------------------------------------------------------------------------------+-------------------+
+| :ref:`CursorShape<enum_Control_CursorShape>`         | :ref:`mouse_default_cursor_shape<class_Control_property_mouse_default_cursor_shape>`         | ``0``             |
++------------------------------------------------------+----------------------------------------------------------------------------------------------+-------------------+
+| :ref:`MouseFilter<enum_Control_MouseFilter>`         | :ref:`mouse_filter<class_Control_property_mouse_filter>`                                     | ``0``             |
++------------------------------------------------------+----------------------------------------------------------------------------------------------+-------------------+
+| :ref:`bool<class_bool>`                              | :ref:`mouse_force_pass_scroll_events<class_Control_property_mouse_force_pass_scroll_events>` | ``true``          |
++------------------------------------------------------+----------------------------------------------------------------------------------------------+-------------------+
+| :ref:`float<class_float>`                            | :ref:`offset_bottom<class_Control_property_offset_bottom>`                                   | ``0.0``           |
++------------------------------------------------------+----------------------------------------------------------------------------------------------+-------------------+
+| :ref:`float<class_float>`                            | :ref:`offset_left<class_Control_property_offset_left>`                                       | ``0.0``           |
++------------------------------------------------------+----------------------------------------------------------------------------------------------+-------------------+
+| :ref:`float<class_float>`                            | :ref:`offset_right<class_Control_property_offset_right>`                                     | ``0.0``           |
++------------------------------------------------------+----------------------------------------------------------------------------------------------+-------------------+
+| :ref:`float<class_float>`                            | :ref:`offset_top<class_Control_property_offset_top>`                                         | ``0.0``           |
++------------------------------------------------------+----------------------------------------------------------------------------------------------+-------------------+
+| :ref:`Vector2<class_Vector2>`                        | :ref:`pivot_offset<class_Control_property_pivot_offset>`                                     | ``Vector2(0, 0)`` |
++------------------------------------------------------+----------------------------------------------------------------------------------------------+-------------------+
+| :ref:`Vector2<class_Vector2>`                        | :ref:`position<class_Control_property_position>`                                             | ``Vector2(0, 0)`` |
++------------------------------------------------------+----------------------------------------------------------------------------------------------+-------------------+
+| :ref:`float<class_float>`                            | :ref:`rotation<class_Control_property_rotation>`                                             | ``0.0``           |
++------------------------------------------------------+----------------------------------------------------------------------------------------------+-------------------+
+| :ref:`Vector2<class_Vector2>`                        | :ref:`scale<class_Control_property_scale>`                                                   | ``Vector2(1, 1)`` |
++------------------------------------------------------+----------------------------------------------------------------------------------------------+-------------------+
+| :ref:`Vector2<class_Vector2>`                        | :ref:`size<class_Control_property_size>`                                                     | ``Vector2(0, 0)`` |
++------------------------------------------------------+----------------------------------------------------------------------------------------------+-------------------+
+| :ref:`int<class_int>`                                | :ref:`size_flags_horizontal<class_Control_property_size_flags_horizontal>`                   | ``1``             |
++------------------------------------------------------+----------------------------------------------------------------------------------------------+-------------------+
+| :ref:`float<class_float>`                            | :ref:`size_flags_stretch_ratio<class_Control_property_size_flags_stretch_ratio>`             | ``1.0``           |
++------------------------------------------------------+----------------------------------------------------------------------------------------------+-------------------+
+| :ref:`int<class_int>`                                | :ref:`size_flags_vertical<class_Control_property_size_flags_vertical>`                       | ``1``             |
++------------------------------------------------------+----------------------------------------------------------------------------------------------+-------------------+
+| :ref:`Theme<class_Theme>`                            | :ref:`theme<class_Control_property_theme>`                                                   |                   |
++------------------------------------------------------+----------------------------------------------------------------------------------------------+-------------------+
+| :ref:`StringName<class_StringName>`                  | :ref:`theme_type_variation<class_Control_property_theme_type_variation>`                     | ``&""``           |
++------------------------------------------------------+----------------------------------------------------------------------------------------------+-------------------+
 
 Methods
 -------
@@ -192,6 +194,8 @@ Methods
 +----------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
 | :ref:`Rect2<class_Rect2>`                    | :ref:`get_rect<class_Control_method_get_rect>` **(** **)** |const|                                                                                                                                                                                                 |
 +----------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`Vector2<class_Vector2>`                | :ref:`get_screen_position<class_Control_method_get_screen_position>` **(** **)** |const|                                                                                                                                                                           |
++----------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
 | :ref:`Color<class_Color>`                    | :ref:`get_theme_color<class_Control_method_get_theme_color>` **(** :ref:`StringName<class_StringName>` name, :ref:`StringName<class_StringName>` theme_type="" **)** |const|                                                                                       |
 +----------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
 | :ref:`int<class_int>`                        | :ref:`get_theme_constant<class_Control_method_get_theme_constant>` **(** :ref:`StringName<class_StringName>` name, :ref:`StringName<class_StringName>` theme_type="" **)** |const|                                                                                 |
@@ -292,7 +296,7 @@ Methods
 +----------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
 | void                                         | :ref:`update_minimum_size<class_Control_method_update_minimum_size>` **(** **)**                                                                                                                                                                                   |
 +----------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| void                                         | :ref:`warp_mouse<class_Control_method_warp_mouse>` **(** :ref:`Vector2<class_Vector2>` to_position **)**                                                                                                                                                           |
+| void                                         | :ref:`warp_mouse<class_Control_method_warp_mouse>` **(** :ref:`Vector2<class_Vector2>` position **)**                                                                                                                                                              |
 +----------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
 
 Signals
@@ -445,9 +449,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.
 
@@ -609,7 +613,7 @@ enum **MouseFilter**:
 
 - **MOUSE_FILTER_STOP** = **0** --- The control will receive mouse button input events through :ref:`_gui_input<class_Control_method__gui_input>` if clicked on. And the control will receive the :ref:`mouse_entered<class_Control_signal_mouse_entered>` and :ref:`mouse_exited<class_Control_signal_mouse_exited>` signals. These events are automatically marked as handled, and they will not propagate further to other controls. This also results in blocking signals in other controls.
 
-- **MOUSE_FILTER_PASS** = **1** --- The control will receive mouse button input events through :ref:`_gui_input<class_Control_method__gui_input>` if clicked on. And the control will receive the :ref:`mouse_entered<class_Control_signal_mouse_entered>` and :ref:`mouse_exited<class_Control_signal_mouse_exited>` signals. If this control does not handle the event, the parent control (if any) will be considered, and so on until there is no more parent control to potentially handle it. This also allows signals to fire in other controls. Even if no control handled it at all, the event will still be handled automatically, so unhandled input will not be fired.
+- **MOUSE_FILTER_PASS** = **1** --- The control will receive mouse button input events through :ref:`_gui_input<class_Control_method__gui_input>` if clicked on. And the control will receive the :ref:`mouse_entered<class_Control_signal_mouse_entered>` and :ref:`mouse_exited<class_Control_signal_mouse_exited>` signals. If this control does not handle the event, the parent control (if any) will be considered, and so on until there is no more parent control to potentially handle it. This also allows signals to fire in other controls. If no control handled it, the event will be passed to `_unhandled_input` for further processing.
 
 - **MOUSE_FILTER_IGNORE** = **2** --- The control will not receive mouse button input events through :ref:`_gui_input<class_Control_method__gui_input>`. The control will also not receive the :ref:`mouse_entered<class_Control_signal_mouse_entered>` nor :ref:`mouse_exited<class_Control_signal_mouse_exited>` signals. This will not block other controls from receiving these events or firing the signals. Ignored events will not be handled automatically.
 
@@ -689,42 +693,6 @@ enum **TextDirection**:
 
 - **TEXT_DIRECTION_RTL** = **2** --- Right-to-left text writing direction.
 
-----
-
-.. _enum_Control_StructuredTextParser:
-
-.. _class_Control_constant_STRUCTURED_TEXT_DEFAULT:
-
-.. _class_Control_constant_STRUCTURED_TEXT_URI:
-
-.. _class_Control_constant_STRUCTURED_TEXT_FILE:
-
-.. _class_Control_constant_STRUCTURED_TEXT_EMAIL:
-
-.. _class_Control_constant_STRUCTURED_TEXT_LIST:
-
-.. _class_Control_constant_STRUCTURED_TEXT_NONE:
-
-.. _class_Control_constant_STRUCTURED_TEXT_CUSTOM:
-
-enum **StructuredTextParser**:
-
-- **STRUCTURED_TEXT_DEFAULT** = **0** --- Use default behavior. Same as ``STRUCTURED_TEXT_NONE`` unless specified otherwise in the control description.
-
-- **STRUCTURED_TEXT_URI** = **1** --- BiDi override for URI.
-
-- **STRUCTURED_TEXT_FILE** = **2** --- BiDi override for file path.
-
-- **STRUCTURED_TEXT_EMAIL** = **3** --- BiDi override for email.
-
-- **STRUCTURED_TEXT_LIST** = **4** --- BiDi override for lists.
-
-Structured text options: list separator ``String``.
-
-- **STRUCTURED_TEXT_NONE** = **5** --- Use default Unicode BiDi algorithm.
-
-- **STRUCTURED_TEXT_CUSTOM** = **6** --- User defined structured text BiDi override function.
-
 Constants
 ---------
 
@@ -1122,6 +1090,24 @@ Controls whether the control will be able to receive mouse button input events t
 
 ----
 
+.. _class_Control_property_mouse_force_pass_scroll_events:
+
+- :ref:`bool<class_bool>` **mouse_force_pass_scroll_events**
+
++-----------+-------------------------------------+
+| *Default* | ``true``                            |
++-----------+-------------------------------------+
+| *Setter*  | set_force_pass_scroll_events(value) |
++-----------+-------------------------------------+
+| *Getter*  | is_force_pass_scroll_events()       |
++-----------+-------------------------------------+
+
+When enabled, scroll wheel events processed by :ref:`_gui_input<class_Control_method__gui_input>` will be passed to the parent control even if :ref:`mouse_filter<class_Control_property_mouse_filter>` is set to :ref:`MOUSE_FILTER_STOP<class_Control_constant_MOUSE_FILTER_STOP>`. As it defaults to true, this allows nested scrollable containers to work out of the box.
+
+You should disable it on the root of your UI if you do not want scroll events to go to the ``_unhandled_input`` processing.
+
+----
+
 .. _class_Control_property_offset_bottom:
 
 - :ref:`float<class_float>` **offset_bottom**
@@ -1860,6 +1846,24 @@ Returns the position and size of the control relative to the top-left corner of
 
 ----
 
+.. _class_Control_method_get_screen_position:
+
+- :ref:`Vector2<class_Vector2>` **get_screen_position** **(** **)** |const|
+
+Returns the position of this ``Control`` in global screen coordinates (i.e. taking window position into account). Mostly useful for editor plugins.
+
+Equals to :ref:`global_position<class_Control_property_global_position>` if the window is embedded (see :ref:`Viewport.gui_embed_subwindows<class_Viewport_property_gui_embed_subwindows>`).
+
+Example usage for showing a popup:
+
+::
+
+    popup_menu.position = get_screen_position() + get_local_mouse_position()
+    popup_menu.reset_size()
+    popup_menu.popup()
+
+----
+
 .. _class_Control_method_get_theme_color:
 
 - :ref:`Color<class_Color>` **get_theme_color** **(** :ref:`StringName<class_StringName>` name, :ref:`StringName<class_StringName>` theme_type="" **)** |const|
@@ -2146,7 +2150,9 @@ See :ref:`add_theme_stylebox_override<class_Control_method_add_theme_stylebox_ov
 
 - :ref:`bool<class_bool>` **is_drag_successful** **(** **)** |const|
 
-Returns ``true`` if drag operation is successful.
+Returns ``true`` if a drag operation is successful. Alternative to :ref:`Viewport.gui_is_drag_successful<class_Viewport_method_gui_is_drag_successful>`.
+
+Best used with :ref:`Node.NOTIFICATION_DRAG_END<class_Node_constant_NOTIFICATION_DRAG_END>`.
 
 ----
 
@@ -2458,9 +2464,9 @@ Invalidates the size cache in this node and in parent nodes up to top level. Int
 
 .. _class_Control_method_warp_mouse:
 
-- void **warp_mouse** **(** :ref:`Vector2<class_Vector2>` to_position **)**
+- void **warp_mouse** **(** :ref:`Vector2<class_Vector2>` position **)**
 
-Moves the mouse cursor to ``to_position``, relative to :ref:`position<class_Control_property_position>` of this ``Control``.
+Moves the mouse cursor to ``position``, relative to :ref:`position<class_Control_property_position>` of this ``Control``.
 
 .. |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.)`

+ 5 - 3
classes/class_convexpolygonshape2d.rst

@@ -11,14 +11,16 @@ ConvexPolygonShape2D
 
 **Inherits:** :ref:`Shape2D<class_Shape2D>` **<** :ref:`Resource<class_Resource>` **<** :ref:`RefCounted<class_RefCounted>` **<** :ref:`Object<class_Object>`
 
-Convex polygon shape for 2D physics.
+Convex polygon shape resource for 2D physics.
 
 Description
 -----------
 
-Convex polygon shape for 2D physics. A convex polygon, whatever its shape, is internally decomposed into as many convex polygons as needed to ensure all collision checks against it are always done on convex polygons (which are faster to check).
+2D convex polygon shape to be added as a *direct* child of a :ref:`PhysicsBody2D<class_PhysicsBody2D>` or :ref:`Area2D<class_Area2D>` using a :ref:`CollisionShape2D<class_CollisionShape2D>` node. A convex polygon, whatever its shape, is internally decomposed into as many convex polygons as needed to ensure all collision checks against it are always done on convex polygons (which are faster to check). See also :ref:`CollisionPolygon2D<class_CollisionPolygon2D>`.
 
-The main difference between a ``ConvexPolygonShape2D`` and a :ref:`ConcavePolygonShape2D<class_ConcavePolygonShape2D>` is that a concave polygon assumes it is concave and uses a more complex method of collision detection, and a convex one forces itself to be convex in order to speed up collision detection.
+The main difference between a ``ConvexPolygonShape2D`` and a :ref:`ConcavePolygonShape2D<class_ConcavePolygonShape2D>` is that a concave polygon assumes it is concave and uses a more complex method of collision detection, and a convex one forces itself to be convex to speed up collision detection.
+
+\ **Performance:** ``ConvexPolygonShape2D`` is faster to check collisions against compared to :ref:`ConcavePolygonShape2D<class_ConcavePolygonShape2D>`, but it is slower than primitive collision shapes such as :ref:`CircleShape2D<class_CircleShape2D>` or :ref:`RectangleShape2D<class_RectangleShape2D>`. Its use should generally be limited to medium-sized objects that cannot have their collision accurately represented by a primitive shape.
 
 Properties
 ----------

+ 6 - 2
classes/class_convexpolygonshape3d.rst

@@ -11,12 +11,16 @@ ConvexPolygonShape3D
 
 **Inherits:** :ref:`Shape3D<class_Shape3D>` **<** :ref:`Resource<class_Resource>` **<** :ref:`RefCounted<class_RefCounted>` **<** :ref:`Object<class_Object>`
 
-Convex polygon shape for 3D physics.
+Convex polygon shape resource for 3D physics.
 
 Description
 -----------
 
-Convex polygon shape resource, which can be added to a :ref:`PhysicsBody3D<class_PhysicsBody3D>` or area.
+3D convex polygon shape resource to be added as a *direct* child of a :ref:`PhysicsBody3D<class_PhysicsBody3D>` or :ref:`Area3D<class_Area3D>` using a :ref:`CollisionShape3D<class_CollisionShape3D>` node. Unlike :ref:`ConcavePolygonShape3D<class_ConcavePolygonShape3D>`, ``ConvexPolygonShape3D`` cannot store concave polygon shapes. :ref:`ConvexPolygonShape2D<class_ConvexPolygonShape2D>`\ s can be manually drawn in the editor using the :ref:`CollisionPolygon3D<class_CollisionPolygon3D>` node.
+
+\ **Convex decomposition:** Concave objects' collisions can be represented accurately using *several* ``ConvexPolygonShape3D``\ s. This allows dynamic physics bodies to have complex concave collisions (at a performance cost). This is available in the editor by selecting the :ref:`MeshInstance3D<class_MeshInstance3D>`, going to the **Mesh** menu and choosing **Create Multiple Convex Collision Siblings**. Alternatively, :ref:`MeshInstance3D.create_multiple_convex_collisions<class_MeshInstance3D_method_create_multiple_convex_collisions>` can be called in a script to perform this decomposition at run-time.
+
+\ **Performance:** ``ConvexPolygonShape3D`` is faster to check collisions against compared to :ref:`ConcavePolygonShape3D<class_ConcavePolygonShape3D>`, but it is slower than primitive collision shapes such as :ref:`SphereShape3D<class_SphereShape3D>` or :ref:`BoxShape3D<class_BoxShape3D>`. Its use should generally be limited to medium-sized objects that cannot have their collision accurately represented by a primitive shape.
 
 Tutorials
 ---------

+ 9 - 5
classes/class_cpuparticles2d.rst

@@ -288,6 +288,8 @@ enum **ParticleFlags**:
 
 .. _class_CPUParticles2D_constant_EMISSION_SHAPE_SPHERE:
 
+.. _class_CPUParticles2D_constant_EMISSION_SHAPE_SPHERE_SURFACE:
+
 .. _class_CPUParticles2D_constant_EMISSION_SHAPE_RECTANGLE:
 
 .. _class_CPUParticles2D_constant_EMISSION_SHAPE_POINTS:
@@ -300,15 +302,17 @@ enum **EmissionShape**:
 
 - **EMISSION_SHAPE_POINT** = **0** --- All particles will be emitted from a single point.
 
-- **EMISSION_SHAPE_SPHERE** = **1** --- Particles will be emitted on the surface of a sphere flattened to two dimensions.
+- **EMISSION_SHAPE_SPHERE** = **1** --- Particles will be emitted in the volume of a sphere flattened to two dimensions.
+
+- **EMISSION_SHAPE_SPHERE_SURFACE** = **2** --- Particles will be emitted on the surface of a sphere flattened to two dimensions.
 
-- **EMISSION_SHAPE_RECTANGLE** = **2** --- Particles will be emitted in the area of a rectangle.
+- **EMISSION_SHAPE_RECTANGLE** = **3** --- Particles will be emitted in the area of a rectangle.
 
-- **EMISSION_SHAPE_POINTS** = **3** --- Particles will be emitted at a position chosen randomly among :ref:`emission_points<class_CPUParticles2D_property_emission_points>`. Particle color will be modulated by :ref:`emission_colors<class_CPUParticles2D_property_emission_colors>`.
+- **EMISSION_SHAPE_POINTS** = **4** --- Particles will be emitted at a position chosen randomly among :ref:`emission_points<class_CPUParticles2D_property_emission_points>`. Particle color will be modulated by :ref:`emission_colors<class_CPUParticles2D_property_emission_colors>`.
 
-- **EMISSION_SHAPE_DIRECTED_POINTS** = **4** --- Particles will be emitted at a position chosen randomly among :ref:`emission_points<class_CPUParticles2D_property_emission_points>`. Particle velocity and rotation will be set based on :ref:`emission_normals<class_CPUParticles2D_property_emission_normals>`. Particle color will be modulated by :ref:`emission_colors<class_CPUParticles2D_property_emission_colors>`.
+- **EMISSION_SHAPE_DIRECTED_POINTS** = **5** --- Particles will be emitted at a position chosen randomly among :ref:`emission_points<class_CPUParticles2D_property_emission_points>`. Particle velocity and rotation will be set based on :ref:`emission_normals<class_CPUParticles2D_property_emission_normals>`. Particle color will be modulated by :ref:`emission_colors<class_CPUParticles2D_property_emission_colors>`.
 
-- **EMISSION_SHAPE_MAX** = **5** --- Represents the size of the :ref:`EmissionShape<enum_CPUParticles2D_EmissionShape>` enum.
+- **EMISSION_SHAPE_MAX** = **6** --- Represents the size of the :ref:`EmissionShape<enum_CPUParticles2D_EmissionShape>` enum.
 
 Property Descriptions
 ---------------------

+ 9 - 5
classes/class_cpuparticles3d.rst

@@ -303,6 +303,8 @@ enum **ParticleFlags**:
 
 .. _class_CPUParticles3D_constant_EMISSION_SHAPE_SPHERE:
 
+.. _class_CPUParticles3D_constant_EMISSION_SHAPE_SPHERE_SURFACE:
+
 .. _class_CPUParticles3D_constant_EMISSION_SHAPE_BOX:
 
 .. _class_CPUParticles3D_constant_EMISSION_SHAPE_POINTS:
@@ -319,15 +321,17 @@ enum **EmissionShape**:
 
 - **EMISSION_SHAPE_SPHERE** = **1** --- Particles will be emitted in the volume of a sphere.
 
-- **EMISSION_SHAPE_BOX** = **2** --- Particles will be emitted in the volume of a box.
+- **EMISSION_SHAPE_SPHERE_SURFACE** = **2** --- Particles will be emitted on the surface of a sphere.
+
+- **EMISSION_SHAPE_BOX** = **3** --- Particles will be emitted in the volume of a box.
 
-- **EMISSION_SHAPE_POINTS** = **3** --- Particles will be emitted at a position chosen randomly among :ref:`emission_points<class_CPUParticles3D_property_emission_points>`. Particle color will be modulated by :ref:`emission_colors<class_CPUParticles3D_property_emission_colors>`.
+- **EMISSION_SHAPE_POINTS** = **4** --- Particles will be emitted at a position chosen randomly among :ref:`emission_points<class_CPUParticles3D_property_emission_points>`. Particle color will be modulated by :ref:`emission_colors<class_CPUParticles3D_property_emission_colors>`.
 
-- **EMISSION_SHAPE_DIRECTED_POINTS** = **4** --- Particles will be emitted at a position chosen randomly among :ref:`emission_points<class_CPUParticles3D_property_emission_points>`. Particle velocity and rotation will be set based on :ref:`emission_normals<class_CPUParticles3D_property_emission_normals>`. Particle color will be modulated by :ref:`emission_colors<class_CPUParticles3D_property_emission_colors>`.
+- **EMISSION_SHAPE_DIRECTED_POINTS** = **5** --- Particles will be emitted at a position chosen randomly among :ref:`emission_points<class_CPUParticles3D_property_emission_points>`. Particle velocity and rotation will be set based on :ref:`emission_normals<class_CPUParticles3D_property_emission_normals>`. Particle color will be modulated by :ref:`emission_colors<class_CPUParticles3D_property_emission_colors>`.
 
-- **EMISSION_SHAPE_RING** = **5** --- Particles will be emitted in a ring or cylinder.
+- **EMISSION_SHAPE_RING** = **6** --- Particles will be emitted in a ring or cylinder.
 
-- **EMISSION_SHAPE_MAX** = **6** --- Represents the size of the :ref:`EmissionShape<enum_CPUParticles3D_EmissionShape>` enum.
+- **EMISSION_SHAPE_MAX** = **7** --- Represents the size of the :ref:`EmissionShape<enum_CPUParticles3D_EmissionShape>` enum.
 
 Property Descriptions
 ---------------------

+ 0 - 2
classes/class_crypto.rst

@@ -87,8 +87,6 @@ For now, this includes generating cryptographically secure random bytes, RSA key
 
 
 
-\ **Note:** Not available in HTML5 exports.
-
 Methods
 -------
 

+ 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
 -------
 

+ 13 - 13
classes/class_csgprimitive3d.rst

@@ -30,26 +30,26 @@ Tutorials
 Properties
 ----------
 
-+-------------------------+-----------------------------------------------------------------+-----------+
-| :ref:`bool<class_bool>` | :ref:`invert_faces<class_CSGPrimitive3D_property_invert_faces>` | ``false`` |
-+-------------------------+-----------------------------------------------------------------+-----------+
++-------------------------+-------------------------------------------------------------+-----------+
+| :ref:`bool<class_bool>` | :ref:`flip_faces<class_CSGPrimitive3D_property_flip_faces>` | ``false`` |
++-------------------------+-------------------------------------------------------------+-----------+
 
 Property Descriptions
 ---------------------
 
-.. _class_CSGPrimitive3D_property_invert_faces:
+.. _class_CSGPrimitive3D_property_flip_faces:
 
-- :ref:`bool<class_bool>` **invert_faces**
+- :ref:`bool<class_bool>` **flip_faces**
 
-+-----------+-------------------------+
-| *Default* | ``false``               |
-+-----------+-------------------------+
-| *Setter*  | set_invert_faces(value) |
-+-----------+-------------------------+
-| *Getter*  | is_inverting_faces()    |
-+-----------+-------------------------+
++-----------+-----------------------+
+| *Default* | ``false``             |
++-----------+-----------------------+
+| *Setter*  | set_flip_faces(value) |
++-----------+-----------------------+
+| *Getter*  | get_flip_faces()      |
++-----------+-----------------------+
 
-Invert the faces of the mesh.
+If set, the order of the vertices in each triangle are reversed resulting in the backside of the mesh being drawn.
 
 .. |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.)`

+ 2 - 2
classes/class_csgsphere3d.rst

@@ -33,7 +33,7 @@ Properties
 +---------------------------------+--------------------------------------------------------------------+----------+
 | :ref:`int<class_int>`           | :ref:`radial_segments<class_CSGSphere3D_property_radial_segments>` | ``12``   |
 +---------------------------------+--------------------------------------------------------------------+----------+
-| :ref:`float<class_float>`       | :ref:`radius<class_CSGSphere3D_property_radius>`                   | ``1.0``  |
+| :ref:`float<class_float>`       | :ref:`radius<class_CSGSphere3D_property_radius>`                   | ``0.5``  |
 +---------------------------------+--------------------------------------------------------------------+----------+
 | :ref:`int<class_int>`           | :ref:`rings<class_CSGSphere3D_property_rings>`                     | ``6``    |
 +---------------------------------+--------------------------------------------------------------------+----------+
@@ -78,7 +78,7 @@ Number of vertical slices for the sphere.
 - :ref:`float<class_float>` **radius**
 
 +-----------+-------------------+
-| *Default* | ``1.0``           |
+| *Default* | ``0.5``           |
 +-----------+-------------------+
 | *Setter*  | set_radius(value) |
 +-----------+-------------------+

+ 18 - 10
classes/class_curve.rst

@@ -28,6 +28,8 @@ Properties
 +---------------------------+--------------------------------------------------------------+---------+
 | :ref:`float<class_float>` | :ref:`min_value<class_Curve_property_min_value>`             | ``0.0`` |
 +---------------------------+--------------------------------------------------------------+---------+
+| :ref:`int<class_int>`     | :ref:`point_count<class_Curve_property_point_count>`         | ``0``   |
++---------------------------+--------------------------------------------------------------+---------+
 
 Methods
 -------
@@ -41,8 +43,6 @@ Methods
 +--------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
 | void                                       | :ref:`clear_points<class_Curve_method_clear_points>` **(** **)**                                                                                                                                                                                                                                        |
 +--------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`int<class_int>`                      | :ref:`get_point_count<class_Curve_method_get_point_count>` **(** **)** |const|                                                                                                                                                                                                                          |
-+--------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
 | :ref:`TangentMode<enum_Curve_TangentMode>` | :ref:`get_point_left_mode<class_Curve_method_get_point_left_mode>` **(** :ref:`int<class_int>` index **)** |const|                                                                                                                                                                                      |
 +--------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
 | :ref:`float<class_float>`                  | :ref:`get_point_left_tangent<class_Curve_method_get_point_left_tangent>` **(** :ref:`int<class_int>` index **)** |const|                                                                                                                                                                                |
@@ -149,6 +149,22 @@ The maximum value the curve can reach.
 
 The minimum value the curve can reach.
 
+----
+
+.. _class_Curve_property_point_count:
+
+- :ref:`int<class_int>` **point_count**
+
++-----------+------------------------+
+| *Default* | ``0``                  |
++-----------+------------------------+
+| *Setter*  | set_point_count(value) |
++-----------+------------------------+
+| *Getter*  | get_point_count()      |
++-----------+------------------------+
+
+The number of points describing the curve.
+
 Method Descriptions
 -------------------
 
@@ -184,14 +200,6 @@ Removes all points from the curve.
 
 ----
 
-.. _class_Curve_method_get_point_count:
-
-- :ref:`int<class_int>` **get_point_count** **(** **)** |const|
-
-Returns the number of points describing the curve.
-
-----
-
 .. _class_Curve_method_get_point_left_mode:
 
 - :ref:`TangentMode<enum_Curve_TangentMode>` **get_point_left_mode** **(** :ref:`int<class_int>` index **)** |const|

+ 19 - 11
classes/class_curve2d.rst

@@ -26,6 +26,8 @@ Properties
 +---------------------------+------------------------------------------------------------+---------+
 | :ref:`float<class_float>` | :ref:`bake_interval<class_Curve2D_property_bake_interval>` | ``5.0`` |
 +---------------------------+------------------------------------------------------------+---------+
+| :ref:`int<class_int>`     | :ref:`point_count<class_Curve2D_property_point_count>`     | ``0``   |
++---------------------------+------------------------------------------------------------+---------+
 
 Methods
 -------
@@ -43,8 +45,6 @@ Methods
 +-----------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
 | :ref:`Vector2<class_Vector2>`                       | :ref:`get_closest_point<class_Curve2D_method_get_closest_point>` **(** :ref:`Vector2<class_Vector2>` to_point **)** |const|                                                                                                                |
 +-----------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`int<class_int>`                               | :ref:`get_point_count<class_Curve2D_method_get_point_count>` **(** **)** |const|                                                                                                                                                           |
-+-----------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
 | :ref:`Vector2<class_Vector2>`                       | :ref:`get_point_in<class_Curve2D_method_get_point_in>` **(** :ref:`int<class_int>` idx **)** |const|                                                                                                                                       |
 +-----------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
 | :ref:`Vector2<class_Vector2>`                       | :ref:`get_point_out<class_Curve2D_method_get_point_out>` **(** :ref:`int<class_int>` idx **)** |const|                                                                                                                                     |
@@ -85,6 +85,22 @@ Property Descriptions
 
 The distance in pixels between two adjacent cached points. Changing it forces the cache to be recomputed the next time the :ref:`get_baked_points<class_Curve2D_method_get_baked_points>` or :ref:`get_baked_length<class_Curve2D_method_get_baked_length>` function is called. The smaller the distance, the more points in the cache and the more memory it will consume, so use with care.
 
+----
+
+.. _class_Curve2D_property_point_count:
+
+- :ref:`int<class_int>` **point_count**
+
++-----------+------------------------+
+| *Default* | ``0``                  |
++-----------+------------------------+
+| *Setter*  | set_point_count(value) |
++-----------+------------------------+
+| *Getter*  | get_point_count()      |
++-----------+------------------------+
+
+The number of points describing the curve.
+
 Method Descriptions
 -------------------
 
@@ -92,7 +108,7 @@ Method Descriptions
 
 - void **add_point** **(** :ref:`Vector2<class_Vector2>` position, :ref:`Vector2<class_Vector2>` in=Vector2(0, 0), :ref:`Vector2<class_Vector2>` out=Vector2(0, 0), :ref:`int<class_int>` at_position=-1 **)**
 
-Adds a point to a curve at ``position``, with control points ``in`` and ``out``.
+Adds a point to a curve at ``position`` relative to the ``Curve2D``'s position, with control points ``in`` and ``out``.
 
 If ``at_position`` is given, the point is inserted before the point number ``at_position``, moving that point (and every point after) after the inserted point. If ``at_position`` is not given, or is an illegal value (``at_position <0`` or ``at_position >= [method get_point_count]``), the point will be appended at the end of the point list.
 
@@ -142,14 +158,6 @@ Returns the closest baked point (in curve's local space) to ``to_point``.
 
 ----
 
-.. _class_Curve2D_method_get_point_count:
-
-- :ref:`int<class_int>` **get_point_count** **(** **)** |const|
-
-Returns the number of points describing the curve.
-
-----
-
 .. _class_Curve2D_method_get_point_in:
 
 - :ref:`Vector2<class_Vector2>` **get_point_in** **(** :ref:`int<class_int>` idx **)** |const|

+ 19 - 11
classes/class_curve3d.rst

@@ -26,6 +26,8 @@ Properties
 +---------------------------+--------------------------------------------------------------------+----------+
 | :ref:`float<class_float>` | :ref:`bake_interval<class_Curve3D_property_bake_interval>`         | ``0.2``  |
 +---------------------------+--------------------------------------------------------------------+----------+
+| :ref:`int<class_int>`     | :ref:`point_count<class_Curve3D_property_point_count>`             | ``0``    |
++---------------------------+--------------------------------------------------------------------+----------+
 | :ref:`bool<class_bool>`   | :ref:`up_vector_enabled<class_Curve3D_property_up_vector_enabled>` | ``true`` |
 +---------------------------+--------------------------------------------------------------------+----------+
 
@@ -49,8 +51,6 @@ Methods
 +-----------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
 | :ref:`Vector3<class_Vector3>`                       | :ref:`get_closest_point<class_Curve3D_method_get_closest_point>` **(** :ref:`Vector3<class_Vector3>` to_point **)** |const|                                                                                                                      |
 +-----------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`int<class_int>`                               | :ref:`get_point_count<class_Curve3D_method_get_point_count>` **(** **)** |const|                                                                                                                                                                 |
-+-----------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
 | :ref:`Vector3<class_Vector3>`                       | :ref:`get_point_in<class_Curve3D_method_get_point_in>` **(** :ref:`int<class_int>` idx **)** |const|                                                                                                                                             |
 +-----------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
 | :ref:`Vector3<class_Vector3>`                       | :ref:`get_point_out<class_Curve3D_method_get_point_out>` **(** :ref:`int<class_int>` idx **)** |const|                                                                                                                                           |
@@ -99,6 +99,22 @@ The distance in meters between two adjacent cached points. Changing it forces th
 
 ----
 
+.. _class_Curve3D_property_point_count:
+
+- :ref:`int<class_int>` **point_count**
+
++-----------+------------------------+
+| *Default* | ``0``                  |
++-----------+------------------------+
+| *Setter*  | set_point_count(value) |
++-----------+------------------------+
+| *Getter*  | get_point_count()      |
++-----------+------------------------+
+
+The number of points describing the curve.
+
+----
+
 .. _class_Curve3D_property_up_vector_enabled:
 
 - :ref:`bool<class_bool>` **up_vector_enabled**
@@ -120,7 +136,7 @@ Method Descriptions
 
 - void **add_point** **(** :ref:`Vector3<class_Vector3>` position, :ref:`Vector3<class_Vector3>` in=Vector3(0, 0, 0), :ref:`Vector3<class_Vector3>` out=Vector3(0, 0, 0), :ref:`int<class_int>` at_position=-1 **)**
 
-Adds a point to a curve at ``position``, with control points ``in`` and ``out``.
+Adds a point to a curve at ``position`` relative to the ``Curve3D``'s position, with control points ``in`` and ``out``.
 
 If ``at_position`` is given, the point is inserted before the point number ``at_position``, moving that point (and every point after) after the inserted point. If ``at_position`` is not given, or is an illegal value (``at_position <0`` or ``at_position >= [method get_point_count]``), the point will be appended at the end of the point list.
 
@@ -188,14 +204,6 @@ Returns the closest baked point (in curve's local space) to ``to_point``.
 
 ----
 
-.. _class_Curve3D_method_get_point_count:
-
-- :ref:`int<class_int>` **get_point_count** **(** **)** |const|
-
-Returns the number of points describing the curve.
-
-----
-
 .. _class_Curve3D_method_get_point_in:
 
 - :ref:`Vector3<class_Vector3>` **get_point_in** **(** :ref:`int<class_int>` idx **)** |const|

+ 53 - 13
classes/class_cylindermesh.rst

@@ -21,17 +21,21 @@ Class representing a cylindrical :ref:`PrimitiveMesh<class_PrimitiveMesh>`. This
 Properties
 ----------
 
-+---------------------------+---------------------------------------------------------------------+---------+
-| :ref:`float<class_float>` | :ref:`bottom_radius<class_CylinderMesh_property_bottom_radius>`     | ``0.5`` |
-+---------------------------+---------------------------------------------------------------------+---------+
-| :ref:`float<class_float>` | :ref:`height<class_CylinderMesh_property_height>`                   | ``2.0`` |
-+---------------------------+---------------------------------------------------------------------+---------+
-| :ref:`int<class_int>`     | :ref:`radial_segments<class_CylinderMesh_property_radial_segments>` | ``64``  |
-+---------------------------+---------------------------------------------------------------------+---------+
-| :ref:`int<class_int>`     | :ref:`rings<class_CylinderMesh_property_rings>`                     | ``4``   |
-+---------------------------+---------------------------------------------------------------------+---------+
-| :ref:`float<class_float>` | :ref:`top_radius<class_CylinderMesh_property_top_radius>`           | ``0.5`` |
-+---------------------------+---------------------------------------------------------------------+---------+
++---------------------------+---------------------------------------------------------------------+----------+
+| :ref:`float<class_float>` | :ref:`bottom_radius<class_CylinderMesh_property_bottom_radius>`     | ``0.5``  |
++---------------------------+---------------------------------------------------------------------+----------+
+| :ref:`bool<class_bool>`   | :ref:`cap_bottom<class_CylinderMesh_property_cap_bottom>`           | ``true`` |
++---------------------------+---------------------------------------------------------------------+----------+
+| :ref:`bool<class_bool>`   | :ref:`cap_top<class_CylinderMesh_property_cap_top>`                 | ``true`` |
++---------------------------+---------------------------------------------------------------------+----------+
+| :ref:`float<class_float>` | :ref:`height<class_CylinderMesh_property_height>`                   | ``2.0``  |
++---------------------------+---------------------------------------------------------------------+----------+
+| :ref:`int<class_int>`     | :ref:`radial_segments<class_CylinderMesh_property_radial_segments>` | ``64``   |
++---------------------------+---------------------------------------------------------------------+----------+
+| :ref:`int<class_int>`     | :ref:`rings<class_CylinderMesh_property_rings>`                     | ``4``    |
++---------------------------+---------------------------------------------------------------------+----------+
+| :ref:`float<class_float>` | :ref:`top_radius<class_CylinderMesh_property_top_radius>`           | ``0.5``  |
++---------------------------+---------------------------------------------------------------------+----------+
 
 Property Descriptions
 ---------------------
@@ -48,7 +52,43 @@ Property Descriptions
 | *Getter*  | get_bottom_radius()      |
 +-----------+--------------------------+
 
-Bottom radius of the cylinder. If set to ``0.0``, the bottom faces will not be generated, resulting in a conic shape.
+Bottom radius of the cylinder. If set to ``0.0``, the bottom faces will not be generated, resulting in a conic shape. See also :ref:`cap_bottom<class_CylinderMesh_property_cap_bottom>`.
+
+----
+
+.. _class_CylinderMesh_property_cap_bottom:
+
+- :ref:`bool<class_bool>` **cap_bottom**
+
++-----------+-----------------------+
+| *Default* | ``true``              |
++-----------+-----------------------+
+| *Setter*  | set_cap_bottom(value) |
++-----------+-----------------------+
+| *Getter*  | is_cap_bottom()       |
++-----------+-----------------------+
+
+If ``true``, generates a cap at the bottom of the cylinder. This can be set to ``false`` to speed up generation and rendering when the cap is never seen by the camera. See also :ref:`bottom_radius<class_CylinderMesh_property_bottom_radius>`.
+
+\ **Note:** If :ref:`bottom_radius<class_CylinderMesh_property_bottom_radius>` is ``0.0``, cap generation is always skipped even if :ref:`cap_bottom<class_CylinderMesh_property_cap_bottom>` is ``true``.
+
+----
+
+.. _class_CylinderMesh_property_cap_top:
+
+- :ref:`bool<class_bool>` **cap_top**
+
++-----------+--------------------+
+| *Default* | ``true``           |
++-----------+--------------------+
+| *Setter*  | set_cap_top(value) |
++-----------+--------------------+
+| *Getter*  | is_cap_top()       |
++-----------+--------------------+
+
+If ``true``, generates a cap at the top of the cylinder. This can be set to ``false`` to speed up generation and rendering when the cap is never seen by the camera. See also :ref:`top_radius<class_CylinderMesh_property_top_radius>`.
+
+\ **Note:** If :ref:`top_radius<class_CylinderMesh_property_top_radius>` is ``0.0``, cap generation is always skipped even if :ref:`cap_top<class_CylinderMesh_property_cap_top>` is ``true``.
 
 ----
 
@@ -112,7 +152,7 @@ Number of edge rings along the height of the cylinder. Changing :ref:`rings<clas
 | *Getter*  | get_top_radius()      |
 +-----------+-----------------------+
 
-Top radius of the cylinder. If set to ``0.0``, the top faces will not be generated, resulting in a conic shape.
+Top radius of the cylinder. If set to ``0.0``, the top faces will not be generated, resulting in a conic shape. See also :ref:`cap_top<class_CylinderMesh_property_cap_top>`.
 
 .. |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.)`

+ 4 - 2
classes/class_cylindershape3d.rst

@@ -11,12 +11,14 @@ CylinderShape3D
 
 **Inherits:** :ref:`Shape3D<class_Shape3D>` **<** :ref:`Resource<class_Resource>` **<** :ref:`RefCounted<class_RefCounted>` **<** :ref:`Object<class_Object>`
 
-Cylinder shape for collisions.
+Cylinder shape for 3D collisions.
 
 Description
 -----------
 
-Cylinder shape for collisions.
+Cylinder shape for collisions. Like :ref:`CapsuleShape3D<class_CapsuleShape3D>`, but without hemispheres at the cylinder's ends.
+
+\ **Performance:** Being a primitive collision shape, ``CylinderShape3D`` is fast to check collisions against (though not as fast as :ref:`SphereShape3D<class_SphereShape3D>`). ``CylinderShape3D`` is also more demanding compared to :ref:`CapsuleShape3D<class_CapsuleShape3D>`.
 
 Tutorials
 ---------

+ 2 - 0
classes/class_decal.rst

@@ -22,6 +22,8 @@ They are made of an :ref:`AABB<class_AABB>` and a group of :ref:`Texture2D<class
 
 The :ref:`Texture2D<class_Texture2D>`\ s associated with the Decal are automatically stored in a texture atlas which is used for drawing the decals so all decals can be drawn at once. Godot uses clustered decals, meaning they are stored in cluster data and drawn when the mesh is drawn, they are not drawn as a post-processing effect after.
 
+\ **Note:** Decals cannot affect an underlying material's transparency, regardless of its transparency mode (alpha blend, alpha scissor, alpha hash, opaque pre-pass). This means translucent or transparent areas of a material will remain translucent or transparent even if an opaque decal is applied on them.
+
 Properties
 ----------
 

+ 34 - 36
classes/class_dictionary.rst

@@ -67,7 +67,7 @@ You can access a dictionary's values by referencing the appropriate key. In the
 
  .. code-tab:: gdscript
 
-    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.
@@ -254,40 +254,38 @@ Constructors
 Methods
 -------
 
-+-------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------+
-| void                                | :ref:`clear<class_Dictionary_method_clear>` **(** **)**                                                                                   |
-+-------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`Dictionary<class_Dictionary>` | :ref:`duplicate<class_Dictionary_method_duplicate>` **(** :ref:`bool<class_bool>` deep=false **)** |const|                                |
-+-------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`bool<class_bool>`             | :ref:`erase<class_Dictionary_method_erase>` **(** :ref:`Variant<class_Variant>` key **)**                                                 |
-+-------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`Variant<class_Variant>`       | :ref:`get<class_Dictionary_method_get>` **(** :ref:`Variant<class_Variant>` key, :ref:`Variant<class_Variant>` default=null **)** |const| |
-+-------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`bool<class_bool>`             | :ref:`has<class_Dictionary_method_has>` **(** :ref:`Variant<class_Variant>` key **)** |const|                                             |
-+-------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`bool<class_bool>`             | :ref:`has_all<class_Dictionary_method_has_all>` **(** :ref:`Array<class_Array>` keys **)** |const|                                        |
-+-------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`int<class_int>`               | :ref:`hash<class_Dictionary_method_hash>` **(** **)** |const|                                                                             |
-+-------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`bool<class_bool>`             | :ref:`is_empty<class_Dictionary_method_is_empty>` **(** **)** |const|                                                                     |
-+-------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`Array<class_Array>`           | :ref:`keys<class_Dictionary_method_keys>` **(** **)** |const|                                                                             |
-+-------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`int<class_int>`               | :ref:`size<class_Dictionary_method_size>` **(** **)** |const|                                                                             |
-+-------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`Array<class_Array>`           | :ref:`values<class_Dictionary_method_values>` **(** **)** |const|                                                                         |
-+-------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------+
++-------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------+
+| void                                | :ref:`clear<class_Dictionary_method_clear>` **(** **)**                                                                                         |
++-------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`Dictionary<class_Dictionary>` | :ref:`duplicate<class_Dictionary_method_duplicate>` **(** :ref:`bool<class_bool>` deep=false **)** |const|                                      |
++-------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`bool<class_bool>`             | :ref:`erase<class_Dictionary_method_erase>` **(** :ref:`Variant<class_Variant>` key **)**                                                       |
++-------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`Variant<class_Variant>`       | :ref:`get<class_Dictionary_method_get>` **(** :ref:`Variant<class_Variant>` key, :ref:`Variant<class_Variant>` default=null **)** |const|       |
++-------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`bool<class_bool>`             | :ref:`has<class_Dictionary_method_has>` **(** :ref:`Variant<class_Variant>` key **)** |const|                                                   |
++-------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`bool<class_bool>`             | :ref:`has_all<class_Dictionary_method_has_all>` **(** :ref:`Array<class_Array>` keys **)** |const|                                              |
++-------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`int<class_int>`               | :ref:`hash<class_Dictionary_method_hash>` **(** **)** |const|                                                                                   |
++-------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`bool<class_bool>`             | :ref:`is_empty<class_Dictionary_method_is_empty>` **(** **)** |const|                                                                           |
++-------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`Array<class_Array>`           | :ref:`keys<class_Dictionary_method_keys>` **(** **)** |const|                                                                                   |
++-------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------+
+| void                                | :ref:`merge<class_Dictionary_method_merge>` **(** :ref:`Dictionary<class_Dictionary>` dictionary, :ref:`bool<class_bool>` overwrite=false **)** |
++-------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`int<class_int>`               | :ref:`size<class_Dictionary_method_size>` **(** **)** |const|                                                                                   |
++-------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`Array<class_Array>`           | :ref:`values<class_Dictionary_method_values>` **(** **)** |const|                                                                               |
++-------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------+
 
 Operators
 ---------
 
-+-------------------------------+--------------------------------------------------------------------------------------------------------------+
-| :ref:`bool<class_bool>`       | :ref:`operator !=<class_Dictionary_operator_neq_bool>` **(** **)**                                           |
 +-------------------------------+--------------------------------------------------------------------------------------------------------------+
 | :ref:`bool<class_bool>`       | :ref:`operator !=<class_Dictionary_operator_neq_bool>` **(** :ref:`Dictionary<class_Dictionary>` right **)** |
 +-------------------------------+--------------------------------------------------------------------------------------------------------------+
-| :ref:`bool<class_bool>`       | :ref:`operator ==<class_Dictionary_operator_eq_bool>` **(** **)**                                            |
-+-------------------------------+--------------------------------------------------------------------------------------------------------------+
 | :ref:`bool<class_bool>`       | :ref:`operator ==<class_Dictionary_operator_eq_bool>` **(** :ref:`Dictionary<class_Dictionary>` right **)**  |
 +-------------------------------+--------------------------------------------------------------------------------------------------------------+
 | :ref:`Variant<class_Variant>` | :ref:`operator []<class_Dictionary_operator_idx_Variant>` **(** :ref:`Variant<class_Variant>` key **)**      |
@@ -432,6 +430,14 @@ Returns the list of keys in the ``Dictionary``.
 
 ----
 
+.. _class_Dictionary_method_merge:
+
+- void **merge** **(** :ref:`Dictionary<class_Dictionary>` dictionary, :ref:`bool<class_bool>` overwrite=false **)**
+
+Adds elements from ``dictionary`` to this ``Dictionary``. By default, duplicate keys will not be copied over, unless ``overwrite`` is ``true``.
+
+----
+
 .. _class_Dictionary_method_size:
 
 - :ref:`int<class_int>` **size** **(** **)** |const|
@@ -451,20 +457,12 @@ Operator Descriptions
 
 .. _class_Dictionary_operator_neq_bool:
 
-- :ref:`bool<class_bool>` **operator !=** **(** **)**
-
-----
-
 - :ref:`bool<class_bool>` **operator !=** **(** :ref:`Dictionary<class_Dictionary>` right **)**
 
 ----
 
 .. _class_Dictionary_operator_eq_bool:
 
-- :ref:`bool<class_bool>` **operator ==** **(** **)**
-
-----
-
 - :ref:`bool<class_bool>` **operator ==** **(** :ref:`Dictionary<class_Dictionary>` right **)**
 
 ----

+ 43 - 27
classes/class_directionallight3d.rst

@@ -26,27 +26,25 @@ Tutorials
 Properties
 ----------
 
-+-------------------------------------------------------+-----------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------+
-| :ref:`bool<class_bool>`                               | :ref:`directional_shadow_blend_splits<class_DirectionalLight3D_property_directional_shadow_blend_splits>` | ``false``                                                              |
-+-------------------------------------------------------+-----------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------+
-| :ref:`float<class_float>`                             | :ref:`directional_shadow_fade_start<class_DirectionalLight3D_property_directional_shadow_fade_start>`     | ``0.8``                                                                |
-+-------------------------------------------------------+-----------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------+
-| :ref:`float<class_float>`                             | :ref:`directional_shadow_max_distance<class_DirectionalLight3D_property_directional_shadow_max_distance>` | ``100.0``                                                              |
-+-------------------------------------------------------+-----------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------+
-| :ref:`ShadowMode<enum_DirectionalLight3D_ShadowMode>` | :ref:`directional_shadow_mode<class_DirectionalLight3D_property_directional_shadow_mode>`                 | ``2``                                                                  |
-+-------------------------------------------------------+-----------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------+
-| :ref:`float<class_float>`                             | :ref:`directional_shadow_pancake_size<class_DirectionalLight3D_property_directional_shadow_pancake_size>` | ``20.0``                                                               |
-+-------------------------------------------------------+-----------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------+
-| :ref:`float<class_float>`                             | :ref:`directional_shadow_split_1<class_DirectionalLight3D_property_directional_shadow_split_1>`           | ``0.1``                                                                |
-+-------------------------------------------------------+-----------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------+
-| :ref:`float<class_float>`                             | :ref:`directional_shadow_split_2<class_DirectionalLight3D_property_directional_shadow_split_2>`           | ``0.2``                                                                |
-+-------------------------------------------------------+-----------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------+
-| :ref:`float<class_float>`                             | :ref:`directional_shadow_split_3<class_DirectionalLight3D_property_directional_shadow_split_3>`           | ``0.5``                                                                |
-+-------------------------------------------------------+-----------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------+
-| :ref:`float<class_float>`                             | shadow_bias                                                                                               | ``0.1`` (overrides :ref:`Light3D<class_Light3D_property_shadow_bias>`) |
-+-------------------------------------------------------+-----------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------+
-| :ref:`bool<class_bool>`                               | :ref:`use_in_sky_only<class_DirectionalLight3D_property_use_in_sky_only>`                                 | ``false``                                                              |
-+-------------------------------------------------------+-----------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------+
++-------------------------------------------------------+-----------------------------------------------------------------------------------------------------------+-----------+
+| :ref:`bool<class_bool>`                               | :ref:`directional_shadow_blend_splits<class_DirectionalLight3D_property_directional_shadow_blend_splits>` | ``false`` |
++-------------------------------------------------------+-----------------------------------------------------------------------------------------------------------+-----------+
+| :ref:`float<class_float>`                             | :ref:`directional_shadow_fade_start<class_DirectionalLight3D_property_directional_shadow_fade_start>`     | ``0.8``   |
++-------------------------------------------------------+-----------------------------------------------------------------------------------------------------------+-----------+
+| :ref:`float<class_float>`                             | :ref:`directional_shadow_max_distance<class_DirectionalLight3D_property_directional_shadow_max_distance>` | ``100.0`` |
++-------------------------------------------------------+-----------------------------------------------------------------------------------------------------------+-----------+
+| :ref:`ShadowMode<enum_DirectionalLight3D_ShadowMode>` | :ref:`directional_shadow_mode<class_DirectionalLight3D_property_directional_shadow_mode>`                 | ``2``     |
++-------------------------------------------------------+-----------------------------------------------------------------------------------------------------------+-----------+
+| :ref:`float<class_float>`                             | :ref:`directional_shadow_pancake_size<class_DirectionalLight3D_property_directional_shadow_pancake_size>` | ``20.0``  |
++-------------------------------------------------------+-----------------------------------------------------------------------------------------------------------+-----------+
+| :ref:`float<class_float>`                             | :ref:`directional_shadow_split_1<class_DirectionalLight3D_property_directional_shadow_split_1>`           | ``0.1``   |
++-------------------------------------------------------+-----------------------------------------------------------------------------------------------------------+-----------+
+| :ref:`float<class_float>`                             | :ref:`directional_shadow_split_2<class_DirectionalLight3D_property_directional_shadow_split_2>`           | ``0.2``   |
++-------------------------------------------------------+-----------------------------------------------------------------------------------------------------------+-----------+
+| :ref:`float<class_float>`                             | :ref:`directional_shadow_split_3<class_DirectionalLight3D_property_directional_shadow_split_3>`           | ``0.5``   |
++-------------------------------------------------------+-----------------------------------------------------------------------------------------------------------+-----------+
+| :ref:`SkyMode<enum_DirectionalLight3D_SkyMode>`       | :ref:`sky_mode<class_DirectionalLight3D_property_sky_mode>`                                               | ``0``     |
++-------------------------------------------------------+-----------------------------------------------------------------------------------------------------------+-----------+
 
 Enumerations
 ------------
@@ -67,6 +65,24 @@ enum **ShadowMode**:
 
 - **SHADOW_PARALLEL_4_SPLITS** = **2** --- Splits the view frustum in 4 areas, each with its own shadow map. This is the slowest directional shadow mode.
 
+----
+
+.. _enum_DirectionalLight3D_SkyMode:
+
+.. _class_DirectionalLight3D_constant_SKY_MODE_LIGHT_AND_SKY:
+
+.. _class_DirectionalLight3D_constant_SKY_MODE_LIGHT_ONLY:
+
+.. _class_DirectionalLight3D_constant_SKY_MODE_SKY_ONLY:
+
+enum **SkyMode**:
+
+- **SKY_MODE_LIGHT_AND_SKY** = **0** --- Makes the light visible in both scene lighting and sky rendering.
+
+- **SKY_MODE_LIGHT_ONLY** = **1** --- Makes the light visible in scene lighting only (including direct lighting and global illumination). When using this mode, the light will not be visible from sky shaders.
+
+- **SKY_MODE_SKY_ONLY** = **2** --- Makes the light visible to sky shaders only. When using this mode the light will not cast light into the scene (either through direct lighting or through global illumination), but can be accessed through sky shaders. This can be useful, for example, when you want to control sky effects without illuminating the scene (during a night cycle, for example).
+
 Property Descriptions
 ---------------------
 
@@ -198,19 +214,19 @@ The distance from shadow split 2 to split 3. Relative to :ref:`directional_shado
 
 ----
 
-.. _class_DirectionalLight3D_property_use_in_sky_only:
+.. _class_DirectionalLight3D_property_sky_mode:
 
-- :ref:`bool<class_bool>` **use_in_sky_only**
+- :ref:`SkyMode<enum_DirectionalLight3D_SkyMode>` **sky_mode**
 
 +-----------+---------------------+
-| *Default* | ``false``           |
+| *Default* | ``0``               |
 +-----------+---------------------+
-| *Setter*  | set_sky_only(value) |
+| *Setter*  | set_sky_mode(value) |
 +-----------+---------------------+
-| *Getter*  | is_sky_only()       |
+| *Getter*  | get_sky_mode()      |
 +-----------+---------------------+
 
-If ``true``, this ``DirectionalLight3D`` will not be used for anything except sky shaders. Use this for lights that impact your sky shader that you may want to hide from affecting the rest of the scene. For example, you may want to enable this when the sun in your sky shader falls below the horizon.
+Set whether this ``DirectionalLight3D`` is visible in the sky, in the scene, or both in the sky and in the scene. See :ref:`SkyMode<enum_DirectionalLight3D_SkyMode>` for options.
 
 .. |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.)`

+ 3 - 1
classes/class_directory.rst

@@ -356,7 +356,9 @@ Returns one of the :ref:`Error<enum_@GlobalScope_Error>` code constants (``OK``
 
 - :ref:`Error<enum_@GlobalScope_Error>` **remove** **(** :ref:`String<class_String>` path **)**
 
-Deletes the target file or an empty directory. The argument can be relative to the current directory, or an absolute path. If the target directory is not empty, the operation will fail.
+Permanently deletes the target file or an empty directory. The argument can be relative to the current directory, or an absolute path. If the target directory is not empty, the operation will fail.
+
+If you don't want to delete the file/directory permanently, use :ref:`OS.move_to_trash<class_OS_method_move_to_trash>` instead.
 
 Returns one of the :ref:`Error<enum_@GlobalScope_Error>` code constants (``OK`` on success).
 

Plik diff jest za duży
+ 714 - 238
classes/class_displayserver.rst


+ 2 - 2
classes/class_editorexportplugin.rst

@@ -48,7 +48,7 @@ Methods
 +------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
 | void | :ref:`add_osx_plugin_file<class_EditorExportPlugin_method_add_osx_plugin_file>` **(** :ref:`String<class_String>` path **)**                                                                                                                          |
 +------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| void | :ref:`add_shared_object<class_EditorExportPlugin_method_add_shared_object>` **(** :ref:`String<class_String>` path, :ref:`PackedStringArray<class_PackedStringArray>` tags **)**                                                                      |
+| void | :ref:`add_shared_object<class_EditorExportPlugin_method_add_shared_object>` **(** :ref:`String<class_String>` path, :ref:`PackedStringArray<class_PackedStringArray>` tags, :ref:`String<class_String>` target **)**                                  |
 +------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
 | void | :ref:`skip<class_EditorExportPlugin_method_skip>` **(** **)**                                                                                                                                                                                         |
 +------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
@@ -162,7 +162,7 @@ Adds file or directory matching ``path`` to ``PlugIns`` directory of macOS app b
 
 .. _class_EditorExportPlugin_method_add_shared_object:
 
-- void **add_shared_object** **(** :ref:`String<class_String>` path, :ref:`PackedStringArray<class_PackedStringArray>` tags **)**
+- void **add_shared_object** **(** :ref:`String<class_String>` path, :ref:`PackedStringArray<class_PackedStringArray>` tags, :ref:`String<class_String>` target **)**
 
 Adds a shared object or a directory containing only shared objects with the given ``tags`` and destination ``path``.
 

+ 18 - 24
classes/class_editorfiledialog.rst

@@ -19,11 +19,11 @@ Properties
 +-------------------------------------------------------+---------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------+
 | :ref:`Access<enum_EditorFileDialog_Access>`           | :ref:`access<class_EditorFileDialog_property_access>`                                       | ``0``                                                                                    |
 +-------------------------------------------------------+---------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------+
-| :ref:`String<class_String>`                           | :ref:`current_dir<class_EditorFileDialog_property_current_dir>`                             | ``"res://"``                                                                             |
+| :ref:`String<class_String>`                           | :ref:`current_dir<class_EditorFileDialog_property_current_dir>`                             |                                                                                          |
 +-------------------------------------------------------+---------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------+
-| :ref:`String<class_String>`                           | :ref:`current_file<class_EditorFileDialog_property_current_file>`                           | ``""``                                                                                   |
+| :ref:`String<class_String>`                           | :ref:`current_file<class_EditorFileDialog_property_current_file>`                           |                                                                                          |
 +-------------------------------------------------------+---------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------+
-| :ref:`String<class_String>`                           | :ref:`current_path<class_EditorFileDialog_property_current_path>`                           | ``"res://"``                                                                             |
+| :ref:`String<class_String>`                           | :ref:`current_path<class_EditorFileDialog_property_current_path>`                           |                                                                                          |
 +-------------------------------------------------------+---------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------+
 | :ref:`bool<class_bool>`                               | dialog_hide_on_ok                                                                           | ``false`` (overrides :ref:`AcceptDialog<class_AcceptDialog_property_dialog_hide_on_ok>`) |
 +-------------------------------------------------------+---------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------+
@@ -158,13 +158,11 @@ The location from which the user may select a file, including ``res://``, ``user
 
 - :ref:`String<class_String>` **current_dir**
 
-+-----------+------------------------+
-| *Default* | ``"res://"``           |
-+-----------+------------------------+
-| *Setter*  | set_current_dir(value) |
-+-----------+------------------------+
-| *Getter*  | get_current_dir()      |
-+-----------+------------------------+
++----------+------------------------+
+| *Setter* | set_current_dir(value) |
++----------+------------------------+
+| *Getter* | get_current_dir()      |
++----------+------------------------+
 
 The currently occupied directory.
 
@@ -174,13 +172,11 @@ The currently occupied directory.
 
 - :ref:`String<class_String>` **current_file**
 
-+-----------+-------------------------+
-| *Default* | ``""``                  |
-+-----------+-------------------------+
-| *Setter*  | set_current_file(value) |
-+-----------+-------------------------+
-| *Getter*  | get_current_file()      |
-+-----------+-------------------------+
++----------+-------------------------+
+| *Setter* | set_current_file(value) |
++----------+-------------------------+
+| *Getter* | get_current_file()      |
++----------+-------------------------+
 
 The currently selected file.
 
@@ -190,13 +186,11 @@ The currently selected file.
 
 - :ref:`String<class_String>` **current_path**
 
-+-----------+-------------------------+
-| *Default* | ``"res://"``            |
-+-----------+-------------------------+
-| *Setter*  | set_current_path(value) |
-+-----------+-------------------------+
-| *Getter*  | get_current_path()      |
-+-----------+-------------------------+
++----------+-------------------------+
+| *Setter* | set_current_path(value) |
++----------+-------------------------+
+| *Getter* | get_current_path()      |
++----------+-------------------------+
 
 The file system path in the address bar.
 

+ 37 - 21
classes/class_editorfilesystem.rst

@@ -23,25 +23,27 @@ This object holds information of all resources in the filesystem, their types, e
 Methods
 -------
 
-+-------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------+
-| :ref:`String<class_String>`                                       | :ref:`get_file_type<class_EditorFileSystem_method_get_file_type>` **(** :ref:`String<class_String>` path **)** |const|     |
-+-------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------+
-| :ref:`EditorFileSystemDirectory<class_EditorFileSystemDirectory>` | :ref:`get_filesystem<class_EditorFileSystem_method_get_filesystem>` **(** **)**                                            |
-+-------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------+
-| :ref:`EditorFileSystemDirectory<class_EditorFileSystemDirectory>` | :ref:`get_filesystem_path<class_EditorFileSystem_method_get_filesystem_path>` **(** :ref:`String<class_String>` path **)** |
-+-------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------+
-| :ref:`float<class_float>`                                         | :ref:`get_scanning_progress<class_EditorFileSystem_method_get_scanning_progress>` **(** **)** |const|                      |
-+-------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------+
-| :ref:`bool<class_bool>`                                           | :ref:`is_scanning<class_EditorFileSystem_method_is_scanning>` **(** **)** |const|                                          |
-+-------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------+
-| void                                                              | :ref:`scan<class_EditorFileSystem_method_scan>` **(** **)**                                                                |
-+-------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------+
-| void                                                              | :ref:`scan_sources<class_EditorFileSystem_method_scan_sources>` **(** **)**                                                |
-+-------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------+
-| void                                                              | :ref:`update_file<class_EditorFileSystem_method_update_file>` **(** :ref:`String<class_String>` path **)**                 |
-+-------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------+
-| void                                                              | :ref:`update_script_classes<class_EditorFileSystem_method_update_script_classes>` **(** **)**                              |
-+-------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------+
++-------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`String<class_String>`                                       | :ref:`get_file_type<class_EditorFileSystem_method_get_file_type>` **(** :ref:`String<class_String>` path **)** |const|                  |
++-------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`EditorFileSystemDirectory<class_EditorFileSystemDirectory>` | :ref:`get_filesystem<class_EditorFileSystem_method_get_filesystem>` **(** **)**                                                         |
++-------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`EditorFileSystemDirectory<class_EditorFileSystemDirectory>` | :ref:`get_filesystem_path<class_EditorFileSystem_method_get_filesystem_path>` **(** :ref:`String<class_String>` path **)**              |
++-------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`float<class_float>`                                         | :ref:`get_scanning_progress<class_EditorFileSystem_method_get_scanning_progress>` **(** **)** |const|                                   |
++-------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`bool<class_bool>`                                           | :ref:`is_scanning<class_EditorFileSystem_method_is_scanning>` **(** **)** |const|                                                       |
++-------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------+
+| void                                                              | :ref:`reimport_files<class_EditorFileSystem_method_reimport_files>` **(** :ref:`PackedStringArray<class_PackedStringArray>` files **)** |
++-------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------+
+| void                                                              | :ref:`scan<class_EditorFileSystem_method_scan>` **(** **)**                                                                             |
++-------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------+
+| void                                                              | :ref:`scan_sources<class_EditorFileSystem_method_scan_sources>` **(** **)**                                                             |
++-------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------+
+| void                                                              | :ref:`update_file<class_EditorFileSystem_method_update_file>` **(** :ref:`String<class_String>` path **)**                              |
++-------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------+
+| void                                                              | :ref:`update_script_classes<class_EditorFileSystem_method_update_script_classes>` **(** **)**                                           |
++-------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------+
 
 Signals
 -------
@@ -115,7 +117,19 @@ 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.
+
+----
+
+.. _class_EditorFileSystem_method_reimport_files:
+
+- void **reimport_files** **(** :ref:`PackedStringArray<class_PackedStringArray>` files **)**
+
+Reimports a set of files. Call this if these files or their ``.import`` files were directly edited by script or an external program.
+
+If the file type changed or the file was newly created, use :ref:`update_file<class_EditorFileSystem_method_update_file>` or :ref:`scan<class_EditorFileSystem_method_scan>`.
+
+\ **Note:** This function blocks until the import is finished. However, the main loop iteration, including timers and :ref:`Node._process<class_Node_method__process>`, will occur during the import process due to progress bar updates. Avoid calls to :ref:`reimport_files<class_EditorFileSystem_method_reimport_files>` or :ref:`scan<class_EditorFileSystem_method_scan>` while an import is in progress.
 
 ----
 
@@ -139,7 +153,9 @@ Check if the source of any imported resource changed.
 
 - void **update_file** **(** :ref:`String<class_String>` path **)**
 
-Update a file information. Call this if an external program (not Godot) modified the file.
+Add a file in an existing directory, or schedule file information to be updated on editor restart. Can be used to update text files saved by an external program.
+
+This will not import the file. To reimport, call :ref:`reimport_files<class_EditorFileSystem_method_reimport_files>` or :ref:`scan<class_EditorFileSystem_method_scan>` methods.
 
 ----
 

+ 62 - 0
classes/class_editorfilesystemimportformatsupportquery.rst

@@ -0,0 +1,62 @@
+:github_url: hide
+
+.. Generated automatically by doc/tools/make_rst.py in Godot's source tree.
+.. DO NOT EDIT THIS FILE, but the EditorFileSystemImportFormatSupportQuery.xml source instead.
+.. The source is found in doc/classes or modules/<name>/doc_classes.
+
+.. _class_EditorFileSystemImportFormatSupportQuery:
+
+EditorFileSystemImportFormatSupportQuery
+========================================
+
+**Inherits:** :ref:`RefCounted<class_RefCounted>` **<** :ref:`Object<class_Object>`
+
+Used to query and configure import format support.
+
+Description
+-----------
+
+This class is used to query and configure a certain import format. It is used in conjunction with asset format import plugins.
+
+Methods
+-------
+
++---------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`PackedStringArray<class_PackedStringArray>` | :ref:`_get_file_extensions<class_EditorFileSystemImportFormatSupportQuery_method__get_file_extensions>` **(** **)** |virtual| |const| |
++---------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`bool<class_bool>`                           | :ref:`_is_active<class_EditorFileSystemImportFormatSupportQuery_method__is_active>` **(** **)** |virtual| |const|                     |
++---------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`bool<class_bool>`                           | :ref:`_query<class_EditorFileSystemImportFormatSupportQuery_method__query>` **(** **)** |virtual| |const|                             |
++---------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------+
+
+Method Descriptions
+-------------------
+
+.. _class_EditorFileSystemImportFormatSupportQuery_method__get_file_extensions:
+
+- :ref:`PackedStringArray<class_PackedStringArray>` **_get_file_extensions** **(** **)** |virtual| |const|
+
+Return the file extensions supported.
+
+----
+
+.. _class_EditorFileSystemImportFormatSupportQuery_method__is_active:
+
+- :ref:`bool<class_bool>` **_is_active** **(** **)** |virtual| |const|
+
+Return whether this importer is active.
+
+----
+
+.. _class_EditorFileSystemImportFormatSupportQuery_method__query:
+
+- :ref:`bool<class_bool>` **_query** **(** **)** |virtual| |const|
+
+Query support. Return false if import must not continue.
+
+.. |virtual| replace:: :abbr:`virtual (This method should typically be overridden by the user to have any effect.)`
+.. |const| replace:: :abbr:`const (This method has no side effects. It doesn't modify any of the instance's member variables.)`
+.. |vararg| replace:: :abbr:`vararg (This method accepts any number of arguments after the ones described here.)`
+.. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)`
+.. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)`
+.. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)`

+ 11 - 3
classes/class_editorinspector.rst

@@ -11,14 +11,22 @@ EditorInspector
 
 **Inherits:** :ref:`ScrollContainer<class_ScrollContainer>` **<** :ref:`Container<class_Container>` **<** :ref:`Control<class_Control>` **<** :ref:`CanvasItem<class_CanvasItem>` **<** :ref:`Node<class_Node>` **<** :ref:`Object<class_Object>`
 
-A tab used to edit properties of the selected node.
+A control used to edit properties of an object.
 
 Description
 -----------
 
-The editor inspector is by default located on the right-hand side of the editor. It's used to edit the properties of the selected node. For example, you can select a node such as the Sprite2D then edit its transform through the inspector tool. The editor inspector is an essential tool in the game development workflow.
+This is the control that implements property editing in the editor's Settings dialogs, the Inspector dock, etc. To get the ``EditorInspector`` used in the editor's Inspector dock, use :ref:`EditorInterface.get_inspector<class_EditorInterface_method_get_inspector>`.
 
-\ **Note:** This class shouldn't be instantiated directly. Instead, access the singleton using :ref:`EditorInterface.get_inspector<class_EditorInterface_method_get_inspector>`.
+\ ``EditorInspector`` will show properties in the same order as the array returned by :ref:`Object.get_property_list<class_Object_method_get_property_list>`.
+
+If a property's name is path-like (i.e. if it contains forward slashes), ``EditorInspector`` will create nested sections for "directories" along the path. For example, if a property is named ``highlighting/gdscript/node_path_color``, it will be shown as "Node Path Color" inside the "GDScript" section nested inside the "Highlighting" section.
+
+If a property has :ref:`@GlobalScope.PROPERTY_USAGE_GROUP<class_@GlobalScope_constant_PROPERTY_USAGE_GROUP>` usage, it will group subsequent properties whose name starts with the property's hint string. The group ends when a property does not start with that hint string or when a new group starts. An empty group name effectively ends the current group. ``EditorInspector`` will create a top-level section for each group. For example, if a property with group usage is named ``Collide With`` and its hint string is ``collide_with_``, a subsequent ``collide_with_area`` property will be shown as "Area" inside the "Collide With" section.
+
+If a property has :ref:`@GlobalScope.PROPERTY_USAGE_SUBGROUP<class_@GlobalScope_constant_PROPERTY_USAGE_SUBGROUP>` usage, a subgroup will be created in the same way as a group, and a second-level section will be created for each subgroup.
+
+\ **Note:** Unlike sections created from path-like property names, ``EditorInspector`` won't capitalize the name for sections created from groups. So properties with group usage usually use capitalized names instead of snake_cased names.
 
 Properties
 ----------

+ 2 - 2
classes/class_editorinspectorplugin.rst

@@ -53,7 +53,7 @@ Methods
 +-------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
 | void                    | :ref:`add_custom_control<class_EditorInspectorPlugin_method_add_custom_control>` **(** :ref:`Control<class_Control>` control **)**                                                                                                                                                                                                           |
 +-------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| void                    | :ref:`add_property_editor<class_EditorInspectorPlugin_method_add_property_editor>` **(** :ref:`String<class_String>` property, :ref:`Control<class_Control>` editor **)**                                                                                                                                                                    |
+| void                    | :ref:`add_property_editor<class_EditorInspectorPlugin_method_add_property_editor>` **(** :ref:`String<class_String>` property, :ref:`Control<class_Control>` editor, :ref:`bool<class_bool>` add_to_end=false **)**                                                                                                                          |
 +-------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
 | void                    | :ref:`add_property_editor_for_multiple_properties<class_EditorInspectorPlugin_method_add_property_editor_for_multiple_properties>` **(** :ref:`String<class_String>` label, :ref:`PackedStringArray<class_PackedStringArray>` properties, :ref:`Control<class_Control>` editor **)**                                                         |
 +-------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
@@ -119,7 +119,7 @@ Adds a custom control, which is not necessarily a property editor.
 
 .. _class_EditorInspectorPlugin_method_add_property_editor:
 
-- void **add_property_editor** **(** :ref:`String<class_String>` property, :ref:`Control<class_Control>` editor **)**
+- void **add_property_editor** **(** :ref:`String<class_String>` property, :ref:`Control<class_Control>` editor, :ref:`bool<class_bool>` add_to_end=false **)**
 
 Adds a property editor for an individual property. The ``editor`` control must extend :ref:`EditorProperty<class_EditorProperty>`.
 

+ 11 - 1
classes/class_editorplugin.rst

@@ -107,6 +107,8 @@ Methods
 +-----------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
 | :ref:`EditorInterface<class_EditorInterface>`       | :ref:`get_editor_interface<class_EditorPlugin_method_get_editor_interface>` **(** **)**                                                                                                                                                               |
 +-----------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`PopupMenu<class_PopupMenu>`                   | :ref:`get_export_as_menu<class_EditorPlugin_method_get_export_as_menu>` **(** **)**                                                                                                                                                                   |
++-----------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
 | :ref:`ScriptCreateDialog<class_ScriptCreateDialog>` | :ref:`get_script_create_dialog<class_EditorPlugin_method_get_script_create_dialog>` **(** **)**                                                                                                                                                       |
 +-----------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
 | :ref:`UndoRedo<class_UndoRedo>`                     | :ref:`get_undo_redo<class_EditorPlugin_method_get_undo_redo>` **(** **)**                                                                                                                                                                             |
@@ -855,11 +857,19 @@ Returns the :ref:`EditorInterface<class_EditorInterface>` object that gives you
 
 ----
 
+.. _class_EditorPlugin_method_get_export_as_menu:
+
+- :ref:`PopupMenu<class_PopupMenu>` **get_export_as_menu** **(** **)**
+
+Returns the :ref:`PopupMenu<class_PopupMenu>` under **Scene > Export As...**.
+
+----
+
 .. _class_EditorPlugin_method_get_script_create_dialog:
 
 - :ref:`ScriptCreateDialog<class_ScriptCreateDialog>` **get_script_create_dialog** **(** **)**
 
-Gets the Editor's dialogue used for making scripts.
+Gets the Editor's dialog used for making scripts.
 
 \ **Note:** Users can configure it before use.
 

+ 17 - 21
classes/class_editorsceneformatimporter.rst

@@ -11,7 +11,7 @@ EditorSceneFormatImporter
 
 **Inherits:** :ref:`RefCounted<class_RefCounted>` **<** :ref:`Object<class_Object>`
 
-**Inherited By:** :ref:`EditorSceneFormatImporterFBX<class_EditorSceneFormatImporterFBX>`, :ref:`EditorSceneFormatImporterGLTF<class_EditorSceneFormatImporterGLTF>`
+**Inherited By:** :ref:`EditorSceneFormatImporterBlend<class_EditorSceneFormatImporterBlend>`, :ref:`EditorSceneFormatImporterFBX<class_EditorSceneFormatImporterFBX>`, :ref:`EditorSceneFormatImporterGLTF<class_EditorSceneFormatImporterGLTF>`
 
 Imports scenes from third-parties' 3D files.
 
@@ -25,19 +25,17 @@ To use ``EditorSceneFormatImporter``, register it using the :ref:`EditorPlugin.a
 Methods
 -------
 
-+---------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`PackedStringArray<class_PackedStringArray>` | :ref:`_get_extensions<class_EditorSceneFormatImporter_method__get_extensions>` **(** **)** |virtual| |const|                                                                                                                                        |
-+---------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`int<class_int>`                             | :ref:`_get_import_flags<class_EditorSceneFormatImporter_method__get_import_flags>` **(** **)** |virtual| |const|                                                                                                                                    |
-+---------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| void                                              | :ref:`_get_import_options<class_EditorSceneFormatImporter_method__get_import_options>` **(** :ref:`String<class_String>` path **)** |virtual|                                                                                                       |
-+---------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`Variant<class_Variant>`                     | :ref:`_get_option_visibility<class_EditorSceneFormatImporter_method__get_option_visibility>` **(** :ref:`String<class_String>` path, :ref:`String<class_String>` option **)** |virtual| |const|                                                     |
-+---------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`Animation<class_Animation>`                 | :ref:`_import_animation<class_EditorSceneFormatImporter_method__import_animation>` **(** :ref:`String<class_String>` path, :ref:`int<class_int>` flags, :ref:`Dictionary<class_Dictionary>` options, :ref:`int<class_int>` bake_fps **)** |virtual| |
-+---------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`Object<class_Object>`                       | :ref:`_import_scene<class_EditorSceneFormatImporter_method__import_scene>` **(** :ref:`String<class_String>` path, :ref:`int<class_int>` flags, :ref:`Dictionary<class_Dictionary>` options, :ref:`int<class_int>` bake_fps **)** |virtual|         |
-+---------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
++---------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`PackedStringArray<class_PackedStringArray>` | :ref:`_get_extensions<class_EditorSceneFormatImporter_method__get_extensions>` **(** **)** |virtual| |const|                                                                                                                                |
++---------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`int<class_int>`                             | :ref:`_get_import_flags<class_EditorSceneFormatImporter_method__get_import_flags>` **(** **)** |virtual| |const|                                                                                                                            |
++---------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| void                                              | :ref:`_get_import_options<class_EditorSceneFormatImporter_method__get_import_options>` **(** :ref:`String<class_String>` path **)** |virtual|                                                                                               |
++---------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`Variant<class_Variant>`                     | :ref:`_get_option_visibility<class_EditorSceneFormatImporter_method__get_option_visibility>` **(** :ref:`String<class_String>` path, :ref:`bool<class_bool>` for_animation, :ref:`String<class_String>` option **)** |virtual| |const|      |
++---------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`Object<class_Object>`                       | :ref:`_import_scene<class_EditorSceneFormatImporter_method__import_scene>` **(** :ref:`String<class_String>` path, :ref:`int<class_int>` flags, :ref:`Dictionary<class_Dictionary>` options, :ref:`int<class_int>` bake_fps **)** |virtual| |
++---------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
 
 Constants
 ---------
@@ -52,6 +50,8 @@ Constants
 
 .. _class_EditorSceneFormatImporter_constant_IMPORT_USE_NAMED_SKIN_BINDS:
 
+.. _class_EditorSceneFormatImporter_constant_IMPORT_DISCARD_MESHES_AND_MATERIALS:
+
 - **IMPORT_SCENE** = **1**
 
 - **IMPORT_ANIMATION** = **2**
@@ -62,6 +62,8 @@ Constants
 
 - **IMPORT_USE_NAMED_SKIN_BINDS** = **16**
 
+- **IMPORT_DISCARD_MESHES_AND_MATERIALS** = **32**
+
 Method Descriptions
 -------------------
 
@@ -85,13 +87,7 @@ Method Descriptions
 
 .. _class_EditorSceneFormatImporter_method__get_option_visibility:
 
-- :ref:`Variant<class_Variant>` **_get_option_visibility** **(** :ref:`String<class_String>` path, :ref:`String<class_String>` option **)** |virtual| |const|
-
-----
-
-.. _class_EditorSceneFormatImporter_method__import_animation:
-
-- :ref:`Animation<class_Animation>` **_import_animation** **(** :ref:`String<class_String>` path, :ref:`int<class_int>` flags, :ref:`Dictionary<class_Dictionary>` options, :ref:`int<class_int>` bake_fps **)** |virtual|
+- :ref:`Variant<class_Variant>` **_get_option_visibility** **(** :ref:`String<class_String>` path, :ref:`bool<class_bool>` for_animation, :ref:`String<class_String>` option **)** |virtual| |const|
 
 ----
 

+ 34 - 0
classes/class_editorsceneformatimporterblend.rst

@@ -0,0 +1,34 @@
+:github_url: hide
+
+.. Generated automatically by doc/tools/make_rst.py in Godot's source tree.
+.. DO NOT EDIT THIS FILE, but the EditorSceneFormatImporterBlend.xml source instead.
+.. The source is found in doc/classes or modules/<name>/doc_classes.
+
+.. _class_EditorSceneFormatImporterBlend:
+
+EditorSceneFormatImporterBlend
+==============================
+
+**Inherits:** :ref:`EditorSceneFormatImporter<class_EditorSceneFormatImporter>` **<** :ref:`RefCounted<class_RefCounted>` **<** :ref:`Object<class_Object>`
+
+Importer for Blender's ``.blend`` scene file format.
+
+Description
+-----------
+
+Imports Blender scenes in the ``.blend`` file format through the glTF 2.0 3D import pipeline. This importer requires Blender to be installed by the user, so that it can be used to export the scene as glTF 2.0.
+
+The location of the Blender binary is set via the ``filesystem/import/blender/blender3_path`` editor setting.
+
+This importer is only used if :ref:`ProjectSettings.filesystem/import/blender/enabled<class_ProjectSettings_property_filesystem/import/blender/enabled>` is enabled, otherwise ``.blend`` files present in the project folder are not imported.
+
+Blend import requires Blender 3.0.
+
+Internally, the EditorSceneFormatImporterBlend uses the Blender glTF "Use Original" mode to reference external textures.
+
+.. |virtual| replace:: :abbr:`virtual (This method should typically be overridden by the user to have any effect.)`
+.. |const| replace:: :abbr:`const (This method has no side effects. It doesn't modify any of the instance's member variables.)`
+.. |vararg| replace:: :abbr:`vararg (This method accepts any number of arguments after the ones described here.)`
+.. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)`
+.. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)`
+.. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)`

+ 6 - 25
classes/class_editorsceneformatimporterfbx.rst

@@ -11,35 +11,16 @@ EditorSceneFormatImporterFBX
 
 **Inherits:** :ref:`EditorSceneFormatImporter<class_EditorSceneFormatImporter>` **<** :ref:`RefCounted<class_RefCounted>` **<** :ref:`Object<class_Object>`
 
-FBX 3D asset importer.
+Importer for the ``.fbx`` scene file format.
 
 Description
 -----------
 
-This is an FBX 3D asset importer with full support for most FBX features.
-
-If exporting a FBX scene from Autodesk Maya, use these FBX export settings:
-
-::
-
-    - Smoothing Groups
-    - Smooth Mesh
-    - Triangluate (for meshes with blend shapes)
-    - Bake Animation
-    - Resample All
-    - Deformed Models
-    - Skins
-    - Blend Shapes
-    - Curve Filters
-    - Constant Key Reducer
-    - Auto Tangents Only
-    - *Do not check* Constraints (as it will break the file)
-    - Can check Embed Media (embeds textures into the exported FBX file)
-      - Note that when importing embedded media, the texture and mesh will be a single immutable file.
-      - You will have to re-export then re-import the FBX if the texture has changed.
-    - Units: Centimeters
-    - Up Axis: Y
-    - Binary format in FBX 2017
+Imports Autodesk FBX 3D scenes by way of converting them to glTF 2.0 using the FBX2glTF command line tool.
+
+The location of the FBX2glTF binary is set via the ``filesystem/import/fbx/fbx2gltf_path`` editor setting.
+
+This importer is only used if :ref:`ProjectSettings.filesystem/import/fbx/enabled<class_ProjectSettings_property_filesystem/import/fbx/enabled>` is enabled, otherwise ``.fbx`` files present in the project folder are not imported.
 
 .. |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.)`

+ 4 - 4
classes/class_editorscenepostimportplugin.rst

@@ -28,9 +28,9 @@ Methods
 +-------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
 | :ref:`Variant<class_Variant>` | :ref:`_get_internal_option_update_view_required<class_EditorScenePostImportPlugin_method__get_internal_option_update_view_required>` **(** :ref:`int<class_int>` category, :ref:`String<class_String>` option **)** |virtual| |const|                                                                                                                                                                   |
 +-------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`Variant<class_Variant>` | :ref:`_get_internal_option_visibility<class_EditorScenePostImportPlugin_method__get_internal_option_visibility>` **(** :ref:`int<class_int>` category, :ref:`String<class_String>` option **)** |virtual| |const|                                                                                                                                                                                       |
+| :ref:`Variant<class_Variant>` | :ref:`_get_internal_option_visibility<class_EditorScenePostImportPlugin_method__get_internal_option_visibility>` **(** :ref:`int<class_int>` category, :ref:`bool<class_bool>` for_animation, :ref:`String<class_String>` option **)** |virtual| |const|                                                                                                                                                |
 +-------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`Variant<class_Variant>` | :ref:`_get_option_visibility<class_EditorScenePostImportPlugin_method__get_option_visibility>` **(** :ref:`String<class_String>` path, :ref:`String<class_String>` option **)** |virtual| |const|                                                                                                                                                                                                       |
+| :ref:`Variant<class_Variant>` | :ref:`_get_option_visibility<class_EditorScenePostImportPlugin_method__get_option_visibility>` **(** :ref:`String<class_String>` path, :ref:`bool<class_bool>` for_animation, :ref:`String<class_String>` option **)** |virtual| |const|                                                                                                                                                                |
 +-------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
 | void                          | :ref:`_internal_process<class_EditorScenePostImportPlugin_method__internal_process>` **(** :ref:`int<class_int>` category, :ref:`Node<class_Node>` base_node, :ref:`Node<class_Node>` node, :ref:`Resource<class_Resource>` resource **)** |virtual|                                                                                                                                                    |
 +-------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
@@ -109,7 +109,7 @@ Return true whether updating the 3D view of the import dialog needs to be update
 
 .. _class_EditorScenePostImportPlugin_method__get_internal_option_visibility:
 
-- :ref:`Variant<class_Variant>` **_get_internal_option_visibility** **(** :ref:`int<class_int>` category, :ref:`String<class_String>` option **)** |virtual| |const|
+- :ref:`Variant<class_Variant>` **_get_internal_option_visibility** **(** :ref:`int<class_int>` category, :ref:`bool<class_bool>` for_animation, :ref:`String<class_String>` option **)** |virtual| |const|
 
 Return true or false whether a given option should be visible. Return null to ignore.
 
@@ -117,7 +117,7 @@ Return true or false whether a given option should be visible. Return null to ig
 
 .. _class_EditorScenePostImportPlugin_method__get_option_visibility:
 
-- :ref:`Variant<class_Variant>` **_get_option_visibility** **(** :ref:`String<class_String>` path, :ref:`String<class_String>` option **)** |virtual| |const|
+- :ref:`Variant<class_Variant>` **_get_option_visibility** **(** :ref:`String<class_String>` path, :ref:`bool<class_bool>` for_animation, :ref:`String<class_String>` option **)** |virtual| |const|
 
 Return true or false whether a given option should be visible. Return null to ignore.
 

+ 27 - 11
classes/class_editorspinslider.rst

@@ -21,17 +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:`String<class_String>`              | :ref:`suffix<class_EditorSpinSlider_property_suffix>`       | ``""``                                                              |
-+------------------------------------------+-------------------------------------------------------------+---------------------------------------------------------------------+
++-----------------------------+-----------------------------------------------------------------+-----------+
+| :ref:`bool<class_bool>`     | :ref:`flat<class_EditorSpinSlider_property_flat>`               | ``false`` |
++-----------------------------+-----------------------------------------------------------------+-----------+
+| :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`` |
++-----------------------------+-----------------------------------------------------------------+-----------+
+| :ref:`String<class_String>` | :ref:`suffix<class_EditorSpinSlider_property_suffix>`           | ``""``    |
++-----------------------------+-----------------------------------------------------------------+-----------+
 
 Property Descriptions
 ---------------------
@@ -50,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**

+ 24 - 0
classes/class_engine.rst

@@ -59,6 +59,10 @@ Methods
 +---------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------+
 | :ref:`int<class_int>`                             | :ref:`get_process_frames<class_Engine_method_get_process_frames>` **(** **)** |const|                                                                        |
 +---------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`ScriptLanguage<class_ScriptLanguage>`       | :ref:`get_script_language<class_Engine_method_get_script_language>` **(** :ref:`int<class_int>` index **)** |const|                                          |
++---------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`int<class_int>`                             | :ref:`get_script_language_count<class_Engine_method_get_script_language_count>` **(** **)**                                                                  |
++---------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------+
 | :ref:`Object<class_Object>`                       | :ref:`get_singleton<class_Engine_method_get_singleton>` **(** :ref:`StringName<class_StringName>` name **)** |const|                                         |
 +---------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------+
 | :ref:`PackedStringArray<class_PackedStringArray>` | :ref:`get_singleton_list<class_Engine_method_get_singleton_list>` **(** **)** |const|                                                                        |
@@ -71,6 +75,8 @@ Methods
 +---------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------+
 | :ref:`bool<class_bool>`                           | :ref:`is_in_physics_frame<class_Engine_method_is_in_physics_frame>` **(** **)** |const|                                                                      |
 +---------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| void                                              | :ref:`register_script_language<class_Engine_method_register_script_language>` **(** :ref:`ScriptLanguage<class_ScriptLanguage>` language **)**               |
++---------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------+
 | void                                              | :ref:`register_singleton<class_Engine_method_register_singleton>` **(** :ref:`StringName<class_StringName>` name, :ref:`Object<class_Object>` instance **)** |
 +---------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------+
 | void                                              | :ref:`unregister_singleton<class_Engine_method_unregister_singleton>` **(** :ref:`StringName<class_StringName>` name **)**                                   |
@@ -286,6 +292,18 @@ Returns the total number of frames passed since engine initialization which is a
 
 ----
 
+.. _class_Engine_method_get_script_language:
+
+- :ref:`ScriptLanguage<class_ScriptLanguage>` **get_script_language** **(** :ref:`int<class_int>` index **)** |const|
+
+----
+
+.. _class_Engine_method_get_script_language_count:
+
+- :ref:`int<class_int>` **get_script_language_count** **(** **)**
+
+----
+
 .. _class_Engine_method_get_singleton:
 
 - :ref:`Object<class_Object>` **get_singleton** **(** :ref:`StringName<class_StringName>` name **)** |const|
@@ -386,6 +404,12 @@ Returns ``true`` if the game is inside the fixed process and physics phase of th
 
 ----
 
+.. _class_Engine_method_register_script_language:
+
+- void **register_script_language** **(** :ref:`ScriptLanguage<class_ScriptLanguage>` language **)**
+
+----
+
 .. _class_Engine_method_register_singleton:
 
 - void **register_singleton** **(** :ref:`StringName<class_StringName>` name, :ref:`Object<class_Object>` instance **)**

+ 9 - 9
classes/class_engineprofiler.rst

@@ -23,13 +23,13 @@ See :ref:`EngineDebugger<class_EngineDebugger>` and :ref:`EditorDebuggerPlugin<c
 Methods
 -------
 
-+------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| void | :ref:`_add_frame<class_EngineProfiler_method__add_frame>` **(** :ref:`Array<class_Array>` data **)** |virtual|                                                                                                                        |
-+------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| void | :ref:`_tick<class_EngineProfiler_method__tick>` **(** :ref:`float<class_float>` frame_time, :ref:`float<class_float>` idle_time, :ref:`float<class_float>` physics_time, :ref:`float<class_float>` physics_frame_time **)** |virtual| |
-+------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| void | :ref:`_toggle<class_EngineProfiler_method__toggle>` **(** :ref:`bool<class_bool>` enable, :ref:`Array<class_Array>` options **)** |virtual|                                                                                           |
-+------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
++------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| void | :ref:`_add_frame<class_EngineProfiler_method__add_frame>` **(** :ref:`Array<class_Array>` data **)** |virtual|                                                                                                                           |
++------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| void | :ref:`_tick<class_EngineProfiler_method__tick>` **(** :ref:`float<class_float>` frame_time, :ref:`float<class_float>` process_time, :ref:`float<class_float>` physics_time, :ref:`float<class_float>` physics_frame_time **)** |virtual| |
++------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| void | :ref:`_toggle<class_EngineProfiler_method__toggle>` **(** :ref:`bool<class_bool>` enable, :ref:`Array<class_Array>` options **)** |virtual|                                                                                              |
++------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
 
 Method Descriptions
 -------------------
@@ -44,9 +44,9 @@ Called when data is added to profiler using :ref:`EngineDebugger.profiler_add_fr
 
 .. _class_EngineProfiler_method__tick:
 
-- void **_tick** **(** :ref:`float<class_float>` frame_time, :ref:`float<class_float>` idle_time, :ref:`float<class_float>` physics_time, :ref:`float<class_float>` physics_frame_time **)** |virtual|
+- void **_tick** **(** :ref:`float<class_float>` frame_time, :ref:`float<class_float>` process_time, :ref:`float<class_float>` physics_time, :ref:`float<class_float>` physics_frame_time **)** |virtual|
 
-Called once every engine iteration when the profiler is active with information about the current frame.
+Called once every engine iteration when the profiler is active with information about the current frame. All time values are in seconds. Lower values represent faster processing times and are therefore considered better.
 
 ----
 

+ 152 - 104
classes/class_environment.rst

@@ -167,16 +167,6 @@ Properties
 +------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------+-----------------------------+
 | :ref:`Vector3<class_Vector3>`                              | :ref:`sky_rotation<class_Environment_property_sky_rotation>`                                                                 | ``Vector3(0, 0, 0)``        |
 +------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------+-----------------------------+
-| :ref:`float<class_float>`                                  | :ref:`ss_reflections_depth_tolerance<class_Environment_property_ss_reflections_depth_tolerance>`                             | ``0.2``                     |
-+------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------+-----------------------------+
-| :ref:`bool<class_bool>`                                    | :ref:`ss_reflections_enabled<class_Environment_property_ss_reflections_enabled>`                                             | ``false``                   |
-+------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------+-----------------------------+
-| :ref:`float<class_float>`                                  | :ref:`ss_reflections_fade_in<class_Environment_property_ss_reflections_fade_in>`                                             | ``0.15``                    |
-+------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------+-----------------------------+
-| :ref:`float<class_float>`                                  | :ref:`ss_reflections_fade_out<class_Environment_property_ss_reflections_fade_out>`                                           | ``2.0``                     |
-+------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------+-----------------------------+
-| :ref:`int<class_int>`                                      | :ref:`ss_reflections_max_steps<class_Environment_property_ss_reflections_max_steps>`                                         | ``64``                      |
-+------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------+-----------------------------+
 | :ref:`float<class_float>`                                  | :ref:`ssao_ao_channel_affect<class_Environment_property_ssao_ao_channel_affect>`                                             | ``0.0``                     |
 +------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------+-----------------------------+
 | :ref:`float<class_float>`                                  | :ref:`ssao_detail<class_Environment_property_ssao_detail>`                                                                   | ``0.5``                     |
@@ -205,6 +195,16 @@ Properties
 +------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------+-----------------------------+
 | :ref:`float<class_float>`                                  | :ref:`ssil_sharpness<class_Environment_property_ssil_sharpness>`                                                             | ``0.98``                    |
 +------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------+-----------------------------+
+| :ref:`float<class_float>`                                  | :ref:`ssr_depth_tolerance<class_Environment_property_ssr_depth_tolerance>`                                                   | ``0.2``                     |
++------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------+-----------------------------+
+| :ref:`bool<class_bool>`                                    | :ref:`ssr_enabled<class_Environment_property_ssr_enabled>`                                                                   | ``false``                   |
++------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------+-----------------------------+
+| :ref:`float<class_float>`                                  | :ref:`ssr_fade_in<class_Environment_property_ssr_fade_in>`                                                                   | ``0.15``                    |
++------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------+-----------------------------+
+| :ref:`float<class_float>`                                  | :ref:`ssr_fade_out<class_Environment_property_ssr_fade_out>`                                                                 | ``2.0``                     |
++------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------+-----------------------------+
+| :ref:`int<class_int>`                                      | :ref:`ssr_max_steps<class_Environment_property_ssr_max_steps>`                                                               | ``64``                      |
++------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------+-----------------------------+
 | :ref:`float<class_float>`                                  | :ref:`tonemap_exposure<class_Environment_property_tonemap_exposure>`                                                         | ``1.0``                     |
 +------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------+-----------------------------+
 | :ref:`ToneMapper<enum_Environment_ToneMapper>`             | :ref:`tonemap_mode<class_Environment_property_tonemap_mode>`                                                                 | ``0``                       |
@@ -296,9 +296,9 @@ enum **AmbientSource**:
 
 - **AMBIENT_SOURCE_BG** = **0** --- Gather ambient light from whichever source is specified as the background.
 
-- **AMBIENT_SOURCE_DISABLED** = **1** --- Disable ambient light.
+- **AMBIENT_SOURCE_DISABLED** = **1** --- Disable ambient light. This provides a slight performance boost over :ref:`AMBIENT_SOURCE_SKY<class_Environment_constant_AMBIENT_SOURCE_SKY>`.
 
-- **AMBIENT_SOURCE_COLOR** = **2** --- Specify a specific :ref:`Color<class_Color>` for ambient light.
+- **AMBIENT_SOURCE_COLOR** = **2** --- Specify a specific :ref:`Color<class_Color>` for ambient light. This provides a slight performance boost over :ref:`AMBIENT_SOURCE_SKY<class_Environment_constant_AMBIENT_SOURCE_SKY>`.
 
 - **AMBIENT_SOURCE_SKY** = **3** --- Gather ambient light from the :ref:`Sky<class_Sky>` regardless of what the background is.
 
@@ -316,7 +316,7 @@ enum **ReflectionSource**:
 
 - **REFLECTION_SOURCE_BG** = **0** --- Use the background for reflections.
 
-- **REFLECTION_SOURCE_DISABLED** = **1** --- Disable reflections.
+- **REFLECTION_SOURCE_DISABLED** = **1** --- Disable reflections. This provides a slight performance boost over other options.
 
 - **REFLECTION_SOURCE_SKY** = **2** --- Use the :ref:`Sky<class_Sky>` for reflections regardless of what the background is.
 
@@ -334,13 +334,15 @@ enum **ReflectionSource**:
 
 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)``. This avoids clipping bright highlights, but the resulting image can look a bit dull.
 
-- **TONE_MAPPER_REINHARDT** = **1** --- Reinhardt tonemapper operator. Performs a variation on rendered pixels' colors by this formula: ``color = color / (1 + color)``.
+- **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_FILMIC** = **2** --- Filmic tonemapper operator.
+- **TONE_MAPPER_ACES** = **3** --- 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>`.
 
-- **TONE_MAPPER_ACES** = **3** --- Academy Color Encoding System tonemapper operator.
+\ **Note:** This tonemapping operator is called "ACES Fitted" in Godot 3.x.
 
 ----
 
@@ -380,11 +382,11 @@ enum **GlowBlendMode**:
 
 enum **SDFGIYScale**:
 
-- **SDFGI_Y_SCALE_50_PERCENT** = **0**
+- **SDFGI_Y_SCALE_50_PERCENT** = **0** --- Use 50% scale for SDFGI on the Y (vertical) axis. SDFGI cells will be twice as short as they are wide. This allows providing increased GI detail and reduced light leaking with thin floors and ceilings. This is usually the best choice for scenes that don't feature much verticality.
 
-- **SDFGI_Y_SCALE_75_PERCENT** = **1**
+- **SDFGI_Y_SCALE_75_PERCENT** = **1** --- Use 75% scale for SDFGI on the Y (vertical) axis. This is a balance between the 50% and 100% SDFGI Y scales.
 
-- **SDFGI_Y_SCALE_100_PERCENT** = **2**
+- **SDFGI_Y_SCALE_100_PERCENT** = **2** --- Use 100% scale for SDFGI on the Y (vertical) axis. SDFGI cells will be as tall as they are wide. This is usually the best choice for highly vertical scenes. The downside is that light leaking may become more noticeable with thin floors and ceilings.
 
 Property Descriptions
 ---------------------
@@ -479,7 +481,7 @@ The global color saturation value of the rendered scene (default value is 1). Ef
 | *Getter*  | get_ambient_light_color()      |
 +-----------+--------------------------------+
 
-The ambient light's :ref:`Color<class_Color>`.
+The ambient light's :ref:`Color<class_Color>`. Only effective if :ref:`ambient_light_sky_contribution<class_Environment_property_ambient_light_sky_contribution>` is lower than ``1.0`` (exclusive).
 
 ----
 
@@ -495,7 +497,7 @@ The ambient light's :ref:`Color<class_Color>`.
 | *Getter*  | get_ambient_light_energy()      |
 +-----------+---------------------------------+
 
-The ambient light's energy. The higher the value, the stronger the light.
+The ambient light's energy. The higher the value, the stronger the light. Only effective if :ref:`ambient_light_sky_contribution<class_Environment_property_ambient_light_sky_contribution>` is lower than ``1.0`` (exclusive).
 
 ----
 
@@ -529,6 +531,8 @@ Defines the amount of light that the sky brings on the scene. A value of ``0.0``
 | *Getter*  | get_ambient_source()      |
 +-----------+---------------------------+
 
+The ambient light source to use for rendering materials and global illumination.
+
 ----
 
 .. _class_Environment_property_auto_exposure_enabled:
@@ -721,6 +725,8 @@ This is useful to simulate `aerial perspective <https://en.wikipedia.org/wiki/Ae
 | *Getter*  | get_fog_density()      |
 +-----------+------------------------+
 
+The exponential fog density to use. Higher values result in a more dense fog.
+
 ----
 
 .. _class_Environment_property_fog_enabled:
@@ -783,6 +789,8 @@ The density used to increase fog as height decreases. To make fog increase as he
 | *Getter*  | get_fog_light_color()       |
 +-----------+-----------------------------+
 
+The fog's color.
+
 ----
 
 .. _class_Environment_property_fog_light_energy:
@@ -797,6 +805,8 @@ The density used to increase fog as height decreases. To make fog increase as he
 | *Getter*  | get_fog_light_energy()      |
 +-----------+-----------------------------+
 
+The fog's brightness. Higher values result in brighter fog.
+
 ----
 
 .. _class_Environment_property_fog_sun_scatter:
@@ -811,6 +821,8 @@ The density used to increase fog as height decreases. To make fog increase as he
 | *Getter*  | get_fog_sun_scatter()      |
 +-----------+----------------------------+
 
+If set above ``0.0``, renders the scene's directional light(s) in the fog color depending on the view angle. This can be used to give the impression that the sun is "piercing" through the fog.
+
 ----
 
 .. _class_Environment_property_glow_blend_mode:
@@ -921,7 +933,7 @@ The lower threshold of the HDR glow. When using the OpenGL renderer (which doesn
 | *Getter*  | get_glow_intensity()      |
 +-----------+---------------------------+
 
-The overall brightness multiplier of the glow effect. When using the OpenGL renderer, this should be increased to 1.5 to compensate for the lack of HDR rendering.
+The overall brightness multiplier of the glow effect. When using the OpenGL renderer, this should be increased to ``1.5`` to compensate for the lack of HDR rendering.
 
 ----
 
@@ -1081,6 +1093,8 @@ How strong of an impact the :ref:`glow_map<class_Environment_property_glow_map>`
 | *Getter*  | get_glow_mix()      |
 +-----------+---------------------+
 
+When using the :ref:`GLOW_BLEND_MODE_MIX<class_Environment_constant_GLOW_BLEND_MODE_MIX>` :ref:`glow_blend_mode<class_Environment_property_glow_blend_mode>`, this controls how much the source image is blended with the glow layer. A value of ``0.0`` makes the glow rendering invisible, while a value of ``1.0`` is equivalent to :ref:`GLOW_BLEND_MODE_REPLACE<class_Environment_constant_GLOW_BLEND_MODE_REPLACE>`.
+
 ----
 
 .. _class_Environment_property_glow_normalized:
@@ -1127,6 +1141,8 @@ The strength of the glow effect. This applies as the glow is blurred across the
 | *Getter*  | get_reflection_source()      |
 +-----------+------------------------------+
 
+The reflected (specular) light source.
+
 ----
 
 .. _class_Environment_property_sdfgi_bounce_feedback:
@@ -1141,6 +1157,12 @@ The strength of the glow effect. This applies as the glow is blurred across the
 | *Getter*  | get_sdfgi_bounce_feedback()      |
 +-----------+----------------------------------+
 
+The energy multiplier applied to light every time it bounces from a surface when using SDFGI. Values greater than ``0.0`` will simulate multiple bounces, resulting in a more realistic appearance. Increasing :ref:`sdfgi_bounce_feedback<class_Environment_property_sdfgi_bounce_feedback>` generally has no performance impact. See also :ref:`sdfgi_energy<class_Environment_property_sdfgi_energy>`.
+
+\ **Note:** Values greater than ``0.5`` can cause infinite feedback loops and should be avoided in scenes with bright materials.
+
+\ **Note:** If :ref:`sdfgi_bounce_feedback<class_Environment_property_sdfgi_bounce_feedback>` is ``0.0``, indirect lighting will not be represented in reflections as light will only bounce one time.
+
 ----
 
 .. _class_Environment_property_sdfgi_cascade0_distance:
@@ -1155,6 +1177,8 @@ The strength of the glow effect. This applies as the glow is blurred across the
 | *Getter*  | get_sdfgi_cascade0_distance()      |
 +-----------+------------------------------------+
 
+**Note:** This property is linked to :ref:`sdfgi_min_cell_size<class_Environment_property_sdfgi_min_cell_size>` and :ref:`sdfgi_max_distance<class_Environment_property_sdfgi_max_distance>`. Changing its value will automatically change those properties as well.
+
 ----
 
 .. _class_Environment_property_sdfgi_cascades:
@@ -1205,6 +1229,8 @@ If ``true``, enables signed distance field global illumination for meshes that h
 | *Getter*  | get_sdfgi_energy()      |
 +-----------+-------------------------+
 
+The energy multiplier to use for SDFGI. Higher values will result in brighter indirect lighting and reflections. See also :ref:`sdfgi_bounce_feedback<class_Environment_property_sdfgi_bounce_feedback>`.
+
 ----
 
 .. _class_Environment_property_sdfgi_max_distance:
@@ -1219,6 +1245,10 @@ If ``true``, enables signed distance field global illumination for meshes that h
 | *Getter*  | get_sdfgi_max_distance()      |
 +-----------+-------------------------------+
 
+The maximum distance at which SDFGI is visible. Beyond this distance, environment lighting or other sources of GI such as :ref:`ReflectionProbe<class_ReflectionProbe>` will be used as a fallback.
+
+\ **Note:** This property is linked to :ref:`sdfgi_min_cell_size<class_Environment_property_sdfgi_min_cell_size>` and :ref:`sdfgi_cascade0_distance<class_Environment_property_sdfgi_cascade0_distance>`. Changing its value will automatically change those properties as well.
+
 ----
 
 .. _class_Environment_property_sdfgi_min_cell_size:
@@ -1233,6 +1263,10 @@ If ``true``, enables signed distance field global illumination for meshes that h
 | *Getter*  | get_sdfgi_min_cell_size()      |
 +-----------+--------------------------------+
 
+The cell size to use for the closest SDFGI cascade (in 3D units). Lower values allow SDFGI to be more precise up close, at the cost of making SDFGI updates more demanding. This can cause stuttering when the camera moves fast. Higher values allow SDFGI to cover more ground, while also reducing the performance impact of SDFGI updates.
+
+\ **Note:** This property is linked to :ref:`sdfgi_max_distance<class_Environment_property_sdfgi_max_distance>` and :ref:`sdfgi_cascade0_distance<class_Environment_property_sdfgi_cascade0_distance>`. Changing its value will automatically change those properties as well.
+
 ----
 
 .. _class_Environment_property_sdfgi_normal_bias:
@@ -1247,6 +1281,8 @@ If ``true``, enables signed distance field global illumination for meshes that h
 | *Getter*  | get_sdfgi_normal_bias()      |
 +-----------+------------------------------+
 
+The normal bias to use for SDFGI probes. Increasing this value can reduce visible streaking artifacts on sloped surfaces, at the cost of increased light leaking.
+
 ----
 
 .. _class_Environment_property_sdfgi_probe_bias:
@@ -1261,6 +1297,8 @@ If ``true``, enables signed distance field global illumination for meshes that h
 | *Getter*  | get_sdfgi_probe_bias()      |
 +-----------+-----------------------------+
 
+The constant bias to use for SDFGI probes. Increasing this value can reduce visible streaking artifacts on sloped surfaces, at the cost of increased light leaking.
+
 ----
 
 .. _class_Environment_property_sdfgi_read_sky_light:
@@ -1275,6 +1313,8 @@ If ``true``, enables signed distance field global illumination for meshes that h
 | *Getter*  | is_sdfgi_reading_sky_light()    |
 +-----------+---------------------------------+
 
+If ``true``, SDFGI takes the environment lighting into account. This should be set to ``false`` for interior scenes.
+
 ----
 
 .. _class_Environment_property_sdfgi_use_occlusion:
@@ -1289,6 +1329,8 @@ If ``true``, enables signed distance field global illumination for meshes that h
 | *Getter*  | is_sdfgi_using_occlusion()     |
 +-----------+--------------------------------+
 
+If ``true``, SDFGI uses an occlusion detection approach to reduce light leaking. Occlusion may however introduce dark blotches in certain spots, which may be undesired in mostly outdoor scenes. :ref:`sdfgi_use_occlusion<class_Environment_property_sdfgi_use_occlusion>` has a performance impact and should only be enabled when needed.
+
 ----
 
 .. _class_Environment_property_sdfgi_y_scale:
@@ -1303,6 +1345,8 @@ If ``true``, enables signed distance field global illumination for meshes that h
 | *Getter*  | get_sdfgi_y_scale()      |
 +-----------+--------------------------+
 
+The Y scale to use for SDFGI cells. Lower values will result in SDFGI cells being packed together more closely on the Y axis. This is used to balance between quality and covering a lot of vertical ground. :ref:`sdfgi_y_scale<class_Environment_property_sdfgi_y_scale>` should be set depending on how vertical your scene is (and how fast your camera may move on the Y axis).
+
 ----
 
 .. _class_Environment_property_sky:
@@ -1331,6 +1375,8 @@ The :ref:`Sky<class_Sky>` resource used for this ``Environment``.
 | *Getter*  | get_sky_custom_fov()      |
 +-----------+---------------------------+
 
+If set to a value greater than ``0.0``, overrides the field of view to use for sky rendering. If set to ``0.0``, the same FOV as the current :ref:`Camera3D<class_Camera3D>` is used for sky rendering.
+
 ----
 
 .. _class_Environment_property_sky_rotation:
@@ -1345,85 +1391,7 @@ The :ref:`Sky<class_Sky>` resource used for this ``Environment``.
 | *Getter*  | get_sky_rotation()      |
 +-----------+-------------------------+
 
-----
-
-.. _class_Environment_property_ss_reflections_depth_tolerance:
-
-- :ref:`float<class_float>` **ss_reflections_depth_tolerance**
-
-+-----------+--------------------------------+
-| *Default* | ``0.2``                        |
-+-----------+--------------------------------+
-| *Setter*  | set_ssr_depth_tolerance(value) |
-+-----------+--------------------------------+
-| *Getter*  | get_ssr_depth_tolerance()      |
-+-----------+--------------------------------+
-
-The depth tolerance for screen-space reflections.
-
-----
-
-.. _class_Environment_property_ss_reflections_enabled:
-
-- :ref:`bool<class_bool>` **ss_reflections_enabled**
-
-+-----------+------------------------+
-| *Default* | ``false``              |
-+-----------+------------------------+
-| *Setter*  | set_ssr_enabled(value) |
-+-----------+------------------------+
-| *Getter*  | is_ssr_enabled()       |
-+-----------+------------------------+
-
-If ``true``, screen-space reflections are enabled. Screen-space reflections are more accurate than reflections from :ref:`VoxelGI<class_VoxelGI>`\ s or :ref:`ReflectionProbe<class_ReflectionProbe>`\ s, but are slower and can't reflect surfaces occluded by others.
-
-----
-
-.. _class_Environment_property_ss_reflections_fade_in:
-
-- :ref:`float<class_float>` **ss_reflections_fade_in**
-
-+-----------+------------------------+
-| *Default* | ``0.15``               |
-+-----------+------------------------+
-| *Setter*  | set_ssr_fade_in(value) |
-+-----------+------------------------+
-| *Getter*  | get_ssr_fade_in()      |
-+-----------+------------------------+
-
-The fade-in distance for screen-space reflections. Affects the area from the reflected material to the screen-space reflection). Only positive values are valid (negative values will be clamped to ``0.0``).
-
-----
-
-.. _class_Environment_property_ss_reflections_fade_out:
-
-- :ref:`float<class_float>` **ss_reflections_fade_out**
-
-+-----------+-------------------------+
-| *Default* | ``2.0``                 |
-+-----------+-------------------------+
-| *Setter*  | set_ssr_fade_out(value) |
-+-----------+-------------------------+
-| *Getter*  | get_ssr_fade_out()      |
-+-----------+-------------------------+
-
-The fade-out distance for screen-space reflections. Affects the area from the screen-space reflection to the "global" reflection. Only positive values are valid (negative values will be clamped to ``0.0``).
-
-----
-
-.. _class_Environment_property_ss_reflections_max_steps:
-
-- :ref:`int<class_int>` **ss_reflections_max_steps**
-
-+-----------+--------------------------+
-| *Default* | ``64``                   |
-+-----------+--------------------------+
-| *Setter*  | set_ssr_max_steps(value) |
-+-----------+--------------------------+
-| *Getter*  | get_ssr_max_steps()      |
-+-----------+--------------------------+
-
-The maximum number of steps for screen-space reflections. Higher values are slower.
+The rotation to use for sky rendering.
 
 ----
 
@@ -1651,6 +1619,86 @@ The amount that the screen-space indirect lighting effect is allowed to blur ove
 
 ----
 
+.. _class_Environment_property_ssr_depth_tolerance:
+
+- :ref:`float<class_float>` **ssr_depth_tolerance**
+
++-----------+--------------------------------+
+| *Default* | ``0.2``                        |
++-----------+--------------------------------+
+| *Setter*  | set_ssr_depth_tolerance(value) |
++-----------+--------------------------------+
+| *Getter*  | get_ssr_depth_tolerance()      |
++-----------+--------------------------------+
+
+The depth tolerance for screen-space reflections.
+
+----
+
+.. _class_Environment_property_ssr_enabled:
+
+- :ref:`bool<class_bool>` **ssr_enabled**
+
++-----------+------------------------+
+| *Default* | ``false``              |
++-----------+------------------------+
+| *Setter*  | set_ssr_enabled(value) |
++-----------+------------------------+
+| *Getter*  | is_ssr_enabled()       |
++-----------+------------------------+
+
+If ``true``, screen-space reflections are enabled. Screen-space reflections are more accurate than reflections from :ref:`VoxelGI<class_VoxelGI>`\ s or :ref:`ReflectionProbe<class_ReflectionProbe>`\ s, but are slower and can't reflect surfaces occluded by others.
+
+----
+
+.. _class_Environment_property_ssr_fade_in:
+
+- :ref:`float<class_float>` **ssr_fade_in**
+
++-----------+------------------------+
+| *Default* | ``0.15``               |
++-----------+------------------------+
+| *Setter*  | set_ssr_fade_in(value) |
++-----------+------------------------+
+| *Getter*  | get_ssr_fade_in()      |
++-----------+------------------------+
+
+The fade-in distance for screen-space reflections. Affects the area from the reflected material to the screen-space reflection). Only positive values are valid (negative values will be clamped to ``0.0``).
+
+----
+
+.. _class_Environment_property_ssr_fade_out:
+
+- :ref:`float<class_float>` **ssr_fade_out**
+
++-----------+-------------------------+
+| *Default* | ``2.0``                 |
++-----------+-------------------------+
+| *Setter*  | set_ssr_fade_out(value) |
++-----------+-------------------------+
+| *Getter*  | get_ssr_fade_out()      |
++-----------+-------------------------+
+
+The fade-out distance for screen-space reflections. Affects the area from the screen-space reflection to the "global" reflection. Only positive values are valid (negative values will be clamped to ``0.0``).
+
+----
+
+.. _class_Environment_property_ssr_max_steps:
+
+- :ref:`int<class_int>` **ssr_max_steps**
+
++-----------+--------------------------+
+| *Default* | ``64``                   |
++-----------+--------------------------+
+| *Setter*  | set_ssr_max_steps(value) |
++-----------+--------------------------+
+| *Getter*  | get_ssr_max_steps()      |
++-----------+--------------------------+
+
+The maximum number of steps for screen-space reflections. Higher values are slower.
+
+----
+
 .. _class_Environment_property_tonemap_exposure:
 
 - :ref:`float<class_float>` **tonemap_exposure**
@@ -1663,7 +1711,7 @@ The amount that the screen-space indirect lighting effect is allowed to blur ove
 | *Getter*  | get_tonemap_exposure()      |
 +-----------+-----------------------------+
 
-The default exposure used for tonemapping.
+The default exposure used for tonemapping. Higher values result in a brighter image. See also :ref:`tonemap_white<class_Environment_property_tonemap_white>`.
 
 ----
 
@@ -1695,7 +1743,7 @@ The tonemapping mode to use. Tonemapping is the process that "converts" HDR valu
 | *Getter*  | get_tonemap_white()      |
 +-----------+--------------------------+
 
-The white reference value for tonemapping. Only effective if the :ref:`tonemap_mode<class_Environment_property_tonemap_mode>` isn't set to :ref:`TONE_MAPPER_LINEAR<class_Environment_constant_TONE_MAPPER_LINEAR>`.
+The white reference value for tonemapping (also called "whitepoint"). Higher values can make highlights look less blown out, and will also slightly darken the whole scene as a result. Only effective if the :ref:`tonemap_mode<class_Environment_property_tonemap_mode>` isn't set to :ref:`TONE_MAPPER_LINEAR<class_Environment_constant_TONE_MAPPER_LINEAR>`. See also :ref:`tonemap_exposure<class_Environment_property_tonemap_exposure>`.
 
 ----
 

+ 563 - 0
classes/class_fastnoiselite.rst

@@ -0,0 +1,563 @@
+:github_url: hide
+
+.. Generated automatically by doc/tools/make_rst.py in Godot's source tree.
+.. DO NOT EDIT THIS FILE, but the FastNoiseLite.xml source instead.
+.. The source is found in doc/classes or modules/<name>/doc_classes.
+
+.. _class_FastNoiseLite:
+
+FastNoiseLite
+=============
+
+**Inherits:** :ref:`Noise<class_Noise>` **<** :ref:`Resource<class_Resource>` **<** :ref:`RefCounted<class_RefCounted>` **<** :ref:`Object<class_Object>`
+
+Generates noise using the FastNoiseLite library.
+
+Description
+-----------
+
+This class generates noise using the FastNoiseLite library, which is a collection of several noise algorithms including Cellular, Perlin, Value, and more.
+
+Most generated noise values are in the range of ``[-1,1]``, however not always. Some of the cellular noise algorithms return results above ``1``.
+
+Properties
+----------
+
++------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------+----------------------+
+| :ref:`CellularDistanceFunction<enum_FastNoiseLite_CellularDistanceFunction>` | :ref:`cellular_distance_function<class_FastNoiseLite_property_cellular_distance_function>`         | ``0``                |
++------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------+----------------------+
+| :ref:`float<class_float>`                                                    | :ref:`cellular_jitter<class_FastNoiseLite_property_cellular_jitter>`                               | ``0.45``             |
++------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------+----------------------+
+| :ref:`CellularReturnType<enum_FastNoiseLite_CellularReturnType>`             | :ref:`cellular_return_type<class_FastNoiseLite_property_cellular_return_type>`                     | ``1``                |
++------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------+----------------------+
+| :ref:`float<class_float>`                                                    | :ref:`domain_warp_amplitude<class_FastNoiseLite_property_domain_warp_amplitude>`                   | ``30.0``             |
++------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------+----------------------+
+| :ref:`bool<class_bool>`                                                      | :ref:`domain_warp_enabled<class_FastNoiseLite_property_domain_warp_enabled>`                       | ``false``            |
++------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------+----------------------+
+| :ref:`float<class_float>`                                                    | :ref:`domain_warp_fractal_gain<class_FastNoiseLite_property_domain_warp_fractal_gain>`             | ``0.5``              |
++------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------+----------------------+
+| :ref:`float<class_float>`                                                    | :ref:`domain_warp_fractal_lacunarity<class_FastNoiseLite_property_domain_warp_fractal_lacunarity>` | ``6.0``              |
++------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------+----------------------+
+| :ref:`int<class_int>`                                                        | :ref:`domain_warp_fractal_octaves<class_FastNoiseLite_property_domain_warp_fractal_octaves>`       | ``5``                |
++------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------+----------------------+
+| :ref:`DomainWarpFractalType<enum_FastNoiseLite_DomainWarpFractalType>`       | :ref:`domain_warp_fractal_type<class_FastNoiseLite_property_domain_warp_fractal_type>`             | ``1``                |
++------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------+----------------------+
+| :ref:`float<class_float>`                                                    | :ref:`domain_warp_frequency<class_FastNoiseLite_property_domain_warp_frequency>`                   | ``0.05``             |
++------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------+----------------------+
+| :ref:`DomainWarpType<enum_FastNoiseLite_DomainWarpType>`                     | :ref:`domain_warp_type<class_FastNoiseLite_property_domain_warp_type>`                             | ``0``                |
++------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------+----------------------+
+| :ref:`float<class_float>`                                                    | :ref:`fractal_gain<class_FastNoiseLite_property_fractal_gain>`                                     | ``0.5``              |
++------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------+----------------------+
+| :ref:`float<class_float>`                                                    | :ref:`fractal_lacunarity<class_FastNoiseLite_property_fractal_lacunarity>`                         | ``2.0``              |
++------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------+----------------------+
+| :ref:`int<class_int>`                                                        | :ref:`fractal_octaves<class_FastNoiseLite_property_fractal_octaves>`                               | ``5``                |
++------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------+----------------------+
+| :ref:`float<class_float>`                                                    | :ref:`fractal_ping_pong_strength<class_FastNoiseLite_property_fractal_ping_pong_strength>`         | ``2.0``              |
++------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------+----------------------+
+| :ref:`FractalType<enum_FastNoiseLite_FractalType>`                           | :ref:`fractal_type<class_FastNoiseLite_property_fractal_type>`                                     | ``1``                |
++------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------+----------------------+
+| :ref:`float<class_float>`                                                    | :ref:`fractal_weighted_strength<class_FastNoiseLite_property_fractal_weighted_strength>`           | ``0.0``              |
++------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------+----------------------+
+| :ref:`float<class_float>`                                                    | :ref:`frequency<class_FastNoiseLite_property_frequency>`                                           | ``0.01``             |
++------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------+----------------------+
+| :ref:`NoiseType<enum_FastNoiseLite_NoiseType>`                               | :ref:`noise_type<class_FastNoiseLite_property_noise_type>`                                         | ``1``                |
++------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------+----------------------+
+| :ref:`Vector3<class_Vector3>`                                                | :ref:`offset<class_FastNoiseLite_property_offset>`                                                 | ``Vector3(0, 0, 0)`` |
++------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------+----------------------+
+| :ref:`int<class_int>`                                                        | :ref:`seed<class_FastNoiseLite_property_seed>`                                                     | ``0``                |
++------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------+----------------------+
+
+Enumerations
+------------
+
+.. _enum_FastNoiseLite_NoiseType:
+
+.. _class_FastNoiseLite_constant_TYPE_VALUE:
+
+.. _class_FastNoiseLite_constant_TYPE_VALUE_CUBIC:
+
+.. _class_FastNoiseLite_constant_TYPE_PERLIN:
+
+.. _class_FastNoiseLite_constant_TYPE_CELLULAR:
+
+.. _class_FastNoiseLite_constant_TYPE_SIMPLEX:
+
+.. _class_FastNoiseLite_constant_TYPE_SIMPLEX_SMOOTH:
+
+enum **NoiseType**:
+
+- **TYPE_VALUE** = **5** --- A lattice of points are assigned random values then interpolated based on neighboring values.
+
+- **TYPE_VALUE_CUBIC** = **4** --- Similar to Value noise, but slower. Has more variance in peaks and valleys.
+
+Cubic noise can be used to avoid certain artifacts when using value noise to create a bumpmap. In general, you should always use this mode if the value noise is being used for a heightmap or bumpmap.
+
+- **TYPE_PERLIN** = **3** --- A lattice of random gradients. Their dot products are interpolated to obtain values in between the lattices.
+
+- **TYPE_CELLULAR** = **2** --- Cellular includes both Worley noise and Voronoi diagrams which creates various regions of the same value.
+
+- **TYPE_SIMPLEX** = **0** --- As opposed to :ref:`TYPE_PERLIN<class_FastNoiseLite_constant_TYPE_PERLIN>`, gradients exist in a simplex lattice rather than a grid lattice, avoiding directional artifacts.
+
+- **TYPE_SIMPLEX_SMOOTH** = **1** --- Modified, higher quality version of :ref:`TYPE_SIMPLEX<class_FastNoiseLite_constant_TYPE_SIMPLEX>`, but slower.
+
+----
+
+.. _enum_FastNoiseLite_FractalType:
+
+.. _class_FastNoiseLite_constant_FRACTAL_NONE:
+
+.. _class_FastNoiseLite_constant_FRACTAL_FBM:
+
+.. _class_FastNoiseLite_constant_FRACTAL_RIDGED:
+
+.. _class_FastNoiseLite_constant_FRACTAL_PING_PONG:
+
+enum **FractalType**:
+
+- **FRACTAL_NONE** = **0** --- No fractal noise.
+
+- **FRACTAL_FBM** = **1** --- Method using Fractional Brownian Motion to combine octaves into a fractal.
+
+- **FRACTAL_RIDGED** = **2** --- Method of combining octaves into a fractal resulting in a "ridged" look.
+
+- **FRACTAL_PING_PONG** = **3** --- Method of combining octaves into a fractal with a ping pong effect.
+
+----
+
+.. _enum_FastNoiseLite_CellularDistanceFunction:
+
+.. _class_FastNoiseLite_constant_DISTANCE_EUCLIDEAN:
+
+.. _class_FastNoiseLite_constant_DISTANCE_EUCLIDEAN_SQUARED:
+
+.. _class_FastNoiseLite_constant_DISTANCE_MANHATTAN:
+
+.. _class_FastNoiseLite_constant_DISTANCE_HYBRID:
+
+enum **CellularDistanceFunction**:
+
+- **DISTANCE_EUCLIDEAN** = **0** --- Euclidean distance to the nearest point.
+
+- **DISTANCE_EUCLIDEAN_SQUARED** = **1** --- Squared Euclidean distance to the nearest point.
+
+- **DISTANCE_MANHATTAN** = **2** --- Manhattan distance (taxicab metric) to the nearest point.
+
+- **DISTANCE_HYBRID** = **3** --- Blend of :ref:`DISTANCE_EUCLIDEAN<class_FastNoiseLite_constant_DISTANCE_EUCLIDEAN>` and :ref:`DISTANCE_MANHATTAN<class_FastNoiseLite_constant_DISTANCE_MANHATTAN>` to give curved cell boundaries
+
+----
+
+.. _enum_FastNoiseLite_CellularReturnType:
+
+.. _class_FastNoiseLite_constant_RETURN_CELL_VALUE:
+
+.. _class_FastNoiseLite_constant_RETURN_DISTANCE:
+
+.. _class_FastNoiseLite_constant_RETURN_DISTANCE2:
+
+.. _class_FastNoiseLite_constant_RETURN_DISTANCE2_ADD:
+
+.. _class_FastNoiseLite_constant_RETURN_DISTANCE2_SUB:
+
+.. _class_FastNoiseLite_constant_RETURN_DISTANCE2_MUL:
+
+.. _class_FastNoiseLite_constant_RETURN_DISTANCE2_DIV:
+
+enum **CellularReturnType**:
+
+- **RETURN_CELL_VALUE** = **0** --- The cellular distance function will return the same value for all points within a cell.
+
+- **RETURN_DISTANCE** = **1** --- The cellular distance function will return a value determined by the distance to the nearest point.
+
+- **RETURN_DISTANCE2** = **2** --- The cellular distance function returns the distance to the second-nearest point.
+
+- **RETURN_DISTANCE2_ADD** = **3** --- The distance to the nearest point is added to the distance to the second-nearest point.
+
+- **RETURN_DISTANCE2_SUB** = **4** --- The distance to the nearest point is subtracted from the distance to the second-nearest point.
+
+- **RETURN_DISTANCE2_MUL** = **5** --- The distance to the nearest point is multiplied with the distance to the second-nearest point.
+
+- **RETURN_DISTANCE2_DIV** = **6** --- The distance to the nearest point is divided by the distance to the second-nearest point.
+
+----
+
+.. _enum_FastNoiseLite_DomainWarpType:
+
+.. _class_FastNoiseLite_constant_DOMAIN_WARP_SIMPLEX:
+
+.. _class_FastNoiseLite_constant_DOMAIN_WARP_SIMPLEX_REDUCED:
+
+.. _class_FastNoiseLite_constant_DOMAIN_WARP_BASIC_GRID:
+
+enum **DomainWarpType**:
+
+- **DOMAIN_WARP_SIMPLEX** = **0** --- The domain is warped using the simplex noise algorithm.
+
+- **DOMAIN_WARP_SIMPLEX_REDUCED** = **1** --- The domain is warped using a simplified version of the simplex noise algorithm.
+
+- **DOMAIN_WARP_BASIC_GRID** = **2** --- The domain is warped using a simple noise grid (not as smooth as the other methods, but more performant).
+
+----
+
+.. _enum_FastNoiseLite_DomainWarpFractalType:
+
+.. _class_FastNoiseLite_constant_DOMAIN_WARP_FRACTAL_NONE:
+
+.. _class_FastNoiseLite_constant_DOMAIN_WARP_FRACTAL_PROGRESSIVE:
+
+.. _class_FastNoiseLite_constant_DOMAIN_WARP_FRACTAL_INDEPENDENT:
+
+enum **DomainWarpFractalType**:
+
+- **DOMAIN_WARP_FRACTAL_NONE** = **0** --- No fractal noise for warping the space.
+
+- **DOMAIN_WARP_FRACTAL_PROGRESSIVE** = **1** --- Warping the space progressively, octave for octave, resulting in a more "liquified" distortion.
+
+- **DOMAIN_WARP_FRACTAL_INDEPENDENT** = **2** --- Warping the space independently for each octave, resulting in a more chaotic distortion.
+
+Property Descriptions
+---------------------
+
+.. _class_FastNoiseLite_property_cellular_distance_function:
+
+- :ref:`CellularDistanceFunction<enum_FastNoiseLite_CellularDistanceFunction>` **cellular_distance_function**
+
++-----------+---------------------------------------+
+| *Default* | ``0``                                 |
++-----------+---------------------------------------+
+| *Setter*  | set_cellular_distance_function(value) |
++-----------+---------------------------------------+
+| *Getter*  | get_cellular_distance_function()      |
++-----------+---------------------------------------+
+
+Determines how the distance to the nearest/second-nearest point is computed. See :ref:`CellularDistanceFunction<enum_FastNoiseLite_CellularDistanceFunction>` for options.
+
+----
+
+.. _class_FastNoiseLite_property_cellular_jitter:
+
+- :ref:`float<class_float>` **cellular_jitter**
+
++-----------+----------------------------+
+| *Default* | ``0.45``                   |
++-----------+----------------------------+
+| *Setter*  | set_cellular_jitter(value) |
++-----------+----------------------------+
+| *Getter*  | get_cellular_jitter()      |
++-----------+----------------------------+
+
+Maximum distance a point can move off of its grid position. Set to ``0`` for an even grid.
+
+----
+
+.. _class_FastNoiseLite_property_cellular_return_type:
+
+- :ref:`CellularReturnType<enum_FastNoiseLite_CellularReturnType>` **cellular_return_type**
+
++-----------+---------------------------------+
+| *Default* | ``1``                           |
++-----------+---------------------------------+
+| *Setter*  | set_cellular_return_type(value) |
++-----------+---------------------------------+
+| *Getter*  | get_cellular_return_type()      |
++-----------+---------------------------------+
+
+Return type from cellular noise calculations. See :ref:`CellularReturnType<enum_FastNoiseLite_CellularReturnType>`.
+
+----
+
+.. _class_FastNoiseLite_property_domain_warp_amplitude:
+
+- :ref:`float<class_float>` **domain_warp_amplitude**
+
++-----------+----------------------------------+
+| *Default* | ``30.0``                         |
++-----------+----------------------------------+
+| *Setter*  | set_domain_warp_amplitude(value) |
++-----------+----------------------------------+
+| *Getter*  | get_domain_warp_amplitude()      |
++-----------+----------------------------------+
+
+Sets the maximum warp distance from the origin.
+
+----
+
+.. _class_FastNoiseLite_property_domain_warp_enabled:
+
+- :ref:`bool<class_bool>` **domain_warp_enabled**
+
++-----------+--------------------------------+
+| *Default* | ``false``                      |
++-----------+--------------------------------+
+| *Setter*  | set_domain_warp_enabled(value) |
++-----------+--------------------------------+
+| *Getter*  | is_domain_warp_enabled()       |
++-----------+--------------------------------+
+
+If enabled, another FastNoiseLite instance is used to warp the space, resulting in a distortion of the noise.
+
+----
+
+.. _class_FastNoiseLite_property_domain_warp_fractal_gain:
+
+- :ref:`float<class_float>` **domain_warp_fractal_gain**
+
++-----------+-------------------------------------+
+| *Default* | ``0.5``                             |
++-----------+-------------------------------------+
+| *Setter*  | set_domain_warp_fractal_gain(value) |
++-----------+-------------------------------------+
+| *Getter*  | get_domain_warp_fractal_gain()      |
++-----------+-------------------------------------+
+
+Determines the strength of each subsequent layer of the noise which is used to warp the space.
+
+A low value places more emphasis on the lower frequency base layers, while a high value puts more emphasis on the higher frequency layers.
+
+----
+
+.. _class_FastNoiseLite_property_domain_warp_fractal_lacunarity:
+
+- :ref:`float<class_float>` **domain_warp_fractal_lacunarity**
+
++-----------+-------------------------------------------+
+| *Default* | ``6.0``                                   |
++-----------+-------------------------------------------+
+| *Setter*  | set_domain_warp_fractal_lacunarity(value) |
++-----------+-------------------------------------------+
+| *Getter*  | get_domain_warp_fractal_lacunarity()      |
++-----------+-------------------------------------------+
+
+Octave lacunarity of the fractal noise which warps the space. Increasing this value results in higher octaves producing noise with finer details and a rougher appearance.
+
+----
+
+.. _class_FastNoiseLite_property_domain_warp_fractal_octaves:
+
+- :ref:`int<class_int>` **domain_warp_fractal_octaves**
+
++-----------+----------------------------------------+
+| *Default* | ``5``                                  |
++-----------+----------------------------------------+
+| *Setter*  | set_domain_warp_fractal_octaves(value) |
++-----------+----------------------------------------+
+| *Getter*  | get_domain_warp_fractal_octaves()      |
++-----------+----------------------------------------+
+
+The number of noise layers that are sampled to get the final value for the fractal noise which warps the space.
+
+----
+
+.. _class_FastNoiseLite_property_domain_warp_fractal_type:
+
+- :ref:`DomainWarpFractalType<enum_FastNoiseLite_DomainWarpFractalType>` **domain_warp_fractal_type**
+
++-----------+-------------------------------------+
+| *Default* | ``1``                               |
++-----------+-------------------------------------+
+| *Setter*  | set_domain_warp_fractal_type(value) |
++-----------+-------------------------------------+
+| *Getter*  | get_domain_warp_fractal_type()      |
++-----------+-------------------------------------+
+
+The method for combining octaves into a fractal which is used to warp the space. See :ref:`DomainWarpFractalType<enum_FastNoiseLite_DomainWarpFractalType>`.
+
+----
+
+.. _class_FastNoiseLite_property_domain_warp_frequency:
+
+- :ref:`float<class_float>` **domain_warp_frequency**
+
++-----------+----------------------------------+
+| *Default* | ``0.05``                         |
++-----------+----------------------------------+
+| *Setter*  | set_domain_warp_frequency(value) |
++-----------+----------------------------------+
+| *Getter*  | get_domain_warp_frequency()      |
++-----------+----------------------------------+
+
+Frequency of the noise which warps the space. Low frequency results in smooth noise while high frequency results in rougher, more granular noise.
+
+----
+
+.. _class_FastNoiseLite_property_domain_warp_type:
+
+- :ref:`DomainWarpType<enum_FastNoiseLite_DomainWarpType>` **domain_warp_type**
+
++-----------+-----------------------------+
+| *Default* | ``0``                       |
++-----------+-----------------------------+
+| *Setter*  | set_domain_warp_type(value) |
++-----------+-----------------------------+
+| *Getter*  | get_domain_warp_type()      |
++-----------+-----------------------------+
+
+Sets the warp algorithm. See :ref:`DomainWarpType<enum_FastNoiseLite_DomainWarpType>`.
+
+----
+
+.. _class_FastNoiseLite_property_fractal_gain:
+
+- :ref:`float<class_float>` **fractal_gain**
+
++-----------+-------------------------+
+| *Default* | ``0.5``                 |
++-----------+-------------------------+
+| *Setter*  | set_fractal_gain(value) |
++-----------+-------------------------+
+| *Getter*  | get_fractal_gain()      |
++-----------+-------------------------+
+
+Determines the strength of each subsequent layer of noise in fractal noise.
+
+A low value places more emphasis on the lower frequency base layers, while a high value puts more emphasis on the higher frequency layers.
+
+----
+
+.. _class_FastNoiseLite_property_fractal_lacunarity:
+
+- :ref:`float<class_float>` **fractal_lacunarity**
+
++-----------+-------------------------------+
+| *Default* | ``2.0``                       |
++-----------+-------------------------------+
+| *Setter*  | set_fractal_lacunarity(value) |
++-----------+-------------------------------+
+| *Getter*  | get_fractal_lacunarity()      |
++-----------+-------------------------------+
+
+Frequency multiplier between subsequent octaves. Increasing this value results in higher octaves producing noise with finer details and a rougher appearance.
+
+----
+
+.. _class_FastNoiseLite_property_fractal_octaves:
+
+- :ref:`int<class_int>` **fractal_octaves**
+
++-----------+----------------------------+
+| *Default* | ``5``                      |
++-----------+----------------------------+
+| *Setter*  | set_fractal_octaves(value) |
++-----------+----------------------------+
+| *Getter*  | get_fractal_octaves()      |
++-----------+----------------------------+
+
+The number of noise layers that are sampled to get the final value for fractal noise types.
+
+----
+
+.. _class_FastNoiseLite_property_fractal_ping_pong_strength:
+
+- :ref:`float<class_float>` **fractal_ping_pong_strength**
+
++-----------+---------------------------------------+
+| *Default* | ``2.0``                               |
++-----------+---------------------------------------+
+| *Setter*  | set_fractal_ping_pong_strength(value) |
++-----------+---------------------------------------+
+| *Getter*  | get_fractal_ping_pong_strength()      |
++-----------+---------------------------------------+
+
+Sets the strength of the fractal ping pong type.
+
+----
+
+.. _class_FastNoiseLite_property_fractal_type:
+
+- :ref:`FractalType<enum_FastNoiseLite_FractalType>` **fractal_type**
+
++-----------+-------------------------+
+| *Default* | ``1``                   |
++-----------+-------------------------+
+| *Setter*  | set_fractal_type(value) |
++-----------+-------------------------+
+| *Getter*  | get_fractal_type()      |
++-----------+-------------------------+
+
+The method for combining octaves into a fractal. See :ref:`FractalType<enum_FastNoiseLite_FractalType>`.
+
+----
+
+.. _class_FastNoiseLite_property_fractal_weighted_strength:
+
+- :ref:`float<class_float>` **fractal_weighted_strength**
+
++-----------+--------------------------------------+
+| *Default* | ``0.0``                              |
++-----------+--------------------------------------+
+| *Setter*  | set_fractal_weighted_strength(value) |
++-----------+--------------------------------------+
+| *Getter*  | get_fractal_weighted_strength()      |
++-----------+--------------------------------------+
+
+Higher weighting means higher octaves have less impact if lower octaves have a large impact.
+
+----
+
+.. _class_FastNoiseLite_property_frequency:
+
+- :ref:`float<class_float>` **frequency**
+
++-----------+----------------------+
+| *Default* | ``0.01``             |
++-----------+----------------------+
+| *Setter*  | set_frequency(value) |
++-----------+----------------------+
+| *Getter*  | get_frequency()      |
++-----------+----------------------+
+
+The frequency for all noise types. Low frequency results in smooth noise while high frequency results in rougher, more granular noise.
+
+----
+
+.. _class_FastNoiseLite_property_noise_type:
+
+- :ref:`NoiseType<enum_FastNoiseLite_NoiseType>` **noise_type**
+
++-----------+-----------------------+
+| *Default* | ``1``                 |
++-----------+-----------------------+
+| *Setter*  | set_noise_type(value) |
++-----------+-----------------------+
+| *Getter*  | get_noise_type()      |
++-----------+-----------------------+
+
+The noise algorithm used. See :ref:`NoiseType<enum_FastNoiseLite_NoiseType>`.
+
+----
+
+.. _class_FastNoiseLite_property_offset:
+
+- :ref:`Vector3<class_Vector3>` **offset**
+
++-----------+----------------------+
+| *Default* | ``Vector3(0, 0, 0)`` |
++-----------+----------------------+
+| *Setter*  | set_offset(value)    |
++-----------+----------------------+
+| *Getter*  | get_offset()         |
++-----------+----------------------+
+
+Translate the noise input coordinates by the given :ref:`Vector3<class_Vector3>`.
+
+----
+
+.. _class_FastNoiseLite_property_seed:
+
+- :ref:`int<class_int>` **seed**
+
++-----------+-----------------+
+| *Default* | ``0``           |
++-----------+-----------------+
+| *Setter*  | set_seed(value) |
++-----------+-----------------+
+| *Getter*  | get_seed()      |
++-----------+-----------------+
+
+The random number seed for all noise types.
+
+.. |virtual| replace:: :abbr:`virtual (This method should typically be overridden by the user to have any effect.)`
+.. |const| replace:: :abbr:`const (This method has no side effects. It doesn't modify any of the instance's member variables.)`
+.. |vararg| replace:: :abbr:`vararg (This method accepts any number of arguments after the ones described here.)`
+.. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)`
+.. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)`
+.. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)`

+ 2 - 2
classes/class_file.rst

@@ -87,7 +87,7 @@ Methods
 +---------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
 | :ref:`bool<class_bool>`                           | :ref:`eof_reached<class_File_method_eof_reached>` **(** **)** |const|                                                                                                                                                          |
 +---------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`bool<class_bool>`                           | :ref:`file_exists<class_File_method_file_exists>` **(** :ref:`String<class_String>` path **)** |const|                                                                                                                         |
+| :ref:`bool<class_bool>`                           | :ref:`file_exists<class_File_method_file_exists>` **(** :ref:`String<class_String>` path **)** |static|                                                                                                                        |
 +---------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
 | void                                              | :ref:`flush<class_File_method_flush>` **(** **)**                                                                                                                                                                              |
 +---------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
@@ -280,7 +280,7 @@ Returns ``true`` if the file cursor has already read past the end of the file.
 
 .. _class_File_method_file_exists:
 
-- :ref:`bool<class_bool>` **file_exists** **(** :ref:`String<class_String>` path **)** |const|
+- :ref:`bool<class_bool>` **file_exists** **(** :ref:`String<class_String>` path **)** |static|
 
 Returns ``true`` if the file exists in the given path.
 

+ 42 - 48
classes/class_filedialog.rst

@@ -24,11 +24,11 @@ Properties
 +---------------------------------------------------+-----------------------------------------------------------------------------+------------------------------------------------------------------------------------------+
 | :ref:`Access<enum_FileDialog_Access>`             | :ref:`access<class_FileDialog_property_access>`                             | ``0``                                                                                    |
 +---------------------------------------------------+-----------------------------------------------------------------------------+------------------------------------------------------------------------------------------+
-| :ref:`String<class_String>`                       | :ref:`current_dir<class_FileDialog_property_current_dir>`                   | ``"res://"``                                                                             |
+| :ref:`String<class_String>`                       | :ref:`current_dir<class_FileDialog_property_current_dir>`                   |                                                                                          |
 +---------------------------------------------------+-----------------------------------------------------------------------------+------------------------------------------------------------------------------------------+
-| :ref:`String<class_String>`                       | :ref:`current_file<class_FileDialog_property_current_file>`                 | ``""``                                                                                   |
+| :ref:`String<class_String>`                       | :ref:`current_file<class_FileDialog_property_current_file>`                 |                                                                                          |
 +---------------------------------------------------+-----------------------------------------------------------------------------+------------------------------------------------------------------------------------------+
-| :ref:`String<class_String>`                       | :ref:`current_path<class_FileDialog_property_current_path>`                 | ``"res://"``                                                                             |
+| :ref:`String<class_String>`                       | :ref:`current_path<class_FileDialog_property_current_path>`                 |                                                                                          |
 +---------------------------------------------------+-----------------------------------------------------------------------------+------------------------------------------------------------------------------------------+
 | :ref:`bool<class_bool>`                           | dialog_hide_on_ok                                                           | ``false`` (overrides :ref:`AcceptDialog<class_AcceptDialog_property_dialog_hide_on_ok>`) |
 +---------------------------------------------------+-----------------------------------------------------------------------------+------------------------------------------------------------------------------------------+
@@ -63,27 +63,27 @@ 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:`Texture2D<class_Texture2D>` | :ref:`back_folder<class_FileDialog_theme_icon_back_folder>`                    |                         |
-+-----------------------------------+--------------------------------------------------------------------------------+-------------------------+
-| :ref:`Texture2D<class_Texture2D>` | :ref:`file<class_FileDialog_theme_icon_file>`                                  |                         |
-+-----------------------------------+--------------------------------------------------------------------------------+-------------------------+
-| :ref:`Texture2D<class_Texture2D>` | :ref:`folder<class_FileDialog_theme_icon_folder>`                              |                         |
-+-----------------------------------+--------------------------------------------------------------------------------+-------------------------+
-| :ref:`Texture2D<class_Texture2D>` | :ref:`forward_folder<class_FileDialog_theme_icon_forward_folder>`              |                         |
-+-----------------------------------+--------------------------------------------------------------------------------+-------------------------+
-| :ref:`Texture2D<class_Texture2D>` | :ref:`parent_folder<class_FileDialog_theme_icon_parent_folder>`                |                         |
-+-----------------------------------+--------------------------------------------------------------------------------+-------------------------+
-| :ref:`Texture2D<class_Texture2D>` | :ref:`reload<class_FileDialog_theme_icon_reload>`                              |                         |
-+-----------------------------------+--------------------------------------------------------------------------------+-------------------------+
-| :ref:`Texture2D<class_Texture2D>` | :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:`Texture2D<class_Texture2D>` | :ref:`back_folder<class_FileDialog_theme_icon_back_folder>`                    |                          |
++-----------------------------------+--------------------------------------------------------------------------------+--------------------------+
+| :ref:`Texture2D<class_Texture2D>` | :ref:`file<class_FileDialog_theme_icon_file>`                                  |                          |
++-----------------------------------+--------------------------------------------------------------------------------+--------------------------+
+| :ref:`Texture2D<class_Texture2D>` | :ref:`folder<class_FileDialog_theme_icon_folder>`                              |                          |
++-----------------------------------+--------------------------------------------------------------------------------+--------------------------+
+| :ref:`Texture2D<class_Texture2D>` | :ref:`forward_folder<class_FileDialog_theme_icon_forward_folder>`              |                          |
++-----------------------------------+--------------------------------------------------------------------------------+--------------------------+
+| :ref:`Texture2D<class_Texture2D>` | :ref:`parent_folder<class_FileDialog_theme_icon_parent_folder>`                |                          |
++-----------------------------------+--------------------------------------------------------------------------------+--------------------------+
+| :ref:`Texture2D<class_Texture2D>` | :ref:`reload<class_FileDialog_theme_icon_reload>`                              |                          |
++-----------------------------------+--------------------------------------------------------------------------------+--------------------------+
+| :ref:`Texture2D<class_Texture2D>` | :ref:`toggle_hidden<class_FileDialog_theme_icon_toggle_hidden>`                |                          |
++-----------------------------------+--------------------------------------------------------------------------------+--------------------------+
 
 Signals
 -------
@@ -180,13 +180,11 @@ The file system access scope. See enum ``Access`` constants.
 
 - :ref:`String<class_String>` **current_dir**
 
-+-----------+------------------------+
-| *Default* | ``"res://"``           |
-+-----------+------------------------+
-| *Setter*  | set_current_dir(value) |
-+-----------+------------------------+
-| *Getter*  | get_current_dir()      |
-+-----------+------------------------+
++----------+------------------------+
+| *Setter* | set_current_dir(value) |
++----------+------------------------+
+| *Getter* | get_current_dir()      |
++----------+------------------------+
 
 The current working directory of the file dialog.
 
@@ -196,13 +194,11 @@ The current working directory of the file dialog.
 
 - :ref:`String<class_String>` **current_file**
 
-+-----------+-------------------------+
-| *Default* | ``""``                  |
-+-----------+-------------------------+
-| *Setter*  | set_current_file(value) |
-+-----------+-------------------------+
-| *Getter*  | get_current_file()      |
-+-----------+-------------------------+
++----------+-------------------------+
+| *Setter* | set_current_file(value) |
++----------+-------------------------+
+| *Getter* | get_current_file()      |
++----------+-------------------------+
 
 The currently selected file of the file dialog.
 
@@ -212,13 +208,11 @@ The currently selected file of the file dialog.
 
 - :ref:`String<class_String>` **current_path**
 
-+-----------+-------------------------+
-| *Default* | ``"res://"``            |
-+-----------+-------------------------+
-| *Setter*  | set_current_path(value) |
-+-----------+-------------------------+
-| *Getter*  | get_current_path()      |
-+-----------+-------------------------+
++----------+-------------------------+
+| *Setter* | set_current_path(value) |
++----------+-------------------------+
+| *Getter* | get_current_path()      |
++----------+-------------------------+
 
 The currently selected file path of the file dialog.
 
@@ -362,9 +356,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).
 

+ 14 - 12
classes/class_float.rst

@@ -43,8 +43,6 @@ Constructors
 Operators
 ---------
 
-+-------------------------------------+--------------------------------------------------------------------------------------------------------------+
-| :ref:`bool<class_bool>`             | :ref:`operator !=<class_float_operator_neq_bool>` **(** **)**                                                |
 +-------------------------------------+--------------------------------------------------------------------------------------------------------------+
 | :ref:`bool<class_bool>`             | :ref:`operator !=<class_float_operator_neq_bool>` **(** :ref:`float<class_float>` right **)**                |
 +-------------------------------------+--------------------------------------------------------------------------------------------------------------+
@@ -66,6 +64,10 @@ Operators
 +-------------------------------------+--------------------------------------------------------------------------------------------------------------+
 | :ref:`float<class_float>`           | :ref:`operator *<class_float_operator_mul_float>` **(** :ref:`int<class_int>` right **)**                    |
 +-------------------------------------+--------------------------------------------------------------------------------------------------------------+
+| :ref:`float<class_float>`           | :ref:`operator **<class_float_operator_pow_float>` **(** :ref:`float<class_float>` right **)**               |
++-------------------------------------+--------------------------------------------------------------------------------------------------------------+
+| :ref:`float<class_float>`           | :ref:`operator **<class_float_operator_pow_float>` **(** :ref:`int<class_int>` right **)**                   |
++-------------------------------------+--------------------------------------------------------------------------------------------------------------+
 | :ref:`float<class_float>`           | :ref:`operator +<class_float_operator_sum_float>` **(** :ref:`float<class_float>` right **)**                |
 +-------------------------------------+--------------------------------------------------------------------------------------------------------------+
 | :ref:`float<class_float>`           | :ref:`operator +<class_float_operator_sum_float>` **(** :ref:`int<class_int>` right **)**                    |
@@ -86,8 +88,6 @@ Operators
 +-------------------------------------+--------------------------------------------------------------------------------------------------------------+
 | :ref:`bool<class_bool>`             | :ref:`operator <=<class_float_operator_lte_bool>` **(** :ref:`int<class_int>` right **)**                    |
 +-------------------------------------+--------------------------------------------------------------------------------------------------------------+
-| :ref:`bool<class_bool>`             | :ref:`operator ==<class_float_operator_eq_bool>` **(** **)**                                                 |
-+-------------------------------------+--------------------------------------------------------------------------------------------------------------+
 | :ref:`bool<class_bool>`             | :ref:`operator ==<class_float_operator_eq_bool>` **(** :ref:`float<class_float>` right **)**                 |
 +-------------------------------------+--------------------------------------------------------------------------------------------------------------+
 | :ref:`bool<class_bool>`             | :ref:`operator ==<class_float_operator_eq_bool>` **(** :ref:`int<class_int>` right **)**                     |
@@ -137,10 +137,6 @@ Operator Descriptions
 
 .. _class_float_operator_neq_bool:
 
-- :ref:`bool<class_bool>` **operator !=** **(** **)**
-
-----
-
 - :ref:`bool<class_bool>` **operator !=** **(** :ref:`float<class_float>` right **)**
 
 Returns ``true`` if two floats are different from each other.
@@ -219,6 +215,16 @@ Multiplies a ``float`` and an :ref:`int<class_int>`. The result is a ``float``.
 
 ----
 
+.. _class_float_operator_pow_float:
+
+- :ref:`float<class_float>` **operator **** **(** :ref:`float<class_float>` right **)**
+
+----
+
+- :ref:`float<class_float>` **operator **** **(** :ref:`int<class_int>` right **)**
+
+----
+
 .. _class_float_operator_sum_float:
 
 - :ref:`float<class_float>` **operator +** **(** :ref:`float<class_float>` right **)**
@@ -291,10 +297,6 @@ Returns ``true`` if this ``float`` is less than or equal to the given :ref:`int<
 
 .. _class_float_operator_eq_bool:
 
-- :ref:`bool<class_bool>` **operator ==** **(** **)**
-
-----
-
 - :ref:`bool<class_bool>` **operator ==** **(** :ref:`float<class_float>` right **)**
 
 Returns ``true`` if both floats are exactly equal.

+ 6 - 4
classes/class_fogvolume.rst

@@ -28,7 +28,7 @@ Properties
 +------------------------------------------------------------+----------------------------------------------------+----------------------+
 | :ref:`Material<class_Material>`                            | :ref:`material<class_FogVolume_property_material>` |                      |
 +------------------------------------------------------------+----------------------------------------------------+----------------------+
-| :ref:`FogVolumeShape<enum_RenderingServer_FogVolumeShape>` | :ref:`shape<class_FogVolume_property_shape>`       | ``1``                |
+| :ref:`FogVolumeShape<enum_RenderingServer_FogVolumeShape>` | :ref:`shape<class_FogVolume_property_shape>`       | ``3``                |
 +------------------------------------------------------------+----------------------------------------------------+----------------------+
 
 Property Descriptions
@@ -46,10 +46,12 @@ Property Descriptions
 | *Getter*  | get_extents()        |
 +-----------+----------------------+
 
-Sets the size of the ``FogVolume`` when :ref:`shape<class_FogVolume_property_shape>` is :ref:`RenderingServer.FOG_VOLUME_SHAPE_ELLIPSOID<class_RenderingServer_constant_FOG_VOLUME_SHAPE_ELLIPSOID>` or :ref:`RenderingServer.FOG_VOLUME_SHAPE_BOX<class_RenderingServer_constant_FOG_VOLUME_SHAPE_BOX>`.
+Sets the size of the ``FogVolume`` when :ref:`shape<class_FogVolume_property_shape>` is :ref:`RenderingServer.FOG_VOLUME_SHAPE_ELLIPSOID<class_RenderingServer_constant_FOG_VOLUME_SHAPE_ELLIPSOID>`, :ref:`RenderingServer.FOG_VOLUME_SHAPE_CONE<class_RenderingServer_constant_FOG_VOLUME_SHAPE_CONE>`, :ref:`RenderingServer.FOG_VOLUME_SHAPE_CYLINDER<class_RenderingServer_constant_FOG_VOLUME_SHAPE_CYLINDER>` or :ref:`RenderingServer.FOG_VOLUME_SHAPE_BOX<class_RenderingServer_constant_FOG_VOLUME_SHAPE_BOX>`.
 
 \ **Note:** Thin fog volumes may appear to flicker when the camera moves or rotates. This can be alleviated by increasing :ref:`ProjectSettings.rendering/environment/volumetric_fog/volume_depth<class_ProjectSettings_property_rendering/environment/volumetric_fog/volume_depth>` (at a performance cost) or by decreasing :ref:`Environment.volumetric_fog_length<class_Environment_property_volumetric_fog_length>` (at no performance cost, but at the cost of lower fog range). Alternatively, the ``FogVolume`` can be made thicker and use a lower density in the :ref:`material<class_FogVolume_property_material>`.
 
+\ **Note:** If :ref:`shape<class_FogVolume_property_shape>` is :ref:`RenderingServer.FOG_VOLUME_SHAPE_CONE<class_RenderingServer_constant_FOG_VOLUME_SHAPE_CONE>` or :ref:`RenderingServer.FOG_VOLUME_SHAPE_CYLINDER<class_RenderingServer_constant_FOG_VOLUME_SHAPE_CYLINDER>`, the cone/cylinder will be adjusted to fit within the extents. Non-uniform scaling of cone/cylinder shapes via the :ref:`extents<class_FogVolume_property_extents>` property is not supported, but you can scale the ``FogVolume`` node instead.
+
 ----
 
 .. _class_FogVolume_property_material:
@@ -71,14 +73,14 @@ Sets the :ref:`Material<class_Material>` to be used by the ``FogVolume``. Can be
 - :ref:`FogVolumeShape<enum_RenderingServer_FogVolumeShape>` **shape**
 
 +-----------+------------------+
-| *Default* | ``1``            |
+| *Default* | ``3``            |
 +-----------+------------------+
 | *Setter*  | set_shape(value) |
 +-----------+------------------+
 | *Getter*  | get_shape()      |
 +-----------+------------------+
 
-Sets the shape of the ``FogVolume`` to either :ref:`RenderingServer.FOG_VOLUME_SHAPE_ELLIPSOID<class_RenderingServer_constant_FOG_VOLUME_SHAPE_ELLIPSOID>`, :ref:`RenderingServer.FOG_VOLUME_SHAPE_BOX<class_RenderingServer_constant_FOG_VOLUME_SHAPE_BOX>`, or :ref:`RenderingServer.FOG_VOLUME_SHAPE_ELLIPSOID<class_RenderingServer_constant_FOG_VOLUME_SHAPE_ELLIPSOID>` or :ref:`RenderingServer.FOG_VOLUME_SHAPE_WORLD<class_RenderingServer_constant_FOG_VOLUME_SHAPE_WORLD>`.
+Sets the shape of the ``FogVolume`` to either :ref:`RenderingServer.FOG_VOLUME_SHAPE_ELLIPSOID<class_RenderingServer_constant_FOG_VOLUME_SHAPE_ELLIPSOID>`, :ref:`RenderingServer.FOG_VOLUME_SHAPE_CONE<class_RenderingServer_constant_FOG_VOLUME_SHAPE_CONE>`, :ref:`RenderingServer.FOG_VOLUME_SHAPE_CYLINDER<class_RenderingServer_constant_FOG_VOLUME_SHAPE_CYLINDER>`, :ref:`RenderingServer.FOG_VOLUME_SHAPE_BOX<class_RenderingServer_constant_FOG_VOLUME_SHAPE_BOX>` or :ref:`RenderingServer.FOG_VOLUME_SHAPE_WORLD<class_RenderingServer_constant_FOG_VOLUME_SHAPE_WORLD>`.
 
 .. |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_font.rst

@@ -134,6 +134,8 @@ Methods
 +---------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
 | :ref:`Vector2<class_Vector2>`   | :ref:`get_multiline_string_size<class_Font_method_get_multiline_string_size>` **(** :ref:`String<class_String>` text, :ref:`float<class_float>` width=-1, :ref:`int<class_int>` size=16, :ref:`int<class_int>` flags=96 **)** |const|                                                                                                                                                                                                                                                                                                                                            |
 +---------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`Array<class_Array>`       | :ref:`get_rids<class_Font_method_get_rids>` **(** **)** |const|                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  |
++---------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
 | :ref:`int<class_int>`           | :ref:`get_spacing<class_Font_method_get_spacing>` **(** :ref:`SpacingType<enum_TextServer_SpacingType>` spacing **)** |const|                                                                                                                                                                                                                                                                                                                                                                                                                                                    |
 +---------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
 | :ref:`Vector2<class_Vector2>`   | :ref:`get_string_size<class_Font_method_get_string_size>` **(** :ref:`String<class_String>` text, :ref:`int<class_int>` size=16, :ref:`HorizontalAlignment<enum_@GlobalScope_HorizontalAlignment>` alignment=0, :ref:`float<class_float>` width=-1, :ref:`int<class_int>` flags=3 **)** |const|                                                                                                                                                                                                                                                                                  |
@@ -327,6 +329,14 @@ See also :ref:`draw_multiline_string<class_Font_method_draw_multiline_string>`.
 
 ----
 
+.. _class_Font_method_get_rids:
+
+- :ref:`Array<class_Array>` **get_rids** **(** **)** |const|
+
+Returns :ref:`Array<class_Array>` of valid :ref:`FontData<class_FontData>` :ref:`RID<class_RID>`\ s, which can be passed to the :ref:`TextServer<class_TextServer>` methods.
+
+----
+
 .. _class_Font_method_get_spacing:
 
 - :ref:`int<class_int>` **get_spacing** **(** :ref:`SpacingType<enum_TextServer_SpacingType>` spacing **)** |const|

+ 20 - 2
classes/class_fontdata.rst

@@ -15,7 +15,7 @@ Font source data and prerendered glyph cache, imported from dynamic or bitmap fo
 
 Supported font formats:
 
-- Dynamic font importer: TrueType (.ttf), OpenType (.otf), WOFF (.woff), Type 1 (.pfb, .pfm).
+- Dynamic font importer: TrueType (.ttf), OpenType (.otf), WOFF (.woff), WOFF2 (.woff2), Type 1 (.pfb, .pfm).
 
 - Bitmap font importer: AngelCode BMFont (.fnt, .font), text and binary (version 3) format variants.
 
@@ -39,6 +39,8 @@ Properties
 +-----------------------------------------------------------------+-------------------------------------------------------------------------------------------------------+-----------------------------------+
 | :ref:`bool<class_bool>`                                         | :ref:`force_autohinter<class_FontData_property_force_autohinter>`                                     | ``false``                         |
 +-----------------------------------------------------------------+-------------------------------------------------------------------------------------------------------+-----------------------------------+
+| :ref:`bool<class_bool>`                                         | :ref:`generate_mipmaps<class_FontData_property_generate_mipmaps>`                                     | ``false``                         |
++-----------------------------------------------------------------+-------------------------------------------------------------------------------------------------------+-----------------------------------+
 | :ref:`Hinting<enum_TextServer_Hinting>`                         | :ref:`hinting<class_FontData_property_hinting>`                                                       | ``1``                             |
 +-----------------------------------------------------------------+-------------------------------------------------------------------------------------------------------+-----------------------------------+
 | :ref:`int<class_int>`                                           | :ref:`msdf_pixel_range<class_FontData_property_msdf_pixel_range>`                                     | ``16``                            |
@@ -310,6 +312,22 @@ If set to ``true``, auto-hinting is supported and preferred over font built-in h
 
 ----
 
+.. _class_FontData_property_generate_mipmaps:
+
+- :ref:`bool<class_bool>` **generate_mipmaps**
+
++-----------+-----------------------------+
+| *Default* | ``false``                   |
++-----------+-----------------------------+
+| *Setter*  | set_generate_mipmaps(value) |
++-----------+-----------------------------+
+| *Getter*  | get_generate_mipmaps()      |
++-----------+-----------------------------+
+
+If set to ``true``, generate mipmaps for the font textures.
+
+----
+
 .. _class_FontData_property_hinting:
 
 - :ref:`Hinting<enum_TextServer_Hinting>` **hinting**
@@ -783,7 +801,7 @@ Loads an AngelCode BMFont (.fnt, .font) bitmap font from file ``path``.
 
 - :ref:`Error<enum_@GlobalScope_Error>` **load_dynamic_font** **(** :ref:`String<class_String>` path **)**
 
-Loads a TrueType (.ttf), OpenType (.otf), WOFF (.woff) or Type 1 (.pfb, .pfm) dynamic font from file ``path``.
+Loads a TrueType (.ttf), OpenType (.otf), WOFF (.woff), WOFF2 (.woff2) or Type 1 (.pfb, .pfm) dynamic font from file ``path``.
 
 \ **Warning:** This method should only be used in the editor or in cases when you need to load external fonts at run-time, such as fonts located at the ``user://`` directory.
 

+ 2 - 2
classes/class_geometry2d.rst

@@ -241,7 +241,7 @@ Returns ``true`` if ``polygon``'s vertices are ordered in clockwise order, other
 
 - :ref:`Variant<class_Variant>` **line_intersects_line** **(** :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.
 
@@ -325,7 +325,7 @@ Returns if ``point`` is inside the triangle specified by ``a``, ``b`` and ``c``.
 
 - :ref:`Variant<class_Variant>` **segment_intersects_segment** **(** :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``.
 
 ----
 

+ 2 - 2
classes/class_geometry3d.rst

@@ -110,7 +110,7 @@ Given the two 3D segments (``p1``, ``p2``) and (``q1``, ``q2``), finds those two
 
 - :ref:`Variant<class_Variant>` **ray_intersects_triangle** **(** :ref:`Vector3<class_Vector3>` from, :ref:`Vector3<class_Vector3>` dir, :ref:`Vector3<class_Vector3>` a, :ref:`Vector3<class_Vector3>` b, :ref:`Vector3<class_Vector3>` c **)**
 
-Tests if the 3D ray starting at ``from`` with the direction of ``dir`` intersects the triangle specified by ``a``, ``b`` and ``c``. If yes, returns the point of intersection as :ref:`Vector3<class_Vector3>`. If no intersection takes place, an empty :ref:`Variant<class_Variant>` is returned.
+Tests if the 3D ray starting at ``from`` with the direction of ``dir`` intersects the triangle specified by ``a``, ``b`` and ``c``. If yes, returns the point of intersection as :ref:`Vector3<class_Vector3>`. If no intersection takes place, returns ``null``.
 
 ----
 
@@ -142,7 +142,7 @@ Checks if the segment (``from``, ``to``) intersects the sphere that is located a
 
 - :ref:`Variant<class_Variant>` **segment_intersects_triangle** **(** :ref:`Vector3<class_Vector3>` from, :ref:`Vector3<class_Vector3>` to, :ref:`Vector3<class_Vector3>` a, :ref:`Vector3<class_Vector3>` b, :ref:`Vector3<class_Vector3>` c **)**
 
-Tests if the segment (``from``, ``to``) intersects the triangle ``a``, ``b``, ``c``. If yes, returns the point of intersection as :ref:`Vector3<class_Vector3>`. If no intersection takes place, an empty :ref:`Variant<class_Variant>` is returned.
+Tests if the segment (``from``, ``to``) intersects the triangle ``a``, ``b``, ``c``. If yes, returns the point of intersection as :ref:`Vector3<class_Vector3>`. If no intersection takes place, returns ``null``.
 
 .. |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.)`

+ 90 - 114
classes/class_geometryinstance3d.rst

@@ -11,7 +11,7 @@ GeometryInstance3D
 
 **Inherits:** :ref:`VisualInstance3D<class_VisualInstance3D>` **<** :ref:`Node3D<class_Node3D>` **<** :ref:`Node<class_Node>` **<** :ref:`Object<class_Object>`
 
-**Inherited By:** :ref:`CPUParticles3D<class_CPUParticles3D>`, :ref:`CSGShape3D<class_CSGShape3D>`, :ref:`GPUParticles3D<class_GPUParticles3D>`, :ref:`MeshInstance3D<class_MeshInstance3D>`, :ref:`MultiMeshInstance3D<class_MultiMeshInstance3D>`, :ref:`SpriteBase3D<class_SpriteBase3D>`
+**Inherited By:** :ref:`CPUParticles3D<class_CPUParticles3D>`, :ref:`CSGShape3D<class_CSGShape3D>`, :ref:`GPUParticles3D<class_GPUParticles3D>`, :ref:`Label3D<class_Label3D>`, :ref:`MeshInstance3D<class_MeshInstance3D>`, :ref:`MultiMeshInstance3D<class_MultiMeshInstance3D>`, :ref:`SpriteBase3D<class_SpriteBase3D>`
 
 Base node for geometry-based visual instances.
 
@@ -23,35 +23,35 @@ Base node for geometry-based visual instances. Shares some common functionality
 Properties
 ----------
 
-+---------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------+-----------+
-| :ref:`ShadowCastingSetting<enum_GeometryInstance3D_ShadowCastingSetting>`       | :ref:`cast_shadow<class_GeometryInstance3D_property_cast_shadow>`                                     | ``1``     |
-+---------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------+-----------+
-| :ref:`float<class_float>`                                                       | :ref:`extra_cull_margin<class_GeometryInstance3D_property_extra_cull_margin>`                         | ``0.0``   |
-+---------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------+-----------+
-| :ref:`LightmapScale<enum_GeometryInstance3D_LightmapScale>`                     | :ref:`gi_lightmap_scale<class_GeometryInstance3D_property_gi_lightmap_scale>`                         | ``0``     |
-+---------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------+-----------+
-| :ref:`GIMode<enum_GeometryInstance3D_GIMode>`                                   | :ref:`gi_mode<class_GeometryInstance3D_property_gi_mode>`                                             | ``0``     |
-+---------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------+-----------+
-| :ref:`bool<class_bool>`                                                         | :ref:`ignore_occlusion_culling<class_GeometryInstance3D_property_ignore_occlusion_culling>`           | ``false`` |
-+---------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------+-----------+
-| :ref:`float<class_float>`                                                       | :ref:`lod_bias<class_GeometryInstance3D_property_lod_bias>`                                           | ``1.0``   |
-+---------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------+-----------+
-| :ref:`Material<class_Material>`                                                 | :ref:`material_overlay<class_GeometryInstance3D_property_material_overlay>`                           |           |
-+---------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------+-----------+
-| :ref:`Material<class_Material>`                                                 | :ref:`material_override<class_GeometryInstance3D_property_material_override>`                         |           |
-+---------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------+-----------+
-| :ref:`float<class_float>`                                                       | :ref:`transparency<class_GeometryInstance3D_property_transparency>`                                   | ``0.0``   |
-+---------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------+-----------+
-| :ref:`float<class_float>`                                                       | :ref:`visibility_range_begin<class_GeometryInstance3D_property_visibility_range_begin>`               | ``0.0``   |
-+---------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------+-----------+
-| :ref:`float<class_float>`                                                       | :ref:`visibility_range_begin_margin<class_GeometryInstance3D_property_visibility_range_begin_margin>` | ``0.0``   |
-+---------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------+-----------+
-| :ref:`float<class_float>`                                                       | :ref:`visibility_range_end<class_GeometryInstance3D_property_visibility_range_end>`                   | ``0.0``   |
-+---------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------+-----------+
-| :ref:`float<class_float>`                                                       | :ref:`visibility_range_end_margin<class_GeometryInstance3D_property_visibility_range_end_margin>`     | ``0.0``   |
-+---------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------+-----------+
-| :ref:`VisibilityRangeFadeMode<enum_GeometryInstance3D_VisibilityRangeFadeMode>` | :ref:`visibility_range_fade_mode<class_GeometryInstance3D_property_visibility_range_fade_mode>`       | ``0``     |
-+---------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------+-----------+
++---------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------+
+| :ref:`ShadowCastingSetting<enum_GeometryInstance3D_ShadowCastingSetting>`       | :ref:`cast_shadow<class_GeometryInstance3D_property_cast_shadow>`                                     |
++---------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------+
+| :ref:`float<class_float>`                                                       | :ref:`extra_cull_margin<class_GeometryInstance3D_property_extra_cull_margin>`                         |
++---------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------+
+| :ref:`LightmapScale<enum_GeometryInstance3D_LightmapScale>`                     | :ref:`gi_lightmap_scale<class_GeometryInstance3D_property_gi_lightmap_scale>`                         |
++---------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------+
+| :ref:`GIMode<enum_GeometryInstance3D_GIMode>`                                   | :ref:`gi_mode<class_GeometryInstance3D_property_gi_mode>`                                             |
++---------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------+
+| :ref:`bool<class_bool>`                                                         | :ref:`ignore_occlusion_culling<class_GeometryInstance3D_property_ignore_occlusion_culling>`           |
++---------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------+
+| :ref:`float<class_float>`                                                       | :ref:`lod_bias<class_GeometryInstance3D_property_lod_bias>`                                           |
++---------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------+
+| :ref:`Material<class_Material>`                                                 | :ref:`material_overlay<class_GeometryInstance3D_property_material_overlay>`                           |
++---------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------+
+| :ref:`Material<class_Material>`                                                 | :ref:`material_override<class_GeometryInstance3D_property_material_override>`                         |
++---------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------+
+| :ref:`float<class_float>`                                                       | :ref:`transparency<class_GeometryInstance3D_property_transparency>`                                   |
++---------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------+
+| :ref:`float<class_float>`                                                       | :ref:`visibility_range_begin<class_GeometryInstance3D_property_visibility_range_begin>`               |
++---------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------+
+| :ref:`float<class_float>`                                                       | :ref:`visibility_range_begin_margin<class_GeometryInstance3D_property_visibility_range_begin_margin>` |
++---------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------+
+| :ref:`float<class_float>`                                                       | :ref:`visibility_range_end<class_GeometryInstance3D_property_visibility_range_end>`                   |
++---------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------+
+| :ref:`float<class_float>`                                                       | :ref:`visibility_range_end_margin<class_GeometryInstance3D_property_visibility_range_end_margin>`     |
++---------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------+
+| :ref:`VisibilityRangeFadeMode<enum_GeometryInstance3D_VisibilityRangeFadeMode>` | :ref:`visibility_range_fade_mode<class_GeometryInstance3D_property_visibility_range_fade_mode>`       |
++---------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------+
 
 Methods
 -------
@@ -162,13 +162,11 @@ Property Descriptions
 
 - :ref:`ShadowCastingSetting<enum_GeometryInstance3D_ShadowCastingSetting>` **cast_shadow**
 
-+-----------+---------------------------------+
-| *Default* | ``1``                           |
-+-----------+---------------------------------+
-| *Setter*  | set_cast_shadows_setting(value) |
-+-----------+---------------------------------+
-| *Getter*  | get_cast_shadows_setting()      |
-+-----------+---------------------------------+
++----------+---------------------------------+
+| *Setter* | set_cast_shadows_setting(value) |
++----------+---------------------------------+
+| *Getter* | get_cast_shadows_setting()      |
++----------+---------------------------------+
 
 The selected shadow casting flag. See :ref:`ShadowCastingSetting<enum_GeometryInstance3D_ShadowCastingSetting>` for possible values.
 
@@ -178,13 +176,11 @@ The selected shadow casting flag. See :ref:`ShadowCastingSetting<enum_GeometryIn
 
 - :ref:`float<class_float>` **extra_cull_margin**
 
-+-----------+------------------------------+
-| *Default* | ``0.0``                      |
-+-----------+------------------------------+
-| *Setter*  | set_extra_cull_margin(value) |
-+-----------+------------------------------+
-| *Getter*  | get_extra_cull_margin()      |
-+-----------+------------------------------+
++----------+------------------------------+
+| *Setter* | set_extra_cull_margin(value) |
++----------+------------------------------+
+| *Getter* | get_extra_cull_margin()      |
++----------+------------------------------+
 
 The extra distance added to the GeometryInstance3D's bounding box (:ref:`AABB<class_AABB>`) to increase its cull box.
 
@@ -194,13 +190,11 @@ The extra distance added to the GeometryInstance3D's bounding box (:ref:`AABB<cl
 
 - :ref:`LightmapScale<enum_GeometryInstance3D_LightmapScale>` **gi_lightmap_scale**
 
-+-----------+---------------------------+
-| *Default* | ``0``                     |
-+-----------+---------------------------+
-| *Setter*  | set_lightmap_scale(value) |
-+-----------+---------------------------+
-| *Getter*  | get_lightmap_scale()      |
-+-----------+---------------------------+
++----------+---------------------------+
+| *Setter* | set_lightmap_scale(value) |
++----------+---------------------------+
+| *Getter* | get_lightmap_scale()      |
++----------+---------------------------+
 
 The texel density to use for lightmapping in :ref:`LightmapGI<class_LightmapGI>`. Greater scale values provide higher resolution in the lightmap, which can result in sharper shadows for lights that have both direct and indirect light baked. However, greater scale values will also increase the space taken by the mesh in the lightmap texture, which increases the memory, storage, and bake time requirements. When using a single mesh at different scales, consider adjusting this value to keep the lightmap texel density consistent across meshes.
 
@@ -210,13 +204,11 @@ The texel density to use for lightmapping in :ref:`LightmapGI<class_LightmapGI>`
 
 - :ref:`GIMode<enum_GeometryInstance3D_GIMode>` **gi_mode**
 
-+-----------+--------------------+
-| *Default* | ``0``              |
-+-----------+--------------------+
-| *Setter*  | set_gi_mode(value) |
-+-----------+--------------------+
-| *Getter*  | get_gi_mode()      |
-+-----------+--------------------+
++----------+--------------------+
+| *Setter* | set_gi_mode(value) |
++----------+--------------------+
+| *Getter* | get_gi_mode()      |
++----------+--------------------+
 
 The global illumination mode to use for the whole geometry. To avoid inconsistent results, use a mode that matches the purpose of the mesh during gameplay (static/dynamic).
 
@@ -228,13 +220,11 @@ The global illumination mode to use for the whole geometry. To avoid inconsisten
 
 - :ref:`bool<class_bool>` **ignore_occlusion_culling**
 
-+-----------+-------------------------------------+
-| *Default* | ``false``                           |
-+-----------+-------------------------------------+
-| *Setter*  | set_ignore_occlusion_culling(value) |
-+-----------+-------------------------------------+
-| *Getter*  | is_ignoring_occlusion_culling()     |
-+-----------+-------------------------------------+
++----------+-------------------------------------+
+| *Setter* | set_ignore_occlusion_culling(value) |
++----------+-------------------------------------+
+| *Getter* | is_ignoring_occlusion_culling()     |
++----------+-------------------------------------+
 
 ----
 
@@ -242,13 +232,11 @@ The global illumination mode to use for the whole geometry. To avoid inconsisten
 
 - :ref:`float<class_float>` **lod_bias**
 
-+-----------+---------------------+
-| *Default* | ``1.0``             |
-+-----------+---------------------+
-| *Setter*  | set_lod_bias(value) |
-+-----------+---------------------+
-| *Getter*  | get_lod_bias()      |
-+-----------+---------------------+
++----------+---------------------+
+| *Setter* | set_lod_bias(value) |
++----------+---------------------+
+| *Getter* | get_lod_bias()      |
++----------+---------------------+
 
 ----
 
@@ -288,13 +276,11 @@ If a material is assigned to this property, it will be used instead of any mater
 
 - :ref:`float<class_float>` **transparency**
 
-+-----------+-------------------------+
-| *Default* | ``0.0``                 |
-+-----------+-------------------------+
-| *Setter*  | set_transparency(value) |
-+-----------+-------------------------+
-| *Getter*  | get_transparency()      |
-+-----------+-------------------------+
++----------+-------------------------+
+| *Setter* | set_transparency(value) |
++----------+-------------------------+
+| *Getter* | get_transparency()      |
++----------+-------------------------+
 
 The transparency applied to the whole geometry (as a multiplier of the materials' existing transparency). ``0.0`` is fully opaque, while ``1.0`` is fully transparent. Values greater than ``0.0`` (exclusive) will force the geometry's materials to go through the transparent pipeline, which is slower to render and can exhibit rendering issues due to incorrect transparency sorting. However, unlike using a transparent material, setting :ref:`transparency<class_GeometryInstance3D_property_transparency>` to a value greater than ``0.0`` (exclusive) will *not* disable shadow rendering.
 
@@ -308,13 +294,11 @@ In spatial shaders, ``1.0 - transparency`` is set as the default value of the ``
 
 - :ref:`float<class_float>` **visibility_range_begin**
 
-+-----------+-----------------------------------+
-| *Default* | ``0.0``                           |
-+-----------+-----------------------------------+
-| *Setter*  | set_visibility_range_begin(value) |
-+-----------+-----------------------------------+
-| *Getter*  | get_visibility_range_begin()      |
-+-----------+-----------------------------------+
++----------+-----------------------------------+
+| *Setter* | set_visibility_range_begin(value) |
++----------+-----------------------------------+
+| *Getter* | get_visibility_range_begin()      |
++----------+-----------------------------------+
 
 Starting distance from which the GeometryInstance3D will be visible, taking :ref:`visibility_range_begin_margin<class_GeometryInstance3D_property_visibility_range_begin_margin>` into account as well. The default value of 0 is used to disable the range check.
 
@@ -324,13 +308,11 @@ Starting distance from which the GeometryInstance3D will be visible, taking :ref
 
 - :ref:`float<class_float>` **visibility_range_begin_margin**
 
-+-----------+------------------------------------------+
-| *Default* | ``0.0``                                  |
-+-----------+------------------------------------------+
-| *Setter*  | set_visibility_range_begin_margin(value) |
-+-----------+------------------------------------------+
-| *Getter*  | get_visibility_range_begin_margin()      |
-+-----------+------------------------------------------+
++----------+------------------------------------------+
+| *Setter* | set_visibility_range_begin_margin(value) |
++----------+------------------------------------------+
+| *Getter* | get_visibility_range_begin_margin()      |
++----------+------------------------------------------+
 
 Margin for the :ref:`visibility_range_begin<class_GeometryInstance3D_property_visibility_range_begin>` threshold. The GeometryInstance3D will only change its visibility state when it goes over or under the :ref:`visibility_range_begin<class_GeometryInstance3D_property_visibility_range_begin>` threshold by this amount.
 
@@ -342,13 +324,11 @@ If :ref:`visibility_range_fade_mode<class_GeometryInstance3D_property_visibility
 
 - :ref:`float<class_float>` **visibility_range_end**
 
-+-----------+---------------------------------+
-| *Default* | ``0.0``                         |
-+-----------+---------------------------------+
-| *Setter*  | set_visibility_range_end(value) |
-+-----------+---------------------------------+
-| *Getter*  | get_visibility_range_end()      |
-+-----------+---------------------------------+
++----------+---------------------------------+
+| *Setter* | set_visibility_range_end(value) |
++----------+---------------------------------+
+| *Getter* | get_visibility_range_end()      |
++----------+---------------------------------+
 
 Distance from which the GeometryInstance3D will be hidden, taking :ref:`visibility_range_end_margin<class_GeometryInstance3D_property_visibility_range_end_margin>` into account as well. The default value of 0 is used to disable the range check.
 
@@ -358,13 +338,11 @@ Distance from which the GeometryInstance3D will be hidden, taking :ref:`visibili
 
 - :ref:`float<class_float>` **visibility_range_end_margin**
 
-+-----------+----------------------------------------+
-| *Default* | ``0.0``                                |
-+-----------+----------------------------------------+
-| *Setter*  | set_visibility_range_end_margin(value) |
-+-----------+----------------------------------------+
-| *Getter*  | get_visibility_range_end_margin()      |
-+-----------+----------------------------------------+
++----------+----------------------------------------+
+| *Setter* | set_visibility_range_end_margin(value) |
++----------+----------------------------------------+
+| *Getter* | get_visibility_range_end_margin()      |
++----------+----------------------------------------+
 
 Margin for the :ref:`visibility_range_end<class_GeometryInstance3D_property_visibility_range_end>` threshold. The GeometryInstance3D will only change its visibility state when it goes over or under the :ref:`visibility_range_end<class_GeometryInstance3D_property_visibility_range_end>` threshold by this amount.
 
@@ -376,13 +354,11 @@ If :ref:`visibility_range_fade_mode<class_GeometryInstance3D_property_visibility
 
 - :ref:`VisibilityRangeFadeMode<enum_GeometryInstance3D_VisibilityRangeFadeMode>` **visibility_range_fade_mode**
 
-+-----------+---------------------------------------+
-| *Default* | ``0``                                 |
-+-----------+---------------------------------------+
-| *Setter*  | set_visibility_range_fade_mode(value) |
-+-----------+---------------------------------------+
-| *Getter*  | get_visibility_range_fade_mode()      |
-+-----------+---------------------------------------+
++----------+---------------------------------------+
+| *Setter* | set_visibility_range_fade_mode(value) |
++----------+---------------------------------------+
+| *Getter* | get_visibility_range_fade_mode()      |
++----------+---------------------------------------+
 
 Controls which instances will be faded when approaching the limits of the visibility range. See :ref:`VisibilityRangeFadeMode<enum_GeometryInstance3D_VisibilityRangeFadeMode>` for possible values.
 

+ 2 - 2
classes/class_gltfdocument.rst

@@ -31,7 +31,7 @@ Methods
 +-----------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
 | :ref:`Error<enum_@GlobalScope_Error>`         | :ref:`append_from_buffer<class_GLTFDocument_method_append_from_buffer>` **(** :ref:`PackedByteArray<class_PackedByteArray>` bytes, :ref:`String<class_String>` base_path, :ref:`GLTFState<class_GLTFState>` state, :ref:`int<class_int>` flags=0, :ref:`int<class_int>` bake_fps=30 **)** |
 +-----------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`Error<enum_@GlobalScope_Error>`         | :ref:`append_from_file<class_GLTFDocument_method_append_from_file>` **(** :ref:`String<class_String>` path, :ref:`GLTFState<class_GLTFState>` state, :ref:`int<class_int>` flags=0, :ref:`int<class_int>` bake_fps=30 **)**                                                               |
+| :ref:`Error<enum_@GlobalScope_Error>`         | :ref:`append_from_file<class_GLTFDocument_method_append_from_file>` **(** :ref:`String<class_String>` path, :ref:`GLTFState<class_GLTFState>` state, :ref:`int<class_int>` flags=0, :ref:`int<class_int>` bake_fps=30, :ref:`String<class_String>` base_path="" **)**                     |
 +-----------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
 | :ref:`Error<enum_@GlobalScope_Error>`         | :ref:`append_from_scene<class_GLTFDocument_method_append_from_scene>` **(** :ref:`Node<class_Node>` node, :ref:`GLTFState<class_GLTFState>` state, :ref:`int<class_int>` flags=0, :ref:`int<class_int>` bake_fps=30 **)**                                                                 |
 +-----------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
@@ -68,7 +68,7 @@ Method Descriptions
 
 .. _class_GLTFDocument_method_append_from_file:
 
-- :ref:`Error<enum_@GlobalScope_Error>` **append_from_file** **(** :ref:`String<class_String>` path, :ref:`GLTFState<class_GLTFState>` state, :ref:`int<class_int>` flags=0, :ref:`int<class_int>` bake_fps=30 **)**
+- :ref:`Error<enum_@GlobalScope_Error>` **append_from_file** **(** :ref:`String<class_String>` path, :ref:`GLTFState<class_GLTFState>` state, :ref:`int<class_int>` flags=0, :ref:`int<class_int>` bake_fps=30, :ref:`String<class_String>` base_path="" **)**
 
 ----
 

+ 29 - 53
classes/class_gltfdocumentextension.rst

@@ -18,88 +18,64 @@ GLTFDocumentExtension
 Methods
 -------
 
-+---------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`Error<enum_@GlobalScope_Error>` | :ref:`export_post<class_GLTFDocumentExtension_method_export_post>` **(** :ref:`GLTFDocument<class_GLTFDocument>` document **)**                                           |
-+---------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`Error<enum_@GlobalScope_Error>` | :ref:`export_preflight<class_GLTFDocumentExtension_method_export_preflight>` **(** :ref:`GLTFDocument<class_GLTFDocument>` document, :ref:`Node<class_Node>` node **)**   |
-+---------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`Variant<class_Variant>`         | :ref:`get_export_setting<class_GLTFDocumentExtension_method_get_export_setting>` **(** :ref:`StringName<class_StringName>` key **)** |const|                              |
-+---------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`Array<class_Array>`             | :ref:`get_export_setting_keys<class_GLTFDocumentExtension_method_get_export_setting_keys>` **(** **)** |const|                                                            |
-+---------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`Variant<class_Variant>`         | :ref:`get_import_setting<class_GLTFDocumentExtension_method_get_import_setting>` **(** :ref:`StringName<class_StringName>` key **)** |const|                              |
-+---------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`Array<class_Array>`             | :ref:`get_import_setting_keys<class_GLTFDocumentExtension_method_get_import_setting_keys>` **(** **)** |const|                                                            |
-+---------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`Error<enum_@GlobalScope_Error>` | :ref:`import_post<class_GLTFDocumentExtension_method_import_post>` **(** :ref:`GLTFDocument<class_GLTFDocument>` document, :ref:`Node<class_Node>` node **)**             |
-+---------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`Error<enum_@GlobalScope_Error>` | :ref:`import_preflight<class_GLTFDocumentExtension_method_import_preflight>` **(** :ref:`GLTFDocument<class_GLTFDocument>` document **)**                                 |
-+---------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| void                                  | :ref:`set_export_setting<class_GLTFDocumentExtension_method_set_export_setting>` **(** :ref:`StringName<class_StringName>` key, :ref:`Variant<class_Variant>` value **)** |
-+---------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| void                                  | :ref:`set_import_setting<class_GLTFDocumentExtension_method_set_import_setting>` **(** :ref:`StringName<class_StringName>` key, :ref:`Variant<class_Variant>` value **)** |
-+---------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
++-----------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`int<class_int>` | :ref:`_export_node<class_GLTFDocumentExtension_method__export_node>` **(** :ref:`GLTFState<class_GLTFState>` state, :ref:`GLTFNode<class_GLTFNode>` gltf_node, :ref:`Dictionary<class_Dictionary>` json, :ref:`Node<class_Node>` node **)** |virtual| |
++-----------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`int<class_int>` | :ref:`_export_post<class_GLTFDocumentExtension_method__export_post>` **(** :ref:`GLTFState<class_GLTFState>` state **)** |virtual|                                                                                                                    |
++-----------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`int<class_int>` | :ref:`_export_preflight<class_GLTFDocumentExtension_method__export_preflight>` **(** :ref:`Node<class_Node>` root **)** |virtual|                                                                                                                     |
++-----------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`int<class_int>` | :ref:`_import_node<class_GLTFDocumentExtension_method__import_node>` **(** :ref:`GLTFState<class_GLTFState>` state, :ref:`GLTFNode<class_GLTFNode>` gltf_node, :ref:`Dictionary<class_Dictionary>` json, :ref:`Node<class_Node>` node **)** |virtual| |
++-----------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`int<class_int>` | :ref:`_import_post<class_GLTFDocumentExtension_method__import_post>` **(** :ref:`GLTFState<class_GLTFState>` state, :ref:`Node<class_Node>` root **)** |virtual|                                                                                      |
++-----------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`int<class_int>` | :ref:`_import_post_parse<class_GLTFDocumentExtension_method__import_post_parse>` **(** :ref:`GLTFState<class_GLTFState>` state **)** |virtual|                                                                                                        |
++-----------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`int<class_int>` | :ref:`_import_preflight<class_GLTFDocumentExtension_method__import_preflight>` **(** :ref:`GLTFState<class_GLTFState>` state **)** |virtual|                                                                                                          |
++-----------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
 
 Method Descriptions
 -------------------
 
-.. _class_GLTFDocumentExtension_method_export_post:
+.. _class_GLTFDocumentExtension_method__export_node:
 
-- :ref:`Error<enum_@GlobalScope_Error>` **export_post** **(** :ref:`GLTFDocument<class_GLTFDocument>` document **)**
+- :ref:`int<class_int>` **_export_node** **(** :ref:`GLTFState<class_GLTFState>` state, :ref:`GLTFNode<class_GLTFNode>` gltf_node, :ref:`Dictionary<class_Dictionary>` json, :ref:`Node<class_Node>` node **)** |virtual|
 
 ----
 
-.. _class_GLTFDocumentExtension_method_export_preflight:
+.. _class_GLTFDocumentExtension_method__export_post:
 
-- :ref:`Error<enum_@GlobalScope_Error>` **export_preflight** **(** :ref:`GLTFDocument<class_GLTFDocument>` document, :ref:`Node<class_Node>` node **)**
+- :ref:`int<class_int>` **_export_post** **(** :ref:`GLTFState<class_GLTFState>` state **)** |virtual|
 
 ----
 
-.. _class_GLTFDocumentExtension_method_get_export_setting:
+.. _class_GLTFDocumentExtension_method__export_preflight:
 
-- :ref:`Variant<class_Variant>` **get_export_setting** **(** :ref:`StringName<class_StringName>` key **)** |const|
+- :ref:`int<class_int>` **_export_preflight** **(** :ref:`Node<class_Node>` root **)** |virtual|
 
 ----
 
-.. _class_GLTFDocumentExtension_method_get_export_setting_keys:
+.. _class_GLTFDocumentExtension_method__import_node:
 
-- :ref:`Array<class_Array>` **get_export_setting_keys** **(** **)** |const|
+- :ref:`int<class_int>` **_import_node** **(** :ref:`GLTFState<class_GLTFState>` state, :ref:`GLTFNode<class_GLTFNode>` gltf_node, :ref:`Dictionary<class_Dictionary>` json, :ref:`Node<class_Node>` node **)** |virtual|
 
 ----
 
-.. _class_GLTFDocumentExtension_method_get_import_setting:
+.. _class_GLTFDocumentExtension_method__import_post:
 
-- :ref:`Variant<class_Variant>` **get_import_setting** **(** :ref:`StringName<class_StringName>` key **)** |const|
+- :ref:`int<class_int>` **_import_post** **(** :ref:`GLTFState<class_GLTFState>` state, :ref:`Node<class_Node>` root **)** |virtual|
 
 ----
 
-.. _class_GLTFDocumentExtension_method_get_import_setting_keys:
+.. _class_GLTFDocumentExtension_method__import_post_parse:
 
-- :ref:`Array<class_Array>` **get_import_setting_keys** **(** **)** |const|
+- :ref:`int<class_int>` **_import_post_parse** **(** :ref:`GLTFState<class_GLTFState>` state **)** |virtual|
 
 ----
 
-.. _class_GLTFDocumentExtension_method_import_post:
+.. _class_GLTFDocumentExtension_method__import_preflight:
 
-- :ref:`Error<enum_@GlobalScope_Error>` **import_post** **(** :ref:`GLTFDocument<class_GLTFDocument>` document, :ref:`Node<class_Node>` node **)**
-
-----
-
-.. _class_GLTFDocumentExtension_method_import_preflight:
-
-- :ref:`Error<enum_@GlobalScope_Error>` **import_preflight** **(** :ref:`GLTFDocument<class_GLTFDocument>` document **)**
-
-----
-
-.. _class_GLTFDocumentExtension_method_set_export_setting:
-
-- void **set_export_setting** **(** :ref:`StringName<class_StringName>` key, :ref:`Variant<class_Variant>` value **)**
-
-----
-
-.. _class_GLTFDocumentExtension_method_set_import_setting:
-
-- void **set_import_setting** **(** :ref:`StringName<class_StringName>` key, :ref:`Variant<class_Variant>` value **)**
+- :ref:`int<class_int>` **_import_preflight** **(** :ref:`GLTFState<class_GLTFState>` state **)** |virtual|
 
 .. |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.)`

+ 16 - 0
classes/class_gltfstate.rst

@@ -16,6 +16,8 @@ GLTFState
 Properties
 ----------
 
++-----------------------------------------------+----------------------------------------------------------------------------+-----------------------+
+| :ref:`String<class_String>`                   | :ref:`base_path<class_GLTFState_property_base_path>`                       | ``""``                |
 +-----------------------------------------------+----------------------------------------------------------------------------+-----------------------+
 | :ref:`Array<class_Array>`                     | :ref:`buffers<class_GLTFState_property_buffers>`                           | ``[]``                |
 +-----------------------------------------------+----------------------------------------------------------------------------+-----------------------+
@@ -108,6 +110,20 @@ Methods
 Property Descriptions
 ---------------------
 
+.. _class_GLTFState_property_base_path:
+
+- :ref:`String<class_String>` **base_path**
+
++-----------+----------------------+
+| *Default* | ``""``               |
++-----------+----------------------+
+| *Setter*  | set_base_path(value) |
++-----------+----------------------+
+| *Getter*  | get_base_path()      |
++-----------+----------------------+
+
+----
+
 .. _class_GLTFState_property_buffers:
 
 - :ref:`Array<class_Array>` **buffers**

+ 18 - 0
classes/class_gpuparticles2d.rst

@@ -45,6 +45,8 @@ Properties
 +-------------------------------------------------+---------------------------------------------------------------------------------------------+---------------------------------+
 | :ref:`bool<class_bool>`                         | :ref:`fract_delta<class_GPUParticles2D_property_fract_delta>`                               | ``true``                        |
 +-------------------------------------------------+---------------------------------------------------------------------------------------------+---------------------------------+
+| :ref:`bool<class_bool>`                         | :ref:`interpolate<class_GPUParticles2D_property_interpolate>`                               | ``true``                        |
++-------------------------------------------------+---------------------------------------------------------------------------------------------+---------------------------------+
 | :ref:`float<class_float>`                       | :ref:`lifetime<class_GPUParticles2D_property_lifetime>`                                     | ``1.0``                         |
 +-------------------------------------------------+---------------------------------------------------------------------------------------------+---------------------------------+
 | :ref:`bool<class_bool>`                         | :ref:`local_coords<class_GPUParticles2D_property_local_coords>`                             | ``true``                        |
@@ -243,6 +245,22 @@ If ``true``, results in fractional delta calculation which has a smoother partic
 
 ----
 
+.. _class_GPUParticles2D_property_interpolate:
+
+- :ref:`bool<class_bool>` **interpolate**
+
++-----------+------------------------+
+| *Default* | ``true``               |
++-----------+------------------------+
+| *Setter*  | set_interpolate(value) |
++-----------+------------------------+
+| *Getter*  | get_interpolate()      |
++-----------+------------------------+
+
+Enables particle interpolation, which makes the particle movement smoother when their :ref:`fixed_fps<class_GPUParticles2D_property_fixed_fps>` is lower than the screen refresh rate.
+
+----
+
 .. _class_GPUParticles2D_property_lifetime:
 
 - :ref:`float<class_float>` **lifetime**

+ 2 - 0
classes/class_gpuparticles3d.rst

@@ -386,6 +386,8 @@ If ``true``, results in fractional delta calculation which has a smoother partic
 | *Getter*  | get_interpolate()      |
 +-----------+------------------------+
 
+Enables particle interpolation, which makes the particle movement smoother when their :ref:`fixed_fps<class_GPUParticles3D_property_fixed_fps>` is lower than the screen refresh rate.
+
 ----
 
 .. _class_GPUParticles3D_property_lifetime:

+ 25 - 0
classes/class_gpuparticlesattractor3d.rst

@@ -13,7 +13,18 @@ GPUParticlesAttractor3D
 
 **Inherited By:** :ref:`GPUParticlesAttractorBox3D<class_GPUParticlesAttractorBox3D>`, :ref:`GPUParticlesAttractorSphere3D<class_GPUParticlesAttractorSphere3D>`, :ref:`GPUParticlesAttractorVectorField3D<class_GPUParticlesAttractorVectorField3D>`
 
+Abstract class for 3D particle attractors affecting :ref:`GPUParticles3D<class_GPUParticles3D>` nodes.
 
+Description
+-----------
+
+Particle attractors can be used to attract particles towards the attractor's origin, or to push them away from the attractor's origin.
+
+Particle attractors work in real-time and can be moved, rotated and scaled during gameplay. Unlike collision shapes, non-uniform scaling of attractors is also supported.
+
+Attractors can be temporarily disabled by hiding them, or by setting their :ref:`strength<class_GPUParticlesAttractor3D_property_strength>` to ``0.0``.
+
+\ **Note:** Particle attractors only affect :ref:`GPUParticles3D<class_GPUParticles3D>`, not :ref:`CPUParticles3D<class_CPUParticles3D>`.
 
 Properties
 ----------
@@ -43,6 +54,8 @@ Property Descriptions
 | *Getter*  | get_attenuation()      |
 +-----------+------------------------+
 
+The particle attractor's attenuation. Higher values result in more gradual pushing of particles as they come closer to the attractor's origin. Zero or negative values will cause particles to be pushed very fast as soon as the touch the attractor's edges.
+
 ----
 
 .. _class_GPUParticlesAttractor3D_property_cull_mask:
@@ -57,6 +70,12 @@ Property Descriptions
 | *Getter*  | get_cull_mask()      |
 +-----------+----------------------+
 
+The particle rendering layers (:ref:`VisualInstance3D.layers<class_VisualInstance3D_property_layers>`) that will be affected by the attractor. By default, all particles are affected by an attractor.
+
+After configuring particle nodes accordingly, specific layers can be unchecked to prevent certain particles from being affected by attractors. For example, this can be used if you're using an attractor as part of a spell effect but don't want the attractor to affect unrelated weather particles at the same position.
+
+Particle attraction can also be disabled on a per-process material basis by setting :ref:`ParticlesMaterial.attractor_interaction_enabled<class_ParticlesMaterial_property_attractor_interaction_enabled>` on the :ref:`GPUParticles3D<class_GPUParticles3D>` node.
+
 ----
 
 .. _class_GPUParticlesAttractor3D_property_directionality:
@@ -71,6 +90,10 @@ Property Descriptions
 | *Getter*  | get_directionality()      |
 +-----------+---------------------------+
 
+Adjusts how directional the attractor is. At ``0.0``, the attractor is not directional at all: it will attract particles towards its center. At ``1.0``, the attractor is fully directional: particles will always be pushed towards local -Z (or +Z if :ref:`strength<class_GPUParticlesAttractor3D_property_strength>` is negative).
+
+\ **Note:** If :ref:`directionality<class_GPUParticlesAttractor3D_property_directionality>` is greater than ``0.0``, the direction in which particles are pushed can be changed by rotating the ``GPUParticlesAttractor3D`` node.
+
 ----
 
 .. _class_GPUParticlesAttractor3D_property_strength:
@@ -85,6 +108,8 @@ Property Descriptions
 | *Getter*  | get_strength()      |
 +-----------+---------------------+
 
+If :ref:`strength<class_GPUParticlesAttractor3D_property_strength>` is negative, particles will be pushed in the reverse direction. Particles will be pushed *away* from the attractor's  origin if :ref:`directionality<class_GPUParticlesAttractor3D_property_directionality>` is ``0.0``, or towards local +Z if :ref:`directionality<class_GPUParticlesAttractor3D_property_directionality>` is greater than ``0.0``.
+
 .. |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.)`

+ 9 - 0
classes/class_gpuparticlesattractorbox3d.rst

@@ -11,7 +11,14 @@ GPUParticlesAttractorBox3D
 
 **Inherits:** :ref:`GPUParticlesAttractor3D<class_GPUParticlesAttractor3D>` **<** :ref:`VisualInstance3D<class_VisualInstance3D>` **<** :ref:`Node3D<class_Node3D>` **<** :ref:`Node<class_Node>` **<** :ref:`Object<class_Object>`
 
+Box-shaped 3D particle attractor affecting :ref:`GPUParticles3D<class_GPUParticles3D>` nodes.
 
+Description
+-----------
+
+Box-shaped 3D particle attractor affecting :ref:`GPUParticles3D<class_GPUParticles3D>` nodes.
+
+\ **Note:** Particle attractors only affect :ref:`GPUParticles3D<class_GPUParticles3D>`, not :ref:`CPUParticles3D<class_CPUParticles3D>`.
 
 Properties
 ----------
@@ -35,6 +42,8 @@ Property Descriptions
 | *Getter*  | get_extents()        |
 +-----------+----------------------+
 
+The attractor box's extents in 3D units.
+
 .. |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.)`

+ 11 - 0
classes/class_gpuparticlesattractorsphere3d.rst

@@ -11,7 +11,14 @@ GPUParticlesAttractorSphere3D
 
 **Inherits:** :ref:`GPUParticlesAttractor3D<class_GPUParticlesAttractor3D>` **<** :ref:`VisualInstance3D<class_VisualInstance3D>` **<** :ref:`Node3D<class_Node3D>` **<** :ref:`Node<class_Node>` **<** :ref:`Object<class_Object>`
 
+Ellipse-shaped 3D particle attractor affecting :ref:`GPUParticles3D<class_GPUParticles3D>` nodes.
 
+Description
+-----------
+
+Ellipse-shaped 3D particle attractor affecting :ref:`GPUParticles3D<class_GPUParticles3D>` nodes.
+
+\ **Note:** Particle attractors only affect :ref:`GPUParticles3D<class_GPUParticles3D>`, not :ref:`CPUParticles3D<class_CPUParticles3D>`.
 
 Properties
 ----------
@@ -35,6 +42,10 @@ Property Descriptions
 | *Getter*  | get_radius()      |
 +-----------+-------------------+
 
+The attractor sphere's radius in 3D units.
+
+\ **Note:** Stretched ellipses can be obtained by using non-uniform scaling on the ``GPUParticlesAttractorSphere3D`` 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.)`

+ 15 - 0
classes/class_gpuparticlesattractorvectorfield3d.rst

@@ -11,7 +11,16 @@ GPUParticlesAttractorVectorField3D
 
 **Inherits:** :ref:`GPUParticlesAttractor3D<class_GPUParticlesAttractor3D>` **<** :ref:`VisualInstance3D<class_VisualInstance3D>` **<** :ref:`Node3D<class_Node3D>` **<** :ref:`Node<class_Node>` **<** :ref:`Object<class_Object>`
 
+Box-shaped 3D particle attractor with strength varying within the box, affecting :ref:`GPUParticles3D<class_GPUParticles3D>` nodes.
 
+Description
+-----------
+
+Box-shaped 3D particle attractor with strength varying within the box, affecting :ref:`GPUParticles3D<class_GPUParticles3D>` nodes.
+
+Unlike :ref:`GPUParticlesAttractorBox3D<class_GPUParticlesAttractorBox3D>`, ``GPUParticlesAttractorVectorField3D`` uses a :ref:`texture<class_GPUParticlesAttractorVectorField3D_property_texture>` to affect attraction strength within the box. This can be used to create complex attraction scenarios where particles travel in different directions depending on their location. This can be useful for weather effects such as sandstorms.
+
+\ **Note:** Particle attractors only affect :ref:`GPUParticles3D<class_GPUParticles3D>`, not :ref:`CPUParticles3D<class_CPUParticles3D>`.
 
 Properties
 ----------
@@ -37,6 +46,8 @@ Property Descriptions
 | *Getter*  | get_extents()        |
 +-----------+----------------------+
 
+The extents of the vector field box in 3D units.
+
 ----
 
 .. _class_GPUParticlesAttractorVectorField3D_property_texture:
@@ -49,6 +60,10 @@ Property Descriptions
 | *Getter* | get_texture()      |
 +----------+--------------------+
 
+The 3D texture to be used. Values are linearly interpolated between the texture's pixels.
+
+\ **Note:** To get better performance, the 3D texture's resolution should reflect the :ref:`extents<class_GPUParticlesAttractorVectorField3D_property_extents>` of the attractor. Since particle attraction is usually low-frequency data, the texture can be kept at a low resolution such as 64×64×64.
+
 .. |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.)`

Niektóre pliki nie zostały wyświetlone z powodu dużej ilości zmienionych plików