瀏覽代碼

doc: Sync with current 3.5 branch (8ee69a88c)

Rémi Verschelde 3 年之前
父節點
當前提交
12786907c6
共有 100 個文件被更改,包括 1109 次插入676 次删除
  1. 50 30
      classes/[email protected]
  2. 141 61
      classes/[email protected]
  3. 15 5
      classes/class_aabb.rst
  4. 12 12
      classes/class_acceptdialog.rst
  5. 2 2
      classes/class_aescontext.rst
  6. 14 20
      classes/class_animatedsprite.rst
  7. 1 1
      classes/class_animatedsprite3d.rst
  8. 15 15
      classes/class_animatedtexture.rst
  9. 3 3
      classes/class_animation.rst
  10. 1 1
      classes/class_animationnodeadd3.rst
  11. 1 1
      classes/class_animationnodeanimation.rst
  12. 1 1
      classes/class_animationnodeblend2.rst
  13. 1 1
      classes/class_animationnodeblendspace2d.rst
  14. 3 1
      classes/class_animationnodeblendtree.rst
  15. 1 1
      classes/class_animationnodeoneshot.rst
  16. 1 1
      classes/class_animationnodeoutput.rst
  17. 1 1
      classes/class_animationnodestatemachine.rst
  18. 4 4
      classes/class_animationnodestatemachineplayback.rst
  19. 1 1
      classes/class_animationnodestatemachinetransition.rst
  20. 1 1
      classes/class_animationnodetimescale.rst
  21. 1 1
      classes/class_animationnodetransition.rst
  22. 7 7
      classes/class_animationplayer.rst
  23. 2 2
      classes/class_animationtree.rst
  24. 22 22
      classes/class_area.rst
  25. 23 23
      classes/class_area2d.rst
  26. 37 21
      classes/class_array.rst
  27. 2 2
      classes/class_arraymesh.rst
  28. 1 1
      classes/class_arvrinterface.rst
  29. 1 1
      classes/class_arvrorigin.rst
  30. 3 3
      classes/class_astar.rst
  31. 2 2
      classes/class_astar2d.rst
  32. 13 13
      classes/class_atlastexture.rst
  33. 1 1
      classes/class_audioeffectdistortion.rst
  34. 1 1
      classes/class_audioeffectfilter.rst
  35. 1 1
      classes/class_audioeffecthighshelffilter.rst
  36. 1 1
      classes/class_audioeffectlowshelffilter.rst
  37. 1 1
      classes/class_audioeffectrecord.rst
  38. 20 22
      classes/class_audioserver.rst
  39. 1 1
      classes/class_audiostream.rst
  40. 1 1
      classes/class_audiostreamgenerator.rst
  41. 1 1
      classes/class_audiostreamplayer.rst
  42. 1 1
      classes/class_audiostreamplayer2d.rst
  43. 2 2
      classes/class_audiostreamplayer3d.rst
  44. 2 2
      classes/class_audiostreamsample.rst
  45. 1 1
      classes/class_backbuffercopy.rst
  46. 8 6
      classes/class_bakedlightmap.rst
  47. 26 26
      classes/class_basebutton.rst
  48. 5 5
      classes/class_basis.rst
  49. 20 0
      classes/class_bitmap.rst
  50. 1 1
      classes/class_bool.rst
  51. 5 5
      classes/class_boxcontainer.rst
  52. 20 2
      classes/class_button.rst
  53. 4 4
      classes/class_buttongroup.rst
  54. 46 0
      classes/class_callbacktweener.rst
  55. 6 6
      classes/class_camera.rst
  56. 11 7
      classes/class_camera2d.rst
  57. 1 1
      classes/class_camerafeed.rst
  58. 1 1
      classes/class_cameraserver.rst
  59. 10 10
      classes/class_cameratexture.rst
  60. 17 13
      classes/class_canvasitem.rst
  61. 3 3
      classes/class_canvasitemmaterial.rst
  62. 51 2
      classes/class_canvaslayer.rst
  63. 1 1
      classes/class_capsulemesh.rst
  64. 1 1
      classes/class_charfxtransform.rst
  65. 5 5
      classes/class_checkbox.rst
  66. 5 5
      classes/class_checkbutton.rst
  67. 1 1
      classes/class_classdb.rst
  68. 3 3
      classes/class_clippedcamera.rst
  69. 2 2
      classes/class_collisionobject.rst
  70. 3 3
      classes/class_collisionobject2d.rst
  71. 1 1
      classes/class_collisionpolygon.rst
  72. 1 1
      classes/class_collisionshape.rst
  73. 1 1
      classes/class_collisionshape2d.rst
  74. 147 135
      classes/class_color.rst
  75. 4 4
      classes/class_colorpicker.rst
  76. 10 10
      classes/class_colorpickerbutton.rst
  77. 1 1
      classes/class_concavepolygonshape.rst
  78. 1 1
      classes/class_configfile.rst
  79. 6 6
      classes/class_confirmationdialog.rst
  80. 1 1
      classes/class_container.rst
  81. 132 26
      classes/class_control.rst
  82. 18 2
      classes/class_cpuparticles.rst
  83. 19 3
      classes/class_cpuparticles2d.rst
  84. 3 3
      classes/class_crypto.rst
  85. 3 3
      classes/class_cryptokey.rst
  86. 2 2
      classes/class_csgbox.rst
  87. 2 2
      classes/class_csgcombiner.rst
  88. 2 2
      classes/class_csgcylinder.rst
  89. 3 3
      classes/class_csgmesh.rst
  90. 5 5
      classes/class_csgpolygon.rst
  91. 2 2
      classes/class_csgprimitive.rst
  92. 4 4
      classes/class_csgshape.rst
  93. 2 2
      classes/class_csgsphere.rst
  94. 2 2
      classes/class_csgtorus.rst
  95. 1 1
      classes/class_cubemesh.rst
  96. 26 6
      classes/class_cullinstance.rst
  97. 4 4
      classes/class_curve2d.rst
  98. 4 4
      classes/class_curve3d.rst
  99. 8 8
      classes/class_dictionary.rst
  100. 21 21
      classes/class_directionallight.rst

+ 50 - 30
classes/[email protected]

@@ -58,6 +58,8 @@ Methods
 +-----------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
 | :ref:`float<class_float>`                                 | :ref:`dectime<class_@GDScript_method_dectime>` **(** :ref:`float<class_float>` value, :ref:`float<class_float>` amount, :ref:`float<class_float>` step **)**                                                                           |
 +-----------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`bool<class_bool>`                                   | :ref:`deep_equal<class_@GDScript_method_deep_equal>` **(** :ref:`Variant<class_Variant>` a, :ref:`Variant<class_Variant>` b **)**                                                                                                      |
++-----------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
 | :ref:`float<class_float>`                                 | :ref:`deg2rad<class_@GDScript_method_deg2rad>` **(** :ref:`float<class_float>` deg **)**                                                                                                                                               |
 +-----------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
 | :ref:`Object<class_Object>`                               | :ref:`dict2inst<class_@GDScript_method_dict2inst>` **(** :ref:`Dictionary<class_Dictionary>` dict **)**                                                                                                                                |
@@ -224,11 +226,11 @@ Constants
 
 - **INF** = **inf** --- Positive floating-point infinity. This is the result of floating-point division when the divisor is ``0.0``. For negative infinity, use ``-INF``. Dividing by ``-0.0`` will result in negative infinity if the numerator is positive, so dividing by ``0.0`` is not the same as dividing by ``-0.0`` (despite ``0.0 == -0.0`` returning ``true``).
 
-**Note:** Numeric infinity is only a concept with floating-point numbers, and has no equivalent for integers. Dividing an integer number by ``0`` will not result in :ref:`INF<class_@GDScript_constant_INF>` and will result in a run-time error instead.
+\ **Note:** Numeric infinity is only a concept with floating-point numbers, and has no equivalent for integers. Dividing an integer number by ``0`` will not result in :ref:`INF<class_@GDScript_constant_INF>` and will result in a run-time error instead.
 
 - **NAN** = **nan** --- "Not a Number", an invalid floating-point value. :ref:`NAN<class_@GDScript_constant_NAN>` has special properties, including that it is not equal to itself (``NAN == NAN`` returns ``false``). It is output by some invalid operations, such as dividing floating-point ``0.0`` by ``0.0``.
 
-**Note:** "Not a Number" is only a concept with floating-point numbers, and has no equivalent for integers. Dividing an integer ``0`` by ``0`` will not result in :ref:`NAN<class_@GDScript_constant_NAN>` and will result in a run-time error instead.
+\ **Note:** "Not a Number" is only a concept with floating-point numbers, and has no equivalent for integers. Dividing an integer ``0`` by ``0`` will not result in :ref:`NAN<class_@GDScript_constant_NAN>` and will result in a run-time error instead.
 
 Method Descriptions
 -------------------
@@ -239,13 +241,13 @@ Method Descriptions
 
 Returns a color constructed from integer red, green, blue, and alpha channels. Each channel should have 8 bits of information ranging from 0 to 255.
 
-``r8`` red channel
+\ ``r8`` red channel
 
-``g8`` green channel
+\ ``g8`` green channel
 
-``b8`` blue channel
+\ ``b8`` blue channel
 
-``a8`` alpha channel
+\ ``a8`` alpha channel
 
 ::
 
@@ -311,7 +313,7 @@ Returns the arc sine of ``s`` in radians. Use to get the angle of sine ``s``. ``
 
 Asserts that the ``condition`` is ``true``. If the ``condition`` is ``false``, an error is generated. When running from the editor, the running project will also be paused until you resume it. This can be used as a stronger form of :ref:`push_error<class_@GDScript_method_push_error>` for reporting errors to project developers or add-on users.
 
-**Note:** For performance reasons, the code inside :ref:`assert<class_@GDScript_method_assert>` is only executed in debug builds or when running the project from the editor. Don't include code that has side effects in an :ref:`assert<class_@GDScript_method_assert>` call. Otherwise, the project will behave differently when exported in release mode.
+\ **Note:** For performance reasons, the code inside :ref:`assert<class_@GDScript_method_assert>` is only executed in debug builds or when running the project from the editor. Don't include code that has side effects in an :ref:`assert<class_@GDScript_method_assert>` call. Otherwise, the project will behave differently when exported in release mode.
 
 The optional ``message`` argument, if given, is shown in addition to the generic "Assertion failed" message. You can use this to provide additional details about why the assertion failed.
 
@@ -360,7 +362,7 @@ Important note: The Y coordinate comes first, by convention.
 
 Decodes a byte array back to a value. When ``allow_objects`` is ``true`` decoding objects is allowed.
 
-**WARNING:** Deserialized object can contain code which gets executed. Do not use this option if the serialized object comes from untrusted sources to avoid potential security threats (remote code execution).
+\ **WARNING:** Deserialized object can contain code which gets executed. Do not use this option if the serialized object comes from untrusted sources to avoid potential security threats (remote code execution).
 
 ----
 
@@ -489,6 +491,24 @@ Returns the result of ``value`` decreased by ``step`` \* ``amount``.
 
 ----
 
+.. _class_@GDScript_method_deep_equal:
+
+- :ref:`bool<class_bool>` **deep_equal** **(** :ref:`Variant<class_Variant>` a, :ref:`Variant<class_Variant>` b **)**
+
+Compares two values by checking their actual contents, recursing into any `Array` or `Dictionary` up to its deepest level.
+
+This compares to ``==`` in a number of ways:
+
+- For ``null``, ``int``, ``float``, ``String``, ``Object`` and ``RID`` both ``deep_equal`` and ``==`` work the same.
+
+- For ``Dictionary``, ``==`` considers equality if, and only if, both variables point to the very same ``Dictionary``, with no recursion or awareness of the contents at all.
+
+- For ``Array``, ``==`` considers equality if, and only if, each item in the first ``Array`` is equal to its counterpart in the second ``Array``, as told by ``==`` itself. That implies that ``==`` recurses into ``Array``, but not into ``Dictionary``.
+
+In short, whenever a ``Dictionary`` is potentially involved, if you want a true content-aware comparison, you have to use ``deep_equal``.
+
+----
+
 .. _class_@GDScript_method_deg2rad:
 
 - :ref:`float<class_float>` **deg2rad** **(** :ref:`float<class_float>` deg **)**
@@ -525,7 +545,7 @@ Returns an "eased" value of ``x`` based on an easing function defined with ``cur
     - 1.0: Linear
     - Greater than 1.0 (exclusive): Ease in
 
-`ease() curve values cheatsheet <https://raw.githubusercontent.com/godotengine/godot-docs/3.4/img/ease_cheatsheet.png>`__
+\ `ease() curve values cheatsheet <https://raw.githubusercontent.com/godotengine/godot-docs/3.4/img/ease_cheatsheet.png>`__\ 
 
 See also :ref:`smoothstep<class_@GDScript_method_smoothstep>`. If you need to perform more advanced transitions, use :ref:`Tween<class_Tween>` or :ref:`AnimationPlayer<class_AnimationPlayer>`.
 
@@ -537,7 +557,7 @@ See also :ref:`smoothstep<class_@GDScript_method_smoothstep>`. If you need to pe
 
 The natural exponential function. It raises the mathematical constant **e** to the power of ``s`` and returns it.
 
-**e** has an approximate value of 2.71828, and can be obtained with ``exp(1)``.
+\ **e** has an approximate value of 2.71828, and can be obtained with ``exp(1)``.
 
 For exponents to other bases use the method :ref:`pow<class_@GDScript_method_pow>`.
 
@@ -561,7 +581,7 @@ Rounds ``s`` downward (towards negative infinity), returning the largest whole n
 
 See also :ref:`ceil<class_@GDScript_method_ceil>`, :ref:`round<class_@GDScript_method_round>`, :ref:`stepify<class_@GDScript_method_stepify>`, and :ref:`int<class_int>`.
 
-**Note:** This method returns a float. If you need an integer and ``s`` is a non-negative number, you can use ``int(s)`` directly.
+\ **Note:** This method returns a float. If you need an integer and ``s`` is a non-negative number, you can use ``int(s)`` directly.
 
 ----
 
@@ -768,7 +788,7 @@ This method is faster than using :ref:`is_equal_approx<class_@GDScript_method_is
 
 Returns length of Variant ``var``. Length is the character count of String, element count of Array, size of Dictionary, etc.
 
-**Note:** Generates a fatal error if Variant can not provide a length.
+\ **Note:** Generates a fatal error if Variant can not provide a length.
 
 ::
 
@@ -837,14 +857,14 @@ Converts from linear energy to decibels (audio). This can be used to implement v
 
 Loads a resource from the filesystem located at ``path``. The resource is loaded on the method call (unless it's referenced already elsewhere, e.g. in another script or in the scene), which might cause slight delay, especially when loading scenes. To avoid unnecessary delays when loading something multiple times, either store the resource in a variable or use :ref:`preload<class_@GDScript_method_preload>`.
 
-**Note:** Resource paths can be obtained by right-clicking on a resource in the FileSystem dock and choosing "Copy Path" or by dragging the file from the FileSystem dock into the script.
+\ **Note:** Resource paths can be obtained by right-clicking on a resource in the FileSystem dock and choosing "Copy Path" or by dragging the file from the FileSystem dock into the script.
 
 ::
 
     # Load a scene called main located in the root of the project directory and cache it in a variable.
     var main = load("res://main.tscn") # main will contain a PackedScene resource.
 
-**Important:** The path must be absolute, a local path will just return ``null``.
+\ **Important:** The path must be absolute, a local path will just return ``null``.
 
 This method is a simplified version of :ref:`ResourceLoader.load<class_ResourceLoader_method_load>`, which can be used for more advanced scenarios.
 
@@ -856,13 +876,13 @@ This method is a simplified version of :ref:`ResourceLoader.load<class_ResourceL
 
 Natural logarithm. The amount of time needed to reach a certain level of continuous growth.
 
-**Note:** This is not the same as the "log" function on most calculators, which uses a base 10 logarithm.
+\ **Note:** This is not the same as the "log" function on most calculators, which uses a base 10 logarithm.
 
 ::
 
     log(10) # Returns 2.302585
 
-**Note:** The logarithm of ``0`` returns ``-inf``, while negative values return ``-nan``.
+\ **Note:** The logarithm of ``0`` returns ``-inf``, while negative values return ``-nan``.
 
 ----
 
@@ -925,7 +945,7 @@ In other words, returns the smallest value ``a`` where ``a = pow(2, n)`` such th
     nearest_po2(0) # Returns 0 (this may not be what you expect)
     nearest_po2(-1) # Returns 0 (this may not be what you expect)
 
-**WARNING:** Due to the way it is implemented, this function returns ``0`` rather than ``1`` for non-positive values of ``value`` (in reality, 1 is the smallest integer power of 2).
+\ **WARNING:** Due to the way it is implemented, this function returns ``0`` rather than ``1`` for non-positive values of ``value`` (in reality, 1 is the smallest integer power of 2).
 
 ----
 
@@ -951,9 +971,9 @@ This is the inverse of :ref:`char<class_@GDScript_method_char>`.
 
 Parse JSON text to a Variant. (Use :ref:`typeof<class_@GDScript_method_typeof>` to check if the Variant's type is what you expect.)
 
-**Note:** The JSON specification does not define integer or float types, but only a *number* type. Therefore, parsing a JSON text will convert all numerical values to :ref:`float<class_float>` types.
+\ **Note:** The JSON specification does not define integer or float types, but only a *number* type. Therefore, parsing a JSON text will convert all numerical values to :ref:`float<class_float>` types.
 
-**Note:** JSON objects do not preserve key order like Godot dictionaries, thus, you should not rely on keys being in a certain order if a dictionary is constructed from JSON. In contrast, JSON arrays retain the order of their elements:
+\ **Note:** JSON objects do not preserve key order like Godot dictionaries, thus, you should not rely on keys being in a certain order if a dictionary is constructed from JSON. In contrast, JSON arrays retain the order of their elements:
 
 ::
 
@@ -1018,7 +1038,7 @@ Returns the result of ``base`` raised to the power of ``exp``.
 
 Returns a :ref:`Resource<class_Resource>` from the filesystem located at ``path``. The resource is loaded during script parsing, i.e. is loaded with the script and :ref:`preload<class_@GDScript_method_preload>` effectively acts as a reference to that resource. Note that the method requires a constant path. If you want to load a resource from a dynamic/variable path, use :ref:`load<class_@GDScript_method_load>`.
 
-**Note:** Resource paths can be obtained by right clicking on a resource in the Assets Panel and choosing "Copy Path" or by dragging the file from the FileSystem dock into the script.
+\ **Note:** Resource paths can be obtained by right clicking on a resource in the Assets Panel and choosing "Copy Path" or by dragging the file from the FileSystem dock into the script.
 
 ::
 
@@ -1038,7 +1058,7 @@ Converts one or more arguments of any type to string in the best way possible an
     a = [1, 2, 3]
     print("a", "=", a) # Prints a=[1, 2, 3]
 
-**Note:** Consider using :ref:`push_error<class_@GDScript_method_push_error>` and :ref:`push_warning<class_@GDScript_method_push_warning>` to print error and warning messages instead of :ref:`print<class_@GDScript_method_print>`. This distinguishes them from print messages used for debugging purposes, while also displaying a stack trace when an error or warning is printed.
+\ **Note:** Consider using :ref:`push_error<class_@GDScript_method_push_error>` and :ref:`push_warning<class_@GDScript_method_push_warning>` to print error and warning messages instead of :ref:`print<class_@GDScript_method_print>`. This distinguishes them from print messages used for debugging purposes, while also displaying a stack trace when an error or warning is printed.
 
 ----
 
@@ -1088,7 +1108,7 @@ Prints one or more arguments to strings in the best way possible to console. No
     printraw("B")
     # Prints AB
 
-**Note:** Due to limitations with Godot's built-in console, this only prints to the terminal. If you need to print in the editor, use another method, such as :ref:`print<class_@GDScript_method_print>`.
+\ **Note:** Due to limitations with Godot's built-in console, this only prints to the terminal. If you need to print in the editor, use another method, such as :ref:`print<class_@GDScript_method_print>`.
 
 ----
 
@@ -1126,7 +1146,7 @@ Pushes an error message to Godot's built-in debugger and to the OS terminal.
 
     push_error("test error") # Prints "test error" to debugger and terminal as error call
 
-**Note:** Errors printed this way will not pause project execution. To print an error message and pause project execution in debug builds, use ``assert(false, "test error")`` instead.
+\ **Note:** Errors printed this way will not pause project execution. To print an error message and pause project execution in debug builds, use ``assert(false, "test error")`` instead.
 
 ----
 
@@ -1355,7 +1375,7 @@ This S-shaped curve is the cubic Hermite interpolator, given by ``f(y) = 3*y^2 -
 
 Compared to :ref:`ease<class_@GDScript_method_ease>` with a curve value of ``-1.6521``, :ref:`smoothstep<class_@GDScript_method_smoothstep>` returns the smoothest possible curve with no sudden changes in the derivative. If you need to perform more advanced transitions, use :ref:`Tween<class_Tween>` or :ref:`AnimationPlayer<class_AnimationPlayer>`.
 
-`Comparison between smoothstep() and ease(x, -1.6521) return values <https://raw.githubusercontent.com/godotengine/godot-docs/3.4/img/smoothstep_ease_comparison.png>`__
+\ `Comparison between smoothstep() and ease(x, -1.6521) return values <https://raw.githubusercontent.com/godotengine/godot-docs/3.4/img/smoothstep_ease_comparison.png>`__
 
 ----
 
@@ -1369,7 +1389,7 @@ Returns the square root of ``s``, where ``s`` is a non-negative number.
 
     sqrt(9) # Returns 3
 
-**Note:** Negative values of ``s`` return NaN. If you need negative inputs, use ``System.Numerics.Complex`` in C#.
+\ **Note:** Negative values of ``s`` return NaN. If you need negative inputs, use ``System.Numerics.Complex`` in C#.
 
 ----
 
@@ -1470,7 +1490,7 @@ Converts a :ref:`Variant<class_Variant>` ``var`` to JSON text and return the res
     print(b) # {"a":1, "b":2}
     # Both numbers above are floats, even if they display without any decimal places.
 
-**Note:** The JSON specification does not define integer or float types, but only a *number* type. Therefore, converting a :ref:`Variant<class_Variant>` to JSON text will convert all numerical values to :ref:`float<class_float>` types.
+\ **Note:** The JSON specification does not define integer or float types, but only a *number* type. Therefore, converting a :ref:`Variant<class_Variant>` to JSON text will convert all numerical values to :ref:`float<class_float>` types.
 
 See also :ref:`JSON<class_JSON>` for an alternative way to convert a :ref:`Variant<class_Variant>` to JSON text.
 
@@ -1585,9 +1605,9 @@ Usable for creating loop-alike behavior or infinite surfaces.
     # Infinite rotation (in radians)
     angle = wrapf(angle + 0.1, -PI, PI)
 
-**Note:** If ``min`` is ``0``, this is equivalent to :ref:`fposmod<class_@GDScript_method_fposmod>`, so prefer using that instead.
+\ **Note:** If ``min`` is ``0``, this is equivalent to :ref:`fposmod<class_@GDScript_method_fposmod>`, so prefer using that instead.
 
-``wrapf`` is more flexible than using the :ref:`fposmod<class_@GDScript_method_fposmod>` approach by giving the user control over the minimum value.
+\ ``wrapf`` is more flexible than using the :ref:`fposmod<class_@GDScript_method_fposmod>` approach by giving the user control over the minimum value.
 
 ----
 
@@ -1609,9 +1629,9 @@ Usable for creating loop-alike behavior or infinite surfaces.
     # result is -2
     var result = wrapi(-6, -5, -1)
 
-**Note:** If ``min`` is ``0``, this is equivalent to :ref:`posmod<class_@GDScript_method_posmod>`, so prefer using that instead.
+\ **Note:** If ``min`` is ``0``, this is equivalent to :ref:`posmod<class_@GDScript_method_posmod>`, so prefer using that instead.
 
-``wrapi`` is more flexible than using the :ref:`posmod<class_@GDScript_method_posmod>` approach by giving the user control over the minimum value.
+\ ``wrapi`` is more flexible than using the :ref:`posmod<class_@GDScript_method_posmod>` approach by giving the user control over the minimum value.
 
 ----
 

+ 141 - 61
classes/[email protected]

@@ -21,55 +21,61 @@ Singletons are also documented here, since they can be accessed from anywhere.
 Properties
 ----------
 
-+---------------------------------------------------------------------------+-------------------------------------------------------------------------------------+
-| :ref:`ARVRServer<class_ARVRServer>`                                       | :ref:`ARVRServer<class_@GlobalScope_property_ARVRServer>`                           |
-+---------------------------------------------------------------------------+-------------------------------------------------------------------------------------+
-| :ref:`AudioServer<class_AudioServer>`                                     | :ref:`AudioServer<class_@GlobalScope_property_AudioServer>`                         |
-+---------------------------------------------------------------------------+-------------------------------------------------------------------------------------+
-| :ref:`CameraServer<class_CameraServer>`                                   | :ref:`CameraServer<class_@GlobalScope_property_CameraServer>`                       |
-+---------------------------------------------------------------------------+-------------------------------------------------------------------------------------+
-| :ref:`ClassDB<class_ClassDB>`                                             | :ref:`ClassDB<class_@GlobalScope_property_ClassDB>`                                 |
-+---------------------------------------------------------------------------+-------------------------------------------------------------------------------------+
-| :ref:`Engine<class_Engine>`                                               | :ref:`Engine<class_@GlobalScope_property_Engine>`                                   |
-+---------------------------------------------------------------------------+-------------------------------------------------------------------------------------+
-| :ref:`Geometry<class_Geometry>`                                           | :ref:`Geometry<class_@GlobalScope_property_Geometry>`                               |
-+---------------------------------------------------------------------------+-------------------------------------------------------------------------------------+
-| :ref:`IP<class_IP>`                                                       | :ref:`IP<class_@GlobalScope_property_IP>`                                           |
-+---------------------------------------------------------------------------+-------------------------------------------------------------------------------------+
-| :ref:`Input<class_Input>`                                                 | :ref:`Input<class_@GlobalScope_property_Input>`                                     |
-+---------------------------------------------------------------------------+-------------------------------------------------------------------------------------+
-| :ref:`InputMap<class_InputMap>`                                           | :ref:`InputMap<class_@GlobalScope_property_InputMap>`                               |
-+---------------------------------------------------------------------------+-------------------------------------------------------------------------------------+
-| :ref:`JSON<class_JSON>`                                                   | :ref:`JSON<class_@GlobalScope_property_JSON>`                                       |
-+---------------------------------------------------------------------------+-------------------------------------------------------------------------------------+
-| :ref:`JavaClassWrapper<class_JavaClassWrapper>`                           | :ref:`JavaClassWrapper<class_@GlobalScope_property_JavaClassWrapper>`               |
-+---------------------------------------------------------------------------+-------------------------------------------------------------------------------------+
-| :ref:`JavaScript<class_JavaScript>`                                       | :ref:`JavaScript<class_@GlobalScope_property_JavaScript>`                           |
-+---------------------------------------------------------------------------+-------------------------------------------------------------------------------------+
-| :ref:`Marshalls<class_Marshalls>`                                         | :ref:`Marshalls<class_@GlobalScope_property_Marshalls>`                             |
-+---------------------------------------------------------------------------+-------------------------------------------------------------------------------------+
-| :ref:`EditorNavigationMeshGenerator<class_EditorNavigationMeshGenerator>` | :ref:`NavigationMeshGenerator<class_@GlobalScope_property_NavigationMeshGenerator>` |
-+---------------------------------------------------------------------------+-------------------------------------------------------------------------------------+
-| :ref:`OS<class_OS>`                                                       | :ref:`OS<class_@GlobalScope_property_OS>`                                           |
-+---------------------------------------------------------------------------+-------------------------------------------------------------------------------------+
-| :ref:`Performance<class_Performance>`                                     | :ref:`Performance<class_@GlobalScope_property_Performance>`                         |
-+---------------------------------------------------------------------------+-------------------------------------------------------------------------------------+
-| :ref:`Physics2DServer<class_Physics2DServer>`                             | :ref:`Physics2DServer<class_@GlobalScope_property_Physics2DServer>`                 |
-+---------------------------------------------------------------------------+-------------------------------------------------------------------------------------+
-| :ref:`PhysicsServer<class_PhysicsServer>`                                 | :ref:`PhysicsServer<class_@GlobalScope_property_PhysicsServer>`                     |
-+---------------------------------------------------------------------------+-------------------------------------------------------------------------------------+
-| :ref:`ProjectSettings<class_ProjectSettings>`                             | :ref:`ProjectSettings<class_@GlobalScope_property_ProjectSettings>`                 |
-+---------------------------------------------------------------------------+-------------------------------------------------------------------------------------+
-| :ref:`ResourceLoader<class_ResourceLoader>`                               | :ref:`ResourceLoader<class_@GlobalScope_property_ResourceLoader>`                   |
-+---------------------------------------------------------------------------+-------------------------------------------------------------------------------------+
-| :ref:`ResourceSaver<class_ResourceSaver>`                                 | :ref:`ResourceSaver<class_@GlobalScope_property_ResourceSaver>`                     |
-+---------------------------------------------------------------------------+-------------------------------------------------------------------------------------+
-| :ref:`TranslationServer<class_TranslationServer>`                         | :ref:`TranslationServer<class_@GlobalScope_property_TranslationServer>`             |
-+---------------------------------------------------------------------------+-------------------------------------------------------------------------------------+
-| :ref:`VisualScriptEditor<class_VisualScriptEditor>`                       | :ref:`VisualScriptEditor<class_@GlobalScope_property_VisualScriptEditor>`           |
-+---------------------------------------------------------------------------+-------------------------------------------------------------------------------------+
-| :ref:`VisualServer<class_VisualServer>`                                   | :ref:`VisualServer<class_@GlobalScope_property_VisualServer>`                       |
-+---------------------------------------------------------------------------+-------------------------------------------------------------------------------------+
++---------------------------------------------------------------+-------------------------------------------------------------------------------------+
+| :ref:`ARVRServer<class_ARVRServer>`                           | :ref:`ARVRServer<class_@GlobalScope_property_ARVRServer>`                           |
++---------------------------------------------------------------+-------------------------------------------------------------------------------------+
+| :ref:`AudioServer<class_AudioServer>`                         | :ref:`AudioServer<class_@GlobalScope_property_AudioServer>`                         |
++---------------------------------------------------------------+-------------------------------------------------------------------------------------+
+| :ref:`CameraServer<class_CameraServer>`                       | :ref:`CameraServer<class_@GlobalScope_property_CameraServer>`                       |
++---------------------------------------------------------------+-------------------------------------------------------------------------------------+
+| :ref:`ClassDB<class_ClassDB>`                                 | :ref:`ClassDB<class_@GlobalScope_property_ClassDB>`                                 |
++---------------------------------------------------------------+-------------------------------------------------------------------------------------+
+| :ref:`Engine<class_Engine>`                                   | :ref:`Engine<class_@GlobalScope_property_Engine>`                                   |
++---------------------------------------------------------------+-------------------------------------------------------------------------------------+
+| :ref:`Geometry<class_Geometry>`                               | :ref:`Geometry<class_@GlobalScope_property_Geometry>`                               |
++---------------------------------------------------------------+-------------------------------------------------------------------------------------+
+| :ref:`IP<class_IP>`                                           | :ref:`IP<class_@GlobalScope_property_IP>`                                           |
++---------------------------------------------------------------+-------------------------------------------------------------------------------------+
+| :ref:`Input<class_Input>`                                     | :ref:`Input<class_@GlobalScope_property_Input>`                                     |
++---------------------------------------------------------------+-------------------------------------------------------------------------------------+
+| :ref:`InputMap<class_InputMap>`                               | :ref:`InputMap<class_@GlobalScope_property_InputMap>`                               |
++---------------------------------------------------------------+-------------------------------------------------------------------------------------+
+| :ref:`JSON<class_JSON>`                                       | :ref:`JSON<class_@GlobalScope_property_JSON>`                                       |
++---------------------------------------------------------------+-------------------------------------------------------------------------------------+
+| :ref:`JavaClassWrapper<class_JavaClassWrapper>`               | :ref:`JavaClassWrapper<class_@GlobalScope_property_JavaClassWrapper>`               |
++---------------------------------------------------------------+-------------------------------------------------------------------------------------+
+| :ref:`JavaScript<class_JavaScript>`                           | :ref:`JavaScript<class_@GlobalScope_property_JavaScript>`                           |
++---------------------------------------------------------------+-------------------------------------------------------------------------------------+
+| :ref:`Marshalls<class_Marshalls>`                             | :ref:`Marshalls<class_@GlobalScope_property_Marshalls>`                             |
++---------------------------------------------------------------+-------------------------------------------------------------------------------------+
+| :ref:`Navigation2DServer<class_Navigation2DServer>`           | :ref:`Navigation2DServer<class_@GlobalScope_property_Navigation2DServer>`           |
++---------------------------------------------------------------+-------------------------------------------------------------------------------------+
+| :ref:`NavigationMeshGenerator<class_NavigationMeshGenerator>` | :ref:`NavigationMeshGenerator<class_@GlobalScope_property_NavigationMeshGenerator>` |
++---------------------------------------------------------------+-------------------------------------------------------------------------------------+
+| :ref:`NavigationServer<class_NavigationServer>`               | :ref:`NavigationServer<class_@GlobalScope_property_NavigationServer>`               |
++---------------------------------------------------------------+-------------------------------------------------------------------------------------+
+| :ref:`OS<class_OS>`                                           | :ref:`OS<class_@GlobalScope_property_OS>`                                           |
++---------------------------------------------------------------+-------------------------------------------------------------------------------------+
+| :ref:`Performance<class_Performance>`                         | :ref:`Performance<class_@GlobalScope_property_Performance>`                         |
++---------------------------------------------------------------+-------------------------------------------------------------------------------------+
+| :ref:`Physics2DServer<class_Physics2DServer>`                 | :ref:`Physics2DServer<class_@GlobalScope_property_Physics2DServer>`                 |
++---------------------------------------------------------------+-------------------------------------------------------------------------------------+
+| :ref:`PhysicsServer<class_PhysicsServer>`                     | :ref:`PhysicsServer<class_@GlobalScope_property_PhysicsServer>`                     |
++---------------------------------------------------------------+-------------------------------------------------------------------------------------+
+| :ref:`ProjectSettings<class_ProjectSettings>`                 | :ref:`ProjectSettings<class_@GlobalScope_property_ProjectSettings>`                 |
++---------------------------------------------------------------+-------------------------------------------------------------------------------------+
+| :ref:`ResourceLoader<class_ResourceLoader>`                   | :ref:`ResourceLoader<class_@GlobalScope_property_ResourceLoader>`                   |
++---------------------------------------------------------------+-------------------------------------------------------------------------------------+
+| :ref:`ResourceSaver<class_ResourceSaver>`                     | :ref:`ResourceSaver<class_@GlobalScope_property_ResourceSaver>`                     |
++---------------------------------------------------------------+-------------------------------------------------------------------------------------+
+| :ref:`Time<class_Time>`                                       | :ref:`Time<class_@GlobalScope_property_Time>`                                       |
++---------------------------------------------------------------+-------------------------------------------------------------------------------------+
+| :ref:`TranslationServer<class_TranslationServer>`             | :ref:`TranslationServer<class_@GlobalScope_property_TranslationServer>`             |
++---------------------------------------------------------------+-------------------------------------------------------------------------------------+
+| :ref:`VisualScriptEditor<class_VisualScriptEditor>`           | :ref:`VisualScriptEditor<class_@GlobalScope_property_VisualScriptEditor>`           |
++---------------------------------------------------------------+-------------------------------------------------------------------------------------+
+| :ref:`VisualServer<class_VisualServer>`                       | :ref:`VisualServer<class_@GlobalScope_property_VisualServer>`                       |
++---------------------------------------------------------------+-------------------------------------------------------------------------------------+
 
 Enumerations
 ------------
@@ -1610,21 +1616,65 @@ enum **JoystickList**:
 
 .. _class_@GlobalScope_constant_MIDI_MESSAGE_PITCH_BEND:
 
+.. _class_@GlobalScope_constant_MIDI_MESSAGE_SYSTEM_EXCLUSIVE:
+
+.. _class_@GlobalScope_constant_MIDI_MESSAGE_QUARTER_FRAME:
+
+.. _class_@GlobalScope_constant_MIDI_MESSAGE_SONG_POSITION_POINTER:
+
+.. _class_@GlobalScope_constant_MIDI_MESSAGE_SONG_SELECT:
+
+.. _class_@GlobalScope_constant_MIDI_MESSAGE_TUNE_REQUEST:
+
+.. _class_@GlobalScope_constant_MIDI_MESSAGE_TIMING_CLOCK:
+
+.. _class_@GlobalScope_constant_MIDI_MESSAGE_START:
+
+.. _class_@GlobalScope_constant_MIDI_MESSAGE_CONTINUE:
+
+.. _class_@GlobalScope_constant_MIDI_MESSAGE_STOP:
+
+.. _class_@GlobalScope_constant_MIDI_MESSAGE_ACTIVE_SENSING:
+
+.. _class_@GlobalScope_constant_MIDI_MESSAGE_SYSTEM_RESET:
+
 enum **MidiMessageList**:
 
-- **MIDI_MESSAGE_NOTE_OFF** = **8** --- MIDI note OFF message.
+- **MIDI_MESSAGE_NOTE_OFF** = **8** --- MIDI note OFF message. See the documentation of :ref:`InputEventMIDI<class_InputEventMIDI>` for information of how to use MIDI inputs.
+
+- **MIDI_MESSAGE_NOTE_ON** = **9** --- MIDI note ON message. See the documentation of :ref:`InputEventMIDI<class_InputEventMIDI>` for information of how to use MIDI inputs.
+
+- **MIDI_MESSAGE_AFTERTOUCH** = **10** --- MIDI aftertouch message. This message is most often sent by pressing down on the key after it "bottoms out".
+
+- **MIDI_MESSAGE_CONTROL_CHANGE** = **11** --- MIDI control change message. This message is sent when a controller value changes. Controllers include devices such as pedals and levers.
+
+- **MIDI_MESSAGE_PROGRAM_CHANGE** = **12** --- MIDI program change message. This message sent when the program patch number changes.
+
+- **MIDI_MESSAGE_CHANNEL_PRESSURE** = **13** --- MIDI channel pressure message. This message is most often sent by pressing down on the key after it "bottoms out". This message is different from polyphonic after-touch as it indicates the highest pressure across all keys.
+
+- **MIDI_MESSAGE_PITCH_BEND** = **14** --- MIDI pitch bend message. This message is sent to indicate a change in the pitch bender (wheel or lever, typically).
+
+- **MIDI_MESSAGE_SYSTEM_EXCLUSIVE** = **240** --- MIDI system exclusive message. This has behavior exclusive to the device you're receiving input from. Getting this data is not implemented in Godot.
+
+- **MIDI_MESSAGE_QUARTER_FRAME** = **241** --- MIDI quarter frame message. Contains timing information that is used to synchronize MIDI devices. Getting this data is not implemented in Godot.
+
+- **MIDI_MESSAGE_SONG_POSITION_POINTER** = **242** --- MIDI song position pointer message. Gives the number of 16th notes since the start of the song. Getting this data is not implemented in Godot.
 
-- **MIDI_MESSAGE_NOTE_ON** = **9** --- MIDI note ON message.
+- **MIDI_MESSAGE_SONG_SELECT** = **243** --- MIDI song select message. Specifies which sequence or song is to be played. Getting this data is not implemented in Godot.
 
-- **MIDI_MESSAGE_AFTERTOUCH** = **10** --- MIDI aftertouch message.
+- **MIDI_MESSAGE_TUNE_REQUEST** = **246** --- MIDI tune request message. Upon receiving a tune request, all analog synthesizers should tune their oscillators.
 
-- **MIDI_MESSAGE_CONTROL_CHANGE** = **11** --- MIDI control change message.
+- **MIDI_MESSAGE_TIMING_CLOCK** = **248** --- MIDI timing clock message. Sent 24 times per quarter note when synchronization is required.
 
-- **MIDI_MESSAGE_PROGRAM_CHANGE** = **12** --- MIDI program change message.
+- **MIDI_MESSAGE_START** = **250** --- MIDI start message. Start the current sequence playing. This message will be followed with Timing Clocks.
 
-- **MIDI_MESSAGE_CHANNEL_PRESSURE** = **13** --- MIDI channel pressure message.
+- **MIDI_MESSAGE_CONTINUE** = **251** --- MIDI continue message. Continue at the point the sequence was stopped.
 
-- **MIDI_MESSAGE_PITCH_BEND** = **14** --- MIDI pitch bend message.
+- **MIDI_MESSAGE_STOP** = **252** --- MIDI stop message. Stop the current sequence.
+
+- **MIDI_MESSAGE_ACTIVE_SENSING** = **254** --- MIDI active sensing message. This message is intended to be sent repeatedly to tell the receiver that a connection is alive.
+
+- **MIDI_MESSAGE_SYSTEM_RESET** = **255** --- MIDI system reset message. Reset all receivers in the system to power-up status. It should not be sent on power-up itself.
 
 ----
 
@@ -1851,6 +1901,8 @@ Since :ref:`OK<class_@GlobalScope_constant_OK>` has value 0, and all other failu
 
 .. _class_@GlobalScope_constant_PROPERTY_HINT_ENUM:
 
+.. _class_@GlobalScope_constant_PROPERTY_HINT_ENUM_SUGGESTION:
+
 .. _class_@GlobalScope_constant_PROPERTY_HINT_EXP_EASING:
 
 .. _class_@GlobalScope_constant_PROPERTY_HINT_LENGTH:
@@ -1899,6 +1951,10 @@ enum **PropertyHint**:
 
 The hint string is a comma separated list of names such as ``"Hello,Something,Else"``. For integer and float properties, the first name in the list has value 0, the next 1, and so on. Explicit values can also be specified by appending ``:integer`` to the name, e.g. ``"Zero,One,Three:3,Four,Six:6"``.
 
+- **PROPERTY_HINT_ENUM_SUGGESTION** = **37** --- Hints that a string property can be an enumerated value to pick in a list specified via a hint string such as ``"Hello,Something,Else"``.
+
+Unlike :ref:`PROPERTY_HINT_ENUM<class_@GlobalScope_constant_PROPERTY_HINT_ENUM>` a property with this hint still accepts arbitrary values and can be empty. The list of values serves to suggest possible values.
+
 - **PROPERTY_HINT_EXP_EASING** = **4** --- Hints that a float property should be edited via an exponential easing function. The hint string can include ``"attenuation"`` to flip the curve horizontally and/or ``"inout"`` to also include in/out easing.
 
 - **PROPERTY_HINT_LENGTH** = **5** --- Deprecated hint, unused.
@@ -1985,7 +2041,7 @@ 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.
 
@@ -2363,7 +2419,7 @@ The :ref:`JSON<class_JSON>` singleton.
 
 The :ref:`JavaClassWrapper<class_JavaClassWrapper>` singleton.
 
-**Note:** Only implemented on Android.
+\ **Note:** Only implemented on Android.
 
 ----
 
@@ -2373,7 +2429,7 @@ The :ref:`JavaClassWrapper<class_JavaClassWrapper>` singleton.
 
 The :ref:`JavaScript<class_JavaScript>` singleton.
 
-**Note:** Only implemented on HTML5.
+\ **Note:** Only implemented on HTML5.
 
 ----
 
@@ -2385,11 +2441,27 @@ The :ref:`Marshalls<class_Marshalls>` singleton.
 
 ----
 
+.. _class_@GlobalScope_property_Navigation2DServer:
+
+- :ref:`Navigation2DServer<class_Navigation2DServer>` **Navigation2DServer**
+
+The :ref:`Navigation2DServer<class_Navigation2DServer>` singleton.
+
+----
+
 .. _class_@GlobalScope_property_NavigationMeshGenerator:
 
-- :ref:`EditorNavigationMeshGenerator<class_EditorNavigationMeshGenerator>` **NavigationMeshGenerator**
+- :ref:`NavigationMeshGenerator<class_NavigationMeshGenerator>` **NavigationMeshGenerator**
 
-The :ref:`EditorNavigationMeshGenerator<class_EditorNavigationMeshGenerator>` singleton.
+The :ref:`NavigationMeshGenerator<class_NavigationMeshGenerator>` singleton.
+
+----
+
+.. _class_@GlobalScope_property_NavigationServer:
+
+- :ref:`NavigationServer<class_NavigationServer>` **NavigationServer**
+
+The :ref:`NavigationServer<class_NavigationServer>` singleton.
 
 ----
 
@@ -2449,6 +2521,14 @@ The :ref:`ResourceSaver<class_ResourceSaver>` singleton.
 
 ----
 
+.. _class_@GlobalScope_property_Time:
+
+- :ref:`Time<class_Time>` **Time**
+
+The :ref:`Time<class_Time>` singleton.
+
+----
+
 .. _class_@GlobalScope_property_TranslationServer:
 
 - :ref:`TranslationServer<class_TranslationServer>` **TranslationServer**

+ 15 - 5
classes/class_aabb.rst

@@ -18,16 +18,16 @@ Description
 
 It uses floating-point coordinates. The 2D counterpart to ``AABB`` is :ref:`Rect2<class_Rect2>`.
 
-**Note:** Unlike :ref:`Rect2<class_Rect2>`, ``AABB`` does not have a variant that uses integer coordinates.
+\ **Note:** Unlike :ref:`Rect2<class_Rect2>`, ``AABB`` does not have a variant that uses integer coordinates.
 
 Tutorials
 ---------
 
-- :doc:`../tutorials/math/index`
+- :doc:`Math tutorial index <../tutorials/math/index>`
 
-- :doc:`../tutorials/math/vector_math`
+- :doc:`Vector math <../tutorials/math/vector_math>`
 
-- :doc:`../tutorials/math/vectors_advanced`
+- :doc:`Advanced vector math <../tutorials/math/vectors_advanced>`
 
 Properties
 ----------
@@ -54,6 +54,8 @@ Methods
 +-------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------+
 | :ref:`float<class_float>`     | :ref:`get_area<class_AABB_method_get_area>` **(** **)**                                                                                          |
 +-------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`Vector3<class_Vector3>` | :ref:`get_center<class_AABB_method_get_center>` **(** **)**                                                                                      |
++-------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------+
 | :ref:`Vector3<class_Vector3>` | :ref:`get_endpoint<class_AABB_method_get_endpoint>` **(** :ref:`int<class_int>` idx **)**                                                        |
 +-------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------+
 | :ref:`Vector3<class_Vector3>` | :ref:`get_longest_axis<class_AABB_method_get_longest_axis>` **(** **)**                                                                          |
@@ -163,7 +165,7 @@ Returns ``true`` if this ``AABB`` completely encloses another one.
 
 Returns a copy of this ``AABB`` expanded to include a given point.
 
-**Example:**
+\ **Example:**\ 
 
 ::
 
@@ -182,6 +184,14 @@ Returns the volume of the ``AABB``.
 
 ----
 
+.. _class_AABB_method_get_center:
+
+- :ref:`Vector3<class_Vector3>` **get_center** **(** **)**
+
+Returns the center of the ``AABB``, which is equal to :ref:`position<class_AABB_property_position>` + (:ref:`size<class_AABB_property_size>` / 2).
+
+----
+
 .. _class_AABB_method_get_endpoint:
 
 - :ref:`Vector3<class_Vector3>` **get_endpoint** **(** :ref:`int<class_int>` idx **)**

+ 12 - 12
classes/class_acceptdialog.rst

@@ -23,15 +23,15 @@ 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:`String<class_String>` | window_title                                                            | ``"Alert!"`` *(parent override)* |
-+-----------------------------+-------------------------------------------------------------------------+----------------------------------+
++-----------------------------+-------------------------------------------------------------------------+----------------------------------------------------------------------------------------+
+| :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:`String<class_String>` | window_title                                                            | ``"Alert!"`` (overrides :ref:`WindowDialog<class_WindowDialog_property_window_title>`) |
++-----------------------------+-------------------------------------------------------------------------+----------------------------------------------------------------------------------------+
 
 Methods
 -------
@@ -100,7 +100,7 @@ Sets autowrapping for the text in the dialog.
 
 If ``true``, the dialog is hidden when the OK button is pressed. You can set it to ``false`` if you want to do e.g. input validation when receiving the :ref:`confirmed<class_AcceptDialog_signal_confirmed>` signal, and handle hiding the dialog in your own logic.
 
-**Note:** Some nodes derived from this class can have a different default value, and potentially their own built-in logic overriding this setting. For example :ref:`FileDialog<class_FileDialog>` defaults to ``false``, and has its own input validation code that is called when you press OK, which eventually hides the dialog if the input is valid. As such, this property can't be used in :ref:`FileDialog<class_FileDialog>` to disable hiding the dialog when pressing OK.
+\ **Note:** Some nodes derived from this class can have a different default value, and potentially their own built-in logic overriding this setting. For example :ref:`FileDialog<class_FileDialog>` defaults to ``false``, and has its own input validation code that is called when you press OK, which eventually hides the dialog if the input is valid. As such, this property can't be used in :ref:`FileDialog<class_FileDialog>` to disable hiding the dialog when pressing OK.
 
 ----
 
@@ -149,7 +149,7 @@ You can use :ref:`remove_button<class_AcceptDialog_method_remove_button>` method
 
 Returns the label used for built-in text.
 
-**Warning:** This is a required internal node, removing and freeing it may cause a crash. If you wish to hide it or any of its children, use their :ref:`CanvasItem.visible<class_CanvasItem_property_visible>` property.
+\ **Warning:** This is a required internal node, removing and freeing it may cause a crash. If you wish to hide it or any of its children, use their :ref:`CanvasItem.visible<class_CanvasItem_property_visible>` property.
 
 ----
 
@@ -159,7 +159,7 @@ Returns the label used for built-in text.
 
 Returns the OK :ref:`Button<class_Button>` instance.
 
-**Warning:** This is a required internal node, removing and freeing it may cause a crash. If you wish to hide it or any of its children, use their :ref:`CanvasItem.visible<class_CanvasItem_property_visible>` property.
+\ **Warning:** This is a required internal node, removing and freeing it may cause a crash. If you wish to hide it or any of its children, use their :ref:`CanvasItem.visible<class_CanvasItem_property_visible>` property.
 
 ----
 

+ 2 - 2
classes/class_aescontext.rst

@@ -107,7 +107,7 @@ Close this AES context so it can be started again. See :ref:`start<class_AESCont
 
 Get the current IV state for this context (IV gets updated when calling :ref:`update<class_AESContext_method_update>`). You normally don't need this function.
 
-**Note:** This function only makes sense when the context is started with :ref:`MODE_CBC_ENCRYPT<class_AESContext_constant_MODE_CBC_ENCRYPT>` or :ref:`MODE_CBC_DECRYPT<class_AESContext_constant_MODE_CBC_DECRYPT>`.
+\ **Note:** This function only makes sense when the context is started with :ref:`MODE_CBC_ENCRYPT<class_AESContext_constant_MODE_CBC_ENCRYPT>` or :ref:`MODE_CBC_DECRYPT<class_AESContext_constant_MODE_CBC_DECRYPT>`.
 
 ----
 
@@ -125,7 +125,7 @@ Start the AES context in the given ``mode``. A ``key`` of either 16 or 32 bytes
 
 Run the desired operation for this AES context. Will return a :ref:`PoolByteArray<class_PoolByteArray>` containing the result of encrypting (or decrypting) the given ``src``. See :ref:`start<class_AESContext_method_start>` for mode of operation.
 
-**Note:** The size of ``src`` must be a multiple of 16. Apply some padding if needed.
+\ **Note:** The size of ``src`` must be a multiple of 16. Apply some padding if needed.
 
 .. |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.)`

+ 14 - 20
classes/class_animatedsprite.rst

@@ -18,12 +18,12 @@ Description
 
 Animations are created using a :ref:`SpriteFrames<class_SpriteFrames>` resource, which can be configured in the editor via the SpriteFrames panel.
 
-**Note:** You can associate a set of normal maps by creating additional :ref:`SpriteFrames<class_SpriteFrames>` resources with a ``_normal`` suffix. For example, having 2 :ref:`SpriteFrames<class_SpriteFrames>` resources ``run`` and ``run_normal`` will make it so the ``run`` animation uses the normal map.
+\ **Note:** You can associate a set of normal maps by creating additional :ref:`SpriteFrames<class_SpriteFrames>` resources with a ``_normal`` suffix. For example, having 2 :ref:`SpriteFrames<class_SpriteFrames>` resources ``run`` and ``run_normal`` will make it so the ``run`` animation uses the normal map.
 
 Tutorials
 ---------
 
-- :doc:`../tutorials/2d/2d_sprite_animation`
+- :doc:`2D Sprite animation <../tutorials/2d/2d_sprite_animation>`
 
 - `2D Dodge The Creeps Demo <https://godotengine.org/asset-library/asset/515>`__
 
@@ -53,13 +53,11 @@ Properties
 Methods
 -------
 
-+-------------------------+----------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`bool<class_bool>` | :ref:`is_playing<class_AnimatedSprite_method_is_playing>` **(** **)** |const|                                                          |
-+-------------------------+----------------------------------------------------------------------------------------------------------------------------------------+
-| void                    | :ref:`play<class_AnimatedSprite_method_play>` **(** :ref:`String<class_String>` anim="", :ref:`bool<class_bool>` backwards=false **)** |
-+-------------------------+----------------------------------------------------------------------------------------------------------------------------------------+
-| void                    | :ref:`stop<class_AnimatedSprite_method_stop>` **(** **)**                                                                              |
-+-------------------------+----------------------------------------------------------------------------------------------------------------------------------------+
++------+----------------------------------------------------------------------------------------------------------------------------------------+
+| void | :ref:`play<class_AnimatedSprite_method_play>` **(** :ref:`String<class_String>` anim="", :ref:`bool<class_bool>` backwards=false **)** |
++------+----------------------------------------------------------------------------------------------------------------------------------------+
+| void | :ref:`stop<class_AnimatedSprite_method_stop>` **(** **)**                                                                              |
++------+----------------------------------------------------------------------------------------------------------------------------------------+
 
 Signals
 -------
@@ -195,9 +193,13 @@ The texture's drawing offset.
 
 - :ref:`bool<class_bool>` **playing**
 
-+-----------+-----------+
-| *Default* | ``false`` |
-+-----------+-----------+
++-----------+--------------------+
+| *Default* | ``false``          |
++-----------+--------------------+
+| *Setter*  | set_playing(value) |
++-----------+--------------------+
+| *Getter*  | is_playing()       |
++-----------+--------------------+
 
 If ``true``, the :ref:`animation<class_AnimatedSprite_property_animation>` is currently playing.
 
@@ -220,14 +222,6 @@ The animation speed is multiplied by this value.
 Method Descriptions
 -------------------
 
-.. _class_AnimatedSprite_method_is_playing:
-
-- :ref:`bool<class_bool>` **is_playing** **(** **)** |const|
-
-Returns ``true`` if an animation is currently being played.
-
-----
-
 .. _class_AnimatedSprite_method_play:
 
 - void **play** **(** :ref:`String<class_String>` anim="", :ref:`bool<class_bool>` backwards=false **)**

+ 1 - 1
classes/class_animatedsprite3d.rst

@@ -21,7 +21,7 @@ Animations are created using a :ref:`SpriteFrames<class_SpriteFrames>` resource,
 Tutorials
 ---------
 
-- :doc:`../tutorials/2d/2d_sprite_animation`
+- :doc:`2D Sprite animation (also applies to 3D) <../tutorials/2d/2d_sprite_animation>`
 
 Properties
 ----------

+ 15 - 15
classes/class_animatedtexture.rst

@@ -20,26 +20,26 @@ Description
 
 The playback of the animation is controlled by the :ref:`fps<class_AnimatedTexture_property_fps>` property as well as each frame's optional delay (see :ref:`set_frame_delay<class_AnimatedTexture_method_set_frame_delay>`). The animation loops, i.e. it will restart at frame 0 automatically after playing the last frame.
 
-``AnimatedTexture`` currently requires all frame textures to have the same size, otherwise the bigger ones will be cropped to match the smallest one.
+\ ``AnimatedTexture`` currently requires all frame textures to have the same size, otherwise the bigger ones will be cropped to match the smallest one.
 
-**Note:** AnimatedTexture doesn't support using :ref:`AtlasTexture<class_AtlasTexture>`\ s. Each frame needs to be a separate :ref:`Texture<class_Texture>`.
+\ **Note:** AnimatedTexture doesn't support using :ref:`AtlasTexture<class_AtlasTexture>`\ s. Each frame needs to be a separate :ref:`Texture<class_Texture>`.
 
 Properties
 ----------
 
-+---------------------------+--------------------------------------------------------------------+---------------------------+
-| :ref:`int<class_int>`     | :ref:`current_frame<class_AnimatedTexture_property_current_frame>` |                           |
-+---------------------------+--------------------------------------------------------------------+---------------------------+
-| :ref:`int<class_int>`     | flags                                                              | ``0`` *(parent override)* |
-+---------------------------+--------------------------------------------------------------------+---------------------------+
-| :ref:`float<class_float>` | :ref:`fps<class_AnimatedTexture_property_fps>`                     | ``4.0``                   |
-+---------------------------+--------------------------------------------------------------------+---------------------------+
-| :ref:`int<class_int>`     | :ref:`frames<class_AnimatedTexture_property_frames>`               | ``1``                     |
-+---------------------------+--------------------------------------------------------------------+---------------------------+
-| :ref:`bool<class_bool>`   | :ref:`oneshot<class_AnimatedTexture_property_oneshot>`             | ``false``                 |
-+---------------------------+--------------------------------------------------------------------+---------------------------+
-| :ref:`bool<class_bool>`   | :ref:`pause<class_AnimatedTexture_property_pause>`                 | ``false``                 |
-+---------------------------+--------------------------------------------------------------------+---------------------------+
++---------------------------+--------------------------------------------------------------------+----------------------------------------------------------------+
+| :ref:`int<class_int>`     | :ref:`current_frame<class_AnimatedTexture_property_current_frame>` |                                                                |
++---------------------------+--------------------------------------------------------------------+----------------------------------------------------------------+
+| :ref:`int<class_int>`     | flags                                                              | ``0`` (overrides :ref:`Texture<class_Texture_property_flags>`) |
++---------------------------+--------------------------------------------------------------------+----------------------------------------------------------------+
+| :ref:`float<class_float>` | :ref:`fps<class_AnimatedTexture_property_fps>`                     | ``4.0``                                                        |
++---------------------------+--------------------------------------------------------------------+----------------------------------------------------------------+
+| :ref:`int<class_int>`     | :ref:`frames<class_AnimatedTexture_property_frames>`               | ``1``                                                          |
++---------------------------+--------------------------------------------------------------------+----------------------------------------------------------------+
+| :ref:`bool<class_bool>`   | :ref:`oneshot<class_AnimatedTexture_property_oneshot>`             | ``false``                                                      |
++---------------------------+--------------------------------------------------------------------+----------------------------------------------------------------+
+| :ref:`bool<class_bool>`   | :ref:`pause<class_AnimatedTexture_property_pause>`                 | ``false``                                                      |
++---------------------------+--------------------------------------------------------------------+----------------------------------------------------------------+
 
 Methods
 -------

+ 3 - 3
classes/class_animation.rst

@@ -266,7 +266,7 @@ Property Descriptions
 
 The total length of the animation (in seconds).
 
-**Note:** Length is not delimited by the last key, as this one may be before or after the end to ensure correct interpolation and looping.
+\ **Note:** Length is not delimited by the last key, as this one may be before or after the end to ensure correct interpolation and looping.
 
 ----
 
@@ -369,7 +369,7 @@ Returns the audio stream of the key identified by ``key_idx``. The ``track_idx``
 
 Inserts an Audio Track key at the given ``time`` in seconds. The ``track_idx`` must be the index of an Audio Track.
 
-``stream`` is the :ref:`AudioStream<class_AudioStream>` resource to play. ``start_offset`` is the number of seconds cut off at the beginning of the audio stream, while ``end_offset`` is at the ending.
+\ ``stream`` is the :ref:`AudioStream<class_AudioStream>` resource to play. ``start_offset`` is the number of seconds cut off at the beginning of the audio stream, while ``end_offset`` is at the ending.
 
 ----
 
@@ -427,7 +427,7 @@ Returns the value of the key identified by ``key_idx``. The ``track_idx`` must b
 
 Inserts a Bezier Track key at the given ``time`` in seconds. The ``track_idx`` must be the index of a Bezier Track.
 
-``in_handle`` is the left-side weight of the added Bezier curve point, ``out_handle`` is the right-side one, while ``value`` is the actual value at this point.
+\ ``in_handle`` is the left-side weight of the added Bezier curve point, ``out_handle`` is the right-side one, while ``value`` is the actual value at this point.
 
 ----
 

+ 1 - 1
classes/class_animationnodeadd3.rst

@@ -29,7 +29,7 @@ This node has three inputs:
 Tutorials
 ---------
 
-- :doc:`../tutorials/animation/animation_tree`
+- :doc:`AnimationTree <../tutorials/animation/animation_tree>`
 
 - `Third Person Shooter Demo <https://godotengine.org/asset-library/asset/678>`__
 

+ 1 - 1
classes/class_animationnodeanimation.rst

@@ -21,7 +21,7 @@ A resource to add to an :ref:`AnimationNodeBlendTree<class_AnimationNodeBlendTre
 Tutorials
 ---------
 
-- :doc:`../tutorials/animation/animation_tree`
+- :doc:`AnimationTree <../tutorials/animation/animation_tree>`
 
 - `3D Platformer Demo <https://godotengine.org/asset-library/asset/125>`__
 

+ 1 - 1
classes/class_animationnodeblend2.rst

@@ -21,7 +21,7 @@ A resource to add to an :ref:`AnimationNodeBlendTree<class_AnimationNodeBlendTre
 Tutorials
 ---------
 
-- :doc:`../tutorials/animation/animation_tree`
+- :doc:`AnimationTree <../tutorials/animation/animation_tree>`
 
 - `3D Platformer Demo <https://godotengine.org/asset-library/asset/125>`__
 

+ 1 - 1
classes/class_animationnodeblendspace2d.rst

@@ -25,7 +25,7 @@ You can add vertices to the blend space with :ref:`add_blend_point<class_Animati
 Tutorials
 ---------
 
-- :doc:`../tutorials/animation/animation_tree`
+- :doc:`AnimationTree <../tutorials/animation/animation_tree>`
 
 - `Third Person Shooter Demo <https://godotengine.org/asset-library/asset/678>`__
 

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

+ 1 - 1
classes/class_animationnodeoneshot.rst

@@ -21,7 +21,7 @@ A resource to add to an :ref:`AnimationNodeBlendTree<class_AnimationNodeBlendTre
 Tutorials
 ---------
 
-- :doc:`../tutorials/animation/animation_tree`
+- :doc:`AnimationTree <../tutorials/animation/animation_tree>`
 
 - `Third Person Shooter Demo <https://godotengine.org/asset-library/asset/678>`__
 

+ 1 - 1
classes/class_animationnodeoutput.rst

@@ -16,7 +16,7 @@ Generic output node to be added to :ref:`AnimationNodeBlendTree<class_AnimationN
 Tutorials
 ---------
 
-- :doc:`../tutorials/animation/animation_tree`
+- :doc:`AnimationTree <../tutorials/animation/animation_tree>`
 
 - `3D Platformer Demo <https://godotengine.org/asset-library/asset/125>`__
 

+ 1 - 1
classes/class_animationnodestatemachine.rst

@@ -18,7 +18,7 @@ Description
 
 Contains multiple nodes representing animation states, connected in a graph. Node transitions can be configured to happen automatically or via code, using a shortest-path algorithm. Retrieve the :ref:`AnimationNodeStateMachinePlayback<class_AnimationNodeStateMachinePlayback>` object from the :ref:`AnimationTree<class_AnimationTree>` node to control it programmatically.
 
-**Example:**
+\ **Example:**\ 
 
 ::
 

+ 4 - 4
classes/class_animationnodestatemachineplayback.rst

@@ -18,7 +18,7 @@ Description
 
 Allows control of :ref:`AnimationTree<class_AnimationTree>` state machines created with :ref:`AnimationNodeStateMachine<class_AnimationNodeStateMachine>`. Retrieve with ``$AnimationTree.get("parameters/playback")``.
 
-**Example:**
+\ **Example:**\ 
 
 ::
 
@@ -33,9 +33,9 @@ Tutorials
 Properties
 ----------
 
-+-------------------------+-------------------------+------------------------------+
-| :ref:`bool<class_bool>` | resource_local_to_scene | ``true`` *(parent override)* |
-+-------------------------+-------------------------+------------------------------+
++-------------------------+-------------------------+---------------------------------------------------------------------------------------+
+| :ref:`bool<class_bool>` | resource_local_to_scene | ``true`` (overrides :ref:`Resource<class_Resource_property_resource_local_to_scene>`) |
++-------------------------+-------------------------+---------------------------------------------------------------------------------------+
 
 Methods
 -------

+ 1 - 1
classes/class_animationnodestatemachinetransition.rst

@@ -78,7 +78,7 @@ Property Descriptions
 | *Getter*  | get_advance_condition()      |
 +-----------+------------------------------+
 
-Turn on auto advance when this condition is set. The provided name will become a boolean parameter on the :ref:`AnimationTree<class_AnimationTree>` that can be controlled from code (see `https://docs.godotengine.org/en/3.4/tutorials/animation/animation_tree.html#controlling-from-code <https://docs.godotengine.org/en/3.4/tutorials/animation/animation_tree.html#controlling-from-code>`__). For example, if :ref:`AnimationTree.tree_root<class_AnimationTree_property_tree_root>` is an :ref:`AnimationNodeStateMachine<class_AnimationNodeStateMachine>` and :ref:`advance_condition<class_AnimationNodeStateMachineTransition_property_advance_condition>` is set to ``"idle"``:
+Turn on auto advance when this condition is set. The provided name will become a boolean parameter on the :ref:`AnimationTree<class_AnimationTree>` that can be controlled from code (see `#controlling-from-code <../tutorials/animation/animation_tree.html#controlling-from-code>`__ in :doc:`../tutorials/animation/animation_tree`). For example, if :ref:`AnimationTree.tree_root<class_AnimationTree_property_tree_root>` is an :ref:`AnimationNodeStateMachine<class_AnimationNodeStateMachine>` and :ref:`advance_condition<class_AnimationNodeStateMachineTransition_property_advance_condition>` is set to ``"idle"``:
 
 ::
 

+ 1 - 1
classes/class_animationnodetimescale.rst

@@ -21,7 +21,7 @@ Allows scaling the speed of the animation (or reversing it) in any children node
 Tutorials
 ---------
 
-- :doc:`../tutorials/animation/animation_tree`
+- :doc:`AnimationTree <../tutorials/animation/animation_tree>`
 
 - `3D Platformer Demo <https://godotengine.org/asset-library/asset/125>`__
 

+ 1 - 1
classes/class_animationnodetransition.rst

@@ -21,7 +21,7 @@ Simple state machine for cases which don't require a more advanced :ref:`Animati
 Tutorials
 ---------
 
-- :doc:`../tutorials/animation/animation_tree`
+- :doc:`AnimationTree <../tutorials/animation/animation_tree>`
 
 - `3D Platformer Demo <https://godotengine.org/asset-library/asset/125>`__
 

+ 7 - 7
classes/class_animationplayer.rst

@@ -18,16 +18,16 @@ Description
 
 An animation player is used for general-purpose playback of :ref:`Animation<class_Animation>` resources. It contains a dictionary of animations (referenced by name) and custom blend times between their transitions. Additionally, animations can be played and blended in different channels.
 
-``AnimationPlayer`` is more suited than :ref:`Tween<class_Tween>` for animations where you know the final values in advance. For example, fading a screen in and out is more easily done with an ``AnimationPlayer`` node thanks to the animation tools provided by the editor. That particular example can also be implemented with a :ref:`Tween<class_Tween>` node, but it requires doing everything by code.
+\ ``AnimationPlayer`` is more suited than :ref:`Tween<class_Tween>` for animations where you know the final values in advance. For example, fading a screen in and out is more easily done with an ``AnimationPlayer`` node thanks to the animation tools provided by the editor. That particular example can also be implemented with a :ref:`Tween<class_Tween>` node, but it requires doing everything by code.
 
 Updating the target properties of animations occurs at process time.
 
 Tutorials
 ---------
 
-- :doc:`../tutorials/animation/index`
+- :doc:`Animation tutorial index <../tutorials/animation/index>`
 
-- :doc:`../tutorials/2d/2d_sprite_animation`
+- :doc:`2D Sprite animation <../tutorials/2d/2d_sprite_animation>`
 
 - `Third Person Shooter Demo <https://godotengine.org/asset-library/asset/678>`__
 
@@ -118,7 +118,7 @@ Signals
 
 Emitted when a queued animation plays after the previous animation was finished. See :ref:`queue<class_AnimationPlayer_method_queue>`.
 
-**Note:** The signal is not emitted when the animation is changed via :ref:`play<class_AnimationPlayer_method_play>` or from :ref:`AnimationTree<class_AnimationTree>`.
+\ **Note:** The signal is not emitted when the animation is changed via :ref:`play<class_AnimationPlayer_method_play>` or from :ref:`AnimationTree<class_AnimationTree>`.
 
 ----
 
@@ -224,7 +224,7 @@ The name of the animation to play when the scene loads.
 
 The name of the currently playing animation. If no animation is playing, the property's value is an empty string. Changing this value does not restart the animation. See :ref:`play<class_AnimationPlayer_method_play>` for more information on playing animations.
 
-**Note:** While this property appears in the inspector, it's not meant to be edited, and it's not saved in the scene. This property is mainly used to get the currently playing animation, and internally for animation playback tracks. For more information, see :ref:`Animation<class_Animation>`.
+\ **Note:** While this property appears in the inspector, it's not meant to be edited, and it's not saved in the scene. This property is mainly used to get the currently playing animation, and internally for animation playback tracks. For more information, see :ref:`Animation<class_Animation>`.
 
 ----
 
@@ -485,7 +485,7 @@ Plays the animation with key ``name``. Custom blend times and speed can be set.
 
 The ``AnimationPlayer`` keeps track of its current or last played animation with :ref:`assigned_animation<class_AnimationPlayer_property_assigned_animation>`. If this method is called with that same animation ``name``, or with no ``name`` parameter, the assigned animation will resume playing if it was paused, or restart if it was stopped (see :ref:`stop<class_AnimationPlayer_method_stop>` for both pause and stop). If the animation was already playing, it will keep playing.
 
-**Note:** The animation will be updated the next time the ``AnimationPlayer`` is processed. If other variables are updated at the same time this is called, they may be updated too early. To perform the update immediately, call ``advance(0)``.
+\ **Note:** The animation will be updated the next time the ``AnimationPlayer`` is processed. If other variables are updated at the same time this is called, they may be updated too early. To perform the update immediately, call ``advance(0)``.
 
 ----
 
@@ -505,7 +505,7 @@ This method is a shorthand for :ref:`play<class_AnimationPlayer_method_play>` wi
 
 Queues an animation for playback once the current one is done.
 
-**Note:** If a looped animation is currently playing, the queued animation will never play unless the looped animation is stopped somehow.
+\ **Note:** If a looped animation is currently playing, the queued animation will never play unless the looped animation is stopped somehow.
 
 ----
 

+ 2 - 2
classes/class_animationtree.rst

@@ -18,12 +18,12 @@ Description
 
 A node to be used for advanced animation transitions in an :ref:`AnimationPlayer<class_AnimationPlayer>`.
 
-**Note:** When linked with an :ref:`AnimationPlayer<class_AnimationPlayer>`, several properties and methods of the corresponding :ref:`AnimationPlayer<class_AnimationPlayer>` will not function as expected. Playback and transitions should be handled using only the ``AnimationTree`` and its constituent :ref:`AnimationNode<class_AnimationNode>`\ (s). The :ref:`AnimationPlayer<class_AnimationPlayer>` node should be used solely for adding, deleting, and editing animations.
+\ **Note:** When linked with an :ref:`AnimationPlayer<class_AnimationPlayer>`, several properties and methods of the corresponding :ref:`AnimationPlayer<class_AnimationPlayer>` will not function as expected. Playback and transitions should be handled using only the ``AnimationTree`` and its constituent :ref:`AnimationNode<class_AnimationNode>`\ (s). The :ref:`AnimationPlayer<class_AnimationPlayer>` node should be used solely for adding, deleting, and editing animations.
 
 Tutorials
 ---------
 
-- :doc:`../tutorials/animation/animation_tree`
+- :doc:`Using AnimationTree <../tutorials/animation/animation_tree>`
 
 - `Third Person Shooter Demo <https://godotengine.org/asset-library/asset/678>`__
 

+ 22 - 22
classes/class_area.rst

@@ -84,7 +84,7 @@ Signals
 
 Emitted when another Area enters this Area. Requires :ref:`monitoring<class_Area_property_monitoring>` to be set to ``true``.
 
-``area`` the other Area.
+\ ``area`` the other Area.
 
 ----
 
@@ -94,7 +94,7 @@ Emitted when another Area enters this Area. Requires :ref:`monitoring<class_Area
 
 Emitted when another Area exits this Area. Requires :ref:`monitoring<class_Area_property_monitoring>` to be set to ``true``.
 
-``area`` the other Area.
+\ ``area`` the other Area.
 
 ----
 
@@ -104,13 +104,13 @@ Emitted when another Area exits this Area. Requires :ref:`monitoring<class_Area_
 
 Emitted when one of another Area's :ref:`Shape<class_Shape>`\ s enters one of this Area's :ref:`Shape<class_Shape>`\ s. Requires :ref:`monitoring<class_Area_property_monitoring>` to be set to ``true``.
 
-``area_rid`` the :ref:`RID<class_RID>` of the other Area's :ref:`CollisionObject<class_CollisionObject>` used by the :ref:`PhysicsServer<class_PhysicsServer>`.
+\ ``area_rid`` the :ref:`RID<class_RID>` of the other Area's :ref:`CollisionObject<class_CollisionObject>` used by the :ref:`PhysicsServer<class_PhysicsServer>`.
 
-``area`` the other Area.
+\ ``area`` the other Area.
 
-``area_shape_index`` the index of the :ref:`Shape<class_Shape>` of the other Area used by the :ref:`PhysicsServer<class_PhysicsServer>`. Get the :ref:`CollisionShape<class_CollisionShape>` node with ``area.shape_owner_get_owner(area_shape_index)``.
+\ ``area_shape_index`` the index of the :ref:`Shape<class_Shape>` of the other Area used by the :ref:`PhysicsServer<class_PhysicsServer>`. Get the :ref:`CollisionShape<class_CollisionShape>` node with ``area.shape_owner_get_owner(area_shape_index)``.
 
-``local_shape_index`` the index of the :ref:`Shape<class_Shape>` of this Area used by the :ref:`PhysicsServer<class_PhysicsServer>`. Get the :ref:`CollisionShape<class_CollisionShape>` node with ``self.shape_owner_get_owner(local_shape_index)``.
+\ ``local_shape_index`` the index of the :ref:`Shape<class_Shape>` of this Area used by the :ref:`PhysicsServer<class_PhysicsServer>`. Get the :ref:`CollisionShape<class_CollisionShape>` node with ``self.shape_owner_get_owner(local_shape_index)``.
 
 ----
 
@@ -120,13 +120,13 @@ Emitted when one of another Area's :ref:`Shape<class_Shape>`\ s enters one of th
 
 Emitted when one of another Area's :ref:`Shape<class_Shape>`\ s enters one of this Area's :ref:`Shape<class_Shape>`\ s. Requires :ref:`monitoring<class_Area_property_monitoring>` to be set to ``true``.
 
-``area_rid`` the :ref:`RID<class_RID>` of the other Area's :ref:`CollisionObject<class_CollisionObject>` used by the :ref:`PhysicsServer<class_PhysicsServer>`.
+\ ``area_rid`` the :ref:`RID<class_RID>` of the other Area's :ref:`CollisionObject<class_CollisionObject>` used by the :ref:`PhysicsServer<class_PhysicsServer>`.
 
-``area`` the other Area.
+\ ``area`` the other Area.
 
-``area_shape_index`` the index of the :ref:`Shape<class_Shape>` of the other Area used by the :ref:`PhysicsServer<class_PhysicsServer>`. Get the :ref:`CollisionShape<class_CollisionShape>` node with ``area.shape_owner_get_owner(area_shape_index)``.
+\ ``area_shape_index`` the index of the :ref:`Shape<class_Shape>` of the other Area used by the :ref:`PhysicsServer<class_PhysicsServer>`. Get the :ref:`CollisionShape<class_CollisionShape>` node with ``area.shape_owner_get_owner(area_shape_index)``.
 
-``local_shape_index`` the index of the :ref:`Shape<class_Shape>` of this Area used by the :ref:`PhysicsServer<class_PhysicsServer>`. Get the :ref:`CollisionShape<class_CollisionShape>` node with ``self.shape_owner_get_owner(local_shape_index)``.
+\ ``local_shape_index`` the index of the :ref:`Shape<class_Shape>` of this Area used by the :ref:`PhysicsServer<class_PhysicsServer>`. Get the :ref:`CollisionShape<class_CollisionShape>` node with ``self.shape_owner_get_owner(local_shape_index)``.
 
 ----
 
@@ -136,7 +136,7 @@ Emitted when one of another Area's :ref:`Shape<class_Shape>`\ s enters one of th
 
 Emitted when a :ref:`PhysicsBody<class_PhysicsBody>` or :ref:`GridMap<class_GridMap>` enters this Area. Requires :ref:`monitoring<class_Area_property_monitoring>` to be set to ``true``. :ref:`GridMap<class_GridMap>`\ s are detected if the :ref:`MeshLibrary<class_MeshLibrary>` has Collision :ref:`Shape<class_Shape>`\ s.
 
-``body`` the :ref:`Node<class_Node>`, if it exists in the tree, of the other :ref:`PhysicsBody<class_PhysicsBody>` or :ref:`GridMap<class_GridMap>`.
+\ ``body`` the :ref:`Node<class_Node>`, if it exists in the tree, of the other :ref:`PhysicsBody<class_PhysicsBody>` or :ref:`GridMap<class_GridMap>`.
 
 ----
 
@@ -146,7 +146,7 @@ Emitted when a :ref:`PhysicsBody<class_PhysicsBody>` or :ref:`GridMap<class_Grid
 
 Emitted when a :ref:`PhysicsBody<class_PhysicsBody>` or :ref:`GridMap<class_GridMap>` exits this Area. Requires :ref:`monitoring<class_Area_property_monitoring>` to be set to ``true``. :ref:`GridMap<class_GridMap>`\ s are detected if the :ref:`MeshLibrary<class_MeshLibrary>` has Collision :ref:`Shape<class_Shape>`\ s.
 
-``body`` the :ref:`Node<class_Node>`, if it exists in the tree, of the other :ref:`PhysicsBody<class_PhysicsBody>` or :ref:`GridMap<class_GridMap>`.
+\ ``body`` the :ref:`Node<class_Node>`, if it exists in the tree, of the other :ref:`PhysicsBody<class_PhysicsBody>` or :ref:`GridMap<class_GridMap>`.
 
 ----
 
@@ -156,13 +156,13 @@ Emitted when a :ref:`PhysicsBody<class_PhysicsBody>` or :ref:`GridMap<class_Grid
 
 Emitted when one of a :ref:`PhysicsBody<class_PhysicsBody>` or :ref:`GridMap<class_GridMap>`'s :ref:`Shape<class_Shape>`\ s enters one of this Area's :ref:`Shape<class_Shape>`\ s. Requires :ref:`monitoring<class_Area_property_monitoring>` to be set to ``true``. :ref:`GridMap<class_GridMap>`\ s are detected if the :ref:`MeshLibrary<class_MeshLibrary>` has Collision :ref:`Shape<class_Shape>`\ s.
 
-``body_rid`` the :ref:`RID<class_RID>` of the :ref:`PhysicsBody<class_PhysicsBody>` or :ref:`MeshLibrary<class_MeshLibrary>`'s :ref:`CollisionObject<class_CollisionObject>` used by the :ref:`PhysicsServer<class_PhysicsServer>`.
+\ ``body_rid`` the :ref:`RID<class_RID>` of the :ref:`PhysicsBody<class_PhysicsBody>` or :ref:`MeshLibrary<class_MeshLibrary>`'s :ref:`CollisionObject<class_CollisionObject>` used by the :ref:`PhysicsServer<class_PhysicsServer>`.
 
-``body`` the :ref:`Node<class_Node>`, if it exists in the tree, of the :ref:`PhysicsBody<class_PhysicsBody>` or :ref:`GridMap<class_GridMap>`.
+\ ``body`` the :ref:`Node<class_Node>`, if it exists in the tree, of the :ref:`PhysicsBody<class_PhysicsBody>` or :ref:`GridMap<class_GridMap>`.
 
-``body_shape_index`` the index of the :ref:`Shape<class_Shape>` of the :ref:`PhysicsBody<class_PhysicsBody>` or :ref:`GridMap<class_GridMap>` used by the :ref:`PhysicsServer<class_PhysicsServer>`. Get the :ref:`CollisionShape<class_CollisionShape>` node with ``body.shape_owner_get_owner(body_shape_index)``.
+\ ``body_shape_index`` the index of the :ref:`Shape<class_Shape>` of the :ref:`PhysicsBody<class_PhysicsBody>` or :ref:`GridMap<class_GridMap>` used by the :ref:`PhysicsServer<class_PhysicsServer>`. Get the :ref:`CollisionShape<class_CollisionShape>` node with ``body.shape_owner_get_owner(body_shape_index)``.
 
-``local_shape_index`` the index of the :ref:`Shape<class_Shape>` of this Area used by the :ref:`PhysicsServer<class_PhysicsServer>`. Get the :ref:`CollisionShape<class_CollisionShape>` node with ``self.shape_owner_get_owner(local_shape_index)``.
+\ ``local_shape_index`` the index of the :ref:`Shape<class_Shape>` of this Area used by the :ref:`PhysicsServer<class_PhysicsServer>`. Get the :ref:`CollisionShape<class_CollisionShape>` node with ``self.shape_owner_get_owner(local_shape_index)``.
 
 ----
 
@@ -172,13 +172,13 @@ Emitted when one of a :ref:`PhysicsBody<class_PhysicsBody>` or :ref:`GridMap<cla
 
 Emitted when one of a :ref:`PhysicsBody<class_PhysicsBody>` or :ref:`GridMap<class_GridMap>`'s :ref:`Shape<class_Shape>`\ s enters one of this Area's :ref:`Shape<class_Shape>`\ s. Requires :ref:`monitoring<class_Area_property_monitoring>` to be set to ``true``. :ref:`GridMap<class_GridMap>`\ s are detected if the :ref:`MeshLibrary<class_MeshLibrary>` has Collision :ref:`Shape<class_Shape>`\ s.
 
-``body_rid`` the :ref:`RID<class_RID>` of the :ref:`PhysicsBody<class_PhysicsBody>` or :ref:`MeshLibrary<class_MeshLibrary>`'s :ref:`CollisionObject<class_CollisionObject>` used by the :ref:`PhysicsServer<class_PhysicsServer>`.
+\ ``body_rid`` the :ref:`RID<class_RID>` of the :ref:`PhysicsBody<class_PhysicsBody>` or :ref:`MeshLibrary<class_MeshLibrary>`'s :ref:`CollisionObject<class_CollisionObject>` used by the :ref:`PhysicsServer<class_PhysicsServer>`.
 
-``body`` the :ref:`Node<class_Node>`, if it exists in the tree, of the :ref:`PhysicsBody<class_PhysicsBody>` or :ref:`GridMap<class_GridMap>`.
+\ ``body`` the :ref:`Node<class_Node>`, if it exists in the tree, of the :ref:`PhysicsBody<class_PhysicsBody>` or :ref:`GridMap<class_GridMap>`.
 
-``body_shape_index`` the index of the :ref:`Shape<class_Shape>` of the :ref:`PhysicsBody<class_PhysicsBody>` or :ref:`GridMap<class_GridMap>` used by the :ref:`PhysicsServer<class_PhysicsServer>`. Get the :ref:`CollisionShape<class_CollisionShape>` node with ``body.shape_owner_get_owner(body_shape_index)``.
+\ ``body_shape_index`` the index of the :ref:`Shape<class_Shape>` of the :ref:`PhysicsBody<class_PhysicsBody>` or :ref:`GridMap<class_GridMap>` used by the :ref:`PhysicsServer<class_PhysicsServer>`. Get the :ref:`CollisionShape<class_CollisionShape>` node with ``body.shape_owner_get_owner(body_shape_index)``.
 
-``local_shape_index`` the index of the :ref:`Shape<class_Shape>` of this Area used by the :ref:`PhysicsServer<class_PhysicsServer>`. Get the :ref:`CollisionShape<class_CollisionShape>` node with ``self.shape_owner_get_owner(local_shape_index)``.
+\ ``local_shape_index`` the index of the :ref:`Shape<class_Shape>` of this Area used by the :ref:`PhysicsServer<class_PhysicsServer>`. Get the :ref:`CollisionShape<class_CollisionShape>` node with ``self.shape_owner_get_owner(local_shape_index)``.
 
 Enumerations
 ------------
@@ -497,7 +497,7 @@ For performance reasons (collisions are all processed at the same time) this lis
 
 If ``true``, the given area overlaps the Area.
 
-**Note:** The result of this test is not immediate after moving objects. For performance, list of overlaps is updated once per frame and before the physics step. Consider using signals instead.
+\ **Note:** The result of this test is not immediate after moving objects. For performance, list of overlaps is updated once per frame and before the physics step. Consider using signals instead.
 
 ----
 
@@ -507,7 +507,7 @@ If ``true``, the given area overlaps the Area.
 
 If ``true``, the given physics body overlaps the Area.
 
-**Note:** The result of this test is not immediate after moving objects. For performance, list of overlaps is updated once per frame and before the physics step. Consider using signals instead.
+\ **Note:** The result of this test is not immediate after moving objects. For performance, list of overlaps is updated once per frame and before the physics step. Consider using signals instead.
 
 The ``body`` argument can either be a :ref:`PhysicsBody<class_PhysicsBody>` or a :ref:`GridMap<class_GridMap>` instance (while GridMaps are not physics body themselves, they register their tiles with collision shapes as a virtual physics body).
 

+ 23 - 23
classes/class_area2d.rst

@@ -21,7 +21,7 @@ Description
 Tutorials
 ---------
 
-- :doc:`../tutorials/physics/using_area_2d`
+- :doc:`Using Area2D <../tutorials/physics/using_area_2d>`
 
 - `2D Dodge The Creeps Demo <https://godotengine.org/asset-library/asset/515>`__
 
@@ -80,7 +80,7 @@ Signals
 
 Emitted when another Area2D enters this Area2D. Requires :ref:`monitoring<class_Area2D_property_monitoring>` to be set to ``true``.
 
-``area`` the other Area2D.
+\ ``area`` the other Area2D.
 
 ----
 
@@ -90,7 +90,7 @@ Emitted when another Area2D enters this Area2D. Requires :ref:`monitoring<class_
 
 Emitted when another Area2D exits this Area2D. Requires :ref:`monitoring<class_Area2D_property_monitoring>` to be set to ``true``.
 
-``area`` the other Area2D.
+\ ``area`` the other Area2D.
 
 ----
 
@@ -100,13 +100,13 @@ Emitted when another Area2D exits this Area2D. Requires :ref:`monitoring<class_A
 
 Emitted when one of another Area2D's :ref:`Shape2D<class_Shape2D>`\ s enters one of this Area2D's :ref:`Shape2D<class_Shape2D>`\ s. Requires :ref:`monitoring<class_Area2D_property_monitoring>` to be set to ``true``.
 
-``area_rid`` the :ref:`RID<class_RID>` of the other Area2D's :ref:`CollisionObject2D<class_CollisionObject2D>` used by the :ref:`Physics2DServer<class_Physics2DServer>`.
+\ ``area_rid`` the :ref:`RID<class_RID>` of the other Area2D's :ref:`CollisionObject2D<class_CollisionObject2D>` used by the :ref:`Physics2DServer<class_Physics2DServer>`.
 
-``area`` the other Area2D.
+\ ``area`` the other Area2D.
 
-``area_shape_index`` the index of the :ref:`Shape2D<class_Shape2D>` of the other Area2D used by the :ref:`Physics2DServer<class_Physics2DServer>`. Get the :ref:`CollisionShape2D<class_CollisionShape2D>` node with ``area.shape_owner_get_owner(area_shape_index)``.
+\ ``area_shape_index`` the index of the :ref:`Shape2D<class_Shape2D>` of the other Area2D used by the :ref:`Physics2DServer<class_Physics2DServer>`. Get the :ref:`CollisionShape2D<class_CollisionShape2D>` node with ``area.shape_owner_get_owner(area_shape_index)``.
 
-``local_shape_index`` the index of the :ref:`Shape2D<class_Shape2D>` of this Area2D used by the :ref:`Physics2DServer<class_Physics2DServer>`. Get the :ref:`CollisionShape2D<class_CollisionShape2D>` node with ``self.shape_owner_get_owner(local_shape_index)``.
+\ ``local_shape_index`` the index of the :ref:`Shape2D<class_Shape2D>` of this Area2D used by the :ref:`Physics2DServer<class_Physics2DServer>`. Get the :ref:`CollisionShape2D<class_CollisionShape2D>` node with ``self.shape_owner_get_owner(local_shape_index)``.
 
 ----
 
@@ -116,13 +116,13 @@ Emitted when one of another Area2D's :ref:`Shape2D<class_Shape2D>`\ s enters one
 
 Emitted when one of another Area2D's :ref:`Shape2D<class_Shape2D>`\ s exits one of this Area2D's :ref:`Shape2D<class_Shape2D>`\ s. Requires :ref:`monitoring<class_Area2D_property_monitoring>` to be set to ``true``.
 
-``area_rid`` the :ref:`RID<class_RID>` of the other Area2D's :ref:`CollisionObject2D<class_CollisionObject2D>` used by the :ref:`Physics2DServer<class_Physics2DServer>`.
+\ ``area_rid`` the :ref:`RID<class_RID>` of the other Area2D's :ref:`CollisionObject2D<class_CollisionObject2D>` used by the :ref:`Physics2DServer<class_Physics2DServer>`.
 
-``area`` the other Area2D.
+\ ``area`` the other Area2D.
 
-``area_shape_index`` the index of the :ref:`Shape2D<class_Shape2D>` of the other Area2D used by the :ref:`Physics2DServer<class_Physics2DServer>`. Get the :ref:`CollisionShape2D<class_CollisionShape2D>` node with ``area.shape_owner_get_owner(area_shape_index)``.
+\ ``area_shape_index`` the index of the :ref:`Shape2D<class_Shape2D>` of the other Area2D used by the :ref:`Physics2DServer<class_Physics2DServer>`. Get the :ref:`CollisionShape2D<class_CollisionShape2D>` node with ``area.shape_owner_get_owner(area_shape_index)``.
 
-``local_shape_index`` the index of the :ref:`Shape2D<class_Shape2D>` of this Area2D used by the :ref:`Physics2DServer<class_Physics2DServer>`. Get the :ref:`CollisionShape2D<class_CollisionShape2D>` node with ``self.shape_owner_get_owner(local_shape_index)``.
+\ ``local_shape_index`` the index of the :ref:`Shape2D<class_Shape2D>` of this Area2D used by the :ref:`Physics2DServer<class_Physics2DServer>`. Get the :ref:`CollisionShape2D<class_CollisionShape2D>` node with ``self.shape_owner_get_owner(local_shape_index)``.
 
 ----
 
@@ -132,7 +132,7 @@ Emitted when one of another Area2D's :ref:`Shape2D<class_Shape2D>`\ s exits one
 
 Emitted when a :ref:`PhysicsBody2D<class_PhysicsBody2D>` or :ref:`TileMap<class_TileMap>` enters this Area2D. Requires :ref:`monitoring<class_Area2D_property_monitoring>` to be set to ``true``. :ref:`TileMap<class_TileMap>`\ s are detected if the :ref:`TileSet<class_TileSet>` has Collision :ref:`Shape2D<class_Shape2D>`\ s.
 
-``body`` the :ref:`Node<class_Node>`, if it exists in the tree, of the other :ref:`PhysicsBody2D<class_PhysicsBody2D>` or :ref:`TileMap<class_TileMap>`.
+\ ``body`` the :ref:`Node<class_Node>`, if it exists in the tree, of the other :ref:`PhysicsBody2D<class_PhysicsBody2D>` or :ref:`TileMap<class_TileMap>`.
 
 ----
 
@@ -142,7 +142,7 @@ Emitted when a :ref:`PhysicsBody2D<class_PhysicsBody2D>` or :ref:`TileMap<class_
 
 Emitted when a :ref:`PhysicsBody2D<class_PhysicsBody2D>` or :ref:`TileMap<class_TileMap>` exits this Area2D. Requires :ref:`monitoring<class_Area2D_property_monitoring>` to be set to ``true``. :ref:`TileMap<class_TileMap>`\ s are detected if the :ref:`TileSet<class_TileSet>` has Collision :ref:`Shape2D<class_Shape2D>`\ s.
 
-``body`` the :ref:`Node<class_Node>`, if it exists in the tree, of the other :ref:`PhysicsBody2D<class_PhysicsBody2D>` or :ref:`TileMap<class_TileMap>`.
+\ ``body`` the :ref:`Node<class_Node>`, if it exists in the tree, of the other :ref:`PhysicsBody2D<class_PhysicsBody2D>` or :ref:`TileMap<class_TileMap>`.
 
 ----
 
@@ -152,13 +152,13 @@ Emitted when a :ref:`PhysicsBody2D<class_PhysicsBody2D>` or :ref:`TileMap<class_
 
 Emitted when one of a :ref:`PhysicsBody2D<class_PhysicsBody2D>` or :ref:`TileMap<class_TileMap>`'s :ref:`Shape2D<class_Shape2D>`\ s enters one of this Area2D's :ref:`Shape2D<class_Shape2D>`\ s. Requires :ref:`monitoring<class_Area2D_property_monitoring>` to be set to ``true``. :ref:`TileMap<class_TileMap>`\ s are detected if the :ref:`TileSet<class_TileSet>` has Collision :ref:`Shape2D<class_Shape2D>`\ s.
 
-``body_rid`` the :ref:`RID<class_RID>` of the :ref:`PhysicsBody2D<class_PhysicsBody2D>` or :ref:`TileSet<class_TileSet>`'s :ref:`CollisionObject2D<class_CollisionObject2D>` used by the :ref:`Physics2DServer<class_Physics2DServer>`.
+\ ``body_rid`` the :ref:`RID<class_RID>` of the :ref:`PhysicsBody2D<class_PhysicsBody2D>` or :ref:`TileSet<class_TileSet>`'s :ref:`CollisionObject2D<class_CollisionObject2D>` used by the :ref:`Physics2DServer<class_Physics2DServer>`.
 
-``body`` the :ref:`Node<class_Node>`, if it exists in the tree, of the :ref:`PhysicsBody2D<class_PhysicsBody2D>` or :ref:`TileMap<class_TileMap>`.
+\ ``body`` the :ref:`Node<class_Node>`, if it exists in the tree, of the :ref:`PhysicsBody2D<class_PhysicsBody2D>` or :ref:`TileMap<class_TileMap>`.
 
-``body_shape_index`` the index of the :ref:`Shape2D<class_Shape2D>` of the :ref:`PhysicsBody2D<class_PhysicsBody2D>` or :ref:`TileMap<class_TileMap>` used by the :ref:`Physics2DServer<class_Physics2DServer>`. Get the :ref:`CollisionShape2D<class_CollisionShape2D>` node with ``body.shape_owner_get_owner(body_shape_index)``.
+\ ``body_shape_index`` the index of the :ref:`Shape2D<class_Shape2D>` of the :ref:`PhysicsBody2D<class_PhysicsBody2D>` or :ref:`TileMap<class_TileMap>` used by the :ref:`Physics2DServer<class_Physics2DServer>`. Get the :ref:`CollisionShape2D<class_CollisionShape2D>` node with ``body.shape_owner_get_owner(body_shape_index)``.
 
-``local_shape_index`` the index of the :ref:`Shape2D<class_Shape2D>` of this Area2D used by the :ref:`Physics2DServer<class_Physics2DServer>`. Get the :ref:`CollisionShape2D<class_CollisionShape2D>` node with ``self.shape_owner_get_owner(local_shape_index)``.
+\ ``local_shape_index`` the index of the :ref:`Shape2D<class_Shape2D>` of this Area2D used by the :ref:`Physics2DServer<class_Physics2DServer>`. Get the :ref:`CollisionShape2D<class_CollisionShape2D>` node with ``self.shape_owner_get_owner(local_shape_index)``.
 
 ----
 
@@ -168,13 +168,13 @@ Emitted when one of a :ref:`PhysicsBody2D<class_PhysicsBody2D>` or :ref:`TileMap
 
 Emitted when one of a :ref:`PhysicsBody2D<class_PhysicsBody2D>` or :ref:`TileMap<class_TileMap>`'s :ref:`Shape2D<class_Shape2D>`\ s exits one of this Area2D's :ref:`Shape2D<class_Shape2D>`\ s. Requires :ref:`monitoring<class_Area2D_property_monitoring>` to be set to ``true``. :ref:`TileMap<class_TileMap>`\ s are detected if the :ref:`TileSet<class_TileSet>` has Collision :ref:`Shape2D<class_Shape2D>`\ s.
 
-``body_rid`` the :ref:`RID<class_RID>` of the :ref:`PhysicsBody2D<class_PhysicsBody2D>` or :ref:`TileSet<class_TileSet>`'s :ref:`CollisionObject2D<class_CollisionObject2D>` used by the :ref:`Physics2DServer<class_Physics2DServer>`.
+\ ``body_rid`` the :ref:`RID<class_RID>` of the :ref:`PhysicsBody2D<class_PhysicsBody2D>` or :ref:`TileSet<class_TileSet>`'s :ref:`CollisionObject2D<class_CollisionObject2D>` used by the :ref:`Physics2DServer<class_Physics2DServer>`.
 
-``body`` the :ref:`Node<class_Node>`, if it exists in the tree, of the :ref:`PhysicsBody2D<class_PhysicsBody2D>` or :ref:`TileMap<class_TileMap>`.
+\ ``body`` the :ref:`Node<class_Node>`, if it exists in the tree, of the :ref:`PhysicsBody2D<class_PhysicsBody2D>` or :ref:`TileMap<class_TileMap>`.
 
-``body_shape_index`` the index of the :ref:`Shape2D<class_Shape2D>` of the :ref:`PhysicsBody2D<class_PhysicsBody2D>` or :ref:`TileMap<class_TileMap>` used by the :ref:`Physics2DServer<class_Physics2DServer>`. Get the :ref:`CollisionShape2D<class_CollisionShape2D>` node with ``body.shape_owner_get_owner(body_shape_index)``.
+\ ``body_shape_index`` the index of the :ref:`Shape2D<class_Shape2D>` of the :ref:`PhysicsBody2D<class_PhysicsBody2D>` or :ref:`TileMap<class_TileMap>` used by the :ref:`Physics2DServer<class_Physics2DServer>`. Get the :ref:`CollisionShape2D<class_CollisionShape2D>` node with ``body.shape_owner_get_owner(body_shape_index)``.
 
-``local_shape_index`` the index of the :ref:`Shape2D<class_Shape2D>` of this Area2D used by the :ref:`Physics2DServer<class_Physics2DServer>`. Get the :ref:`CollisionShape2D<class_CollisionShape2D>` node with ``self.shape_owner_get_owner(local_shape_index)``.
+\ ``local_shape_index`` the index of the :ref:`Shape2D<class_Shape2D>` of this Area2D used by the :ref:`Physics2DServer<class_Physics2DServer>`. Get the :ref:`CollisionShape2D<class_CollisionShape2D>` node with ``self.shape_owner_get_owner(local_shape_index)``.
 
 Enumerations
 ------------
@@ -429,7 +429,7 @@ For performance reasons (collisions are all processed at the same time) this lis
 
 If ``true``, the given area overlaps the Area2D.
 
-**Note:** The result of this test is not immediate after moving objects. For performance, the list of overlaps is updated once per frame and before the physics step. Consider using signals instead.
+\ **Note:** The result of this test is not immediate after moving objects. For performance, the list of overlaps is updated once per frame and before the physics step. Consider using signals instead.
 
 ----
 
@@ -439,7 +439,7 @@ If ``true``, the given area overlaps the Area2D.
 
 If ``true``, the given physics body overlaps the Area2D.
 
-**Note:** The result of this test is not immediate after moving objects. For performance, list of overlaps is updated once per frame and before the physics step. Consider using signals instead.
+\ **Note:** The result of this test is not immediate after moving objects. For performance, list of overlaps is updated once per frame and before the physics step. Consider using signals instead.
 
 The ``body`` argument can either be a :ref:`PhysicsBody2D<class_PhysicsBody2D>` or a :ref:`TileMap<class_TileMap>` instance (while TileMaps are not physics bodies themselves, they register their tiles with collision shapes as a virtual physics body).
 

+ 37 - 21
classes/class_array.rst

@@ -16,7 +16,7 @@ Description
 
 A generic array that can contain several elements of any type, accessible by a numerical index starting at 0. Negative indices can be used to count from the back, like in Python (-1 is the last element, -2 is the second to last, etc.).
 
-**Example:**
+\ **Example:**\ 
 
 ::
 
@@ -35,11 +35,11 @@ Arrays can be concatenated using the ``+`` operator:
     var array2 = [3, "Four"]
     print(array1 + array2) # ["One", 2, 3, "Four"]
 
-**Note:** Concatenating with the ``+=`` operator will create a new array, which has a cost. If you want to append another array to an existing array, :ref:`append_array<class_Array_method_append_array>` is more efficient.
+\ **Note:** Concatenating with the ``+=`` operator will create a new array, which has a cost. If you want to append another array to an existing array, :ref:`append_array<class_Array_method_append_array>` is more efficient.
 
-**Note:** Arrays are always passed by reference. To get a copy of an array that can be modified independently of the original array, use :ref:`duplicate<class_Array_method_duplicate>`.
+\ **Note:** Arrays are always passed by reference. To get a copy of an array that can be modified independently of the original array, use :ref:`duplicate<class_Array_method_duplicate>`.
 
-**Note:** When declaring an array with ``const``, the array itself can still be mutated by defining the values at individual indices or pushing/removing elements. Using ``const`` will only prevent assigning the constant with another value after it was initialized.
+\ **Note:** When declaring an array with ``const``, the array itself can still be mutated by defining the values at individual indices or pushing/removing elements. Using ``const`` will only prevent assigning the constant with another value after it was initialized.
 
 Methods
 -------
@@ -79,6 +79,8 @@ Methods
 +-------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
 | void                          | :ref:`erase<class_Array_method_erase>` **(** :ref:`Variant<class_Variant>` value **)**                                                                                                                           |
 +-------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| void                          | :ref:`fill<class_Array_method_fill>` **(** :ref:`Variant<class_Variant>` value **)**                                                                                                                             |
++-------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
 | :ref:`int<class_int>`         | :ref:`find<class_Array_method_find>` **(** :ref:`Variant<class_Variant>` what, :ref:`int<class_int>` from=0 **)**                                                                                                |
 +-------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
 | :ref:`int<class_int>`         | :ref:`find_last<class_Array_method_find_last>` **(** :ref:`Variant<class_Variant>` value **)**                                                                                                                   |
@@ -200,7 +202,7 @@ Appends another array at the end of this array.
 
 Returns the last element of the array. Prints an error and returns ``null`` if the array is empty.
 
-**Note:** Calling this function is not the same as writing ``array[-1]``. If the array is empty, accessing by index will pause project execution when running from the editor.
+\ **Note:** Calling this function is not the same as writing ``array[-1]``. If the array is empty, accessing by index will pause project execution when running from the editor.
 
 ----
 
@@ -210,7 +212,7 @@ Returns the last element of the array. Prints an error and returns ``null`` if t
 
 Finds the index of an existing value (or the insertion index that maintains sorting order, if the value is not yet present in the array) using binary search. Optionally, a ``before`` specifier can be passed. If ``false``, the returned index comes after all existing entries of the value in the array.
 
-**Note:** Calling :ref:`bsearch<class_Array_method_bsearch>` on an unsorted array results in unexpected behavior.
+\ **Note:** Calling :ref:`bsearch<class_Array_method_bsearch>` on an unsorted array results in unexpected behavior.
 
 ----
 
@@ -243,7 +245,7 @@ Finds the index of an existing value (or the insertion index that maintains sort
         # `compare` is defined in this object, so we use `self` as the `obj` parameter.
         print(a.bsearch_custom("three", self, "compare", true)) # Expected value is 2.
 
-**Note:** Calling :ref:`bsearch_custom<class_Array_method_bsearch_custom>` on an unsorted array results in unexpected behavior.
+\ **Note:** Calling :ref:`bsearch_custom<class_Array_method_bsearch_custom>` on an unsorted array results in unexpected behavior.
 
 ----
 
@@ -287,9 +289,23 @@ Returns ``true`` if the array is empty.
 
 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<class_Array_method_remove>` instead.
 
-**Note:** This method acts in-place and doesn't return a value.
+\ **Note:** This method acts in-place and doesn't return a value.
+
+\ **Note:** On large arrays, this method will be slower if the removed element is close to the beginning of the array (index 0). This is because all elements placed after the removed element have to be reindexed.
+
+----
+
+.. _class_Array_method_fill:
+
+- void **fill** **(** :ref:`Variant<class_Variant>` value **)**
+
+Assigns the given value to all elements in the array. This can typically be used together with :ref:`resize<class_Array_method_resize>` to create an array with a given size and initialized elements:
+
+::
 
-**Note:** On large arrays, this method will be slower if the removed element is close to the beginning of the array (index 0). This is because all elements placed after the removed element have to be reindexed.
+    var array = []
+    array.resize(10)
+    array.fill(0) # Initialize the 10 elements to 0.
 
 ----
 
@@ -315,7 +331,7 @@ Searches the array in reverse order for a value and returns its index or ``-1``
 
 Returns the first element of the array. Prints an error and returns ``null`` if the array is empty.
 
-**Note:** Calling this function is not the same as writing ``array[0]``. If the array is empty, accessing by index will pause project execution when running from the editor.
+\ **Note:** Calling this function is not the same as writing ``array[0]``. If the array is empty, accessing by index will pause project execution when running from the editor.
 
 ----
 
@@ -332,7 +348,7 @@ Returns ``true`` if the array contains the given value.
     ["inside", 7].has(7) # True
     ["inside", 7].has("7") # False
 
-**Note:** This is equivalent to using the ``in`` operator as follows:
+\ **Note:** This is equivalent to using the ``in`` operator as follows:
 
 ::
 
@@ -348,7 +364,7 @@ Returns ``true`` if the array contains the given value.
 
 Returns a hashed 32-bit integer value representing the array and its contents.
 
-**Note:** ``Array``\ s with equal content will always produce identical hash values. However, the reverse is not true. Returning identical hash values does *not* imply the arrays are equal, because different arrays can have identical hash values due to hash collisions.
+\ **Note:** ``Array``\ s with equal content will always produce identical hash values. However, the reverse is not true. Returning identical hash values does *not* imply the arrays are equal, because different arrays can have identical hash values due to hash collisions.
 
 ----
 
@@ -358,9 +374,9 @@ Returns a hashed 32-bit integer value representing the array and its contents.
 
 Inserts a new element at a given position in the array. The position must be valid, or at the end of the array (``pos == size()``).
 
-**Note:** This method acts in-place and doesn't return a value.
+\ **Note:** This method acts in-place and doesn't return a value.
 
-**Note:** On large arrays, this method will be slower if the inserted element is close to the beginning of the array (index 0). This is because all elements placed after the newly inserted element have to be reindexed.
+\ **Note:** On large arrays, this method will be slower if the inserted element is close to the beginning of the array (index 0). This is because all elements placed after the newly inserted element have to be reindexed.
 
 ----
 
@@ -394,7 +410,7 @@ Returns the minimum value contained in the array if all elements are of comparab
 
 Removes and returns the element of the array at index ``position``. If negative, ``position`` is considered relative to the end of the array. Leaves the array untouched and returns ``null`` if the array is empty or if it's accessed out of bounds. An error message is printed when the array is accessed out of bounds, but not when the array is empty.
 
-**Note:** On large arrays, this method can be slower than :ref:`pop_back<class_Array_method_pop_back>` as it will reindex the array's elements that are located after the removed element. The larger the array and the lower the index of the removed element, the slower :ref:`pop_at<class_Array_method_pop_at>` will be.
+\ **Note:** On large arrays, this method can be slower than :ref:`pop_back<class_Array_method_pop_back>` as it will reindex the array's elements that are located after the removed element. The larger the array and the lower the index of the removed element, the slower :ref:`pop_at<class_Array_method_pop_at>` will be.
 
 ----
 
@@ -412,7 +428,7 @@ Removes and returns the last element of the array. Returns ``null`` if the array
 
 Removes and returns the first element of the array. Returns ``null`` if the array is empty, without printing an error message. See also :ref:`pop_back<class_Array_method_pop_back>`.
 
-**Note:** On large arrays, this method is much slower than :ref:`pop_back<class_Array_method_pop_back>` as it will reindex all the array's elements every time it's called. The larger the array, the slower :ref:`pop_front<class_Array_method_pop_front>` will be.
+\ **Note:** On large arrays, this method is much slower than :ref:`pop_back<class_Array_method_pop_back>` as it will reindex all the array's elements every time it's called. The larger the array, the slower :ref:`pop_front<class_Array_method_pop_front>` will be.
 
 ----
 
@@ -430,7 +446,7 @@ Appends an element at the end of the array. See also :ref:`push_front<class_Arra
 
 Adds an element at the beginning of the array. See also :ref:`push_back<class_Array_method_push_back>`.
 
-**Note:** On large arrays, this method is much slower than :ref:`push_back<class_Array_method_push_back>` as it will reindex all the array's elements every time it's called. The larger the array, the slower :ref:`push_front<class_Array_method_push_front>` will be.
+\ **Note:** On large arrays, this method is much slower than :ref:`push_back<class_Array_method_push_back>` as it will reindex all the array's elements every time it's called. The larger the array, the slower :ref:`push_front<class_Array_method_push_front>` will be.
 
 ----
 
@@ -440,9 +456,9 @@ Adds an element at the beginning of the array. See also :ref:`push_back<class_Ar
 
 Removes an element from the array by index. If the index does not exist in the array, nothing happens. To remove an element by searching for its value, use :ref:`erase<class_Array_method_erase>` instead.
 
-**Note:** This method acts in-place and doesn't return a value.
+\ **Note:** This method acts in-place and doesn't return a value.
 
-**Note:** On large arrays, this method will be slower if the removed element is close to the beginning of the array (index 0). This is because all elements placed after the removed element have to be reindexed.
+\ **Note:** On large arrays, this method will be slower if the removed element is close to the beginning of the array (index 0). This is because all elements placed after the removed element have to be reindexed.
 
 ----
 
@@ -492,7 +508,7 @@ Duplicates the subset described in the function and returns it in an array, deep
 
 Sorts the array.
 
-**Note:** Strings are sorted in alphabetical order (as opposed to natural order). This may lead to unexpected behavior when sorting an array of strings ending with a sequence of numbers. Consider the following example:
+\ **Note:** Strings are sorted in alphabetical order (as opposed to natural order). This may lead to unexpected behavior when sorting an array of strings ending with a sequence of numbers. Consider the following example:
 
 ::
 
@@ -510,7 +526,7 @@ Sorts the array using a custom method. The arguments are an object that holds th
 
 For two elements ``a`` and ``b``, if the given method returns ``true``, element ``b`` will be after element ``a`` in the array.
 
-**Note:** You cannot randomize the return value as the heapsort algorithm expects a deterministic result. Doing so will result in unexpected behavior.
+\ **Note:** You cannot randomize the return value as the heapsort algorithm expects a deterministic result. Doing so will result in unexpected behavior.
 
 ::
 

+ 2 - 2
classes/class_arraymesh.rst

@@ -40,7 +40,7 @@ The :ref:`MeshInstance<class_MeshInstance>` is ready to be added to the :ref:`Sc
 
 See also :ref:`ImmediateGeometry<class_ImmediateGeometry>`, :ref:`MeshDataTool<class_MeshDataTool>` and :ref:`SurfaceTool<class_SurfaceTool>` for procedural geometry generation.
 
-**Note:** Godot uses clockwise `winding order <https://learnopengl.com/Advanced-OpenGL/Face-culling>`__ for front faces of triangle primitive modes.
+\ **Note:** Godot uses clockwise `winding order <https://learnopengl.com/Advanced-OpenGL/Face-culling>`__ for front faces of triangle primitive modes.
 
 Tutorials
 ---------
@@ -379,7 +379,7 @@ Sets a name for a given surface.
 
 Updates a specified region of mesh arrays on the GPU.
 
-**Warning:** Only use if you know what you are doing. You can easily cause crashes by calling this function with improper arguments.
+\ **Warning:** Only use if you know what you are doing. You can easily cause crashes by calling this function with improper arguments.
 
 .. |virtual| replace:: :abbr:`virtual (This method should typically be overridden by the user to have any effect.)`
 .. |const| replace:: :abbr:`const (This method has no side effects. It doesn't modify any of the instance's member variables.)`

+ 1 - 1
classes/class_arvrinterface.rst

@@ -230,7 +230,7 @@ Call this to initialize this interface. The first interface that is initialized
 
 After initializing the interface you want to use you then need to enable the AR/VR mode of a viewport and rendering should commence.
 
-**Note:** You must enable the AR/VR mode on the main viewport for any device that uses the main output of Godot, such as for mobile VR.
+\ **Note:** You must enable the AR/VR mode on the main viewport for any device that uses the main output of Godot, such as for mobile VR.
 
 If you do this for a platform that handles its own output (such as OpenVR) Godot will show just one eye without distortion on screen. Alternatively, you can add a separate viewport node to your scene and enable AR/VR on that viewport. It will be used to output to the HMD, leaving you free to do anything you like in the main window, such as using a separate camera as a spectator camera or rendering something completely different.
 

+ 1 - 1
classes/class_arvrorigin.rst

@@ -53,7 +53,7 @@ Property Descriptions
 
 Allows you to adjust the scale to your game's units. Most AR/VR platforms assume a scale of 1 game world unit = 1 real world meter.
 
-**Note:** This method is a passthrough to the :ref:`ARVRServer<class_ARVRServer>` itself.
+\ **Note:** This method is a passthrough to the :ref:`ARVRServer<class_ARVRServer>` itself.
 
 .. |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 - 3
classes/class_astar.rst

@@ -33,7 +33,7 @@ It is also possible to use non-Euclidean distances. To do so, create a class tha
         func _estimate_cost(u, v):
             return min(0, abs(u - v) - 1)
 
-: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_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.
 
 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.
 
@@ -185,7 +185,7 @@ Returns the next available point ID with no point associated to it.
 
 Returns the ID of the closest point to ``to_position``, optionally taking disabled points into account. Returns ``-1`` if there are no points in the points pool.
 
-**Note:** If several points are the closest to ``to_position``, the one with the smallest ID will be returned, ensuring a deterministic result.
+\ **Note:** If several points are the closest to ``to_position``, the one with the smallest ID will be returned, ensuring a deterministic result.
 
 ----
 
@@ -275,7 +275,7 @@ Returns the number of points currently in the points pool.
 
 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.
 
-**Note:** This method is not thread-safe. If called from a :ref:`Thread<class_Thread>`, it will return an empty :ref:`PoolVector3Array<class_PoolVector3Array>` and will print an error message.
+\ **Note:** This method is not thread-safe. If called from a :ref:`Thread<class_Thread>`, it will return an empty :ref:`PoolVector3Array<class_PoolVector3Array>` and will print an error message.
 
 ----
 

+ 2 - 2
classes/class_astar2d.rst

@@ -166,7 +166,7 @@ Returns the next available point ID with no point associated to it.
 
 Returns the ID of the closest point to ``to_position``, optionally taking disabled points into account. Returns ``-1`` if there are no points in the points pool.
 
-**Note:** If several points are the closest to ``to_position``, the one with the smallest ID will be returned, ensuring a deterministic result.
+\ **Note:** If several points are the closest to ``to_position``, the one with the smallest ID will be returned, ensuring a deterministic result.
 
 ----
 
@@ -256,7 +256,7 @@ Returns the number of points currently in the points pool.
 
 Returns an array with the points that are in the path found by AStar2D 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:`PoolVector2Array<class_PoolVector2Array>` and will print an error message.
+\ **Note:** This method is not thread-safe. If called from a :ref:`Thread<class_Thread>`, it will return an empty :ref:`PoolVector2Array<class_PoolVector2Array>` and will print an error message.
 
 ----
 

+ 13 - 13
classes/class_atlastexture.rst

@@ -18,24 +18,24 @@ Description
 
 :ref:`Texture<class_Texture>` resource that crops out one part of the :ref:`atlas<class_AtlasTexture_property_atlas>` texture, defined by :ref:`region<class_AtlasTexture_property_region>`. The main use case is cropping out textures from a texture atlas, which is a big texture file that packs multiple smaller textures. Consists of a :ref:`Texture<class_Texture>` for the :ref:`atlas<class_AtlasTexture_property_atlas>`, a :ref:`region<class_AtlasTexture_property_region>` that defines the area of :ref:`atlas<class_AtlasTexture_property_atlas>` to use, and a :ref:`margin<class_AtlasTexture_property_margin>` that defines the border width.
 
-``AtlasTexture`` cannot be used in an :ref:`AnimatedTexture<class_AnimatedTexture>`, cannot be tiled in nodes such as :ref:`TextureRect<class_TextureRect>`, and does not work properly if used inside of other ``AtlasTexture`` resources. Multiple ``AtlasTexture`` resources can be used to crop multiple textures from the atlas. Using a texture atlas helps to optimize video memory costs and render calls compared to using multiple small files.
+\ ``AtlasTexture`` cannot be used in an :ref:`AnimatedTexture<class_AnimatedTexture>`, cannot be tiled in nodes such as :ref:`TextureRect<class_TextureRect>`, and does not work properly if used inside of other ``AtlasTexture`` resources. Multiple ``AtlasTexture`` resources can be used to crop multiple textures from the atlas. Using a texture atlas helps to optimize video memory costs and render calls compared to using multiple small files.
 
-**Note:** AtlasTextures don't support repetition. The :ref:`Texture.FLAG_REPEAT<class_Texture_constant_FLAG_REPEAT>` and :ref:`Texture.FLAG_MIRRORED_REPEAT<class_Texture_constant_FLAG_MIRRORED_REPEAT>` flags are ignored when using an AtlasTexture.
+\ **Note:** AtlasTextures don't support repetition. The :ref:`Texture.FLAG_REPEAT<class_Texture_constant_FLAG_REPEAT>` and :ref:`Texture.FLAG_MIRRORED_REPEAT<class_Texture_constant_FLAG_MIRRORED_REPEAT>` flags are ignored when using an AtlasTexture.
 
 Properties
 ----------
 
-+-------------------------------+-------------------------------------------------------------+---------------------------+
-| :ref:`Texture<class_Texture>` | :ref:`atlas<class_AtlasTexture_property_atlas>`             |                           |
-+-------------------------------+-------------------------------------------------------------+---------------------------+
-| :ref:`bool<class_bool>`       | :ref:`filter_clip<class_AtlasTexture_property_filter_clip>` | ``false``                 |
-+-------------------------------+-------------------------------------------------------------+---------------------------+
-| :ref:`int<class_int>`         | flags                                                       | ``0`` *(parent override)* |
-+-------------------------------+-------------------------------------------------------------+---------------------------+
-| :ref:`Rect2<class_Rect2>`     | :ref:`margin<class_AtlasTexture_property_margin>`           | ``Rect2( 0, 0, 0, 0 )``   |
-+-------------------------------+-------------------------------------------------------------+---------------------------+
-| :ref:`Rect2<class_Rect2>`     | :ref:`region<class_AtlasTexture_property_region>`           | ``Rect2( 0, 0, 0, 0 )``   |
-+-------------------------------+-------------------------------------------------------------+---------------------------+
++-------------------------------+-------------------------------------------------------------+----------------------------------------------------------------+
+| :ref:`Texture<class_Texture>` | :ref:`atlas<class_AtlasTexture_property_atlas>`             |                                                                |
++-------------------------------+-------------------------------------------------------------+----------------------------------------------------------------+
+| :ref:`bool<class_bool>`       | :ref:`filter_clip<class_AtlasTexture_property_filter_clip>` | ``false``                                                      |
++-------------------------------+-------------------------------------------------------------+----------------------------------------------------------------+
+| :ref:`int<class_int>`         | flags                                                       | ``0`` (overrides :ref:`Texture<class_Texture_property_flags>`) |
++-------------------------------+-------------------------------------------------------------+----------------------------------------------------------------+
+| :ref:`Rect2<class_Rect2>`     | :ref:`margin<class_AtlasTexture_property_margin>`           | ``Rect2( 0, 0, 0, 0 )``                                        |
++-------------------------------+-------------------------------------------------------------+----------------------------------------------------------------+
+| :ref:`Rect2<class_Rect2>`     | :ref:`region<class_AtlasTexture_property_region>`           | ``Rect2( 0, 0, 0, 0 )``                                        |
++-------------------------------+-------------------------------------------------------------+----------------------------------------------------------------+
 
 Property Descriptions
 ---------------------

+ 1 - 1
classes/class_audioeffectdistortion.rst

@@ -25,7 +25,7 @@ By distorting the waveform the frequency content change, which will often make t
 Tutorials
 ---------
 
-- :doc:`../tutorials/audio/audio_buses`
+- :doc:`Audio buses <../tutorials/audio/audio_buses>`
 
 Properties
 ----------

+ 1 - 1
classes/class_audioeffectfilter.rst

@@ -23,7 +23,7 @@ Allows frequencies other than the :ref:`cutoff_hz<class_AudioEffectFilter_proper
 Tutorials
 ---------
 
-- :doc:`../tutorials/audio/audio_buses`
+- :doc:`Audio buses <../tutorials/audio/audio_buses>`
 
 Properties
 ----------

+ 1 - 1
classes/class_audioeffecthighshelffilter.rst

@@ -16,7 +16,7 @@ Reduces all frequencies above the :ref:`AudioEffectFilter.cutoff_hz<class_AudioE
 Tutorials
 ---------
 
-- :doc:`../tutorials/audio/audio_buses`
+- :doc:`Audio buses <../tutorials/audio/audio_buses>`
 
 .. |virtual| replace:: :abbr:`virtual (This method should typically be overridden by the user to have any effect.)`
 .. |const| replace:: :abbr:`const (This method has no side effects. It doesn't modify any of the instance's member variables.)`

+ 1 - 1
classes/class_audioeffectlowshelffilter.rst

@@ -16,7 +16,7 @@ Reduces all frequencies below the :ref:`AudioEffectFilter.cutoff_hz<class_AudioE
 Tutorials
 ---------
 
-- :doc:`../tutorials/audio/audio_buses`
+- :doc:`Audio buses <../tutorials/audio/audio_buses>`
 
 .. |virtual| replace:: :abbr:`virtual (This method should typically be overridden by the user to have any effect.)`
 .. |const| replace:: :abbr:`const (This method has no side effects. It doesn't modify any of the instance's member variables.)`

+ 1 - 1
classes/class_audioeffectrecord.rst

@@ -25,7 +25,7 @@ It sets and gets the format in which the audio file will be recorded (8-bit, 16-
 Tutorials
 ---------
 
-- :doc:`../tutorials/audio/recording_with_microphone`
+- :doc:`Recording with microphone <../tutorials/audio/recording_with_microphone>`
 
 - `Audio Mic Record Demo <https://godotengine.org/asset-library/asset/527>`__
 

+ 20 - 22
classes/class_audioserver.rst

@@ -21,7 +21,7 @@ Description
 Tutorials
 ---------
 
-- :doc:`../tutorials/audio/audio_buses`
+- :doc:`Audio buses <../tutorials/audio/audio_buses>`
 
 - `Audio Device Changer Demo <https://godotengine.org/asset-library/asset/525>`__
 
@@ -35,6 +35,8 @@ Properties
 +-----------------------------+------------------------------------------------------------------------+---------------+
 | :ref:`int<class_int>`       | :ref:`bus_count<class_AudioServer_property_bus_count>`                 | ``1``         |
 +-----------------------------+------------------------------------------------------------------------+---------------+
+| :ref:`String<class_String>` | :ref:`capture_device<class_AudioServer_property_capture_device>`       | ``"Default"`` |
++-----------------------------+------------------------------------------------------------------------+---------------+
 | :ref:`String<class_String>` | :ref:`device<class_AudioServer_property_device>`                       | ``"Default"`` |
 +-----------------------------+------------------------------------------------------------------------+---------------+
 | :ref:`float<class_float>`   | :ref:`global_rate_scale<class_AudioServer_property_global_rate_scale>` | ``1.0``       |
@@ -48,12 +50,8 @@ Methods
 +-------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
 | void                                                  | :ref:`add_bus_effect<class_AudioServer_method_add_bus_effect>` **(** :ref:`int<class_int>` bus_idx, :ref:`AudioEffect<class_AudioEffect>` effect, :ref:`int<class_int>` at_position=-1 **)**  |
 +-------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`String<class_String>`                           | :ref:`capture_get_device<class_AudioServer_method_capture_get_device>` **(** **)**                                                                                                            |
-+-------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
 | :ref:`Array<class_Array>`                             | :ref:`capture_get_device_list<class_AudioServer_method_capture_get_device_list>` **(** **)**                                                                                                  |
 +-------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| void                                                  | :ref:`capture_set_device<class_AudioServer_method_capture_set_device>` **(** :ref:`String<class_String>` name **)**                                                                           |
-+-------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
 | :ref:`AudioBusLayout<class_AudioBusLayout>`           | :ref:`generate_bus_layout<class_AudioServer_method_generate_bus_layout>` **(** **)** |const|                                                                                                  |
 +-------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
 | :ref:`int<class_int>`                                 | :ref:`get_bus_channels<class_AudioServer_method_get_bus_channels>` **(** :ref:`int<class_int>` bus_idx **)** |const|                                                                          |
@@ -176,6 +174,22 @@ Number of available audio buses.
 
 ----
 
+.. _class_AudioServer_property_capture_device:
+
+- :ref:`String<class_String>` **capture_device**
+
++-----------+---------------------------+
+| *Default* | ``"Default"``             |
++-----------+---------------------------+
+| *Setter*  | capture_set_device(value) |
++-----------+---------------------------+
+| *Getter*  | capture_get_device()      |
++-----------+---------------------------+
+
+Name of the current device for audio input (see :ref:`get_device_list<class_AudioServer_method_get_device_list>`). On systems with multiple audio inputs (such as analog, USB and HDMI audio), this can be used to select the audio input device. The value ``"Default"`` will record audio on the system-wide default audio input. If an invalid device name is set, the value will be reverted back to ``"Default"``.
+
+----
+
 .. _class_AudioServer_property_device:
 
 - :ref:`String<class_String>` **device**
@@ -225,14 +239,6 @@ Adds an :ref:`AudioEffect<class_AudioEffect>` effect to the bus ``bus_idx`` at `
 
 ----
 
-.. _class_AudioServer_method_capture_get_device:
-
-- :ref:`String<class_String>` **capture_get_device** **(** **)**
-
-Name of the current device for audio input (see :ref:`capture_get_device_list<class_AudioServer_method_capture_get_device_list>`). The value ``"Default"`` means that the system-wide default audio input is currently used.
-
-----
-
 .. _class_AudioServer_method_capture_get_device_list:
 
 - :ref:`Array<class_Array>` **capture_get_device_list** **(** **)**
@@ -241,14 +247,6 @@ Returns the names of all audio input devices detected on the system.
 
 ----
 
-.. _class_AudioServer_method_capture_set_device:
-
-- void **capture_set_device** **(** :ref:`String<class_String>` name **)**
-
-Sets which audio input device is used for audio capture. On systems with multiple audio inputs (such as analog and USB), this can be used to select the audio input device. Setting the value ``"Default"`` will record audio from the system-wide default audio input. If an invalid device name is set, the value will be reverted back to ``"Default"``.
-
-----
-
 .. _class_AudioServer_method_generate_bus_layout:
 
 - :ref:`AudioBusLayout<class_AudioBusLayout>` **generate_bus_layout** **(** **)** |const|
@@ -423,7 +421,7 @@ If ``true``, the bus at index ``bus_idx`` is in solo mode.
 
 Locks the audio driver's main loop.
 
-**Note:** Remember to unlock it afterwards.
+\ **Note:** Remember to unlock it afterwards.
 
 ----
 

+ 1 - 1
classes/class_audiostream.rst

@@ -23,7 +23,7 @@ Base class for audio streams. Audio streams are used for sound effects and music
 Tutorials
 ---------
 
-- :doc:`../tutorials/audio/audio_streams`
+- :doc:`Audio streams <../tutorials/audio/audio_streams>`
 
 - `Audio Generator Demo <https://godotengine.org/asset-library/asset/526>`__
 

+ 1 - 1
classes/class_audiostreamgenerator.rst

@@ -20,7 +20,7 @@ This audio stream does not play back sounds, but expects a script to generate au
 
 See also :ref:`AudioEffectSpectrumAnalyzer<class_AudioEffectSpectrumAnalyzer>` for performing real-time audio spectrum analysis.
 
-**Note:** Due to performance constraints, this class is best used from C# or from a compiled language via GDNative. If you still want to use this class from GDScript, consider using a lower :ref:`mix_rate<class_AudioStreamGenerator_property_mix_rate>` such as 11,025 Hz or 22,050 Hz.
+\ **Note:** Due to performance constraints, this class is best used from C# or from a compiled language via GDNative. If you still want to use this class from GDScript, consider using a lower :ref:`mix_rate<class_AudioStreamGenerator_property_mix_rate>` such as 11,025 Hz or 22,050 Hz.
 
 Tutorials
 ---------

+ 1 - 1
classes/class_audiostreamplayer.rst

@@ -23,7 +23,7 @@ To play audio positionally, use :ref:`AudioStreamPlayer2D<class_AudioStreamPlaye
 Tutorials
 ---------
 
-- :doc:`../tutorials/audio/audio_streams`
+- :doc:`Audio streams <../tutorials/audio/audio_streams>`
 
 - `2D Dodge The Creeps Demo <https://godotengine.org/asset-library/asset/515>`__
 

+ 1 - 1
classes/class_audiostreamplayer2d.rst

@@ -20,7 +20,7 @@ Plays audio that dampens with distance from screen center.
 
 See also :ref:`AudioStreamPlayer<class_AudioStreamPlayer>` to play a sound non-positionally.
 
-**Note:** Hiding an ``AudioStreamPlayer2D`` node does not disable its audio output. To temporarily disable an ``AudioStreamPlayer2D``'s audio output, set :ref:`volume_db<class_AudioStreamPlayer2D_property_volume_db>` to a very low value like ``-100`` (which isn't audible to human hearing).
+\ **Note:** Hiding an ``AudioStreamPlayer2D`` node does not disable its audio output. To temporarily disable an ``AudioStreamPlayer2D``'s audio output, set :ref:`volume_db<class_AudioStreamPlayer2D_property_volume_db>` to a very low value like ``-100`` (which isn't audible to human hearing).
 
 Tutorials
 ---------

+ 2 - 2
classes/class_audiostreamplayer3d.rst

@@ -22,7 +22,7 @@ By default, audio is heard from the camera position. This can be changed by addi
 
 See also :ref:`AudioStreamPlayer<class_AudioStreamPlayer>` to play a sound non-positionally.
 
-**Note:** Hiding an ``AudioStreamPlayer3D`` node does not disable its audio output. To temporarily disable an ``AudioStreamPlayer3D``'s audio output, set :ref:`unit_db<class_AudioStreamPlayer3D_property_unit_db>` to a very low value like ``-100`` (which isn't audible to human hearing).
+\ **Note:** Hiding an ``AudioStreamPlayer3D`` node does not disable its audio output. To temporarily disable an ``AudioStreamPlayer3D``'s audio output, set :ref:`unit_db<class_AudioStreamPlayer3D_property_unit_db>` to a very low value like ``-100`` (which isn't audible to human hearing).
 
 Tutorials
 ---------
@@ -264,7 +264,7 @@ The bus on which this audio is playing.
 
 Decides in which step the `Doppler effect <https://en.wikipedia.org/wiki/Doppler_effect>`__ should be calculated.
 
-**Note:** Only effective if the current :ref:`Camera<class_Camera>`'s :ref:`Camera.doppler_tracking<class_Camera_property_doppler_tracking>` property is set to a value other than :ref:`Camera.DOPPLER_TRACKING_DISABLED<class_Camera_constant_DOPPLER_TRACKING_DISABLED>`.
+\ **Note:** Only effective if the current :ref:`Camera<class_Camera>`'s :ref:`Camera.doppler_tracking<class_Camera_property_doppler_tracking>` property is set to a value other than :ref:`Camera.DOPPLER_TRACKING_DISABLED<class_Camera_constant_DOPPLER_TRACKING_DISABLED>`.
 
 ----
 

+ 2 - 2
classes/class_audiostreamsample.rst

@@ -104,7 +104,7 @@ Property Descriptions
 
 Contains the audio data in bytes.
 
-**Note:** This property expects signed PCM8 data. To convert unsigned PCM8 to signed PCM8, subtract 128 from each byte.
+\ **Note:** This property expects signed PCM8 data. To convert unsigned PCM8 to signed PCM8, subtract 128 from each byte.
 
 ----
 
@@ -215,7 +215,7 @@ Method Descriptions
 
 Saves the AudioStreamSample as a WAV file to ``path``. Samples with IMA ADPCM format can't be saved.
 
-**Note:** A ``.wav`` extension is automatically appended to ``path`` if it is missing.
+\ **Note:** A ``.wav`` extension is automatically appended to ``path`` if it is missing.
 
 .. |virtual| replace:: :abbr:`virtual (This method should typically be overridden by the user to have any effect.)`
 .. |const| replace:: :abbr:`const (This method has no side effects. It doesn't modify any of the instance's member variables.)`

+ 1 - 1
classes/class_backbuffercopy.rst

@@ -18,7 +18,7 @@ Description
 
 Node for back-buffering the currently-displayed screen. The region defined in the BackBufferCopy node is buffered with the content of the screen it covers, or the entire screen according to the copy mode set. Use the ``texture(SCREEN_TEXTURE, ...)`` function in your shader scripts to access the buffer.
 
-**Note:** Since this node inherits from :ref:`Node2D<class_Node2D>` (and not :ref:`Control<class_Control>`), anchors and margins won't apply to child :ref:`Control<class_Control>`-derived nodes. This can be problematic when resizing the window. To avoid this, add :ref:`Control<class_Control>`-derived nodes as *siblings* to the BackBufferCopy node instead of adding them as children.
+\ **Note:** Since this node inherits from :ref:`Node2D<class_Node2D>` (and not :ref:`Control<class_Control>`), anchors and margins won't apply to child :ref:`Control<class_Control>`-derived nodes. This can be problematic when resizing the window. To avoid this, add :ref:`Control<class_Control>`-derived nodes as *siblings* to the BackBufferCopy node instead of adding them as children.
 
 Properties
 ----------

+ 8 - 6
classes/class_bakedlightmap.rst

@@ -18,9 +18,9 @@ Description
 
 Baked lightmaps are an alternative workflow for adding indirect (or baked) lighting to a scene. Unlike the :ref:`GIProbe<class_GIProbe>` approach, baked lightmaps work fine on low-end PCs and mobile devices as they consume almost no resources in run-time.
 
-**Procedural generation:** Lightmap baking functionality is only available in the editor. This means ``BakedLightmap`` is not suited to procedurally generated or user-built levels. For procedurally generated or user-built levels, use :ref:`GIProbe<class_GIProbe>` instead.
+\ **Procedural generation:** Lightmap baking functionality is only available in the editor. This means ``BakedLightmap`` is not suited to procedurally generated or user-built levels. For procedurally generated or user-built levels, use :ref:`GIProbe<class_GIProbe>` instead.
 
-**Note:** Due to how lightmaps work, most properties only have a visible effect once lightmaps are baked again.
+\ **Note:** Due to how lightmaps work, most properties only have a visible effect once lightmaps are baked again.
 
 Tutorials
 ---------
@@ -187,7 +187,9 @@ Property Descriptions
 | *Getter*  | is_generate_atlas_enabled() |
 +-----------+-----------------------------+
 
-When enabled, the lightmapper will merge the textures for all meshes into a single large layered texture. Not supported in GLES2.
+If ``true``, the lightmapper will merge the textures for all meshes into one or several large layered textures. If ``false``, every mesh will get its own lightmap texture, which is less efficient.
+
+\ **Note:** Atlas lightmap rendering is only supported in GLES3, *not* GLES2. Non-atlas lightmap rendering is supported by both GLES3 and GLES2. If :ref:`ProjectSettings.rendering/quality/driver/fallback_to_gles2<class_ProjectSettings_property_rendering/quality/driver/fallback_to_gles2>` is ``true``, consider baking lightmaps with :ref:`atlas_generate<class_BakedLightmap_property_atlas_generate>` set to ``false`` so that the resulting lightmap is visible in both GLES3 and GLES2.
 
 ----
 
@@ -237,7 +239,7 @@ Raycasting bias used during baking to avoid floating point precision issues.
 
 The energy multiplier for each bounce. Higher values will make indirect lighting brighter. A value of ``1.0`` represents physically accurate behavior, but higher values can be used to make indirect lighting propagate more visibly when using a low number of bounces. This can be used to speed up bake times by lowering the number of :ref:`bounces<class_BakedLightmap_property_bounces>` then increasing :ref:`bounce_indirect_energy<class_BakedLightmap_property_bounce_indirect_energy>`. Unlike :ref:`BakedLightmapData.energy<class_BakedLightmapData_property_energy>`, this property does not affect direct lighting emitted by light nodes, emissive materials and the environment.
 
-**Note:** :ref:`bounce_indirect_energy<class_BakedLightmap_property_bounce_indirect_energy>` only has an effect if :ref:`bounces<class_BakedLightmap_property_bounces>` is set to a value greater than or equal to ``1``.
+\ **Note:** :ref:`bounce_indirect_energy<class_BakedLightmap_property_bounce_indirect_energy>` only has an effect if :ref:`bounces<class_BakedLightmap_property_bounces>` is set to a value greater than or equal to ``1``.
 
 ----
 
@@ -481,7 +483,7 @@ The calculated light data.
 | *Getter*  | get_bake_quality()      |
 +-----------+-------------------------+
 
-Determines the amount of samples per texel used in indrect light baking. The amount of samples for each quality level can be configured in the project settings.
+Determines the amount of samples per texel used in indirect light baking. The amount of samples for each quality level can be configured in the project settings.
 
 ----
 
@@ -531,7 +533,7 @@ When enabled, a lightmap denoiser will be used to reduce the noise inherent to M
 
 If ``true``, stores the lightmap textures in a high dynamic range format (EXR). If ``false``, stores the lightmap texture in a low dynamic range PNG image. This can be set to ``false`` to reduce disk usage, but light values over 1.0 will be clamped and you may see banding caused by the reduced precision.
 
-**Note:** Setting :ref:`use_hdr<class_BakedLightmap_property_use_hdr>` to ``true`` will decrease lightmap banding even when using the GLES2 backend or if :ref:`ProjectSettings.rendering/quality/depth/hdr<class_ProjectSettings_property_rendering/quality/depth/hdr>` is ``false``.
+\ **Note:** Setting :ref:`use_hdr<class_BakedLightmap_property_use_hdr>` to ``true`` will decrease lightmap banding even when using the GLES2 backend or if :ref:`ProjectSettings.rendering/quality/depth/hdr<class_ProjectSettings_property_rendering/quality/depth/hdr>` is ``false``.
 
 Method Descriptions
 -------------------

+ 26 - 26
classes/class_basebutton.rst

@@ -23,29 +23,29 @@ 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:`int<class_int>`                         | :ref:`button_mask<class_BaseButton_property_button_mask>`                   | ``1``                     |
-+-----------------------------------------------+-----------------------------------------------------------------------------+---------------------------+
-| :ref:`bool<class_bool>`                       | :ref:`disabled<class_BaseButton_property_disabled>`                         | ``false``                 |
-+-----------------------------------------------+-----------------------------------------------------------------------------+---------------------------+
-| :ref:`FocusMode<enum_Control_FocusMode>`      | :ref:`enabled_focus_mode<class_BaseButton_property_enabled_focus_mode>`     | ``2``                     |
-+-----------------------------------------------+-----------------------------------------------------------------------------+---------------------------+
-| :ref:`FocusMode<enum_Control_FocusMode>`      | focus_mode                                                                  | ``2`` *(parent override)* |
-+-----------------------------------------------+-----------------------------------------------------------------------------+---------------------------+
-| :ref:`ButtonGroup<class_ButtonGroup>`         | :ref:`group<class_BaseButton_property_group>`                               |                           |
-+-----------------------------------------------+-----------------------------------------------------------------------------+---------------------------+
-| :ref:`bool<class_bool>`                       | :ref:`keep_pressed_outside<class_BaseButton_property_keep_pressed_outside>` | ``false``                 |
-+-----------------------------------------------+-----------------------------------------------------------------------------+---------------------------+
-| :ref:`bool<class_bool>`                       | :ref:`pressed<class_BaseButton_property_pressed>`                           | ``false``                 |
-+-----------------------------------------------+-----------------------------------------------------------------------------+---------------------------+
-| :ref:`ShortCut<class_ShortCut>`               | :ref:`shortcut<class_BaseButton_property_shortcut>`                         |                           |
-+-----------------------------------------------+-----------------------------------------------------------------------------+---------------------------+
-| :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>`                   | ``1``                                                               |
++-----------------------------------------------+-----------------------------------------------------------------------------+---------------------------------------------------------------------+
+| :ref:`int<class_int>`                         | :ref:`button_mask<class_BaseButton_property_button_mask>`                   | ``1``                                                               |
++-----------------------------------------------+-----------------------------------------------------------------------------+---------------------------------------------------------------------+
+| :ref:`bool<class_bool>`                       | :ref:`disabled<class_BaseButton_property_disabled>`                         | ``false``                                                           |
++-----------------------------------------------+-----------------------------------------------------------------------------+---------------------------------------------------------------------+
+| :ref:`FocusMode<enum_Control_FocusMode>`      | :ref:`enabled_focus_mode<class_BaseButton_property_enabled_focus_mode>`     | ``2``                                                               |
++-----------------------------------------------+-----------------------------------------------------------------------------+---------------------------------------------------------------------+
+| :ref:`FocusMode<enum_Control_FocusMode>`      | focus_mode                                                                  | ``2`` (overrides :ref:`Control<class_Control_property_focus_mode>`) |
++-----------------------------------------------+-----------------------------------------------------------------------------+---------------------------------------------------------------------+
+| :ref:`ButtonGroup<class_ButtonGroup>`         | :ref:`group<class_BaseButton_property_group>`                               |                                                                     |
++-----------------------------------------------+-----------------------------------------------------------------------------+---------------------------------------------------------------------+
+| :ref:`bool<class_bool>`                       | :ref:`keep_pressed_outside<class_BaseButton_property_keep_pressed_outside>` | ``false``                                                           |
++-----------------------------------------------+-----------------------------------------------------------------------------+---------------------------------------------------------------------+
+| :ref:`bool<class_bool>`                       | :ref:`pressed<class_BaseButton_property_pressed>`                           | ``false``                                                           |
++-----------------------------------------------+-----------------------------------------------------------------------------+---------------------------------------------------------------------+
+| :ref:`ShortCut<class_ShortCut>`               | :ref:`shortcut<class_BaseButton_property_shortcut>`                         |                                                                     |
++-----------------------------------------------+-----------------------------------------------------------------------------+---------------------------------------------------------------------+
+| :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``                                                           |
++-----------------------------------------------+-----------------------------------------------------------------------------+---------------------------------------------------------------------+
 
 Methods
 -------
@@ -235,7 +235,7 @@ If ``true``, the button is in disabled state and can't be clicked or toggled.
 
 If ``true``, the button stays pressed when moving the cursor outside the button while pressing it.
 
-**Note:** This property only affects the button's visual appearance. Signals will be emitted at the same moment regardless of this property's value.
+\ **Note:** This property only affects the button's visual appearance. Signals will be emitted at the same moment regardless of this property's value.
 
 ----
 
@@ -253,7 +253,7 @@ If ``true``, the button stays pressed when moving the cursor outside the button
 
 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``.
 
-**Note:** Setting :ref:`pressed<class_BaseButton_property_pressed>` will result in :ref:`toggled<class_BaseButton_signal_toggled>` to be emitted. If you want to change the pressed state without emitting that signal, use :ref:`set_pressed_no_signal<class_BaseButton_method_set_pressed_no_signal>`.
+\ **Note:** Setting :ref:`pressed<class_BaseButton_property_pressed>` will result in :ref:`toggled<class_BaseButton_signal_toggled>` to be emitted. If you want to change the pressed state without emitting that signal, use :ref:`set_pressed_no_signal<class_BaseButton_method_set_pressed_no_signal>`.
 
 ----
 
@@ -342,7 +342,7 @@ Returns ``true`` if the mouse has entered the button and has not left it yet.
 
 Changes the :ref:`pressed<class_BaseButton_property_pressed>` state of the button, without emitting :ref:`toggled<class_BaseButton_signal_toggled>`. Use when you just want to change the state of the button without sending the pressed event (e.g. when initializing scene). Only works if :ref:`toggle_mode<class_BaseButton_property_toggle_mode>` is ``true``.
 
-**Note:** This method doesn't unpress other buttons in its button :ref:`group<class_BaseButton_property_group>`.
+\ **Note:** This method doesn't unpress other buttons in its button :ref:`group<class_BaseButton_property_group>`.
 
 .. |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 - 5
classes/class_basis.rst

@@ -25,11 +25,11 @@ For more information, read the "Matrices and transforms" documentation article.
 Tutorials
 ---------
 
-- :doc:`../tutorials/math/index`
+- :doc:`Math tutorial index <../tutorials/math/index>`
 
-- :doc:`../tutorials/math/matrices_and_transforms`
+- :doc:`Matrices and transforms <../tutorials/math/matrices_and_transforms>`
 
-- :doc:`../tutorials/3d/using_transforms`
+- :doc:`Using 3D transforms <../tutorials/3d/using_transforms>`
 
 - `Matrix Transform Demo <https://godotengine.org/asset-library/asset/584>`__
 
@@ -244,7 +244,7 @@ Returns the inverse of the matrix.
 
 Returns ``true`` if this basis and ``b`` are approximately equal, by calling ``is_equal_approx`` on each component.
 
-**Note:** For complicated reasons, the epsilon argument is always discarded. Don't use the epsilon argument, it does nothing.
+\ **Note:** For complicated reasons, the epsilon argument is always discarded. Don't use the epsilon argument, it does nothing.
 
 ----
 
@@ -326,7 +326,7 @@ Returns a vector transformed (multiplied) by the matrix.
 
 Returns a vector transformed (multiplied) by the transposed basis matrix.
 
-**Note:** This results in a multiplication by the inverse of the matrix only if it represents a rotation-reflection.
+\ **Note:** This results in a multiplication by the inverse of the matrix only if it represents a rotation-reflection.
 
 .. |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.)`

+ 20 - 0
classes/class_bitmap.rst

@@ -21,6 +21,8 @@ A two-dimensional array of boolean values, can be used to efficiently store a bi
 Methods
 -------
 
++-------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`Image<class_Image>`     | :ref:`convert_to_image<class_BitMap_method_convert_to_image>` **(** **)** |const|                                                                                |
 +-------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------+
 | void                          | :ref:`create<class_BitMap_method_create>` **(** :ref:`Vector2<class_Vector2>` size **)**                                                                         |
 +-------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------+
@@ -36,6 +38,8 @@ Methods
 +-------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------+
 | :ref:`Array<class_Array>`     | :ref:`opaque_to_polygons<class_BitMap_method_opaque_to_polygons>` **(** :ref:`Rect2<class_Rect2>` rect, :ref:`float<class_float>` epsilon=2.0 **)** |const|      |
 +-------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| void                          | :ref:`resize<class_BitMap_method_resize>` **(** :ref:`Vector2<class_Vector2>` new_size **)**                                                                     |
++-------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------+
 | void                          | :ref:`set_bit<class_BitMap_method_set_bit>` **(** :ref:`Vector2<class_Vector2>` position, :ref:`bool<class_bool>` bit **)**                                      |
 +-------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------+
 | void                          | :ref:`set_bit_rect<class_BitMap_method_set_bit_rect>` **(** :ref:`Rect2<class_Rect2>` rect, :ref:`bool<class_bool>` bit **)**                                    |
@@ -44,6 +48,14 @@ Methods
 Method Descriptions
 -------------------
 
+.. _class_BitMap_method_convert_to_image:
+
+- :ref:`Image<class_Image>` **convert_to_image** **(** **)** |const|
+
+Returns an image of the same size as the bitmap and with a :ref:`Format<enum_Image_Format>` of type ``FORMAT_L8``. ``true`` bits of the bitmap are being converted into white pixels, and ``false`` bits into black.
+
+----
+
 .. _class_BitMap_method_create:
 
 - void **create** **(** :ref:`Vector2<class_Vector2>` size **)**
@@ -98,6 +110,14 @@ Applies morphological dilation or erosion to the bitmap. If ``pixels`` is positi
 
 ----
 
+.. _class_BitMap_method_resize:
+
+- void **resize** **(** :ref:`Vector2<class_Vector2>` new_size **)**
+
+Resizes the image to ``new_size``.
+
+----
+
 .. _class_BitMap_method_set_bit:
 
 - void **set_bit** **(** :ref:`Vector2<class_Vector2>` position, :ref:`bool<class_bool>` bit **)**

+ 1 - 1
classes/class_bool.rst

@@ -28,7 +28,7 @@ Booleans can be directly used in ``if`` statements. The code below demonstrates
 
 The following code will only create a bullet if both conditions are met: action "shoot" is pressed and if ``can_shoot`` is ``true``.
 
-**Note:** ``Input.is_action_pressed("shoot")`` is also a boolean that is ``true`` when "shoot" is pressed and ``false`` when "shoot" isn't pressed.
+\ **Note:** ``Input.is_action_pressed("shoot")`` is also a boolean that is ``true`` when "shoot" is pressed and ``false`` when "shoot" isn't pressed.
 
 ::
 

+ 5 - 5
classes/class_boxcontainer.rst

@@ -23,11 +23,11 @@ Arranges child controls vertically or horizontally, and rearranges the controls
 Properties
 ----------
 
-+-----------------------------------------------+---------------------------------------------------------+---------------------------+
-| :ref:`AlignMode<enum_BoxContainer_AlignMode>` | :ref:`alignment<class_BoxContainer_property_alignment>` | ``0``                     |
-+-----------------------------------------------+---------------------------------------------------------+---------------------------+
-| :ref:`MouseFilter<enum_Control_MouseFilter>`  | mouse_filter                                            | ``1`` *(parent override)* |
-+-----------------------------------------------+---------------------------------------------------------+---------------------------+
++-----------------------------------------------+---------------------------------------------------------+-----------------------------------------------------------------------+
+| :ref:`AlignMode<enum_BoxContainer_AlignMode>` | :ref:`alignment<class_BoxContainer_property_alignment>` | ``0``                                                                 |
++-----------------------------------------------+---------------------------------------------------------+-----------------------------------------------------------------------+
+| :ref:`MouseFilter<enum_Control_MouseFilter>`  | mouse_filter                                            | ``1`` (overrides :ref:`Control<class_Control_property_mouse_filter>`) |
++-----------------------------------------------+---------------------------------------------------------+-----------------------------------------------------------------------+
 
 Methods
 -------

+ 20 - 2
classes/class_button.rst

@@ -20,7 +20,7 @@ Description
 
 Button is the standard themed button. It can contain text and an icon, and will display them according to the current :ref:`Theme<class_Theme>`.
 
-**Example of creating a button and assigning an action when pressed by code:**
+\ **Example of creating a button and assigning an action when pressed by code:**\ 
 
 ::
 
@@ -37,7 +37,7 @@ Buttons (like all Control nodes) can also be created in the editor, but some sit
 
 See also :ref:`BaseButton<class_BaseButton>` which contains common properties and methods associated with this node.
 
-**Note:** Buttons do not interpret touch input and therefore don't support multitouch, since mouse emulation can only press one button at a given time. Use :ref:`TouchScreenButton<class_TouchScreenButton>` for buttons that trigger gameplay movement or actions, as :ref:`TouchScreenButton<class_TouchScreenButton>` supports multitouch.
+\ **Note:** Buttons do not interpret touch input and therefore don't support multitouch, since mouse emulation can only press one button at a given time. Use :ref:`TouchScreenButton<class_TouchScreenButton>` for buttons that trigger gameplay movement or actions, as :ref:`TouchScreenButton<class_TouchScreenButton>` supports multitouch.
 
 Tutorials
 ---------
@@ -60,6 +60,8 @@ Properties
 +-----------------------------------------+-------------------------------------------------------+-----------+
 | :ref:`Texture<class_Texture>`           | :ref:`icon<class_Button_property_icon>`               |           |
 +-----------------------------------------+-------------------------------------------------------+-----------+
+| :ref:`TextAlign<enum_Button_TextAlign>` | :ref:`icon_align<class_Button_property_icon_align>`   | ``0``     |
++-----------------------------------------+-------------------------------------------------------+-----------+
 | :ref:`String<class_String>`             | :ref:`text<class_Button_property_text>`               | ``""``    |
 +-----------------------------------------+-------------------------------------------------------+-----------+
 
@@ -194,6 +196,22 @@ To edit margin and spacing of the icon, use ``hseparation`` theme property of ``
 
 ----
 
+.. _class_Button_property_icon_align:
+
+- :ref:`TextAlign<enum_Button_TextAlign>` **icon_align**
+
++-----------+-----------------------+
+| *Default* | ``0``                 |
++-----------+-----------------------+
+| *Setter*  | set_icon_align(value) |
++-----------+-----------------------+
+| *Getter*  | get_icon_align()      |
++-----------+-----------------------+
+
+Specifies if the icon should be aligned to the left, right, or center of a button. Uses the same :ref:`TextAlign<enum_Button_TextAlign>` constants as the text alignment. If centered, text will draw on top of the icon.
+
+----
+
 .. _class_Button_property_text:
 
 - :ref:`String<class_String>` **text**

+ 4 - 4
classes/class_buttongroup.rst

@@ -18,14 +18,14 @@ Description
 
 Group of :ref:`Button<class_Button>`. All direct and indirect children buttons become radios. Only one allows being pressed.
 
-:ref:`BaseButton.toggle_mode<class_BaseButton_property_toggle_mode>` should be ``true``.
+\ :ref:`BaseButton.toggle_mode<class_BaseButton_property_toggle_mode>` should be ``true``.
 
 Properties
 ----------
 
-+-------------------------+-------------------------+------------------------------+
-| :ref:`bool<class_bool>` | resource_local_to_scene | ``true`` *(parent override)* |
-+-------------------------+-------------------------+------------------------------+
++-------------------------+-------------------------+---------------------------------------------------------------------------------------+
+| :ref:`bool<class_bool>` | resource_local_to_scene | ``true`` (overrides :ref:`Resource<class_Resource_property_resource_local_to_scene>`) |
++-------------------------+-------------------------+---------------------------------------------------------------------------------------+
 
 Methods
 -------

+ 46 - 0
classes/class_callbacktweener.rst

@@ -0,0 +1,46 @@
+:github_url: hide
+
+.. Generated automatically by doc/tools/make_rst.py in Godot's source tree.
+.. DO NOT EDIT THIS FILE, but the CallbackTweener.xml source instead.
+.. The source is found in doc/classes or modules/<name>/doc_classes.
+
+.. _class_CallbackTweener:
+
+CallbackTweener
+===============
+
+**Inherits:** :ref:`Tweener<class_Tweener>` **<** :ref:`Reference<class_Reference>` **<** :ref:`Object<class_Object>`
+
+Calls the specified method after optional delay.
+
+Description
+-----------
+
+``CallbackTweener`` is used to call a method in a tweening sequence. See :ref:`SceneTreeTween.tween_callback<class_SceneTreeTween_method_tween_callback>` for more usage information.
+
+\ **Note:** :ref:`SceneTreeTween.tween_callback<class_SceneTreeTween_method_tween_callback>` is the only correct way to create ``CallbackTweener``. Any ``CallbackTweener`` created manually will not function correctly.
+
+Methods
+-------
+
++-----------------------------------------------+------------------------------------------------------------------------------------------------------+
+| :ref:`CallbackTweener<class_CallbackTweener>` | :ref:`set_delay<class_CallbackTweener_method_set_delay>` **(** :ref:`float<class_float>` delay **)** |
++-----------------------------------------------+------------------------------------------------------------------------------------------------------+
+
+Method Descriptions
+-------------------
+
+.. _class_CallbackTweener_method_set_delay:
+
+- :ref:`CallbackTweener<class_CallbackTweener>` **set_delay** **(** :ref:`float<class_float>` delay **)**
+
+Makes the callback call delayed by given time in seconds. Example:
+
+::
+
+    var tween = get_tree().create_tween()
+    tween.tween_callback(queue_free).set_delay(2) #this will call queue_free() after 2 seconds
+
+.. |virtual| replace:: :abbr:`virtual (This method should typically be overridden by the user to have any effect.)`
+.. |const| replace:: :abbr:`const (This method has no side effects. It doesn't modify any of the instance's member variables.)`
+.. |vararg| replace:: :abbr:`vararg (This method accepts any number of arguments after the ones described here.)`

+ 6 - 6
classes/class_camera.rst

@@ -140,9 +140,9 @@ enum **DopplerTracking**:
 
 - **DOPPLER_TRACKING_DISABLED** = **0** --- Disables `Doppler effect <https://en.wikipedia.org/wiki/Doppler_effect>`__ simulation (default).
 
-- **DOPPLER_TRACKING_IDLE_STEP** = **1** --- Simulate `Doppler effect <https://en.wikipedia.org/wiki/Doppler_effect>`__ by tracking positions of objects that are changed in ``_process``. Changes in the relative velocity of this camera compared to those objects affect how Audio is perceived (changing the Audio's ``pitch shift``).
+- **DOPPLER_TRACKING_IDLE_STEP** = **1** --- Simulate `Doppler effect <https://en.wikipedia.org/wiki/Doppler_effect>`__ by tracking positions of objects that are changed in ``_process``. Changes in the relative velocity of this camera compared to those objects affect how audio is perceived (changing the audio's :ref:`AudioStreamPlayer3D.pitch_scale<class_AudioStreamPlayer3D_property_pitch_scale>`).
 
-- **DOPPLER_TRACKING_PHYSICS_STEP** = **2** --- Simulate `Doppler effect <https://en.wikipedia.org/wiki/Doppler_effect>`__ by tracking positions of objects that are changed in ``_physics_process``. Changes in the relative velocity of this camera compared to those objects affect how Audio is perceived (changing the Audio's ``pitch shift``).
+- **DOPPLER_TRACKING_PHYSICS_STEP** = **2** --- Simulate `Doppler effect <https://en.wikipedia.org/wiki/Doppler_effect>`__ by tracking positions of objects that are changed in ``_physics_process``. Changes in the relative velocity of this camera compared to those objects affect how audio is perceived (changing the audio's :ref:`AudioStreamPlayer3D.pitch_scale<class_AudioStreamPlayer3D_property_pitch_scale>`).
 
 Property Descriptions
 ---------------------
@@ -193,7 +193,7 @@ If ``true``, the ancestor :ref:`Viewport<class_Viewport>` is currently using thi
 
 If not :ref:`DOPPLER_TRACKING_DISABLED<class_Camera_constant_DOPPLER_TRACKING_DISABLED>`, this camera will simulate the `Doppler effect <https://en.wikipedia.org/wiki/Doppler_effect>`__ for objects changed in particular ``_process`` methods. The Doppler effect is only simulated for :ref:`AudioStreamPlayer3D<class_AudioStreamPlayer3D>` nodes that have :ref:`AudioStreamPlayer3D.doppler_tracking<class_AudioStreamPlayer3D_property_doppler_tracking>` set to a value other than :ref:`AudioStreamPlayer3D.DOPPLER_TRACKING_DISABLED<class_AudioStreamPlayer3D_constant_DOPPLER_TRACKING_DISABLED>`.
 
-**Note:** To toggle the Doppler effect preview in the editor, use the Perspective menu in the top-left corner of the 3D viewport and toggle **Enable Doppler**.
+\ **Note:** To toggle the Doppler effect preview in the editor, use the Perspective menu in the top-left corner of the 3D viewport and toggle **Enable Doppler**.
 
 ----
 
@@ -345,7 +345,7 @@ The camera's projection mode. In :ref:`PROJECTION_PERSPECTIVE<class_Camera_const
 | *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_Camera_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_Camera_property_keep_aspect>` locks on axis, ``size`` sets the other axis' size length.
 
 ----
 
@@ -412,7 +412,7 @@ Returns the camera's frustum planes in world space units as an array of :ref:`Pl
 
 Returns ``true`` if the given position is behind the camera.
 
-**Note:** A position which returns ``false`` may still be outside the camera's field of view.
+\ **Note:** A position which returns ``false`` may still be outside the camera's field of view.
 
 ----
 
@@ -494,7 +494,7 @@ Sets the camera projection to perspective mode (see :ref:`PROJECTION_PERSPECTIVE
 
 Returns the 2D coordinate in the :ref:`Viewport<class_Viewport>` rectangle that maps to the given 3D point in world space.
 
-**Note:** When using this to position GUI elements over a 3D viewport, use :ref:`is_position_behind<class_Camera_method_is_position_behind>` to prevent them from appearing if the 3D point is behind the camera:
+\ **Note:** When using this to position GUI elements over a 3D viewport, use :ref:`is_position_behind<class_Camera_method_is_position_behind>` to prevent them from appearing if the 3D point is behind the camera:
 
 ::
 

+ 11 - 7
classes/class_camera2d.rst

@@ -395,9 +395,9 @@ Right scroll limit in pixels. The camera stops moving when reaching this value.
 
 If ``true``, the camera smoothly stops when reaches its limits.
 
-This has no effect if smoothing is disabled.
+This property has no effect if :ref:`smoothing_enabled<class_Camera2D_property_smoothing_enabled>` is ``false``.
 
-**Note:** To immediately update the camera's position to be within limits without smoothing, even with this setting enabled, invoke :ref:`reset_smoothing<class_Camera2D_method_reset_smoothing>`.
+\ **Note:** To immediately update the camera's position to be within limits without smoothing, even with this setting enabled, invoke :ref:`reset_smoothing<class_Camera2D_method_reset_smoothing>`.
 
 ----
 
@@ -447,7 +447,7 @@ The camera's offset, useful for looking around or camera shake animations.
 
 The horizontal offset of the camera, relative to the drag margins.
 
-**Note:** Offset H is used only to force offset relative to margins. It's not updated in any way if drag margins are enabled and can be used to set initial offset.
+\ **Note:** Offset H is used only to force offset relative to margins. It's not updated in any way if drag margins are enabled and can be used to set initial offset.
 
 ----
 
@@ -465,7 +465,7 @@ The horizontal offset of the camera, relative to the drag margins.
 
 The vertical offset of the camera, relative to the drag margins.
 
-**Note:** Used the same as :ref:`offset_h<class_Camera2D_property_offset_h>`.
+\ **Note:** Used the same as :ref:`offset_h<class_Camera2D_property_offset_h>`.
 
 ----
 
@@ -497,7 +497,7 @@ The camera's process callback. See :ref:`Camera2DProcessMode<enum_Camera2D_Camer
 | *Getter*  | is_rotating()       |
 +-----------+---------------------+
 
-If ``true``, the camera rotates with the target.
+If ``true``, the camera view rotates with the target.
 
 ----
 
@@ -578,7 +578,9 @@ Forces the camera to update scroll immediately.
 
 - :ref:`Vector2<class_Vector2>` **get_camera_position** **(** **)** |const|
 
-Returns the camera position.
+Returns the camera's ``position`` (the tracked point the camera attempts to follow), relative to the origin.
+
+\ **Note:** The returned value is not the same as :ref:`Node2D.position<class_Node2D_property_position>` or :ref:`Node2D.global_position<class_Node2D_property_global_position>`, as it is affected by the ``drag`` properties.
 
 ----
 
@@ -588,6 +590,8 @@ Returns the camera position.
 
 Returns the location of the ``Camera2D``'s screen-center, relative to the origin.
 
+\ **Note:** The real ``position`` of the camera may be different, see :ref:`get_camera_position<class_Camera2D_method_get_camera_position>`.
+
 ----
 
 .. _class_Camera2D_method_get_drag_margin:
@@ -620,7 +624,7 @@ Make this the current 2D camera for the scene (viewport and layer), in case ther
 
 Sets the camera's position immediately to its current smoothing destination.
 
-This has no effect if smoothing is disabled.
+This method has no effect if :ref:`smoothing_enabled<class_Camera2D_property_smoothing_enabled>` is ``false``.
 
 ----
 

+ 1 - 1
classes/class_camerafeed.rst

@@ -18,7 +18,7 @@ Description
 
 A camera feed gives you access to a single physical camera attached to your device. When enabled, Godot will start capturing frames from the camera which can then be used. See also :ref:`CameraServer<class_CameraServer>`.
 
-**Note:** Many cameras will return YCbCr images which are split into two textures and need to be combined in a shader. Godot does this automatically for you if you set the environment to show the camera image in the background.
+\ **Note:** Many cameras will return YCbCr images which are split into two textures and need to be combined in a shader. Godot does this automatically for you if you set the environment to show the camera image in the background.
 
 Properties
 ----------

+ 1 - 1
classes/class_cameraserver.rst

@@ -20,7 +20,7 @@ The ``CameraServer`` keeps track of different cameras accessible in Godot. These
 
 It is notably used to provide AR modules with a video feed from the camera.
 
-**Note:** This class is currently only implemented on macOS and iOS. On other platforms, no :ref:`CameraFeed<class_CameraFeed>`\ s will be available.
+\ **Note:** This class is currently only implemented on macOS and iOS. On other platforms, no :ref:`CameraFeed<class_CameraFeed>`\ s will be available.
 
 Methods
 -------

+ 10 - 10
classes/class_cameratexture.rst

@@ -18,20 +18,20 @@ Description
 
 This texture gives access to the camera texture provided by a :ref:`CameraFeed<class_CameraFeed>`.
 
-**Note:** Many cameras supply YCbCr images which need to be converted in a shader.
+\ **Note:** Many cameras supply YCbCr images which need to be converted in a shader.
 
 Properties
 ----------
 
-+-----------------------------------------------+------------------------------------------------------------------------+---------------------------+
-| :ref:`int<class_int>`                         | :ref:`camera_feed_id<class_CameraTexture_property_camera_feed_id>`     | ``0``                     |
-+-----------------------------------------------+------------------------------------------------------------------------+---------------------------+
-| :ref:`bool<class_bool>`                       | :ref:`camera_is_active<class_CameraTexture_property_camera_is_active>` | ``false``                 |
-+-----------------------------------------------+------------------------------------------------------------------------+---------------------------+
-| :ref:`int<class_int>`                         | flags                                                                  | ``0`` *(parent override)* |
-+-----------------------------------------------+------------------------------------------------------------------------+---------------------------+
-| :ref:`FeedImage<enum_CameraServer_FeedImage>` | :ref:`which_feed<class_CameraTexture_property_which_feed>`             | ``0``                     |
-+-----------------------------------------------+------------------------------------------------------------------------+---------------------------+
++-----------------------------------------------+------------------------------------------------------------------------+----------------------------------------------------------------+
+| :ref:`int<class_int>`                         | :ref:`camera_feed_id<class_CameraTexture_property_camera_feed_id>`     | ``0``                                                          |
++-----------------------------------------------+------------------------------------------------------------------------+----------------------------------------------------------------+
+| :ref:`bool<class_bool>`                       | :ref:`camera_is_active<class_CameraTexture_property_camera_is_active>` | ``false``                                                      |
++-----------------------------------------------+------------------------------------------------------------------------+----------------------------------------------------------------+
+| :ref:`int<class_int>`                         | flags                                                                  | ``0`` (overrides :ref:`Texture<class_Texture_property_flags>`) |
++-----------------------------------------------+------------------------------------------------------------------------+----------------------------------------------------------------+
+| :ref:`FeedImage<enum_CameraServer_FeedImage>` | :ref:`which_feed<class_CameraTexture_property_which_feed>`             | ``0``                                                          |
++-----------------------------------------------+------------------------------------------------------------------------+----------------------------------------------------------------+
 
 Property Descriptions
 ---------------------

+ 17 - 13
classes/class_canvasitem.rst

@@ -28,14 +28,14 @@ A ``CanvasItem`` can also be hidden, which will also hide its children. It provi
 
 Ultimately, a transform notification can be requested, which will notify the node that its global position changed in case the parent tree changed.
 
-**Note:** Unless otherwise specified, all methods that have angle parameters must have angles specified as *radians*. To convert degrees to radians, use :ref:`@GDScript.deg2rad<class_@GDScript_method_deg2rad>`.
+\ **Note:** Unless otherwise specified, all methods that have angle parameters must have angles specified as *radians*. To convert degrees to radians, use :ref:`@GDScript.deg2rad<class_@GDScript_method_deg2rad>`.
 
 Tutorials
 ---------
 
-- :doc:`../tutorials/2d/2d_transforms`
+- :doc:`Viewport and canvas transforms <../tutorials/2d/2d_transforms>`
 
-- :doc:`../tutorials/2d/custom_drawing_in_2d`
+- :doc:`Custom drawing in 2D <../tutorials/2d/custom_drawing_in_2d>`
 
 - `Audio Spectrum Demo <https://godotengine.org/asset-library/asset/528>`__
 
@@ -226,6 +226,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:
@@ -234,7 +236,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.
 
@@ -363,7 +367,7 @@ If ``true``, the parent ``CanvasItem``'s :ref:`material<class_CanvasItem_propert
 
 If ``true``, this ``CanvasItem`` is drawn. The node is only visible if all of its antecedents are visible as well (in other words, :ref:`is_visible_in_tree<class_CanvasItem_method_is_visible_in_tree>` must return ``true``).
 
-**Note:** For controls that inherit :ref:`Popup<class_Popup>`, the correct way to make them visible is to call one of the multiple ``popup*()`` functions instead.
+\ **Note:** For controls that inherit :ref:`Popup<class_Popup>`, the correct way to make them visible is to call one of the multiple ``popup*()`` functions instead.
 
 Method Descriptions
 -------------------
@@ -430,7 +434,7 @@ Draws a :ref:`Mesh<class_Mesh>` in 2D, using the provided texture. See :ref:`Mes
 
 Draws multiple disconnected lines with a uniform ``color``. When drawing large amounts of lines, this is faster than using individual :ref:`draw_line<class_CanvasItem_method_draw_line>` calls. To draw interconnected lines, use :ref:`draw_polyline<class_CanvasItem_method_draw_polyline>` instead.
 
-**Note:** ``width`` and ``antialiased`` are currently not implemented and have no effect.
+\ **Note:** ``width`` and ``antialiased`` are currently not implemented and have no effect.
 
 ----
 
@@ -440,7 +444,7 @@ Draws multiple disconnected lines with a uniform ``color``. When drawing large a
 
 Draws multiple disconnected lines with a uniform ``width`` and segment-by-segment coloring. Colors assigned to line segments match by index between ``points`` and ``colors``. When drawing large amounts of lines, this is faster than using individual :ref:`draw_line<class_CanvasItem_method_draw_line>` calls. To draw interconnected lines, use :ref:`draw_polyline_colors<class_CanvasItem_method_draw_polyline_colors>` instead.
 
-**Note:** ``width`` and ``antialiased`` are currently not implemented and have no effect.
+\ **Note:** ``width`` and ``antialiased`` are currently not implemented and have no effect.
 
 ----
 
@@ -490,7 +494,7 @@ Draws a custom primitive. 1 point for a point, 2 points for a line, 3 points for
 
 Draws a rectangle. If ``filled`` is ``true``, the rectangle will be filled with the ``color`` specified. If ``filled`` is ``false``, the rectangle will be drawn as a stroke with the ``color`` and ``width`` specified. If ``antialiased`` is ``true``, the lines will be antialiased.
 
-**Note:** ``width`` and ``antialiased`` are only effective if ``filled`` is ``false``.
+\ **Note:** ``width`` and ``antialiased`` are only effective if ``filled`` is ``false``.
 
 ----
 
@@ -516,7 +520,7 @@ Sets a custom transform for drawing via matrix. Anything drawn afterwards will b
 
 Draws ``text`` using the specified ``font`` at the ``position`` (bottom-left corner using the baseline of the font). The text will have its color multiplied by ``modulate``. If ``clip_w`` is greater than or equal to 0, the text will be clipped if it exceeds the specified width.
 
-**Example using the default project font:**
+\ **Example using the default project font:**\ 
 
 ::
 
@@ -598,7 +602,7 @@ Returns the transform matrix of this item's canvas.
 
 - :ref:`Vector2<class_Vector2>` **get_global_mouse_position** **(** **)** |const|
 
-Returns the global position of the mouse.
+Returns the mouse's position in the :ref:`CanvasLayer<class_CanvasLayer>` that this ``CanvasItem`` is in using the coordinate system of the :ref:`CanvasLayer<class_CanvasLayer>`.
 
 ----
 
@@ -622,7 +626,7 @@ Returns the global transform matrix of this item in relation to the canvas.
 
 - :ref:`Vector2<class_Vector2>` **get_local_mouse_position** **(** **)** |const|
 
-Returns the mouse position relative to this item's position.
+Returns the mouse's position in this ``CanvasItem`` using the local coordinate system of this ``CanvasItem``.
 
 ----
 
@@ -726,7 +730,7 @@ If ``enable`` is ``true``, this ``CanvasItem`` will *not* inherit its transform
 
 - 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.
 
 ----
 
@@ -734,7 +738,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.
 
 ----
 

+ 3 - 3
classes/class_canvasitemmaterial.rst

@@ -127,7 +127,7 @@ The manner in which material reacts to lighting.
 
 The number of columns in the spritesheet assigned as :ref:`Texture<class_Texture>` for a :ref:`Particles2D<class_Particles2D>` or :ref:`CPUParticles2D<class_CPUParticles2D>`.
 
-**Note:** This property is only used and visible in the editor if :ref:`particles_animation<class_CanvasItemMaterial_property_particles_animation>` is ``true``.
+\ **Note:** This property is only used and visible in the editor if :ref:`particles_animation<class_CanvasItemMaterial_property_particles_animation>` is ``true``.
 
 ----
 
@@ -143,7 +143,7 @@ The number of columns in the spritesheet assigned as :ref:`Texture<class_Texture
 
 If ``true``, the particles animation will loop.
 
-**Note:** This property is only used and visible in the editor if :ref:`particles_animation<class_CanvasItemMaterial_property_particles_animation>` is ``true``.
+\ **Note:** This property is only used and visible in the editor if :ref:`particles_animation<class_CanvasItemMaterial_property_particles_animation>` is ``true``.
 
 ----
 
@@ -159,7 +159,7 @@ If ``true``, the particles animation will loop.
 
 The number of rows in the spritesheet assigned as :ref:`Texture<class_Texture>` for a :ref:`Particles2D<class_Particles2D>` or :ref:`CPUParticles2D<class_CPUParticles2D>`.
 
-**Note:** This property is only used and visible in the editor if :ref:`particles_animation<class_CanvasItemMaterial_property_particles_animation>` is ``true``.
+\ **Note:** This property is only used and visible in the editor if :ref:`particles_animation<class_CanvasItemMaterial_property_particles_animation>` is ``true``.
 
 ----
 

+ 51 - 2
classes/class_canvaslayer.rst

@@ -23,9 +23,9 @@ Canvas drawing layer. :ref:`CanvasItem<class_CanvasItem>` nodes that are direct
 Tutorials
 ---------
 
-- :doc:`../tutorials/2d/2d_transforms`
+- :doc:`Viewport and canvas transforms <../tutorials/2d/2d_transforms>`
 
-- :doc:`../tutorials/2d/canvas_layers`
+- :doc:`Canvas layers <../tutorials/2d/canvas_layers>`
 
 - `2D Dodge The Creeps Demo <https://godotengine.org/asset-library/asset/515>`__
 
@@ -51,6 +51,8 @@ Properties
 +---------------------------------------+----------------------------------------------------------------------------------+-------------------------------------+
 | :ref:`Transform2D<class_Transform2D>` | :ref:`transform<class_CanvasLayer_property_transform>`                           | ``Transform2D( 1, 0, 0, 1, 0, 0 )`` |
 +---------------------------------------+----------------------------------------------------------------------------------+-------------------------------------+
+| :ref:`bool<class_bool>`               | :ref:`visible<class_CanvasLayer_property_visible>`                               | ``true``                            |
++---------------------------------------+----------------------------------------------------------------------------------+-------------------------------------+
 
 Methods
 -------
@@ -58,6 +60,19 @@ Methods
 +-----------------------+----------------------------------------------------------------------------+
 | :ref:`RID<class_RID>` | :ref:`get_canvas<class_CanvasLayer_method_get_canvas>` **(** **)** |const| |
 +-----------------------+----------------------------------------------------------------------------+
+| void                  | :ref:`hide<class_CanvasLayer_method_hide>` **(** **)**                     |
++-----------------------+----------------------------------------------------------------------------+
+| void                  | :ref:`show<class_CanvasLayer_method_show>` **(** **)**                     |
++-----------------------+----------------------------------------------------------------------------+
+
+Signals
+-------
+
+.. _class_CanvasLayer_signal_visibility_changed:
+
+- **visibility_changed** **(** **)**
+
+Emitted when visibility of the layer is changed. See :ref:`visible<class_CanvasLayer_property_visible>`.
 
 Property Descriptions
 ---------------------
@@ -202,6 +217,24 @@ The layer's scale.
 
 The layer's transform.
 
+----
+
+.. _class_CanvasLayer_property_visible:
+
+- :ref:`bool<class_bool>` **visible**
+
++-----------+--------------------+
+| *Default* | ``true``           |
++-----------+--------------------+
+| *Setter*  | set_visible(value) |
++-----------+--------------------+
+| *Getter*  | is_visible()       |
++-----------+--------------------+
+
+If ``false``, any :ref:`CanvasItem<class_CanvasItem>` under this ``CanvasLayer`` will be hidden.
+
+Unlike :ref:`CanvasItem.visible<class_CanvasItem_property_visible>`, visibility of a ``CanvasLayer`` isn't propagated to underlying layers.
+
 Method Descriptions
 -------------------
 
@@ -211,6 +244,22 @@ Method Descriptions
 
 Returns the RID of the canvas used by this layer.
 
+----
+
+.. _class_CanvasLayer_method_hide:
+
+- void **hide** **(** **)**
+
+Hides any :ref:`CanvasItem<class_CanvasItem>` under this ``CanvasLayer``. This is equivalent to setting :ref:`visible<class_CanvasLayer_property_visible>` to ``false``.
+
+----
+
+.. _class_CanvasLayer_method_show:
+
+- void **show** **(** **)**
+
+Shows any :ref:`CanvasItem<class_CanvasItem>` under this ``CanvasLayer``. This is equivalent to setting :ref:`visible<class_CanvasLayer_property_visible>` to ``true``.
+
 .. |virtual| replace:: :abbr:`virtual (This method should typically be overridden by the user to have any effect.)`
 .. |const| replace:: :abbr:`const (This method has no side effects. It doesn't modify any of the instance's member variables.)`
 .. |vararg| replace:: :abbr:`vararg (This method accepts any number of arguments after the ones described here.)`

+ 1 - 1
classes/class_capsulemesh.rst

@@ -48,7 +48,7 @@ Property Descriptions
 
 Height of the middle cylindrical part of the capsule (without the hemispherical ends).
 
-**Note:** The capsule's total height is equal to :ref:`mid_height<class_CapsuleMesh_property_mid_height>` + 2 \* :ref:`radius<class_CapsuleMesh_property_radius>`.
+\ **Note:** The capsule's total height is equal to :ref:`mid_height<class_CapsuleMesh_property_mid_height>` + 2 \* :ref:`radius<class_CapsuleMesh_property_radius>`.
 
 ----
 

+ 1 - 1
classes/class_charfxtransform.rst

@@ -117,7 +117,7 @@ The color the character will be drawn with.
 
 The time elapsed since the :ref:`RichTextLabel<class_RichTextLabel>` was added to the scene tree (in seconds). Time stops when the :ref:`RichTextLabel<class_RichTextLabel>` is paused (see :ref:`Node.pause_mode<class_Node_property_pause_mode>`). Resets when the text in the :ref:`RichTextLabel<class_RichTextLabel>` is changed.
 
-**Note:** Time still passes while the :ref:`RichTextLabel<class_RichTextLabel>` is hidden.
+\ **Note:** Time still passes while the :ref:`RichTextLabel<class_RichTextLabel>` is hidden.
 
 ----
 

+ 5 - 5
classes/class_checkbox.rst

@@ -23,11 +23,11 @@ See also :ref:`BaseButton<class_BaseButton>` which contains common properties an
 Properties
 ----------
 
-+-----------------------------------------+-------------+------------------------------+
-| :ref:`TextAlign<enum_Button_TextAlign>` | align       | ``0`` *(parent override)*    |
-+-----------------------------------------+-------------+------------------------------+
-| :ref:`bool<class_bool>`                 | toggle_mode | ``true`` *(parent override)* |
-+-----------------------------------------+-------------+------------------------------+
++-----------------------------------------+-------------+-------------------------------------------------------------------------------+
+| :ref:`TextAlign<enum_Button_TextAlign>` | align       | ``0`` (overrides :ref:`Button<class_Button_property_align>`)                  |
++-----------------------------------------+-------------+-------------------------------------------------------------------------------+
+| :ref:`bool<class_bool>`                 | toggle_mode | ``true`` (overrides :ref:`BaseButton<class_BaseButton_property_toggle_mode>`) |
++-----------------------------------------+-------------+-------------------------------------------------------------------------------+
 
 Theme Properties
 ----------------

+ 5 - 5
classes/class_checkbutton.rst

@@ -23,11 +23,11 @@ See also :ref:`BaseButton<class_BaseButton>` which contains common properties an
 Properties
 ----------
 
-+-----------------------------------------+-------------+------------------------------+
-| :ref:`TextAlign<enum_Button_TextAlign>` | align       | ``0`` *(parent override)*    |
-+-----------------------------------------+-------------+------------------------------+
-| :ref:`bool<class_bool>`                 | toggle_mode | ``true`` *(parent override)* |
-+-----------------------------------------+-------------+------------------------------+
++-----------------------------------------+-------------+-------------------------------------------------------------------------------+
+| :ref:`TextAlign<enum_Button_TextAlign>` | align       | ``0`` (overrides :ref:`Button<class_Button_property_align>`)                  |
++-----------------------------------------+-------------+-------------------------------------------------------------------------------+
+| :ref:`bool<class_bool>`                 | toggle_mode | ``true`` (overrides :ref:`BaseButton<class_BaseButton_property_toggle_mode>`) |
++-----------------------------------------+-------------+-------------------------------------------------------------------------------+
 
 Theme Properties
 ----------------

+ 1 - 1
classes/class_classdb.rst

@@ -144,7 +144,7 @@ Returns an array with the names all the integer constants of ``class`` or its an
 
 Returns an array with all the methods of ``class`` or its ancestry if ``no_inheritance`` is ``false``. Every element of the array is a :ref:`Dictionary<class_Dictionary>` with the following keys: ``args``, ``default_args``, ``flags``, ``id``, ``name``, ``return: (class_name, hint, hint_string, name, type, usage)``.
 
-**Note:** In exported release builds the debug info is not available, so the returned dictionaries will contain only method names.
+\ **Note:** In exported release builds the debug info is not available, so the returned dictionaries will contain only method names.
 
 ----
 

+ 3 - 3
classes/class_clippedcamera.rst

@@ -116,7 +116,7 @@ If ``true``, the camera stops on contact with :ref:`PhysicsBody<class_PhysicsBod
 | *Getter*  | get_collision_mask()      |
 +-----------+---------------------------+
 
-The camera's collision mask. Only objects in at least one collision layer matching the mask will be detected. See `Collision layers and masks <https://docs.godotengine.org/en/3.4/tutorials/physics/physics_introduction.html#collision-layers-and-masks>`__ in the documentation for more information.
+The camera's collision mask. Only objects in at least one collision layer matching the mask will be detected. See `Collision layers and masks <../tutorials/physics/physics_introduction.html#collision-layers-and-masks>`__ in the documentation for more information.
 
 ----
 
@@ -191,7 +191,7 @@ Returns the distance the camera has been offset due to a collision.
 
 Returns ``true`` if the specified bit index is on.
 
-**Note:** Bit indices range from 0-19.
+\ **Note:** Bit indices range from 0-19.
 
 ----
 
@@ -217,7 +217,7 @@ Removes a collision exception with the specified :ref:`RID<class_RID>`.
 
 Sets the specified bit index to the ``value``.
 
-**Note:** Bit indices range from 0-19.
+\ **Note:** Bit indices range from 0-19.
 
 .. |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_collisionobject.rst

@@ -122,7 +122,7 @@ Property Descriptions
 
 The physics layers this CollisionObject3D is in. Collision objects can exist in one or more of 32 different layers. See also :ref:`collision_mask<class_CollisionObject_property_collision_mask>`.
 
-**Note:** A contact is detected if object A is in any of the layers that object B scans, or object B is in any layers that object A scans. See `Collision layers and masks <https://docs.godotengine.org/en/latest/tutorials/physics/physics_introduction.html#collision-layers-and-masks>`__ in the documentation for more information.
+\ **Note:** A contact is detected if object A is in any of the layers that object B scans, or object B is in any layers that object A scans. See `Collision layers and masks <../tutorials/physics/physics_introduction.html#collision-layers-and-masks>`__ in the documentation for more information.
 
 ----
 
@@ -140,7 +140,7 @@ The physics layers this CollisionObject3D is in. Collision objects can exist in
 
 The physics layers this CollisionObject3D scans. Collision objects can scan one or more of 32 different layers. See also :ref:`collision_layer<class_CollisionObject_property_collision_layer>`.
 
-**Note:** A contact is detected if object A is in any of the layers that object B scans, or object B is in any layers that object A scans. See `Collision layers and masks <https://docs.godotengine.org/en/latest/tutorials/physics/physics_introduction.html#collision-layers-and-masks>`__ in the documentation for more information.
+\ **Note:** A contact is detected if object A is in any of the layers that object B scans, or object B is in any layers that object A scans. See `Collision layers and masks <../tutorials/physics/physics_introduction.html#collision-layers-and-masks>`__ in the documentation for more information.
 
 ----
 

+ 3 - 3
classes/class_collisionobject2d.rst

@@ -20,7 +20,7 @@ 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.
+\ **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
 ----------
@@ -130,7 +130,7 @@ Property Descriptions
 
 The physics layers this CollisionObject2D is in. Collision objects can exist in one or more of 32 different layers. See also :ref:`collision_mask<class_CollisionObject2D_property_collision_mask>`.
 
-**Note:** A contact is detected if object A is in any of the layers that object B scans, or object B is in any layers that object A scans. See `Collision layers and masks <https://docs.godotengine.org/en/latest/tutorials/physics/physics_introduction.html#collision-layers-and-masks>`__ in the documentation for more information.
+\ **Note:** A contact is detected if object A is in any of the layers that object B scans, or object B is in any layers that object A scans. See `Collision layers and masks <../tutorials/physics/physics_introduction.html#collision-layers-and-masks>`__ in the documentation for more information.
 
 ----
 
@@ -148,7 +148,7 @@ The physics layers this CollisionObject2D is in. Collision objects can exist in
 
 The physics layers this CollisionObject2D scans. Collision objects can scan one or more of 32 different layers. See also :ref:`collision_layer<class_CollisionObject2D_property_collision_layer>`.
 
-**Note:** A contact is detected if object A is in any of the layers that object B scans, or object B is in any layers that object A scans. See `Collision layers and masks <https://docs.godotengine.org/en/latest/tutorials/physics/physics_introduction.html#collision-layers-and-masks>`__ in the documentation for more information.
+\ **Note:** A contact is detected if object A is in any of the layers that object B scans, or object B is in any layers that object A scans. See `Collision layers and masks <../tutorials/physics/physics_introduction.html#collision-layers-and-masks>`__ in the documentation for more information.
 
 ----
 

+ 1 - 1
classes/class_collisionpolygon.rst

@@ -96,7 +96,7 @@ The collision margin for the generated :ref:`Shape<class_Shape>`. See :ref:`Shap
 
 Array of vertices which define the polygon.
 
-**Note:** The returned value is a copy of the original. Methods which mutate the size or properties of the return value will not impact the original polygon. To change properties of the polygon, assign it to a temporary variable and make changes before reassigning the ``polygon`` member.
+\ **Note:** The returned value is a copy of the original. Methods which mutate the size or properties of the return value will not impact the original polygon. To change properties of the polygon, assign it to a temporary variable and make changes before reassigning the ``polygon`` member.
 
 .. |virtual| replace:: :abbr:`virtual (This method should typically be overridden by the user to have any effect.)`
 .. |const| replace:: :abbr:`const (This method has no side effects. It doesn't modify any of the instance's member variables.)`

+ 1 - 1
classes/class_collisionshape.rst

@@ -21,7 +21,7 @@ Editor facility for creating and editing collision shapes in 3D space. You can u
 Tutorials
 ---------
 
-- :doc:`../tutorials/physics/physics_introduction`
+- :doc:`Physics introduction <../tutorials/physics/physics_introduction>`
 
 - `3D Kinematic Character Demo <https://godotengine.org/asset-library/asset/126>`__
 

+ 1 - 1
classes/class_collisionshape2d.rst

@@ -21,7 +21,7 @@ Editor facility for creating and editing collision shapes in 2D space. You can u
 Tutorials
 ---------
 
-- :doc:`../tutorials/physics/physics_introduction`
+- :doc:`Physics introduction <../tutorials/physics/physics_introduction>`
 
 - `2D Dodge The Creeps Demo <https://godotengine.org/asset-library/asset/515>`__
 

+ 147 - 135
classes/class_color.rst

@@ -20,9 +20,9 @@ You can also create a color from standardized color names by using :ref:`@GDScri
 
 If you want to supply values in a range of 0 to 255, you should use :ref:`@GDScript.Color8<class_@GDScript_method_Color8>`.
 
-**Note:** In a boolean context, a Color will evaluate to ``false`` if it's equal to ``Color(0, 0, 0, 1)`` (opaque black). Otherwise, a Color will always evaluate to ``true``.
+\ **Note:** In a boolean context, a Color will evaluate to ``false`` if it's equal to ``Color(0, 0, 0, 1)`` (opaque black). Otherwise, a Color will always evaluate to ``true``.
 
-`Color constants cheatsheet <https://raw.githubusercontent.com/godotengine/godot-docs/master/img/color_constants.png>`__
+\ `Color constants cheatsheet <https://raw.githubusercontent.com/godotengine/godot-docs/master/img/color_constants.png>`__
 
 Tutorials
 ---------
@@ -80,6 +80,8 @@ Methods
 +-----------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
 | :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>` a=1.0 **)** |
 +-----------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`float<class_float>`   | :ref:`get_luminance<class_Color_method_get_luminance>` **(** **)**                                                                                                              |
++-----------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
 | :ref:`float<class_float>`   | :ref:`gray<class_Color_method_gray>` **(** **)**                                                                                                                                |
 +-----------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
 | :ref:`Color<class_Color>`   | :ref:`inverted<class_Color_method_inverted>` **(** **)**                                                                                                                        |
@@ -400,297 +402,297 @@ Constants
 
 .. _class_Color_constant_yellowgreen:
 
-- **aliceblue** = **Color( 0.94, 0.97, 1, 1 )** --- Alice blue color.
+- **aliceblue** = **Color( 0.941176, 0.972549, 1, 1 )** --- Alice blue color.
 
-- **antiquewhite** = **Color( 0.98, 0.92, 0.84, 1 )** --- Antique white color.
+- **antiquewhite** = **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.
 
-- **blanchedalmond** = **Color( 1, 0.92, 0.8, 1 )** --- Blanche almond color.
+- **blanchedalmond** = **Color( 1, 0.921569, 0.803922, 1 )** --- Blanche almond color.
 
 - **blue** = **Color( 0, 0, 1, 1 )** --- Blue color.
 
-- **blueviolet** = **Color( 0.54, 0.17, 0.89, 1 )** --- Blue violet color.
+- **blueviolet** = **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 )** --- Burly wood color.
+- **burlywood** = **Color( 0.870588, 0.721569, 0.529412, 1 )** --- Burly wood color.
 
-- **cadetblue** = **Color( 0.37, 0.62, 0.63, 1 )** --- Cadet blue color.
+- **cadetblue** = **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** = **Color( 0.39, 0.58, 0.93, 1 )** --- Cornflower color.
+- **cornflower** = **Color( 0.392157, 0.584314, 0.929412, 1 )** --- Cornflower color.
 
-- **cornsilk** = **Color( 1, 0.97, 0.86, 1 )** --- Corn silk color.
+- **cornsilk** = **Color( 1, 0.972549, 0.862745, 1 )** --- Corn silk 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.
 
-- **darkblue** = **Color( 0, 0, 0.55, 1 )** --- Dark blue color.
+- **darkblue** = **Color( 0, 0, 0.545098, 1 )** --- Dark blue color.
 
-- **darkcyan** = **Color( 0, 0.55, 0.55, 1 )** --- Dark cyan color.
+- **darkcyan** = **Color( 0, 0.545098, 0.545098, 1 )** --- Dark cyan color.
 
-- **darkgoldenrod** = **Color( 0.72, 0.53, 0.04, 1 )** --- Dark goldenrod color.
+- **darkgoldenrod** = **Color( 0.721569, 0.52549, 0.0431373, 1 )** --- Dark goldenrod color.
 
-- **darkgray** = **Color( 0.66, 0.66, 0.66, 1 )** --- Dark gray color.
+- **darkgray** = **Color( 0.662745, 0.662745, 0.662745, 1 )** --- Dark gray color.
 
-- **darkgreen** = **Color( 0, 0.39, 0, 1 )** --- Dark green color.
+- **darkgreen** = **Color( 0, 0.392157, 0, 1 )** --- Dark green color.
 
-- **darkkhaki** = **Color( 0.74, 0.72, 0.42, 1 )** --- Dark khaki color.
+- **darkkhaki** = **Color( 0.741176, 0.717647, 0.419608, 1 )** --- Dark khaki color.
 
-- **darkmagenta** = **Color( 0.55, 0, 0.55, 1 )** --- Dark magenta color.
+- **darkmagenta** = **Color( 0.545098, 0, 0.545098, 1 )** --- Dark magenta color.
 
-- **darkolivegreen** = **Color( 0.33, 0.42, 0.18, 1 )** --- Dark olive green color.
+- **darkolivegreen** = **Color( 0.333333, 0.419608, 0.184314, 1 )** --- Dark olive green color.
 
-- **darkorange** = **Color( 1, 0.55, 0, 1 )** --- Dark orange color.
+- **darkorange** = **Color( 1, 0.54902, 0, 1 )** --- Dark orange color.
 
-- **darkorchid** = **Color( 0.6, 0.2, 0.8, 1 )** --- Dark orchid color.
+- **darkorchid** = **Color( 0.6, 0.196078, 0.8, 1 )** --- Dark orchid color.
 
-- **darkred** = **Color( 0.55, 0, 0, 1 )** --- Dark red color.
+- **darkred** = **Color( 0.545098, 0, 0, 1 )** --- Dark red color.
 
-- **darksalmon** = **Color( 0.91, 0.59, 0.48, 1 )** --- Dark salmon color.
+- **darksalmon** = **Color( 0.913725, 0.588235, 0.478431, 1 )** --- Dark salmon color.
 
-- **darkseagreen** = **Color( 0.56, 0.74, 0.56, 1 )** --- Dark sea green color.
+- **darkseagreen** = **Color( 0.560784, 0.737255, 0.560784, 1 )** --- Dark sea green color.
 
-- **darkslateblue** = **Color( 0.28, 0.24, 0.55, 1 )** --- Dark slate blue color.
+- **darkslateblue** = **Color( 0.282353, 0.239216, 0.545098, 1 )** --- Dark slate blue color.
 
-- **darkslategray** = **Color( 0.18, 0.31, 0.31, 1 )** --- Dark slate gray color.
+- **darkslategray** = **Color( 0.184314, 0.309804, 0.309804, 1 )** --- Dark slate gray color.
 
-- **darkturquoise** = **Color( 0, 0.81, 0.82, 1 )** --- Dark turquoise color.
+- **darkturquoise** = **Color( 0, 0.807843, 0.819608, 1 )** --- Dark turquoise color.
 
-- **darkviolet** = **Color( 0.58, 0, 0.83, 1 )** --- Dark violet color.
+- **darkviolet** = **Color( 0.580392, 0, 0.827451, 1 )** --- Dark violet color.
 
-- **deeppink** = **Color( 1, 0.08, 0.58, 1 )** --- Deep pink color.
+- **deeppink** = **Color( 1, 0.0784314, 0.576471, 1 )** --- Deep pink color.
 
-- **deepskyblue** = **Color( 0, 0.75, 1, 1 )** --- Deep sky blue color.
+- **deepskyblue** = **Color( 0, 0.74902, 1, 1 )** --- Deep sky blue color.
 
-- **dimgray** = **Color( 0.41, 0.41, 0.41, 1 )** --- Dim gray color.
+- **dimgray** = **Color( 0.411765, 0.411765, 0.411765, 1 )** --- Dim gray color.
 
-- **dodgerblue** = **Color( 0.12, 0.56, 1, 1 )** --- Dodger blue color.
+- **dodgerblue** = **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.
 
-- **floralwhite** = **Color( 1, 0.98, 0.94, 1 )** --- Floral white color.
+- **floralwhite** = **Color( 1, 0.980392, 0.941176, 1 )** --- Floral white color.
 
-- **forestgreen** = **Color( 0.13, 0.55, 0.13, 1 )** --- Forest green color.
+- **forestgreen** = **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.
 
-- **ghostwhite** = **Color( 0.97, 0.97, 1, 1 )** --- Ghost white color.
+- **ghostwhite** = **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.
 
-- **greenyellow** = **Color( 0.68, 1, 0.18, 1 )** --- Green yellow color.
+- **greenyellow** = **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.
 
-- **hotpink** = **Color( 1, 0.41, 0.71, 1 )** --- Hot pink color.
+- **hotpink** = **Color( 1, 0.411765, 0.705882, 1 )** --- Hot pink color.
 
-- **indianred** = **Color( 0.8, 0.36, 0.36, 1 )** --- Indian red color.
+- **indianred** = **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.
 
-- **lavenderblush** = **Color( 1, 0.94, 0.96, 1 )** --- Lavender blush color.
+- **lavenderblush** = **Color( 1, 0.941176, 0.960784, 1 )** --- Lavender blush color.
 
-- **lawngreen** = **Color( 0.49, 0.99, 0, 1 )** --- Lawn green color.
+- **lawngreen** = **Color( 0.486275, 0.988235, 0, 1 )** --- Lawn green color.
 
-- **lemonchiffon** = **Color( 1, 0.98, 0.8, 1 )** --- Lemon chiffon color.
+- **lemonchiffon** = **Color( 1, 0.980392, 0.803922, 1 )** --- Lemon chiffon color.
 
-- **lightblue** = **Color( 0.68, 0.85, 0.9, 1 )** --- Light blue color.
+- **lightblue** = **Color( 0.678431, 0.847059, 0.901961, 1 )** --- Light blue color.
 
-- **lightcoral** = **Color( 0.94, 0.5, 0.5, 1 )** --- Light coral color.
+- **lightcoral** = **Color( 0.941176, 0.501961, 0.501961, 1 )** --- Light coral color.
 
-- **lightcyan** = **Color( 0.88, 1, 1, 1 )** --- Light cyan color.
+- **lightcyan** = **Color( 0.878431, 1, 1, 1 )** --- Light cyan color.
 
-- **lightgoldenrod** = **Color( 0.98, 0.98, 0.82, 1 )** --- Light goldenrod color.
+- **lightgoldenrod** = **Color( 0.980392, 0.980392, 0.823529, 1 )** --- Light goldenrod color.
 
-- **lightgray** = **Color( 0.83, 0.83, 0.83, 1 )** --- Light gray color.
+- **lightgray** = **Color( 0.827451, 0.827451, 0.827451, 1 )** --- Light gray color.
 
-- **lightgreen** = **Color( 0.56, 0.93, 0.56, 1 )** --- Light green color.
+- **lightgreen** = **Color( 0.564706, 0.933333, 0.564706, 1 )** --- Light green color.
 
-- **lightpink** = **Color( 1, 0.71, 0.76, 1 )** --- Light pink color.
+- **lightpink** = **Color( 1, 0.713726, 0.756863, 1 )** --- Light pink color.
 
-- **lightsalmon** = **Color( 1, 0.63, 0.48, 1 )** --- Light salmon color.
+- **lightsalmon** = **Color( 1, 0.627451, 0.478431, 1 )** --- Light salmon color.
 
-- **lightseagreen** = **Color( 0.13, 0.7, 0.67, 1 )** --- Light sea green color.
+- **lightseagreen** = **Color( 0.12549, 0.698039, 0.666667, 1 )** --- Light sea green color.
 
-- **lightskyblue** = **Color( 0.53, 0.81, 0.98, 1 )** --- Light sky blue color.
+- **lightskyblue** = **Color( 0.529412, 0.807843, 0.980392, 1 )** --- Light sky blue color.
 
-- **lightslategray** = **Color( 0.47, 0.53, 0.6, 1 )** --- Light slate gray color.
+- **lightslategray** = **Color( 0.466667, 0.533333, 0.6, 1 )** --- Light slate gray color.
 
-- **lightsteelblue** = **Color( 0.69, 0.77, 0.87, 1 )** --- Light steel blue color.
+- **lightsteelblue** = **Color( 0.690196, 0.768627, 0.870588, 1 )** --- Light steel blue color.
 
-- **lightyellow** = **Color( 1, 1, 0.88, 1 )** --- Light yellow color.
+- **lightyellow** = **Color( 1, 1, 0.878431, 1 )** --- Light yellow color.
 
 - **lime** = **Color( 0, 1, 0, 1 )** --- Lime color.
 
-- **limegreen** = **Color( 0.2, 0.8, 0.2, 1 )** --- Lime green color.
+- **limegreen** = **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.
 
-- **mediumaquamarine** = **Color( 0.4, 0.8, 0.67, 1 )** --- Medium aquamarine color.
+- **mediumaquamarine** = **Color( 0.4, 0.803922, 0.666667, 1 )** --- Medium aquamarine color.
 
-- **mediumblue** = **Color( 0, 0, 0.8, 1 )** --- Medium blue color.
+- **mediumblue** = **Color( 0, 0, 0.803922, 1 )** --- Medium blue color.
 
-- **mediumorchid** = **Color( 0.73, 0.33, 0.83, 1 )** --- Medium orchid color.
+- **mediumorchid** = **Color( 0.729412, 0.333333, 0.827451, 1 )** --- Medium orchid color.
 
-- **mediumpurple** = **Color( 0.58, 0.44, 0.86, 1 )** --- Medium purple color.
+- **mediumpurple** = **Color( 0.576471, 0.439216, 0.858824, 1 )** --- Medium purple color.
 
-- **mediumseagreen** = **Color( 0.24, 0.7, 0.44, 1 )** --- Medium sea green color.
+- **mediumseagreen** = **Color( 0.235294, 0.701961, 0.443137, 1 )** --- Medium sea green color.
 
-- **mediumslateblue** = **Color( 0.48, 0.41, 0.93, 1 )** --- Medium slate blue color.
+- **mediumslateblue** = **Color( 0.482353, 0.407843, 0.933333, 1 )** --- Medium slate blue color.
 
-- **mediumspringgreen** = **Color( 0, 0.98, 0.6, 1 )** --- Medium spring green color.
+- **mediumspringgreen** = **Color( 0, 0.980392, 0.603922, 1 )** --- Medium spring green color.
 
-- **mediumturquoise** = **Color( 0.28, 0.82, 0.8, 1 )** --- Medium turquoise color.
+- **mediumturquoise** = **Color( 0.282353, 0.819608, 0.8, 1 )** --- Medium turquoise color.
 
-- **mediumvioletred** = **Color( 0.78, 0.08, 0.52, 1 )** --- Medium violet red color.
+- **mediumvioletred** = **Color( 0.780392, 0.0823529, 0.521569, 1 )** --- Medium violet red color.
 
-- **midnightblue** = **Color( 0.1, 0.1, 0.44, 1 )** --- Midnight blue color.
+- **midnightblue** = **Color( 0.0980392, 0.0980392, 0.439216, 1 )** --- Midnight blue color.
 
-- **mintcream** = **Color( 0.96, 1, 0.98, 1 )** --- Mint cream color.
+- **mintcream** = **Color( 0.960784, 1, 0.980392, 1 )** --- Mint cream color.
 
-- **mistyrose** = **Color( 1, 0.89, 0.88, 1 )** --- Misty rose color.
+- **mistyrose** = **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.
 
-- **navajowhite** = **Color( 1, 0.87, 0.68, 1 )** --- Navajo white color.
+- **navajowhite** = **Color( 1, 0.870588, 0.678431, 1 )** --- Navajo white color.
 
-- **navyblue** = **Color( 0, 0, 0.5, 1 )** --- Navy blue color.
+- **navyblue** = **Color( 0, 0, 0.501961, 1 )** --- Navy blue color.
 
-- **oldlace** = **Color( 0.99, 0.96, 0.9, 1 )** --- Old lace color.
+- **oldlace** = **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.
 
-- **olivedrab** = **Color( 0.42, 0.56, 0.14, 1 )** --- Olive drab color.
+- **olivedrab** = **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.
 
-- **orangered** = **Color( 1, 0.27, 0, 1 )** --- Orange red color.
+- **orangered** = **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.
 
-- **palegoldenrod** = **Color( 0.93, 0.91, 0.67, 1 )** --- Pale goldenrod color.
+- **palegoldenrod** = **Color( 0.933333, 0.909804, 0.666667, 1 )** --- Pale goldenrod color.
 
-- **palegreen** = **Color( 0.6, 0.98, 0.6, 1 )** --- Pale green color.
+- **palegreen** = **Color( 0.596078, 0.984314, 0.596078, 1 )** --- Pale green color.
 
-- **paleturquoise** = **Color( 0.69, 0.93, 0.93, 1 )** --- Pale turquoise color.
+- **paleturquoise** = **Color( 0.686275, 0.933333, 0.933333, 1 )** --- Pale turquoise color.
 
-- **palevioletred** = **Color( 0.86, 0.44, 0.58, 1 )** --- Pale violet red color.
+- **palevioletred** = **Color( 0.858824, 0.439216, 0.576471, 1 )** --- Pale violet red color.
 
-- **papayawhip** = **Color( 1, 0.94, 0.84, 1 )** --- Papaya whip color.
+- **papayawhip** = **Color( 1, 0.937255, 0.835294, 1 )** --- Papaya whip color.
 
-- **peachpuff** = **Color( 1, 0.85, 0.73, 1 )** --- Peach puff color.
+- **peachpuff** = **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.
 
-- **powderblue** = **Color( 0.69, 0.88, 0.9, 1 )** --- Powder blue color.
+- **powderblue** = **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.
 
 - **rebeccapurple** = **Color( 0.4, 0.2, 0.6, 1 )** --- Rebecca purple color.
 
 - **red** = **Color( 1, 0, 0, 1 )** --- Red color.
 
-- **rosybrown** = **Color( 0.74, 0.56, 0.56, 1 )** --- Rosy brown color.
+- **rosybrown** = **Color( 0.737255, 0.560784, 0.560784, 1 )** --- Rosy brown color.
 
-- **royalblue** = **Color( 0.25, 0.41, 0.88, 1 )** --- Royal blue color.
+- **royalblue** = **Color( 0.254902, 0.411765, 0.882353, 1 )** --- Royal blue color.
 
-- **saddlebrown** = **Color( 0.55, 0.27, 0.07, 1 )** --- Saddle brown color.
+- **saddlebrown** = **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.
 
-- **sandybrown** = **Color( 0.96, 0.64, 0.38, 1 )** --- Sandy brown color.
+- **sandybrown** = **Color( 0.956863, 0.643137, 0.376471, 1 )** --- Sandy brown color.
 
-- **seagreen** = **Color( 0.18, 0.55, 0.34, 1 )** --- Sea green color.
+- **seagreen** = **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.
 
-- **skyblue** = **Color( 0.53, 0.81, 0.92, 1 )** --- Sky blue color.
+- **skyblue** = **Color( 0.529412, 0.807843, 0.921569, 1 )** --- Sky blue color.
 
-- **slateblue** = **Color( 0.42, 0.35, 0.8, 1 )** --- Slate blue color.
+- **slateblue** = **Color( 0.415686, 0.352941, 0.803922, 1 )** --- Slate blue color.
 
-- **slategray** = **Color( 0.44, 0.5, 0.56, 1 )** --- Slate gray color.
+- **slategray** = **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.
 
-- **springgreen** = **Color( 0, 1, 0.5, 1 )** --- Spring green color.
+- **springgreen** = **Color( 0, 1, 0.498039, 1 )** --- Spring green color.
 
-- **steelblue** = **Color( 0.27, 0.51, 0.71, 1 )** --- Steel blue color.
+- **steelblue** = **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 no 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.
 
-- **webgray** = **Color( 0.5, 0.5, 0.5, 1 )** --- Web gray color.
+- **webgray** = **Color( 0.501961, 0.501961, 0.501961, 1 )** --- Web gray color.
 
-- **webgreen** = **Color( 0, 0.5, 0, 1 )** --- Web green color.
+- **webgreen** = **Color( 0, 0.501961, 0, 1 )** --- Web green color.
 
-- **webmaroon** = **Color( 0.5, 0, 0, 1 )** --- Web maroon color.
+- **webmaroon** = **Color( 0.501961, 0, 0, 1 )** --- Web maroon color.
 
-- **webpurple** = **Color( 0.5, 0, 0.5, 1 )** --- Web purple color.
+- **webpurple** = **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.
 
-- **whitesmoke** = **Color( 0.96, 0.96, 0.96, 1 )** --- White smoke color.
+- **whitesmoke** = **Color( 0.960784, 0.960784, 0.960784, 1 )** --- White smoke color.
 
 - **yellow** = **Color( 1, 1, 0, 1 )** --- Yellow color.
 
-- **yellowgreen** = **Color( 0.6, 0.8, 0.2, 1 )** --- Yellow green color.
+- **yellowgreen** = **Color( 0.603922, 0.803922, 0.196078, 1 )** --- Yellow green color.
 
 Property Descriptions
 ---------------------
@@ -926,6 +928,16 @@ Constructs a color from an HSV profile. ``h``, ``s``, and ``v`` are values betwe
 
 ----
 
+.. _class_Color_method_get_luminance:
+
+- :ref:`float<class_float>` **get_luminance** **(** **)**
+
+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.
+
+----
+
 .. _class_Color_method_gray:
 
 - :ref:`float<class_float>` **gray** **(** **)**

+ 4 - 4
classes/class_colorpicker.rst

@@ -18,7 +18,7 @@ Description
 
 Displays a color picker widget. Useful for selecting a color from an RGB/RGBA colorspace.
 
-**Note:** This control is the color picker widget itself. You can use a :ref:`ColorPickerButton<class_ColorPickerButton>` instead if you need a button that brings up a ``ColorPicker`` in a pop-up.
+\ **Note:** This control is the color picker widget itself. You can use a :ref:`ColorPickerButton<class_ColorPickerButton>` instead if you need a button that brings up a ``ColorPicker`` in a pop-up.
 
 Tutorials
 ---------
@@ -172,7 +172,7 @@ If ``true``, shows an alpha channel slider (opacity).
 
 If ``true``, allows editing the color with Hue/Saturation/Value sliders.
 
-**Note:** Cannot be enabled if raw mode is on.
+\ **Note:** Cannot be enabled if raw mode is on.
 
 ----
 
@@ -222,7 +222,7 @@ If ``true``, saved color presets are visible.
 
 If ``true``, allows the color R, G, B component values to go beyond 1.0, which can be used for certain special operations that require it (like tinting without darkening or rendering sprites in HDR).
 
-**Note:** Cannot be enabled if HSV mode is on.
+\ **Note:** Cannot be enabled if HSV mode is on.
 
 Method Descriptions
 -------------------
@@ -233,7 +233,7 @@ Method Descriptions
 
 Adds the given color to a list of color presets. The presets are displayed in the color picker and the user will be able to select them.
 
-**Note:** The presets list is only for *this* color picker.
+\ **Note:** The presets list is only for *this* color picker.
 
 ----
 

+ 10 - 10
classes/class_colorpickerbutton.rst

@@ -20,7 +20,7 @@ Encapsulates a :ref:`ColorPicker<class_ColorPicker>` making it accessible by pre
 
 See also :ref:`BaseButton<class_BaseButton>` which contains common properties and methods associated with this node.
 
-**Note:** By default, the button may not be wide enough for the color preview swatch to be visible. Make sure to set :ref:`Control.rect_min_size<class_Control_property_rect_min_size>` to a big enough value to give the button enough space.
+\ **Note:** By default, the button may not be wide enough for the color preview swatch to be visible. Make sure to set :ref:`Control.rect_min_size<class_Control_property_rect_min_size>` to a big enough value to give the button enough space.
 
 Tutorials
 ---------
@@ -32,13 +32,13 @@ Tutorials
 Properties
 ----------
 
-+---------------------------+----------------------------------------------------------------+------------------------------+
-| :ref:`Color<class_Color>` | :ref:`color<class_ColorPickerButton_property_color>`           | ``Color( 0, 0, 0, 1 )``      |
-+---------------------------+----------------------------------------------------------------+------------------------------+
-| :ref:`bool<class_bool>`   | :ref:`edit_alpha<class_ColorPickerButton_property_edit_alpha>` | ``true``                     |
-+---------------------------+----------------------------------------------------------------+------------------------------+
-| :ref:`bool<class_bool>`   | toggle_mode                                                    | ``true`` *(parent override)* |
-+---------------------------+----------------------------------------------------------------+------------------------------+
++---------------------------+----------------------------------------------------------------+-------------------------------------------------------------------------------+
+| :ref:`Color<class_Color>` | :ref:`color<class_ColorPickerButton_property_color>`           | ``Color( 0, 0, 0, 1 )``                                                       |
++---------------------------+----------------------------------------------------------------+-------------------------------------------------------------------------------+
+| :ref:`bool<class_bool>`   | :ref:`edit_alpha<class_ColorPickerButton_property_edit_alpha>` | ``true``                                                                      |
++---------------------------+----------------------------------------------------------------+-------------------------------------------------------------------------------+
+| :ref:`bool<class_bool>`   | toggle_mode                                                    | ``true`` (overrides :ref:`BaseButton<class_BaseButton_property_toggle_mode>`) |
++---------------------------+----------------------------------------------------------------+-------------------------------------------------------------------------------+
 
 Methods
 -------
@@ -147,7 +147,7 @@ Method Descriptions
 
 Returns the :ref:`ColorPicker<class_ColorPicker>` that this node toggles.
 
-**Warning:** This is a required internal node, removing and freeing it may cause a crash. If you wish to hide it or any of its children, use their :ref:`CanvasItem.visible<class_CanvasItem_property_visible>` property.
+\ **Warning:** This is a required internal node, removing and freeing it may cause a crash. If you wish to hide it or any of its children, use their :ref:`CanvasItem.visible<class_CanvasItem_property_visible>` property.
 
 ----
 
@@ -157,7 +157,7 @@ Returns the :ref:`ColorPicker<class_ColorPicker>` that this node toggles.
 
 Returns the control's :ref:`PopupPanel<class_PopupPanel>` which allows you to connect to popup signals. This allows you to handle events when the ColorPicker is shown or hidden.
 
-**Warning:** This is a required internal node, removing and freeing it may cause a crash. If you wish to hide it or any of its children, use their :ref:`CanvasItem.visible<class_CanvasItem_property_visible>` property.
+\ **Warning:** This is a required internal node, removing and freeing it may cause a crash. If you wish to hide it or any of its children, use their :ref:`CanvasItem.visible<class_CanvasItem_property_visible>` property.
 
 Theme Property Descriptions
 ---------------------------

+ 1 - 1
classes/class_concavepolygonshape.rst

@@ -18,7 +18,7 @@ Description
 
 Concave polygon shape resource, which can be set into a :ref:`PhysicsBody<class_PhysicsBody>` or area. This shape is created by feeding a list of triangles.
 
-**Note:** When used for collision, ``ConcavePolygonShape`` is intended to work with static :ref:`PhysicsBody<class_PhysicsBody>` nodes like :ref:`StaticBody<class_StaticBody>` and will not work with :ref:`KinematicBody<class_KinematicBody>` or :ref:`RigidBody<class_RigidBody>` with a mode other than Static.
+\ **Note:** When used for collision, ``ConcavePolygonShape`` is intended to work with static :ref:`PhysicsBody<class_PhysicsBody>` nodes like :ref:`StaticBody<class_StaticBody>` and will not work with :ref:`KinematicBody<class_KinematicBody>` or :ref:`RigidBody<class_RigidBody>` with a mode other than Static.
 
 Tutorials
 ---------

+ 1 - 1
classes/class_configfile.rst

@@ -70,7 +70,7 @@ Keep in mind that section and property names can't contain spaces. Anything afte
 
 ConfigFiles can also contain manually written comment lines starting with a semicolon (``;``). Those lines will be ignored when parsing the file. Note that comments will be lost when saving the ConfigFile. This can still be useful for dedicated server configuration files, which are typically never overwritten without explicit user action.
 
-**Note:** The file extension given to a ConfigFile does not have any impact on its formatting or behavior. By convention, the ``.cfg`` extension is used here, but any other extension such as ``.ini`` is also valid. Since neither ``.cfg`` nor ``.ini`` are standardized, Godot's ConfigFile formatting may differ from files written by other programs.
+\ **Note:** The file extension given to a ConfigFile does not have any impact on its formatting or behavior. By convention, the ``.cfg`` extension is used here, but any other extension such as ``.ini`` is also valid. Since neither ``.cfg`` nor ``.ini`` are standardized, Godot's ConfigFile formatting may differ from files written by other programs.
 
 Methods
 -------

+ 6 - 6
classes/class_confirmationdialog.rst

@@ -29,11 +29,11 @@ To get cancel action, you can use:
 Properties
 ----------
 
-+-------------------------------+---------------+---------------------------------------------+
-| :ref:`Vector2<class_Vector2>` | rect_min_size | ``Vector2( 200, 70 )`` *(parent override)*  |
-+-------------------------------+---------------+---------------------------------------------+
-| :ref:`String<class_String>`   | window_title  | ``"Please Confirm..."`` *(parent override)* |
-+-------------------------------+---------------+---------------------------------------------+
++-------------------------------+---------------+---------------------------------------------------------------------------------------------------+
+| :ref:`Vector2<class_Vector2>` | rect_min_size | ``Vector2( 200, 70 )`` (overrides :ref:`Control<class_Control_property_rect_min_size>`)           |
++-------------------------------+---------------+---------------------------------------------------------------------------------------------------+
+| :ref:`String<class_String>`   | window_title  | ``"Please Confirm..."`` (overrides :ref:`WindowDialog<class_WindowDialog_property_window_title>`) |
++-------------------------------+---------------+---------------------------------------------------------------------------------------------------+
 
 Methods
 -------
@@ -51,7 +51,7 @@ Method Descriptions
 
 Returns the cancel button.
 
-**Warning:** This is a required internal node, removing and freeing it may cause a crash. If you wish to hide it or any of its children, use their :ref:`CanvasItem.visible<class_CanvasItem_property_visible>` property.
+\ **Warning:** This is a required internal node, removing and freeing it may cause a crash. If you wish to hide it or any of its children, use their :ref:`CanvasItem.visible<class_CanvasItem_property_visible>` property.
 
 .. |virtual| replace:: :abbr:`virtual (This method should typically be overridden by the user to have any effect.)`
 .. |const| replace:: :abbr:`const (This method has no side effects. It doesn't modify any of the instance's member variables.)`

+ 1 - 1
classes/class_container.rst

@@ -11,7 +11,7 @@ Container
 
 **Inherits:** :ref:`Control<class_Control>` **<** :ref:`CanvasItem<class_CanvasItem>` **<** :ref:`Node<class_Node>` **<** :ref:`Object<class_Object>`
 
-**Inherited By:** :ref:`AspectRatioContainer<class_AspectRatioContainer>`, :ref:`BoxContainer<class_BoxContainer>`, :ref:`CenterContainer<class_CenterContainer>`, :ref:`EditorProperty<class_EditorProperty>`, :ref:`GraphNode<class_GraphNode>`, :ref:`GridContainer<class_GridContainer>`, :ref:`MarginContainer<class_MarginContainer>`, :ref:`PanelContainer<class_PanelContainer>`, :ref:`ScrollContainer<class_ScrollContainer>`, :ref:`SplitContainer<class_SplitContainer>`, :ref:`TabContainer<class_TabContainer>`, :ref:`ViewportContainer<class_ViewportContainer>`
+**Inherited By:** :ref:`AspectRatioContainer<class_AspectRatioContainer>`, :ref:`BoxContainer<class_BoxContainer>`, :ref:`CenterContainer<class_CenterContainer>`, :ref:`EditorProperty<class_EditorProperty>`, :ref:`FlowContainer<class_FlowContainer>`, :ref:`GraphNode<class_GraphNode>`, :ref:`GridContainer<class_GridContainer>`, :ref:`MarginContainer<class_MarginContainer>`, :ref:`PanelContainer<class_PanelContainer>`, :ref:`ScrollContainer<class_ScrollContainer>`, :ref:`SplitContainer<class_SplitContainer>`, :ref:`TabContainer<class_TabContainer>`, :ref:`ViewportContainer<class_ViewportContainer>`
 
 Base node for containers.
 

+ 132 - 26
classes/class_control.rst

@@ -22,7 +22,7 @@ Base class for all UI-related nodes. ``Control`` features a bounding rectangle t
 
 For more information on Godot's UI system, anchors, margins, and containers, see the related tutorials in the manual. To build flexible UIs, you'll need a mix of UI elements that inherit from ``Control`` and :ref:`Container<class_Container>` nodes.
 
-**User Interface nodes and input**
+\ **User Interface nodes and input**\ 
 
 Godot sends input events to the scene's root node first, by calling :ref:`Node._input<class_Node_method__input>`. :ref:`Node._input<class_Node_method__input>` forwards the event down the node tree to the nodes under the mouse cursor, or on keyboard focus. To do so, it calls :ref:`MainLoop._input_event<class_MainLoop_method__input_event>`. Call :ref:`accept_event<class_Control_method_accept_event>` so no other node receives the event. Once you accept an input, it becomes handled so :ref:`Node._unhandled_input<class_Node_method__unhandled_input>` will not process it.
 
@@ -30,18 +30,18 @@ Only one ``Control`` node can be in keyboard focus. Only the node in focus will
 
 Sets :ref:`mouse_filter<class_Control_property_mouse_filter>` to :ref:`MOUSE_FILTER_IGNORE<class_Control_constant_MOUSE_FILTER_IGNORE>` to tell a ``Control`` node to ignore mouse or touch events. You'll need it if you place an icon on top of a button.
 
-:ref:`Theme<class_Theme>` resources change the Control's appearance. If you change the :ref:`Theme<class_Theme>` on a ``Control`` node, it affects all of its children. To override some of the theme's parameters, call one of the ``add_*_override`` methods, like :ref:`add_font_override<class_Control_method_add_font_override>`. You can override the theme with the inspector.
+\ :ref:`Theme<class_Theme>` resources change the Control's appearance. If you change the :ref:`Theme<class_Theme>` on a ``Control`` node, it affects all of its children. To override some of the theme's parameters, call one of the ``add_*_override`` methods, like :ref:`add_font_override<class_Control_method_add_font_override>`. You can override the theme with the inspector.
 
-**Note:** Theme items are *not* :ref:`Object<class_Object>` properties. This means you can't access their values using :ref:`Object.get<class_Object_method_get>` and :ref:`Object.set<class_Object_method_set>`. Instead, use :ref:`get_color<class_Control_method_get_color>`, :ref:`get_constant<class_Control_method_get_constant>`, :ref:`get_font<class_Control_method_get_font>`, :ref:`get_icon<class_Control_method_get_icon>`, :ref:`get_stylebox<class_Control_method_get_stylebox>`, and the ``add_*_override`` methods provided by this class.
+\ **Note:** Theme items are *not* :ref:`Object<class_Object>` properties. This means you can't access their values using :ref:`Object.get<class_Object_method_get>` and :ref:`Object.set<class_Object_method_set>`. Instead, use :ref:`get_color<class_Control_method_get_color>`, :ref:`get_constant<class_Control_method_get_constant>`, :ref:`get_font<class_Control_method_get_font>`, :ref:`get_icon<class_Control_method_get_icon>`, :ref:`get_stylebox<class_Control_method_get_stylebox>`, and the ``add_*_override`` methods provided by this class.
 
 Tutorials
 ---------
 
-- :doc:`../tutorials/ui/index`
+- :doc:`GUI tutorial index <../tutorials/ui/index>`
 
-- :doc:`../tutorials/2d/custom_drawing_in_2d`
+- :doc:`Custom drawing in 2D <../tutorials/2d/custom_drawing_in_2d>`
 
-- :doc:`../tutorials/ui/control_node_gallery`
+- :doc:`Control node gallery <../tutorials/ui/control_node_gallery>`
 
 - `All GUI Demos <https://github.com/godotengine/godot-demo-projects/tree/master/gui>`__
 
@@ -115,6 +115,8 @@ Properties
 +--------------------------------------------------+------------------------------------------------------------------------------------------------+---------------------+
 | :ref:`Theme<class_Theme>`                        | :ref:`theme<class_Control_property_theme>`                                                     |                     |
 +--------------------------------------------------+------------------------------------------------------------------------------------------------+---------------------+
+| :ref:`String<class_String>`                      | :ref:`theme_type_variation<class_Control_property_theme_type_variation>`                       | ``""``              |
++--------------------------------------------------+------------------------------------------------------------------------------------------------+---------------------+
 
 Methods
 -------
@@ -226,10 +228,24 @@ Methods
 +----------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
 | :ref:`bool<class_bool>`                      | :ref:`has_stylebox_override<class_Control_method_has_stylebox_override>` **(** :ref:`String<class_String>` name **)** |const|                                                                                                                                      |
 +----------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`bool<class_bool>`                      | :ref:`is_drag_successful<class_Control_method_is_drag_successful>` **(** **)** |const|                                                                                                                                                                             |
++----------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
 | void                                         | :ref:`minimum_size_changed<class_Control_method_minimum_size_changed>` **(** **)**                                                                                                                                                                                 |
 +----------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
 | void                                         | :ref:`release_focus<class_Control_method_release_focus>` **(** **)**                                                                                                                                                                                               |
 +----------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| void                                         | :ref:`remove_color_override<class_Control_method_remove_color_override>` **(** :ref:`String<class_String>` name **)**                                                                                                                                              |
++----------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| void                                         | :ref:`remove_constant_override<class_Control_method_remove_constant_override>` **(** :ref:`String<class_String>` name **)**                                                                                                                                        |
++----------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| void                                         | :ref:`remove_font_override<class_Control_method_remove_font_override>` **(** :ref:`String<class_String>` name **)**                                                                                                                                                |
++----------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| void                                         | :ref:`remove_icon_override<class_Control_method_remove_icon_override>` **(** :ref:`String<class_String>` name **)**                                                                                                                                                |
++----------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| void                                         | :ref:`remove_shader_override<class_Control_method_remove_shader_override>` **(** :ref:`String<class_String>` name **)**                                                                                                                                            |
++----------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| void                                         | :ref:`remove_stylebox_override<class_Control_method_remove_stylebox_override>` **(** :ref:`String<class_String>` name **)**                                                                                                                                        |
++----------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
 | void                                         | :ref:`set_anchor<class_Control_method_set_anchor>` **(** :ref:`Margin<enum_@GlobalScope_Margin>` margin, :ref:`float<class_float>` anchor, :ref:`bool<class_bool>` keep_margin=false, :ref:`bool<class_bool>` push_opposite_anchor=true **)**                      |
 +----------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
 | void                                         | :ref:`set_anchor_and_margin<class_Control_method_set_anchor_and_margin>` **(** :ref:`Margin<enum_@GlobalScope_Margin>` margin, :ref:`float<class_float>` anchor, :ref:`float<class_float>` offset, :ref:`bool<class_bool>` push_opposite_anchor=false **)**        |
@@ -314,7 +330,7 @@ Emitted when a modal ``Control`` is closed. See :ref:`show_modal<class_Control_m
 
 Emitted when the mouse enters the control's ``Rect`` area, provided its :ref:`mouse_filter<class_Control_property_mouse_filter>` lets the event reach it.
 
-**Note:** :ref:`mouse_entered<class_Control_signal_mouse_entered>` will not be emitted if the mouse enters a child ``Control`` node before entering the parent's ``Rect`` area, at least until the mouse is moved to reach the parent's ``Rect`` area.
+\ **Note:** :ref:`mouse_entered<class_Control_signal_mouse_entered>` will not be emitted if the mouse enters a child ``Control`` node before entering the parent's ``Rect`` area, at least until the mouse is moved to reach the parent's ``Rect`` area.
 
 ----
 
@@ -324,7 +340,7 @@ Emitted when the mouse enters the control's ``Rect`` area, provided its :ref:`mo
 
 Emitted when the mouse leaves the control's ``Rect`` area, provided its :ref:`mouse_filter<class_Control_property_mouse_filter>` lets the event reach it.
 
-**Note:** :ref:`mouse_exited<class_Control_signal_mouse_exited>` will be emitted if the mouse enters a child ``Control`` node, even if the mouse cursor is still inside the parent's ``Rect`` area.
+\ **Note:** :ref:`mouse_exited<class_Control_signal_mouse_exited>` will be emitted if the mouse enters a child ``Control`` node, even if the mouse cursor is still inside the parent's ``Rect`` area.
 
 If you want to check whether the mouse truly left the area, ignoring any top nodes, you can use code like this:
 
@@ -986,7 +1002,7 @@ Margins are often controlled by one or multiple parent :ref:`Container<class_Con
 
 The default cursor shape for this control. Useful for Godot plugins and applications or games that use the system's mouse cursors.
 
-**Note:** On Linux, shapes may vary depending on the cursor theme of the system.
+\ **Note:** On Linux, shapes may vary depending on the cursor theme of the system.
 
 ----
 
@@ -1110,9 +1126,9 @@ The node's rotation around its pivot, in degrees. See :ref:`rect_pivot_offset<cl
 
 The node's scale, relative to its :ref:`rect_size<class_Control_property_rect_size>`. Change this property to scale the node around its :ref:`rect_pivot_offset<class_Control_property_rect_pivot_offset>`. The Control's :ref:`hint_tooltip<class_Control_property_hint_tooltip>` will also scale according to this value.
 
-**Note:** This property is mainly intended to be used for animation purposes. Text inside the Control will look pixelated or blurry when the Control is scaled. To support multiple resolutions in your project, use an appropriate viewport stretch mode as described in the `documentation <https://docs.godotengine.org/en/3.4/tutorials/rendering/multiple_resolutions.html>`__ instead of scaling Controls individually.
+\ **Note:** This property is mainly intended to be used for animation purposes. Text inside the Control will look pixelated or blurry when the Control is scaled. To support multiple resolutions in your project, use an appropriate viewport stretch mode as described in the :doc:`documentation <../tutorials/rendering/multiple_resolutions>` instead of scaling Controls individually.
 
-**Note:** If the Control node is a child of a :ref:`Container<class_Container>` node, the scale will be reset to ``Vector2(1, 1)`` when the scene is instanced. To set the Control's scale when it's instanced, wait for one frame using ``yield(get_tree(), "idle_frame")`` then set its :ref:`rect_scale<class_Control_property_rect_scale>` property.
+\ **Note:** If the Control node is a child of a :ref:`Container<class_Container>` node, the scale will be reset to ``Vector2(1, 1)`` when the scene is instanced. To set the Control's scale when it's instanced, wait for one frame using ``yield(get_tree(), "idle_frame")`` then set its :ref:`rect_scale<class_Control_property_rect_scale>` property.
 
 ----
 
@@ -1190,6 +1206,28 @@ Tells the parent :ref:`Container<class_Container>` nodes how they should resize
 
 Changing this property replaces the current :ref:`Theme<class_Theme>` resource this node and all its ``Control`` children use.
 
+----
+
+.. _class_Control_property_theme_type_variation:
+
+- :ref:`String<class_String>` **theme_type_variation**
+
++-----------+---------------------------------+
+| *Default* | ``""``                          |
++-----------+---------------------------------+
+| *Setter*  | set_theme_type_variation(value) |
++-----------+---------------------------------+
+| *Getter*  | get_theme_type_variation()      |
++-----------+---------------------------------+
+
+The name of a theme type variation used by this ``Control`` to look up its own theme items. When empty, the class name of the node is used (e.g. ``Button`` for the :ref:`Button<class_Button>` control), as well as the class names of all parent classes (in order of inheritance).
+
+When set, this property gives the highest priority to the type of the specified name. This type can in turn extend another type, forming a dependency chain. See :ref:`Theme.set_type_variation<class_Theme_method_set_type_variation>`. If the theme item cannot be found using this type or its base types, lookup falls back on the class names.
+
+\ **Note:** To look up ``Control``'s own items use various ``get_*`` methods without specifying ``theme_type``.
+
+\ **Note:** Theme items are looked for in the tree order, from branch to root, where each ``Control`` node is checked for its :ref:`theme<class_Control_property_theme>` property. The earliest match against any type/class name is returned. The project-level Theme and the default Theme are checked last.
+
 Method Descriptions
 -------------------
 
@@ -1211,6 +1249,8 @@ Virtual method to be implemented by the user. Returns the minimum size for this
 
 If not overridden, defaults to :ref:`Vector2.ZERO<class_Vector2_constant_ZERO>`.
 
+\ **Note:** This method will not be called when the script is attached to a ``Control`` node that already overrides its minimum size (e.g. :ref:`Label<class_Label>`, :ref:`Button<class_Button>`, :ref:`PanelContainer<class_PanelContainer>` etc.). It can only be used with most basic GUI nodes, like ``Control``, :ref:`Container<class_Container>`, :ref:`Panel<class_Panel>` etc.
+
 ----
 
 .. _class_Control_method__gui_input:
@@ -1240,7 +1280,7 @@ The event won't trigger if:
 
 \* it happens outside the parent's rectangle and the parent has either :ref:`rect_clip_content<class_Control_property_rect_clip_content>` or :ref:`_clips_input<class_Control_method__clips_input>` enabled.
 
-**Note:** Event position is relative to the control origin.
+\ **Note:** Event position is relative to the control origin.
 
 ----
 
@@ -1254,7 +1294,7 @@ The returned node must be of type ``Control`` or Control-derived. It can have ch
 
 The returned node will be added as child to a :ref:`PopupPanel<class_PopupPanel>`, so you should only provide the contents of that panel. That :ref:`PopupPanel<class_PopupPanel>` can be themed using :ref:`Theme.set_stylebox<class_Theme_method_set_stylebox>` for the type ``"TooltipPanel"`` (see :ref:`hint_tooltip<class_Control_property_hint_tooltip>` for an example).
 
-**Note:** The tooltip is shrunk to minimal size. If you want to ensure it's fully visible, you might want to set its :ref:`rect_min_size<class_Control_property_rect_min_size>` to some non-zero value.
+\ **Note:** The tooltip is shrunk to minimal size. If you want to ensure it's fully visible, you might want to set its :ref:`rect_min_size<class_Control_property_rect_min_size>` to some non-zero value.
 
 Example of usage with a custom-constructed node:
 
@@ -1288,11 +1328,11 @@ Marks an input event as handled. Once you accept an input event, it stops propag
 
 - void **add_color_override** **(** :ref:`String<class_String>` name, :ref:`Color<class_Color>` color **)**
 
-Creates a local override for a theme :ref:`Color<class_Color>` with the specified ``name``. Local overrides always take precedence when fetching theme items for the control. An override cannot be removed, but it can be overridden with the corresponding default value.
+Creates a local override for a theme :ref:`Color<class_Color>` with the specified ``name``. Local overrides always take precedence when fetching theme items for the control.
 
-See also :ref:`get_color<class_Control_method_get_color>`.
+See also :ref:`get_color<class_Control_method_get_color>`, :ref:`remove_color_override<class_Control_method_remove_color_override>`.
 
-**Example of overriding a label's color and resetting it later:**
+\ **Example of overriding a label's color and resetting it later:**\ 
 
 ::
 
@@ -1307,9 +1347,9 @@ See also :ref:`get_color<class_Control_method_get_color>`.
 
 - void **add_constant_override** **(** :ref:`String<class_String>` name, :ref:`int<class_int>` constant **)**
 
-Creates a local override for a theme constant with the specified ``name``. Local overrides always take precedence when fetching theme items for the control. An override cannot be removed, but it can be overridden with the corresponding default value.
+Creates a local override for a theme constant with the specified ``name``. Local overrides always take precedence when fetching theme items for the control.
 
-See also :ref:`get_constant<class_Control_method_get_constant>`.
+See also :ref:`get_constant<class_Control_method_get_constant>`, :ref:`remove_constant_override<class_Control_method_remove_constant_override>`.
 
 ----
 
@@ -1317,7 +1357,9 @@ See also :ref:`get_constant<class_Control_method_get_constant>`.
 
 - void **add_font_override** **(** :ref:`String<class_String>` name, :ref:`Font<class_Font>` font **)**
 
-Creates a local override for a theme :ref:`Font<class_Font>` with the specified ``name``. Local overrides always take precedence when fetching theme items for the control. An override can be removed by assigning it a ``null`` value.
+Creates a local override for a theme :ref:`Font<class_Font>` with the specified ``name``. Local overrides always take precedence when fetching theme items for the control.
+
+\ **Note:** An override can be removed by assigning it a ``null`` value. This behavior is deprecated and will be removed in 4.0, use :ref:`remove_font_override<class_Control_method_remove_font_override>` instead.
 
 See also :ref:`get_font<class_Control_method_get_font>`.
 
@@ -1327,7 +1369,9 @@ See also :ref:`get_font<class_Control_method_get_font>`.
 
 - void **add_icon_override** **(** :ref:`String<class_String>` name, :ref:`Texture<class_Texture>` texture **)**
 
-Creates a local override for a theme icon with the specified ``name``. Local overrides always take precedence when fetching theme items for the control. An override can be removed by assigning it a ``null`` value.
+Creates a local override for a theme icon with the specified ``name``. Local overrides always take precedence when fetching theme items for the control.
+
+\ **Note:** An override can be removed by assigning it a ``null`` value. This behavior is deprecated and will be removed in 4.0, use :ref:`remove_icon_override<class_Control_method_remove_icon_override>` instead.
 
 See also :ref:`get_icon<class_Control_method_get_icon>`.
 
@@ -1337,7 +1381,9 @@ See also :ref:`get_icon<class_Control_method_get_icon>`.
 
 - void **add_shader_override** **(** :ref:`String<class_String>` name, :ref:`Shader<class_Shader>` shader **)**
 
-Creates a local override for a theme shader with the specified ``name``. Local overrides always take precedence when fetching theme items for the control. An override can be removed by assigning it a ``null`` value.
+Creates a local override for a theme shader with the specified ``name``. Local overrides always take precedence when fetching theme items for the control.
+
+\ **Note:** An override can be removed by assigning it a ``null`` value. This behavior is deprecated and will be removed in 4.0, use :ref:`remove_shader_override<class_Control_method_remove_shader_override>` instead.
 
 ----
 
@@ -1345,11 +1391,13 @@ Creates a local override for a theme shader with the specified ``name``. Local o
 
 - void **add_stylebox_override** **(** :ref:`String<class_String>` name, :ref:`StyleBox<class_StyleBox>` stylebox **)**
 
-Creates a local override for a theme :ref:`StyleBox<class_StyleBox>` with the specified ``name``. Local overrides always take precedence when fetching theme items for the control. An override can be removed by assigning it a ``null`` value.
+Creates a local override for a theme :ref:`StyleBox<class_StyleBox>` with the specified ``name``. Local overrides always take precedence when fetching theme items for the control.
+
+\ **Note:** An override can be removed by assigning it a ``null`` value. This behavior is deprecated and will be removed in 4.0, use :ref:`remove_stylebox_override<class_Control_method_remove_stylebox_override>` instead.
 
 See also :ref:`get_stylebox<class_Control_method_get_stylebox>`.
 
-**Example of modifying a property in a StyleBox by duplicating it:**
+\ **Example of modifying a property in a StyleBox by duplicating it:**\ 
 
 ::
 
@@ -1444,7 +1492,7 @@ Returns :ref:`margin_left<class_Control_property_margin_left>` and :ref:`margin_
 
 - :ref:`Color<class_Color>` **get_color** **(** :ref:`String<class_String>` name, :ref:`String<class_String>` theme_type="" **)** |const|
 
-Returns a :ref:`Color<class_Color>` from the first matching :ref:`Theme<class_Theme>` in the tree if that :ref:`Theme<class_Theme>` has a color item with the specified ``name`` and ``theme_type``. If ``theme_type`` is omitted the class name of the current control is used as the type. If the type is a class name its parent classes are also checked, in order of inheritance.
+Returns a :ref:`Color<class_Color>` from the first matching :ref:`Theme<class_Theme>` in the tree if that :ref:`Theme<class_Theme>` has a color item with the specified ``name`` and ``theme_type``. If ``theme_type`` is omitted the class name of the current control is used as the type, or :ref:`theme_type_variation<class_Control_property_theme_type_variation>` if it is defined. If the type is a class name its parent classes are also checked, in order of inheritance.
 
 For the current control its local overrides are considered first (see :ref:`add_color_override<class_Control_method_add_color_override>`), then its assigned :ref:`theme<class_Control_property_theme>`. After the current control, each parent control and its assigned :ref:`theme<class_Control_property_theme>` are considered; controls without a :ref:`theme<class_Control_property_theme>` assigned are skipped. If no matching :ref:`Theme<class_Theme>` is found in the tree, a custom project :ref:`Theme<class_Theme>` (see :ref:`ProjectSettings.gui/theme/custom<class_ProjectSettings_property_gui/theme/custom>`) and the default :ref:`Theme<class_Theme>` are used.
 
@@ -1746,7 +1794,7 @@ Virtual method to be implemented by the user. Returns whether the given ``point`
 
 If not overridden, default behavior is checking if the point is within control's Rect.
 
-**Note:** If you want to check if a point is inside the control, you can use ``get_rect().has_point(point)``.
+\ **Note:** If you want to check if a point is inside the control, you can use ``get_rect().has_point(point)``.
 
 ----
 
@@ -1780,6 +1828,16 @@ See :ref:`add_stylebox_override<class_Control_method_add_stylebox_override>`.
 
 ----
 
+.. _class_Control_method_is_drag_successful:
+
+- :ref:`bool<class_bool>` **is_drag_successful** **(** **)** |const|
+
+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>`.
+
+----
+
 .. _class_Control_method_minimum_size_changed:
 
 - void **minimum_size_changed** **(** **)**
@@ -1796,6 +1854,54 @@ Give up the focus. No other control will be able to receive keyboard input.
 
 ----
 
+.. _class_Control_method_remove_color_override:
+
+- void **remove_color_override** **(** :ref:`String<class_String>` name **)**
+
+Removes a theme override for a :ref:`Color<class_Color>` with the given ``name``.
+
+----
+
+.. _class_Control_method_remove_constant_override:
+
+- void **remove_constant_override** **(** :ref:`String<class_String>` name **)**
+
+Removes a theme override for a constant with the given ``name``.
+
+----
+
+.. _class_Control_method_remove_font_override:
+
+- void **remove_font_override** **(** :ref:`String<class_String>` name **)**
+
+Removes a theme override for a :ref:`Font<class_Font>` with the given ``name``.
+
+----
+
+.. _class_Control_method_remove_icon_override:
+
+- void **remove_icon_override** **(** :ref:`String<class_String>` name **)**
+
+Removes a theme override for an icon with the given ``name``.
+
+----
+
+.. _class_Control_method_remove_shader_override:
+
+- void **remove_shader_override** **(** :ref:`String<class_String>` name **)**
+
+Removes a theme override for a shader with the given ``name``.
+
+----
+
+.. _class_Control_method_remove_stylebox_override:
+
+- void **remove_stylebox_override** **(** :ref:`String<class_String>` name **)**
+
+Removes a theme override for a :ref:`StyleBox<class_StyleBox>` with the given ``name``.
+
+----
+
 .. _class_Control_method_set_anchor:
 
 - void **set_anchor** **(** :ref:`Margin<enum_@GlobalScope_Margin>` margin, :ref:`float<class_float>` anchor, :ref:`bool<class_bool>` keep_margin=false, :ref:`bool<class_bool>` push_opposite_anchor=true **)**
@@ -1850,7 +1956,7 @@ Forwards the handling of this control's drag and drop to ``target`` control.
 
 Forwarding can be implemented in the target control similar to the methods :ref:`get_drag_data<class_Control_method_get_drag_data>`, :ref:`can_drop_data<class_Control_method_can_drop_data>`, and :ref:`drop_data<class_Control_method_drop_data>` but with two differences:
 
-1. The function name must be suffixed with **_fw**
+1. The function name must be suffixed with **_fw**\ 
 
 2. The function must take an extra argument that is the control doing the forwarding
 

+ 18 - 2
classes/class_cpuparticles.rst

@@ -20,7 +20,7 @@ CPU-based 3D particle node used to create a variety of particle systems and effe
 
 See also :ref:`Particles<class_Particles>`, which provides the same functionality with hardware acceleration, but may not run on older devices.
 
-**Note:** Unlike :ref:`Particles<class_Particles>`, the visibility rect is generated on-the-fly and doesn't need to be configured by the user.
+\ **Note:** Unlike :ref:`Particles<class_Particles>`, the visibility rect is generated on-the-fly and doesn't need to be configured by the user.
 
 Properties
 ----------
@@ -54,6 +54,8 @@ Properties
 +-------------------------------------------------------+-------------------------------------------------------------------------------------------+---------------------------+
 | :ref:`Color<class_Color>`                             | :ref:`color<class_CPUParticles_property_color>`                                           | ``Color( 1, 1, 1, 1 )``   |
 +-------------------------------------------------------+-------------------------------------------------------------------------------------------+---------------------------+
+| :ref:`Gradient<class_Gradient>`                       | :ref:`color_initial_ramp<class_CPUParticles_property_color_initial_ramp>`                 |                           |
++-------------------------------------------------------+-------------------------------------------------------------------------------------------+---------------------------+
 | :ref:`Gradient<class_Gradient>`                       | :ref:`color_ramp<class_CPUParticles_property_color_ramp>`                                 |                           |
 +-------------------------------------------------------+-------------------------------------------------------------------------------------------+---------------------------+
 | :ref:`float<class_float>`                             | :ref:`damping<class_CPUParticles_property_damping>`                                       | ``0.0``                   |
@@ -338,7 +340,7 @@ Property Descriptions
 
 The number of particles emitted in one emission cycle (corresponding to the :ref:`lifetime<class_CPUParticles_property_lifetime>`).
 
-**Note:** Changing :ref:`amount<class_CPUParticles_property_amount>` will reset the particle emission, therefore removing all particles that were already emitted before changing :ref:`amount<class_CPUParticles_property_amount>`.
+\ **Note:** Changing :ref:`amount<class_CPUParticles_property_amount>` will reset the particle emission, therefore removing all particles that were already emitted before changing :ref:`amount<class_CPUParticles_property_amount>`.
 
 ----
 
@@ -542,6 +544,20 @@ Each particle's initial color. To have particle display color in a :ref:`Spatial
 
 ----
 
+.. _class_CPUParticles_property_color_initial_ramp:
+
+- :ref:`Gradient<class_Gradient>` **color_initial_ramp**
+
++----------+-------------------------------+
+| *Setter* | set_color_initial_ramp(value) |
++----------+-------------------------------+
+| *Getter* | get_color_initial_ramp()      |
++----------+-------------------------------+
+
+Each particle's initial color will vary along this :ref:`GradientTexture<class_GradientTexture>` (multiplied with :ref:`color<class_CPUParticles_property_color>`).
+
+----
+
 .. _class_CPUParticles_property_color_ramp:
 
 - :ref:`Gradient<class_Gradient>` **color_ramp**

+ 19 - 3
classes/class_cpuparticles2d.rst

@@ -20,7 +20,7 @@ CPU-based 2D particle node used to create a variety of particle systems and effe
 
 See also :ref:`Particles2D<class_Particles2D>`, which provides the same functionality with hardware acceleration, but may not run on older devices.
 
-**Note:** Unlike :ref:`Particles2D<class_Particles2D>`, the visibility rect is generated on-the-fly and doesn't need to be configured by the user.
+\ **Note:** Unlike :ref:`Particles2D<class_Particles2D>`, the visibility rect is generated on-the-fly and doesn't need to be configured by the user.
 
 Tutorials
 ---------
@@ -59,6 +59,8 @@ Properties
 +---------------------------------------------------------+---------------------------------------------------------------------------------------+-------------------------+
 | :ref:`Color<class_Color>`                               | :ref:`color<class_CPUParticles2D_property_color>`                                     | ``Color( 1, 1, 1, 1 )`` |
 +---------------------------------------------------------+---------------------------------------------------------------------------------------+-------------------------+
+| :ref:`Gradient<class_Gradient>`                         | :ref:`color_initial_ramp<class_CPUParticles2D_property_color_initial_ramp>`           |                         |
++---------------------------------------------------------+---------------------------------------------------------------------------------------+-------------------------+
 | :ref:`Gradient<class_Gradient>`                         | :ref:`color_ramp<class_CPUParticles2D_property_color_ramp>`                           |                         |
 +---------------------------------------------------------+---------------------------------------------------------------------------------------+-------------------------+
 | :ref:`float<class_float>`                               | :ref:`damping<class_CPUParticles2D_property_damping>`                                 | ``0.0``                 |
@@ -323,7 +325,7 @@ Property Descriptions
 
 The number of particles emitted in one emission cycle (corresponding to the :ref:`lifetime<class_CPUParticles2D_property_lifetime>`).
 
-**Note:** Changing :ref:`amount<class_CPUParticles2D_property_amount>` will reset the particle emission, therefore removing all particles that were already emitted before changing :ref:`amount<class_CPUParticles2D_property_amount>`.
+\ **Note:** Changing :ref:`amount<class_CPUParticles2D_property_amount>` will reset the particle emission, therefore removing all particles that were already emitted before changing :ref:`amount<class_CPUParticles2D_property_amount>`.
 
 ----
 
@@ -527,6 +529,20 @@ Each particle's initial color. If :ref:`texture<class_CPUParticles2D_property_te
 
 ----
 
+.. _class_CPUParticles2D_property_color_initial_ramp:
+
+- :ref:`Gradient<class_Gradient>` **color_initial_ramp**
+
++----------+-------------------------------+
+| *Setter* | set_color_initial_ramp(value) |
++----------+-------------------------------+
+| *Getter* | get_color_initial_ramp()      |
++----------+-------------------------------+
+
+Each particle's initial color will vary along this :ref:`GradientTexture<class_GradientTexture>` (multiplied with :ref:`color<class_CPUParticles2D_property_color>`).
+
+----
+
 .. _class_CPUParticles2D_property_color_ramp:
 
 - :ref:`Gradient<class_Gradient>` **color_ramp**
@@ -985,7 +1001,7 @@ If ``true``, particles use the parent node's coordinate space. If ``false``, the
 
 Normal map to be used for the :ref:`texture<class_CPUParticles2D_property_texture>` property.
 
-**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:** 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.
 
 ----
 

+ 3 - 3
classes/class_crypto.rst

@@ -49,7 +49,7 @@ For now, this includes generating cryptographically secure random bytes, RSA key
         assert(verified)
         assert(data.to_utf8() == decrypted)
 
-**Note:** Not available in HTML5 exports.
+\ **Note:** Not available in HTML5 exports.
 
 Methods
 -------
@@ -93,7 +93,7 @@ See `this blog post <https://paragonie.com/blog/2015/11/preventing-timing-attack
 
 Decrypt the given ``ciphertext`` with the provided private ``key``.
 
-**Note:** The maximum size of accepted ciphertext is limited by the key size.
+\ **Note:** The maximum size of accepted ciphertext is limited by the key size.
 
 ----
 
@@ -103,7 +103,7 @@ Decrypt the given ``ciphertext`` with the provided private ``key``.
 
 Encrypt the given ``plaintext`` with the provided public ``key``.
 
-**Note:** The maximum size of accepted plaintext is limited by the key size.
+\ **Note:** The maximum size of accepted plaintext is limited by the key size.
 
 ----
 

+ 3 - 3
classes/class_cryptokey.rst

@@ -20,7 +20,7 @@ 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.
+\ **Note:** Not available in HTML5 exports.
 
 Methods
 -------
@@ -54,7 +54,7 @@ Return ``true`` if this CryptoKey only has the public part, and not the private
 
 Loads a key from ``path``. If ``public_only`` is ``true``, only the public key will be loaded.
 
-**Note:** ``path`` should be a "\*.pub" file if ``public_only`` is ``true``, a "\*.key" file otherwise.
+\ **Note:** ``path`` should be a "\*.pub" file if ``public_only`` is ``true``, a "\*.key" file otherwise.
 
 ----
 
@@ -72,7 +72,7 @@ Loads a key from the given ``string``. If ``public_only`` is ``true``, only the
 
 Saves a key to the given ``path``. If ``public_only`` is ``true``, only the public key will be saved.
 
-**Note:** ``path`` should be a "\*.pub" file if ``public_only`` is ``true``, a "\*.key" file otherwise.
+\ **Note:** ``path`` should be a "\*.pub" file if ``public_only`` is ``true``, a "\*.key" file otherwise.
 
 ----
 

+ 2 - 2
classes/class_csgbox.rst

@@ -18,12 +18,12 @@ Description
 
 This node allows you to create a box for use with the CSG system.
 
-**Note:** CSG nodes are intended to be used for level prototyping. Creating CSG nodes has a significant CPU cost compared to creating a :ref:`MeshInstance<class_MeshInstance>` with a :ref:`PrimitiveMesh<class_PrimitiveMesh>`. Moving a CSG node within another CSG node also has a significant CPU cost, so it should be avoided during gameplay.
+\ **Note:** CSG nodes are intended to be used for level prototyping. Creating CSG nodes has a significant CPU cost compared to creating a :ref:`MeshInstance<class_MeshInstance>` with a :ref:`PrimitiveMesh<class_PrimitiveMesh>`. Moving a CSG node within another CSG node also has a significant CPU cost, so it should be avoided during gameplay.
 
 Tutorials
 ---------
 
-- `Prototyping levels with CSG <$DOCS_URL/tutorials/3d/csg_tools.html>`__
+- :doc:`Prototyping levels with CSG <../tutorials/3d/csg_tools>`
 
 Properties
 ----------

+ 2 - 2
classes/class_csgcombiner.rst

@@ -18,12 +18,12 @@ Description
 
 For complex arrangements of shapes, it is sometimes needed to add structure to your CSG nodes. The CSGCombiner node allows you to create this structure. The node encapsulates the result of the CSG operations of its children. In this way, it is possible to do operations on one set of shapes that are children of one CSGCombiner node, and a set of separate operations on a second set of shapes that are children of a second CSGCombiner node, and then do an operation that takes the two end results as its input to create the final shape.
 
-**Note:** CSG nodes are intended to be used for level prototyping. Creating CSG nodes has a significant CPU cost compared to creating a :ref:`MeshInstance<class_MeshInstance>` with a :ref:`PrimitiveMesh<class_PrimitiveMesh>`. Moving a CSG node within another CSG node also has a significant CPU cost, so it should be avoided during gameplay.
+\ **Note:** CSG nodes are intended to be used for level prototyping. Creating CSG nodes has a significant CPU cost compared to creating a :ref:`MeshInstance<class_MeshInstance>` with a :ref:`PrimitiveMesh<class_PrimitiveMesh>`. Moving a CSG node within another CSG node also has a significant CPU cost, so it should be avoided during gameplay.
 
 Tutorials
 ---------
 
-- `Prototyping levels with CSG <$DOCS_URL/tutorials/3d/csg_tools.html>`__
+- :doc:`Prototyping levels with CSG <../tutorials/3d/csg_tools>`
 
 .. |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_csgcylinder.rst

@@ -18,12 +18,12 @@ Description
 
 This node allows you to create a cylinder (or cone) for use with the CSG system.
 
-**Note:** CSG nodes are intended to be used for level prototyping. Creating CSG nodes has a significant CPU cost compared to creating a :ref:`MeshInstance<class_MeshInstance>` with a :ref:`PrimitiveMesh<class_PrimitiveMesh>`. Moving a CSG node within another CSG node also has a significant CPU cost, so it should be avoided during gameplay.
+\ **Note:** CSG nodes are intended to be used for level prototyping. Creating CSG nodes has a significant CPU cost compared to creating a :ref:`MeshInstance<class_MeshInstance>` with a :ref:`PrimitiveMesh<class_PrimitiveMesh>`. Moving a CSG node within another CSG node also has a significant CPU cost, so it should be avoided during gameplay.
 
 Tutorials
 ---------
 
-- `Prototyping levels with CSG <$DOCS_URL/tutorials/3d/csg_tools.html>`__
+- :doc:`Prototyping levels with CSG <../tutorials/3d/csg_tools>`
 
 Properties
 ----------

+ 3 - 3
classes/class_csgmesh.rst

@@ -18,12 +18,12 @@ Description
 
 This CSG node allows you to use any mesh resource as a CSG shape, provided it is closed, does not self-intersect, does not contain internal faces and has no edges that connect to more than two faces. See also :ref:`CSGPolygon<class_CSGPolygon>` for drawing 2D extruded polygons to be used as CSG nodes.
 
-**Note:** CSG nodes are intended to be used for level prototyping. Creating CSG nodes has a significant CPU cost compared to creating a :ref:`MeshInstance<class_MeshInstance>` with a :ref:`PrimitiveMesh<class_PrimitiveMesh>`. Moving a CSG node within another CSG node also has a significant CPU cost, so it should be avoided during gameplay.
+\ **Note:** CSG nodes are intended to be used for level prototyping. Creating CSG nodes has a significant CPU cost compared to creating a :ref:`MeshInstance<class_MeshInstance>` with a :ref:`PrimitiveMesh<class_PrimitiveMesh>`. Moving a CSG node within another CSG node also has a significant CPU cost, so it should be avoided during gameplay.
 
 Tutorials
 ---------
 
-- `Prototyping levels with CSG <$DOCS_URL/tutorials/3d/csg_tools.html>`__
+- :doc:`Prototyping levels with CSG <../tutorials/3d/csg_tools>`
 
 Properties
 ----------
@@ -63,7 +63,7 @@ The :ref:`Material<class_Material>` used in drawing the CSG shape.
 
 The :ref:`Mesh<class_Mesh>` resource to use as a CSG shape.
 
-**Note:** When using an :ref:`ArrayMesh<class_ArrayMesh>`, avoid meshes with vertex normals unless a flat shader is required. By default, CSGMesh will ignore the mesh's vertex normals and use a smooth shader calculated using the faces' normals. If a flat shader is required, ensure that all faces' vertex normals are parallel.
+\ **Note:** When using an :ref:`ArrayMesh<class_ArrayMesh>`, avoid meshes with vertex normals unless a flat shader is required. By default, CSGMesh will ignore the mesh's vertex normals and use a smooth shader calculated using the faces' normals. If a flat shader is required, ensure that all faces' vertex normals are parallel.
 
 .. |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 - 5
classes/class_csgpolygon.rst

@@ -18,12 +18,12 @@ Description
 
 An array of 2D points is extruded to quickly and easily create a variety of 3D meshes. See also :ref:`CSGMesh<class_CSGMesh>` for using 3D meshes as CSG nodes.
 
-**Note:** CSG nodes are intended to be used for level prototyping. Creating CSG nodes has a significant CPU cost compared to creating a :ref:`MeshInstance<class_MeshInstance>` with a :ref:`PrimitiveMesh<class_PrimitiveMesh>`. Moving a CSG node within another CSG node also has a significant CPU cost, so it should be avoided during gameplay.
+\ **Note:** CSG nodes are intended to be used for level prototyping. Creating CSG nodes has a significant CPU cost compared to creating a :ref:`MeshInstance<class_MeshInstance>` with a :ref:`PrimitiveMesh<class_PrimitiveMesh>`. Moving a CSG node within another CSG node also has a significant CPU cost, so it should be avoided during gameplay.
 
 Tutorials
 ---------
 
-- `Prototyping levels with CSG <$DOCS_URL/tutorials/3d/csg_tools.html>`__
+- :doc:`Prototyping levels with CSG <../tutorials/3d/csg_tools>`
 
 Properties
 ----------
@@ -95,11 +95,11 @@ enum **PathRotation**:
 
 - **PATH_ROTATION_POLYGON** = **0** --- The :ref:`polygon<class_CSGPolygon_property_polygon>` shape is not rotated.
 
-**Note:** Requires the path's Z coordinates to continually decrease to ensure viable shapes.
+\ **Note:** Requires the path's Z coordinates to continually decrease to ensure viable shapes.
 
 - **PATH_ROTATION_PATH** = **1** --- The :ref:`polygon<class_CSGPolygon_property_polygon>` shape is rotated along the path, but it is not rotated around the path axis.
 
-**Note:** Requires the path's Z coordinates to continually decrease to ensure viable shapes.
+\ **Note:** Requires the path's Z coordinates to continually decrease to ensure viable shapes.
 
 - **PATH_ROTATION_PATH_FOLLOW** = **2** --- The :ref:`polygon<class_CSGPolygon_property_polygon>` shape follows the path and its rotations around the path axis.
 
@@ -306,7 +306,7 @@ When :ref:`mode<class_CSGPolygon_property_mode>` is :ref:`MODE_PATH<class_CSGPol
 
 The point array that defines the 2D polygon that is extruded. This can be a convex or concave polygon with 3 or more points. The polygon must *not* have any intersecting edges. Otherwise, triangulation will fail and no mesh will be generated.
 
-**Note:** If only 1 or 2 points are defined in :ref:`polygon<class_CSGPolygon_property_polygon>`, no mesh will be generated.
+\ **Note:** If only 1 or 2 points are defined in :ref:`polygon<class_CSGPolygon_property_polygon>`, no mesh will be generated.
 
 ----
 

+ 2 - 2
classes/class_csgprimitive.rst

@@ -20,12 +20,12 @@ Description
 
 Parent class for various CSG primitives. It contains code and functionality that is common between them. It cannot be used directly. Instead use one of the various classes that inherit from it.
 
-**Note:** CSG nodes are intended to be used for level prototyping. Creating CSG nodes has a significant CPU cost compared to creating a :ref:`MeshInstance<class_MeshInstance>` with a :ref:`PrimitiveMesh<class_PrimitiveMesh>`. Moving a CSG node within another CSG node also has a significant CPU cost, so it should be avoided during gameplay.
+\ **Note:** CSG nodes are intended to be used for level prototyping. Creating CSG nodes has a significant CPU cost compared to creating a :ref:`MeshInstance<class_MeshInstance>` with a :ref:`PrimitiveMesh<class_PrimitiveMesh>`. Moving a CSG node within another CSG node also has a significant CPU cost, so it should be avoided during gameplay.
 
 Tutorials
 ---------
 
-- `Prototyping levels with CSG <$DOCS_URL/tutorials/3d/csg_tools.html>`__
+- :doc:`Prototyping levels with CSG <../tutorials/3d/csg_tools>`
 
 Properties
 ----------

+ 4 - 4
classes/class_csgshape.rst

@@ -20,12 +20,12 @@ Description
 
 This is the CSG base class that provides CSG operation support to the various CSG nodes in Godot.
 
-**Note:** CSG nodes are intended to be used for level prototyping. Creating CSG nodes has a significant CPU cost compared to creating a :ref:`MeshInstance<class_MeshInstance>` with a :ref:`PrimitiveMesh<class_PrimitiveMesh>`. Moving a CSG node within another CSG node also has a significant CPU cost, so it should be avoided during gameplay.
+\ **Note:** CSG nodes are intended to be used for level prototyping. Creating CSG nodes has a significant CPU cost compared to creating a :ref:`MeshInstance<class_MeshInstance>` with a :ref:`PrimitiveMesh<class_PrimitiveMesh>`. Moving a CSG node within another CSG node also has a significant CPU cost, so it should be avoided during gameplay.
 
 Tutorials
 ---------
 
-- `Prototyping levels with CSG <$DOCS_URL/tutorials/3d/csg_tools.html>`__
+- :doc:`Prototyping levels with CSG <../tutorials/3d/csg_tools>`
 
 Properties
 ----------
@@ -115,7 +115,7 @@ The physics layers this area is in.
 
 Collidable objects can exist in any of 32 different layers. These layers work like a tagging system, and are not visual. A collidable can use these layers to select with which objects it can collide, using the collision_mask property.
 
-A contact is detected if object A is in any of the layers that object B scans, or object B is in any layer scanned by object A. See `Collision layers and masks <https://docs.godotengine.org/en/3.4/tutorials/physics/physics_introduction.html#collision-layers-and-masks>`__ in the documentation for more information.
+A contact is detected if object A is in any of the layers that object B scans, or object B is in any layer scanned by object A. See `Collision layers and masks <../tutorials/physics/physics_introduction.html#collision-layers-and-masks>`__ in the documentation for more information.
 
 ----
 
@@ -131,7 +131,7 @@ A contact is detected if object A is in any of the layers that object B scans, o
 | *Getter*  | get_collision_mask()      |
 +-----------+---------------------------+
 
-The physics layers this CSG shape scans for collisions. See `Collision layers and masks <https://docs.godotengine.org/en/3.4/tutorials/physics/physics_introduction.html#collision-layers-and-masks>`__ in the documentation for more information.
+The physics layers this CSG shape scans for collisions. See `Collision layers and masks <../tutorials/physics/physics_introduction.html#collision-layers-and-masks>`__ in the documentation for more information.
 
 ----
 

+ 2 - 2
classes/class_csgsphere.rst

@@ -18,12 +18,12 @@ Description
 
 This node allows you to create a sphere for use with the CSG system.
 
-**Note:** CSG nodes are intended to be used for level prototyping. Creating CSG nodes has a significant CPU cost compared to creating a :ref:`MeshInstance<class_MeshInstance>` with a :ref:`PrimitiveMesh<class_PrimitiveMesh>`. Moving a CSG node within another CSG node also has a significant CPU cost, so it should be avoided during gameplay.
+\ **Note:** CSG nodes are intended to be used for level prototyping. Creating CSG nodes has a significant CPU cost compared to creating a :ref:`MeshInstance<class_MeshInstance>` with a :ref:`PrimitiveMesh<class_PrimitiveMesh>`. Moving a CSG node within another CSG node also has a significant CPU cost, so it should be avoided during gameplay.
 
 Tutorials
 ---------
 
-- `Prototyping levels with CSG <$DOCS_URL/tutorials/3d/csg_tools.html>`__
+- :doc:`Prototyping levels with CSG <../tutorials/3d/csg_tools>`
 
 Properties
 ----------

+ 2 - 2
classes/class_csgtorus.rst

@@ -18,12 +18,12 @@ Description
 
 This node allows you to create a torus for use with the CSG system.
 
-**Note:** CSG nodes are intended to be used for level prototyping. Creating CSG nodes has a significant CPU cost compared to creating a :ref:`MeshInstance<class_MeshInstance>` with a :ref:`PrimitiveMesh<class_PrimitiveMesh>`. Moving a CSG node within another CSG node also has a significant CPU cost, so it should be avoided during gameplay.
+\ **Note:** CSG nodes are intended to be used for level prototyping. Creating CSG nodes has a significant CPU cost compared to creating a :ref:`MeshInstance<class_MeshInstance>` with a :ref:`PrimitiveMesh<class_PrimitiveMesh>`. Moving a CSG node within another CSG node also has a significant CPU cost, so it should be avoided during gameplay.
 
 Tutorials
 ---------
 
-- `Prototyping levels with CSG <$DOCS_URL/tutorials/3d/csg_tools.html>`__
+- :doc:`Prototyping levels with CSG <../tutorials/3d/csg_tools>`
 
 Properties
 ----------

+ 1 - 1
classes/class_cubemesh.rst

@@ -20,7 +20,7 @@ Generate an axis-aligned cuboid :ref:`PrimitiveMesh<class_PrimitiveMesh>`.
 
 The cube's UV layout is arranged in a 3×2 layout that allows texturing each face individually. To apply the same texture on all faces, change the material's UV property to ``Vector3(3, 2, 1)``.
 
-**Note:** When using a large textured ``CubeMesh`` (e.g. as a floor), you may stumble upon UV jittering issues depending on the camera angle. To solve this, increase :ref:`subdivide_depth<class_CubeMesh_property_subdivide_depth>`, :ref:`subdivide_height<class_CubeMesh_property_subdivide_height>` and :ref:`subdivide_width<class_CubeMesh_property_subdivide_width>` until you no longer notice UV jittering.
+\ **Note:** When using a large textured ``CubeMesh`` (e.g. as a floor), you may stumble upon UV jittering issues depending on the camera angle. To solve this, increase :ref:`subdivide_depth<class_CubeMesh_property_subdivide_depth>`, :ref:`subdivide_height<class_CubeMesh_property_subdivide_height>` and :ref:`subdivide_width<class_CubeMesh_property_subdivide_width>` until you no longer notice UV jittering.
 
 Properties
 ----------

+ 26 - 6
classes/class_cullinstance.rst

@@ -20,17 +20,19 @@ Description
 
 Provides common functionality to nodes that can be culled by the :ref:`Portal<class_Portal>` system.
 
-``Static`` and ``Dynamic`` objects are the most efficiently managed objects in the system, but there are some caveats. They are expected to be present initially when :ref:`Room<class_Room>`\ s are converted using the :ref:`RoomManager<class_RoomManager>` ``rooms_convert`` function, and their lifetime should be the same as the game level (i.e. present until you call ``rooms_clear`` on the :ref:`RoomManager<class_RoomManager>`. Although you shouldn't create / delete these objects during gameplay, you can manage their visibility with the standard ``hide`` and ``show`` commands.
+\ ``Static`` and ``Dynamic`` objects are the most efficiently managed objects in the system, but there are some caveats. They are expected to be present initially when :ref:`Room<class_Room>`\ s are converted using the :ref:`RoomManager<class_RoomManager>` ``rooms_convert`` function, and their lifetime should be the same as the game level (i.e. present until you call ``rooms_clear`` on the :ref:`RoomManager<class_RoomManager>`. Although you shouldn't create / delete these objects during gameplay, you can manage their visibility with the standard ``hide`` and ``show`` commands.
 
-``Roaming`` objects on the other hand, require extra processing to keep track of which :ref:`Room<class_Room>` they are within. This enables them to be culled effectively, wherever they are.
+\ ``Roaming`` objects on the other hand, require extra processing to keep track of which :ref:`Room<class_Room>` they are within. This enables them to be culled effectively, wherever they are.
 
-``Global`` objects are not culled by the portal system, and use view frustum culling only.
+\ ``Global`` objects are not culled by the portal system, and use view frustum culling only.
 
 Objects that are not ``Static`` or ``Dynamic`` can be freely created and deleted during the lifetime of the game level.
 
 Properties
 ----------
 
++-------------------------------------------------+---------------------------------------------------------------------------+----------+
+| :ref:`bool<class_bool>`                         | :ref:`allow_merging<class_CullInstance_property_allow_merging>`           | ``true`` |
 +-------------------------------------------------+---------------------------------------------------------------------------+----------+
 | :ref:`int<class_int>`                           | :ref:`autoplace_priority<class_CullInstance_property_autoplace_priority>` | ``0``    |
 +-------------------------------------------------+---------------------------------------------------------------------------+----------+
@@ -58,11 +60,11 @@ enum **PortalMode**:
 
 - **PORTAL_MODE_STATIC** = **0** --- Use for instances within :ref:`Room<class_Room>`\ s that will **not move** - e.g. walls, floors.
 
-**Note:** If you attempt to delete a ``PORTAL_MODE_STATIC`` instance while the room graph is loaded (converted), it will unload the room graph and deactivate portal culling. This is because the **room graph** data has been invalidated. You will need to reconvert the rooms using the :ref:`RoomManager<class_RoomManager>` to activate the system again.
+\ **Note:** If you attempt to delete a ``PORTAL_MODE_STATIC`` instance while the room graph is loaded (converted), it will unload the room graph and deactivate portal culling. This is because the **room graph** data has been invalidated. You will need to reconvert the rooms using the :ref:`RoomManager<class_RoomManager>` to activate the system again.
 
 - **PORTAL_MODE_DYNAMIC** = **1** --- Use for instances within rooms that will move but **not change room** - e.g. moving platforms.
 
-**Note:** If you attempt to delete a ``PORTAL_MODE_DYNAMIC`` instance while the room graph is loaded (converted), it will unload the room graph and deactivate portal culling. This is because the **room graph** data has been invalidated. You will need to reconvert the rooms using the :ref:`RoomManager<class_RoomManager>` to activate the system again.
+\ **Note:** If you attempt to delete a ``PORTAL_MODE_DYNAMIC`` instance while the room graph is loaded (converted), it will unload the room graph and deactivate portal culling. This is because the **room graph** data has been invalidated. You will need to reconvert the rooms using the :ref:`RoomManager<class_RoomManager>` to activate the system again.
 
 - **PORTAL_MODE_ROAMING** = **2** --- Use for instances that will move **between** :ref:`Room<class_Room>`\ s - e.g. players.
 
@@ -73,6 +75,24 @@ enum **PortalMode**:
 Property Descriptions
 ---------------------
 
+.. _class_CullInstance_property_allow_merging:
+
+- :ref:`bool<class_bool>` **allow_merging**
+
++-----------+--------------------------+
+| *Default* | ``true``                 |
++-----------+--------------------------+
+| *Setter*  | set_allow_merging(value) |
++-----------+--------------------------+
+| *Getter*  | get_allow_merging()      |
++-----------+--------------------------+
+
+This allows fine control over the mesh merging feature in the :ref:`RoomManager<class_RoomManager>`.
+
+Setting this option to ``false`` can be used to prevent an instance being merged.
+
+----
+
 .. _class_CullInstance_property_autoplace_priority:
 
 - :ref:`int<class_int>` **autoplace_priority**
@@ -107,7 +127,7 @@ This can be used to control autoplacement of building exteriors in an outer :ref
 
 When a manual bound has not been explicitly specified for a :ref:`Room<class_Room>`, the convex hull bound will be estimated from the geometry of the objects within the room. This setting determines whether the geometry of an object is included in this estimate of the room bound.
 
-**Note:** This setting is only relevant when the object is set to ``PORTAL_MODE_STATIC`` or ``PORTAL_MODE_DYNAMIC``, and for :ref:`Portal<class_Portal>`\ s.
+\ **Note:** This setting is only relevant when the object is set to ``PORTAL_MODE_STATIC`` or ``PORTAL_MODE_DYNAMIC``, and for :ref:`Portal<class_Portal>`\ s.
 
 ----
 

+ 4 - 4
classes/class_curve2d.rst

@@ -128,7 +128,7 @@ Returns the cache of points as a :ref:`PoolVector2Array<class_PoolVector2Array>`
 
 Returns the closest offset to ``to_point``. This offset is meant to be used in :ref:`interpolate_baked<class_Curve2D_method_interpolate_baked>`.
 
-``to_point`` must be in this curve's local space.
+\ ``to_point`` must be in this curve's local space.
 
 ----
 
@@ -138,7 +138,7 @@ Returns the closest offset to ``to_point``. This offset is meant to be used in :
 
 Returns the closest baked point (in curve's local space) to ``to_point``.
 
-``to_point`` must be in this curve's local space.
+\ ``to_point`` must be in this curve's local space.
 
 ----
 
@@ -244,9 +244,9 @@ Returns a list of points along the curve, with a curvature controlled point dens
 
 This approximation makes straight segments between each point, then subdivides those segments until the resulting shape is similar enough.
 
-``max_stages`` controls how many subdivisions a curve segment may face before it is considered approximate enough. Each subdivision splits the segment in half, so the default 5 stages may mean up to 32 subdivisions per curve segment. Increase with care!
+\ ``max_stages`` controls how many subdivisions a curve segment may face before it is considered approximate enough. Each subdivision splits the segment in half, so the default 5 stages may mean up to 32 subdivisions per curve segment. Increase with care!
 
-``tolerance_degrees`` controls how many degrees the midpoint of a segment may deviate from the real curve, before the segment has to be subdivided.
+\ ``tolerance_degrees`` controls how many degrees the midpoint of a segment may deviate from the real curve, before the segment has to be subdivided.
 
 .. |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_curve3d.rst

@@ -174,7 +174,7 @@ If :ref:`up_vector_enabled<class_Curve3D_property_up_vector_enabled>` is ``false
 
 Returns the closest offset to ``to_point``. This offset is meant to be used in :ref:`interpolate_baked<class_Curve3D_method_interpolate_baked>` or :ref:`interpolate_baked_up_vector<class_Curve3D_method_interpolate_baked_up_vector>`.
 
-``to_point`` must be in this curve's local space.
+\ ``to_point`` must be in this curve's local space.
 
 ----
 
@@ -184,7 +184,7 @@ Returns the closest offset to ``to_point``. This offset is meant to be used in :
 
 Returns the closest baked point (in curve's local space) to ``to_point``.
 
-``to_point`` must be in this curve's local space.
+\ ``to_point`` must be in this curve's local space.
 
 ----
 
@@ -320,9 +320,9 @@ Returns a list of points along the curve, with a curvature controlled point dens
 
 This approximation makes straight segments between each point, then subdivides those segments until the resulting shape is similar enough.
 
-``max_stages`` controls how many subdivisions a curve segment may face before it is considered approximate enough. Each subdivision splits the segment in half, so the default 5 stages may mean up to 32 subdivisions per curve segment. Increase with care!
+\ ``max_stages`` controls how many subdivisions a curve segment may face before it is considered approximate enough. Each subdivision splits the segment in half, so the default 5 stages may mean up to 32 subdivisions per curve segment. Increase with care!
 
-``tolerance_degrees`` controls how many degrees the midpoint of a segment may deviate from the real curve, before the segment has to be subdivided.
+\ ``tolerance_degrees`` controls how many degrees the midpoint of a segment may deviate from the real curve, before the segment has to be subdivided.
 
 .. |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.)`

+ 8 - 8
classes/class_dictionary.rst

@@ -20,7 +20,7 @@ You can define a dictionary by placing a comma-separated list of ``key: value``
 
 Erasing elements while iterating over them **is not supported** and will result in undefined behavior.
 
-**Note:** Dictionaries are always passed by reference. To get a copy of a dictionary which can be modified independently of the original dictionary, use :ref:`duplicate<class_Dictionary_method_duplicate>`.
+\ **Note:** Dictionaries are always passed by reference. To get a copy of a dictionary which can be modified independently of the original dictionary, use :ref:`duplicate<class_Dictionary_method_duplicate>`.
 
 Creating a dictionary:
 
@@ -84,7 +84,7 @@ Finally, dictionaries can contain different types of keys and values in the same
         "sub_dict": {"sub_key": "Nested value"},
     }
 
-**Note:** Unlike :ref:`Array<class_Array>`\ s, you can't compare dictionaries directly:
+\ **Note:** Unlike :ref:`Array<class_Array>`\ s, you can't compare dictionaries directly:
 
 ::
 
@@ -110,12 +110,12 @@ You need to first calculate the dictionary's hash with :ref:`hash<class_Dictiona
     func compare_dictionaries():
         print(dict1.hash() == dict2.hash()) # Will print true.
 
-**Note:** When declaring a dictionary with ``const``, the dictionary itself can still be mutated by defining the values of individual keys. Using ``const`` will only prevent assigning the constant with another value after it was initialized.
+\ **Note:** When declaring a dictionary with ``const``, the dictionary itself can still be mutated by defining the values of individual keys. Using ``const`` will only prevent assigning the constant with another value after it was initialized.
 
 Tutorials
 ---------
 
-- `#dictionary <../tutorials/scripting/gdscript/gdscript_basics.html#dictionary>`_ in :doc:`../tutorials/scripting/gdscript/gdscript_basics`
+- `GDScript basics: Dictionary <../tutorials/scripting/gdscript/gdscript_basics.html#dictionary>`__
 
 - `3D Voxel Demo <https://godotengine.org/asset-library/asset/676>`__
 
@@ -181,7 +181,7 @@ Returns ``true`` if the dictionary is empty.
 
 Erase a dictionary key/value pair by key. Returns ``true`` if the given key was present in the dictionary, ``false`` otherwise.
 
-**Note:** Don't erase elements while iterating over the dictionary. You can iterate over the :ref:`keys<class_Dictionary_method_keys>` array instead.
+\ **Note:** Don't erase elements while iterating over the dictionary. You can iterate over the :ref:`keys<class_Dictionary_method_keys>` array instead.
 
 ----
 
@@ -199,7 +199,7 @@ Returns the current value for the specified key in the ``Dictionary``. If the ke
 
 Returns ``true`` if the dictionary has a given key.
 
-**Note:** This is equivalent to using the ``in`` operator as follows:
+\ **Note:** This is equivalent to using the ``in`` operator as follows:
 
 ::
 
@@ -232,9 +232,9 @@ Returns a hashed 32-bit integer value representing the dictionary contents. This
     # The line below prints `true`, whereas it would have printed `false` if both variables were compared directly.
     print(dict1.hash() == dict2.hash())
 
-**Note:** Dictionaries with the same keys/values but in a different order will have a different hash.
+\ **Note:** Dictionaries with the same keys/values but in a different order will have a different hash.
 
-**Note:** Dictionaries with equal content will always produce identical hash values. However, the reverse is not true. Returning identical hash values does *not* imply the dictionaries are equal, because different dictionaries can have identical hash values due to hash collisions.
+\ **Note:** Dictionaries with equal content will always produce identical hash values. However, the reverse is not true. Returning identical hash values does *not* imply the dictionaries are equal, because different dictionaries can have identical hash values due to hash collisions.
 
 ----
 

+ 21 - 21
classes/class_directionallight.rst

@@ -26,27 +26,27 @@ Tutorials
 Properties
 ----------
 
-+-----------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------+-----------------------------+
-| :ref:`float<class_float>`                                       | :ref:`directional_shadow_bias_split_scale<class_DirectionalLight_property_directional_shadow_bias_split_scale>` | ``0.25``                    |
-+-----------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------+-----------------------------+
-| :ref:`bool<class_bool>`                                         | :ref:`directional_shadow_blend_splits<class_DirectionalLight_property_directional_shadow_blend_splits>`         | ``false``                   |
-+-----------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------+-----------------------------+
-| :ref:`ShadowDepthRange<enum_DirectionalLight_ShadowDepthRange>` | :ref:`directional_shadow_depth_range<class_DirectionalLight_property_directional_shadow_depth_range>`           | ``0``                       |
-+-----------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------+-----------------------------+
-| :ref:`float<class_float>`                                       | :ref:`directional_shadow_max_distance<class_DirectionalLight_property_directional_shadow_max_distance>`         | ``100.0``                   |
-+-----------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------+-----------------------------+
-| :ref:`ShadowMode<enum_DirectionalLight_ShadowMode>`             | :ref:`directional_shadow_mode<class_DirectionalLight_property_directional_shadow_mode>`                         | ``2``                       |
-+-----------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------+-----------------------------+
-| :ref:`float<class_float>`                                       | :ref:`directional_shadow_normal_bias<class_DirectionalLight_property_directional_shadow_normal_bias>`           | ``0.8``                     |
-+-----------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------+-----------------------------+
-| :ref:`float<class_float>`                                       | :ref:`directional_shadow_split_1<class_DirectionalLight_property_directional_shadow_split_1>`                   | ``0.1``                     |
-+-----------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------+-----------------------------+
-| :ref:`float<class_float>`                                       | :ref:`directional_shadow_split_2<class_DirectionalLight_property_directional_shadow_split_2>`                   | ``0.2``                     |
-+-----------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------+-----------------------------+
-| :ref:`float<class_float>`                                       | :ref:`directional_shadow_split_3<class_DirectionalLight_property_directional_shadow_split_3>`                   | ``0.5``                     |
-+-----------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------+-----------------------------+
-| :ref:`float<class_float>`                                       | shadow_bias                                                                                                     | ``0.1`` *(parent override)* |
-+-----------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------+-----------------------------+
++-----------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------+--------------------------------------------------------------------+
+| :ref:`float<class_float>`                                       | :ref:`directional_shadow_bias_split_scale<class_DirectionalLight_property_directional_shadow_bias_split_scale>` | ``0.25``                                                           |
++-----------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------+--------------------------------------------------------------------+
+| :ref:`bool<class_bool>`                                         | :ref:`directional_shadow_blend_splits<class_DirectionalLight_property_directional_shadow_blend_splits>`         | ``false``                                                          |
++-----------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------+--------------------------------------------------------------------+
+| :ref:`ShadowDepthRange<enum_DirectionalLight_ShadowDepthRange>` | :ref:`directional_shadow_depth_range<class_DirectionalLight_property_directional_shadow_depth_range>`           | ``0``                                                              |
++-----------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------+--------------------------------------------------------------------+
+| :ref:`float<class_float>`                                       | :ref:`directional_shadow_max_distance<class_DirectionalLight_property_directional_shadow_max_distance>`         | ``100.0``                                                          |
++-----------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------+--------------------------------------------------------------------+
+| :ref:`ShadowMode<enum_DirectionalLight_ShadowMode>`             | :ref:`directional_shadow_mode<class_DirectionalLight_property_directional_shadow_mode>`                         | ``2``                                                              |
++-----------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------+--------------------------------------------------------------------+
+| :ref:`float<class_float>`                                       | :ref:`directional_shadow_normal_bias<class_DirectionalLight_property_directional_shadow_normal_bias>`           | ``0.8``                                                            |
++-----------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------+--------------------------------------------------------------------+
+| :ref:`float<class_float>`                                       | :ref:`directional_shadow_split_1<class_DirectionalLight_property_directional_shadow_split_1>`                   | ``0.1``                                                            |
++-----------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------+--------------------------------------------------------------------+
+| :ref:`float<class_float>`                                       | :ref:`directional_shadow_split_2<class_DirectionalLight_property_directional_shadow_split_2>`                   | ``0.2``                                                            |
++-----------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------+--------------------------------------------------------------------+
+| :ref:`float<class_float>`                                       | :ref:`directional_shadow_split_3<class_DirectionalLight_property_directional_shadow_split_3>`                   | ``0.5``                                                            |
++-----------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------+--------------------------------------------------------------------+
+| :ref:`float<class_float>`                                       | shadow_bias                                                                                                     | ``0.1`` (overrides :ref:`Light<class_Light_property_shadow_bias>`) |
++-----------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------+--------------------------------------------------------------------+
 
 Enumerations
 ------------

部分文件因文件數量過多而無法顯示