Jelajahi Sumber

classref: Sync with latest 4.0-dev

Rémi Verschelde 3 tahun lalu
induk
melakukan
f6f6c1bf19
100 mengubah file dengan 5673 tambahan dan 5196 penghapusan
  1. 0 13
      classes/class_@c#.rst
  2. 122 1371
      classes/[email protected]
  3. 504 292
      classes/[email protected]
  4. 0 13
      classes/[email protected]
  5. 0 18
      classes/[email protected]
  6. 185 89
      classes/class_aabb.rst
  7. 70 18
      classes/class_acceptdialog.rst
  8. 178 0
      classes/class_aescontext.rst
  9. 54 0
      classes/class_animatablebody2d.rst
  10. 63 0
      classes/class_animatablebody3d.rst
  11. 71 92
      classes/class_animatedsprite2d.rst
  12. 26 7
      classes/class_animatedsprite3d.rst
  13. 73 13
      classes/class_animatedtexture.rst
  14. 191 160
      classes/class_animation.rst
  15. 93 87
      classes/class_animationnode.rst
  16. 7 1
      classes/class_animationnodeadd2.rst
  17. 9 1
      classes/class_animationnodeadd3.rst
  18. 13 3
      classes/class_animationnodeanimation.rst
  19. 11 1
      classes/class_animationnodeblend2.rst
  20. 7 1
      classes/class_animationnodeblend3.rst
  21. 13 7
      classes/class_animationnodeblendspace1d.rst
  22. 47 39
      classes/class_animationnodeblendspace2d.rst
  23. 34 28
      classes/class_animationnodeblendtree.rst
  24. 11 3
      classes/class_animationnodeoneshot.rst
  25. 11 1
      classes/class_animationnodeoutput.rst
  26. 44 28
      classes/class_animationnodestatemachine.rst
  27. 55 21
      classes/class_animationnodestatemachineplayback.rst
  28. 21 6
      classes/class_animationnodestatemachinetransition.rst
  29. 9 1
      classes/class_animationnodetimescale.rst
  30. 33 2
      classes/class_animationnodetimeseek.rst
  31. 15 5
      classes/class_animationnodetransition.rst
  32. 85 51
      classes/class_animationplayer.rst
  33. 7 1
      classes/class_animationrootnode.rst
  34. 7 1
      classes/class_animationtrackeditplugin.rst
  35. 51 32
      classes/class_animationtree.rst
  36. 0 542
      classes/class_area.rst
  37. 114 142
      classes/class_area2d.rst
  38. 569 0
      classes/class_area3d.rst
  39. 474 149
      classes/class_array.rst
  40. 141 176
      classes/class_arraymesh.rst
  41. 0 27
      classes/class_arvrcamera.rst
  42. 0 180
      classes/class_arvrcontroller.rst
  43. 0 254
      classes/class_arvrinterface.rst
  44. 0 20
      classes/class_arvrinterfacegdnative.rst
  45. 0 188
      classes/class_arvrpositionaltracker.rst
  46. 0 283
      classes/class_arvrserver.rst
  47. 147 0
      classes/class_aspectratiocontainer.rst
  48. 177 74
      classes/class_astar.rst
  49. 156 72
      classes/class_astar2d.rst
  50. 34 26
      classes/class_atlastexture.rst
  51. 7 1
      classes/class_audiobuslayout.rst
  52. 13 2
      classes/class_audioeffect.rst
  53. 7 1
      classes/class_audioeffectamplify.rst
  54. 7 1
      classes/class_audioeffectbandlimitfilter.rst
  55. 7 1
      classes/class_audioeffectbandpassfilter.rst
  56. 130 0
      classes/class_audioeffectcapture.rst
  57. 19 13
      classes/class_audioeffectchorus.rst
  58. 9 3
      classes/class_audioeffectcompressor.rst
  59. 7 1
      classes/class_audioeffectdelay.rst
  60. 14 3
      classes/class_audioeffectdistortion.rst
  61. 11 5
      classes/class_audioeffecteq.rst
  62. 7 1
      classes/class_audioeffecteq10.rst
  63. 7 1
      classes/class_audioeffecteq21.rst
  64. 7 1
      classes/class_audioeffecteq6.rst
  65. 13 2
      classes/class_audioeffectfilter.rst
  66. 7 1
      classes/class_audioeffecthighpassfilter.rst
  67. 12 1
      classes/class_audioeffecthighshelffilter.rst
  68. 7 1
      classes/class_audioeffectinstance.rst
  69. 7 1
      classes/class_audioeffectlimiter.rst
  70. 7 1
      classes/class_audioeffectlowpassfilter.rst
  71. 12 1
      classes/class_audioeffectlowshelffilter.rst
  72. 7 1
      classes/class_audioeffectnotchfilter.rst
  73. 7 1
      classes/class_audioeffectpanner.rst
  74. 7 1
      classes/class_audioeffectphaser.rst
  75. 28 18
      classes/class_audioeffectpitchshift.rst
  76. 18 5
      classes/class_audioeffectrecord.rst
  77. 12 1
      classes/class_audioeffectreverb.rst
  78. 41 17
      classes/class_audioeffectspectrumanalyzer.rst
  79. 11 5
      classes/class_audioeffectspectrumanalyzerinstance.rst
  80. 7 1
      classes/class_audioeffectstereoenhance.rst
  81. 66 0
      classes/class_audiolistener2d.rst
  82. 74 0
      classes/class_audiolistener3d.rst
  83. 63 51
      classes/class_audioserver.rst
  84. 60 6
      classes/class_audiostream.rst
  85. 27 2
      classes/class_audiostreamgenerator.rst
  86. 31 8
      classes/class_audiostreamgeneratorplayback.rst
  87. 7 1
      classes/class_audiostreammicrophone.rst
  88. 86 0
      classes/class_audiostreammp3.rst
  89. 28 29
      classes/class_audiostreamoggvorbis.rst
  90. 74 1
      classes/class_audiostreamplayback.rst
  91. 21 0
      classes/class_audiostreamplaybackoggvorbis.rst
  92. 8 2
      classes/class_audiostreamplaybackresampled.rst
  93. 39 3
      classes/class_audiostreamplayer.rst
  94. 32 4
      classes/class_audiostreamplayer2d.rst
  95. 43 45
      classes/class_audiostreamplayer3d.rst
  96. 7 1
      classes/class_audiostreamrandompitch.rst
  97. 41 31
      classes/class_audiostreamsample.rst
  98. 21 13
      classes/class_backbuffercopy.rst
  99. 93 71
      classes/class_basebutton.rst
  100. 465 297
      classes/class_basematerial3d.rst

+ 0 - 13
classes/class_@c#.rst

@@ -1,13 +0,0 @@
-:github_url: hide
-
-.. Generated automatically by doc/tools/makerst.py in Godot's source tree.
-.. DO NOT EDIT THIS FILE, but the @C#.xml source instead.
-.. The source is found in doc/classes or modules/<name>/doc_classes.
-
-.. _class_@C#:
-
-@C#
-===
-
-
-

+ 122 - 1371
classes/[email protected]

@@ -16,194 +16,45 @@ Description
 
 
 List of core built-in GDScript functions. Math functions and other utilities. Everything else is provided by objects. (Keywords: builtin, built in, global functions.)
 List of core built-in GDScript functions. Math functions and other utilities. Everything else is provided by objects. (Keywords: builtin, built in, global functions.)
 
 
+Tutorials
+---------
+
+- :doc:`../tutorials/math/random_number_generation`
+
 Methods
 Methods
 -------
 -------
 
 
-+-----------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`Color<class_Color>`                                 | :ref:`Color8<class_@GDScript_method_Color8>` **(** :ref:`int<class_int>` r8, :ref:`int<class_int>` g8, :ref:`int<class_int>` b8, :ref:`int<class_int>` a8=255 **)**                                                                    |
-+-----------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`Color<class_Color>`                                 | :ref:`ColorN<class_@GDScript_method_ColorN>` **(** :ref:`String<class_String>` name, :ref:`float<class_float>` alpha=1.0 **)**                                                                                                         |
-+-----------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`float<class_float>`                                 | :ref:`abs<class_@GDScript_method_abs>` **(** :ref:`float<class_float>` s **)**                                                                                                                                                         |
-+-----------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`float<class_float>`                                 | :ref:`acos<class_@GDScript_method_acos>` **(** :ref:`float<class_float>` s **)**                                                                                                                                                       |
-+-----------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`float<class_float>`                                 | :ref:`asin<class_@GDScript_method_asin>` **(** :ref:`float<class_float>` s **)**                                                                                                                                                       |
-+-----------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| void                                                      | :ref:`assert<class_@GDScript_method_assert>` **(** :ref:`bool<class_bool>` condition **)**                                                                                                                                             |
-+-----------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`float<class_float>`                                 | :ref:`atan<class_@GDScript_method_atan>` **(** :ref:`float<class_float>` s **)**                                                                                                                                                       |
-+-----------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`float<class_float>`                                 | :ref:`atan2<class_@GDScript_method_atan2>` **(** :ref:`float<class_float>` y, :ref:`float<class_float>` x **)**                                                                                                                        |
-+-----------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`Variant<class_Variant>`                             | :ref:`bytes2var<class_@GDScript_method_bytes2var>` **(** :ref:`PackedByteArray<class_PackedByteArray>` bytes, :ref:`bool<class_bool>` allow_objects=false **)**                                                                        |
-+-----------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`Vector2<class_Vector2>`                             | :ref:`cartesian2polar<class_@GDScript_method_cartesian2polar>` **(** :ref:`float<class_float>` x, :ref:`float<class_float>` y **)**                                                                                                    |
-+-----------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`float<class_float>`                                 | :ref:`ceil<class_@GDScript_method_ceil>` **(** :ref:`float<class_float>` s **)**                                                                                                                                                       |
-+-----------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`String<class_String>`                               | :ref:`char<class_@GDScript_method_char>` **(** :ref:`int<class_int>` code **)**                                                                                                                                                        |
-+-----------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`float<class_float>`                                 | :ref:`clamp<class_@GDScript_method_clamp>` **(** :ref:`float<class_float>` value, :ref:`float<class_float>` min, :ref:`float<class_float>` max **)**                                                                                   |
-+-----------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`Variant<class_Variant>`                             | :ref:`convert<class_@GDScript_method_convert>` **(** :ref:`Variant<class_Variant>` what, :ref:`int<class_int>` type **)**                                                                                                              |
-+-----------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`float<class_float>`                                 | :ref:`cos<class_@GDScript_method_cos>` **(** :ref:`float<class_float>` s **)**                                                                                                                                                         |
-+-----------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`float<class_float>`                                 | :ref:`cosh<class_@GDScript_method_cosh>` **(** :ref:`float<class_float>` s **)**                                                                                                                                                       |
-+-----------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`float<class_float>`                                 | :ref:`db2linear<class_@GDScript_method_db2linear>` **(** :ref:`float<class_float>` db **)**                                                                                                                                            |
-+-----------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :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:`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 **)**                                                                                                                                |
-+-----------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`float<class_float>`                                 | :ref:`ease<class_@GDScript_method_ease>` **(** :ref:`float<class_float>` s, :ref:`float<class_float>` curve **)**                                                                                                                      |
-+-----------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`float<class_float>`                                 | :ref:`exp<class_@GDScript_method_exp>` **(** :ref:`float<class_float>` s **)**                                                                                                                                                         |
-+-----------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`float<class_float>`                                 | :ref:`floor<class_@GDScript_method_floor>` **(** :ref:`float<class_float>` s **)**                                                                                                                                                     |
-+-----------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`float<class_float>`                                 | :ref:`fmod<class_@GDScript_method_fmod>` **(** :ref:`float<class_float>` a, :ref:`float<class_float>` b **)**                                                                                                                          |
-+-----------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`float<class_float>`                                 | :ref:`fposmod<class_@GDScript_method_fposmod>` **(** :ref:`float<class_float>` a, :ref:`float<class_float>` b **)**                                                                                                                    |
-+-----------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`FuncRef<class_FuncRef>`                             | :ref:`funcref<class_@GDScript_method_funcref>` **(** :ref:`Object<class_Object>` instance, :ref:`String<class_String>` funcname **)**                                                                                                  |
-+-----------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`Array<class_Array>`                                 | :ref:`get_stack<class_@GDScript_method_get_stack>` **(** **)**                                                                                                                                                                         |
-+-----------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`int<class_int>`                                     | :ref:`hash<class_@GDScript_method_hash>` **(** :ref:`Variant<class_Variant>` var **)**                                                                                                                                                 |
-+-----------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`Dictionary<class_Dictionary>`                       | :ref:`inst2dict<class_@GDScript_method_inst2dict>` **(** :ref:`Object<class_Object>` inst **)**                                                                                                                                        |
-+-----------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`Object<class_Object>`                               | :ref:`instance_from_id<class_@GDScript_method_instance_from_id>` **(** :ref:`int<class_int>` instance_id **)**                                                                                                                         |
-+-----------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`float<class_float>`                                 | :ref:`inverse_lerp<class_@GDScript_method_inverse_lerp>` **(** :ref:`float<class_float>` from, :ref:`float<class_float>` to, :ref:`float<class_float>` weight **)**                                                                    |
-+-----------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`bool<class_bool>`                                   | :ref:`is_equal_approx<class_@GDScript_method_is_equal_approx>` **(** :ref:`float<class_float>` a, :ref:`float<class_float>` b **)**                                                                                                    |
-+-----------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`bool<class_bool>`                                   | :ref:`is_inf<class_@GDScript_method_is_inf>` **(** :ref:`float<class_float>` s **)**                                                                                                                                                   |
-+-----------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`bool<class_bool>`                                   | :ref:`is_instance_valid<class_@GDScript_method_is_instance_valid>` **(** :ref:`Object<class_Object>` instance **)**                                                                                                                    |
-+-----------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`bool<class_bool>`                                   | :ref:`is_nan<class_@GDScript_method_is_nan>` **(** :ref:`float<class_float>` s **)**                                                                                                                                                   |
-+-----------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`bool<class_bool>`                                   | :ref:`is_zero_approx<class_@GDScript_method_is_zero_approx>` **(** :ref:`float<class_float>` s **)**                                                                                                                                   |
-+-----------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`int<class_int>`                                     | :ref:`len<class_@GDScript_method_len>` **(** :ref:`Variant<class_Variant>` var **)**                                                                                                                                                   |
-+-----------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`Variant<class_Variant>`                             | :ref:`lerp<class_@GDScript_method_lerp>` **(** :ref:`Variant<class_Variant>` from, :ref:`Variant<class_Variant>` to, :ref:`float<class_float>` weight **)**                                                                            |
-+-----------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`float<class_float>`                                 | :ref:`lerp_angle<class_@GDScript_method_lerp_angle>` **(** :ref:`float<class_float>` from, :ref:`float<class_float>` to, :ref:`float<class_float>` weight **)**                                                                        |
-+-----------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`float<class_float>`                                 | :ref:`linear2db<class_@GDScript_method_linear2db>` **(** :ref:`float<class_float>` nrg **)**                                                                                                                                           |
-+-----------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`Resource<class_Resource>`                           | :ref:`load<class_@GDScript_method_load>` **(** :ref:`String<class_String>` path **)**                                                                                                                                                  |
-+-----------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`float<class_float>`                                 | :ref:`log<class_@GDScript_method_log>` **(** :ref:`float<class_float>` s **)**                                                                                                                                                         |
-+-----------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`float<class_float>`                                 | :ref:`max<class_@GDScript_method_max>` **(** :ref:`float<class_float>` a, :ref:`float<class_float>` b **)**                                                                                                                            |
-+-----------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`float<class_float>`                                 | :ref:`min<class_@GDScript_method_min>` **(** :ref:`float<class_float>` a, :ref:`float<class_float>` b **)**                                                                                                                            |
-+-----------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`float<class_float>`                                 | :ref:`move_toward<class_@GDScript_method_move_toward>` **(** :ref:`float<class_float>` from, :ref:`float<class_float>` to, :ref:`float<class_float>` delta **)**                                                                       |
-+-----------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`int<class_int>`                                     | :ref:`nearest_po2<class_@GDScript_method_nearest_po2>` **(** :ref:`int<class_int>` value **)**                                                                                                                                         |
-+-----------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`int<class_int>`                                     | :ref:`ord<class_@GDScript_method_ord>` **(** :ref:`String<class_String>` char **)**                                                                                                                                                    |
-+-----------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`Variant<class_Variant>`                             | :ref:`parse_json<class_@GDScript_method_parse_json>` **(** :ref:`String<class_String>` json **)**                                                                                                                                      |
-+-----------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`Vector2<class_Vector2>`                             | :ref:`polar2cartesian<class_@GDScript_method_polar2cartesian>` **(** :ref:`float<class_float>` r, :ref:`float<class_float>` th **)**                                                                                                   |
-+-----------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`int<class_int>`                                     | :ref:`posmod<class_@GDScript_method_posmod>` **(** :ref:`int<class_int>` a, :ref:`int<class_int>` b **)**                                                                                                                              |
-+-----------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`float<class_float>`                                 | :ref:`pow<class_@GDScript_method_pow>` **(** :ref:`float<class_float>` base, :ref:`float<class_float>` exp **)**                                                                                                                       |
-+-----------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`Resource<class_Resource>`                           | :ref:`preload<class_@GDScript_method_preload>` **(** :ref:`String<class_String>` path **)**                                                                                                                                            |
-+-----------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| void                                                      | :ref:`print<class_@GDScript_method_print>` **(** ... **)** vararg                                                                                                                                                                      |
-+-----------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| void                                                      | :ref:`print_debug<class_@GDScript_method_print_debug>` **(** ... **)** vararg                                                                                                                                                          |
-+-----------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| void                                                      | :ref:`print_stack<class_@GDScript_method_print_stack>` **(** **)**                                                                                                                                                                     |
-+-----------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| void                                                      | :ref:`printerr<class_@GDScript_method_printerr>` **(** ... **)** vararg                                                                                                                                                                |
-+-----------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| void                                                      | :ref:`printraw<class_@GDScript_method_printraw>` **(** ... **)** vararg                                                                                                                                                                |
-+-----------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| void                                                      | :ref:`prints<class_@GDScript_method_prints>` **(** ... **)** vararg                                                                                                                                                                    |
-+-----------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| void                                                      | :ref:`printt<class_@GDScript_method_printt>` **(** ... **)** vararg                                                                                                                                                                    |
-+-----------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| void                                                      | :ref:`push_error<class_@GDScript_method_push_error>` **(** :ref:`String<class_String>` message **)**                                                                                                                                   |
-+-----------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| void                                                      | :ref:`push_warning<class_@GDScript_method_push_warning>` **(** :ref:`String<class_String>` message **)**                                                                                                                               |
-+-----------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`float<class_float>`                                 | :ref:`rad2deg<class_@GDScript_method_rad2deg>` **(** :ref:`float<class_float>` rad **)**                                                                                                                                               |
-+-----------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`float<class_float>`                                 | :ref:`rand_range<class_@GDScript_method_rand_range>` **(** :ref:`float<class_float>` from, :ref:`float<class_float>` to **)**                                                                                                          |
-+-----------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`Array<class_Array>`                                 | :ref:`rand_seed<class_@GDScript_method_rand_seed>` **(** :ref:`int<class_int>` seed **)**                                                                                                                                              |
-+-----------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`float<class_float>`                                 | :ref:`randf<class_@GDScript_method_randf>` **(** **)**                                                                                                                                                                                 |
-+-----------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`int<class_int>`                                     | :ref:`randi<class_@GDScript_method_randi>` **(** **)**                                                                                                                                                                                 |
-+-----------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| void                                                      | :ref:`randomize<class_@GDScript_method_randomize>` **(** **)**                                                                                                                                                                         |
-+-----------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`Array<class_Array>`                                 | :ref:`range<class_@GDScript_method_range>` **(** ... **)** vararg                                                                                                                                                                      |
-+-----------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`float<class_float>`                                 | :ref:`range_lerp<class_@GDScript_method_range_lerp>` **(** :ref:`float<class_float>` value, :ref:`float<class_float>` istart, :ref:`float<class_float>` istop, :ref:`float<class_float>` ostart, :ref:`float<class_float>` ostop **)** |
-+-----------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`float<class_float>`                                 | :ref:`round<class_@GDScript_method_round>` **(** :ref:`float<class_float>` s **)**                                                                                                                                                     |
-+-----------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| void                                                      | :ref:`seed<class_@GDScript_method_seed>` **(** :ref:`int<class_int>` seed **)**                                                                                                                                                        |
-+-----------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`float<class_float>`                                 | :ref:`sign<class_@GDScript_method_sign>` **(** :ref:`float<class_float>` s **)**                                                                                                                                                       |
-+-----------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`float<class_float>`                                 | :ref:`sin<class_@GDScript_method_sin>` **(** :ref:`float<class_float>` s **)**                                                                                                                                                         |
-+-----------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`float<class_float>`                                 | :ref:`sinh<class_@GDScript_method_sinh>` **(** :ref:`float<class_float>` s **)**                                                                                                                                                       |
-+-----------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`float<class_float>`                                 | :ref:`smoothstep<class_@GDScript_method_smoothstep>` **(** :ref:`float<class_float>` from, :ref:`float<class_float>` to, :ref:`float<class_float>` weight **)**                                                                        |
-+-----------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`float<class_float>`                                 | :ref:`sqrt<class_@GDScript_method_sqrt>` **(** :ref:`float<class_float>` s **)**                                                                                                                                                       |
-+-----------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`int<class_int>`                                     | :ref:`step_decimals<class_@GDScript_method_step_decimals>` **(** :ref:`float<class_float>` step **)**                                                                                                                                  |
-+-----------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`float<class_float>`                                 | :ref:`stepify<class_@GDScript_method_stepify>` **(** :ref:`float<class_float>` s, :ref:`float<class_float>` step **)**                                                                                                                 |
-+-----------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`String<class_String>`                               | :ref:`str<class_@GDScript_method_str>` **(** ... **)** vararg                                                                                                                                                                          |
-+-----------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`Variant<class_Variant>`                             | :ref:`str2var<class_@GDScript_method_str2var>` **(** :ref:`String<class_String>` string **)**                                                                                                                                          |
-+-----------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`float<class_float>`                                 | :ref:`tan<class_@GDScript_method_tan>` **(** :ref:`float<class_float>` s **)**                                                                                                                                                         |
-+-----------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`float<class_float>`                                 | :ref:`tanh<class_@GDScript_method_tanh>` **(** :ref:`float<class_float>` s **)**                                                                                                                                                       |
-+-----------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`String<class_String>`                               | :ref:`to_json<class_@GDScript_method_to_json>` **(** :ref:`Variant<class_Variant>` var **)**                                                                                                                                           |
-+-----------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`bool<class_bool>`                                   | :ref:`type_exists<class_@GDScript_method_type_exists>` **(** :ref:`String<class_String>` type **)**                                                                                                                                    |
-+-----------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`int<class_int>`                                     | :ref:`typeof<class_@GDScript_method_typeof>` **(** :ref:`Variant<class_Variant>` what **)**                                                                                                                                            |
-+-----------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`String<class_String>`                               | :ref:`validate_json<class_@GDScript_method_validate_json>` **(** :ref:`String<class_String>` json **)**                                                                                                                                |
-+-----------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`PackedByteArray<class_PackedByteArray>`             | :ref:`var2bytes<class_@GDScript_method_var2bytes>` **(** :ref:`Variant<class_Variant>` var, :ref:`bool<class_bool>` full_objects=false **)**                                                                                           |
-+-----------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`String<class_String>`                               | :ref:`var2str<class_@GDScript_method_var2str>` **(** :ref:`Variant<class_Variant>` var **)**                                                                                                                                           |
-+-----------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`WeakRef<class_WeakRef>`                             | :ref:`weakref<class_@GDScript_method_weakref>` **(** :ref:`Object<class_Object>` obj **)**                                                                                                                                             |
-+-----------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`float<class_float>`                                 | :ref:`wrapf<class_@GDScript_method_wrapf>` **(** :ref:`float<class_float>` value, :ref:`float<class_float>` min, :ref:`float<class_float>` max **)**                                                                                   |
-+-----------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`int<class_int>`                                     | :ref:`wrapi<class_@GDScript_method_wrapi>` **(** :ref:`int<class_int>` value, :ref:`int<class_int>` min, :ref:`int<class_int>` max **)**                                                                                               |
-+-----------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`GDScriptFunctionState<class_GDScriptFunctionState>` | :ref:`yield<class_@GDScript_method_yield>` **(** :ref:`Object<class_Object>` object=null, :ref:`String<class_String>` signal="" **)**                                                                                                  |
-+-----------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
++-------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`Color<class_Color>`           | :ref:`Color8<class_@GDScript_method_Color8>` **(** :ref:`int<class_int>` r8, :ref:`int<class_int>` g8, :ref:`int<class_int>` b8, :ref:`int<class_int>` a8=255 **)** |
++-------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| void                                | :ref:`assert<class_@GDScript_method_assert>` **(** :ref:`bool<class_bool>` condition, :ref:`String<class_String>` message="" **)**                                  |
++-------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`String<class_String>`         | :ref:`char<class_@GDScript_method_char>` **(** :ref:`int<class_int>` char **)**                                                                                     |
++-------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`Variant<class_Variant>`       | :ref:`convert<class_@GDScript_method_convert>` **(** :ref:`Variant<class_Variant>` what, :ref:`int<class_int>` type **)**                                           |
++-------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`Object<class_Object>`         | :ref:`dict2inst<class_@GDScript_method_dict2inst>` **(** :ref:`Dictionary<class_Dictionary>` dictionary **)**                                                       |
++-------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`Array<class_Array>`           | :ref:`get_stack<class_@GDScript_method_get_stack>` **(** **)**                                                                                                      |
++-------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`Dictionary<class_Dictionary>` | :ref:`inst2dict<class_@GDScript_method_inst2dict>` **(** :ref:`Object<class_Object>` instance **)**                                                                 |
++-------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`int<class_int>`               | :ref:`len<class_@GDScript_method_len>` **(** :ref:`Variant<class_Variant>` var **)**                                                                                |
++-------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`Resource<class_Resource>`     | :ref:`load<class_@GDScript_method_load>` **(** :ref:`String<class_String>` path **)**                                                                               |
++-------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`Resource<class_Resource>`     | :ref:`preload<class_@GDScript_method_preload>` **(** :ref:`String<class_String>` path **)**                                                                         |
++-------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| void                                | :ref:`print_debug<class_@GDScript_method_print_debug>` **(** ... **)** |vararg|                                                                                     |
++-------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| void                                | :ref:`print_stack<class_@GDScript_method_print_stack>` **(** **)**                                                                                                  |
++-------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`Array<class_Array>`           | :ref:`range<class_@GDScript_method_range>` **(** ... **)** |vararg|                                                                                                 |
++-------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`String<class_String>`         | :ref:`str<class_@GDScript_method_str>` **(** ... **)** |vararg|                                                                                                     |
++-------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`bool<class_bool>`             | :ref:`type_exists<class_@GDScript_method_type_exists>` **(** :ref:`StringName<class_StringName>` type **)**                                                         |
++-------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------+
 
 
 Constants
 Constants
 ---------
 ---------
@@ -216,15 +67,17 @@ Constants
 
 
 .. _class_@GDScript_constant_NAN:
 .. _class_@GDScript_constant_NAN:
 
 
-- **PI** = **3.141593** --- Constant that represents how many times the diameter of a circle fits around its perimeter.
+- **PI** = **3.14159265358979** --- Constant that represents how many times the diameter of a circle fits around its perimeter. This is equivalent to ``TAU / 2``, or 180 degrees in rotations.
+
+- **TAU** = **6.28318530717959** --- The circle constant, the circumference of the unit circle in radians. This is equivalent to ``PI * 2``, or 360 degrees in rotations.
 
 
-- **TAU** = **6.283185** --- The circle constant, the circumference of the unit circle.
+- **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``).
 
 
-- **INF** = **inf** --- A positive infinity. (For negative infinity, use -INF).
+**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** --- Macro constant that expands to an expression of type float that represents a NaN.
+- **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``.
 
 
-The NaN values are used to identify undefined or non-representable values for floating-point elements, such as the square root of negative numbers or the result of 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.
 
 
 Method Descriptions
 Method Descriptions
 -------------------
 -------------------
@@ -249,135 +102,30 @@ Returns a color constructed from integer red, green, blue, and alpha channels. E
 
 
 ----
 ----
 
 
-.. _class_@GDScript_method_ColorN:
-
-- :ref:`Color<class_Color>` **ColorN** **(** :ref:`String<class_String>` name, :ref:`float<class_float>` alpha=1.0 **)**
-
-Returns a color according to the standardized ``name`` with ``alpha`` ranging from 0 to 1.
-
-::
-
-    red = ColorN("red", 1)
-
-Supported color names are the same as the constants defined in :ref:`Color<class_Color>`.
-
-----
-
-.. _class_@GDScript_method_abs:
-
-- :ref:`float<class_float>` **abs** **(** :ref:`float<class_float>` s **)**
-
-Returns the absolute value of parameter ``s`` (i.e. unsigned value, works for integer and float).
-
-::
-
-    # a is 1
-    a = abs(-1)
-
-----
-
-.. _class_@GDScript_method_acos:
-
-- :ref:`float<class_float>` **acos** **(** :ref:`float<class_float>` s **)**
-
-Returns the arc cosine of ``s`` in radians. Use to get the angle of cosine ``s``.
-
-::
-
-    # c is 0.523599 or 30 degrees if converted with rad2deg(s)
-    c = acos(0.866025)
-
-----
-
-.. _class_@GDScript_method_asin:
-
-- :ref:`float<class_float>` **asin** **(** :ref:`float<class_float>` s **)**
-
-Returns the arc sine of ``s`` in radians. Use to get the angle of sine ``s``.
-
-::
-
-    # s is 0.523599 or 30 degrees if converted with rad2deg(s)
-    s = asin(0.5)
+.. _class_@GDScript_method_assert:
 
 
-----
+- void **assert** **(** :ref:`bool<class_bool>` condition, :ref:`String<class_String>` message="" **)**
 
 
-.. _class_@GDScript_method_assert:
+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:`@GlobalScope.push_error<class_@GlobalScope_method_push_error>` for reporting errors to project developers or add-on users.
 
 
-- void **assert** **(** :ref:`bool<class_bool>` condition **)**
+**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.
 
 
-Asserts that the ``condition`` is ``true`` . If the ``condition`` is ``false``, an error is generated and the program is halted until you resume it. Only executes in debug builds, or when running the game from the editor. Use it for debugging purposes, to make sure a statement is ``true`` during development.
+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.
 
 
 ::
 ::
 
 
-    # Imagine we always want speed to be between 0 and 20
-    speed = -10
+    # Imagine we always want speed to be between 0 and 20.
+    var speed = -10
     assert(speed < 20) # True, the program will continue
     assert(speed < 20) # True, the program will continue
     assert(speed >= 0) # False, the program will stop
     assert(speed >= 0) # False, the program will stop
-    assert(speed >= 0 && speed < 20) # You can also combine the two conditional statements in one check
-
-----
-
-.. _class_@GDScript_method_atan:
-
-- :ref:`float<class_float>` **atan** **(** :ref:`float<class_float>` s **)**
-
-Returns the arc tangent of ``s`` in radians. Use it to get the angle from an angle's tangent in trigonometry: ``atan(tan(angle)) == angle``.
-
-The method cannot know in which quadrant the angle should fall. See :ref:`atan2<class_@GDScript_method_atan2>` if you always want an exact angle.
-
-::
-
-    a = atan(0.5) # a is 0.463648
-
-----
-
-.. _class_@GDScript_method_atan2:
-
-- :ref:`float<class_float>` **atan2** **(** :ref:`float<class_float>` y, :ref:`float<class_float>` x **)**
-
-Returns the arc tangent of ``y/x`` in radians. Use to get the angle of tangent ``y/x``. To compute the value, the method takes into account the sign of both arguments in order to determine the quadrant.
-
-::
-
-    a = atan2(0, -1) # a is 3.141593
-
-----
-
-.. _class_@GDScript_method_bytes2var:
-
-- :ref:`Variant<class_Variant>` **bytes2var** **(** :ref:`PackedByteArray<class_PackedByteArray>` bytes, :ref:`bool<class_bool>` allow_objects=false **)**
-
-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).
-
-----
-
-.. _class_@GDScript_method_cartesian2polar:
-
-- :ref:`Vector2<class_Vector2>` **cartesian2polar** **(** :ref:`float<class_float>` x, :ref:`float<class_float>` y **)**
-
-Converts a 2D point expressed in the cartesian coordinate system (X and Y axis) to the polar coordinate system (a distance from the origin and an angle).
-
-----
-
-.. _class_@GDScript_method_ceil:
-
-- :ref:`float<class_float>` **ceil** **(** :ref:`float<class_float>` s **)**
-
-Rounds ``s`` upward, returning the smallest integral value that is not less than ``s``.
-
-::
-
-    i = ceil(1.45)  # i is 2
-    i = ceil(1.001) # i is 2
+    assert(speed >= 0 and speed < 20) # You can also combine the two conditional statements in one check
+    assert(speed < 20, "speed = %f, but the speed limit is 20" % speed) # Show a message with clarifying details
 
 
 ----
 ----
 
 
 .. _class_@GDScript_method_char:
 .. _class_@GDScript_method_char:
 
 
-- :ref:`String<class_String>` **char** **(** :ref:`int<class_int>` code **)**
+- :ref:`String<class_String>` **char** **(** :ref:`int<class_int>` char **)**
 
 
 Returns a character as a String of the given Unicode code point (which is compatible with ASCII code).
 Returns a character as a String of the given Unicode code point (which is compatible with ASCII code).
 
 
@@ -387,26 +135,6 @@ Returns a character as a String of the given Unicode code point (which is compat
     a = char(65 + 32) # a is "a"
     a = char(65 + 32) # a is "a"
     a = char(8364)    # a is "€"
     a = char(8364)    # a is "€"
 
 
-This is the inverse of :ref:`ord<class_@GDScript_method_ord>`.
-
-----
-
-.. _class_@GDScript_method_clamp:
-
-- :ref:`float<class_float>` **clamp** **(** :ref:`float<class_float>` value, :ref:`float<class_float>` min, :ref:`float<class_float>` max **)**
-
-Clamps ``value`` and returns a value not less than ``min`` and not more than ``max``.
-
-::
-
-    speed = 1000
-    # a is 20
-    a = clamp(speed, 1, 20)
-    
-    speed = -10
-    # a is 1
-    a = clamp(speed, 1, 20)
-
 ----
 ----
 
 
 .. _class_@GDScript_method_convert:
 .. _class_@GDScript_method_convert:
@@ -426,175 +154,11 @@ Converts from a type to another in the best way possible. The ``type`` parameter
 
 
 ----
 ----
 
 
-.. _class_@GDScript_method_cos:
-
-- :ref:`float<class_float>` **cos** **(** :ref:`float<class_float>` s **)**
-
-Returns the cosine of angle ``s`` in radians.
-
-::
-
-    # Prints 1 then -1
-    print(cos(PI * 2))
-    print(cos(PI))
-
-----
-
-.. _class_@GDScript_method_cosh:
-
-- :ref:`float<class_float>` **cosh** **(** :ref:`float<class_float>` s **)**
-
-Returns the hyperbolic cosine of ``s`` in radians.
-
-::
-
-    # Prints 1.543081
-    print(cosh(1))
-
-----
-
-.. _class_@GDScript_method_db2linear:
-
-- :ref:`float<class_float>` **db2linear** **(** :ref:`float<class_float>` db **)**
-
-Converts from decibels to linear energy (audio).
-
-----
-
-.. _class_@GDScript_method_dectime:
-
-- :ref:`float<class_float>` **dectime** **(** :ref:`float<class_float>` value, :ref:`float<class_float>` amount, :ref:`float<class_float>` step **)**
-
-Returns the result of ``value`` decreased by ``step`` \* ``amount``.
-
-::
-
-    # a = 59
-    a = dectime(60, 10, 0.1))
-
-----
-
-.. _class_@GDScript_method_deg2rad:
-
-- :ref:`float<class_float>` **deg2rad** **(** :ref:`float<class_float>` deg **)**
-
-Returns degrees converted to radians.
-
-::
-
-    # r is 3.141593
-    r = deg2rad(180)
-
-----
-
 .. _class_@GDScript_method_dict2inst:
 .. _class_@GDScript_method_dict2inst:
 
 
-- :ref:`Object<class_Object>` **dict2inst** **(** :ref:`Dictionary<class_Dictionary>` dict **)**
-
-Converts a previously converted instance to a dictionary, back into an instance. Useful for deserializing.
-
-----
-
-.. _class_@GDScript_method_ease:
-
-- :ref:`float<class_float>` **ease** **(** :ref:`float<class_float>` s, :ref:`float<class_float>` curve **)**
-
-Easing function, based on exponent. 0 is constant, 1 is linear, 0 to 1 is ease-in, 1+ is ease out. Negative values are in-out/out in.
-
-----
-
-.. _class_@GDScript_method_exp:
-
-- :ref:`float<class_float>` **exp** **(** :ref:`float<class_float>` s **)**
-
-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.
-
-For exponents to other bases use the method :ref:`pow<class_@GDScript_method_pow>`.
-
-::
-
-    a = exp(2) # Approximately 7.39
-
-----
-
-.. _class_@GDScript_method_floor:
-
-- :ref:`float<class_float>` **floor** **(** :ref:`float<class_float>` s **)**
-
-Rounds ``s`` to the closest smaller integer and returns it.
-
-::
-
-    # a is 2.0
-    a = floor(2.99)
-    # a is -3.0
-    a = floor(-2.99)
-
-**Note:** This method returns a float. If you need an integer, you can use ``int(s)`` directly.
-
-----
-
-.. _class_@GDScript_method_fmod:
-
-- :ref:`float<class_float>` **fmod** **(** :ref:`float<class_float>` a, :ref:`float<class_float>` b **)**
-
-Returns the floating-point remainder of ``a/b``, keeping the sign of ``a``.
-
-::
-
-    # Remainder is 1.5
-    var remainder = fmod(7, 5.5)
-
-For the integer remainder operation, use the % operator.
-
-----
-
-.. _class_@GDScript_method_fposmod:
-
-- :ref:`float<class_float>` **fposmod** **(** :ref:`float<class_float>` a, :ref:`float<class_float>` b **)**
-
-Returns the floating-point modulus of ``a/b`` that wraps equally in positive and negative.
-
-::
-
-    var i = -6
-    while i < 5:
-        prints(i, fposmod(i, 3))
-        i += 1
-
-Produces:
-
-::
-
-    -6 0
-    -5 1
-    -4 2
-    -3 0
-    -2 1
-    -1 2
-    0 0
-    1 1
-    2 2
-    3 0
-    4 1
-
-----
+- :ref:`Object<class_Object>` **dict2inst** **(** :ref:`Dictionary<class_Dictionary>` dictionary **)**
 
 
-.. _class_@GDScript_method_funcref:
-
-- :ref:`FuncRef<class_FuncRef>` **funcref** **(** :ref:`Object<class_Object>` instance, :ref:`String<class_String>` funcname **)**
-
-Returns a reference to the specified function ``funcname`` in the ``instance`` node. As functions aren't first-class objects in GDscript, use ``funcref`` to store a :ref:`FuncRef<class_FuncRef>` in a variable and call it later.
-
-::
-
-    func foo():
-        return("bar")
-    
-    a = funcref(self, "foo")
-    print(a.call_func()) # Prints bar
+Converts a dictionary (previously created with :ref:`inst2dict<class_@GDScript_method_inst2dict>`) back to an instance. Useful for deserializing.
 
 
 ----
 ----
 
 
@@ -623,21 +187,9 @@ would print
 
 
 ----
 ----
 
 
-.. _class_@GDScript_method_hash:
-
-- :ref:`int<class_int>` **hash** **(** :ref:`Variant<class_Variant>` var **)**
-
-Returns the integer hash of the variable passed.
-
-::
-
-    print(hash("a")) # Prints 177670
-
-----
-
 .. _class_@GDScript_method_inst2dict:
 .. _class_@GDScript_method_inst2dict:
 
 
-- :ref:`Dictionary<class_Dictionary>` **inst2dict** **(** :ref:`Object<class_Object>` inst **)**
+- :ref:`Dictionary<class_Dictionary>` **inst2dict** **(** :ref:`Object<class_Object>` instance **)**
 
 
 Returns the passed instance converted to a dictionary (useful for serializing).
 Returns the passed instance converted to a dictionary (useful for serializing).
 
 
@@ -658,942 +210,141 @@ Prints out:
 
 
 ----
 ----
 
 
-.. _class_@GDScript_method_instance_from_id:
-
-- :ref:`Object<class_Object>` **instance_from_id** **(** :ref:`int<class_int>` instance_id **)**
-
-Returns the Object that corresponds to ``instance_id``. All Objects have a unique instance ID.
-
-::
-
-    var foo = "bar"
-    func _ready():
-        var id = get_instance_id()
-        var inst = instance_from_id(id)
-        print(inst.foo) # Prints bar
-
-----
+.. _class_@GDScript_method_len:
 
 
-.. _class_@GDScript_method_inverse_lerp:
+- :ref:`int<class_int>` **len** **(** :ref:`Variant<class_Variant>` var **)**
 
 
-- :ref:`float<class_float>` **inverse_lerp** **(** :ref:`float<class_float>` from, :ref:`float<class_float>` to, :ref:`float<class_float>` weight **)**
+Returns length of Variant ``var``. Length is the character count of String, element count of Array, size of Dictionary, etc.
 
 
-Returns a normalized value considering the given range. This is the opposite of :ref:`lerp<class_@GDScript_method_lerp>`.
+**Note:** Generates a fatal error if Variant can not provide a length.
 
 
 ::
 ::
 
 
-    var middle = lerp(20, 30, 0.75)
-    # `middle` is now 27.5.
-    # Now, we pretend to have forgotten the original ratio and want to get it back.
-    var ratio = inverse_lerp(20, 30, 27.5)
-    # `ratio` is now 0.75.
+    a = [1, 2, 3, 4]
+    len(a) # Returns 4
 
 
 ----
 ----
 
 
-.. _class_@GDScript_method_is_equal_approx:
-
-- :ref:`bool<class_bool>` **is_equal_approx** **(** :ref:`float<class_float>` a, :ref:`float<class_float>` b **)**
-
-Returns ``true`` if ``a`` and ``b`` are approximately equal to each other.
-
-----
+.. _class_@GDScript_method_load:
 
 
-.. _class_@GDScript_method_is_inf:
+- :ref:`Resource<class_Resource>` **load** **(** :ref:`String<class_String>` path **)**
 
 
-- :ref:`bool<class_bool>` **is_inf** **(** :ref:`float<class_float>` s **)**
+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>`.
 
 
-Returns whether ``s`` is an infinity value (either positive infinity or negative infinity).
+**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.
 
 
-----
+::
 
 
-.. _class_@GDScript_method_is_instance_valid:
+    # 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.
 
 
-- :ref:`bool<class_bool>` **is_instance_valid** **(** :ref:`Object<class_Object>` instance **)**
+**Important:** The path must be absolute, a local path will just return ``null``.
 
 
-Returns whether ``instance`` is a valid object (e.g. has not been deleted from memory).
+This method is a simplified version of :ref:`ResourceLoader.load<class_ResourceLoader_method_load>`, which can be used for more advanced scenarios.
 
 
 ----
 ----
 
 
-.. _class_@GDScript_method_is_nan:
-
-- :ref:`bool<class_bool>` **is_nan** **(** :ref:`float<class_float>` s **)**
+.. _class_@GDScript_method_preload:
 
 
-Returns whether ``s`` is a NaN (Not-A-Number) value.
+- :ref:`Resource<class_Resource>` **preload** **(** :ref:`String<class_String>` path **)**
 
 
-----
+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>`.
 
 
-.. _class_@GDScript_method_is_zero_approx:
+**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.
 
 
-- :ref:`bool<class_bool>` **is_zero_approx** **(** :ref:`float<class_float>` s **)**
+::
 
 
-Returns ``true`` if ``s`` is zero or almost zero.
+    # Instance a scene.
+    var diamond = preload("res://diamond.tscn").instantiate()
 
 
 ----
 ----
 
 
-.. _class_@GDScript_method_len:
-
-- :ref:`int<class_int>` **len** **(** :ref:`Variant<class_Variant>` var **)**
-
-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.
+.. _class_@GDScript_method_print_debug:
 
 
-::
+- void **print_debug** **(** ... **)** |vararg|
 
 
-    a = [1, 2, 3, 4]
-    len(a) # Returns 4
+Like :ref:`@GlobalScope.print<class_@GlobalScope_method_print>`, but prints only when used in debug mode.
 
 
 ----
 ----
 
 
-.. _class_@GDScript_method_lerp:
-
-- :ref:`Variant<class_Variant>` **lerp** **(** :ref:`Variant<class_Variant>` from, :ref:`Variant<class_Variant>` to, :ref:`float<class_float>` weight **)**
+.. _class_@GDScript_method_print_stack:
 
 
-Linearly interpolates between two values by a normalized value. This is the opposite of :ref:`inverse_lerp<class_@GDScript_method_inverse_lerp>`.
+- void **print_stack** **(** **)**
 
 
-If the ``from`` and ``to`` arguments are of type :ref:`int<class_int>` or :ref:`float<class_float>`, the return value is a :ref:`float<class_float>`.
+Prints a stack track at code location, only works when running with debugger turned on.
 
 
-If both are of the same vector type (:ref:`Vector2<class_Vector2>`, :ref:`Vector3<class_Vector3>` or :ref:`Color<class_Color>`), the return value will be of the same type (``lerp`` then calls the vector type's ``linear_interpolate`` method).
+Output in the console would look something like this:
 
 
 ::
 ::
 
 
-    lerp(0, 4, 0.75) # Returns 3.0
-    lerp(Vector2(1, 5), Vector2(3, 2), 0.5) # Returns Vector2(2, 3.5)
+    Frame 0 - res://test.gd:16 in function '_process'
 
 
 ----
 ----
 
 
-.. _class_@GDScript_method_lerp_angle:
+.. _class_@GDScript_method_range:
 
 
-- :ref:`float<class_float>` **lerp_angle** **(** :ref:`float<class_float>` from, :ref:`float<class_float>` to, :ref:`float<class_float>` weight **)**
+- :ref:`Array<class_Array>` **range** **(** ... **)** |vararg|
 
 
-Linearly interpolates between two angles (in radians) by a normalized value.
+Returns an array with the given range. Range can be 1 argument ``N`` (0 to ``N`` - 1), two arguments (``initial``, ``final - 1``) or three arguments (``initial``, ``final - 1``, ``increment``). Returns an empty array if the range isn't valid (e.g. ``range(2, 5, -1)`` or ``range(5, 5, 1)``).
 
 
-Similar to :ref:`lerp<class_@GDScript_method_lerp>`, but interpolates correctly when the angles wrap around :ref:`TAU<class_@GDScript_constant_TAU>`.
+Returns an array with the given range. ``range()`` can have 1 argument N (``0`` to ``N - 1``), two arguments (``initial``, ``final - 1``) or three arguments (``initial``, ``final - 1``, ``increment``). ``increment`` can be negative. If ``increment`` is negative, ``final - 1`` will become ``final + 1``. Also, the initial value must be greater than the final value for the loop to run.
 
 
 ::
 ::
 
 
-    extends Sprite
-    var elapsed = 0.0
-    func _process(delta):
-        var min_angle = deg2rad(0.0)
-        var max_angle = deg2rad(90.0)
-        rotation = lerp_angle(min_angle, max_angle, elapsed)
-        elapsed += delta
-
-----
-
-.. _class_@GDScript_method_linear2db:
-
-- :ref:`float<class_float>` **linear2db** **(** :ref:`float<class_float>` nrg **)**
+    print(range(4))
+    print(range(2, 5))
+    print(range(0, 6, 2))
 
 
-Converts from linear energy to decibels (audio). This can be used to implement volume sliders that behave as expected (since volume isn't linear). Example:
+Output:
 
 
 ::
 ::
 
 
-    # "Slider" refers to a node that inherits Range such as HSlider or VSlider.
-    # Its range must be configured to go from 0 to 1.
-    # Change the bus name if you'd like to change the volume of a specific bus only.
-    AudioServer.set_bus_volume_db(AudioServer.get_bus_index("Master"), linear2db($Slider.value))
-
-----
+    [0, 1, 2, 3]
+    [2, 3, 4]
+    [0, 2, 4]
 
 
-.. _class_@GDScript_method_load:
+To iterate over an :ref:`Array<class_Array>` backwards, use:
 
 
-- :ref:`Resource<class_Resource>` **load** **(** :ref:`String<class_String>` path **)**
+::
 
 
-Loads a resource from the filesystem located at ``path``.
+    var array = [3, 6, 9]
+    var i := array.size() - 1
+    while i >= 0:
+        print(array[i])
+        i -= 1
 
 
-**Note:** Resource paths can be obtained by right-clicking on a resource in the FileSystem dock and choosing **Copy Path**.
+Output:
 
 
 ::
 ::
 
 
-    # Load a scene called main located in the root of the project directory.
-    var main = load("res://main.tscn")
-
-**Important:** The path must be absolute, a local path will just return ``null``.
+    9
+    6
+    3
 
 
 ----
 ----
 
 
-.. _class_@GDScript_method_log:
-
-- :ref:`float<class_float>` **log** **(** :ref:`float<class_float>` s **)**
+.. _class_@GDScript_method_str:
 
 
-Natural logarithm. The amount of time needed to reach a certain level of continuous growth.
+- :ref:`String<class_String>` **str** **(** ... **)** |vararg|
 
 
-**Note:** This is not the same as the "log" function on most calculators, which uses a base 10 logarithm.
+Converts one or more arguments to string in the best way possible.
 
 
 ::
 ::
 
 
-    log(10) # Returns 2.302585
-
-----
-
-.. _class_@GDScript_method_max:
-
-- :ref:`float<class_float>` **max** **(** :ref:`float<class_float>` a, :ref:`float<class_float>` b **)**
-
-Returns the maximum of two values.
-
-::
-
-    max(1, 2) # Returns 2
-    max(-3.99, -4) # Returns -3.99
-
-----
-
-.. _class_@GDScript_method_min:
-
-- :ref:`float<class_float>` **min** **(** :ref:`float<class_float>` a, :ref:`float<class_float>` b **)**
-
-Returns the minimum of two values.
-
-::
-
-    min(1, 2) # Returns 1
-    min(-3.99, -4) # Returns -4
-
-----
-
-.. _class_@GDScript_method_move_toward:
-
-- :ref:`float<class_float>` **move_toward** **(** :ref:`float<class_float>` from, :ref:`float<class_float>` to, :ref:`float<class_float>` delta **)**
-
-Moves ``from`` toward ``to`` by the ``delta`` value.
-
-Use a negative ``delta`` value to move away.
-
-::
-
-    move_toward(10, 5, 4) # Returns 6
-
-----
-
-.. _class_@GDScript_method_nearest_po2:
-
-- :ref:`int<class_int>` **nearest_po2** **(** :ref:`int<class_int>` value **)**
-
-Returns the nearest larger power of 2 for integer ``value``.
-
-::
-
-    nearest_po2(3) # Returns 4
-    nearest_po2(4) # Returns 4
-    nearest_po2(5) # Returns 8
-
-----
-
-.. _class_@GDScript_method_ord:
-
-- :ref:`int<class_int>` **ord** **(** :ref:`String<class_String>` char **)**
-
-Returns an integer representing the Unicode code point of the given Unicode character ``char``.
-
-::
-
-    a = ord("A") # a is 65
-    a = ord("a") # a is 97
-    a = ord("€") # a is 8364
-
-This is the inverse of :ref:`char<class_@GDScript_method_char>`.
-
-----
-
-.. _class_@GDScript_method_parse_json:
-
-- :ref:`Variant<class_Variant>` **parse_json** **(** :ref:`String<class_String>` json **)**
-
-Parse JSON text to a Variant (use :ref:`typeof<class_@GDScript_method_typeof>` to check if it is what you expect).
-
-Be aware that 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 that 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:
-
-::
-
-    p = parse_json('["a", "b", "c"]')
-    if typeof(p) == TYPE_ARRAY:
-        print(p[0]) # Prints a
-    else:
-        print("unexpected results")
-
-----
-
-.. _class_@GDScript_method_polar2cartesian:
-
-- :ref:`Vector2<class_Vector2>` **polar2cartesian** **(** :ref:`float<class_float>` r, :ref:`float<class_float>` th **)**
-
-Converts a 2D point expressed in the polar coordinate system (a distance from the origin ``r`` and an angle ``th``) to the cartesian coordinate system (X and Y axis).
-
-----
-
-.. _class_@GDScript_method_posmod:
-
-- :ref:`int<class_int>` **posmod** **(** :ref:`int<class_int>` a, :ref:`int<class_int>` b **)**
-
-Returns the integer modulus of ``a/b`` that wraps equally in positive and negative.
-
-::
-
-    var i = -6
-    while i < 5:
-        prints(i, posmod(i, 3))
-        i += 1
-
-Produces:
-
-::
-
-    -6 0
-    -5 1
-    -4 2
-    -3 0
-    -2 1
-    -1 2
-    0 0
-    1 1
-    2 2
-    3 0
-    4 1
-
-----
-
-.. _class_@GDScript_method_pow:
-
-- :ref:`float<class_float>` **pow** **(** :ref:`float<class_float>` base, :ref:`float<class_float>` exp **)**
-
-Returns the result of ``x`` raised to the power of ``y``.
-
-::
-
-    pow(2, 5) # Returns 32
-
-----
-
-.. _class_@GDScript_method_preload:
-
-- :ref:`Resource<class_Resource>` **preload** **(** :ref:`String<class_String>` path **)**
-
-Returns a resource from the filesystem that is loaded during script parsing.
-
-**Note:** Resource paths can be obtained by right clicking on a resource in the Assets Panel and choosing "Copy Path".
-
-::
-
-    # Load a scene called main located in the root of the project directory.
-    var main = preload("res://main.tscn")
-
-----
-
-.. _class_@GDScript_method_print:
-
-- void **print** **(** ... **)** vararg
-
-Converts one or more arguments to strings in the best way possible and prints them to the console.
-
-::
-
-    a = [1, 2, 3]
-    print("a", "b", a) # Prints ab[1, 2, 3]
-
-----
-
-.. _class_@GDScript_method_print_debug:
-
-- void **print_debug** **(** ... **)** vararg
-
-Like :ref:`print<class_@GDScript_method_print>`, but prints only when used in debug mode.
-
-----
-
-.. _class_@GDScript_method_print_stack:
-
-- void **print_stack** **(** **)**
-
-Prints a stack track at code location, only works when running with debugger turned on.
-
-Output in the console would look something like this:
-
-::
-
-    Frame 0 - res://test.gd:16 in function '_process'
-
-----
-
-.. _class_@GDScript_method_printerr:
-
-- void **printerr** **(** ... **)** vararg
-
-Prints one or more arguments to strings in the best way possible to standard error line.
-
-::
-
-    printerr("prints to stderr")
-
-----
-
-.. _class_@GDScript_method_printraw:
-
-- void **printraw** **(** ... **)** vararg
-
-Prints one or more arguments to strings in the best way possible to console. No newline is added at the end.
-
-::
-
-    printraw("A")
-    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>`.
-
-----
-
-.. _class_@GDScript_method_prints:
-
-- void **prints** **(** ... **)** vararg
-
-Prints one or more arguments to the console with a space between each argument.
-
-::
-
-    prints("A", "B", "C") # Prints A B C
-
-----
-
-.. _class_@GDScript_method_printt:
-
-- void **printt** **(** ... **)** vararg
-
-Prints one or more arguments to the console with a tab between each argument.
-
-::
-
-    printt("A", "B", "C") # Prints A       B       C
-
-----
-
-.. _class_@GDScript_method_push_error:
-
-- void **push_error** **(** :ref:`String<class_String>` message **)**
-
-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
-
-----
-
-.. _class_@GDScript_method_push_warning:
-
-- void **push_warning** **(** :ref:`String<class_String>` message **)**
-
-Pushes a warning message to Godot's built-in debugger and to the OS terminal.
-
-::
-
-    push_warning("test warning") # Prints "test warning" to debugger and terminal as warning call
-
-----
-
-.. _class_@GDScript_method_rad2deg:
-
-- :ref:`float<class_float>` **rad2deg** **(** :ref:`float<class_float>` rad **)**
-
-Converts from radians to degrees.
-
-::
-
-    rad2deg(0.523599) # Returns 30
-
-----
-
-.. _class_@GDScript_method_rand_range:
-
-- :ref:`float<class_float>` **rand_range** **(** :ref:`float<class_float>` from, :ref:`float<class_float>` to **)**
-
-Random range, any floating point value between ``from`` and ``to``.
-
-::
-
-    prints(rand_range(0, 1), rand_range(0, 1)) # Prints e.g. 0.135591 0.405263
-
-----
-
-.. _class_@GDScript_method_rand_seed:
-
-- :ref:`Array<class_Array>` **rand_seed** **(** :ref:`int<class_int>` seed **)**
-
-Random from seed: pass a ``seed``, and an array with both number and new seed is returned. "Seed" here refers to the internal state of the pseudo random number generator. The internal state of the current implementation is 64 bits.
-
-----
-
-.. _class_@GDScript_method_randf:
-
-- :ref:`float<class_float>` **randf** **(** **)**
-
-Returns a random floating point value on the interval ``[0, 1]``.
-
-::
-
-    randf() # Returns e.g. 0.375671
-
-----
-
-.. _class_@GDScript_method_randi:
-
-- :ref:`int<class_int>` **randi** **(** **)**
-
-Returns a random unsigned 32 bit integer. Use remainder to obtain a random value in the interval ``[0, N - 1]`` (where N is smaller than 2^32).
-
-::
-
-    randi()           # Returns random integer between 0 and 2^32 - 1
-    randi() % 20      # Returns random integer between 0 and 19
-    randi() % 100     # Returns random integer between 0 and 99
-    randi() % 100 + 1 # Returns random integer between 1 and 100
-
-----
-
-.. _class_@GDScript_method_randomize:
-
-- void **randomize** **(** **)**
-
-Randomizes the seed (or the internal state) of the random number generator. Current implementation reseeds using a number based on time.
-
-::
-
-    func _ready():
-        randomize()
-
-----
-
-.. _class_@GDScript_method_range:
-
-- :ref:`Array<class_Array>` **range** **(** ... **)** vararg
-
-Returns an array with the given range. Range can be 1 argument N (0 to N-1), two arguments (initial, final-1) or three arguments (initial, final-1, increment).
-
-::
-
-    for i in range(4):
-        print(i)
-    for i in range(2, 5):
-        print(i)
-    for i in range(0, 6, 2):
-        print(i)
-
-Output:
-
-::
-
-    0
-    1
-    2
-    3
-    
-    2
-    3
-    4
-    
-    0
-    2
-    4
-
-----
-
-.. _class_@GDScript_method_range_lerp:
-
-- :ref:`float<class_float>` **range_lerp** **(** :ref:`float<class_float>` value, :ref:`float<class_float>` istart, :ref:`float<class_float>` istop, :ref:`float<class_float>` ostart, :ref:`float<class_float>` ostop **)**
-
-Maps a ``value`` from range ``[istart, istop]`` to ``[ostart, ostop]``.
-
-::
-
-    range_lerp(75, 0, 100, -1, 1) # Returns 0.5
-
-----
-
-.. _class_@GDScript_method_round:
-
-- :ref:`float<class_float>` **round** **(** :ref:`float<class_float>` s **)**
-
-Returns the integral value that is nearest to ``s``, with halfway cases rounded away from zero.
-
-::
-
-    round(2.6) # Returns 3
-
-----
-
-.. _class_@GDScript_method_seed:
-
-- void **seed** **(** :ref:`int<class_int>` seed **)**
-
-Sets seed for the random number generator.
-
-::
-
-    my_seed = "Godot Rocks"
-    seed(my_seed.hash())
-
-----
-
-.. _class_@GDScript_method_sign:
-
-- :ref:`float<class_float>` **sign** **(** :ref:`float<class_float>` s **)**
-
-Returns the sign of ``s``: -1 or 1. Returns 0 if ``s`` is 0.
-
-::
-
-    sign(-6) # Returns -1
-    sign(0)  # Returns 0
-    sign(6)  # Returns 1
-
-----
-
-.. _class_@GDScript_method_sin:
-
-- :ref:`float<class_float>` **sin** **(** :ref:`float<class_float>` s **)**
-
-Returns the sine of angle ``s`` in radians.
-
-::
-
-    sin(0.523599) # Returns 0.5
-
-----
-
-.. _class_@GDScript_method_sinh:
-
-- :ref:`float<class_float>` **sinh** **(** :ref:`float<class_float>` s **)**
-
-Returns the hyperbolic sine of ``s``.
-
-::
-
-    a = log(2.0) # Returns 0.693147
-    sinh(a) # Returns 0.75
-
-----
-
-.. _class_@GDScript_method_smoothstep:
-
-- :ref:`float<class_float>` **smoothstep** **(** :ref:`float<class_float>` from, :ref:`float<class_float>` to, :ref:`float<class_float>` weight **)**
-
-Returns a number smoothly interpolated between the ``from`` and ``to``, based on the ``weight``. Similar to :ref:`lerp<class_@GDScript_method_lerp>`, but interpolates faster at the beginning and slower at the end.
-
-::
-
-    smoothstep(0, 2, 0.5) # Returns 0.15
-    smoothstep(0, 2, 1.0) # Returns 0.5
-    smoothstep(0, 2, 2.0) # Returns 1.0
-
-----
-
-.. _class_@GDScript_method_sqrt:
-
-- :ref:`float<class_float>` **sqrt** **(** :ref:`float<class_float>` s **)**
-
-Returns the square root of ``s``.
-
-::
-
-    sqrt(9) # Returns 3
-
-----
-
-.. _class_@GDScript_method_step_decimals:
-
-- :ref:`int<class_int>` **step_decimals** **(** :ref:`float<class_float>` step **)**
-
-Returns the position of the first non-zero digit, after the decimal point. Note that the maximum return value is 10, which is a design decision in the implementation.
-
-::
-
-    # n is 0
-    n = step_decimals(5)
-    # n is 4
-    n = step_decimals(1.0005)
-    # n is 9
-    n = step_decimals(0.000000005)
-
-----
-
-.. _class_@GDScript_method_stepify:
-
-- :ref:`float<class_float>` **stepify** **(** :ref:`float<class_float>` s, :ref:`float<class_float>` step **)**
-
-Snaps float value ``s`` to a given ``step``. This can also be used to round a floating point number to an arbitrary number of decimals.
-
-::
-
-    stepify(100, 32) # Returns 96
-    stepify(3.14159, 0.01) # Returns 3.14
-
-----
-
-.. _class_@GDScript_method_str:
-
-- :ref:`String<class_String>` **str** **(** ... **)** vararg
-
-Converts one or more arguments to string in the best way possible.
-
-::
-
-    var a = [10, 20, 30]
-    var b = str(a);
-    len(a) # Returns 3
-    len(b) # Returns 12
-
-----
-
-.. _class_@GDScript_method_str2var:
-
-- :ref:`Variant<class_Variant>` **str2var** **(** :ref:`String<class_String>` string **)**
-
-Converts a formatted string that was returned by :ref:`var2str<class_@GDScript_method_var2str>` to the original value.
-
-::
-
-    a = '{ "a": 1, "b": 2 }'
-    b = str2var(a)
-    print(b["a"]) # Prints 1
-
-----
-
-.. _class_@GDScript_method_tan:
-
-- :ref:`float<class_float>` **tan** **(** :ref:`float<class_float>` s **)**
-
-Returns the tangent of angle ``s`` in radians.
-
-::
-
-    tan(deg2rad(45)) # Returns 1
-
-----
-
-.. _class_@GDScript_method_tanh:
-
-- :ref:`float<class_float>` **tanh** **(** :ref:`float<class_float>` s **)**
-
-Returns the hyperbolic tangent of ``s``.
-
-::
-
-    a = log(2.0) # Returns 0.693147
-    tanh(a)      # Returns 0.6
-
-----
-
-.. _class_@GDScript_method_to_json:
-
-- :ref:`String<class_String>` **to_json** **(** :ref:`Variant<class_Variant>` var **)**
-
-Converts a Variant ``var`` to JSON text and return the result. Useful for serializing data to store or send over the network.
-
-::
-
-    a = { "a": 1, "b": 2 }
-    b = to_json(a)
-    print(b) # {"a":1, "b":2}
+    var a = [10, 20, 30]
+    var b = str(a);
+    len(a) # Returns 3
+    len(b) # Returns 12
 
 
 ----
 ----
 
 
 .. _class_@GDScript_method_type_exists:
 .. _class_@GDScript_method_type_exists:
 
 
-- :ref:`bool<class_bool>` **type_exists** **(** :ref:`String<class_String>` type **)**
-
-Returns whether the given class exists in :ref:`ClassDB<class_ClassDB>`.
-
-::
-
-    type_exists("Sprite") # Returns true
-    type_exists("Variant") # Returns false
-
-----
-
-.. _class_@GDScript_method_typeof:
-
-- :ref:`int<class_int>` **typeof** **(** :ref:`Variant<class_Variant>` what **)**
-
-Returns the internal type of the given Variant object, using the :ref:`Variant.Type<enum_@GlobalScope_Variant.Type>` values.
-
-::
-
-    p = parse_json('["a", "b", "c"]')
-    if typeof(p) == TYPE_ARRAY:
-        print(p[0]) # Prints a
-    else:
-        print("unexpected results")
-
-----
-
-.. _class_@GDScript_method_validate_json:
-
-- :ref:`String<class_String>` **validate_json** **(** :ref:`String<class_String>` json **)**
-
-Checks that ``json`` is valid JSON data. Returns an empty string if valid, or an error message otherwise.
-
-::
-
-    j = to_json([1, 2, 3])
-    v = validate_json(j)
-    if not v:
-        print("valid")
-    else:
-        prints("invalid", v)
-
-----
-
-.. _class_@GDScript_method_var2bytes:
-
-- :ref:`PackedByteArray<class_PackedByteArray>` **var2bytes** **(** :ref:`Variant<class_Variant>` var, :ref:`bool<class_bool>` full_objects=false **)**
-
-Encodes a variable value to a byte array. When ``full_objects`` is ``true`` encoding objects is allowed (and can potentially include code).
-
-----
-
-.. _class_@GDScript_method_var2str:
-
-- :ref:`String<class_String>` **var2str** **(** :ref:`Variant<class_Variant>` var **)**
-
-Converts a Variant ``var`` to a formatted string that can later be parsed using :ref:`str2var<class_@GDScript_method_str2var>`.
-
-::
-
-    a = { "a": 1, "b": 2 }
-    print(var2str(a))
-
-prints
-
-::
-
-    {
-    "a": 1,
-    "b": 2
-    }
-
-----
-
-.. _class_@GDScript_method_weakref:
-
-- :ref:`WeakRef<class_WeakRef>` **weakref** **(** :ref:`Object<class_Object>` obj **)**
-
-Returns a weak reference to an object.
-
-A weak reference to an object is not enough to keep the object alive: when the only remaining references to a referent are weak references, garbage collection is free to destroy the referent and reuse its memory for something else. However, until the object is actually destroyed the weak reference may return the object even if there are no strong references to it.
-
-----
-
-.. _class_@GDScript_method_wrapf:
-
-- :ref:`float<class_float>` **wrapf** **(** :ref:`float<class_float>` value, :ref:`float<class_float>` min, :ref:`float<class_float>` max **)**
-
-Wraps float ``value`` between ``min`` and ``max``.
-
-Usable for creating loop-alike behavior or infinite surfaces.
-
-::
-
-    # a is 0.5
-    a = wrapf(10.5, 0.0, 10.0)
-
-::
-
-    # a is 9.5
-    a = wrapf(-0.5, 0.0, 10.0)
-
-::
-
-    # Infinite loop between 0.0 and 0.99
-    f = wrapf(f + 0.1, 0.0, 1.0)
-
-::
-
-    # Infinite rotation (in radians)
-    angle = wrapf(angle + 0.1, 0.0, TAU)
-
-**Note:** If you just want to wrap between 0.0 and ``n`` (where ``n`` is a positive floating-point value), it is better for performance to use the :ref:`fmod<class_@GDScript_method_fmod>` method like ``fmod(number, n)``.
-
-``wrapf`` is more flexible than using the :ref:`fmod<class_@GDScript_method_fmod>` approach by giving the user a simple control over the minimum value. It also fully supports negative numbers, e.g.
-
-::
-
-    # Infinite rotation (in radians)
-    angle = wrapf(angle + 0.1, -PI, PI)
-
-----
-
-.. _class_@GDScript_method_wrapi:
-
-- :ref:`int<class_int>` **wrapi** **(** :ref:`int<class_int>` value, :ref:`int<class_int>` min, :ref:`int<class_int>` max **)**
-
-Wraps integer ``value`` between ``min`` and ``max``.
-
-Usable for creating loop-alike behavior or infinite surfaces.
-
-::
-
-    # a is 0
-    a = wrapi(10, 0, 10)
-
-::
-
-    # a is 9
-    a = wrapi(-1, 0, 10)
-
-::
-
-    # Infinite loop between 0 and 9
-    frame = wrapi(frame + 1, 0, 10)
-
-**Note:** If you just want to wrap between 0 and ``n`` (where ``n`` is a positive integer value), it is better for performance to use the modulo operator like ``number % n``.
-
-``wrapi`` is more flexible than using the modulo approach by giving the user a simple control over the minimum value. It also fully supports negative numbers, e.g.
-
-::
-
-    # result is -2
-    var result = wrapi(-6, -5, -1)
-
-----
-
-.. _class_@GDScript_method_yield:
-
-- :ref:`GDScriptFunctionState<class_GDScriptFunctionState>` **yield** **(** :ref:`Object<class_Object>` object=null, :ref:`String<class_String>` signal="" **)**
-
-Stops the function execution and returns the current suspended state to the calling function.
-
-From the caller, call :ref:`GDScriptFunctionState.resume<class_GDScriptFunctionState_method_resume>` on the state to resume execution. This invalidates the state. Within the resumed function, ``yield()`` returns whatever was passed to the ``resume()`` function call.
-
-If passed an object and a signal, the execution is resumed when the object emits the given signal. In this case, ``yield()`` returns the argument passed to ``emit_signal()`` if the signal takes only one argument, or an array containing all the arguments passed to ``emit_signal()`` if the signal takes multiple arguments.
-
-You can also use ``yield`` to wait for a function to finish:
-
-::
-
-    func _ready():
-        yield(countdown(), "completed") # waiting for the countdown() function to complete
-        print('Ready')
-    
-    func countdown():
-        yield(get_tree(), "idle_frame") # returns a GDScriptFunctionState object to _ready()
-        print(3)
-        yield(get_tree().create_timer(1.0), "timeout")
-        print(2)
-        yield(get_tree().create_timer(1.0), "timeout")
-        print(1)
-        yield(get_tree().create_timer(1.0), "timeout")
-    
-    # prints:
-    # 3
-    # 2
-    # 1
-    # Ready
-
-When yielding on a function, the ``completed`` signal will be emitted automatically when the function returns. It can, therefore, be used as the ``signal`` parameter of the ``yield`` method to resume.
-
-In order to yield on a function, the resulting function should also return a ``GDScriptFunctionState``. Notice ``yield(get_tree(), "idle_frame")`` from the above example.
+- :ref:`bool<class_bool>` **type_exists** **(** :ref:`StringName<class_StringName>` type **)**
 
 
+.. |virtual| replace:: :abbr:`virtual (This method should typically be overridden by the user to have any effect.)`
+.. |const| replace:: :abbr:`const (This method has no side effects. It doesn't modify any of the instance's member variables.)`
+.. |vararg| replace:: :abbr:`vararg (This method accepts any number of arguments after the ones described here.)`
+.. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)`
+.. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)`
+.. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)`

File diff ditekan karena terlalu besar
+ 504 - 292
classes/[email protected]


+ 0 - 13
classes/[email protected]

@@ -1,13 +0,0 @@
-:github_url: hide
-
-.. Generated automatically by doc/tools/makerst.py in Godot's source tree.
-.. DO NOT EDIT THIS FILE, but the @NativeScript.xml source instead.
-.. The source is found in doc/classes or modules/<name>/doc_classes.
-
-.. _class_@NativeScript:
-
-@NativeScript
-=============
-
-
-

+ 0 - 18
classes/[email protected]

@@ -1,18 +0,0 @@
-:github_url: hide
-
-.. Generated automatically by doc/tools/makerst.py in Godot's source tree.
-.. DO NOT EDIT THIS FILE, but the @VisualScript.xml source instead.
-.. The source is found in doc/classes or modules/<name>/doc_classes.
-
-.. _class_@VisualScript:
-
-@VisualScript
-=============
-
-Built-in visual script functions.
-
-Description
------------
-
-A list of built-in visual script functions, see :ref:`VisualScriptBuiltinFunc<class_VisualScriptBuiltinFunc>` and :ref:`VisualScript<class_VisualScript>`.
-

+ 185 - 89
classes/class_aabb.rst

@@ -14,72 +14,100 @@ Axis-Aligned Bounding Box.
 Description
 Description
 -----------
 -----------
 
 
-AABB consists of a position, a size, and several utility functions. It is typically used for fast overlap tests.
+``AABB`` consists of a position, a size, and several utility functions. It is typically used for fast overlap tests.
+
+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.
 
 
 Tutorials
 Tutorials
 ---------
 ---------
 
 
 - :doc:`../tutorials/math/index`
 - :doc:`../tutorials/math/index`
 
 
+- :doc:`../tutorials/math/vector_math`
+
+- :doc:`../tutorials/math/vectors_advanced`
+
 Properties
 Properties
 ----------
 ----------
 
 
-+-------------------------------+-----------------------------------------------+------------------------+
-| :ref:`Vector3<class_Vector3>` | :ref:`end<class_AABB_property_end>`           | ``Vector3( 0, 0, 0 )`` |
-+-------------------------------+-----------------------------------------------+------------------------+
-| :ref:`Vector3<class_Vector3>` | :ref:`position<class_AABB_property_position>` | ``Vector3( 0, 0, 0 )`` |
-+-------------------------------+-----------------------------------------------+------------------------+
-| :ref:`Vector3<class_Vector3>` | :ref:`size<class_AABB_property_size>`         | ``Vector3( 0, 0, 0 )`` |
-+-------------------------------+-----------------------------------------------+------------------------+
++-------------------------------+-----------------------------------------------+----------------------+
+| :ref:`Vector3<class_Vector3>` | :ref:`end<class_AABB_property_end>`           | ``Vector3(0, 0, 0)`` |
++-------------------------------+-----------------------------------------------+----------------------+
+| :ref:`Vector3<class_Vector3>` | :ref:`position<class_AABB_property_position>` | ``Vector3(0, 0, 0)`` |
++-------------------------------+-----------------------------------------------+----------------------+
+| :ref:`Vector3<class_Vector3>` | :ref:`size<class_AABB_property_size>`         | ``Vector3(0, 0, 0)`` |
++-------------------------------+-----------------------------------------------+----------------------+
 
 
 Methods
 Methods
 -------
 -------
 
 
-+-------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`AABB<class_AABB>`       | :ref:`AABB<class_AABB_method_AABB>` **(** :ref:`Vector3<class_Vector3>` position, :ref:`Vector3<class_Vector3>` size **)**                       |
-+-------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`bool<class_bool>`       | :ref:`encloses<class_AABB_method_encloses>` **(** :ref:`AABB<class_AABB>` with **)**                                                             |
-+-------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`AABB<class_AABB>`       | :ref:`expand<class_AABB_method_expand>` **(** :ref:`Vector3<class_Vector3>` to_point **)**                                                       |
-+-------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`float<class_float>`     | :ref:`get_area<class_AABB_method_get_area>` **(** **)**                                                                                          |
-+-------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------+
-| :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>` **(** **)**                                                                          |
-+-------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`int<class_int>`         | :ref:`get_longest_axis_index<class_AABB_method_get_longest_axis_index>` **(** **)**                                                              |
-+-------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`float<class_float>`     | :ref:`get_longest_axis_size<class_AABB_method_get_longest_axis_size>` **(** **)**                                                                |
-+-------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`Vector3<class_Vector3>` | :ref:`get_shortest_axis<class_AABB_method_get_shortest_axis>` **(** **)**                                                                        |
-+-------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`int<class_int>`         | :ref:`get_shortest_axis_index<class_AABB_method_get_shortest_axis_index>` **(** **)**                                                            |
-+-------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`float<class_float>`     | :ref:`get_shortest_axis_size<class_AABB_method_get_shortest_axis_size>` **(** **)**                                                              |
-+-------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`Vector3<class_Vector3>` | :ref:`get_support<class_AABB_method_get_support>` **(** :ref:`Vector3<class_Vector3>` dir **)**                                                  |
-+-------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`AABB<class_AABB>`       | :ref:`grow<class_AABB_method_grow>` **(** :ref:`float<class_float>` by **)**                                                                     |
-+-------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`bool<class_bool>`       | :ref:`has_no_area<class_AABB_method_has_no_area>` **(** **)**                                                                                    |
-+-------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`bool<class_bool>`       | :ref:`has_no_surface<class_AABB_method_has_no_surface>` **(** **)**                                                                              |
-+-------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`bool<class_bool>`       | :ref:`has_point<class_AABB_method_has_point>` **(** :ref:`Vector3<class_Vector3>` point **)**                                                    |
-+-------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`AABB<class_AABB>`       | :ref:`intersection<class_AABB_method_intersection>` **(** :ref:`AABB<class_AABB>` with **)**                                                     |
-+-------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`bool<class_bool>`       | :ref:`intersects<class_AABB_method_intersects>` **(** :ref:`AABB<class_AABB>` with **)**                                                         |
-+-------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`bool<class_bool>`       | :ref:`intersects_plane<class_AABB_method_intersects_plane>` **(** :ref:`Plane<class_Plane>` plane **)**                                          |
-+-------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`bool<class_bool>`       | :ref:`intersects_segment<class_AABB_method_intersects_segment>` **(** :ref:`Vector3<class_Vector3>` from, :ref:`Vector3<class_Vector3>` to **)** |
-+-------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`bool<class_bool>`       | :ref:`is_equal_approx<class_AABB_method_is_equal_approx>` **(** :ref:`AABB<class_AABB>` aabb **)**                                               |
-+-------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`AABB<class_AABB>`       | :ref:`merge<class_AABB_method_merge>` **(** :ref:`AABB<class_AABB>` with **)**                                                                   |
-+-------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------+
++-------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`AABB<class_AABB>`       | :ref:`AABB<class_AABB_method_AABB>` **(** **)** |constructor|                                                                                            |
++-------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`AABB<class_AABB>`       | :ref:`AABB<class_AABB_method_AABB>` **(** :ref:`AABB<class_AABB>` from **)** |constructor|                                                               |
++-------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`AABB<class_AABB>`       | :ref:`AABB<class_AABB_method_AABB>` **(** :ref:`Vector3<class_Vector3>` position, :ref:`Vector3<class_Vector3>` size **)** |constructor|                 |
++-------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`AABB<class_AABB>`       | :ref:`abs<class_AABB_method_abs>` **(** **)** |const|                                                                                                    |
++-------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`bool<class_bool>`       | :ref:`encloses<class_AABB_method_encloses>` **(** :ref:`AABB<class_AABB>` with **)** |const|                                                             |
++-------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`AABB<class_AABB>`       | :ref:`expand<class_AABB_method_expand>` **(** :ref:`Vector3<class_Vector3>` to_point **)** |const|                                                       |
++-------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`float<class_float>`     | :ref:`get_area<class_AABB_method_get_area>` **(** **)** |const|                                                                                          |
++-------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`Vector3<class_Vector3>` | :ref:`get_center<class_AABB_method_get_center>` **(** **)** |const|                                                                                      |
++-------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`Vector3<class_Vector3>` | :ref:`get_endpoint<class_AABB_method_get_endpoint>` **(** :ref:`int<class_int>` idx **)** |const|                                                        |
++-------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`Vector3<class_Vector3>` | :ref:`get_longest_axis<class_AABB_method_get_longest_axis>` **(** **)** |const|                                                                          |
++-------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`int<class_int>`         | :ref:`get_longest_axis_index<class_AABB_method_get_longest_axis_index>` **(** **)** |const|                                                              |
++-------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`float<class_float>`     | :ref:`get_longest_axis_size<class_AABB_method_get_longest_axis_size>` **(** **)** |const|                                                                |
++-------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`Vector3<class_Vector3>` | :ref:`get_shortest_axis<class_AABB_method_get_shortest_axis>` **(** **)** |const|                                                                        |
++-------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`int<class_int>`         | :ref:`get_shortest_axis_index<class_AABB_method_get_shortest_axis_index>` **(** **)** |const|                                                            |
++-------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`float<class_float>`     | :ref:`get_shortest_axis_size<class_AABB_method_get_shortest_axis_size>` **(** **)** |const|                                                              |
++-------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`Vector3<class_Vector3>` | :ref:`get_support<class_AABB_method_get_support>` **(** :ref:`Vector3<class_Vector3>` dir **)** |const|                                                  |
++-------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`AABB<class_AABB>`       | :ref:`grow<class_AABB_method_grow>` **(** :ref:`float<class_float>` by **)** |const|                                                                     |
++-------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`bool<class_bool>`       | :ref:`has_no_area<class_AABB_method_has_no_area>` **(** **)** |const|                                                                                    |
++-------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`bool<class_bool>`       | :ref:`has_no_surface<class_AABB_method_has_no_surface>` **(** **)** |const|                                                                              |
++-------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`bool<class_bool>`       | :ref:`has_point<class_AABB_method_has_point>` **(** :ref:`Vector3<class_Vector3>` point **)** |const|                                                    |
++-------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`AABB<class_AABB>`       | :ref:`intersection<class_AABB_method_intersection>` **(** :ref:`AABB<class_AABB>` with **)** |const|                                                     |
++-------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`bool<class_bool>`       | :ref:`intersects<class_AABB_method_intersects>` **(** :ref:`AABB<class_AABB>` with **)** |const|                                                         |
++-------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`bool<class_bool>`       | :ref:`intersects_plane<class_AABB_method_intersects_plane>` **(** :ref:`Plane<class_Plane>` plane **)** |const|                                          |
++-------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`Variant<class_Variant>` | :ref:`intersects_ray<class_AABB_method_intersects_ray>` **(** :ref:`Vector3<class_Vector3>` from, :ref:`Vector3<class_Vector3>` dir **)** |const|        |
++-------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`Variant<class_Variant>` | :ref:`intersects_segment<class_AABB_method_intersects_segment>` **(** :ref:`Vector3<class_Vector3>` from, :ref:`Vector3<class_Vector3>` to **)** |const| |
++-------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`bool<class_bool>`       | :ref:`is_equal_approx<class_AABB_method_is_equal_approx>` **(** :ref:`AABB<class_AABB>` aabb **)** |const|                                               |
++-------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`AABB<class_AABB>`       | :ref:`merge<class_AABB_method_merge>` **(** :ref:`AABB<class_AABB>` with **)** |const|                                                                   |
++-------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`bool<class_bool>`       | **operator !=** **(** **)** |operator|                                                                                                                   |
++-------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`bool<class_bool>`       | **operator !=** **(** :ref:`AABB<class_AABB>` right **)** |operator|                                                                                     |
++-------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`AABB<class_AABB>`       | **operator *** **(** :ref:`Transform3D<class_Transform3D>` right **)** |operator|                                                                        |
++-------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`bool<class_bool>`       | **operator ==** **(** **)** |operator|                                                                                                                   |
++-------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`bool<class_bool>`       | **operator ==** **(** :ref:`AABB<class_AABB>` right **)** |operator|                                                                                     |
++-------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------+
 
 
 Property Descriptions
 Property Descriptions
 ---------------------
 ---------------------
@@ -88,11 +116,11 @@ Property Descriptions
 
 
 - :ref:`Vector3<class_Vector3>` **end**
 - :ref:`Vector3<class_Vector3>` **end**
 
 
-+-----------+------------------------+
-| *Default* | ``Vector3( 0, 0, 0 )`` |
-+-----------+------------------------+
++-----------+----------------------+
+| *Default* | ``Vector3(0, 0, 0)`` |
++-----------+----------------------+
 
 
-Ending corner. This is calculated as ``position + size``. Changing this property changes :ref:`size<class_AABB_property_size>` accordingly.
+Ending corner. This is calculated as ``position + size``. Setting this value will change the size.
 
 
 ----
 ----
 
 
@@ -100,11 +128,11 @@ Ending corner. This is calculated as ``position + size``. Changing this property
 
 
 - :ref:`Vector3<class_Vector3>` **position**
 - :ref:`Vector3<class_Vector3>` **position**
 
 
-+-----------+------------------------+
-| *Default* | ``Vector3( 0, 0, 0 )`` |
-+-----------+------------------------+
++-----------+----------------------+
+| *Default* | ``Vector3(0, 0, 0)`` |
++-----------+----------------------+
 
 
-Beginning corner.
+Beginning corner. Typically has values lower than :ref:`end<class_AABB_property_end>`.
 
 
 ----
 ----
 
 
@@ -112,26 +140,48 @@ Beginning corner.
 
 
 - :ref:`Vector3<class_Vector3>` **size**
 - :ref:`Vector3<class_Vector3>` **size**
 
 
-+-----------+------------------------+
-| *Default* | ``Vector3( 0, 0, 0 )`` |
-+-----------+------------------------+
++-----------+----------------------+
+| *Default* | ``Vector3(0, 0, 0)`` |
++-----------+----------------------+
+
+Size from :ref:`position<class_AABB_property_position>` to :ref:`end<class_AABB_property_end>`. Typically, all components are positive.
 
 
-Size from position to end.
+If the size is negative, you can use :ref:`abs<class_AABB_method_abs>` to fix it.
 
 
 Method Descriptions
 Method Descriptions
 -------------------
 -------------------
 
 
 .. _class_AABB_method_AABB:
 .. _class_AABB_method_AABB:
 
 
-- :ref:`AABB<class_AABB>` **AABB** **(** :ref:`Vector3<class_Vector3>` position, :ref:`Vector3<class_Vector3>` size **)**
+- :ref:`AABB<class_AABB>` **AABB** **(** **)** |constructor|
+
+Constructs a default-initialized ``AABB`` with default (zero) values of :ref:`position<class_AABB_property_position>` and :ref:`size<class_AABB_property_size>`.
 
 
-Optional constructor, accepts position and size.
+----
+
+- :ref:`AABB<class_AABB>` **AABB** **(** :ref:`AABB<class_AABB>` from **)** |constructor|
+
+Constructs an ``AABB`` as a copy of the given ``AABB``.
+
+----
+
+- :ref:`AABB<class_AABB>` **AABB** **(** :ref:`Vector3<class_Vector3>` position, :ref:`Vector3<class_Vector3>` size **)** |constructor|
+
+Constructs an ``AABB`` from a position and size.
+
+----
+
+.. _class_AABB_method_abs:
+
+- :ref:`AABB<class_AABB>` **abs** **(** **)** |const|
+
+Returns an AABB with equivalent position and size, modified so that the most-negative corner is the origin and the size is positive.
 
 
 ----
 ----
 
 
 .. _class_AABB_method_encloses:
 .. _class_AABB_method_encloses:
 
 
-- :ref:`bool<class_bool>` **encloses** **(** :ref:`AABB<class_AABB>` with **)**
+- :ref:`bool<class_bool>` **encloses** **(** :ref:`AABB<class_AABB>` with **)** |const|
 
 
 Returns ``true`` if this ``AABB`` completely encloses another one.
 Returns ``true`` if this ``AABB`` completely encloses another one.
 
 
@@ -139,7 +189,7 @@ Returns ``true`` if this ``AABB`` completely encloses another one.
 
 
 .. _class_AABB_method_expand:
 .. _class_AABB_method_expand:
 
 
-- :ref:`AABB<class_AABB>` **expand** **(** :ref:`Vector3<class_Vector3>` to_point **)**
+- :ref:`AABB<class_AABB>` **expand** **(** :ref:`Vector3<class_Vector3>` to_point **)** |const|
 
 
 Returns this ``AABB`` expanded to include a given point.
 Returns this ``AABB`` expanded to include a given point.
 
 
@@ -147,15 +197,23 @@ Returns this ``AABB`` expanded to include a given point.
 
 
 .. _class_AABB_method_get_area:
 .. _class_AABB_method_get_area:
 
 
-- :ref:`float<class_float>` **get_area** **(** **)**
+- :ref:`float<class_float>` **get_area** **(** **)** |const|
 
 
 Returns the volume of the ``AABB``.
 Returns the volume of the ``AABB``.
 
 
 ----
 ----
 
 
+.. _class_AABB_method_get_center:
+
+- :ref:`Vector3<class_Vector3>` **get_center** **(** **)** |const|
+
+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:
 .. _class_AABB_method_get_endpoint:
 
 
-- :ref:`Vector3<class_Vector3>` **get_endpoint** **(** :ref:`int<class_int>` idx **)**
+- :ref:`Vector3<class_Vector3>` **get_endpoint** **(** :ref:`int<class_int>` idx **)** |const|
 
 
 Gets the position of the 8 endpoints of the ``AABB`` in space.
 Gets the position of the 8 endpoints of the ``AABB`` in space.
 
 
@@ -163,7 +221,7 @@ Gets the position of the 8 endpoints of the ``AABB`` in space.
 
 
 .. _class_AABB_method_get_longest_axis:
 .. _class_AABB_method_get_longest_axis:
 
 
-- :ref:`Vector3<class_Vector3>` **get_longest_axis** **(** **)**
+- :ref:`Vector3<class_Vector3>` **get_longest_axis** **(** **)** |const|
 
 
 Returns the normalized longest axis of the ``AABB``.
 Returns the normalized longest axis of the ``AABB``.
 
 
@@ -171,7 +229,7 @@ Returns the normalized longest axis of the ``AABB``.
 
 
 .. _class_AABB_method_get_longest_axis_index:
 .. _class_AABB_method_get_longest_axis_index:
 
 
-- :ref:`int<class_int>` **get_longest_axis_index** **(** **)**
+- :ref:`int<class_int>` **get_longest_axis_index** **(** **)** |const|
 
 
 Returns the index of the longest axis of the ``AABB`` (according to :ref:`Vector3<class_Vector3>`'s ``AXIS_*`` constants).
 Returns the index of the longest axis of the ``AABB`` (according to :ref:`Vector3<class_Vector3>`'s ``AXIS_*`` constants).
 
 
@@ -179,7 +237,7 @@ Returns the index of the longest axis of the ``AABB`` (according to :ref:`Vector
 
 
 .. _class_AABB_method_get_longest_axis_size:
 .. _class_AABB_method_get_longest_axis_size:
 
 
-- :ref:`float<class_float>` **get_longest_axis_size** **(** **)**
+- :ref:`float<class_float>` **get_longest_axis_size** **(** **)** |const|
 
 
 Returns the scalar length of the longest axis of the ``AABB``.
 Returns the scalar length of the longest axis of the ``AABB``.
 
 
@@ -187,7 +245,7 @@ Returns the scalar length of the longest axis of the ``AABB``.
 
 
 .. _class_AABB_method_get_shortest_axis:
 .. _class_AABB_method_get_shortest_axis:
 
 
-- :ref:`Vector3<class_Vector3>` **get_shortest_axis** **(** **)**
+- :ref:`Vector3<class_Vector3>` **get_shortest_axis** **(** **)** |const|
 
 
 Returns the normalized shortest axis of the ``AABB``.
 Returns the normalized shortest axis of the ``AABB``.
 
 
@@ -195,7 +253,7 @@ Returns the normalized shortest axis of the ``AABB``.
 
 
 .. _class_AABB_method_get_shortest_axis_index:
 .. _class_AABB_method_get_shortest_axis_index:
 
 
-- :ref:`int<class_int>` **get_shortest_axis_index** **(** **)**
+- :ref:`int<class_int>` **get_shortest_axis_index** **(** **)** |const|
 
 
 Returns the index of the shortest axis of the ``AABB`` (according to :ref:`Vector3<class_Vector3>`::AXIS\* enum).
 Returns the index of the shortest axis of the ``AABB`` (according to :ref:`Vector3<class_Vector3>`::AXIS\* enum).
 
 
@@ -203,7 +261,7 @@ Returns the index of the shortest axis of the ``AABB`` (according to :ref:`Vecto
 
 
 .. _class_AABB_method_get_shortest_axis_size:
 .. _class_AABB_method_get_shortest_axis_size:
 
 
-- :ref:`float<class_float>` **get_shortest_axis_size** **(** **)**
+- :ref:`float<class_float>` **get_shortest_axis_size** **(** **)** |const|
 
 
 Returns the scalar length of the shortest axis of the ``AABB``.
 Returns the scalar length of the shortest axis of the ``AABB``.
 
 
@@ -211,7 +269,7 @@ Returns the scalar length of the shortest axis of the ``AABB``.
 
 
 .. _class_AABB_method_get_support:
 .. _class_AABB_method_get_support:
 
 
-- :ref:`Vector3<class_Vector3>` **get_support** **(** :ref:`Vector3<class_Vector3>` dir **)**
+- :ref:`Vector3<class_Vector3>` **get_support** **(** :ref:`Vector3<class_Vector3>` dir **)** |const|
 
 
 Returns the support point in a given direction. This is useful for collision detection algorithms.
 Returns the support point in a given direction. This is useful for collision detection algorithms.
 
 
@@ -219,7 +277,7 @@ Returns the support point in a given direction. This is useful for collision det
 
 
 .. _class_AABB_method_grow:
 .. _class_AABB_method_grow:
 
 
-- :ref:`AABB<class_AABB>` **grow** **(** :ref:`float<class_float>` by **)**
+- :ref:`AABB<class_AABB>` **grow** **(** :ref:`float<class_float>` by **)** |const|
 
 
 Returns a copy of the ``AABB`` grown a given amount of units towards all the sides.
 Returns a copy of the ``AABB`` grown a given amount of units towards all the sides.
 
 
@@ -227,7 +285,7 @@ Returns a copy of the ``AABB`` grown a given amount of units towards all the sid
 
 
 .. _class_AABB_method_has_no_area:
 .. _class_AABB_method_has_no_area:
 
 
-- :ref:`bool<class_bool>` **has_no_area** **(** **)**
+- :ref:`bool<class_bool>` **has_no_area** **(** **)** |const|
 
 
 Returns ``true`` if the ``AABB`` is flat or empty.
 Returns ``true`` if the ``AABB`` is flat or empty.
 
 
@@ -235,7 +293,7 @@ Returns ``true`` if the ``AABB`` is flat or empty.
 
 
 .. _class_AABB_method_has_no_surface:
 .. _class_AABB_method_has_no_surface:
 
 
-- :ref:`bool<class_bool>` **has_no_surface** **(** **)**
+- :ref:`bool<class_bool>` **has_no_surface** **(** **)** |const|
 
 
 Returns ``true`` if the ``AABB`` is empty.
 Returns ``true`` if the ``AABB`` is empty.
 
 
@@ -243,7 +301,7 @@ Returns ``true`` if the ``AABB`` is empty.
 
 
 .. _class_AABB_method_has_point:
 .. _class_AABB_method_has_point:
 
 
-- :ref:`bool<class_bool>` **has_point** **(** :ref:`Vector3<class_Vector3>` point **)**
+- :ref:`bool<class_bool>` **has_point** **(** :ref:`Vector3<class_Vector3>` point **)** |const|
 
 
 Returns ``true`` if the ``AABB`` contains a point.
 Returns ``true`` if the ``AABB`` contains a point.
 
 
@@ -251,7 +309,7 @@ Returns ``true`` if the ``AABB`` contains a point.
 
 
 .. _class_AABB_method_intersection:
 .. _class_AABB_method_intersection:
 
 
-- :ref:`AABB<class_AABB>` **intersection** **(** :ref:`AABB<class_AABB>` with **)**
+- :ref:`AABB<class_AABB>` **intersection** **(** :ref:`AABB<class_AABB>` with **)** |const|
 
 
 Returns the intersection between two ``AABB``. An empty AABB (size 0,0,0) is returned on failure.
 Returns the intersection between two ``AABB``. An empty AABB (size 0,0,0) is returned on failure.
 
 
@@ -259,7 +317,7 @@ Returns the intersection between two ``AABB``. An empty AABB (size 0,0,0) is ret
 
 
 .. _class_AABB_method_intersects:
 .. _class_AABB_method_intersects:
 
 
-- :ref:`bool<class_bool>` **intersects** **(** :ref:`AABB<class_AABB>` with **)**
+- :ref:`bool<class_bool>` **intersects** **(** :ref:`AABB<class_AABB>` with **)** |const|
 
 
 Returns ``true`` if the ``AABB`` overlaps with another.
 Returns ``true`` if the ``AABB`` overlaps with another.
 
 
@@ -267,15 +325,21 @@ Returns ``true`` if the ``AABB`` overlaps with another.
 
 
 .. _class_AABB_method_intersects_plane:
 .. _class_AABB_method_intersects_plane:
 
 
-- :ref:`bool<class_bool>` **intersects_plane** **(** :ref:`Plane<class_Plane>` plane **)**
+- :ref:`bool<class_bool>` **intersects_plane** **(** :ref:`Plane<class_Plane>` plane **)** |const|
 
 
 Returns ``true`` if the ``AABB`` is on both sides of a plane.
 Returns ``true`` if the ``AABB`` is on both sides of a plane.
 
 
 ----
 ----
 
 
+.. _class_AABB_method_intersects_ray:
+
+- :ref:`Variant<class_Variant>` **intersects_ray** **(** :ref:`Vector3<class_Vector3>` from, :ref:`Vector3<class_Vector3>` dir **)** |const|
+
+----
+
 .. _class_AABB_method_intersects_segment:
 .. _class_AABB_method_intersects_segment:
 
 
-- :ref:`bool<class_bool>` **intersects_segment** **(** :ref:`Vector3<class_Vector3>` from, :ref:`Vector3<class_Vector3>` to **)**
+- :ref:`Variant<class_Variant>` **intersects_segment** **(** :ref:`Vector3<class_Vector3>` from, :ref:`Vector3<class_Vector3>` to **)** |const|
 
 
 Returns ``true`` if the ``AABB`` intersects the line segment between ``from`` and ``to``.
 Returns ``true`` if the ``AABB`` intersects the line segment between ``from`` and ``to``.
 
 
@@ -283,15 +347,47 @@ Returns ``true`` if the ``AABB`` intersects the line segment between ``from`` an
 
 
 .. _class_AABB_method_is_equal_approx:
 .. _class_AABB_method_is_equal_approx:
 
 
-- :ref:`bool<class_bool>` **is_equal_approx** **(** :ref:`AABB<class_AABB>` aabb **)**
+- :ref:`bool<class_bool>` **is_equal_approx** **(** :ref:`AABB<class_AABB>` aabb **)** |const|
 
 
-Returns ``true`` if this ``AABB`` and ``aabb`` are approximately equal, by calling :ref:`@GDScript.is_equal_approx<class_@GDScript_method_is_equal_approx>` on each component.
+Returns ``true`` if this ``AABB`` and ``aabb`` are approximately equal, by calling :ref:`@GlobalScope.is_equal_approx<class_@GlobalScope_method_is_equal_approx>` on each component.
 
 
 ----
 ----
 
 
 .. _class_AABB_method_merge:
 .. _class_AABB_method_merge:
 
 
-- :ref:`AABB<class_AABB>` **merge** **(** :ref:`AABB<class_AABB>` with **)**
+- :ref:`AABB<class_AABB>` **merge** **(** :ref:`AABB<class_AABB>` with **)** |const|
 
 
 Returns a larger ``AABB`` that contains both this ``AABB`` and ``with``.
 Returns a larger ``AABB`` that contains both this ``AABB`` and ``with``.
 
 
+----
+
+.. _class_AABB_method_operator !=:
+
+- :ref:`bool<class_bool>` **operator !=** **(** **)** |operator|
+
+----
+
+- :ref:`bool<class_bool>` **operator !=** **(** :ref:`AABB<class_AABB>` right **)** |operator|
+
+----
+
+.. _class_AABB_method_operator *:
+
+- :ref:`AABB<class_AABB>` **operator *** **(** :ref:`Transform3D<class_Transform3D>` right **)** |operator|
+
+----
+
+.. _class_AABB_method_operator ==:
+
+- :ref:`bool<class_bool>` **operator ==** **(** **)** |operator|
+
+----
+
+- :ref:`bool<class_bool>` **operator ==** **(** :ref:`AABB<class_AABB>` right **)** |operator|
+
+.. |virtual| replace:: :abbr:`virtual (This method should typically be overridden by the user to have any effect.)`
+.. |const| replace:: :abbr:`const (This method has no side effects. It doesn't modify any of the instance's member variables.)`
+.. |vararg| replace:: :abbr:`vararg (This method accepts any number of arguments after the ones described here.)`
+.. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)`
+.. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)`
+.. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)`

+ 70 - 18
classes/class_acceptdialog.rst

@@ -9,7 +9,7 @@
 AcceptDialog
 AcceptDialog
 ============
 ============
 
 
-**Inherits:** :ref:`WindowDialog<class_WindowDialog>` **<** :ref:`Popup<class_Popup>` **<** :ref:`Control<class_Control>` **<** :ref:`CanvasItem<class_CanvasItem>` **<** :ref:`Node<class_Node>` **<** :ref:`Object<class_Object>`
+**Inherits:** :ref:`Window<class_Window>` **<** :ref:`Viewport<class_Viewport>` **<** :ref:`Node<class_Node>` **<** :ref:`Object<class_Object>`
 
 
 **Inherited By:** :ref:`ConfirmationDialog<class_ConfirmationDialog>`
 **Inherited By:** :ref:`ConfirmationDialog<class_ConfirmationDialog>`
 
 
@@ -23,15 +23,23 @@ This dialog is useful for small notifications to the user about an event. It can
 Properties
 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                                                            | **O:** ``"Alert!"`` |
-+-----------------------------+-------------------------------------------------------------------------+---------------------+
++-----------------------------+-------------------------------------------------------------------------+----------------------------------+
+| :ref:`bool<class_bool>`     | :ref:`dialog_autowrap<class_AcceptDialog_property_dialog_autowrap>`     | ``false``                        |
++-----------------------------+-------------------------------------------------------------------------+----------------------------------+
+| :ref:`bool<class_bool>`     | :ref:`dialog_hide_on_ok<class_AcceptDialog_property_dialog_hide_on_ok>` | ``true``                         |
++-----------------------------+-------------------------------------------------------------------------+----------------------------------+
+| :ref:`String<class_String>` | :ref:`dialog_text<class_AcceptDialog_property_dialog_text>`             | ``""``                           |
++-----------------------------+-------------------------------------------------------------------------+----------------------------------+
+| :ref:`bool<class_bool>`     | exclusive                                                               | ``true`` *(parent override)*     |
++-----------------------------+-------------------------------------------------------------------------+----------------------------------+
+| :ref:`String<class_String>` | title                                                                   | ``"Alert!"`` *(parent override)* |
++-----------------------------+-------------------------------------------------------------------------+----------------------------------+
+| :ref:`bool<class_bool>`     | transient                                                               | ``true`` *(parent override)*     |
++-----------------------------+-------------------------------------------------------------------------+----------------------------------+
+| :ref:`bool<class_bool>`     | visible                                                                 | ``false`` *(parent override)*    |
++-----------------------------+-------------------------------------------------------------------------+----------------------------------+
+| :ref:`bool<class_bool>`     | wrap_controls                                                           | ``true`` *(parent override)*     |
++-----------------------------+-------------------------------------------------------------------------+----------------------------------+
 
 
 Methods
 Methods
 -------
 -------
@@ -39,18 +47,35 @@ Methods
 +-----------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
 +-----------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
 | :ref:`Button<class_Button>` | :ref:`add_button<class_AcceptDialog_method_add_button>` **(** :ref:`String<class_String>` text, :ref:`bool<class_bool>` right=false, :ref:`String<class_String>` action="" **)** |
 | :ref:`Button<class_Button>` | :ref:`add_button<class_AcceptDialog_method_add_button>` **(** :ref:`String<class_String>` text, :ref:`bool<class_bool>` right=false, :ref:`String<class_String>` action="" **)** |
 +-----------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
 +-----------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`Button<class_Button>` | :ref:`add_cancel<class_AcceptDialog_method_add_cancel>` **(** :ref:`String<class_String>` name **)**                                                                             |
+| :ref:`Button<class_Button>` | :ref:`add_cancel_button<class_AcceptDialog_method_add_cancel_button>` **(** :ref:`String<class_String>` name **)**                                                               |
 +-----------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
 +-----------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
 | :ref:`Label<class_Label>`   | :ref:`get_label<class_AcceptDialog_method_get_label>` **(** **)**                                                                                                                |
 | :ref:`Label<class_Label>`   | :ref:`get_label<class_AcceptDialog_method_get_label>` **(** **)**                                                                                                                |
 +-----------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
 +-----------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`Button<class_Button>` | :ref:`get_ok<class_AcceptDialog_method_get_ok>` **(** **)**                                                                                                                      |
+| :ref:`Button<class_Button>` | :ref:`get_ok_button<class_AcceptDialog_method_get_ok_button>` **(** **)**                                                                                                        |
 +-----------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
 +-----------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| void                        | :ref:`register_text_enter<class_AcceptDialog_method_register_text_enter>` **(** :ref:`Node<class_Node>` line_edit **)**                                                          |
+| void                        | :ref:`register_text_enter<class_AcceptDialog_method_register_text_enter>` **(** :ref:`Control<class_Control>` line_edit **)**                                                    |
 +-----------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
 +-----------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| void                        | :ref:`remove_button<class_AcceptDialog_method_remove_button>` **(** :ref:`Control<class_Control>` button **)**                                                                   |
++-----------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+
+Theme Properties
+----------------
+
++---------------------------------+----------------------------------------------------+
+| :ref:`StyleBox<class_StyleBox>` | :ref:`panel<class_AcceptDialog_theme_style_panel>` |
++---------------------------------+----------------------------------------------------+
 
 
 Signals
 Signals
 -------
 -------
 
 
+.. _class_AcceptDialog_signal_cancelled:
+
+- **cancelled** **(** **)**
+
+Emitted when the dialog is closed or the button created with :ref:`add_cancel_button<class_AcceptDialog_method_add_cancel_button>` is pressed.
+
+----
+
 .. _class_AcceptDialog_signal_confirmed:
 .. _class_AcceptDialog_signal_confirmed:
 
 
 - **confirmed** **(** **)**
 - **confirmed** **(** **)**
@@ -127,14 +152,18 @@ Adds a button with label ``text`` and a custom ``action`` to the dialog and retu
 
 
 If ``true``, ``right`` will place the button to the right of any sibling buttons.
 If ``true``, ``right`` will place the button to the right of any sibling buttons.
 
 
+You can use :ref:`remove_button<class_AcceptDialog_method_remove_button>` method to remove a button created with this method from the dialog.
+
 ----
 ----
 
 
-.. _class_AcceptDialog_method_add_cancel:
+.. _class_AcceptDialog_method_add_cancel_button:
 
 
-- :ref:`Button<class_Button>` **add_cancel** **(** :ref:`String<class_String>` name **)**
+- :ref:`Button<class_Button>` **add_cancel_button** **(** :ref:`String<class_String>` name **)**
 
 
 Adds a button with label ``name`` and a cancel action to the dialog and returns the created button.
 Adds a button with label ``name`` and a cancel action to the dialog and returns the created button.
 
 
+You can use :ref:`remove_button<class_AcceptDialog_method_remove_button>` method to remove a button created with this method from the dialog.
+
 ----
 ----
 
 
 .. _class_AcceptDialog_method_get_label:
 .. _class_AcceptDialog_method_get_label:
@@ -145,9 +174,9 @@ Returns the label used for built-in text.
 
 
 ----
 ----
 
 
-.. _class_AcceptDialog_method_get_ok:
+.. _class_AcceptDialog_method_get_ok_button:
 
 
-- :ref:`Button<class_Button>` **get_ok** **(** **)**
+- :ref:`Button<class_Button>` **get_ok_button** **(** **)**
 
 
 Returns the OK :ref:`Button<class_Button>` instance.
 Returns the OK :ref:`Button<class_Button>` instance.
 
 
@@ -155,7 +184,30 @@ Returns the OK :ref:`Button<class_Button>` instance.
 
 
 .. _class_AcceptDialog_method_register_text_enter:
 .. _class_AcceptDialog_method_register_text_enter:
 
 
-- void **register_text_enter** **(** :ref:`Node<class_Node>` line_edit **)**
+- void **register_text_enter** **(** :ref:`Control<class_Control>` line_edit **)**
 
 
 Registers a :ref:`LineEdit<class_LineEdit>` in the dialog. When the enter key is pressed, the dialog will be accepted.
 Registers a :ref:`LineEdit<class_LineEdit>` in the dialog. When the enter key is pressed, the dialog will be accepted.
 
 
+----
+
+.. _class_AcceptDialog_method_remove_button:
+
+- void **remove_button** **(** :ref:`Control<class_Control>` button **)**
+
+Removes the ``button`` from the dialog. Does NOT free the ``button``. The ``button`` must be a :ref:`Button<class_Button>` added with :ref:`add_button<class_AcceptDialog_method_add_button>` or :ref:`add_cancel_button<class_AcceptDialog_method_add_cancel_button>` method. After removal, pressing the ``button`` will no longer emit this dialog's :ref:`custom_action<class_AcceptDialog_signal_custom_action>` or :ref:`cancelled<class_AcceptDialog_signal_cancelled>` signals.
+
+Theme Property Descriptions
+---------------------------
+
+.. _class_AcceptDialog_theme_style_panel:
+
+- :ref:`StyleBox<class_StyleBox>` **panel**
+
+Panel that fills up the background of the window.
+
+.. |virtual| replace:: :abbr:`virtual (This method should typically be overridden by the user to have any effect.)`
+.. |const| replace:: :abbr:`const (This method has no side effects. It doesn't modify any of the instance's member variables.)`
+.. |vararg| replace:: :abbr:`vararg (This method accepts any number of arguments after the ones described here.)`
+.. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)`
+.. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)`
+.. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)`

+ 178 - 0
classes/class_aescontext.rst

@@ -0,0 +1,178 @@
+:github_url: hide
+
+.. Generated automatically by doc/tools/makerst.py in Godot's source tree.
+.. DO NOT EDIT THIS FILE, but the AESContext.xml source instead.
+.. The source is found in doc/classes or modules/<name>/doc_classes.
+
+.. _class_AESContext:
+
+AESContext
+==========
+
+**Inherits:** :ref:`RefCounted<class_RefCounted>` **<** :ref:`Object<class_Object>`
+
+Interface to low level AES encryption features.
+
+Description
+-----------
+
+This class provides access to AES encryption/decryption of raw data. Both AES-ECB and AES-CBC mode are supported.
+
+
+.. tabs::
+
+ .. code-tab:: gdscript
+
+    extends Node
+    
+    var aes = AESContext.new()
+    
+    func _ready():
+        var key = "My secret key!!!" # Key must be either 16 or 32 bytes.
+        var data = "My secret text!!" # Data size must be multiple of 16 bytes, apply padding if needed.
+        # Encrypt ECB
+        aes.start(AESContext.MODE_ECB_ENCRYPT, key.to_utf8())
+        var encrypted = aes.update(data.to_utf8())
+        aes.finish()
+        # Decrypt ECB
+        aes.start(AESContext.MODE_ECB_DECRYPT, key.to_utf8())
+        var decrypted = aes.update(encrypted)
+        aes.finish()
+        # Check ECB
+        assert(decrypted == data.to_utf8())
+    
+        var iv = "My secret iv!!!!" # IV must be of exactly 16 bytes.
+        # Encrypt CBC
+        aes.start(AESContext.MODE_CBC_ENCRYPT, key.to_utf8(), iv.to_utf8())
+        encrypted = aes.update(data.to_utf8())
+        aes.finish()
+        # Decrypt CBC
+        aes.start(AESContext.MODE_CBC_DECRYPT, key.to_utf8(), iv.to_utf8())
+        decrypted = aes.update(encrypted)
+        aes.finish()
+        # Check CBC
+        assert(decrypted == data.to_utf8())
+
+ .. code-tab:: csharp
+
+    using Godot;
+    using System;
+    using System.Diagnostics;
+    
+    public class Example : Node
+    {
+        public AESContext Aes = new AESContext();
+        public override void _Ready()
+        {
+            string key = "My secret key!!!"; // Key must be either 16 or 32 bytes.
+            string data = "My secret text!!"; // Data size must be multiple of 16 bytes, apply padding if needed.
+            // Encrypt ECB
+            Aes.Start(AESContext.Mode.EcbEncrypt, key.ToUTF8());
+            byte[] encrypted = Aes.Update(data.ToUTF8());
+            Aes.Finish();
+            // Decrypt ECB
+            Aes.Start(AESContext.Mode.EcbDecrypt, key.ToUTF8());
+            byte[] decrypted = Aes.Update(encrypted);
+            Aes.Finish();
+            // Check ECB
+            Debug.Assert(decrypted == data.ToUTF8());
+    
+            string iv = "My secret iv!!!!"; // IV must be of exactly 16 bytes.
+            // Encrypt CBC
+            Aes.Start(AESContext.Mode.EcbEncrypt, key.ToUTF8(), iv.ToUTF8());
+            encrypted = Aes.Update(data.ToUTF8());
+            Aes.Finish();
+            // Decrypt CBC
+            Aes.Start(AESContext.Mode.EcbDecrypt, key.ToUTF8(), iv.ToUTF8());
+            decrypted = Aes.Update(encrypted);
+            Aes.Finish();
+            // Check CBC
+            Debug.Assert(decrypted == data.ToUTF8());
+        }
+    }
+
+
+
+Methods
+-------
+
++-----------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| void                                          | :ref:`finish<class_AESContext_method_finish>` **(** **)**                                                                                                                                                             |
++-----------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`PackedByteArray<class_PackedByteArray>` | :ref:`get_iv_state<class_AESContext_method_get_iv_state>` **(** **)**                                                                                                                                                 |
++-----------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`Error<enum_@GlobalScope_Error>`         | :ref:`start<class_AESContext_method_start>` **(** :ref:`Mode<enum_AESContext_Mode>` mode, :ref:`PackedByteArray<class_PackedByteArray>` key, :ref:`PackedByteArray<class_PackedByteArray>` iv=PackedByteArray() **)** |
++-----------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`PackedByteArray<class_PackedByteArray>` | :ref:`update<class_AESContext_method_update>` **(** :ref:`PackedByteArray<class_PackedByteArray>` src **)**                                                                                                           |
++-----------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+
+Enumerations
+------------
+
+.. _enum_AESContext_Mode:
+
+.. _class_AESContext_constant_MODE_ECB_ENCRYPT:
+
+.. _class_AESContext_constant_MODE_ECB_DECRYPT:
+
+.. _class_AESContext_constant_MODE_CBC_ENCRYPT:
+
+.. _class_AESContext_constant_MODE_CBC_DECRYPT:
+
+.. _class_AESContext_constant_MODE_MAX:
+
+enum **Mode**:
+
+- **MODE_ECB_ENCRYPT** = **0** --- AES electronic codebook encryption mode.
+
+- **MODE_ECB_DECRYPT** = **1** --- AES electronic codebook decryption mode.
+
+- **MODE_CBC_ENCRYPT** = **2** --- AES cipher blocker chaining encryption mode.
+
+- **MODE_CBC_DECRYPT** = **3** --- AES cipher blocker chaining decryption mode.
+
+- **MODE_MAX** = **4** --- Maximum value for the mode enum.
+
+Method Descriptions
+-------------------
+
+.. _class_AESContext_method_finish:
+
+- void **finish** **(** **)**
+
+Close this AES context so it can be started again. See :ref:`start<class_AESContext_method_start>`.
+
+----
+
+.. _class_AESContext_method_get_iv_state:
+
+- :ref:`PackedByteArray<class_PackedByteArray>` **get_iv_state** **(** **)**
+
+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>`.
+
+----
+
+.. _class_AESContext_method_start:
+
+- :ref:`Error<enum_@GlobalScope_Error>` **start** **(** :ref:`Mode<enum_AESContext_Mode>` mode, :ref:`PackedByteArray<class_PackedByteArray>` key, :ref:`PackedByteArray<class_PackedByteArray>` iv=PackedByteArray() **)**
+
+Start the AES context in the given ``mode``. A ``key`` of either 16 or 32 bytes must always be provided, while an ``iv`` (initialization vector) of exactly 16 bytes, is only needed when ``mode`` is either :ref:`MODE_CBC_ENCRYPT<class_AESContext_constant_MODE_CBC_ENCRYPT>` or :ref:`MODE_CBC_DECRYPT<class_AESContext_constant_MODE_CBC_DECRYPT>`.
+
+----
+
+.. _class_AESContext_method_update:
+
+- :ref:`PackedByteArray<class_PackedByteArray>` **update** **(** :ref:`PackedByteArray<class_PackedByteArray>` src **)**
+
+Run the desired operation for this AES context. Will return a :ref:`PackedByteArray<class_PackedByteArray>` 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.
+
+.. |virtual| replace:: :abbr:`virtual (This method should typically be overridden by the user to have any effect.)`
+.. |const| replace:: :abbr:`const (This method has no side effects. It doesn't modify any of the instance's member variables.)`
+.. |vararg| replace:: :abbr:`vararg (This method accepts any number of arguments after the ones described here.)`
+.. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)`
+.. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)`
+.. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)`

+ 54 - 0
classes/class_animatablebody2d.rst

@@ -0,0 +1,54 @@
+:github_url: hide
+
+.. Generated automatically by doc/tools/makerst.py in Godot's source tree.
+.. DO NOT EDIT THIS FILE, but the AnimatableBody2D.xml source instead.
+.. The source is found in doc/classes or modules/<name>/doc_classes.
+
+.. _class_AnimatableBody2D:
+
+AnimatableBody2D
+================
+
+**Inherits:** :ref:`StaticBody2D<class_StaticBody2D>` **<** :ref:`PhysicsBody2D<class_PhysicsBody2D>` **<** :ref:`CollisionObject2D<class_CollisionObject2D>` **<** :ref:`Node2D<class_Node2D>` **<** :ref:`CanvasItem<class_CanvasItem>` **<** :ref:`Node<class_Node>` **<** :ref:`Object<class_Object>`
+
+Physics body for 2D physics which moves only by script or animation. Useful for moving platforms and doors.
+
+Description
+-----------
+
+Animatable body for 2D physics.
+
+An animatable body can't be moved by external forces or contacts, but can be moved by script or animation to affect other bodies in its path. It is ideal for implementing moving objects in the environment, such as moving platforms or doors.
+
+When the body is moved manually, either from code or from an :ref:`AnimationPlayer<class_AnimationPlayer>` (with :ref:`AnimationPlayer.playback_process_mode<class_AnimationPlayer_property_playback_process_mode>` set to ``physics``), the physics will automatically compute an estimate of their linear and angular velocity. This makes them very useful for moving platforms or other AnimationPlayer-controlled objects (like a door, a bridge that opens, etc).
+
+Properties
+----------
+
++-------------------------+-------------------------------------------------------------------------+----------+
+| :ref:`bool<class_bool>` | :ref:`sync_to_physics<class_AnimatableBody2D_property_sync_to_physics>` | ``true`` |
++-------------------------+-------------------------------------------------------------------------+----------+
+
+Property Descriptions
+---------------------
+
+.. _class_AnimatableBody2D_property_sync_to_physics:
+
+- :ref:`bool<class_bool>` **sync_to_physics**
+
++-----------+------------------------------+
+| *Default* | ``true``                     |
++-----------+------------------------------+
+| *Setter*  | set_sync_to_physics(value)   |
++-----------+------------------------------+
+| *Getter*  | is_sync_to_physics_enabled() |
++-----------+------------------------------+
+
+If ``true``, the body's movement will be synchronized to the physics frame. This is useful when animating movement via :ref:`AnimationPlayer<class_AnimationPlayer>`, for example on moving platforms. Do **not** use together with :ref:`PhysicsBody2D.move_and_collide<class_PhysicsBody2D_method_move_and_collide>`.
+
+.. |virtual| replace:: :abbr:`virtual (This method should typically be overridden by the user to have any effect.)`
+.. |const| replace:: :abbr:`const (This method has no side effects. It doesn't modify any of the instance's member variables.)`
+.. |vararg| replace:: :abbr:`vararg (This method accepts any number of arguments after the ones described here.)`
+.. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)`
+.. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)`
+.. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)`

+ 63 - 0
classes/class_animatablebody3d.rst

@@ -0,0 +1,63 @@
+:github_url: hide
+
+.. Generated automatically by doc/tools/makerst.py in Godot's source tree.
+.. DO NOT EDIT THIS FILE, but the AnimatableBody3D.xml source instead.
+.. The source is found in doc/classes or modules/<name>/doc_classes.
+
+.. _class_AnimatableBody3D:
+
+AnimatableBody3D
+================
+
+**Inherits:** :ref:`StaticBody3D<class_StaticBody3D>` **<** :ref:`PhysicsBody3D<class_PhysicsBody3D>` **<** :ref:`CollisionObject3D<class_CollisionObject3D>` **<** :ref:`Node3D<class_Node3D>` **<** :ref:`Node<class_Node>` **<** :ref:`Object<class_Object>`
+
+Physics body for 3D physics which moves only by script or animation. Useful for moving platforms and doors.
+
+Description
+-----------
+
+Animatable body for 3D physics.
+
+An animatable body can't be moved by external forces or contacts, but can be moved by script or animation to affect other bodies in its path. It is ideal for implementing moving objects in the environment, such as moving platforms or doors.
+
+When the body is moved manually, either from code or from an :ref:`AnimationPlayer<class_AnimationPlayer>` (with :ref:`AnimationPlayer.playback_process_mode<class_AnimationPlayer_property_playback_process_mode>` set to ``physics``), the physics will automatically compute an estimate of their linear and angular velocity. This makes them very useful for moving platforms or other AnimationPlayer-controlled objects (like a door, a bridge that opens, etc).
+
+Tutorials
+---------
+
+- `3D Physics Tests Demo <https://godotengine.org/asset-library/asset/675>`__
+
+- `Third Person Shooter Demo <https://godotengine.org/asset-library/asset/678>`__
+
+- `3D Voxel Demo <https://godotengine.org/asset-library/asset/676>`__
+
+Properties
+----------
+
++-------------------------+-------------------------------------------------------------------------+----------+
+| :ref:`bool<class_bool>` | :ref:`sync_to_physics<class_AnimatableBody3D_property_sync_to_physics>` | ``true`` |
++-------------------------+-------------------------------------------------------------------------+----------+
+
+Property Descriptions
+---------------------
+
+.. _class_AnimatableBody3D_property_sync_to_physics:
+
+- :ref:`bool<class_bool>` **sync_to_physics**
+
++-----------+------------------------------+
+| *Default* | ``true``                     |
++-----------+------------------------------+
+| *Setter*  | set_sync_to_physics(value)   |
++-----------+------------------------------+
+| *Getter*  | is_sync_to_physics_enabled() |
++-----------+------------------------------+
+
+If ``true``, the body's movement will be synchronized to the physics frame. This is useful when animating movement via :ref:`AnimationPlayer<class_AnimationPlayer>`, for example on moving platforms. Do **not** use together with :ref:`PhysicsBody3D.move_and_collide<class_PhysicsBody3D_method_move_and_collide>`.
+
+.. |virtual| replace:: :abbr:`virtual (This method should typically be overridden by the user to have any effect.)`
+.. |const| replace:: :abbr:`const (This method has no side effects. It doesn't modify any of the instance's member variables.)`
+.. |vararg| replace:: :abbr:`vararg (This method accepts any number of arguments after the ones described here.)`
+.. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)`
+.. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)`
+.. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)`

+ 71 - 92
classes/class_animatedsprite.rst → classes/class_animatedsprite2d.rst

@@ -1,13 +1,13 @@
 :github_url: hide
 :github_url: hide
 
 
 .. Generated automatically by doc/tools/makerst.py in Godot's source tree.
 .. Generated automatically by doc/tools/makerst.py in Godot's source tree.
-.. DO NOT EDIT THIS FILE, but the AnimatedSprite.xml source instead.
+.. DO NOT EDIT THIS FILE, but the AnimatedSprite2D.xml source instead.
 .. The source is found in doc/classes or modules/<name>/doc_classes.
 .. The source is found in doc/classes or modules/<name>/doc_classes.
 
 
-.. _class_AnimatedSprite:
+.. _class_AnimatedSprite2D:
 
 
-AnimatedSprite
-==============
+AnimatedSprite2D
+================
 
 
 **Inherits:** :ref:`Node2D<class_Node2D>` **<** :ref:`CanvasItem<class_CanvasItem>` **<** :ref:`Node<class_Node>` **<** :ref:`Object<class_Object>`
 **Inherits:** :ref:`Node2D<class_Node2D>` **<** :ref:`CanvasItem<class_CanvasItem>` **<** :ref:`Node<class_Node>` **<** :ref:`Object<class_Object>`
 
 
@@ -18,48 +18,53 @@ Description
 
 
 Animations are created using a :ref:`SpriteFrames<class_SpriteFrames>` resource, which can be configured in the editor via the SpriteFrames panel.
 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 or specular maps by creating additional :ref:`SpriteFrames<class_SpriteFrames>` resources with a ``_normal`` or ``_specular`` suffix. For example, having 3 :ref:`SpriteFrames<class_SpriteFrames>` resources ``run``, ``run_normal``, and ``run_specular`` will make it so the ``run`` animation uses normal and specular maps.
+
+Tutorials
+---------
+
+- :doc:`../tutorials/2d/2d_sprite_animation`
+
+- `2D Dodge The Creeps Demo <https://godotengine.org/asset-library/asset/515>`__
+
 Properties
 Properties
 ----------
 ----------
 
 
-+-----------------------------------------+---------------------------------------------------------------------+-------------------------+
-| :ref:`StringName<class_StringName>`     | :ref:`animation<class_AnimatedSprite_property_animation>`           | ``@"default"``          |
-+-----------------------------------------+---------------------------------------------------------------------+-------------------------+
-| :ref:`bool<class_bool>`                 | :ref:`centered<class_AnimatedSprite_property_centered>`             | ``true``                |
-+-----------------------------------------+---------------------------------------------------------------------+-------------------------+
-| :ref:`bool<class_bool>`                 | :ref:`flip_h<class_AnimatedSprite_property_flip_h>`                 | ``false``               |
-+-----------------------------------------+---------------------------------------------------------------------+-------------------------+
-| :ref:`bool<class_bool>`                 | :ref:`flip_v<class_AnimatedSprite_property_flip_v>`                 | ``false``               |
-+-----------------------------------------+---------------------------------------------------------------------+-------------------------+
-| :ref:`int<class_int>`                   | :ref:`frame<class_AnimatedSprite_property_frame>`                   | ``0``                   |
-+-----------------------------------------+---------------------------------------------------------------------+-------------------------+
-| :ref:`SpriteFrames<class_SpriteFrames>` | :ref:`frames<class_AnimatedSprite_property_frames>`                 |                         |
-+-----------------------------------------+---------------------------------------------------------------------+-------------------------+
-| :ref:`Vector2<class_Vector2>`           | :ref:`offset<class_AnimatedSprite_property_offset>`                 | ``Vector2( 0, 0 )``     |
-+-----------------------------------------+---------------------------------------------------------------------+-------------------------+
-| :ref:`bool<class_bool>`                 | :ref:`playing<class_AnimatedSprite_property_playing>`               | ``false``               |
-+-----------------------------------------+---------------------------------------------------------------------+-------------------------+
-| :ref:`float<class_float>`               | :ref:`shininess<class_AnimatedSprite_property_shininess>`           | ``1.0``                 |
-+-----------------------------------------+---------------------------------------------------------------------+-------------------------+
-| :ref:`Color<class_Color>`               | :ref:`specular_color<class_AnimatedSprite_property_specular_color>` | ``Color( 1, 1, 1, 1 )`` |
-+-----------------------------------------+---------------------------------------------------------------------+-------------------------+
-| :ref:`float<class_float>`               | :ref:`speed_scale<class_AnimatedSprite_property_speed_scale>`       | ``1.0``                 |
-+-----------------------------------------+---------------------------------------------------------------------+-------------------------+
++-----------------------------------------+-----------------------------------------------------------------+-------------------+
+| :ref:`StringName<class_StringName>`     | :ref:`animation<class_AnimatedSprite2D_property_animation>`     | ``&"default"``    |
++-----------------------------------------+-----------------------------------------------------------------+-------------------+
+| :ref:`bool<class_bool>`                 | :ref:`centered<class_AnimatedSprite2D_property_centered>`       | ``true``          |
++-----------------------------------------+-----------------------------------------------------------------+-------------------+
+| :ref:`bool<class_bool>`                 | :ref:`flip_h<class_AnimatedSprite2D_property_flip_h>`           | ``false``         |
++-----------------------------------------+-----------------------------------------------------------------+-------------------+
+| :ref:`bool<class_bool>`                 | :ref:`flip_v<class_AnimatedSprite2D_property_flip_v>`           | ``false``         |
++-----------------------------------------+-----------------------------------------------------------------+-------------------+
+| :ref:`int<class_int>`                   | :ref:`frame<class_AnimatedSprite2D_property_frame>`             | ``0``             |
++-----------------------------------------+-----------------------------------------------------------------+-------------------+
+| :ref:`SpriteFrames<class_SpriteFrames>` | :ref:`frames<class_AnimatedSprite2D_property_frames>`           |                   |
++-----------------------------------------+-----------------------------------------------------------------+-------------------+
+| :ref:`Vector2<class_Vector2>`           | :ref:`offset<class_AnimatedSprite2D_property_offset>`           | ``Vector2(0, 0)`` |
++-----------------------------------------+-----------------------------------------------------------------+-------------------+
+| :ref:`bool<class_bool>`                 | :ref:`playing<class_AnimatedSprite2D_property_playing>`         | ``false``         |
++-----------------------------------------+-----------------------------------------------------------------+-------------------+
+| :ref:`float<class_float>`               | :ref:`speed_scale<class_AnimatedSprite2D_property_speed_scale>` | ``1.0``           |
++-----------------------------------------+-----------------------------------------------------------------+-------------------+
 
 
 Methods
 Methods
 -------
 -------
 
 
-+-------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`bool<class_bool>` | :ref:`is_playing<class_AnimatedSprite_method_is_playing>` **(** **)** const                                                                     |
-+-------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------+
-| void                    | :ref:`play<class_AnimatedSprite_method_play>` **(** :ref:`StringName<class_StringName>` anim=@"", :ref:`bool<class_bool>` backwards=false **)** |
-+-------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------+
-| void                    | :ref:`stop<class_AnimatedSprite_method_stop>` **(** **)**                                                                                       |
-+-------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------+
++-------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`bool<class_bool>` | :ref:`is_playing<class_AnimatedSprite2D_method_is_playing>` **(** **)** |const|                                                                   |
++-------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------+
+| void                    | :ref:`play<class_AnimatedSprite2D_method_play>` **(** :ref:`StringName<class_StringName>` anim=&"", :ref:`bool<class_bool>` backwards=false **)** |
++-------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------+
+| void                    | :ref:`stop<class_AnimatedSprite2D_method_stop>` **(** **)**                                                                                       |
++-------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------+
 
 
 Signals
 Signals
 -------
 -------
 
 
-.. _class_AnimatedSprite_signal_animation_finished:
+.. _class_AnimatedSprite2D_signal_animation_finished:
 
 
 - **animation_finished** **(** **)**
 - **animation_finished** **(** **)**
 
 
@@ -67,21 +72,21 @@ Emitted when the animation is finished (when it plays the last frame). If the an
 
 
 ----
 ----
 
 
-.. _class_AnimatedSprite_signal_frame_changed:
+.. _class_AnimatedSprite2D_signal_frame_changed:
 
 
 - **frame_changed** **(** **)**
 - **frame_changed** **(** **)**
 
 
-Emitted when :ref:`frame<class_AnimatedSprite_property_frame>` changed.
+Emitted when :ref:`frame<class_AnimatedSprite2D_property_frame>` changed.
 
 
 Property Descriptions
 Property Descriptions
 ---------------------
 ---------------------
 
 
-.. _class_AnimatedSprite_property_animation:
+.. _class_AnimatedSprite2D_property_animation:
 
 
 - :ref:`StringName<class_StringName>` **animation**
 - :ref:`StringName<class_StringName>` **animation**
 
 
 +-----------+----------------------+
 +-----------+----------------------+
-| *Default* | ``@"default"``       |
+| *Default* | ``&"default"``       |
 +-----------+----------------------+
 +-----------+----------------------+
 | *Setter*  | set_animation(value) |
 | *Setter*  | set_animation(value) |
 +-----------+----------------------+
 +-----------+----------------------+
@@ -92,7 +97,7 @@ The current animation from the ``frames`` resource. If this value changes, the `
 
 
 ----
 ----
 
 
-.. _class_AnimatedSprite_property_centered:
+.. _class_AnimatedSprite2D_property_centered:
 
 
 - :ref:`bool<class_bool>` **centered**
 - :ref:`bool<class_bool>` **centered**
 
 
@@ -108,7 +113,7 @@ If ``true``, texture will be centered.
 
 
 ----
 ----
 
 
-.. _class_AnimatedSprite_property_flip_h:
+.. _class_AnimatedSprite2D_property_flip_h:
 
 
 - :ref:`bool<class_bool>` **flip_h**
 - :ref:`bool<class_bool>` **flip_h**
 
 
@@ -124,7 +129,7 @@ If ``true``, texture is flipped horizontally.
 
 
 ----
 ----
 
 
-.. _class_AnimatedSprite_property_flip_v:
+.. _class_AnimatedSprite2D_property_flip_v:
 
 
 - :ref:`bool<class_bool>` **flip_v**
 - :ref:`bool<class_bool>` **flip_v**
 
 
@@ -140,7 +145,7 @@ If ``true``, texture is flipped vertically.
 
 
 ----
 ----
 
 
-.. _class_AnimatedSprite_property_frame:
+.. _class_AnimatedSprite2D_property_frame:
 
 
 - :ref:`int<class_int>` **frame**
 - :ref:`int<class_int>` **frame**
 
 
@@ -156,7 +161,7 @@ The displayed animation frame's index.
 
 
 ----
 ----
 
 
-.. _class_AnimatedSprite_property_frames:
+.. _class_AnimatedSprite2D_property_frames:
 
 
 - :ref:`SpriteFrames<class_SpriteFrames>` **frames**
 - :ref:`SpriteFrames<class_SpriteFrames>` **frames**
 
 
@@ -170,23 +175,23 @@ The :ref:`SpriteFrames<class_SpriteFrames>` resource containing the animation(s)
 
 
 ----
 ----
 
 
-.. _class_AnimatedSprite_property_offset:
+.. _class_AnimatedSprite2D_property_offset:
 
 
 - :ref:`Vector2<class_Vector2>` **offset**
 - :ref:`Vector2<class_Vector2>` **offset**
 
 
-+-----------+---------------------+
-| *Default* | ``Vector2( 0, 0 )`` |
-+-----------+---------------------+
-| *Setter*  | set_offset(value)   |
-+-----------+---------------------+
-| *Getter*  | get_offset()        |
-+-----------+---------------------+
++-----------+-------------------+
+| *Default* | ``Vector2(0, 0)`` |
++-----------+-------------------+
+| *Setter*  | set_offset(value) |
++-----------+-------------------+
+| *Getter*  | get_offset()      |
++-----------+-------------------+
 
 
 The texture's drawing offset.
 The texture's drawing offset.
 
 
 ----
 ----
 
 
-.. _class_AnimatedSprite_property_playing:
+.. _class_AnimatedSprite2D_property_playing:
 
 
 - :ref:`bool<class_bool>` **playing**
 - :ref:`bool<class_bool>` **playing**
 
 
@@ -194,43 +199,11 @@ The texture's drawing offset.
 | *Default* | ``false`` |
 | *Default* | ``false`` |
 +-----------+-----------+
 +-----------+-----------+
 
 
-If ``true``, the :ref:`animation<class_AnimatedSprite_property_animation>` is currently playing.
-
-----
-
-.. _class_AnimatedSprite_property_shininess:
-
-- :ref:`float<class_float>` **shininess**
-
-+-----------+----------------------+
-| *Default* | ``1.0``              |
-+-----------+----------------------+
-| *Setter*  | set_shininess(value) |
-+-----------+----------------------+
-| *Getter*  | get_shininess()      |
-+-----------+----------------------+
-
-Strength of the specular light effect of this ``AnimatedSprite``.
-
-----
-
-.. _class_AnimatedSprite_property_specular_color:
-
-- :ref:`Color<class_Color>` **specular_color**
-
-+-----------+---------------------------+
-| *Default* | ``Color( 1, 1, 1, 1 )``   |
-+-----------+---------------------------+
-| *Setter*  | set_specular_color(value) |
-+-----------+---------------------------+
-| *Getter*  | get_specular_color()      |
-+-----------+---------------------------+
-
-The color of the specular light effect.
+If ``true``, the :ref:`animation<class_AnimatedSprite2D_property_animation>` is currently playing.
 
 
 ----
 ----
 
 
-.. _class_AnimatedSprite_property_speed_scale:
+.. _class_AnimatedSprite2D_property_speed_scale:
 
 
 - :ref:`float<class_float>` **speed_scale**
 - :ref:`float<class_float>` **speed_scale**
 
 
@@ -247,25 +220,31 @@ The animation speed is multiplied by this value.
 Method Descriptions
 Method Descriptions
 -------------------
 -------------------
 
 
-.. _class_AnimatedSprite_method_is_playing:
+.. _class_AnimatedSprite2D_method_is_playing:
 
 
-- :ref:`bool<class_bool>` **is_playing** **(** **)** const
+- :ref:`bool<class_bool>` **is_playing** **(** **)** |const|
 
 
 Returns ``true`` if an animation is currently being played.
 Returns ``true`` if an animation is currently being played.
 
 
 ----
 ----
 
 
-.. _class_AnimatedSprite_method_play:
+.. _class_AnimatedSprite2D_method_play:
 
 
-- void **play** **(** :ref:`StringName<class_StringName>` anim=@"", :ref:`bool<class_bool>` backwards=false **)**
+- void **play** **(** :ref:`StringName<class_StringName>` anim=&"", :ref:`bool<class_bool>` backwards=false **)**
 
 
 Plays the animation named ``anim``. If no ``anim`` is provided, the current animation is played. If ``backwards`` is ``true``, the animation will be played in reverse.
 Plays the animation named ``anim``. If no ``anim`` is provided, the current animation is played. If ``backwards`` is ``true``, the animation will be played in reverse.
 
 
 ----
 ----
 
 
-.. _class_AnimatedSprite_method_stop:
+.. _class_AnimatedSprite2D_method_stop:
 
 
 - void **stop** **(** **)**
 - void **stop** **(** **)**
 
 
 Stops the current animation (does not reset the frame counter).
 Stops the current animation (does not reset the frame counter).
 
 
+.. |virtual| replace:: :abbr:`virtual (This method should typically be overridden by the user to have any effect.)`
+.. |const| replace:: :abbr:`const (This method has no side effects. It doesn't modify any of the instance's member variables.)`
+.. |vararg| replace:: :abbr:`vararg (This method accepts any number of arguments after the ones described here.)`
+.. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)`
+.. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)`
+.. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)`

+ 26 - 7
classes/class_animatedsprite3d.rst

@@ -9,7 +9,7 @@
 AnimatedSprite3D
 AnimatedSprite3D
 ================
 ================
 
 
-**Inherits:** :ref:`SpriteBase3D<class_SpriteBase3D>` **<** :ref:`GeometryInstance<class_GeometryInstance>` **<** :ref:`VisualInstance<class_VisualInstance>` **<** :ref:`Spatial<class_Spatial>` **<** :ref:`Node<class_Node>` **<** :ref:`Object<class_Object>`
+**Inherits:** :ref:`SpriteBase3D<class_SpriteBase3D>` **<** :ref:`GeometryInstance3D<class_GeometryInstance3D>` **<** :ref:`VisualInstance3D<class_VisualInstance3D>` **<** :ref:`Node3D<class_Node3D>` **<** :ref:`Node<class_Node>` **<** :ref:`Object<class_Object>`
 
 
 2D sprite node in 3D world, that can use multiple 2D textures for animation.
 2D sprite node in 3D world, that can use multiple 2D textures for animation.
 
 
@@ -18,11 +18,16 @@ Description
 
 
 Animations are created using a :ref:`SpriteFrames<class_SpriteFrames>` resource, which can be configured in the editor via the SpriteFrames panel.
 Animations are created using a :ref:`SpriteFrames<class_SpriteFrames>` resource, which can be configured in the editor via the SpriteFrames panel.
 
 
+Tutorials
+---------
+
+- :doc:`../tutorials/2d/2d_sprite_animation`
+
 Properties
 Properties
 ----------
 ----------
 
 
 +-----------------------------------------+-------------------------------------------------------------+----------------+
 +-----------------------------------------+-------------------------------------------------------------+----------------+
-| :ref:`StringName<class_StringName>`     | :ref:`animation<class_AnimatedSprite3D_property_animation>` | ``@"default"`` |
+| :ref:`StringName<class_StringName>`     | :ref:`animation<class_AnimatedSprite3D_property_animation>` | ``&"default"`` |
 +-----------------------------------------+-------------------------------------------------------------+----------------+
 +-----------------------------------------+-------------------------------------------------------------+----------------+
 | :ref:`int<class_int>`                   | :ref:`frame<class_AnimatedSprite3D_property_frame>`         | ``0``          |
 | :ref:`int<class_int>`                   | :ref:`frame<class_AnimatedSprite3D_property_frame>`         | ``0``          |
 +-----------------------------------------+-------------------------------------------------------------+----------------+
 +-----------------------------------------+-------------------------------------------------------------+----------------+
@@ -35,9 +40,9 @@ Methods
 -------
 -------
 
 
 +-------------------------+----------------------------------------------------------------------------------------------------------+
 +-------------------------+----------------------------------------------------------------------------------------------------------+
-| :ref:`bool<class_bool>` | :ref:`is_playing<class_AnimatedSprite3D_method_is_playing>` **(** **)** const                            |
+| :ref:`bool<class_bool>` | :ref:`is_playing<class_AnimatedSprite3D_method_is_playing>` **(** **)** |const|                          |
 +-------------------------+----------------------------------------------------------------------------------------------------------+
 +-------------------------+----------------------------------------------------------------------------------------------------------+
-| void                    | :ref:`play<class_AnimatedSprite3D_method_play>` **(** :ref:`StringName<class_StringName>` anim=@"" **)** |
+| void                    | :ref:`play<class_AnimatedSprite3D_method_play>` **(** :ref:`StringName<class_StringName>` anim=&"" **)** |
 +-------------------------+----------------------------------------------------------------------------------------------------------+
 +-------------------------+----------------------------------------------------------------------------------------------------------+
 | void                    | :ref:`stop<class_AnimatedSprite3D_method_stop>` **(** **)**                                              |
 | void                    | :ref:`stop<class_AnimatedSprite3D_method_stop>` **(** **)**                                              |
 +-------------------------+----------------------------------------------------------------------------------------------------------+
 +-------------------------+----------------------------------------------------------------------------------------------------------+
@@ -45,6 +50,14 @@ Methods
 Signals
 Signals
 -------
 -------
 
 
+.. _class_AnimatedSprite3D_signal_animation_finished:
+
+- **animation_finished** **(** **)**
+
+Emitted when the animation is finished (when it plays the last frame). If the animation is looping, this signal is emitted every time the last frame is drawn.
+
+----
+
 .. _class_AnimatedSprite3D_signal_frame_changed:
 .. _class_AnimatedSprite3D_signal_frame_changed:
 
 
 - **frame_changed** **(** **)**
 - **frame_changed** **(** **)**
@@ -59,7 +72,7 @@ Property Descriptions
 - :ref:`StringName<class_StringName>` **animation**
 - :ref:`StringName<class_StringName>` **animation**
 
 
 +-----------+----------------------+
 +-----------+----------------------+
-| *Default* | ``@"default"``       |
+| *Default* | ``&"default"``       |
 +-----------+----------------------+
 +-----------+----------------------+
 | *Setter*  | set_animation(value) |
 | *Setter*  | set_animation(value) |
 +-----------+----------------------+
 +-----------+----------------------+
@@ -115,7 +128,7 @@ Method Descriptions
 
 
 .. _class_AnimatedSprite3D_method_is_playing:
 .. _class_AnimatedSprite3D_method_is_playing:
 
 
-- :ref:`bool<class_bool>` **is_playing** **(** **)** const
+- :ref:`bool<class_bool>` **is_playing** **(** **)** |const|
 
 
 Returns ``true`` if an animation is currently being played.
 Returns ``true`` if an animation is currently being played.
 
 
@@ -123,7 +136,7 @@ Returns ``true`` if an animation is currently being played.
 
 
 .. _class_AnimatedSprite3D_method_play:
 .. _class_AnimatedSprite3D_method_play:
 
 
-- void **play** **(** :ref:`StringName<class_StringName>` anim=@"" **)**
+- void **play** **(** :ref:`StringName<class_StringName>` anim=&"" **)**
 
 
 Plays the animation named ``anim``. If no ``anim`` is provided, the current animation is played.
 Plays the animation named ``anim``. If no ``anim`` is provided, the current animation is played.
 
 
@@ -135,3 +148,9 @@ Plays the animation named ``anim``. If no ``anim`` is provided, the current anim
 
 
 Stops the current animation (does not reset the frame counter).
 Stops the current animation (does not reset the frame counter).
 
 
+.. |virtual| replace:: :abbr:`virtual (This method should typically be overridden by the user to have any effect.)`
+.. |const| replace:: :abbr:`const (This method has no side effects. It doesn't modify any of the instance's member variables.)`
+.. |vararg| replace:: :abbr:`vararg (This method accepts any number of arguments after the ones described here.)`
+.. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)`
+.. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)`
+.. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)`

+ 73 - 13
classes/class_animatedtexture.rst

@@ -9,35 +9,43 @@
 AnimatedTexture
 AnimatedTexture
 ===============
 ===============
 
 
-**Inherits:** :ref:`Texture2D<class_Texture2D>` **<** :ref:`Texture<class_Texture>` **<** :ref:`Resource<class_Resource>` **<** :ref:`Reference<class_Reference>` **<** :ref:`Object<class_Object>`
+**Inherits:** :ref:`Texture2D<class_Texture2D>` **<** :ref:`Texture<class_Texture>` **<** :ref:`Resource<class_Resource>` **<** :ref:`RefCounted<class_RefCounted>` **<** :ref:`Object<class_Object>`
 
 
 Proxy texture for simple frame-based animations.
 Proxy texture for simple frame-based animations.
 
 
 Description
 Description
 -----------
 -----------
 
 
-``AnimatedTexture`` is a resource format for frame-based animations, where multiple textures can be chained automatically with a predefined delay for each frame. Unlike :ref:`AnimationPlayer<class_AnimationPlayer>` or :ref:`AnimatedSprite<class_AnimatedSprite>`, it isn't a :ref:`Node<class_Node>`, but has the advantage of being usable anywhere a :ref:`Texture2D<class_Texture2D>` resource can be used, e.g. in a :ref:`TileSet<class_TileSet>`.
+``AnimatedTexture`` is a resource format for frame-based animations, where multiple textures can be chained automatically with a predefined delay for each frame. Unlike :ref:`AnimationPlayer<class_AnimationPlayer>` or :ref:`AnimatedSprite2D<class_AnimatedSprite2D>`, it isn't a :ref:`Node<class_Node>`, but has the advantage of being usable anywhere a :ref:`Texture2D<class_Texture2D>` resource can be used, e.g. in a :ref:`TileSet<class_TileSet>`.
 
 
 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.
 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. Also, it doesn't support :ref:`AtlasTexture<class_AtlasTexture>`. Each frame needs to be separate image.
+``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:`Texture2D<class_Texture2D>`.
 
 
 Properties
 Properties
 ----------
 ----------
 
 
-+---------------------------+------------------------------------------------------+---------+
-| :ref:`float<class_float>` | :ref:`fps<class_AnimatedTexture_property_fps>`       | ``4.0`` |
-+---------------------------+------------------------------------------------------+---------+
-| :ref:`int<class_int>`     | :ref:`frames<class_AnimatedTexture_property_frames>` | ``1``   |
-+---------------------------+------------------------------------------------------+---------+
++---------------------------+--------------------------------------------------------------------+-----------+
+| :ref:`int<class_int>`     | :ref:`current_frame<class_AnimatedTexture_property_current_frame>` |           |
++---------------------------+--------------------------------------------------------------------+-----------+
+| :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
 Methods
 -------
 -------
 
 
 +-----------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------+
 +-----------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`float<class_float>`         | :ref:`get_frame_delay<class_AnimatedTexture_method_get_frame_delay>` **(** :ref:`int<class_int>` frame **)** const                                          |
+| :ref:`float<class_float>`         | :ref:`get_frame_delay<class_AnimatedTexture_method_get_frame_delay>` **(** :ref:`int<class_int>` frame **)** |const|                                        |
 +-----------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------+
 +-----------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`Texture2D<class_Texture2D>` | :ref:`get_frame_texture<class_AnimatedTexture_method_get_frame_texture>` **(** :ref:`int<class_int>` frame **)** const                                      |
+| :ref:`Texture2D<class_Texture2D>` | :ref:`get_frame_texture<class_AnimatedTexture_method_get_frame_texture>` **(** :ref:`int<class_int>` frame **)** |const|                                    |
 +-----------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------+
 +-----------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------+
 | void                              | :ref:`set_frame_delay<class_AnimatedTexture_method_set_frame_delay>` **(** :ref:`int<class_int>` frame, :ref:`float<class_float>` delay **)**               |
 | void                              | :ref:`set_frame_delay<class_AnimatedTexture_method_set_frame_delay>` **(** :ref:`int<class_int>` frame, :ref:`float<class_float>` delay **)**               |
 +-----------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------+
 +-----------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------+
@@ -49,11 +57,25 @@ Constants
 
 
 .. _class_AnimatedTexture_constant_MAX_FRAMES:
 .. _class_AnimatedTexture_constant_MAX_FRAMES:
 
 
-- **MAX_FRAMES** = **256** --- The maximum number of frames supported by ``AnimatedTexture``. If you need more frames in your animation, use :ref:`AnimationPlayer<class_AnimationPlayer>` or :ref:`AnimatedSprite<class_AnimatedSprite>`.
+- **MAX_FRAMES** = **256** --- The maximum number of frames supported by ``AnimatedTexture``. If you need more frames in your animation, use :ref:`AnimationPlayer<class_AnimationPlayer>` or :ref:`AnimatedSprite2D<class_AnimatedSprite2D>`.
 
 
 Property Descriptions
 Property Descriptions
 ---------------------
 ---------------------
 
 
+.. _class_AnimatedTexture_property_current_frame:
+
+- :ref:`int<class_int>` **current_frame**
+
++----------+--------------------------+
+| *Setter* | set_current_frame(value) |
++----------+--------------------------+
+| *Getter* | get_current_frame()      |
++----------+--------------------------+
+
+Sets the currently visible frame of the texture.
+
+----
+
 .. _class_AnimatedTexture_property_fps:
 .. _class_AnimatedTexture_property_fps:
 
 
 - :ref:`float<class_float>` **fps**
 - :ref:`float<class_float>` **fps**
@@ -86,12 +108,44 @@ For example, an animation with 8 frames, no frame delay and a ``fps`` value of 2
 
 
 Number of frames to use in the animation. While you can create the frames independently with :ref:`set_frame_texture<class_AnimatedTexture_method_set_frame_texture>`, you need to set this value for the animation to take new frames into account. The maximum number of frames is :ref:`MAX_FRAMES<class_AnimatedTexture_constant_MAX_FRAMES>`.
 Number of frames to use in the animation. While you can create the frames independently with :ref:`set_frame_texture<class_AnimatedTexture_method_set_frame_texture>`, you need to set this value for the animation to take new frames into account. The maximum number of frames is :ref:`MAX_FRAMES<class_AnimatedTexture_constant_MAX_FRAMES>`.
 
 
+----
+
+.. _class_AnimatedTexture_property_oneshot:
+
+- :ref:`bool<class_bool>` **oneshot**
+
++-----------+--------------------+
+| *Default* | ``false``          |
++-----------+--------------------+
+| *Setter*  | set_oneshot(value) |
++-----------+--------------------+
+| *Getter*  | get_oneshot()      |
++-----------+--------------------+
+
+If ``true``, the animation will only play once and will not loop back to the first frame after reaching the end. Note that reaching the end will not set :ref:`pause<class_AnimatedTexture_property_pause>` to ``true``.
+
+----
+
+.. _class_AnimatedTexture_property_pause:
+
+- :ref:`bool<class_bool>` **pause**
+
++-----------+------------------+
+| *Default* | ``false``        |
++-----------+------------------+
+| *Setter*  | set_pause(value) |
++-----------+------------------+
+| *Getter*  | get_pause()      |
++-----------+------------------+
+
+If ``true``, the animation will pause where it currently is (i.e. at :ref:`current_frame<class_AnimatedTexture_property_current_frame>`). The animation will continue from where it was paused when changing this property to ``false``.
+
 Method Descriptions
 Method Descriptions
 -------------------
 -------------------
 
 
 .. _class_AnimatedTexture_method_get_frame_delay:
 .. _class_AnimatedTexture_method_get_frame_delay:
 
 
-- :ref:`float<class_float>` **get_frame_delay** **(** :ref:`int<class_int>` frame **)** const
+- :ref:`float<class_float>` **get_frame_delay** **(** :ref:`int<class_int>` frame **)** |const|
 
 
 Returns the given frame's delay value.
 Returns the given frame's delay value.
 
 
@@ -99,7 +153,7 @@ Returns the given frame's delay value.
 
 
 .. _class_AnimatedTexture_method_get_frame_texture:
 .. _class_AnimatedTexture_method_get_frame_texture:
 
 
-- :ref:`Texture2D<class_Texture2D>` **get_frame_texture** **(** :ref:`int<class_int>` frame **)** const
+- :ref:`Texture2D<class_Texture2D>` **get_frame_texture** **(** :ref:`int<class_int>` frame **)** |const|
 
 
 Returns the given frame's :ref:`Texture2D<class_Texture2D>`.
 Returns the given frame's :ref:`Texture2D<class_Texture2D>`.
 
 
@@ -130,3 +184,9 @@ Assigns a :ref:`Texture2D<class_Texture2D>` to the given frame. Frame IDs start
 
 
 You can define any number of textures up to :ref:`MAX_FRAMES<class_AnimatedTexture_constant_MAX_FRAMES>`, but keep in mind that only frames from 0 to :ref:`frames<class_AnimatedTexture_property_frames>` - 1 will be part of the animation.
 You can define any number of textures up to :ref:`MAX_FRAMES<class_AnimatedTexture_constant_MAX_FRAMES>`, but keep in mind that only frames from 0 to :ref:`frames<class_AnimatedTexture_property_frames>` - 1 will be part of the animation.
 
 
+.. |virtual| replace:: :abbr:`virtual (This method should typically be overridden by the user to have any effect.)`
+.. |const| replace:: :abbr:`const (This method has no side effects. It doesn't modify any of the instance's member variables.)`
+.. |vararg| replace:: :abbr:`vararg (This method accepts any number of arguments after the ones described here.)`
+.. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)`
+.. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)`
+.. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)`

+ 191 - 160
classes/class_animation.rst

@@ -9,7 +9,7 @@
 Animation
 Animation
 =========
 =========
 
 
-**Inherits:** :ref:`Resource<class_Resource>` **<** :ref:`Reference<class_Reference>` **<** :ref:`Object<class_Object>`
+**Inherits:** :ref:`Resource<class_Resource>` **<** :ref:`RefCounted<class_RefCounted>` **<** :ref:`Object<class_Object>`
 
 
 Contains data used to animate everything in the engine.
 Contains data used to animate everything in the engine.
 
 
@@ -18,16 +18,31 @@ Description
 
 
 An Animation resource contains data used to animate everything in the engine. Animations are divided into tracks, and each track must be linked to a node. The state of that node can be changed through time, by adding timed keys (events) to the track.
 An Animation resource contains data used to animate everything in the engine. Animations are divided into tracks, and each track must be linked to a node. The state of that node can be changed through time, by adding timed keys (events) to the track.
 
 
-::
+
+.. tabs::
+
+ .. code-tab:: gdscript
 
 
     # This creates an animation that makes the node "Enemy" move to the right by
     # This creates an animation that makes the node "Enemy" move to the right by
-    # 100 pixels in 1 second.
+    # 100 pixels in 0.5 seconds.
     var animation = Animation.new()
     var animation = Animation.new()
     var track_index = animation.add_track(Animation.TYPE_VALUE)
     var track_index = animation.add_track(Animation.TYPE_VALUE)
     animation.track_set_path(track_index, "Enemy:position:x")
     animation.track_set_path(track_index, "Enemy:position:x")
     animation.track_insert_key(track_index, 0.0, 0)
     animation.track_insert_key(track_index, 0.0, 0)
     animation.track_insert_key(track_index, 0.5, 100)
     animation.track_insert_key(track_index, 0.5, 100)
 
 
+ .. code-tab:: csharp
+
+    // This creates an animation that makes the node "Enemy" move to the right by
+    // 100 pixels in 0.5 seconds.
+    var animation = new Animation();
+    int trackIndex = animation.AddTrack(Animation.TrackType.Value);
+    animation.TrackSetPath(trackIndex, "Enemy:position:x");
+    animation.TrackInsertKey(trackIndex, 0.0f, 0);
+    animation.TrackInsertKey(trackIndex, 0.5f, 100);
+
+
+
 Animations are just data containers, and must be added to nodes such as an :ref:`AnimationPlayer<class_AnimationPlayer>` to be played back. Animation tracks have different types, each with its own set of dedicated methods. Check :ref:`TrackType<enum_Animation_TrackType>` to see available types.
 Animations are just data containers, and must be added to nodes such as an :ref:`AnimationPlayer<class_AnimationPlayer>` to be played back. Animation tracks have different types, each with its own set of dedicated methods. Check :ref:`TrackType<enum_Animation_TrackType>` to see available types.
 
 
 Tutorials
 Tutorials
@@ -49,123 +64,125 @@ Properties
 Methods
 Methods
 -------
 -------
 
 
-+------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`int<class_int>`                                      | :ref:`add_track<class_Animation_method_add_track>` **(** :ref:`TrackType<enum_Animation_TrackType>` type, :ref:`int<class_int>` at_position=-1 **)**                                                                                                                                                           |
-+------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`StringName<class_StringName>`                        | :ref:`animation_track_get_key_animation<class_Animation_method_animation_track_get_key_animation>` **(** :ref:`int<class_int>` track_idx, :ref:`int<class_int>` key_idx **)** const                                                                                                                            |
-+------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`int<class_int>`                                      | :ref:`animation_track_insert_key<class_Animation_method_animation_track_insert_key>` **(** :ref:`int<class_int>` track_idx, :ref:`float<class_float>` time, :ref:`StringName<class_StringName>` animation **)**                                                                                                |
-+------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| void                                                       | :ref:`animation_track_set_key_animation<class_Animation_method_animation_track_set_key_animation>` **(** :ref:`int<class_int>` track_idx, :ref:`int<class_int>` key_idx, :ref:`StringName<class_StringName>` animation **)**                                                                                   |
-+------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`float<class_float>`                                  | :ref:`audio_track_get_key_end_offset<class_Animation_method_audio_track_get_key_end_offset>` **(** :ref:`int<class_int>` track_idx, :ref:`int<class_int>` key_idx **)** const                                                                                                                                  |
-+------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`float<class_float>`                                  | :ref:`audio_track_get_key_start_offset<class_Animation_method_audio_track_get_key_start_offset>` **(** :ref:`int<class_int>` track_idx, :ref:`int<class_int>` key_idx **)** const                                                                                                                              |
-+------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`Resource<class_Resource>`                            | :ref:`audio_track_get_key_stream<class_Animation_method_audio_track_get_key_stream>` **(** :ref:`int<class_int>` track_idx, :ref:`int<class_int>` key_idx **)** const                                                                                                                                          |
-+------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`int<class_int>`                                      | :ref:`audio_track_insert_key<class_Animation_method_audio_track_insert_key>` **(** :ref:`int<class_int>` track_idx, :ref:`float<class_float>` time, :ref:`Resource<class_Resource>` stream, :ref:`float<class_float>` start_offset=0, :ref:`float<class_float>` end_offset=0 **)**                             |
-+------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| void                                                       | :ref:`audio_track_set_key_end_offset<class_Animation_method_audio_track_set_key_end_offset>` **(** :ref:`int<class_int>` track_idx, :ref:`int<class_int>` key_idx, :ref:`float<class_float>` offset **)**                                                                                                      |
-+------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| void                                                       | :ref:`audio_track_set_key_start_offset<class_Animation_method_audio_track_set_key_start_offset>` **(** :ref:`int<class_int>` track_idx, :ref:`int<class_int>` key_idx, :ref:`float<class_float>` offset **)**                                                                                                  |
-+------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| void                                                       | :ref:`audio_track_set_key_stream<class_Animation_method_audio_track_set_key_stream>` **(** :ref:`int<class_int>` track_idx, :ref:`int<class_int>` key_idx, :ref:`Resource<class_Resource>` stream **)**                                                                                                        |
-+------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`Vector2<class_Vector2>`                              | :ref:`bezier_track_get_key_in_handle<class_Animation_method_bezier_track_get_key_in_handle>` **(** :ref:`int<class_int>` track_idx, :ref:`int<class_int>` key_idx **)** const                                                                                                                                  |
-+------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`Vector2<class_Vector2>`                              | :ref:`bezier_track_get_key_out_handle<class_Animation_method_bezier_track_get_key_out_handle>` **(** :ref:`int<class_int>` track_idx, :ref:`int<class_int>` key_idx **)** const                                                                                                                                |
-+------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`float<class_float>`                                  | :ref:`bezier_track_get_key_value<class_Animation_method_bezier_track_get_key_value>` **(** :ref:`int<class_int>` track_idx, :ref:`int<class_int>` key_idx **)** const                                                                                                                                          |
-+------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`int<class_int>`                                      | :ref:`bezier_track_insert_key<class_Animation_method_bezier_track_insert_key>` **(** :ref:`int<class_int>` track_idx, :ref:`float<class_float>` time, :ref:`float<class_float>` value, :ref:`Vector2<class_Vector2>` in_handle=Vector2( 0, 0 ), :ref:`Vector2<class_Vector2>` out_handle=Vector2( 0, 0 ) **)** |
-+------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`float<class_float>`                                  | :ref:`bezier_track_interpolate<class_Animation_method_bezier_track_interpolate>` **(** :ref:`int<class_int>` track_idx, :ref:`float<class_float>` time **)** const                                                                                                                                             |
-+------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| void                                                       | :ref:`bezier_track_set_key_in_handle<class_Animation_method_bezier_track_set_key_in_handle>` **(** :ref:`int<class_int>` track_idx, :ref:`int<class_int>` key_idx, :ref:`Vector2<class_Vector2>` in_handle **)**                                                                                               |
-+------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| void                                                       | :ref:`bezier_track_set_key_out_handle<class_Animation_method_bezier_track_set_key_out_handle>` **(** :ref:`int<class_int>` track_idx, :ref:`int<class_int>` key_idx, :ref:`Vector2<class_Vector2>` out_handle **)**                                                                                            |
-+------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| void                                                       | :ref:`bezier_track_set_key_value<class_Animation_method_bezier_track_set_key_value>` **(** :ref:`int<class_int>` track_idx, :ref:`int<class_int>` key_idx, :ref:`float<class_float>` value **)**                                                                                                               |
-+------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| void                                                       | :ref:`clear<class_Animation_method_clear>` **(** **)**                                                                                                                                                                                                                                                         |
-+------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| void                                                       | :ref:`copy_track<class_Animation_method_copy_track>` **(** :ref:`int<class_int>` track_idx, :ref:`Animation<class_Animation>` to_animation **)**                                                                                                                                                               |
-+------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`int<class_int>`                                      | :ref:`find_track<class_Animation_method_find_track>` **(** :ref:`NodePath<class_NodePath>` path **)** const                                                                                                                                                                                                    |
-+------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`int<class_int>`                                      | :ref:`get_track_count<class_Animation_method_get_track_count>` **(** **)** const                                                                                                                                                                                                                               |
-+------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`PackedInt32Array<class_PackedInt32Array>`            | :ref:`method_track_get_key_indices<class_Animation_method_method_track_get_key_indices>` **(** :ref:`int<class_int>` track_idx, :ref:`float<class_float>` time_sec, :ref:`float<class_float>` delta **)** const                                                                                                |
-+------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`StringName<class_StringName>`                        | :ref:`method_track_get_name<class_Animation_method_method_track_get_name>` **(** :ref:`int<class_int>` track_idx, :ref:`int<class_int>` key_idx **)** const                                                                                                                                                    |
-+------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`Array<class_Array>`                                  | :ref:`method_track_get_params<class_Animation_method_method_track_get_params>` **(** :ref:`int<class_int>` track_idx, :ref:`int<class_int>` key_idx **)** const                                                                                                                                                |
-+------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| void                                                       | :ref:`remove_track<class_Animation_method_remove_track>` **(** :ref:`int<class_int>` track_idx **)**                                                                                                                                                                                                           |
-+------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`int<class_int>`                                      | :ref:`track_find_key<class_Animation_method_track_find_key>` **(** :ref:`int<class_int>` track_idx, :ref:`float<class_float>` time, :ref:`bool<class_bool>` exact=false **)** const                                                                                                                            |
-+------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`bool<class_bool>`                                    | :ref:`track_get_interpolation_loop_wrap<class_Animation_method_track_get_interpolation_loop_wrap>` **(** :ref:`int<class_int>` track_idx **)** const                                                                                                                                                           |
-+------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`InterpolationType<enum_Animation_InterpolationType>` | :ref:`track_get_interpolation_type<class_Animation_method_track_get_interpolation_type>` **(** :ref:`int<class_int>` track_idx **)** const                                                                                                                                                                     |
-+------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`int<class_int>`                                      | :ref:`track_get_key_count<class_Animation_method_track_get_key_count>` **(** :ref:`int<class_int>` track_idx **)** const                                                                                                                                                                                       |
-+------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`float<class_float>`                                  | :ref:`track_get_key_time<class_Animation_method_track_get_key_time>` **(** :ref:`int<class_int>` track_idx, :ref:`int<class_int>` key_idx **)** const                                                                                                                                                          |
-+------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`float<class_float>`                                  | :ref:`track_get_key_transition<class_Animation_method_track_get_key_transition>` **(** :ref:`int<class_int>` track_idx, :ref:`int<class_int>` key_idx **)** const                                                                                                                                              |
-+------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`Variant<class_Variant>`                              | :ref:`track_get_key_value<class_Animation_method_track_get_key_value>` **(** :ref:`int<class_int>` track_idx, :ref:`int<class_int>` key_idx **)** const                                                                                                                                                        |
-+------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`NodePath<class_NodePath>`                            | :ref:`track_get_path<class_Animation_method_track_get_path>` **(** :ref:`int<class_int>` track_idx **)** const                                                                                                                                                                                                 |
-+------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`TrackType<enum_Animation_TrackType>`                 | :ref:`track_get_type<class_Animation_method_track_get_type>` **(** :ref:`int<class_int>` track_idx **)** const                                                                                                                                                                                                 |
-+------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| void                                                       | :ref:`track_insert_key<class_Animation_method_track_insert_key>` **(** :ref:`int<class_int>` track_idx, :ref:`float<class_float>` time, :ref:`Variant<class_Variant>` key, :ref:`float<class_float>` transition=1 **)**                                                                                        |
-+------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`bool<class_bool>`                                    | :ref:`track_is_enabled<class_Animation_method_track_is_enabled>` **(** :ref:`int<class_int>` track_idx **)** const                                                                                                                                                                                             |
-+------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`bool<class_bool>`                                    | :ref:`track_is_imported<class_Animation_method_track_is_imported>` **(** :ref:`int<class_int>` track_idx **)** const                                                                                                                                                                                           |
-+------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| void                                                       | :ref:`track_move_down<class_Animation_method_track_move_down>` **(** :ref:`int<class_int>` track_idx **)**                                                                                                                                                                                                     |
-+------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| void                                                       | :ref:`track_move_to<class_Animation_method_track_move_to>` **(** :ref:`int<class_int>` track_idx, :ref:`int<class_int>` to_idx **)**                                                                                                                                                                           |
-+------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| void                                                       | :ref:`track_move_up<class_Animation_method_track_move_up>` **(** :ref:`int<class_int>` track_idx **)**                                                                                                                                                                                                         |
-+------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| void                                                       | :ref:`track_remove_key<class_Animation_method_track_remove_key>` **(** :ref:`int<class_int>` track_idx, :ref:`int<class_int>` key_idx **)**                                                                                                                                                                    |
-+------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| void                                                       | :ref:`track_remove_key_at_position<class_Animation_method_track_remove_key_at_position>` **(** :ref:`int<class_int>` track_idx, :ref:`float<class_float>` position **)**                                                                                                                                       |
-+------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| void                                                       | :ref:`track_set_enabled<class_Animation_method_track_set_enabled>` **(** :ref:`int<class_int>` track_idx, :ref:`bool<class_bool>` enabled **)**                                                                                                                                                                |
-+------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| void                                                       | :ref:`track_set_imported<class_Animation_method_track_set_imported>` **(** :ref:`int<class_int>` track_idx, :ref:`bool<class_bool>` imported **)**                                                                                                                                                             |
-+------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| void                                                       | :ref:`track_set_interpolation_loop_wrap<class_Animation_method_track_set_interpolation_loop_wrap>` **(** :ref:`int<class_int>` track_idx, :ref:`bool<class_bool>` interpolation **)**                                                                                                                          |
-+------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| void                                                       | :ref:`track_set_interpolation_type<class_Animation_method_track_set_interpolation_type>` **(** :ref:`int<class_int>` track_idx, :ref:`InterpolationType<enum_Animation_InterpolationType>` interpolation **)**                                                                                                 |
-+------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| void                                                       | :ref:`track_set_key_time<class_Animation_method_track_set_key_time>` **(** :ref:`int<class_int>` track_idx, :ref:`int<class_int>` key_idx, :ref:`float<class_float>` time **)**                                                                                                                                |
-+------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| void                                                       | :ref:`track_set_key_transition<class_Animation_method_track_set_key_transition>` **(** :ref:`int<class_int>` track_idx, :ref:`int<class_int>` key_idx, :ref:`float<class_float>` transition **)**                                                                                                              |
-+------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| void                                                       | :ref:`track_set_key_value<class_Animation_method_track_set_key_value>` **(** :ref:`int<class_int>` track_idx, :ref:`int<class_int>` key, :ref:`Variant<class_Variant>` value **)**                                                                                                                             |
-+------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| void                                                       | :ref:`track_set_path<class_Animation_method_track_set_path>` **(** :ref:`int<class_int>` track_idx, :ref:`NodePath<class_NodePath>` path **)**                                                                                                                                                                 |
-+------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| void                                                       | :ref:`track_swap<class_Animation_method_track_swap>` **(** :ref:`int<class_int>` track_idx, :ref:`int<class_int>` with_idx **)**                                                                                                                                                                               |
-+------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`int<class_int>`                                      | :ref:`transform_track_insert_key<class_Animation_method_transform_track_insert_key>` **(** :ref:`int<class_int>` track_idx, :ref:`float<class_float>` time, :ref:`Vector3<class_Vector3>` location, :ref:`Quat<class_Quat>` rotation, :ref:`Vector3<class_Vector3>` scale **)**                                |
-+------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`Array<class_Array>`                                  | :ref:`transform_track_interpolate<class_Animation_method_transform_track_interpolate>` **(** :ref:`int<class_int>` track_idx, :ref:`float<class_float>` time_sec **)** const                                                                                                                                   |
-+------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`PackedInt32Array<class_PackedInt32Array>`            | :ref:`value_track_get_key_indices<class_Animation_method_value_track_get_key_indices>` **(** :ref:`int<class_int>` track_idx, :ref:`float<class_float>` time_sec, :ref:`float<class_float>` delta **)** const                                                                                                  |
-+------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`UpdateMode<enum_Animation_UpdateMode>`               | :ref:`value_track_get_update_mode<class_Animation_method_value_track_get_update_mode>` **(** :ref:`int<class_int>` track_idx **)** const                                                                                                                                                                       |
-+------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| void                                                       | :ref:`value_track_set_update_mode<class_Animation_method_value_track_set_update_mode>` **(** :ref:`int<class_int>` track_idx, :ref:`UpdateMode<enum_Animation_UpdateMode>` mode **)**                                                                                                                          |
-+------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
++------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`int<class_int>`                                      | :ref:`add_track<class_Animation_method_add_track>` **(** :ref:`TrackType<enum_Animation_TrackType>` type, :ref:`int<class_int>` at_position=-1 **)**                                                                                                                                                       |
++------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`StringName<class_StringName>`                        | :ref:`animation_track_get_key_animation<class_Animation_method_animation_track_get_key_animation>` **(** :ref:`int<class_int>` track_idx, :ref:`int<class_int>` key_idx **)** |const|                                                                                                                      |
++------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`int<class_int>`                                      | :ref:`animation_track_insert_key<class_Animation_method_animation_track_insert_key>` **(** :ref:`int<class_int>` track_idx, :ref:`float<class_float>` time, :ref:`StringName<class_StringName>` animation **)**                                                                                            |
++------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| void                                                       | :ref:`animation_track_set_key_animation<class_Animation_method_animation_track_set_key_animation>` **(** :ref:`int<class_int>` track_idx, :ref:`int<class_int>` key_idx, :ref:`StringName<class_StringName>` animation **)**                                                                               |
++------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`float<class_float>`                                  | :ref:`audio_track_get_key_end_offset<class_Animation_method_audio_track_get_key_end_offset>` **(** :ref:`int<class_int>` track_idx, :ref:`int<class_int>` key_idx **)** |const|                                                                                                                            |
++------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`float<class_float>`                                  | :ref:`audio_track_get_key_start_offset<class_Animation_method_audio_track_get_key_start_offset>` **(** :ref:`int<class_int>` track_idx, :ref:`int<class_int>` key_idx **)** |const|                                                                                                                        |
++------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`Resource<class_Resource>`                            | :ref:`audio_track_get_key_stream<class_Animation_method_audio_track_get_key_stream>` **(** :ref:`int<class_int>` track_idx, :ref:`int<class_int>` key_idx **)** |const|                                                                                                                                    |
++------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`int<class_int>`                                      | :ref:`audio_track_insert_key<class_Animation_method_audio_track_insert_key>` **(** :ref:`int<class_int>` track_idx, :ref:`float<class_float>` time, :ref:`Resource<class_Resource>` stream, :ref:`float<class_float>` start_offset=0, :ref:`float<class_float>` end_offset=0 **)**                         |
++------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| void                                                       | :ref:`audio_track_set_key_end_offset<class_Animation_method_audio_track_set_key_end_offset>` **(** :ref:`int<class_int>` track_idx, :ref:`int<class_int>` key_idx, :ref:`float<class_float>` offset **)**                                                                                                  |
++------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| void                                                       | :ref:`audio_track_set_key_start_offset<class_Animation_method_audio_track_set_key_start_offset>` **(** :ref:`int<class_int>` track_idx, :ref:`int<class_int>` key_idx, :ref:`float<class_float>` offset **)**                                                                                              |
++------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| void                                                       | :ref:`audio_track_set_key_stream<class_Animation_method_audio_track_set_key_stream>` **(** :ref:`int<class_int>` track_idx, :ref:`int<class_int>` key_idx, :ref:`Resource<class_Resource>` stream **)**                                                                                                    |
++------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`Vector2<class_Vector2>`                              | :ref:`bezier_track_get_key_in_handle<class_Animation_method_bezier_track_get_key_in_handle>` **(** :ref:`int<class_int>` track_idx, :ref:`int<class_int>` key_idx **)** |const|                                                                                                                            |
++------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`Vector2<class_Vector2>`                              | :ref:`bezier_track_get_key_out_handle<class_Animation_method_bezier_track_get_key_out_handle>` **(** :ref:`int<class_int>` track_idx, :ref:`int<class_int>` key_idx **)** |const|                                                                                                                          |
++------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`float<class_float>`                                  | :ref:`bezier_track_get_key_value<class_Animation_method_bezier_track_get_key_value>` **(** :ref:`int<class_int>` track_idx, :ref:`int<class_int>` key_idx **)** |const|                                                                                                                                    |
++------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`int<class_int>`                                      | :ref:`bezier_track_insert_key<class_Animation_method_bezier_track_insert_key>` **(** :ref:`int<class_int>` track_idx, :ref:`float<class_float>` time, :ref:`float<class_float>` value, :ref:`Vector2<class_Vector2>` in_handle=Vector2(0, 0), :ref:`Vector2<class_Vector2>` out_handle=Vector2(0, 0) **)** |
++------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`float<class_float>`                                  | :ref:`bezier_track_interpolate<class_Animation_method_bezier_track_interpolate>` **(** :ref:`int<class_int>` track_idx, :ref:`float<class_float>` time **)** |const|                                                                                                                                       |
++------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| void                                                       | :ref:`bezier_track_set_key_in_handle<class_Animation_method_bezier_track_set_key_in_handle>` **(** :ref:`int<class_int>` track_idx, :ref:`int<class_int>` key_idx, :ref:`Vector2<class_Vector2>` in_handle **)**                                                                                           |
++------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| void                                                       | :ref:`bezier_track_set_key_out_handle<class_Animation_method_bezier_track_set_key_out_handle>` **(** :ref:`int<class_int>` track_idx, :ref:`int<class_int>` key_idx, :ref:`Vector2<class_Vector2>` out_handle **)**                                                                                        |
++------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| void                                                       | :ref:`bezier_track_set_key_value<class_Animation_method_bezier_track_set_key_value>` **(** :ref:`int<class_int>` track_idx, :ref:`int<class_int>` key_idx, :ref:`float<class_float>` value **)**                                                                                                           |
++------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| void                                                       | :ref:`clear<class_Animation_method_clear>` **(** **)**                                                                                                                                                                                                                                                     |
++------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| void                                                       | :ref:`copy_track<class_Animation_method_copy_track>` **(** :ref:`int<class_int>` track_idx, :ref:`Animation<class_Animation>` to_animation **)**                                                                                                                                                           |
++------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`int<class_int>`                                      | :ref:`find_track<class_Animation_method_find_track>` **(** :ref:`NodePath<class_NodePath>` path **)** |const|                                                                                                                                                                                              |
++------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`int<class_int>`                                      | :ref:`get_track_count<class_Animation_method_get_track_count>` **(** **)** |const|                                                                                                                                                                                                                         |
++------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`PackedInt32Array<class_PackedInt32Array>`            | :ref:`method_track_get_key_indices<class_Animation_method_method_track_get_key_indices>` **(** :ref:`int<class_int>` track_idx, :ref:`float<class_float>` time_sec, :ref:`float<class_float>` delta **)** |const|                                                                                          |
++------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`StringName<class_StringName>`                        | :ref:`method_track_get_name<class_Animation_method_method_track_get_name>` **(** :ref:`int<class_int>` track_idx, :ref:`int<class_int>` key_idx **)** |const|                                                                                                                                              |
++------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`Array<class_Array>`                                  | :ref:`method_track_get_params<class_Animation_method_method_track_get_params>` **(** :ref:`int<class_int>` track_idx, :ref:`int<class_int>` key_idx **)** |const|                                                                                                                                          |
++------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| void                                                       | :ref:`remove_track<class_Animation_method_remove_track>` **(** :ref:`int<class_int>` track_idx **)**                                                                                                                                                                                                       |
++------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`int<class_int>`                                      | :ref:`track_find_key<class_Animation_method_track_find_key>` **(** :ref:`int<class_int>` track_idx, :ref:`float<class_float>` time, :ref:`bool<class_bool>` exact=false **)** |const|                                                                                                                      |
++------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`bool<class_bool>`                                    | :ref:`track_get_interpolation_loop_wrap<class_Animation_method_track_get_interpolation_loop_wrap>` **(** :ref:`int<class_int>` track_idx **)** |const|                                                                                                                                                     |
++------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`InterpolationType<enum_Animation_InterpolationType>` | :ref:`track_get_interpolation_type<class_Animation_method_track_get_interpolation_type>` **(** :ref:`int<class_int>` track_idx **)** |const|                                                                                                                                                               |
++------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`int<class_int>`                                      | :ref:`track_get_key_count<class_Animation_method_track_get_key_count>` **(** :ref:`int<class_int>` track_idx **)** |const|                                                                                                                                                                                 |
++------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`float<class_float>`                                  | :ref:`track_get_key_time<class_Animation_method_track_get_key_time>` **(** :ref:`int<class_int>` track_idx, :ref:`int<class_int>` key_idx **)** |const|                                                                                                                                                    |
++------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`float<class_float>`                                  | :ref:`track_get_key_transition<class_Animation_method_track_get_key_transition>` **(** :ref:`int<class_int>` track_idx, :ref:`int<class_int>` key_idx **)** |const|                                                                                                                                        |
++------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`Variant<class_Variant>`                              | :ref:`track_get_key_value<class_Animation_method_track_get_key_value>` **(** :ref:`int<class_int>` track_idx, :ref:`int<class_int>` key_idx **)** |const|                                                                                                                                                  |
++------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`NodePath<class_NodePath>`                            | :ref:`track_get_path<class_Animation_method_track_get_path>` **(** :ref:`int<class_int>` track_idx **)** |const|                                                                                                                                                                                           |
++------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`TrackType<enum_Animation_TrackType>`                 | :ref:`track_get_type<class_Animation_method_track_get_type>` **(** :ref:`int<class_int>` track_idx **)** |const|                                                                                                                                                                                           |
++------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| void                                                       | :ref:`track_insert_key<class_Animation_method_track_insert_key>` **(** :ref:`int<class_int>` track_idx, :ref:`float<class_float>` time, :ref:`Variant<class_Variant>` key, :ref:`float<class_float>` transition=1 **)**                                                                                    |
++------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`bool<class_bool>`                                    | :ref:`track_is_enabled<class_Animation_method_track_is_enabled>` **(** :ref:`int<class_int>` track_idx **)** |const|                                                                                                                                                                                       |
++------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`bool<class_bool>`                                    | :ref:`track_is_imported<class_Animation_method_track_is_imported>` **(** :ref:`int<class_int>` track_idx **)** |const|                                                                                                                                                                                     |
++------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| void                                                       | :ref:`track_move_down<class_Animation_method_track_move_down>` **(** :ref:`int<class_int>` track_idx **)**                                                                                                                                                                                                 |
++------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| void                                                       | :ref:`track_move_to<class_Animation_method_track_move_to>` **(** :ref:`int<class_int>` track_idx, :ref:`int<class_int>` to_idx **)**                                                                                                                                                                       |
++------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| void                                                       | :ref:`track_move_up<class_Animation_method_track_move_up>` **(** :ref:`int<class_int>` track_idx **)**                                                                                                                                                                                                     |
++------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| void                                                       | :ref:`track_remove_key<class_Animation_method_track_remove_key>` **(** :ref:`int<class_int>` track_idx, :ref:`int<class_int>` key_idx **)**                                                                                                                                                                |
++------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| void                                                       | :ref:`track_remove_key_at_time<class_Animation_method_track_remove_key_at_time>` **(** :ref:`int<class_int>` track_idx, :ref:`float<class_float>` time **)**                                                                                                                                               |
++------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| void                                                       | :ref:`track_set_enabled<class_Animation_method_track_set_enabled>` **(** :ref:`int<class_int>` track_idx, :ref:`bool<class_bool>` enabled **)**                                                                                                                                                            |
++------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| void                                                       | :ref:`track_set_imported<class_Animation_method_track_set_imported>` **(** :ref:`int<class_int>` track_idx, :ref:`bool<class_bool>` imported **)**                                                                                                                                                         |
++------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| void                                                       | :ref:`track_set_interpolation_loop_wrap<class_Animation_method_track_set_interpolation_loop_wrap>` **(** :ref:`int<class_int>` track_idx, :ref:`bool<class_bool>` interpolation **)**                                                                                                                      |
++------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| void                                                       | :ref:`track_set_interpolation_type<class_Animation_method_track_set_interpolation_type>` **(** :ref:`int<class_int>` track_idx, :ref:`InterpolationType<enum_Animation_InterpolationType>` interpolation **)**                                                                                             |
++------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| void                                                       | :ref:`track_set_key_time<class_Animation_method_track_set_key_time>` **(** :ref:`int<class_int>` track_idx, :ref:`int<class_int>` key_idx, :ref:`float<class_float>` time **)**                                                                                                                            |
++------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| void                                                       | :ref:`track_set_key_transition<class_Animation_method_track_set_key_transition>` **(** :ref:`int<class_int>` track_idx, :ref:`int<class_int>` key_idx, :ref:`float<class_float>` transition **)**                                                                                                          |
++------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| void                                                       | :ref:`track_set_key_value<class_Animation_method_track_set_key_value>` **(** :ref:`int<class_int>` track_idx, :ref:`int<class_int>` key, :ref:`Variant<class_Variant>` value **)**                                                                                                                         |
++------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| void                                                       | :ref:`track_set_path<class_Animation_method_track_set_path>` **(** :ref:`int<class_int>` track_idx, :ref:`NodePath<class_NodePath>` path **)**                                                                                                                                                             |
++------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| void                                                       | :ref:`track_swap<class_Animation_method_track_swap>` **(** :ref:`int<class_int>` track_idx, :ref:`int<class_int>` with_idx **)**                                                                                                                                                                           |
++------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`int<class_int>`                                      | :ref:`transform_track_insert_key<class_Animation_method_transform_track_insert_key>` **(** :ref:`int<class_int>` track_idx, :ref:`float<class_float>` time, :ref:`Vector3<class_Vector3>` location, :ref:`Quaternion<class_Quaternion>` rotation, :ref:`Vector3<class_Vector3>` scale **)**                |
++------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`Array<class_Array>`                                  | :ref:`transform_track_interpolate<class_Animation_method_transform_track_interpolate>` **(** :ref:`int<class_int>` track_idx, :ref:`float<class_float>` time_sec **)** |const|                                                                                                                             |
++------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`PackedInt32Array<class_PackedInt32Array>`            | :ref:`value_track_get_key_indices<class_Animation_method_value_track_get_key_indices>` **(** :ref:`int<class_int>` track_idx, :ref:`float<class_float>` time_sec, :ref:`float<class_float>` delta **)** |const|                                                                                            |
++------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`UpdateMode<enum_Animation_UpdateMode>`               | :ref:`value_track_get_update_mode<class_Animation_method_value_track_get_update_mode>` **(** :ref:`int<class_int>` track_idx **)** |const|                                                                                                                                                                 |
++------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`Variant<class_Variant>`                              | :ref:`value_track_interpolate<class_Animation_method_value_track_interpolate>` **(** :ref:`int<class_int>` track_idx, :ref:`float<class_float>` time_sec **)** |const|                                                                                                                                     |
++------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| void                                                       | :ref:`value_track_set_update_mode<class_Animation_method_value_track_set_update_mode>` **(** :ref:`int<class_int>` track_idx, :ref:`UpdateMode<enum_Animation_UpdateMode>` mode **)**                                                                                                                      |
++------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
 
 
 Signals
 Signals
 -------
 -------
@@ -183,7 +200,7 @@ Enumerations
 
 
 .. _class_Animation_constant_TYPE_VALUE:
 .. _class_Animation_constant_TYPE_VALUE:
 
 
-.. _class_Animation_constant_TYPE_TRANSFORM:
+.. _class_Animation_constant_TYPE_TRANSFORM3D:
 
 
 .. _class_Animation_constant_TYPE_METHOD:
 .. _class_Animation_constant_TYPE_METHOD:
 
 
@@ -197,7 +214,7 @@ enum **TrackType**:
 
 
 - **TYPE_VALUE** = **0** --- Value tracks set values in node properties, but only those which can be Interpolated.
 - **TYPE_VALUE** = **0** --- Value tracks set values in node properties, but only those which can be Interpolated.
 
 
-- **TYPE_TRANSFORM** = **1** --- Transform tracks are used to change node local transforms or skeleton pose bones. Transitions are interpolated.
+- **TYPE_TRANSFORM3D** = **1** --- Transform3D tracks are used to change node local transforms or skeleton pose bones of 3D nodes. Transitions are interpolated.
 
 
 - **TYPE_METHOD** = **2** --- Method tracks call functions with given arguments per key.
 - **TYPE_METHOD** = **2** --- Method tracks call functions with given arguments per key.
 
 
@@ -280,7 +297,7 @@ The total length of the animation (in seconds).
 | *Getter*  | has_loop()      |
 | *Getter*  | has_loop()      |
 +-----------+-----------------+
 +-----------+-----------------+
 
 
-A flag indicating that the animation must loop. This is uses for correct interpolation of animation cycles, and for hinting the player that it must restart the animation.
+A flag indicating that the animation must loop. This is used for correct interpolation of animation cycles, and for hinting the player that it must restart the animation.
 
 
 ----
 ----
 
 
@@ -311,7 +328,7 @@ Adds a track to the Animation.
 
 
 .. _class_Animation_method_animation_track_get_key_animation:
 .. _class_Animation_method_animation_track_get_key_animation:
 
 
-- :ref:`StringName<class_StringName>` **animation_track_get_key_animation** **(** :ref:`int<class_int>` track_idx, :ref:`int<class_int>` key_idx **)** const
+- :ref:`StringName<class_StringName>` **animation_track_get_key_animation** **(** :ref:`int<class_int>` track_idx, :ref:`int<class_int>` key_idx **)** |const|
 
 
 Returns the animation name at the key identified by ``key_idx``. The ``track_idx`` must be the index of an Animation Track.
 Returns the animation name at the key identified by ``key_idx``. The ``track_idx`` must be the index of an Animation Track.
 
 
@@ -335,7 +352,7 @@ Sets the key identified by ``key_idx`` to value ``animation``. The ``track_idx``
 
 
 .. _class_Animation_method_audio_track_get_key_end_offset:
 .. _class_Animation_method_audio_track_get_key_end_offset:
 
 
-- :ref:`float<class_float>` **audio_track_get_key_end_offset** **(** :ref:`int<class_int>` track_idx, :ref:`int<class_int>` key_idx **)** const
+- :ref:`float<class_float>` **audio_track_get_key_end_offset** **(** :ref:`int<class_int>` track_idx, :ref:`int<class_int>` key_idx **)** |const|
 
 
 Returns the end offset of the key identified by ``key_idx``. The ``track_idx`` must be the index of an Audio Track.
 Returns the end offset of the key identified by ``key_idx``. The ``track_idx`` must be the index of an Audio Track.
 
 
@@ -345,7 +362,7 @@ End offset is the number of seconds cut off at the ending of the audio stream.
 
 
 .. _class_Animation_method_audio_track_get_key_start_offset:
 .. _class_Animation_method_audio_track_get_key_start_offset:
 
 
-- :ref:`float<class_float>` **audio_track_get_key_start_offset** **(** :ref:`int<class_int>` track_idx, :ref:`int<class_int>` key_idx **)** const
+- :ref:`float<class_float>` **audio_track_get_key_start_offset** **(** :ref:`int<class_int>` track_idx, :ref:`int<class_int>` key_idx **)** |const|
 
 
 Returns the start offset of the key identified by ``key_idx``. The ``track_idx`` must be the index of an Audio Track.
 Returns the start offset of the key identified by ``key_idx``. The ``track_idx`` must be the index of an Audio Track.
 
 
@@ -355,7 +372,7 @@ Start offset is the number of seconds cut off at the beginning of the audio stre
 
 
 .. _class_Animation_method_audio_track_get_key_stream:
 .. _class_Animation_method_audio_track_get_key_stream:
 
 
-- :ref:`Resource<class_Resource>` **audio_track_get_key_stream** **(** :ref:`int<class_int>` track_idx, :ref:`int<class_int>` key_idx **)** const
+- :ref:`Resource<class_Resource>` **audio_track_get_key_stream** **(** :ref:`int<class_int>` track_idx, :ref:`int<class_int>` key_idx **)** |const|
 
 
 Returns the audio stream of the key identified by ``key_idx``. The ``track_idx`` must be the index of an Audio Track.
 Returns the audio stream of the key identified by ``key_idx``. The ``track_idx`` must be the index of an Audio Track.
 
 
@@ -391,13 +408,13 @@ Sets the start offset of the key identified by ``key_idx`` to value ``offset``.
 
 
 - void **audio_track_set_key_stream** **(** :ref:`int<class_int>` track_idx, :ref:`int<class_int>` key_idx, :ref:`Resource<class_Resource>` stream **)**
 - void **audio_track_set_key_stream** **(** :ref:`int<class_int>` track_idx, :ref:`int<class_int>` key_idx, :ref:`Resource<class_Resource>` stream **)**
 
 
-Sets the stream of the key identified by ``key_idx`` to value ``offset``. The ``track_idx`` must be the index of an Audio Track.
+Sets the stream of the key identified by ``key_idx`` to value ``stream``. The ``track_idx`` must be the index of an Audio Track.
 
 
 ----
 ----
 
 
 .. _class_Animation_method_bezier_track_get_key_in_handle:
 .. _class_Animation_method_bezier_track_get_key_in_handle:
 
 
-- :ref:`Vector2<class_Vector2>` **bezier_track_get_key_in_handle** **(** :ref:`int<class_int>` track_idx, :ref:`int<class_int>` key_idx **)** const
+- :ref:`Vector2<class_Vector2>` **bezier_track_get_key_in_handle** **(** :ref:`int<class_int>` track_idx, :ref:`int<class_int>` key_idx **)** |const|
 
 
 Returns the in handle of the key identified by ``key_idx``. The ``track_idx`` must be the index of a Bezier Track.
 Returns the in handle of the key identified by ``key_idx``. The ``track_idx`` must be the index of a Bezier Track.
 
 
@@ -405,7 +422,7 @@ Returns the in handle of the key identified by ``key_idx``. The ``track_idx`` mu
 
 
 .. _class_Animation_method_bezier_track_get_key_out_handle:
 .. _class_Animation_method_bezier_track_get_key_out_handle:
 
 
-- :ref:`Vector2<class_Vector2>` **bezier_track_get_key_out_handle** **(** :ref:`int<class_int>` track_idx, :ref:`int<class_int>` key_idx **)** const
+- :ref:`Vector2<class_Vector2>` **bezier_track_get_key_out_handle** **(** :ref:`int<class_int>` track_idx, :ref:`int<class_int>` key_idx **)** |const|
 
 
 Returns the out handle of the key identified by ``key_idx``. The ``track_idx`` must be the index of a Bezier Track.
 Returns the out handle of the key identified by ``key_idx``. The ``track_idx`` must be the index of a Bezier Track.
 
 
@@ -413,7 +430,7 @@ Returns the out handle of the key identified by ``key_idx``. The ``track_idx`` m
 
 
 .. _class_Animation_method_bezier_track_get_key_value:
 .. _class_Animation_method_bezier_track_get_key_value:
 
 
-- :ref:`float<class_float>` **bezier_track_get_key_value** **(** :ref:`int<class_int>` track_idx, :ref:`int<class_int>` key_idx **)** const
+- :ref:`float<class_float>` **bezier_track_get_key_value** **(** :ref:`int<class_int>` track_idx, :ref:`int<class_int>` key_idx **)** |const|
 
 
 Returns the value of the key identified by ``key_idx``. The ``track_idx`` must be the index of a Bezier Track.
 Returns the value of the key identified by ``key_idx``. The ``track_idx`` must be the index of a Bezier Track.
 
 
@@ -421,7 +438,7 @@ Returns the value of the key identified by ``key_idx``. The ``track_idx`` must b
 
 
 .. _class_Animation_method_bezier_track_insert_key:
 .. _class_Animation_method_bezier_track_insert_key:
 
 
-- :ref:`int<class_int>` **bezier_track_insert_key** **(** :ref:`int<class_int>` track_idx, :ref:`float<class_float>` time, :ref:`float<class_float>` value, :ref:`Vector2<class_Vector2>` in_handle=Vector2( 0, 0 ), :ref:`Vector2<class_Vector2>` out_handle=Vector2( 0, 0 ) **)**
+- :ref:`int<class_int>` **bezier_track_insert_key** **(** :ref:`int<class_int>` track_idx, :ref:`float<class_float>` time, :ref:`float<class_float>` value, :ref:`Vector2<class_Vector2>` in_handle=Vector2(0, 0), :ref:`Vector2<class_Vector2>` out_handle=Vector2(0, 0) **)**
 
 
 Inserts a Bezier Track key at the given ``time`` in seconds. The ``track_idx`` must be the index of a Bezier Track.
 Inserts a Bezier Track key at the given ``time`` in seconds. The ``track_idx`` must be the index of a Bezier Track.
 
 
@@ -431,7 +448,7 @@ Inserts a Bezier Track key at the given ``time`` in seconds. The ``track_idx`` m
 
 
 .. _class_Animation_method_bezier_track_interpolate:
 .. _class_Animation_method_bezier_track_interpolate:
 
 
-- :ref:`float<class_float>` **bezier_track_interpolate** **(** :ref:`int<class_int>` track_idx, :ref:`float<class_float>` time **)** const
+- :ref:`float<class_float>` **bezier_track_interpolate** **(** :ref:`int<class_int>` track_idx, :ref:`float<class_float>` time **)** |const|
 
 
 Returns the interpolated value at the given ``time`` (in seconds). The ``track_idx`` must be the index of a Bezier Track.
 Returns the interpolated value at the given ``time`` (in seconds). The ``track_idx`` must be the index of a Bezier Track.
 
 
@@ -479,7 +496,7 @@ Adds a new track that is a copy of the given track from ``to_animation``.
 
 
 .. _class_Animation_method_find_track:
 .. _class_Animation_method_find_track:
 
 
-- :ref:`int<class_int>` **find_track** **(** :ref:`NodePath<class_NodePath>` path **)** const
+- :ref:`int<class_int>` **find_track** **(** :ref:`NodePath<class_NodePath>` path **)** |const|
 
 
 Returns the index of the specified track. If the track is not found, return -1.
 Returns the index of the specified track. If the track is not found, return -1.
 
 
@@ -487,7 +504,7 @@ Returns the index of the specified track. If the track is not found, return -1.
 
 
 .. _class_Animation_method_get_track_count:
 .. _class_Animation_method_get_track_count:
 
 
-- :ref:`int<class_int>` **get_track_count** **(** **)** const
+- :ref:`int<class_int>` **get_track_count** **(** **)** |const|
 
 
 Returns the amount of tracks in the animation.
 Returns the amount of tracks in the animation.
 
 
@@ -495,7 +512,7 @@ Returns the amount of tracks in the animation.
 
 
 .. _class_Animation_method_method_track_get_key_indices:
 .. _class_Animation_method_method_track_get_key_indices:
 
 
-- :ref:`PackedInt32Array<class_PackedInt32Array>` **method_track_get_key_indices** **(** :ref:`int<class_int>` track_idx, :ref:`float<class_float>` time_sec, :ref:`float<class_float>` delta **)** const
+- :ref:`PackedInt32Array<class_PackedInt32Array>` **method_track_get_key_indices** **(** :ref:`int<class_int>` track_idx, :ref:`float<class_float>` time_sec, :ref:`float<class_float>` delta **)** |const|
 
 
 Returns all the key indices of a method track, given a position and delta time.
 Returns all the key indices of a method track, given a position and delta time.
 
 
@@ -503,7 +520,7 @@ Returns all the key indices of a method track, given a position and delta time.
 
 
 .. _class_Animation_method_method_track_get_name:
 .. _class_Animation_method_method_track_get_name:
 
 
-- :ref:`StringName<class_StringName>` **method_track_get_name** **(** :ref:`int<class_int>` track_idx, :ref:`int<class_int>` key_idx **)** const
+- :ref:`StringName<class_StringName>` **method_track_get_name** **(** :ref:`int<class_int>` track_idx, :ref:`int<class_int>` key_idx **)** |const|
 
 
 Returns the method name of a method track.
 Returns the method name of a method track.
 
 
@@ -511,7 +528,7 @@ Returns the method name of a method track.
 
 
 .. _class_Animation_method_method_track_get_params:
 .. _class_Animation_method_method_track_get_params:
 
 
-- :ref:`Array<class_Array>` **method_track_get_params** **(** :ref:`int<class_int>` track_idx, :ref:`int<class_int>` key_idx **)** const
+- :ref:`Array<class_Array>` **method_track_get_params** **(** :ref:`int<class_int>` track_idx, :ref:`int<class_int>` key_idx **)** |const|
 
 
 Returns the arguments values to be called on a method track for a given key in a given track.
 Returns the arguments values to be called on a method track for a given key in a given track.
 
 
@@ -527,7 +544,7 @@ Removes a track by specifying the track index.
 
 
 .. _class_Animation_method_track_find_key:
 .. _class_Animation_method_track_find_key:
 
 
-- :ref:`int<class_int>` **track_find_key** **(** :ref:`int<class_int>` track_idx, :ref:`float<class_float>` time, :ref:`bool<class_bool>` exact=false **)** const
+- :ref:`int<class_int>` **track_find_key** **(** :ref:`int<class_int>` track_idx, :ref:`float<class_float>` time, :ref:`bool<class_bool>` exact=false **)** |const|
 
 
 Finds the key index by time in a given track. Optionally, only find it if the exact time is given.
 Finds the key index by time in a given track. Optionally, only find it if the exact time is given.
 
 
@@ -535,7 +552,7 @@ Finds the key index by time in a given track. Optionally, only find it if the ex
 
 
 .. _class_Animation_method_track_get_interpolation_loop_wrap:
 .. _class_Animation_method_track_get_interpolation_loop_wrap:
 
 
-- :ref:`bool<class_bool>` **track_get_interpolation_loop_wrap** **(** :ref:`int<class_int>` track_idx **)** const
+- :ref:`bool<class_bool>` **track_get_interpolation_loop_wrap** **(** :ref:`int<class_int>` track_idx **)** |const|
 
 
 Returns ``true`` if the track at ``idx`` wraps the interpolation loop. New tracks wrap the interpolation loop by default.
 Returns ``true`` if the track at ``idx`` wraps the interpolation loop. New tracks wrap the interpolation loop by default.
 
 
@@ -543,7 +560,7 @@ Returns ``true`` if the track at ``idx`` wraps the interpolation loop. New track
 
 
 .. _class_Animation_method_track_get_interpolation_type:
 .. _class_Animation_method_track_get_interpolation_type:
 
 
-- :ref:`InterpolationType<enum_Animation_InterpolationType>` **track_get_interpolation_type** **(** :ref:`int<class_int>` track_idx **)** const
+- :ref:`InterpolationType<enum_Animation_InterpolationType>` **track_get_interpolation_type** **(** :ref:`int<class_int>` track_idx **)** |const|
 
 
 Returns the interpolation type of a given track.
 Returns the interpolation type of a given track.
 
 
@@ -551,7 +568,7 @@ Returns the interpolation type of a given track.
 
 
 .. _class_Animation_method_track_get_key_count:
 .. _class_Animation_method_track_get_key_count:
 
 
-- :ref:`int<class_int>` **track_get_key_count** **(** :ref:`int<class_int>` track_idx **)** const
+- :ref:`int<class_int>` **track_get_key_count** **(** :ref:`int<class_int>` track_idx **)** |const|
 
 
 Returns the amount of keys in a given track.
 Returns the amount of keys in a given track.
 
 
@@ -559,7 +576,7 @@ Returns the amount of keys in a given track.
 
 
 .. _class_Animation_method_track_get_key_time:
 .. _class_Animation_method_track_get_key_time:
 
 
-- :ref:`float<class_float>` **track_get_key_time** **(** :ref:`int<class_int>` track_idx, :ref:`int<class_int>` key_idx **)** const
+- :ref:`float<class_float>` **track_get_key_time** **(** :ref:`int<class_int>` track_idx, :ref:`int<class_int>` key_idx **)** |const|
 
 
 Returns the time at which the key is located.
 Returns the time at which the key is located.
 
 
@@ -567,15 +584,15 @@ Returns the time at which the key is located.
 
 
 .. _class_Animation_method_track_get_key_transition:
 .. _class_Animation_method_track_get_key_transition:
 
 
-- :ref:`float<class_float>` **track_get_key_transition** **(** :ref:`int<class_int>` track_idx, :ref:`int<class_int>` key_idx **)** const
+- :ref:`float<class_float>` **track_get_key_transition** **(** :ref:`int<class_int>` track_idx, :ref:`int<class_int>` key_idx **)** |const|
 
 
-Returns the transition curve (easing) for a specific key (see the built-in math function :ref:`@GDScript.ease<class_@GDScript_method_ease>`).
+Returns the transition curve (easing) for a specific key (see the built-in math function :ref:`@GlobalScope.ease<class_@GlobalScope_method_ease>`).
 
 
 ----
 ----
 
 
 .. _class_Animation_method_track_get_key_value:
 .. _class_Animation_method_track_get_key_value:
 
 
-- :ref:`Variant<class_Variant>` **track_get_key_value** **(** :ref:`int<class_int>` track_idx, :ref:`int<class_int>` key_idx **)** const
+- :ref:`Variant<class_Variant>` **track_get_key_value** **(** :ref:`int<class_int>` track_idx, :ref:`int<class_int>` key_idx **)** |const|
 
 
 Returns the value of a given key in a given track.
 Returns the value of a given key in a given track.
 
 
@@ -583,7 +600,7 @@ Returns the value of a given key in a given track.
 
 
 .. _class_Animation_method_track_get_path:
 .. _class_Animation_method_track_get_path:
 
 
-- :ref:`NodePath<class_NodePath>` **track_get_path** **(** :ref:`int<class_int>` track_idx **)** const
+- :ref:`NodePath<class_NodePath>` **track_get_path** **(** :ref:`int<class_int>` track_idx **)** |const|
 
 
 Gets the path of a track. For more information on the path format, see :ref:`track_set_path<class_Animation_method_track_set_path>`.
 Gets the path of a track. For more information on the path format, see :ref:`track_set_path<class_Animation_method_track_set_path>`.
 
 
@@ -591,7 +608,7 @@ Gets the path of a track. For more information on the path format, see :ref:`tra
 
 
 .. _class_Animation_method_track_get_type:
 .. _class_Animation_method_track_get_type:
 
 
-- :ref:`TrackType<enum_Animation_TrackType>` **track_get_type** **(** :ref:`int<class_int>` track_idx **)** const
+- :ref:`TrackType<enum_Animation_TrackType>` **track_get_type** **(** :ref:`int<class_int>` track_idx **)** |const|
 
 
 Gets the type of a track.
 Gets the type of a track.
 
 
@@ -607,7 +624,7 @@ Insert a generic key in a given track.
 
 
 .. _class_Animation_method_track_is_enabled:
 .. _class_Animation_method_track_is_enabled:
 
 
-- :ref:`bool<class_bool>` **track_is_enabled** **(** :ref:`int<class_int>` track_idx **)** const
+- :ref:`bool<class_bool>` **track_is_enabled** **(** :ref:`int<class_int>` track_idx **)** |const|
 
 
 Returns ``true`` if the track at index ``idx`` is enabled.
 Returns ``true`` if the track at index ``idx`` is enabled.
 
 
@@ -615,7 +632,7 @@ Returns ``true`` if the track at index ``idx`` is enabled.
 
 
 .. _class_Animation_method_track_is_imported:
 .. _class_Animation_method_track_is_imported:
 
 
-- :ref:`bool<class_bool>` **track_is_imported** **(** :ref:`int<class_int>` track_idx **)** const
+- :ref:`bool<class_bool>` **track_is_imported** **(** :ref:`int<class_int>` track_idx **)** |const|
 
 
 Returns ``true`` if the given track is imported. Else, return ``false``.
 Returns ``true`` if the given track is imported. Else, return ``false``.
 
 
@@ -653,11 +670,11 @@ Removes a key by index in a given track.
 
 
 ----
 ----
 
 
-.. _class_Animation_method_track_remove_key_at_position:
+.. _class_Animation_method_track_remove_key_at_time:
 
 
-- void **track_remove_key_at_position** **(** :ref:`int<class_int>` track_idx, :ref:`float<class_float>` position **)**
+- void **track_remove_key_at_time** **(** :ref:`int<class_int>` track_idx, :ref:`float<class_float>` time **)**
 
 
-Removes a key by position (seconds) in a given track.
+Removes a key at ``time`` in a given track.
 
 
 ----
 ----
 
 
@@ -705,7 +722,7 @@ Sets the time of an existing key.
 
 
 - void **track_set_key_transition** **(** :ref:`int<class_int>` track_idx, :ref:`int<class_int>` key_idx, :ref:`float<class_float>` transition **)**
 - void **track_set_key_transition** **(** :ref:`int<class_int>` track_idx, :ref:`int<class_int>` key_idx, :ref:`float<class_float>` transition **)**
 
 
-Sets the transition curve (easing) for a specific key (see the built-in math function :ref:`@GDScript.ease<class_@GDScript_method_ease>`).
+Sets the transition curve (easing) for a specific key (see the built-in math function :ref:`@GlobalScope.ease<class_@GlobalScope_method_ease>`).
 
 
 ----
 ----
 
 
@@ -721,7 +738,7 @@ Sets the value of an existing key.
 
 
 - void **track_set_path** **(** :ref:`int<class_int>` track_idx, :ref:`NodePath<class_NodePath>` path **)**
 - void **track_set_path** **(** :ref:`int<class_int>` track_idx, :ref:`NodePath<class_NodePath>` path **)**
 
 
-Sets the path of a track. Paths must be valid scene-tree paths to a node, and must be specified starting from the parent node of the node that will reproduce the animation. Tracks that control properties or bones must append their name after the path, separated by ``":"``.
+Sets the path of a track. Paths must be valid scene-tree paths to a node and must be specified starting from the parent node of the node that will reproduce the animation. Tracks that control properties or bones must append their name after the path, separated by ``":"``.
 
 
 For example, ``"character/skeleton:ankle"`` or ``"character/mesh:transform/local"``.
 For example, ``"character/skeleton:ankle"`` or ``"character/mesh:transform/local"``.
 
 
@@ -737,7 +754,7 @@ Swaps the track ``idx``'s index position with the track ``with_idx``.
 
 
 .. _class_Animation_method_transform_track_insert_key:
 .. _class_Animation_method_transform_track_insert_key:
 
 
-- :ref:`int<class_int>` **transform_track_insert_key** **(** :ref:`int<class_int>` track_idx, :ref:`float<class_float>` time, :ref:`Vector3<class_Vector3>` location, :ref:`Quat<class_Quat>` rotation, :ref:`Vector3<class_Vector3>` scale **)**
+- :ref:`int<class_int>` **transform_track_insert_key** **(** :ref:`int<class_int>` track_idx, :ref:`float<class_float>` time, :ref:`Vector3<class_Vector3>` location, :ref:`Quaternion<class_Quaternion>` rotation, :ref:`Vector3<class_Vector3>` scale **)**
 
 
 Insert a transform key for a transform track.
 Insert a transform key for a transform track.
 
 
@@ -745,15 +762,15 @@ Insert a transform key for a transform track.
 
 
 .. _class_Animation_method_transform_track_interpolate:
 .. _class_Animation_method_transform_track_interpolate:
 
 
-- :ref:`Array<class_Array>` **transform_track_interpolate** **(** :ref:`int<class_int>` track_idx, :ref:`float<class_float>` time_sec **)** const
+- :ref:`Array<class_Array>` **transform_track_interpolate** **(** :ref:`int<class_int>` track_idx, :ref:`float<class_float>` time_sec **)** |const|
 
 
-Returns the interpolated value of a transform track at a given time (in seconds). An array consisting of 3 elements: position (:ref:`Vector3<class_Vector3>`), rotation (:ref:`Quat<class_Quat>`) and scale (:ref:`Vector3<class_Vector3>`).
+Returns the interpolated value of a transform track at a given time (in seconds). An array consisting of 3 elements: position (:ref:`Vector3<class_Vector3>`), rotation (:ref:`Quaternion<class_Quaternion>`) and scale (:ref:`Vector3<class_Vector3>`).
 
 
 ----
 ----
 
 
 .. _class_Animation_method_value_track_get_key_indices:
 .. _class_Animation_method_value_track_get_key_indices:
 
 
-- :ref:`PackedInt32Array<class_PackedInt32Array>` **value_track_get_key_indices** **(** :ref:`int<class_int>` track_idx, :ref:`float<class_float>` time_sec, :ref:`float<class_float>` delta **)** const
+- :ref:`PackedInt32Array<class_PackedInt32Array>` **value_track_get_key_indices** **(** :ref:`int<class_int>` track_idx, :ref:`float<class_float>` time_sec, :ref:`float<class_float>` delta **)** |const|
 
 
 Returns all the key indices of a value track, given a position and delta time.
 Returns all the key indices of a value track, given a position and delta time.
 
 
@@ -761,15 +778,29 @@ Returns all the key indices of a value track, given a position and delta time.
 
 
 .. _class_Animation_method_value_track_get_update_mode:
 .. _class_Animation_method_value_track_get_update_mode:
 
 
-- :ref:`UpdateMode<enum_Animation_UpdateMode>` **value_track_get_update_mode** **(** :ref:`int<class_int>` track_idx **)** const
+- :ref:`UpdateMode<enum_Animation_UpdateMode>` **value_track_get_update_mode** **(** :ref:`int<class_int>` track_idx **)** |const|
 
 
 Returns the update mode of a value track.
 Returns the update mode of a value track.
 
 
 ----
 ----
 
 
+.. _class_Animation_method_value_track_interpolate:
+
+- :ref:`Variant<class_Variant>` **value_track_interpolate** **(** :ref:`int<class_int>` track_idx, :ref:`float<class_float>` time_sec **)** |const|
+
+Returns the interpolated value at the given time (in seconds). The ``track_idx`` must be the index of a value track.
+
+----
+
 .. _class_Animation_method_value_track_set_update_mode:
 .. _class_Animation_method_value_track_set_update_mode:
 
 
 - void **value_track_set_update_mode** **(** :ref:`int<class_int>` track_idx, :ref:`UpdateMode<enum_Animation_UpdateMode>` mode **)**
 - void **value_track_set_update_mode** **(** :ref:`int<class_int>` track_idx, :ref:`UpdateMode<enum_Animation_UpdateMode>` mode **)**
 
 
 Sets the update mode (see :ref:`UpdateMode<enum_Animation_UpdateMode>`) of a value track.
 Sets the update mode (see :ref:`UpdateMode<enum_Animation_UpdateMode>`) of a value track.
 
 
+.. |virtual| replace:: :abbr:`virtual (This method should typically be overridden by the user to have any effect.)`
+.. |const| replace:: :abbr:`const (This method has no side effects. It doesn't modify any of the instance's member variables.)`
+.. |vararg| replace:: :abbr:`vararg (This method accepts any number of arguments after the ones described here.)`
+.. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)`
+.. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)`
+.. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)`

+ 93 - 87
classes/class_animationnode.rst

@@ -9,7 +9,7 @@
 AnimationNode
 AnimationNode
 =============
 =============
 
 
-**Inherits:** :ref:`Resource<class_Resource>` **<** :ref:`Reference<class_Reference>` **<** :ref:`Object<class_Object>`
+**Inherits:** :ref:`Resource<class_Resource>` **<** :ref:`RefCounted<class_RefCounted>` **<** :ref:`Object<class_Object>`
 
 
 **Inherited By:** :ref:`AnimationNodeAdd2<class_AnimationNodeAdd2>`, :ref:`AnimationNodeAdd3<class_AnimationNodeAdd3>`, :ref:`AnimationNodeBlend2<class_AnimationNodeBlend2>`, :ref:`AnimationNodeBlend3<class_AnimationNodeBlend3>`, :ref:`AnimationNodeOneShot<class_AnimationNodeOneShot>`, :ref:`AnimationNodeOutput<class_AnimationNodeOutput>`, :ref:`AnimationNodeTimeScale<class_AnimationNodeTimeScale>`, :ref:`AnimationNodeTimeSeek<class_AnimationNodeTimeSeek>`, :ref:`AnimationNodeTransition<class_AnimationNodeTransition>`, :ref:`AnimationRootNode<class_AnimationRootNode>`
 **Inherited By:** :ref:`AnimationNodeAdd2<class_AnimationNodeAdd2>`, :ref:`AnimationNodeAdd3<class_AnimationNodeAdd3>`, :ref:`AnimationNodeBlend2<class_AnimationNodeBlend2>`, :ref:`AnimationNodeBlend3<class_AnimationNodeBlend3>`, :ref:`AnimationNodeOneShot<class_AnimationNodeOneShot>`, :ref:`AnimationNodeOutput<class_AnimationNodeOutput>`, :ref:`AnimationNodeTimeScale<class_AnimationNodeTimeScale>`, :ref:`AnimationNodeTimeSeek<class_AnimationNodeTimeSeek>`, :ref:`AnimationNodeTransition<class_AnimationNodeTransition>`, :ref:`AnimationRootNode<class_AnimationRootNode>`
 
 
@@ -37,43 +37,43 @@ Properties
 Methods
 Methods
 -------
 -------
 
 
-+-------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| void                                | :ref:`add_input<class_AnimationNode_method_add_input>` **(** :ref:`String<class_String>` name **)**                                                                                                                                                                                                                                                                |
-+-------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| void                                | :ref:`blend_animation<class_AnimationNode_method_blend_animation>` **(** :ref:`StringName<class_StringName>` animation, :ref:`float<class_float>` time, :ref:`float<class_float>` delta, :ref:`bool<class_bool>` seeked, :ref:`float<class_float>` blend **)**                                                                                                     |
-+-------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`float<class_float>`           | :ref:`blend_input<class_AnimationNode_method_blend_input>` **(** :ref:`int<class_int>` input_index, :ref:`float<class_float>` time, :ref:`bool<class_bool>` seek, :ref:`float<class_float>` blend, :ref:`FilterAction<enum_AnimationNode_FilterAction>` filter=0, :ref:`bool<class_bool>` optimize=true **)**                                                      |
-+-------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`float<class_float>`           | :ref:`blend_node<class_AnimationNode_method_blend_node>` **(** :ref:`StringName<class_StringName>` name, :ref:`AnimationNode<class_AnimationNode>` node, :ref:`float<class_float>` time, :ref:`bool<class_bool>` seek, :ref:`float<class_float>` blend, :ref:`FilterAction<enum_AnimationNode_FilterAction>` filter=0, :ref:`bool<class_bool>` optimize=true **)** |
-+-------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`String<class_String>`         | :ref:`get_caption<class_AnimationNode_method_get_caption>` **(** **)** virtual                                                                                                                                                                                                                                                                                     |
-+-------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`Object<class_Object>`         | :ref:`get_child_by_name<class_AnimationNode_method_get_child_by_name>` **(** :ref:`String<class_String>` name **)** virtual                                                                                                                                                                                                                                        |
-+-------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`Dictionary<class_Dictionary>` | :ref:`get_child_nodes<class_AnimationNode_method_get_child_nodes>` **(** **)** virtual                                                                                                                                                                                                                                                                             |
-+-------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`int<class_int>`               | :ref:`get_input_count<class_AnimationNode_method_get_input_count>` **(** **)** const                                                                                                                                                                                                                                                                               |
-+-------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`String<class_String>`         | :ref:`get_input_name<class_AnimationNode_method_get_input_name>` **(** :ref:`int<class_int>` input **)**                                                                                                                                                                                                                                                           |
-+-------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`Variant<class_Variant>`       | :ref:`get_parameter<class_AnimationNode_method_get_parameter>` **(** :ref:`StringName<class_StringName>` name **)** const                                                                                                                                                                                                                                          |
-+-------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`Variant<class_Variant>`       | :ref:`get_parameter_default_value<class_AnimationNode_method_get_parameter_default_value>` **(** :ref:`StringName<class_StringName>` name **)** virtual                                                                                                                                                                                                            |
-+-------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`Array<class_Array>`           | :ref:`get_parameter_list<class_AnimationNode_method_get_parameter_list>` **(** **)** virtual                                                                                                                                                                                                                                                                       |
-+-------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`bool<class_bool>`             | :ref:`has_filter<class_AnimationNode_method_has_filter>` **(** **)** virtual                                                                                                                                                                                                                                                                                       |
-+-------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`bool<class_bool>`             | :ref:`is_path_filtered<class_AnimationNode_method_is_path_filtered>` **(** :ref:`NodePath<class_NodePath>` path **)** const                                                                                                                                                                                                                                        |
-+-------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| void                                | :ref:`process<class_AnimationNode_method_process>` **(** :ref:`float<class_float>` time, :ref:`bool<class_bool>` seek **)** virtual                                                                                                                                                                                                                                |
-+-------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| void                                | :ref:`remove_input<class_AnimationNode_method_remove_input>` **(** :ref:`int<class_int>` index **)**                                                                                                                                                                                                                                                               |
-+-------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| void                                | :ref:`set_filter_path<class_AnimationNode_method_set_filter_path>` **(** :ref:`NodePath<class_NodePath>` path, :ref:`bool<class_bool>` enable **)**                                                                                                                                                                                                                |
-+-------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| void                                | :ref:`set_parameter<class_AnimationNode_method_set_parameter>` **(** :ref:`StringName<class_StringName>` name, :ref:`Variant<class_Variant>` value **)**                                                                                                                                                                                                           |
-+-------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
++-------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`String<class_String>`               | :ref:`_get_caption<class_AnimationNode_method__get_caption>` **(** **)** |virtual| |const|                                                                                                                                                                                                                                                                         |
++-------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`AnimationNode<class_AnimationNode>` | :ref:`_get_child_by_name<class_AnimationNode_method__get_child_by_name>` **(** :ref:`StringName<class_StringName>` name **)** |virtual| |const|                                                                                                                                                                                                                    |
++-------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`Dictionary<class_Dictionary>`       | :ref:`_get_child_nodes<class_AnimationNode_method__get_child_nodes>` **(** **)** |virtual| |const|                                                                                                                                                                                                                                                                 |
++-------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`Variant<class_Variant>`             | :ref:`_get_parameter_default_value<class_AnimationNode_method__get_parameter_default_value>` **(** :ref:`StringName<class_StringName>` parameter **)** |virtual| |const|                                                                                                                                                                                           |
++-------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`Array<class_Array>`                 | :ref:`_get_parameter_list<class_AnimationNode_method__get_parameter_list>` **(** **)** |virtual| |const|                                                                                                                                                                                                                                                           |
++-------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`bool<class_bool>`                   | :ref:`_has_filter<class_AnimationNode_method__has_filter>` **(** **)** |virtual| |const|                                                                                                                                                                                                                                                                           |
++-------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`float<class_float>`                 | :ref:`_process<class_AnimationNode_method__process>` **(** :ref:`float<class_float>` time, :ref:`bool<class_bool>` seek **)** |virtual| |const|                                                                                                                                                                                                                    |
++-------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| void                                      | :ref:`add_input<class_AnimationNode_method_add_input>` **(** :ref:`String<class_String>` name **)**                                                                                                                                                                                                                                                                |
++-------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| void                                      | :ref:`blend_animation<class_AnimationNode_method_blend_animation>` **(** :ref:`StringName<class_StringName>` animation, :ref:`float<class_float>` time, :ref:`float<class_float>` delta, :ref:`bool<class_bool>` seeked, :ref:`float<class_float>` blend **)**                                                                                                     |
++-------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`float<class_float>`                 | :ref:`blend_input<class_AnimationNode_method_blend_input>` **(** :ref:`int<class_int>` input_index, :ref:`float<class_float>` time, :ref:`bool<class_bool>` seek, :ref:`float<class_float>` blend, :ref:`FilterAction<enum_AnimationNode_FilterAction>` filter=0, :ref:`bool<class_bool>` optimize=true **)**                                                      |
++-------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`float<class_float>`                 | :ref:`blend_node<class_AnimationNode_method_blend_node>` **(** :ref:`StringName<class_StringName>` name, :ref:`AnimationNode<class_AnimationNode>` node, :ref:`float<class_float>` time, :ref:`bool<class_bool>` seek, :ref:`float<class_float>` blend, :ref:`FilterAction<enum_AnimationNode_FilterAction>` filter=0, :ref:`bool<class_bool>` optimize=true **)** |
++-------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`int<class_int>`                     | :ref:`get_input_count<class_AnimationNode_method_get_input_count>` **(** **)** |const|                                                                                                                                                                                                                                                                             |
++-------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`String<class_String>`               | :ref:`get_input_name<class_AnimationNode_method_get_input_name>` **(** :ref:`int<class_int>` input **)**                                                                                                                                                                                                                                                           |
++-------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`Variant<class_Variant>`             | :ref:`get_parameter<class_AnimationNode_method_get_parameter>` **(** :ref:`StringName<class_StringName>` name **)** |const|                                                                                                                                                                                                                                        |
++-------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`bool<class_bool>`                   | :ref:`is_path_filtered<class_AnimationNode_method_is_path_filtered>` **(** :ref:`NodePath<class_NodePath>` path **)** |const|                                                                                                                                                                                                                                      |
++-------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| void                                      | :ref:`remove_input<class_AnimationNode_method_remove_input>` **(** :ref:`int<class_int>` index **)**                                                                                                                                                                                                                                                               |
++-------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| void                                      | :ref:`set_filter_path<class_AnimationNode_method_set_filter_path>` **(** :ref:`NodePath<class_NodePath>` path, :ref:`bool<class_bool>` enable **)**                                                                                                                                                                                                                |
++-------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| void                                      | :ref:`set_parameter<class_AnimationNode_method_set_parameter>` **(** :ref:`StringName<class_StringName>` name, :ref:`Variant<class_Variant>` value **)**                                                                                                                                                                                                           |
++-------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
 
 
 Signals
 Signals
 -------
 -------
@@ -133,127 +133,127 @@ If ``true``, filtering is enabled.
 Method Descriptions
 Method Descriptions
 -------------------
 -------------------
 
 
-.. _class_AnimationNode_method_add_input:
+.. _class_AnimationNode_method__get_caption:
 
 
-- void **add_input** **(** :ref:`String<class_String>` name **)**
+- :ref:`String<class_String>` **_get_caption** **(** **)** |virtual| |const|
 
 
-Adds an input to the node. This is only useful for nodes created for use in an :ref:`AnimationNodeBlendTree<class_AnimationNodeBlendTree>`.
+Gets the text caption for this node (used by some editors).
 
 
 ----
 ----
 
 
-.. _class_AnimationNode_method_blend_animation:
+.. _class_AnimationNode_method__get_child_by_name:
 
 
-- void **blend_animation** **(** :ref:`StringName<class_StringName>` animation, :ref:`float<class_float>` time, :ref:`float<class_float>` delta, :ref:`bool<class_bool>` seeked, :ref:`float<class_float>` blend **)**
+- :ref:`AnimationNode<class_AnimationNode>` **_get_child_by_name** **(** :ref:`StringName<class_StringName>` name **)** |virtual| |const|
 
 
-Blend an animation by ``blend`` amount (name must be valid in the linked :ref:`AnimationPlayer<class_AnimationPlayer>`). A ``time`` and ``delta`` may be passed, as well as whether ``seek`` happened.
+Gets a child node by index (used by editors inheriting from :ref:`AnimationRootNode<class_AnimationRootNode>`).
 
 
 ----
 ----
 
 
-.. _class_AnimationNode_method_blend_input:
+.. _class_AnimationNode_method__get_child_nodes:
 
 
-- :ref:`float<class_float>` **blend_input** **(** :ref:`int<class_int>` input_index, :ref:`float<class_float>` time, :ref:`bool<class_bool>` seek, :ref:`float<class_float>` blend, :ref:`FilterAction<enum_AnimationNode_FilterAction>` filter=0, :ref:`bool<class_bool>` optimize=true **)**
+- :ref:`Dictionary<class_Dictionary>` **_get_child_nodes** **(** **)** |virtual| |const|
 
 
-Blend an input. This is only useful for nodes created for an :ref:`AnimationNodeBlendTree<class_AnimationNodeBlendTree>`. The ``time`` parameter is a relative delta, unless ``seek`` is ``true``, in which case it is absolute. A filter mode may be optionally passed (see :ref:`FilterAction<enum_AnimationNode_FilterAction>` for options).
+Gets all children nodes in order as a ``name: node`` dictionary. Only useful when inheriting :ref:`AnimationRootNode<class_AnimationRootNode>`.
 
 
 ----
 ----
 
 
-.. _class_AnimationNode_method_blend_node:
+.. _class_AnimationNode_method__get_parameter_default_value:
 
 
-- :ref:`float<class_float>` **blend_node** **(** :ref:`StringName<class_StringName>` name, :ref:`AnimationNode<class_AnimationNode>` node, :ref:`float<class_float>` time, :ref:`bool<class_bool>` seek, :ref:`float<class_float>` blend, :ref:`FilterAction<enum_AnimationNode_FilterAction>` filter=0, :ref:`bool<class_bool>` optimize=true **)**
+- :ref:`Variant<class_Variant>` **_get_parameter_default_value** **(** :ref:`StringName<class_StringName>` parameter **)** |virtual| |const|
 
 
-Blend another animation node (in case this node contains children animation nodes). This function is only useful if you inherit from :ref:`AnimationRootNode<class_AnimationRootNode>` instead, else editors will not display your node for addition.
+Gets the default value of a parameter. Parameters are custom local memory used for your nodes, given a resource can be reused in multiple trees.
 
 
 ----
 ----
 
 
-.. _class_AnimationNode_method_get_caption:
+.. _class_AnimationNode_method__get_parameter_list:
 
 
-- :ref:`String<class_String>` **get_caption** **(** **)** virtual
+- :ref:`Array<class_Array>` **_get_parameter_list** **(** **)** |virtual| |const|
 
 
-Gets the text caption for this node (used by some editors).
+Gets the property information for parameter. Parameters are custom local memory used for your nodes, given a resource can be reused in multiple trees. Format is similar to :ref:`Object.get_property_list<class_Object_method_get_property_list>`.
 
 
 ----
 ----
 
 
-.. _class_AnimationNode_method_get_child_by_name:
+.. _class_AnimationNode_method__has_filter:
 
 
-- :ref:`Object<class_Object>` **get_child_by_name** **(** :ref:`String<class_String>` name **)** virtual
+- :ref:`bool<class_bool>` **_has_filter** **(** **)** |virtual| |const|
 
 
-Gets a child node by index (used by editors inheriting from :ref:`AnimationRootNode<class_AnimationRootNode>`).
+Returns ``true`` whether you want the blend tree editor to display filter editing on this node.
 
 
 ----
 ----
 
 
-.. _class_AnimationNode_method_get_child_nodes:
+.. _class_AnimationNode_method__process:
 
 
-- :ref:`Dictionary<class_Dictionary>` **get_child_nodes** **(** **)** virtual
+- :ref:`float<class_float>` **_process** **(** :ref:`float<class_float>` time, :ref:`bool<class_bool>` seek **)** |virtual| |const|
 
 
-Gets all children nodes in order as a ``name: node`` dictionary. Only useful when inheriting :ref:`AnimationRootNode<class_AnimationRootNode>`.
+User-defined callback called when a custom node is processed. The ``time`` parameter is a relative delta, unless ``seek`` is ``true``, in which case it is absolute.
+
+Here, call the :ref:`blend_input<class_AnimationNode_method_blend_input>`, :ref:`blend_node<class_AnimationNode_method_blend_node>` or :ref:`blend_animation<class_AnimationNode_method_blend_animation>` functions. You can also use :ref:`get_parameter<class_AnimationNode_method_get_parameter>` and :ref:`set_parameter<class_AnimationNode_method_set_parameter>` to modify local memory.
+
+This function should return the time left for the current animation to finish (if unsure, pass the value from the main blend being called).
 
 
 ----
 ----
 
 
-.. _class_AnimationNode_method_get_input_count:
+.. _class_AnimationNode_method_add_input:
 
 
-- :ref:`int<class_int>` **get_input_count** **(** **)** const
+- void **add_input** **(** :ref:`String<class_String>` name **)**
 
 
-Amount of inputs in this node, only useful for nodes that go into :ref:`AnimationNodeBlendTree<class_AnimationNodeBlendTree>`.
+Adds an input to the node. This is only useful for nodes created for use in an :ref:`AnimationNodeBlendTree<class_AnimationNodeBlendTree>`.
 
 
 ----
 ----
 
 
-.. _class_AnimationNode_method_get_input_name:
+.. _class_AnimationNode_method_blend_animation:
 
 
-- :ref:`String<class_String>` **get_input_name** **(** :ref:`int<class_int>` input **)**
+- void **blend_animation** **(** :ref:`StringName<class_StringName>` animation, :ref:`float<class_float>` time, :ref:`float<class_float>` delta, :ref:`bool<class_bool>` seeked, :ref:`float<class_float>` blend **)**
 
 
-Gets the name of an input by index.
+Blend an animation by ``blend`` amount (name must be valid in the linked :ref:`AnimationPlayer<class_AnimationPlayer>`). A ``time`` and ``delta`` may be passed, as well as whether ``seek`` happened.
 
 
 ----
 ----
 
 
-.. _class_AnimationNode_method_get_parameter:
+.. _class_AnimationNode_method_blend_input:
 
 
-- :ref:`Variant<class_Variant>` **get_parameter** **(** :ref:`StringName<class_StringName>` name **)** const
+- :ref:`float<class_float>` **blend_input** **(** :ref:`int<class_int>` input_index, :ref:`float<class_float>` time, :ref:`bool<class_bool>` seek, :ref:`float<class_float>` blend, :ref:`FilterAction<enum_AnimationNode_FilterAction>` filter=0, :ref:`bool<class_bool>` optimize=true **)**
 
 
-Gets the value of a parameter. Parameters are custom local memory used for your nodes, given a resource can be reused in multiple trees.
+Blend an input. This is only useful for nodes created for an :ref:`AnimationNodeBlendTree<class_AnimationNodeBlendTree>`. The ``time`` parameter is a relative delta, unless ``seek`` is ``true``, in which case it is absolute. A filter mode may be optionally passed (see :ref:`FilterAction<enum_AnimationNode_FilterAction>` for options).
 
 
 ----
 ----
 
 
-.. _class_AnimationNode_method_get_parameter_default_value:
+.. _class_AnimationNode_method_blend_node:
 
 
-- :ref:`Variant<class_Variant>` **get_parameter_default_value** **(** :ref:`StringName<class_StringName>` name **)** virtual
+- :ref:`float<class_float>` **blend_node** **(** :ref:`StringName<class_StringName>` name, :ref:`AnimationNode<class_AnimationNode>` node, :ref:`float<class_float>` time, :ref:`bool<class_bool>` seek, :ref:`float<class_float>` blend, :ref:`FilterAction<enum_AnimationNode_FilterAction>` filter=0, :ref:`bool<class_bool>` optimize=true **)**
 
 
-Gets the default value of a parameter. Parameters are custom local memory used for your nodes, given a resource can be reused in multiple trees.
+Blend another animation node (in case this node contains children animation nodes). This function is only useful if you inherit from :ref:`AnimationRootNode<class_AnimationRootNode>` instead, else editors will not display your node for addition.
 
 
 ----
 ----
 
 
-.. _class_AnimationNode_method_get_parameter_list:
+.. _class_AnimationNode_method_get_input_count:
 
 
-- :ref:`Array<class_Array>` **get_parameter_list** **(** **)** virtual
+- :ref:`int<class_int>` **get_input_count** **(** **)** |const|
 
 
-Gets the property information for parameter. Parameters are custom local memory used for your nodes, given a resource can be reused in multiple trees. Format is similar to :ref:`Object.get_property_list<class_Object_method_get_property_list>`.
+Amount of inputs in this node, only useful for nodes that go into :ref:`AnimationNodeBlendTree<class_AnimationNodeBlendTree>`.
 
 
 ----
 ----
 
 
-.. _class_AnimationNode_method_has_filter:
+.. _class_AnimationNode_method_get_input_name:
 
 
-- :ref:`bool<class_bool>` **has_filter** **(** **)** virtual
+- :ref:`String<class_String>` **get_input_name** **(** :ref:`int<class_int>` input **)**
 
 
-Returns ``true`` whether you want the blend tree editor to display filter editing on this node.
+Gets the name of an input by index.
 
 
 ----
 ----
 
 
-.. _class_AnimationNode_method_is_path_filtered:
+.. _class_AnimationNode_method_get_parameter:
 
 
-- :ref:`bool<class_bool>` **is_path_filtered** **(** :ref:`NodePath<class_NodePath>` path **)** const
+- :ref:`Variant<class_Variant>` **get_parameter** **(** :ref:`StringName<class_StringName>` name **)** |const|
 
 
-Returns ``true`` whether a given path is filtered.
+Gets the value of a parameter. Parameters are custom local memory used for your nodes, given a resource can be reused in multiple trees.
 
 
 ----
 ----
 
 
-.. _class_AnimationNode_method_process:
-
-- void **process** **(** :ref:`float<class_float>` time, :ref:`bool<class_bool>` seek **)** virtual
-
-User-defined callback called when a custom node is processed. The ``time`` parameter is a relative delta, unless ``seek`` is ``true``, in which case it is absolute.
+.. _class_AnimationNode_method_is_path_filtered:
 
 
-Here, call the :ref:`blend_input<class_AnimationNode_method_blend_input>`, :ref:`blend_node<class_AnimationNode_method_blend_node>` or :ref:`blend_animation<class_AnimationNode_method_blend_animation>` functions. You can also use :ref:`get_parameter<class_AnimationNode_method_get_parameter>` and :ref:`set_parameter<class_AnimationNode_method_set_parameter>` to modify local memory.
+- :ref:`bool<class_bool>` **is_path_filtered** **(** :ref:`NodePath<class_NodePath>` path **)** |const|
 
 
-This function should return the time left for the current animation to finish (if unsure, pass the value from the main blend being called).
+Returns ``true`` whether a given path is filtered.
 
 
 ----
 ----
 
 
@@ -279,3 +279,9 @@ Adds or removes a path for the filter.
 
 
 Sets a custom parameter. These are used as local storage, because resources can be reused across the tree or scenes.
 Sets a custom parameter. These are used as local storage, because resources can be reused across the tree or scenes.
 
 
+.. |virtual| replace:: :abbr:`virtual (This method should typically be overridden by the user to have any effect.)`
+.. |const| replace:: :abbr:`const (This method has no side effects. It doesn't modify any of the instance's member variables.)`
+.. |vararg| replace:: :abbr:`vararg (This method accepts any number of arguments after the ones described here.)`
+.. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)`
+.. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)`
+.. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)`

+ 7 - 1
classes/class_animationnodeadd2.rst

@@ -9,7 +9,7 @@
 AnimationNodeAdd2
 AnimationNodeAdd2
 =================
 =================
 
 
-**Inherits:** :ref:`AnimationNode<class_AnimationNode>` **<** :ref:`Resource<class_Resource>` **<** :ref:`Reference<class_Reference>` **<** :ref:`Object<class_Object>`
+**Inherits:** :ref:`AnimationNode<class_AnimationNode>` **<** :ref:`Resource<class_Resource>` **<** :ref:`RefCounted<class_RefCounted>` **<** :ref:`Object<class_Object>`
 
 
 Blends two animations additively inside of an :ref:`AnimationNodeBlendTree<class_AnimationNodeBlendTree>`.
 Blends two animations additively inside of an :ref:`AnimationNodeBlendTree<class_AnimationNodeBlendTree>`.
 
 
@@ -47,3 +47,9 @@ Property Descriptions
 
 
 If ``true``, sets the ``optimization`` to ``false`` when calling :ref:`AnimationNode.blend_input<class_AnimationNode_method_blend_input>`, forcing the blended animations to update every frame.
 If ``true``, sets the ``optimization`` to ``false`` when calling :ref:`AnimationNode.blend_input<class_AnimationNode_method_blend_input>`, forcing the blended animations to update every frame.
 
 
+.. |virtual| replace:: :abbr:`virtual (This method should typically be overridden by the user to have any effect.)`
+.. |const| replace:: :abbr:`const (This method has no side effects. It doesn't modify any of the instance's member variables.)`
+.. |vararg| replace:: :abbr:`vararg (This method accepts any number of arguments after the ones described here.)`
+.. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)`
+.. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)`
+.. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)`

+ 9 - 1
classes/class_animationnodeadd3.rst

@@ -9,7 +9,7 @@
 AnimationNodeAdd3
 AnimationNodeAdd3
 =================
 =================
 
 
-**Inherits:** :ref:`AnimationNode<class_AnimationNode>` **<** :ref:`Resource<class_Resource>` **<** :ref:`Reference<class_Reference>` **<** :ref:`Object<class_Object>`
+**Inherits:** :ref:`AnimationNode<class_AnimationNode>` **<** :ref:`Resource<class_Resource>` **<** :ref:`RefCounted<class_RefCounted>` **<** :ref:`Object<class_Object>`
 
 
 Blends two of three animations additively inside of an :ref:`AnimationNodeBlendTree<class_AnimationNodeBlendTree>`.
 Blends two of three animations additively inside of an :ref:`AnimationNodeBlendTree<class_AnimationNodeBlendTree>`.
 
 
@@ -31,6 +31,8 @@ Tutorials
 
 
 - :doc:`../tutorials/animation/animation_tree`
 - :doc:`../tutorials/animation/animation_tree`
 
 
+- `Third Person Shooter Demo <https://godotengine.org/asset-library/asset/678>`__
+
 Properties
 Properties
 ----------
 ----------
 
 
@@ -55,3 +57,9 @@ Property Descriptions
 
 
 If ``true``, sets the ``optimization`` to ``false`` when calling :ref:`AnimationNode.blend_input<class_AnimationNode_method_blend_input>`, forcing the blended animations to update every frame.
 If ``true``, sets the ``optimization`` to ``false`` when calling :ref:`AnimationNode.blend_input<class_AnimationNode_method_blend_input>`, forcing the blended animations to update every frame.
 
 
+.. |virtual| replace:: :abbr:`virtual (This method should typically be overridden by the user to have any effect.)`
+.. |const| replace:: :abbr:`const (This method has no side effects. It doesn't modify any of the instance's member variables.)`
+.. |vararg| replace:: :abbr:`vararg (This method accepts any number of arguments after the ones described here.)`
+.. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)`
+.. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)`
+.. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)`

+ 13 - 3
classes/class_animationnodeanimation.rst

@@ -9,7 +9,7 @@
 AnimationNodeAnimation
 AnimationNodeAnimation
 ======================
 ======================
 
 
-**Inherits:** :ref:`AnimationRootNode<class_AnimationRootNode>` **<** :ref:`AnimationNode<class_AnimationNode>` **<** :ref:`Resource<class_Resource>` **<** :ref:`Reference<class_Reference>` **<** :ref:`Object<class_Object>`
+**Inherits:** :ref:`AnimationRootNode<class_AnimationRootNode>` **<** :ref:`AnimationNode<class_AnimationNode>` **<** :ref:`Resource<class_Resource>` **<** :ref:`RefCounted<class_RefCounted>` **<** :ref:`Object<class_Object>`
 
 
 Input animation to use in an :ref:`AnimationNodeBlendTree<class_AnimationNodeBlendTree>`.
 Input animation to use in an :ref:`AnimationNodeBlendTree<class_AnimationNodeBlendTree>`.
 
 
@@ -23,11 +23,15 @@ Tutorials
 
 
 - :doc:`../tutorials/animation/animation_tree`
 - :doc:`../tutorials/animation/animation_tree`
 
 
+- `3D Platformer Demo <https://godotengine.org/asset-library/asset/125>`__
+
+- `Third Person Shooter Demo <https://godotengine.org/asset-library/asset/678>`__
+
 Properties
 Properties
 ----------
 ----------
 
 
 +-------------------------------------+-------------------------------------------------------------------+---------+
 +-------------------------------------+-------------------------------------------------------------------+---------+
-| :ref:`StringName<class_StringName>` | :ref:`animation<class_AnimationNodeAnimation_property_animation>` | ``@""`` |
+| :ref:`StringName<class_StringName>` | :ref:`animation<class_AnimationNodeAnimation_property_animation>` | ``&""`` |
 +-------------------------------------+-------------------------------------------------------------------+---------+
 +-------------------------------------+-------------------------------------------------------------------+---------+
 
 
 Property Descriptions
 Property Descriptions
@@ -38,7 +42,7 @@ Property Descriptions
 - :ref:`StringName<class_StringName>` **animation**
 - :ref:`StringName<class_StringName>` **animation**
 
 
 +-----------+----------------------+
 +-----------+----------------------+
-| *Default* | ``@""``              |
+| *Default* | ``&""``              |
 +-----------+----------------------+
 +-----------+----------------------+
 | *Setter*  | set_animation(value) |
 | *Setter*  | set_animation(value) |
 +-----------+----------------------+
 +-----------+----------------------+
@@ -47,3 +51,9 @@ Property Descriptions
 
 
 Animation to use as an output. It is one of the animations provided by :ref:`AnimationTree.anim_player<class_AnimationTree_property_anim_player>`.
 Animation to use as an output. It is one of the animations provided by :ref:`AnimationTree.anim_player<class_AnimationTree_property_anim_player>`.
 
 
+.. |virtual| replace:: :abbr:`virtual (This method should typically be overridden by the user to have any effect.)`
+.. |const| replace:: :abbr:`const (This method has no side effects. It doesn't modify any of the instance's member variables.)`
+.. |vararg| replace:: :abbr:`vararg (This method accepts any number of arguments after the ones described here.)`
+.. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)`
+.. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)`
+.. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)`

+ 11 - 1
classes/class_animationnodeblend2.rst

@@ -9,7 +9,7 @@
 AnimationNodeBlend2
 AnimationNodeBlend2
 ===================
 ===================
 
 
-**Inherits:** :ref:`AnimationNode<class_AnimationNode>` **<** :ref:`Resource<class_Resource>` **<** :ref:`Reference<class_Reference>` **<** :ref:`Object<class_Object>`
+**Inherits:** :ref:`AnimationNode<class_AnimationNode>` **<** :ref:`Resource<class_Resource>` **<** :ref:`RefCounted<class_RefCounted>` **<** :ref:`Object<class_Object>`
 
 
 Blends two animations linearly inside of an :ref:`AnimationNodeBlendTree<class_AnimationNodeBlendTree>`.
 Blends two animations linearly inside of an :ref:`AnimationNodeBlendTree<class_AnimationNodeBlendTree>`.
 
 
@@ -23,6 +23,10 @@ Tutorials
 
 
 - :doc:`../tutorials/animation/animation_tree`
 - :doc:`../tutorials/animation/animation_tree`
 
 
+- `3D Platformer Demo <https://godotengine.org/asset-library/asset/125>`__
+
+- `Third Person Shooter Demo <https://godotengine.org/asset-library/asset/678>`__
+
 Properties
 Properties
 ----------
 ----------
 
 
@@ -47,3 +51,9 @@ Property Descriptions
 
 
 If ``true``, sets the ``optimization`` to ``false`` when calling :ref:`AnimationNode.blend_input<class_AnimationNode_method_blend_input>`, forcing the blended animations to update every frame.
 If ``true``, sets the ``optimization`` to ``false`` when calling :ref:`AnimationNode.blend_input<class_AnimationNode_method_blend_input>`, forcing the blended animations to update every frame.
 
 
+.. |virtual| replace:: :abbr:`virtual (This method should typically be overridden by the user to have any effect.)`
+.. |const| replace:: :abbr:`const (This method has no side effects. It doesn't modify any of the instance's member variables.)`
+.. |vararg| replace:: :abbr:`vararg (This method accepts any number of arguments after the ones described here.)`
+.. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)`
+.. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)`
+.. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)`

+ 7 - 1
classes/class_animationnodeblend3.rst

@@ -9,7 +9,7 @@
 AnimationNodeBlend3
 AnimationNodeBlend3
 ===================
 ===================
 
 
-**Inherits:** :ref:`AnimationNode<class_AnimationNode>` **<** :ref:`Resource<class_Resource>` **<** :ref:`Reference<class_Reference>` **<** :ref:`Object<class_Object>`
+**Inherits:** :ref:`AnimationNode<class_AnimationNode>` **<** :ref:`Resource<class_Resource>` **<** :ref:`RefCounted<class_RefCounted>` **<** :ref:`Object<class_Object>`
 
 
 Blends two of three animations linearly inside of an :ref:`AnimationNodeBlendTree<class_AnimationNodeBlendTree>`.
 Blends two of three animations linearly inside of an :ref:`AnimationNodeBlendTree<class_AnimationNodeBlendTree>`.
 
 
@@ -55,3 +55,9 @@ Property Descriptions
 
 
 If ``true``, sets the ``optimization`` to ``false`` when calling :ref:`AnimationNode.blend_input<class_AnimationNode_method_blend_input>`, forcing the blended animations to update every frame.
 If ``true``, sets the ``optimization`` to ``false`` when calling :ref:`AnimationNode.blend_input<class_AnimationNode_method_blend_input>`, forcing the blended animations to update every frame.
 
 
+.. |virtual| replace:: :abbr:`virtual (This method should typically be overridden by the user to have any effect.)`
+.. |const| replace:: :abbr:`const (This method has no side effects. It doesn't modify any of the instance's member variables.)`
+.. |vararg| replace:: :abbr:`vararg (This method accepts any number of arguments after the ones described here.)`
+.. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)`
+.. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)`
+.. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)`

+ 13 - 7
classes/class_animationnodeblendspace1d.rst

@@ -9,7 +9,7 @@
 AnimationNodeBlendSpace1D
 AnimationNodeBlendSpace1D
 =========================
 =========================
 
 
-**Inherits:** :ref:`AnimationRootNode<class_AnimationRootNode>` **<** :ref:`AnimationNode<class_AnimationNode>` **<** :ref:`Resource<class_Resource>` **<** :ref:`Reference<class_Reference>` **<** :ref:`Object<class_Object>`
+**Inherits:** :ref:`AnimationRootNode<class_AnimationRootNode>` **<** :ref:`AnimationNode<class_AnimationNode>` **<** :ref:`Resource<class_Resource>` **<** :ref:`RefCounted<class_RefCounted>` **<** :ref:`Object<class_Object>`
 
 
 Blends linearly between two of any number of :ref:`AnimationNode<class_AnimationNode>` of any type placed on a virtual axis.
 Blends linearly between two of any number of :ref:`AnimationNode<class_AnimationNode>` of any type placed on a virtual axis.
 
 
@@ -48,11 +48,11 @@ Methods
 +---------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
 +---------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
 | void                                              | :ref:`add_blend_point<class_AnimationNodeBlendSpace1D_method_add_blend_point>` **(** :ref:`AnimationRootNode<class_AnimationRootNode>` node, :ref:`float<class_float>` pos, :ref:`int<class_int>` at_index=-1 **)** |
 | void                                              | :ref:`add_blend_point<class_AnimationNodeBlendSpace1D_method_add_blend_point>` **(** :ref:`AnimationRootNode<class_AnimationRootNode>` node, :ref:`float<class_float>` pos, :ref:`int<class_int>` at_index=-1 **)** |
 +---------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
 +---------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`int<class_int>`                             | :ref:`get_blend_point_count<class_AnimationNodeBlendSpace1D_method_get_blend_point_count>` **(** **)** const                                                                                                        |
+| :ref:`int<class_int>`                             | :ref:`get_blend_point_count<class_AnimationNodeBlendSpace1D_method_get_blend_point_count>` **(** **)** |const|                                                                                                      |
 +---------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
 +---------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`AnimationRootNode<class_AnimationRootNode>` | :ref:`get_blend_point_node<class_AnimationNodeBlendSpace1D_method_get_blend_point_node>` **(** :ref:`int<class_int>` point **)** const                                                                              |
+| :ref:`AnimationRootNode<class_AnimationRootNode>` | :ref:`get_blend_point_node<class_AnimationNodeBlendSpace1D_method_get_blend_point_node>` **(** :ref:`int<class_int>` point **)** |const|                                                                            |
 +---------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
 +---------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`float<class_float>`                         | :ref:`get_blend_point_position<class_AnimationNodeBlendSpace1D_method_get_blend_point_position>` **(** :ref:`int<class_int>` point **)** const                                                                      |
+| :ref:`float<class_float>`                         | :ref:`get_blend_point_position<class_AnimationNodeBlendSpace1D_method_get_blend_point_position>` **(** :ref:`int<class_int>` point **)** |const|                                                                    |
 +---------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
 +---------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
 | void                                              | :ref:`remove_blend_point<class_AnimationNodeBlendSpace1D_method_remove_blend_point>` **(** :ref:`int<class_int>` point **)**                                                                                        |
 | void                                              | :ref:`remove_blend_point<class_AnimationNodeBlendSpace1D_method_remove_blend_point>` **(** :ref:`int<class_int>` point **)**                                                                                        |
 +---------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
 +---------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
@@ -139,7 +139,7 @@ Adds a new point that represents a ``node`` on the virtual axis at a given posit
 
 
 .. _class_AnimationNodeBlendSpace1D_method_get_blend_point_count:
 .. _class_AnimationNodeBlendSpace1D_method_get_blend_point_count:
 
 
-- :ref:`int<class_int>` **get_blend_point_count** **(** **)** const
+- :ref:`int<class_int>` **get_blend_point_count** **(** **)** |const|
 
 
 Returns the number of points on the blend axis.
 Returns the number of points on the blend axis.
 
 
@@ -147,7 +147,7 @@ Returns the number of points on the blend axis.
 
 
 .. _class_AnimationNodeBlendSpace1D_method_get_blend_point_node:
 .. _class_AnimationNodeBlendSpace1D_method_get_blend_point_node:
 
 
-- :ref:`AnimationRootNode<class_AnimationRootNode>` **get_blend_point_node** **(** :ref:`int<class_int>` point **)** const
+- :ref:`AnimationRootNode<class_AnimationRootNode>` **get_blend_point_node** **(** :ref:`int<class_int>` point **)** |const|
 
 
 Returns the :ref:`AnimationNode<class_AnimationNode>` referenced by the point at index ``point``.
 Returns the :ref:`AnimationNode<class_AnimationNode>` referenced by the point at index ``point``.
 
 
@@ -155,7 +155,7 @@ Returns the :ref:`AnimationNode<class_AnimationNode>` referenced by the point at
 
 
 .. _class_AnimationNodeBlendSpace1D_method_get_blend_point_position:
 .. _class_AnimationNodeBlendSpace1D_method_get_blend_point_position:
 
 
-- :ref:`float<class_float>` **get_blend_point_position** **(** :ref:`int<class_int>` point **)** const
+- :ref:`float<class_float>` **get_blend_point_position** **(** :ref:`int<class_int>` point **)** |const|
 
 
 Returns the position of the point at index ``point``.
 Returns the position of the point at index ``point``.
 
 
@@ -183,3 +183,9 @@ Changes the :ref:`AnimationNode<class_AnimationNode>` referenced by the point at
 
 
 Updates the position of the point at index ``point`` on the blend axis.
 Updates the position of the point at index ``point`` on the blend axis.
 
 
+.. |virtual| replace:: :abbr:`virtual (This method should typically be overridden by the user to have any effect.)`
+.. |const| replace:: :abbr:`const (This method has no side effects. It doesn't modify any of the instance's member variables.)`
+.. |vararg| replace:: :abbr:`vararg (This method accepts any number of arguments after the ones described here.)`
+.. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)`
+.. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)`
+.. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)`

+ 47 - 39
classes/class_animationnodeblendspace2d.rst

@@ -9,7 +9,7 @@
 AnimationNodeBlendSpace2D
 AnimationNodeBlendSpace2D
 =========================
 =========================
 
 
-**Inherits:** :ref:`AnimationRootNode<class_AnimationRootNode>` **<** :ref:`AnimationNode<class_AnimationNode>` **<** :ref:`Resource<class_Resource>` **<** :ref:`Reference<class_Reference>` **<** :ref:`Object<class_Object>`
+**Inherits:** :ref:`AnimationRootNode<class_AnimationRootNode>` **<** :ref:`AnimationNode<class_AnimationNode>` **<** :ref:`Resource<class_Resource>` **<** :ref:`RefCounted<class_RefCounted>` **<** :ref:`Object<class_Object>`
 
 
 Blends linearly between three :ref:`AnimationNode<class_AnimationNode>` of any type placed in a 2D space.
 Blends linearly between three :ref:`AnimationNode<class_AnimationNode>` of any type placed in a 2D space.
 
 
@@ -27,24 +27,26 @@ Tutorials
 
 
 - :doc:`../tutorials/animation/animation_tree`
 - :doc:`../tutorials/animation/animation_tree`
 
 
+- `Third Person Shooter Demo <https://godotengine.org/asset-library/asset/678>`__
+
 Properties
 Properties
 ----------
 ----------
 
 
-+------------------------------------------------------------+--------------------------------------------------------------------------------+-------------------------+
-| :ref:`bool<class_bool>`                                    | :ref:`auto_triangles<class_AnimationNodeBlendSpace2D_property_auto_triangles>` | ``true``                |
-+------------------------------------------------------------+--------------------------------------------------------------------------------+-------------------------+
-| :ref:`BlendMode<enum_AnimationNodeBlendSpace2D_BlendMode>` | :ref:`blend_mode<class_AnimationNodeBlendSpace2D_property_blend_mode>`         | ``0``                   |
-+------------------------------------------------------------+--------------------------------------------------------------------------------+-------------------------+
-| :ref:`Vector2<class_Vector2>`                              | :ref:`max_space<class_AnimationNodeBlendSpace2D_property_max_space>`           | ``Vector2( 1, 1 )``     |
-+------------------------------------------------------------+--------------------------------------------------------------------------------+-------------------------+
-| :ref:`Vector2<class_Vector2>`                              | :ref:`min_space<class_AnimationNodeBlendSpace2D_property_min_space>`           | ``Vector2( -1, -1 )``   |
-+------------------------------------------------------------+--------------------------------------------------------------------------------+-------------------------+
-| :ref:`Vector2<class_Vector2>`                              | :ref:`snap<class_AnimationNodeBlendSpace2D_property_snap>`                     | ``Vector2( 0.1, 0.1 )`` |
-+------------------------------------------------------------+--------------------------------------------------------------------------------+-------------------------+
-| :ref:`String<class_String>`                                | :ref:`x_label<class_AnimationNodeBlendSpace2D_property_x_label>`               | ``"x"``                 |
-+------------------------------------------------------------+--------------------------------------------------------------------------------+-------------------------+
-| :ref:`String<class_String>`                                | :ref:`y_label<class_AnimationNodeBlendSpace2D_property_y_label>`               | ``"y"``                 |
-+------------------------------------------------------------+--------------------------------------------------------------------------------+-------------------------+
++------------------------------------------------------------+--------------------------------------------------------------------------------+-----------------------+
+| :ref:`bool<class_bool>`                                    | :ref:`auto_triangles<class_AnimationNodeBlendSpace2D_property_auto_triangles>` | ``true``              |
++------------------------------------------------------------+--------------------------------------------------------------------------------+-----------------------+
+| :ref:`BlendMode<enum_AnimationNodeBlendSpace2D_BlendMode>` | :ref:`blend_mode<class_AnimationNodeBlendSpace2D_property_blend_mode>`         | ``0``                 |
++------------------------------------------------------------+--------------------------------------------------------------------------------+-----------------------+
+| :ref:`Vector2<class_Vector2>`                              | :ref:`max_space<class_AnimationNodeBlendSpace2D_property_max_space>`           | ``Vector2(1, 1)``     |
++------------------------------------------------------------+--------------------------------------------------------------------------------+-----------------------+
+| :ref:`Vector2<class_Vector2>`                              | :ref:`min_space<class_AnimationNodeBlendSpace2D_property_min_space>`           | ``Vector2(-1, -1)``   |
++------------------------------------------------------------+--------------------------------------------------------------------------------+-----------------------+
+| :ref:`Vector2<class_Vector2>`                              | :ref:`snap<class_AnimationNodeBlendSpace2D_property_snap>`                     | ``Vector2(0.1, 0.1)`` |
++------------------------------------------------------------+--------------------------------------------------------------------------------+-----------------------+
+| :ref:`String<class_String>`                                | :ref:`x_label<class_AnimationNodeBlendSpace2D_property_x_label>`               | ``"x"``               |
++------------------------------------------------------------+--------------------------------------------------------------------------------+-----------------------+
+| :ref:`String<class_String>`                                | :ref:`y_label<class_AnimationNodeBlendSpace2D_property_y_label>`               | ``"y"``               |
++------------------------------------------------------------+--------------------------------------------------------------------------------+-----------------------+
 
 
 Methods
 Methods
 -------
 -------
@@ -54,13 +56,13 @@ Methods
 +---------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
 +---------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
 | void                                              | :ref:`add_triangle<class_AnimationNodeBlendSpace2D_method_add_triangle>` **(** :ref:`int<class_int>` x, :ref:`int<class_int>` y, :ref:`int<class_int>` z, :ref:`int<class_int>` at_index=-1 **)**                       |
 | void                                              | :ref:`add_triangle<class_AnimationNodeBlendSpace2D_method_add_triangle>` **(** :ref:`int<class_int>` x, :ref:`int<class_int>` y, :ref:`int<class_int>` z, :ref:`int<class_int>` at_index=-1 **)**                       |
 +---------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
 +---------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`int<class_int>`                             | :ref:`get_blend_point_count<class_AnimationNodeBlendSpace2D_method_get_blend_point_count>` **(** **)** const                                                                                                            |
+| :ref:`int<class_int>`                             | :ref:`get_blend_point_count<class_AnimationNodeBlendSpace2D_method_get_blend_point_count>` **(** **)** |const|                                                                                                          |
 +---------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
 +---------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`AnimationRootNode<class_AnimationRootNode>` | :ref:`get_blend_point_node<class_AnimationNodeBlendSpace2D_method_get_blend_point_node>` **(** :ref:`int<class_int>` point **)** const                                                                                  |
+| :ref:`AnimationRootNode<class_AnimationRootNode>` | :ref:`get_blend_point_node<class_AnimationNodeBlendSpace2D_method_get_blend_point_node>` **(** :ref:`int<class_int>` point **)** |const|                                                                                |
 +---------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
 +---------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`Vector2<class_Vector2>`                     | :ref:`get_blend_point_position<class_AnimationNodeBlendSpace2D_method_get_blend_point_position>` **(** :ref:`int<class_int>` point **)** const                                                                          |
+| :ref:`Vector2<class_Vector2>`                     | :ref:`get_blend_point_position<class_AnimationNodeBlendSpace2D_method_get_blend_point_position>` **(** :ref:`int<class_int>` point **)** |const|                                                                        |
 +---------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
 +---------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`int<class_int>`                             | :ref:`get_triangle_count<class_AnimationNodeBlendSpace2D_method_get_triangle_count>` **(** **)** const                                                                                                                  |
+| :ref:`int<class_int>`                             | :ref:`get_triangle_count<class_AnimationNodeBlendSpace2D_method_get_triangle_count>` **(** **)** |const|                                                                                                                |
 +---------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
 +---------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
 | :ref:`int<class_int>`                             | :ref:`get_triangle_point<class_AnimationNodeBlendSpace2D_method_get_triangle_point>` **(** :ref:`int<class_int>` triangle, :ref:`int<class_int>` point **)**                                                            |
 | :ref:`int<class_int>`                             | :ref:`get_triangle_point<class_AnimationNodeBlendSpace2D_method_get_triangle_point>` **(** :ref:`int<class_int>` triangle, :ref:`int<class_int>` point **)**                                                            |
 +---------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
 +---------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
@@ -141,7 +143,7 @@ Controls the interpolation between animations. See :ref:`BlendMode<enum_Animatio
 - :ref:`Vector2<class_Vector2>` **max_space**
 - :ref:`Vector2<class_Vector2>` **max_space**
 
 
 +-----------+----------------------+
 +-----------+----------------------+
-| *Default* | ``Vector2( 1, 1 )``  |
+| *Default* | ``Vector2(1, 1)``    |
 +-----------+----------------------+
 +-----------+----------------------+
 | *Setter*  | set_max_space(value) |
 | *Setter*  | set_max_space(value) |
 +-----------+----------------------+
 +-----------+----------------------+
@@ -156,13 +158,13 @@ The blend space's X and Y axes' upper limit for the points' position. See :ref:`
 
 
 - :ref:`Vector2<class_Vector2>` **min_space**
 - :ref:`Vector2<class_Vector2>` **min_space**
 
 
-+-----------+-----------------------+
-| *Default* | ``Vector2( -1, -1 )`` |
-+-----------+-----------------------+
-| *Setter*  | set_min_space(value)  |
-+-----------+-----------------------+
-| *Getter*  | get_min_space()       |
-+-----------+-----------------------+
++-----------+----------------------+
+| *Default* | ``Vector2(-1, -1)``  |
++-----------+----------------------+
+| *Setter*  | set_min_space(value) |
++-----------+----------------------+
+| *Getter*  | get_min_space()      |
++-----------+----------------------+
 
 
 The blend space's X and Y axes' lower limit for the points' position. See :ref:`add_blend_point<class_AnimationNodeBlendSpace2D_method_add_blend_point>`.
 The blend space's X and Y axes' lower limit for the points' position. See :ref:`add_blend_point<class_AnimationNodeBlendSpace2D_method_add_blend_point>`.
 
 
@@ -172,13 +174,13 @@ The blend space's X and Y axes' lower limit for the points' position. See :ref:`
 
 
 - :ref:`Vector2<class_Vector2>` **snap**
 - :ref:`Vector2<class_Vector2>` **snap**
 
 
-+-----------+-------------------------+
-| *Default* | ``Vector2( 0.1, 0.1 )`` |
-+-----------+-------------------------+
-| *Setter*  | set_snap(value)         |
-+-----------+-------------------------+
-| *Getter*  | get_snap()              |
-+-----------+-------------------------+
++-----------+-----------------------+
+| *Default* | ``Vector2(0.1, 0.1)`` |
++-----------+-----------------------+
+| *Setter*  | set_snap(value)       |
++-----------+-----------------------+
+| *Getter*  | get_snap()            |
++-----------+-----------------------+
 
 
 Position increment to snap to when moving a point.
 Position increment to snap to when moving a point.
 
 
@@ -235,7 +237,7 @@ Creates a new triangle using three points ``x``, ``y``, and ``z``. Triangles can
 
 
 .. _class_AnimationNodeBlendSpace2D_method_get_blend_point_count:
 .. _class_AnimationNodeBlendSpace2D_method_get_blend_point_count:
 
 
-- :ref:`int<class_int>` **get_blend_point_count** **(** **)** const
+- :ref:`int<class_int>` **get_blend_point_count** **(** **)** |const|
 
 
 Returns the number of points in the blend space.
 Returns the number of points in the blend space.
 
 
@@ -243,7 +245,7 @@ Returns the number of points in the blend space.
 
 
 .. _class_AnimationNodeBlendSpace2D_method_get_blend_point_node:
 .. _class_AnimationNodeBlendSpace2D_method_get_blend_point_node:
 
 
-- :ref:`AnimationRootNode<class_AnimationRootNode>` **get_blend_point_node** **(** :ref:`int<class_int>` point **)** const
+- :ref:`AnimationRootNode<class_AnimationRootNode>` **get_blend_point_node** **(** :ref:`int<class_int>` point **)** |const|
 
 
 Returns the :ref:`AnimationRootNode<class_AnimationRootNode>` referenced by the point at index ``point``.
 Returns the :ref:`AnimationRootNode<class_AnimationRootNode>` referenced by the point at index ``point``.
 
 
@@ -251,7 +253,7 @@ Returns the :ref:`AnimationRootNode<class_AnimationRootNode>` referenced by the
 
 
 .. _class_AnimationNodeBlendSpace2D_method_get_blend_point_position:
 .. _class_AnimationNodeBlendSpace2D_method_get_blend_point_position:
 
 
-- :ref:`Vector2<class_Vector2>` **get_blend_point_position** **(** :ref:`int<class_int>` point **)** const
+- :ref:`Vector2<class_Vector2>` **get_blend_point_position** **(** :ref:`int<class_int>` point **)** |const|
 
 
 Returns the position of the point at index ``point``.
 Returns the position of the point at index ``point``.
 
 
@@ -259,7 +261,7 @@ Returns the position of the point at index ``point``.
 
 
 .. _class_AnimationNodeBlendSpace2D_method_get_triangle_count:
 .. _class_AnimationNodeBlendSpace2D_method_get_triangle_count:
 
 
-- :ref:`int<class_int>` **get_triangle_count** **(** **)** const
+- :ref:`int<class_int>` **get_triangle_count** **(** **)** |const|
 
 
 Returns the number of triangles in the blend space.
 Returns the number of triangles in the blend space.
 
 
@@ -303,3 +305,9 @@ Changes the :ref:`AnimationNode<class_AnimationNode>` referenced by the point at
 
 
 Updates the position of the point at index ``point`` on the blend axis.
 Updates the position of the point at index ``point`` on the blend axis.
 
 
+.. |virtual| replace:: :abbr:`virtual (This method should typically be overridden by the user to have any effect.)`
+.. |const| replace:: :abbr:`const (This method has no side effects. It doesn't modify any of the instance's member variables.)`
+.. |vararg| replace:: :abbr:`vararg (This method accepts any number of arguments after the ones described here.)`
+.. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)`
+.. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)`
+.. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)`

+ 34 - 28
classes/class_animationnodeblendtree.rst

@@ -9,7 +9,7 @@
 AnimationNodeBlendTree
 AnimationNodeBlendTree
 ======================
 ======================
 
 
-**Inherits:** :ref:`AnimationRootNode<class_AnimationRootNode>` **<** :ref:`AnimationNode<class_AnimationNode>` **<** :ref:`Resource<class_Resource>` **<** :ref:`Reference<class_Reference>` **<** :ref:`Object<class_Object>`
+**Inherits:** :ref:`AnimationRootNode<class_AnimationRootNode>` **<** :ref:`AnimationNode<class_AnimationNode>` **<** :ref:`Resource<class_Resource>` **<** :ref:`RefCounted<class_RefCounted>` **<** :ref:`Object<class_Object>`
 
 
 :ref:`AnimationTree<class_AnimationTree>` node resource that contains many blend type nodes.
 :ref:`AnimationTree<class_AnimationTree>` node resource that contains many blend type nodes.
 
 
@@ -26,32 +26,32 @@ Tutorials
 Properties
 Properties
 ----------
 ----------
 
 
-+-------------------------------+-------------------------------------------------------------------------+---------------------+
-| :ref:`Vector2<class_Vector2>` | :ref:`graph_offset<class_AnimationNodeBlendTree_property_graph_offset>` | ``Vector2( 0, 0 )`` |
-+-------------------------------+-------------------------------------------------------------------------+---------------------+
++-------------------------------+-------------------------------------------------------------------------+-------------------+
+| :ref:`Vector2<class_Vector2>` | :ref:`graph_offset<class_AnimationNodeBlendTree_property_graph_offset>` | ``Vector2(0, 0)`` |
++-------------------------------+-------------------------------------------------------------------------+-------------------+
 
 
 Methods
 Methods
 -------
 -------
 
 
-+-------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| void                                      | :ref:`add_node<class_AnimationNodeBlendTree_method_add_node>` **(** :ref:`StringName<class_StringName>` name, :ref:`AnimationNode<class_AnimationNode>` node, :ref:`Vector2<class_Vector2>` position=Vector2( 0, 0 ) **)** |
-+-------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| void                                      | :ref:`connect_node<class_AnimationNodeBlendTree_method_connect_node>` **(** :ref:`StringName<class_StringName>` input_node, :ref:`int<class_int>` input_index, :ref:`StringName<class_StringName>` output_node **)**       |
-+-------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| void                                      | :ref:`disconnect_node<class_AnimationNodeBlendTree_method_disconnect_node>` **(** :ref:`StringName<class_StringName>` input_node, :ref:`int<class_int>` input_index **)**                                                  |
-+-------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`AnimationNode<class_AnimationNode>` | :ref:`get_node<class_AnimationNodeBlendTree_method_get_node>` **(** :ref:`StringName<class_StringName>` name **)** const                                                                                                   |
-+-------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`Vector2<class_Vector2>`             | :ref:`get_node_position<class_AnimationNodeBlendTree_method_get_node_position>` **(** :ref:`StringName<class_StringName>` name **)** const                                                                                 |
-+-------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`bool<class_bool>`                   | :ref:`has_node<class_AnimationNodeBlendTree_method_has_node>` **(** :ref:`StringName<class_StringName>` name **)** const                                                                                                   |
-+-------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| void                                      | :ref:`remove_node<class_AnimationNodeBlendTree_method_remove_node>` **(** :ref:`StringName<class_StringName>` name **)**                                                                                                   |
-+-------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| void                                      | :ref:`rename_node<class_AnimationNodeBlendTree_method_rename_node>` **(** :ref:`StringName<class_StringName>` name, :ref:`StringName<class_StringName>` new_name **)**                                                     |
-+-------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| void                                      | :ref:`set_node_position<class_AnimationNodeBlendTree_method_set_node_position>` **(** :ref:`StringName<class_StringName>` name, :ref:`Vector2<class_Vector2>` position **)**                                               |
-+-------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
++-------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| void                                      | :ref:`add_node<class_AnimationNodeBlendTree_method_add_node>` **(** :ref:`StringName<class_StringName>` name, :ref:`AnimationNode<class_AnimationNode>` node, :ref:`Vector2<class_Vector2>` position=Vector2(0, 0) **)** |
++-------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| void                                      | :ref:`connect_node<class_AnimationNodeBlendTree_method_connect_node>` **(** :ref:`StringName<class_StringName>` input_node, :ref:`int<class_int>` input_index, :ref:`StringName<class_StringName>` output_node **)**     |
++-------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| void                                      | :ref:`disconnect_node<class_AnimationNodeBlendTree_method_disconnect_node>` **(** :ref:`StringName<class_StringName>` input_node, :ref:`int<class_int>` input_index **)**                                                |
++-------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`AnimationNode<class_AnimationNode>` | :ref:`get_node<class_AnimationNodeBlendTree_method_get_node>` **(** :ref:`StringName<class_StringName>` name **)** |const|                                                                                               |
++-------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`Vector2<class_Vector2>`             | :ref:`get_node_position<class_AnimationNodeBlendTree_method_get_node_position>` **(** :ref:`StringName<class_StringName>` name **)** |const|                                                                             |
++-------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`bool<class_bool>`                   | :ref:`has_node<class_AnimationNodeBlendTree_method_has_node>` **(** :ref:`StringName<class_StringName>` name **)** |const|                                                                                               |
++-------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| void                                      | :ref:`remove_node<class_AnimationNodeBlendTree_method_remove_node>` **(** :ref:`StringName<class_StringName>` name **)**                                                                                                 |
++-------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| void                                      | :ref:`rename_node<class_AnimationNodeBlendTree_method_rename_node>` **(** :ref:`StringName<class_StringName>` name, :ref:`StringName<class_StringName>` new_name **)**                                                   |
++-------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| void                                      | :ref:`set_node_position<class_AnimationNodeBlendTree_method_set_node_position>` **(** :ref:`StringName<class_StringName>` name, :ref:`Vector2<class_Vector2>` position **)**                                             |
++-------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
 
 
 Constants
 Constants
 ---------
 ---------
@@ -88,7 +88,7 @@ Property Descriptions
 - :ref:`Vector2<class_Vector2>` **graph_offset**
 - :ref:`Vector2<class_Vector2>` **graph_offset**
 
 
 +-----------+-------------------------+
 +-----------+-------------------------+
-| *Default* | ``Vector2( 0, 0 )``     |
+| *Default* | ``Vector2(0, 0)``       |
 +-----------+-------------------------+
 +-----------+-------------------------+
 | *Setter*  | set_graph_offset(value) |
 | *Setter*  | set_graph_offset(value) |
 +-----------+-------------------------+
 +-----------+-------------------------+
@@ -102,7 +102,7 @@ Method Descriptions
 
 
 .. _class_AnimationNodeBlendTree_method_add_node:
 .. _class_AnimationNodeBlendTree_method_add_node:
 
 
-- void **add_node** **(** :ref:`StringName<class_StringName>` name, :ref:`AnimationNode<class_AnimationNode>` node, :ref:`Vector2<class_Vector2>` position=Vector2( 0, 0 ) **)**
+- void **add_node** **(** :ref:`StringName<class_StringName>` name, :ref:`AnimationNode<class_AnimationNode>` node, :ref:`Vector2<class_Vector2>` position=Vector2(0, 0) **)**
 
 
 Adds an :ref:`AnimationNode<class_AnimationNode>` at the given ``position``. The ``name`` is used to identify the created sub-node later.
 Adds an :ref:`AnimationNode<class_AnimationNode>` at the given ``position``. The ``name`` is used to identify the created sub-node later.
 
 
@@ -126,7 +126,7 @@ Disconnects the node connected to the specified input.
 
 
 .. _class_AnimationNodeBlendTree_method_get_node:
 .. _class_AnimationNodeBlendTree_method_get_node:
 
 
-- :ref:`AnimationNode<class_AnimationNode>` **get_node** **(** :ref:`StringName<class_StringName>` name **)** const
+- :ref:`AnimationNode<class_AnimationNode>` **get_node** **(** :ref:`StringName<class_StringName>` name **)** |const|
 
 
 Returns the sub-node with the specified ``name``.
 Returns the sub-node with the specified ``name``.
 
 
@@ -134,7 +134,7 @@ Returns the sub-node with the specified ``name``.
 
 
 .. _class_AnimationNodeBlendTree_method_get_node_position:
 .. _class_AnimationNodeBlendTree_method_get_node_position:
 
 
-- :ref:`Vector2<class_Vector2>` **get_node_position** **(** :ref:`StringName<class_StringName>` name **)** const
+- :ref:`Vector2<class_Vector2>` **get_node_position** **(** :ref:`StringName<class_StringName>` name **)** |const|
 
 
 Returns the position of the sub-node with the specified ``name``.
 Returns the position of the sub-node with the specified ``name``.
 
 
@@ -142,7 +142,7 @@ Returns the position of the sub-node with the specified ``name``.
 
 
 .. _class_AnimationNodeBlendTree_method_has_node:
 .. _class_AnimationNodeBlendTree_method_has_node:
 
 
-- :ref:`bool<class_bool>` **has_node** **(** :ref:`StringName<class_StringName>` name **)** const
+- :ref:`bool<class_bool>` **has_node** **(** :ref:`StringName<class_StringName>` name **)** |const|
 
 
 Returns ``true`` if a sub-node with specified ``name`` exists.
 Returns ``true`` if a sub-node with specified ``name`` exists.
 
 
@@ -170,3 +170,9 @@ Changes the name of a sub-node.
 
 
 Modifies the position of a sub-node.
 Modifies the position of a sub-node.
 
 
+.. |virtual| replace:: :abbr:`virtual (This method should typically be overridden by the user to have any effect.)`
+.. |const| replace:: :abbr:`const (This method has no side effects. It doesn't modify any of the instance's member variables.)`
+.. |vararg| replace:: :abbr:`vararg (This method accepts any number of arguments after the ones described here.)`
+.. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)`
+.. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)`
+.. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)`

+ 11 - 3
classes/class_animationnodeoneshot.rst

@@ -9,7 +9,7 @@
 AnimationNodeOneShot
 AnimationNodeOneShot
 ====================
 ====================
 
 
-**Inherits:** :ref:`AnimationNode<class_AnimationNode>` **<** :ref:`Resource<class_Resource>` **<** :ref:`Reference<class_Reference>` **<** :ref:`Object<class_Object>`
+**Inherits:** :ref:`AnimationNode<class_AnimationNode>` **<** :ref:`Resource<class_Resource>` **<** :ref:`RefCounted<class_RefCounted>` **<** :ref:`Object<class_Object>`
 
 
 Plays an animation once in :ref:`AnimationNodeBlendTree<class_AnimationNodeBlendTree>`.
 Plays an animation once in :ref:`AnimationNodeBlendTree<class_AnimationNodeBlendTree>`.
 
 
@@ -23,6 +23,8 @@ Tutorials
 
 
 - :doc:`../tutorials/animation/animation_tree`
 - :doc:`../tutorials/animation/animation_tree`
 
 
+- `Third Person Shooter Demo <https://godotengine.org/asset-library/asset/678>`__
+
 Properties
 Properties
 ----------
 ----------
 
 
@@ -44,7 +46,7 @@ Methods
 -------
 -------
 
 
 +---------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------+
 +---------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`MixMode<enum_AnimationNodeOneShot_MixMode>` | :ref:`get_mix_mode<class_AnimationNodeOneShot_method_get_mix_mode>` **(** **)** const                                                  |
+| :ref:`MixMode<enum_AnimationNodeOneShot_MixMode>` | :ref:`get_mix_mode<class_AnimationNodeOneShot_method_get_mix_mode>` **(** **)** |const|                                                |
 +---------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------+
 +---------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------+
 | void                                              | :ref:`set_mix_mode<class_AnimationNodeOneShot_method_set_mix_mode>` **(** :ref:`MixMode<enum_AnimationNodeOneShot_MixMode>` mode **)** |
 | void                                              | :ref:`set_mix_mode<class_AnimationNodeOneShot_method_set_mix_mode>` **(** :ref:`MixMode<enum_AnimationNodeOneShot_MixMode>` mode **)** |
 +---------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------+
 +---------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------+
@@ -160,7 +162,7 @@ Method Descriptions
 
 
 .. _class_AnimationNodeOneShot_method_get_mix_mode:
 .. _class_AnimationNodeOneShot_method_get_mix_mode:
 
 
-- :ref:`MixMode<enum_AnimationNodeOneShot_MixMode>` **get_mix_mode** **(** **)** const
+- :ref:`MixMode<enum_AnimationNodeOneShot_MixMode>` **get_mix_mode** **(** **)** |const|
 
 
 ----
 ----
 
 
@@ -168,3 +170,9 @@ Method Descriptions
 
 
 - void **set_mix_mode** **(** :ref:`MixMode<enum_AnimationNodeOneShot_MixMode>` mode **)**
 - void **set_mix_mode** **(** :ref:`MixMode<enum_AnimationNodeOneShot_MixMode>` mode **)**
 
 
+.. |virtual| replace:: :abbr:`virtual (This method should typically be overridden by the user to have any effect.)`
+.. |const| replace:: :abbr:`const (This method has no side effects. It doesn't modify any of the instance's member variables.)`
+.. |vararg| replace:: :abbr:`vararg (This method accepts any number of arguments after the ones described here.)`
+.. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)`
+.. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)`
+.. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)`

+ 11 - 1
classes/class_animationnodeoutput.rst

@@ -9,7 +9,7 @@
 AnimationNodeOutput
 AnimationNodeOutput
 ===================
 ===================
 
 
-**Inherits:** :ref:`AnimationNode<class_AnimationNode>` **<** :ref:`Resource<class_Resource>` **<** :ref:`Reference<class_Reference>` **<** :ref:`Object<class_Object>`
+**Inherits:** :ref:`AnimationNode<class_AnimationNode>` **<** :ref:`Resource<class_Resource>` **<** :ref:`RefCounted<class_RefCounted>` **<** :ref:`Object<class_Object>`
 
 
 Generic output node to be added to :ref:`AnimationNodeBlendTree<class_AnimationNodeBlendTree>`.
 Generic output node to be added to :ref:`AnimationNodeBlendTree<class_AnimationNodeBlendTree>`.
 
 
@@ -18,3 +18,13 @@ Tutorials
 
 
 - :doc:`../tutorials/animation/animation_tree`
 - :doc:`../tutorials/animation/animation_tree`
 
 
+- `3D Platformer Demo <https://godotengine.org/asset-library/asset/125>`__
+
+- `Third Person Shooter Demo <https://godotengine.org/asset-library/asset/678>`__
+
+.. |virtual| replace:: :abbr:`virtual (This method should typically be overridden by the user to have any effect.)`
+.. |const| replace:: :abbr:`const (This method has no side effects. It doesn't modify any of the instance's member variables.)`
+.. |vararg| replace:: :abbr:`vararg (This method accepts any number of arguments after the ones described here.)`
+.. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)`
+.. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)`
+.. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)`

+ 44 - 28
classes/class_animationnodestatemachine.rst

@@ -9,7 +9,7 @@
 AnimationNodeStateMachine
 AnimationNodeStateMachine
 =========================
 =========================
 
 
-**Inherits:** :ref:`AnimationRootNode<class_AnimationRootNode>` **<** :ref:`AnimationNode<class_AnimationNode>` **<** :ref:`Resource<class_Resource>` **<** :ref:`Reference<class_Reference>` **<** :ref:`Object<class_Object>`
+**Inherits:** :ref:`AnimationRootNode<class_AnimationRootNode>` **<** :ref:`AnimationNode<class_AnimationNode>` **<** :ref:`Resource<class_Resource>` **<** :ref:`RefCounted<class_RefCounted>` **<** :ref:`Object<class_Object>`
 
 
 State machine for control of animations.
 State machine for control of animations.
 
 
@@ -20,11 +20,21 @@ Contains multiple nodes representing animation states, connected in a graph. Nod
 
 
 **Example:**
 **Example:**
 
 
-::
+
+.. tabs::
+
+ .. code-tab:: gdscript
 
 
     var state_machine = $AnimationTree.get("parameters/playback")
     var state_machine = $AnimationTree.get("parameters/playback")
     state_machine.travel("some_state")
     state_machine.travel("some_state")
 
 
+ .. code-tab:: csharp
+
+    var stateMachine = GetNode<AnimationTree>("AnimationTree").Get("parameters/playback") as AnimationNodeStateMachinePlayback;
+    stateMachine.Travel("some_state");
+
+
+
 Tutorials
 Tutorials
 ---------
 ---------
 
 
@@ -34,33 +44,33 @@ Methods
 -------
 -------
 
 
 +---------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
 +---------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| void                                                                                  | :ref:`add_node<class_AnimationNodeStateMachine_method_add_node>` **(** :ref:`StringName<class_StringName>` name, :ref:`AnimationNode<class_AnimationNode>` node, :ref:`Vector2<class_Vector2>` position=Vector2( 0, 0 ) **)**                                               |
+| void                                                                                  | :ref:`add_node<class_AnimationNodeStateMachine_method_add_node>` **(** :ref:`StringName<class_StringName>` name, :ref:`AnimationNode<class_AnimationNode>` node, :ref:`Vector2<class_Vector2>` position=Vector2(0, 0) **)**                                                 |
 +---------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
 +---------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
 | void                                                                                  | :ref:`add_transition<class_AnimationNodeStateMachine_method_add_transition>` **(** :ref:`StringName<class_StringName>` from, :ref:`StringName<class_StringName>` to, :ref:`AnimationNodeStateMachineTransition<class_AnimationNodeStateMachineTransition>` transition **)** |
 | void                                                                                  | :ref:`add_transition<class_AnimationNodeStateMachine_method_add_transition>` **(** :ref:`StringName<class_StringName>` from, :ref:`StringName<class_StringName>` to, :ref:`AnimationNodeStateMachineTransition<class_AnimationNodeStateMachineTransition>` transition **)** |
 +---------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
 +---------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`String<class_String>`                                                           | :ref:`get_end_node<class_AnimationNodeStateMachine_method_get_end_node>` **(** **)** const                                                                                                                                                                                  |
+| :ref:`String<class_String>`                                                           | :ref:`get_end_node<class_AnimationNodeStateMachine_method_get_end_node>` **(** **)** |const|                                                                                                                                                                                |
 +---------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
 +---------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`Vector2<class_Vector2>`                                                         | :ref:`get_graph_offset<class_AnimationNodeStateMachine_method_get_graph_offset>` **(** **)** const                                                                                                                                                                          |
+| :ref:`Vector2<class_Vector2>`                                                         | :ref:`get_graph_offset<class_AnimationNodeStateMachine_method_get_graph_offset>` **(** **)** |const|                                                                                                                                                                        |
 +---------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
 +---------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`AnimationNode<class_AnimationNode>`                                             | :ref:`get_node<class_AnimationNodeStateMachine_method_get_node>` **(** :ref:`StringName<class_StringName>` name **)** const                                                                                                                                                 |
+| :ref:`AnimationNode<class_AnimationNode>`                                             | :ref:`get_node<class_AnimationNodeStateMachine_method_get_node>` **(** :ref:`StringName<class_StringName>` name **)** |const|                                                                                                                                               |
 +---------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
 +---------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`StringName<class_StringName>`                                                   | :ref:`get_node_name<class_AnimationNodeStateMachine_method_get_node_name>` **(** :ref:`AnimationNode<class_AnimationNode>` node **)** const                                                                                                                                 |
+| :ref:`StringName<class_StringName>`                                                   | :ref:`get_node_name<class_AnimationNodeStateMachine_method_get_node_name>` **(** :ref:`AnimationNode<class_AnimationNode>` node **)** |const|                                                                                                                               |
 +---------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
 +---------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`Vector2<class_Vector2>`                                                         | :ref:`get_node_position<class_AnimationNodeStateMachine_method_get_node_position>` **(** :ref:`StringName<class_StringName>` name **)** const                                                                                                                               |
+| :ref:`Vector2<class_Vector2>`                                                         | :ref:`get_node_position<class_AnimationNodeStateMachine_method_get_node_position>` **(** :ref:`StringName<class_StringName>` name **)** |const|                                                                                                                             |
 +---------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
 +---------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`String<class_String>`                                                           | :ref:`get_start_node<class_AnimationNodeStateMachine_method_get_start_node>` **(** **)** const                                                                                                                                                                              |
+| :ref:`String<class_String>`                                                           | :ref:`get_start_node<class_AnimationNodeStateMachine_method_get_start_node>` **(** **)** |const|                                                                                                                                                                            |
 +---------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
 +---------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`AnimationNodeStateMachineTransition<class_AnimationNodeStateMachineTransition>` | :ref:`get_transition<class_AnimationNodeStateMachine_method_get_transition>` **(** :ref:`int<class_int>` idx **)** const                                                                                                                                                    |
+| :ref:`AnimationNodeStateMachineTransition<class_AnimationNodeStateMachineTransition>` | :ref:`get_transition<class_AnimationNodeStateMachine_method_get_transition>` **(** :ref:`int<class_int>` idx **)** |const|                                                                                                                                                  |
 +---------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
 +---------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`int<class_int>`                                                                 | :ref:`get_transition_count<class_AnimationNodeStateMachine_method_get_transition_count>` **(** **)** const                                                                                                                                                                  |
+| :ref:`int<class_int>`                                                                 | :ref:`get_transition_count<class_AnimationNodeStateMachine_method_get_transition_count>` **(** **)** |const|                                                                                                                                                                |
 +---------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
 +---------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`StringName<class_StringName>`                                                   | :ref:`get_transition_from<class_AnimationNodeStateMachine_method_get_transition_from>` **(** :ref:`int<class_int>` idx **)** const                                                                                                                                          |
+| :ref:`StringName<class_StringName>`                                                   | :ref:`get_transition_from<class_AnimationNodeStateMachine_method_get_transition_from>` **(** :ref:`int<class_int>` idx **)** |const|                                                                                                                                        |
 +---------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
 +---------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`StringName<class_StringName>`                                                   | :ref:`get_transition_to<class_AnimationNodeStateMachine_method_get_transition_to>` **(** :ref:`int<class_int>` idx **)** const                                                                                                                                              |
+| :ref:`StringName<class_StringName>`                                                   | :ref:`get_transition_to<class_AnimationNodeStateMachine_method_get_transition_to>` **(** :ref:`int<class_int>` idx **)** |const|                                                                                                                                            |
 +---------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
 +---------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`bool<class_bool>`                                                               | :ref:`has_node<class_AnimationNodeStateMachine_method_has_node>` **(** :ref:`StringName<class_StringName>` name **)** const                                                                                                                                                 |
+| :ref:`bool<class_bool>`                                                               | :ref:`has_node<class_AnimationNodeStateMachine_method_has_node>` **(** :ref:`StringName<class_StringName>` name **)** |const|                                                                                                                                               |
 +---------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
 +---------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`bool<class_bool>`                                                               | :ref:`has_transition<class_AnimationNodeStateMachine_method_has_transition>` **(** :ref:`StringName<class_StringName>` from, :ref:`StringName<class_StringName>` to **)** const                                                                                             |
+| :ref:`bool<class_bool>`                                                               | :ref:`has_transition<class_AnimationNodeStateMachine_method_has_transition>` **(** :ref:`StringName<class_StringName>` from, :ref:`StringName<class_StringName>` to **)** |const|                                                                                           |
 +---------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
 +---------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
 | void                                                                                  | :ref:`remove_node<class_AnimationNodeStateMachine_method_remove_node>` **(** :ref:`StringName<class_StringName>` name **)**                                                                                                                                                 |
 | void                                                                                  | :ref:`remove_node<class_AnimationNodeStateMachine_method_remove_node>` **(** :ref:`StringName<class_StringName>` name **)**                                                                                                                                                 |
 +---------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
 +---------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
@@ -86,7 +96,7 @@ Method Descriptions
 
 
 .. _class_AnimationNodeStateMachine_method_add_node:
 .. _class_AnimationNodeStateMachine_method_add_node:
 
 
-- void **add_node** **(** :ref:`StringName<class_StringName>` name, :ref:`AnimationNode<class_AnimationNode>` node, :ref:`Vector2<class_Vector2>` position=Vector2( 0, 0 ) **)**
+- void **add_node** **(** :ref:`StringName<class_StringName>` name, :ref:`AnimationNode<class_AnimationNode>` node, :ref:`Vector2<class_Vector2>` position=Vector2(0, 0) **)**
 
 
 Adds a new node to the graph. The ``position`` is used for display in the editor.
 Adds a new node to the graph. The ``position`` is used for display in the editor.
 
 
@@ -102,7 +112,7 @@ Adds a transition between the given nodes.
 
 
 .. _class_AnimationNodeStateMachine_method_get_end_node:
 .. _class_AnimationNodeStateMachine_method_get_end_node:
 
 
-- :ref:`String<class_String>` **get_end_node** **(** **)** const
+- :ref:`String<class_String>` **get_end_node** **(** **)** |const|
 
 
 Returns the graph's end node.
 Returns the graph's end node.
 
 
@@ -110,7 +120,7 @@ Returns the graph's end node.
 
 
 .. _class_AnimationNodeStateMachine_method_get_graph_offset:
 .. _class_AnimationNodeStateMachine_method_get_graph_offset:
 
 
-- :ref:`Vector2<class_Vector2>` **get_graph_offset** **(** **)** const
+- :ref:`Vector2<class_Vector2>` **get_graph_offset** **(** **)** |const|
 
 
 Returns the draw offset of the graph. Used for display in the editor.
 Returns the draw offset of the graph. Used for display in the editor.
 
 
@@ -118,7 +128,7 @@ Returns the draw offset of the graph. Used for display in the editor.
 
 
 .. _class_AnimationNodeStateMachine_method_get_node:
 .. _class_AnimationNodeStateMachine_method_get_node:
 
 
-- :ref:`AnimationNode<class_AnimationNode>` **get_node** **(** :ref:`StringName<class_StringName>` name **)** const
+- :ref:`AnimationNode<class_AnimationNode>` **get_node** **(** :ref:`StringName<class_StringName>` name **)** |const|
 
 
 Returns the animation node with the given name.
 Returns the animation node with the given name.
 
 
@@ -126,7 +136,7 @@ Returns the animation node with the given name.
 
 
 .. _class_AnimationNodeStateMachine_method_get_node_name:
 .. _class_AnimationNodeStateMachine_method_get_node_name:
 
 
-- :ref:`StringName<class_StringName>` **get_node_name** **(** :ref:`AnimationNode<class_AnimationNode>` node **)** const
+- :ref:`StringName<class_StringName>` **get_node_name** **(** :ref:`AnimationNode<class_AnimationNode>` node **)** |const|
 
 
 Returns the given animation node's name.
 Returns the given animation node's name.
 
 
@@ -134,7 +144,7 @@ Returns the given animation node's name.
 
 
 .. _class_AnimationNodeStateMachine_method_get_node_position:
 .. _class_AnimationNodeStateMachine_method_get_node_position:
 
 
-- :ref:`Vector2<class_Vector2>` **get_node_position** **(** :ref:`StringName<class_StringName>` name **)** const
+- :ref:`Vector2<class_Vector2>` **get_node_position** **(** :ref:`StringName<class_StringName>` name **)** |const|
 
 
 Returns the given node's coordinates. Used for display in the editor.
 Returns the given node's coordinates. Used for display in the editor.
 
 
@@ -142,7 +152,7 @@ Returns the given node's coordinates. Used for display in the editor.
 
 
 .. _class_AnimationNodeStateMachine_method_get_start_node:
 .. _class_AnimationNodeStateMachine_method_get_start_node:
 
 
-- :ref:`String<class_String>` **get_start_node** **(** **)** const
+- :ref:`String<class_String>` **get_start_node** **(** **)** |const|
 
 
 Returns the graph's end node.
 Returns the graph's end node.
 
 
@@ -150,7 +160,7 @@ Returns the graph's end node.
 
 
 .. _class_AnimationNodeStateMachine_method_get_transition:
 .. _class_AnimationNodeStateMachine_method_get_transition:
 
 
-- :ref:`AnimationNodeStateMachineTransition<class_AnimationNodeStateMachineTransition>` **get_transition** **(** :ref:`int<class_int>` idx **)** const
+- :ref:`AnimationNodeStateMachineTransition<class_AnimationNodeStateMachineTransition>` **get_transition** **(** :ref:`int<class_int>` idx **)** |const|
 
 
 Returns the given transition.
 Returns the given transition.
 
 
@@ -158,7 +168,7 @@ Returns the given transition.
 
 
 .. _class_AnimationNodeStateMachine_method_get_transition_count:
 .. _class_AnimationNodeStateMachine_method_get_transition_count:
 
 
-- :ref:`int<class_int>` **get_transition_count** **(** **)** const
+- :ref:`int<class_int>` **get_transition_count** **(** **)** |const|
 
 
 Returns the number of connections in the graph.
 Returns the number of connections in the graph.
 
 
@@ -166,7 +176,7 @@ Returns the number of connections in the graph.
 
 
 .. _class_AnimationNodeStateMachine_method_get_transition_from:
 .. _class_AnimationNodeStateMachine_method_get_transition_from:
 
 
-- :ref:`StringName<class_StringName>` **get_transition_from** **(** :ref:`int<class_int>` idx **)** const
+- :ref:`StringName<class_StringName>` **get_transition_from** **(** :ref:`int<class_int>` idx **)** |const|
 
 
 Returns the given transition's start node.
 Returns the given transition's start node.
 
 
@@ -174,7 +184,7 @@ Returns the given transition's start node.
 
 
 .. _class_AnimationNodeStateMachine_method_get_transition_to:
 .. _class_AnimationNodeStateMachine_method_get_transition_to:
 
 
-- :ref:`StringName<class_StringName>` **get_transition_to** **(** :ref:`int<class_int>` idx **)** const
+- :ref:`StringName<class_StringName>` **get_transition_to** **(** :ref:`int<class_int>` idx **)** |const|
 
 
 Returns the given transition's end node.
 Returns the given transition's end node.
 
 
@@ -182,7 +192,7 @@ Returns the given transition's end node.
 
 
 .. _class_AnimationNodeStateMachine_method_has_node:
 .. _class_AnimationNodeStateMachine_method_has_node:
 
 
-- :ref:`bool<class_bool>` **has_node** **(** :ref:`StringName<class_StringName>` name **)** const
+- :ref:`bool<class_bool>` **has_node** **(** :ref:`StringName<class_StringName>` name **)** |const|
 
 
 Returns ``true`` if the graph contains the given node.
 Returns ``true`` if the graph contains the given node.
 
 
@@ -190,7 +200,7 @@ Returns ``true`` if the graph contains the given node.
 
 
 .. _class_AnimationNodeStateMachine_method_has_transition:
 .. _class_AnimationNodeStateMachine_method_has_transition:
 
 
-- :ref:`bool<class_bool>` **has_transition** **(** :ref:`StringName<class_StringName>` from, :ref:`StringName<class_StringName>` to **)** const
+- :ref:`bool<class_bool>` **has_transition** **(** :ref:`StringName<class_StringName>` from, :ref:`StringName<class_StringName>` to **)** |const|
 
 
 Returns ``true`` if there is a transition between the given nodes.
 Returns ``true`` if there is a transition between the given nodes.
 
 
@@ -264,3 +274,9 @@ Sets the node's coordinates. Used for display in the editor.
 
 
 Sets the given node as the graph start point.
 Sets the given node as the graph start point.
 
 
+.. |virtual| replace:: :abbr:`virtual (This method should typically be overridden by the user to have any effect.)`
+.. |const| replace:: :abbr:`const (This method has no side effects. It doesn't modify any of the instance's member variables.)`
+.. |vararg| replace:: :abbr:`vararg (This method accepts any number of arguments after the ones described here.)`
+.. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)`
+.. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)`
+.. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)`

+ 55 - 21
classes/class_animationnodestatemachineplayback.rst

@@ -9,7 +9,7 @@
 AnimationNodeStateMachinePlayback
 AnimationNodeStateMachinePlayback
 =================================
 =================================
 
 
-**Inherits:** :ref:`Resource<class_Resource>` **<** :ref:`Reference<class_Reference>` **<** :ref:`Object<class_Object>`
+**Inherits:** :ref:`Resource<class_Resource>` **<** :ref:`RefCounted<class_RefCounted>` **<** :ref:`Object<class_Object>`
 
 
 Playback control for :ref:`AnimationNodeStateMachine<class_AnimationNodeStateMachine>`.
 Playback control for :ref:`AnimationNodeStateMachine<class_AnimationNodeStateMachine>`.
 
 
@@ -20,11 +20,21 @@ Allows control of :ref:`AnimationTree<class_AnimationTree>` state machines creat
 
 
 **Example:**
 **Example:**
 
 
-::
+
+.. tabs::
+
+ .. code-tab:: gdscript
 
 
     var state_machine = $AnimationTree.get("parameters/playback")
     var state_machine = $AnimationTree.get("parameters/playback")
     state_machine.travel("some_state")
     state_machine.travel("some_state")
 
 
+ .. code-tab:: csharp
+
+    var stateMachine = GetNode<AnimationTree>("AnimationTree").Get("parameters/playback") as AnimationNodeStateMachinePlayback;
+    stateMachine.Travel("some_state");
+
+
+
 Tutorials
 Tutorials
 ---------
 ---------
 
 
@@ -33,41 +43,59 @@ Tutorials
 Properties
 Properties
 ----------
 ----------
 
 
-+-------------------------+-------------------------+-----------------+
-| :ref:`bool<class_bool>` | resource_local_to_scene | **O:** ``true`` |
-+-------------------------+-------------------------+-----------------+
++-------------------------+-------------------------+------------------------------+
+| :ref:`bool<class_bool>` | resource_local_to_scene | ``true`` *(parent override)* |
++-------------------------+-------------------------+------------------------------+
 
 
 Methods
 Methods
 -------
 -------
 
 
-+---------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`StringName<class_StringName>`               | :ref:`get_current_node<class_AnimationNodeStateMachinePlayback_method_get_current_node>` **(** **)** const                   |
-+---------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`PackedStringArray<class_PackedStringArray>` | :ref:`get_travel_path<class_AnimationNodeStateMachinePlayback_method_get_travel_path>` **(** **)** const                     |
-+---------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`bool<class_bool>`                           | :ref:`is_playing<class_AnimationNodeStateMachinePlayback_method_is_playing>` **(** **)** const                               |
-+---------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------+
-| void                                              | :ref:`start<class_AnimationNodeStateMachinePlayback_method_start>` **(** :ref:`StringName<class_StringName>` node **)**      |
-+---------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------+
-| void                                              | :ref:`stop<class_AnimationNodeStateMachinePlayback_method_stop>` **(** **)**                                                 |
-+---------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------+
-| void                                              | :ref:`travel<class_AnimationNodeStateMachinePlayback_method_travel>` **(** :ref:`StringName<class_StringName>` to_node **)** |
-+---------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------+
++---------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`float<class_float>`                         | :ref:`get_current_length<class_AnimationNodeStateMachinePlayback_method_get_current_length>` **(** **)** |const|               |
++---------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`StringName<class_StringName>`               | :ref:`get_current_node<class_AnimationNodeStateMachinePlayback_method_get_current_node>` **(** **)** |const|                   |
++---------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`float<class_float>`                         | :ref:`get_current_play_position<class_AnimationNodeStateMachinePlayback_method_get_current_play_position>` **(** **)** |const| |
++---------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`PackedStringArray<class_PackedStringArray>` | :ref:`get_travel_path<class_AnimationNodeStateMachinePlayback_method_get_travel_path>` **(** **)** |const|                     |
++---------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`bool<class_bool>`                           | :ref:`is_playing<class_AnimationNodeStateMachinePlayback_method_is_playing>` **(** **)** |const|                               |
++---------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------+
+| void                                              | :ref:`start<class_AnimationNodeStateMachinePlayback_method_start>` **(** :ref:`StringName<class_StringName>` node **)**        |
++---------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------+
+| void                                              | :ref:`stop<class_AnimationNodeStateMachinePlayback_method_stop>` **(** **)**                                                   |
++---------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------+
+| void                                              | :ref:`travel<class_AnimationNodeStateMachinePlayback_method_travel>` **(** :ref:`StringName<class_StringName>` to_node **)**   |
++---------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------+
 
 
 Method Descriptions
 Method Descriptions
 -------------------
 -------------------
 
 
+.. _class_AnimationNodeStateMachinePlayback_method_get_current_length:
+
+- :ref:`float<class_float>` **get_current_length** **(** **)** |const|
+
+----
+
 .. _class_AnimationNodeStateMachinePlayback_method_get_current_node:
 .. _class_AnimationNodeStateMachinePlayback_method_get_current_node:
 
 
-- :ref:`StringName<class_StringName>` **get_current_node** **(** **)** const
+- :ref:`StringName<class_StringName>` **get_current_node** **(** **)** |const|
 
 
 Returns the currently playing animation state.
 Returns the currently playing animation state.
 
 
 ----
 ----
 
 
+.. _class_AnimationNodeStateMachinePlayback_method_get_current_play_position:
+
+- :ref:`float<class_float>` **get_current_play_position** **(** **)** |const|
+
+Returns the playback position within the current animation state.
+
+----
+
 .. _class_AnimationNodeStateMachinePlayback_method_get_travel_path:
 .. _class_AnimationNodeStateMachinePlayback_method_get_travel_path:
 
 
-- :ref:`PackedStringArray<class_PackedStringArray>` **get_travel_path** **(** **)** const
+- :ref:`PackedStringArray<class_PackedStringArray>` **get_travel_path** **(** **)** |const|
 
 
 Returns the current travel path as computed internally by the A\* algorithm.
 Returns the current travel path as computed internally by the A\* algorithm.
 
 
@@ -75,7 +103,7 @@ Returns the current travel path as computed internally by the A\* algorithm.
 
 
 .. _class_AnimationNodeStateMachinePlayback_method_is_playing:
 .. _class_AnimationNodeStateMachinePlayback_method_is_playing:
 
 
-- :ref:`bool<class_bool>` **is_playing** **(** **)** const
+- :ref:`bool<class_bool>` **is_playing** **(** **)** |const|
 
 
 Returns ``true`` if an animation is playing.
 Returns ``true`` if an animation is playing.
 
 
@@ -103,3 +131,9 @@ Stops the currently playing animation.
 
 
 Transitions from the current state to another one, following the shortest path.
 Transitions from the current state to another one, following the shortest path.
 
 
+.. |virtual| replace:: :abbr:`virtual (This method should typically be overridden by the user to have any effect.)`
+.. |const| replace:: :abbr:`const (This method has no side effects. It doesn't modify any of the instance's member variables.)`
+.. |vararg| replace:: :abbr:`vararg (This method accepts any number of arguments after the ones described here.)`
+.. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)`
+.. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)`
+.. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)`

+ 21 - 6
classes/class_animationnodestatemachinetransition.rst

@@ -9,7 +9,7 @@
 AnimationNodeStateMachineTransition
 AnimationNodeStateMachineTransition
 ===================================
 ===================================
 
 
-**Inherits:** :ref:`Resource<class_Resource>` **<** :ref:`Reference<class_Reference>` **<** :ref:`Object<class_Object>`
+**Inherits:** :ref:`Resource<class_Resource>` **<** :ref:`RefCounted<class_RefCounted>` **<** :ref:`Object<class_Object>`
 
 
 
 
 
 
@@ -22,7 +22,7 @@ Properties
 ----------
 ----------
 
 
 +------------------------------------------------------------------------+------------------------------------------------------------------------------------------------+-----------+
 +------------------------------------------------------------------------+------------------------------------------------------------------------------------------------+-----------+
-| :ref:`StringName<class_StringName>`                                    | :ref:`advance_condition<class_AnimationNodeStateMachineTransition_property_advance_condition>` | ``@""``   |
+| :ref:`StringName<class_StringName>`                                    | :ref:`advance_condition<class_AnimationNodeStateMachineTransition_property_advance_condition>` | ``&""``   |
 +------------------------------------------------------------------------+------------------------------------------------------------------------------------------------+-----------+
 +------------------------------------------------------------------------+------------------------------------------------------------------------------------------------+-----------+
 | :ref:`bool<class_bool>`                                                | :ref:`auto_advance<class_AnimationNodeStateMachineTransition_property_auto_advance>`           | ``false`` |
 | :ref:`bool<class_bool>`                                                | :ref:`auto_advance<class_AnimationNodeStateMachineTransition_property_auto_advance>`           | ``false`` |
 +------------------------------------------------------------------------+------------------------------------------------------------------------------------------------+-----------+
 +------------------------------------------------------------------------+------------------------------------------------------------------------------------------------+-----------+
@@ -71,18 +71,27 @@ Property Descriptions
 - :ref:`StringName<class_StringName>` **advance_condition**
 - :ref:`StringName<class_StringName>` **advance_condition**
 
 
 +-----------+------------------------------+
 +-----------+------------------------------+
-| *Default* | ``@""``                      |
+| *Default* | ``&""``                      |
 +-----------+------------------------------+
 +-----------+------------------------------+
 | *Setter*  | set_advance_condition(value) |
 | *Setter*  | set_advance_condition(value) |
 +-----------+------------------------------+
 +-----------+------------------------------+
 | *Getter*  | get_advance_condition()      |
 | *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/latest/tutorials/animation/animation_tree.html#controlling-from-code <https://docs.godotengine.org/en/latest/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 `https://docs.godotengine.org/en/latest/tutorials/animation/animation_tree.html#controlling-from-code <https://docs.godotengine.org/en/latest/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"``:
+
+
+.. tabs::
+
+ .. code-tab:: gdscript
+
+    $animation_tree.set("parameters/conditions/idle", is_on_floor and (linear_velocity.x == 0))
+
+ .. code-tab:: csharp
+
+    GetNode<AnimationTree>("animation_tree").Set("parameters/conditions/idle", IsOnFloor && (LinearVelocity.x == 0));
 
 
-::
 
 
-    $animation_tree["parameters/conditions/idle"] = is_on_floor and (linear_velocity.x == 0)
 
 
 ----
 ----
 
 
@@ -164,3 +173,9 @@ The transition type.
 
 
 The time to cross-fade between this state and the next.
 The time to cross-fade between this state and the next.
 
 
+.. |virtual| replace:: :abbr:`virtual (This method should typically be overridden by the user to have any effect.)`
+.. |const| replace:: :abbr:`const (This method has no side effects. It doesn't modify any of the instance's member variables.)`
+.. |vararg| replace:: :abbr:`vararg (This method accepts any number of arguments after the ones described here.)`
+.. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)`
+.. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)`
+.. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)`

+ 9 - 1
classes/class_animationnodetimescale.rst

@@ -9,7 +9,7 @@
 AnimationNodeTimeScale
 AnimationNodeTimeScale
 ======================
 ======================
 
 
-**Inherits:** :ref:`AnimationNode<class_AnimationNode>` **<** :ref:`Resource<class_Resource>` **<** :ref:`Reference<class_Reference>` **<** :ref:`Object<class_Object>`
+**Inherits:** :ref:`AnimationNode<class_AnimationNode>` **<** :ref:`Resource<class_Resource>` **<** :ref:`RefCounted<class_RefCounted>` **<** :ref:`Object<class_Object>`
 
 
 A time-scaling animation node to be used with :ref:`AnimationTree<class_AnimationTree>`.
 A time-scaling animation node to be used with :ref:`AnimationTree<class_AnimationTree>`.
 
 
@@ -23,3 +23,11 @@ Tutorials
 
 
 - :doc:`../tutorials/animation/animation_tree`
 - :doc:`../tutorials/animation/animation_tree`
 
 
+- `3D Platformer Demo <https://godotengine.org/asset-library/asset/125>`__
+
+.. |virtual| replace:: :abbr:`virtual (This method should typically be overridden by the user to have any effect.)`
+.. |const| replace:: :abbr:`const (This method has no side effects. It doesn't modify any of the instance's member variables.)`
+.. |vararg| replace:: :abbr:`vararg (This method accepts any number of arguments after the ones described here.)`
+.. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)`
+.. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)`
+.. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)`

+ 33 - 2
classes/class_animationnodetimeseek.rst

@@ -9,17 +9,48 @@
 AnimationNodeTimeSeek
 AnimationNodeTimeSeek
 =====================
 =====================
 
 
-**Inherits:** :ref:`AnimationNode<class_AnimationNode>` **<** :ref:`Resource<class_Resource>` **<** :ref:`Reference<class_Reference>` **<** :ref:`Object<class_Object>`
+**Inherits:** :ref:`AnimationNode<class_AnimationNode>` **<** :ref:`Resource<class_Resource>` **<** :ref:`RefCounted<class_RefCounted>` **<** :ref:`Object<class_Object>`
 
 
 A time-seeking animation node to be used with :ref:`AnimationTree<class_AnimationTree>`.
 A time-seeking animation node to be used with :ref:`AnimationTree<class_AnimationTree>`.
 
 
 Description
 Description
 -----------
 -----------
 
 
-This node can be used to cause a seek command to happen to any sub-children of the graph. After setting the time, this value returns to -1.
+This node can be used to cause a seek command to happen to any sub-children of the animation graph. Use this node type to play an :ref:`Animation<class_Animation>` from the start or a certain playback position inside the :ref:`AnimationNodeBlendTree<class_AnimationNodeBlendTree>`. After setting the time and changing the animation playback, the seek node automatically goes into sleep mode on the next process frame by setting its ``seek_position`` value to ``-1.0``.
+
+
+.. tabs::
+
+ .. code-tab:: gdscript
+
+    # Play child animation from the start.
+    animation_tree.set("parameters/Seek/seek_position", 0.0)
+    # Alternative syntax (same result as above).
+    animation_tree["parameters/Seek/seek_position"] = 0.0
+    
+    # Play child animation from 12 second timestamp.
+    animation_tree.set("parameters/Seek/seek_position", 12.0)
+    # Alternative syntax (same result as above).
+    animation_tree["parameters/Seek/seek_position"] = 12.0
+
+ .. code-tab:: csharp
+
+    // Play child animation from the start.
+    animationTree.Set("parameters/Seek/seek_position", 0.0);
+    
+    // Play child animation from 12 second timestamp.
+    animationTree.Set("parameters/Seek/seek_position", 12.0);
+
+
 
 
 Tutorials
 Tutorials
 ---------
 ---------
 
 
 - :doc:`../tutorials/animation/animation_tree`
 - :doc:`../tutorials/animation/animation_tree`
 
 
+.. |virtual| replace:: :abbr:`virtual (This method should typically be overridden by the user to have any effect.)`
+.. |const| replace:: :abbr:`const (This method has no side effects. It doesn't modify any of the instance's member variables.)`
+.. |vararg| replace:: :abbr:`vararg (This method accepts any number of arguments after the ones described here.)`
+.. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)`
+.. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)`
+.. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)`

+ 15 - 5
classes/class_animationnodetransition.rst

@@ -9,7 +9,7 @@
 AnimationNodeTransition
 AnimationNodeTransition
 =======================
 =======================
 
 
-**Inherits:** :ref:`AnimationNode<class_AnimationNode>` **<** :ref:`Resource<class_Resource>` **<** :ref:`Reference<class_Reference>` **<** :ref:`Object<class_Object>`
+**Inherits:** :ref:`AnimationNode<class_AnimationNode>` **<** :ref:`Resource<class_Resource>` **<** :ref:`RefCounted<class_RefCounted>` **<** :ref:`Object<class_Object>`
 
 
 A generic animation transition node for :ref:`AnimationTree<class_AnimationTree>`.
 A generic animation transition node for :ref:`AnimationTree<class_AnimationTree>`.
 
 
@@ -23,6 +23,10 @@ Tutorials
 
 
 - :doc:`../tutorials/animation/animation_tree`
 - :doc:`../tutorials/animation/animation_tree`
 
 
+- `3D Platformer Demo <https://godotengine.org/asset-library/asset/125>`__
+
+- `Third Person Shooter Demo <https://godotengine.org/asset-library/asset/678>`__
+
 Properties
 Properties
 ----------
 ----------
 
 
@@ -36,9 +40,9 @@ Methods
 -------
 -------
 
 
 +-----------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
 +-----------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`String<class_String>` | :ref:`get_input_caption<class_AnimationNodeTransition_method_get_input_caption>` **(** :ref:`int<class_int>` input **)** const                                           |
+| :ref:`String<class_String>` | :ref:`get_input_caption<class_AnimationNodeTransition_method_get_input_caption>` **(** :ref:`int<class_int>` input **)** |const|                                         |
 +-----------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
 +-----------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`bool<class_bool>`     | :ref:`is_input_set_as_auto_advance<class_AnimationNodeTransition_method_is_input_set_as_auto_advance>` **(** :ref:`int<class_int>` input **)** const                     |
+| :ref:`bool<class_bool>`     | :ref:`is_input_set_as_auto_advance<class_AnimationNodeTransition_method_is_input_set_as_auto_advance>` **(** :ref:`int<class_int>` input **)** |const|                   |
 +-----------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
 +-----------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
 | void                        | :ref:`set_input_as_auto_advance<class_AnimationNodeTransition_method_set_input_as_auto_advance>` **(** :ref:`int<class_int>` input, :ref:`bool<class_bool>` enable **)** |
 | void                        | :ref:`set_input_as_auto_advance<class_AnimationNodeTransition_method_set_input_as_auto_advance>` **(** :ref:`int<class_int>` input, :ref:`bool<class_bool>` enable **)** |
 +-----------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
 +-----------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
@@ -83,13 +87,13 @@ Method Descriptions
 
 
 .. _class_AnimationNodeTransition_method_get_input_caption:
 .. _class_AnimationNodeTransition_method_get_input_caption:
 
 
-- :ref:`String<class_String>` **get_input_caption** **(** :ref:`int<class_int>` input **)** const
+- :ref:`String<class_String>` **get_input_caption** **(** :ref:`int<class_int>` input **)** |const|
 
 
 ----
 ----
 
 
 .. _class_AnimationNodeTransition_method_is_input_set_as_auto_advance:
 .. _class_AnimationNodeTransition_method_is_input_set_as_auto_advance:
 
 
-- :ref:`bool<class_bool>` **is_input_set_as_auto_advance** **(** :ref:`int<class_int>` input **)** const
+- :ref:`bool<class_bool>` **is_input_set_as_auto_advance** **(** :ref:`int<class_int>` input **)** |const|
 
 
 ----
 ----
 
 
@@ -103,3 +107,9 @@ Method Descriptions
 
 
 - void **set_input_caption** **(** :ref:`int<class_int>` input, :ref:`String<class_String>` caption **)**
 - void **set_input_caption** **(** :ref:`int<class_int>` input, :ref:`String<class_String>` caption **)**
 
 
+.. |virtual| replace:: :abbr:`virtual (This method should typically be overridden by the user to have any effect.)`
+.. |const| replace:: :abbr:`const (This method has no side effects. It doesn't modify any of the instance's member variables.)`
+.. |vararg| replace:: :abbr:`vararg (This method accepts any number of arguments after the ones described here.)`
+.. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)`
+.. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)`
+.. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)`

+ 85 - 51
classes/class_animationplayer.rst

@@ -25,34 +25,40 @@ Updating the target properties of animations occurs at process time.
 Tutorials
 Tutorials
 ---------
 ---------
 
 
+- :doc:`../tutorials/2d/2d_sprite_animation`
+
 - :doc:`../tutorials/animation/index`
 - :doc:`../tutorials/animation/index`
 
 
+- `Third Person Shooter Demo <https://godotengine.org/asset-library/asset/678>`__
+
 Properties
 Properties
 ----------
 ----------
 
 
-+------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------+--------------------+
-| :ref:`String<class_String>`                                                  | :ref:`assigned_animation<class_AnimationPlayer_property_assigned_animation>`                   |                    |
-+------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------+--------------------+
-| :ref:`String<class_String>`                                                  | :ref:`autoplay<class_AnimationPlayer_property_autoplay>`                                       | ``""``             |
-+------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------+--------------------+
-| :ref:`String<class_String>`                                                  | :ref:`current_animation<class_AnimationPlayer_property_current_animation>`                     | ``""``             |
-+------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------+--------------------+
-| :ref:`float<class_float>`                                                    | :ref:`current_animation_length<class_AnimationPlayer_property_current_animation_length>`       |                    |
-+------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------+--------------------+
-| :ref:`float<class_float>`                                                    | :ref:`current_animation_position<class_AnimationPlayer_property_current_animation_position>`   |                    |
-+------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------+--------------------+
-| :ref:`AnimationMethodCallMode<enum_AnimationPlayer_AnimationMethodCallMode>` | :ref:`method_call_mode<class_AnimationPlayer_property_method_call_mode>`                       | ``0``              |
-+------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------+--------------------+
-| :ref:`bool<class_bool>`                                                      | :ref:`playback_active<class_AnimationPlayer_property_playback_active>`                         |                    |
-+------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------+--------------------+
-| :ref:`float<class_float>`                                                    | :ref:`playback_default_blend_time<class_AnimationPlayer_property_playback_default_blend_time>` | ``0.0``            |
-+------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------+--------------------+
-| :ref:`AnimationProcessMode<enum_AnimationPlayer_AnimationProcessMode>`       | :ref:`playback_process_mode<class_AnimationPlayer_property_playback_process_mode>`             | ``1``              |
-+------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------+--------------------+
-| :ref:`float<class_float>`                                                    | :ref:`playback_speed<class_AnimationPlayer_property_playback_speed>`                           | ``1.0``            |
-+------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------+--------------------+
-| :ref:`NodePath<class_NodePath>`                                              | :ref:`root_node<class_AnimationPlayer_property_root_node>`                                     | ``NodePath("..")`` |
-+------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------+--------------------+
++--------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------+--------------------+
+| :ref:`String<class_String>`                                                    | :ref:`assigned_animation<class_AnimationPlayer_property_assigned_animation>`                   |                    |
++--------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------+--------------------+
+| :ref:`String<class_String>`                                                    | :ref:`autoplay<class_AnimationPlayer_property_autoplay>`                                       | ``""``             |
++--------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------+--------------------+
+| :ref:`String<class_String>`                                                    | :ref:`current_animation<class_AnimationPlayer_property_current_animation>`                     | ``""``             |
++--------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------+--------------------+
+| :ref:`float<class_float>`                                                      | :ref:`current_animation_length<class_AnimationPlayer_property_current_animation_length>`       |                    |
++--------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------+--------------------+
+| :ref:`float<class_float>`                                                      | :ref:`current_animation_position<class_AnimationPlayer_property_current_animation_position>`   |                    |
++--------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------+--------------------+
+| :ref:`AnimationMethodCallMode<enum_AnimationPlayer_AnimationMethodCallMode>`   | :ref:`method_call_mode<class_AnimationPlayer_property_method_call_mode>`                       | ``0``              |
++--------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------+--------------------+
+| :ref:`bool<class_bool>`                                                        | :ref:`playback_active<class_AnimationPlayer_property_playback_active>`                         |                    |
++--------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------+--------------------+
+| :ref:`float<class_float>`                                                      | :ref:`playback_default_blend_time<class_AnimationPlayer_property_playback_default_blend_time>` | ``0.0``            |
++--------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------+--------------------+
+| :ref:`AnimationProcessCallback<enum_AnimationPlayer_AnimationProcessCallback>` | :ref:`playback_process_mode<class_AnimationPlayer_property_playback_process_mode>`             | ``1``              |
++--------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------+--------------------+
+| :ref:`float<class_float>`                                                      | :ref:`playback_speed<class_AnimationPlayer_property_playback_speed>`                           | ``1.0``            |
++--------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------+--------------------+
+| :ref:`bool<class_bool>`                                                        | :ref:`reset_on_save<class_AnimationPlayer_property_reset_on_save>`                             | ``true``           |
++--------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------+--------------------+
+| :ref:`NodePath<class_NodePath>`                                                | :ref:`root_node<class_AnimationPlayer_property_root_node>`                                     | ``NodePath("..")`` |
++--------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------+--------------------+
 
 
 Methods
 Methods
 -------
 -------
@@ -62,7 +68,7 @@ Methods
 +---------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
 +---------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
 | void                                              | :ref:`advance<class_AnimationPlayer_method_advance>` **(** :ref:`float<class_float>` delta **)**                                                                                                                                      |
 | void                                              | :ref:`advance<class_AnimationPlayer_method_advance>` **(** :ref:`float<class_float>` delta **)**                                                                                                                                      |
 +---------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
 +---------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`StringName<class_StringName>`               | :ref:`animation_get_next<class_AnimationPlayer_method_animation_get_next>` **(** :ref:`StringName<class_StringName>` anim_from **)** const                                                                                            |
+| :ref:`StringName<class_StringName>`               | :ref:`animation_get_next<class_AnimationPlayer_method_animation_get_next>` **(** :ref:`StringName<class_StringName>` anim_from **)** |const|                                                                                          |
 +---------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
 +---------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
 | void                                              | :ref:`animation_set_next<class_AnimationPlayer_method_animation_set_next>` **(** :ref:`StringName<class_StringName>` anim_from, :ref:`StringName<class_StringName>` anim_to **)**                                                     |
 | void                                              | :ref:`animation_set_next<class_AnimationPlayer_method_animation_set_next>` **(** :ref:`StringName<class_StringName>` anim_from, :ref:`StringName<class_StringName>` anim_to **)**                                                     |
 +---------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
 +---------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
@@ -70,21 +76,21 @@ Methods
 +---------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
 +---------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
 | void                                              | :ref:`clear_queue<class_AnimationPlayer_method_clear_queue>` **(** **)**                                                                                                                                                              |
 | void                                              | :ref:`clear_queue<class_AnimationPlayer_method_clear_queue>` **(** **)**                                                                                                                                                              |
 +---------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
 +---------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`StringName<class_StringName>`               | :ref:`find_animation<class_AnimationPlayer_method_find_animation>` **(** :ref:`Animation<class_Animation>` animation **)** const                                                                                                      |
+| :ref:`StringName<class_StringName>`               | :ref:`find_animation<class_AnimationPlayer_method_find_animation>` **(** :ref:`Animation<class_Animation>` animation **)** |const|                                                                                                    |
 +---------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
 +---------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`Animation<class_Animation>`                 | :ref:`get_animation<class_AnimationPlayer_method_get_animation>` **(** :ref:`StringName<class_StringName>` name **)** const                                                                                                           |
+| :ref:`Animation<class_Animation>`                 | :ref:`get_animation<class_AnimationPlayer_method_get_animation>` **(** :ref:`StringName<class_StringName>` name **)** |const|                                                                                                         |
 +---------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
 +---------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`PackedStringArray<class_PackedStringArray>` | :ref:`get_animation_list<class_AnimationPlayer_method_get_animation_list>` **(** **)** const                                                                                                                                          |
+| :ref:`PackedStringArray<class_PackedStringArray>` | :ref:`get_animation_list<class_AnimationPlayer_method_get_animation_list>` **(** **)** |const|                                                                                                                                        |
 +---------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
 +---------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`float<class_float>`                         | :ref:`get_blend_time<class_AnimationPlayer_method_get_blend_time>` **(** :ref:`StringName<class_StringName>` anim_from, :ref:`StringName<class_StringName>` anim_to **)** const                                                       |
+| :ref:`float<class_float>`                         | :ref:`get_blend_time<class_AnimationPlayer_method_get_blend_time>` **(** :ref:`StringName<class_StringName>` anim_from, :ref:`StringName<class_StringName>` anim_to **)** |const|                                                     |
 +---------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
 +---------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`float<class_float>`                         | :ref:`get_playing_speed<class_AnimationPlayer_method_get_playing_speed>` **(** **)** const                                                                                                                                            |
+| :ref:`float<class_float>`                         | :ref:`get_playing_speed<class_AnimationPlayer_method_get_playing_speed>` **(** **)** |const|                                                                                                                                          |
 +---------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
 +---------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
 | :ref:`PackedStringArray<class_PackedStringArray>` | :ref:`get_queue<class_AnimationPlayer_method_get_queue>` **(** **)**                                                                                                                                                                  |
 | :ref:`PackedStringArray<class_PackedStringArray>` | :ref:`get_queue<class_AnimationPlayer_method_get_queue>` **(** **)**                                                                                                                                                                  |
 +---------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
 +---------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`bool<class_bool>`                           | :ref:`has_animation<class_AnimationPlayer_method_has_animation>` **(** :ref:`StringName<class_StringName>` name **)** const                                                                                                           |
+| :ref:`bool<class_bool>`                           | :ref:`has_animation<class_AnimationPlayer_method_has_animation>` **(** :ref:`StringName<class_StringName>` name **)** |const|                                                                                                         |
 +---------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
 +---------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`bool<class_bool>`                           | :ref:`is_playing<class_AnimationPlayer_method_is_playing>` **(** **)** const                                                                                                                                                          |
+| :ref:`bool<class_bool>`                           | :ref:`is_playing<class_AnimationPlayer_method_is_playing>` **(** **)** |const|                                                                                                                                                        |
 +---------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
 +---------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
 | void                                              | :ref:`play<class_AnimationPlayer_method_play>` **(** :ref:`StringName<class_StringName>` name="", :ref:`float<class_float>` custom_blend=-1, :ref:`float<class_float>` custom_speed=1.0, :ref:`bool<class_bool>` from_end=false **)** |
 | void                                              | :ref:`play<class_AnimationPlayer_method_play>` **(** :ref:`StringName<class_StringName>` name="", :ref:`float<class_float>` custom_blend=-1, :ref:`float<class_float>` custom_speed=1.0, :ref:`bool<class_bool>` from_end=false **)** |
 +---------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
 +---------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
@@ -110,7 +116,9 @@ Signals
 
 
 - **animation_changed** **(** :ref:`StringName<class_StringName>` old_name, :ref:`StringName<class_StringName>` new_name **)**
 - **animation_changed** **(** :ref:`StringName<class_StringName>` old_name, :ref:`StringName<class_StringName>` new_name **)**
 
 
-If the currently being played animation changes, this signal will notify of such change.
+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>`.
 
 
 ----
 ----
 
 
@@ -139,7 +147,7 @@ Notifies when the caches have been cleared, either automatically, or manually vi
 Enumerations
 Enumerations
 ------------
 ------------
 
 
-.. _enum_AnimationPlayer_AnimationProcessMode:
+.. _enum_AnimationPlayer_AnimationProcessCallback:
 
 
 .. _class_AnimationPlayer_constant_ANIMATION_PROCESS_PHYSICS:
 .. _class_AnimationPlayer_constant_ANIMATION_PROCESS_PHYSICS:
 
 
@@ -147,7 +155,7 @@ Enumerations
 
 
 .. _class_AnimationPlayer_constant_ANIMATION_PROCESS_MANUAL:
 .. _class_AnimationPlayer_constant_ANIMATION_PROCESS_MANUAL:
 
 
-enum **AnimationProcessMode**:
+enum **AnimationProcessCallback**:
 
 
 - **ANIMATION_PROCESS_PHYSICS** = **0** --- Process animation during the physics process. This is especially useful when animating physics bodies.
 - **ANIMATION_PROCESS_PHYSICS** = **0** --- Process animation during the physics process. This is especially useful when animating physics bodies.
 
 
@@ -214,7 +222,9 @@ The name of the animation to play when the scene loads.
 | *Getter*  | get_current_animation()      |
 | *Getter*  | get_current_animation()      |
 +-----------+------------------------------+
 +-----------+------------------------------+
 
 
-The name of the current animation, "" if not playing anything. When being set, does not restart the animation. See also :ref:`play<class_AnimationPlayer_method_play>`.
+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>`.
 
 
 ----
 ----
 
 
@@ -290,15 +300,15 @@ The default time in which to blend animations. Ranges from 0 to 4096 with 0.01 p
 
 
 .. _class_AnimationPlayer_property_playback_process_mode:
 .. _class_AnimationPlayer_property_playback_process_mode:
 
 
-- :ref:`AnimationProcessMode<enum_AnimationPlayer_AnimationProcessMode>` **playback_process_mode**
+- :ref:`AnimationProcessCallback<enum_AnimationPlayer_AnimationProcessCallback>` **playback_process_mode**
 
 
-+-----------+-----------------------------------+
-| *Default* | ``1``                             |
-+-----------+-----------------------------------+
-| *Setter*  | set_animation_process_mode(value) |
-+-----------+-----------------------------------+
-| *Getter*  | get_animation_process_mode()      |
-+-----------+-----------------------------------+
++-----------+-----------------------------+
+| *Default* | ``1``                       |
++-----------+-----------------------------+
+| *Setter*  | set_process_callback(value) |
++-----------+-----------------------------+
+| *Getter*  | get_process_callback()      |
++-----------+-----------------------------+
 
 
 The process notification in which to update animations.
 The process notification in which to update animations.
 
 
@@ -320,6 +330,24 @@ The speed scaling ratio. For instance, if this value is 1, then the animation pl
 
 
 ----
 ----
 
 
+.. _class_AnimationPlayer_property_reset_on_save:
+
+- :ref:`bool<class_bool>` **reset_on_save**
+
++-----------+----------------------------------+
+| *Default* | ``true``                         |
++-----------+----------------------------------+
+| *Setter*  | set_reset_on_save_enabled(value) |
++-----------+----------------------------------+
+| *Getter*  | is_reset_on_save_enabled()       |
++-----------+----------------------------------+
+
+This is used by the editor. If set to ``true``, the scene will be saved with the effects of the reset animation applied (as if it had been seeked to time 0), then reverted after saving.
+
+In other words, the saved scene file will contain the "default pose", as defined by the reset animation, if any, with the editor keeping the values that the nodes had before saving.
+
+----
+
 .. _class_AnimationPlayer_property_root_node:
 .. _class_AnimationPlayer_property_root_node:
 
 
 - :ref:`NodePath<class_NodePath>` **root_node**
 - :ref:`NodePath<class_NodePath>` **root_node**
@@ -355,7 +383,7 @@ Shifts position in the animation timeline and immediately updates the animation.
 
 
 .. _class_AnimationPlayer_method_animation_get_next:
 .. _class_AnimationPlayer_method_animation_get_next:
 
 
-- :ref:`StringName<class_StringName>` **animation_get_next** **(** :ref:`StringName<class_StringName>` anim_from **)** const
+- :ref:`StringName<class_StringName>` **animation_get_next** **(** :ref:`StringName<class_StringName>` anim_from **)** |const|
 
 
 Returns the name of the next animation in the queue.
 Returns the name of the next animation in the queue.
 
 
@@ -387,7 +415,7 @@ Clears all queued, unplayed animations.
 
 
 .. _class_AnimationPlayer_method_find_animation:
 .. _class_AnimationPlayer_method_find_animation:
 
 
-- :ref:`StringName<class_StringName>` **find_animation** **(** :ref:`Animation<class_Animation>` animation **)** const
+- :ref:`StringName<class_StringName>` **find_animation** **(** :ref:`Animation<class_Animation>` animation **)** |const|
 
 
 Returns the name of ``animation`` or an empty string if not found.
 Returns the name of ``animation`` or an empty string if not found.
 
 
@@ -395,7 +423,7 @@ Returns the name of ``animation`` or an empty string if not found.
 
 
 .. _class_AnimationPlayer_method_get_animation:
 .. _class_AnimationPlayer_method_get_animation:
 
 
-- :ref:`Animation<class_Animation>` **get_animation** **(** :ref:`StringName<class_StringName>` name **)** const
+- :ref:`Animation<class_Animation>` **get_animation** **(** :ref:`StringName<class_StringName>` name **)** |const|
 
 
 Returns the :ref:`Animation<class_Animation>` with key ``name`` or ``null`` if not found.
 Returns the :ref:`Animation<class_Animation>` with key ``name`` or ``null`` if not found.
 
 
@@ -403,7 +431,7 @@ Returns the :ref:`Animation<class_Animation>` with key ``name`` or ``null`` if n
 
 
 .. _class_AnimationPlayer_method_get_animation_list:
 .. _class_AnimationPlayer_method_get_animation_list:
 
 
-- :ref:`PackedStringArray<class_PackedStringArray>` **get_animation_list** **(** **)** const
+- :ref:`PackedStringArray<class_PackedStringArray>` **get_animation_list** **(** **)** |const|
 
 
 Returns the list of stored animation names.
 Returns the list of stored animation names.
 
 
@@ -411,7 +439,7 @@ Returns the list of stored animation names.
 
 
 .. _class_AnimationPlayer_method_get_blend_time:
 .. _class_AnimationPlayer_method_get_blend_time:
 
 
-- :ref:`float<class_float>` **get_blend_time** **(** :ref:`StringName<class_StringName>` anim_from, :ref:`StringName<class_StringName>` anim_to **)** const
+- :ref:`float<class_float>` **get_blend_time** **(** :ref:`StringName<class_StringName>` anim_from, :ref:`StringName<class_StringName>` anim_to **)** |const|
 
 
 Gets the blend time (in seconds) between two animations, referenced by their names.
 Gets the blend time (in seconds) between two animations, referenced by their names.
 
 
@@ -419,7 +447,7 @@ Gets the blend time (in seconds) between two animations, referenced by their nam
 
 
 .. _class_AnimationPlayer_method_get_playing_speed:
 .. _class_AnimationPlayer_method_get_playing_speed:
 
 
-- :ref:`float<class_float>` **get_playing_speed** **(** **)** const
+- :ref:`float<class_float>` **get_playing_speed** **(** **)** |const|
 
 
 Gets the actual playing speed of current animation or 0 if not playing. This speed is the :ref:`playback_speed<class_AnimationPlayer_property_playback_speed>` property multiplied by ``custom_speed`` argument specified when calling the :ref:`play<class_AnimationPlayer_method_play>` method.
 Gets the actual playing speed of current animation or 0 if not playing. This speed is the :ref:`playback_speed<class_AnimationPlayer_property_playback_speed>` property multiplied by ``custom_speed`` argument specified when calling the :ref:`play<class_AnimationPlayer_method_play>` method.
 
 
@@ -435,7 +463,7 @@ Returns a list of the animation names that are currently queued to play.
 
 
 .. _class_AnimationPlayer_method_has_animation:
 .. _class_AnimationPlayer_method_has_animation:
 
 
-- :ref:`bool<class_bool>` **has_animation** **(** :ref:`StringName<class_StringName>` name **)** const
+- :ref:`bool<class_bool>` **has_animation** **(** :ref:`StringName<class_StringName>` name **)** |const|
 
 
 Returns ``true`` if the ``AnimationPlayer`` stores an :ref:`Animation<class_Animation>` with key ``name``.
 Returns ``true`` if the ``AnimationPlayer`` stores an :ref:`Animation<class_Animation>` with key ``name``.
 
 
@@ -443,7 +471,7 @@ Returns ``true`` if the ``AnimationPlayer`` stores an :ref:`Animation<class_Anim
 
 
 .. _class_AnimationPlayer_method_is_playing:
 .. _class_AnimationPlayer_method_is_playing:
 
 
-- :ref:`bool<class_bool>` **is_playing** **(** **)** const
+- :ref:`bool<class_bool>` **is_playing** **(** **)** |const|
 
 
 Returns ``true`` if playing an animation.
 Returns ``true`` if playing an animation.
 
 
@@ -521,3 +549,9 @@ Stops or pauses the currently playing animation. If ``reset`` is ``true``, the a
 
 
 If ``reset`` is ``false``, the :ref:`current_animation_position<class_AnimationPlayer_property_current_animation_position>` will be kept and calling :ref:`play<class_AnimationPlayer_method_play>` or :ref:`play_backwards<class_AnimationPlayer_method_play_backwards>` without arguments or with the same animation name as :ref:`assigned_animation<class_AnimationPlayer_property_assigned_animation>` will resume the animation.
 If ``reset`` is ``false``, the :ref:`current_animation_position<class_AnimationPlayer_property_current_animation_position>` will be kept and calling :ref:`play<class_AnimationPlayer_method_play>` or :ref:`play_backwards<class_AnimationPlayer_method_play_backwards>` without arguments or with the same animation name as :ref:`assigned_animation<class_AnimationPlayer_property_assigned_animation>` will resume the animation.
 
 
+.. |virtual| replace:: :abbr:`virtual (This method should typically be overridden by the user to have any effect.)`
+.. |const| replace:: :abbr:`const (This method has no side effects. It doesn't modify any of the instance's member variables.)`
+.. |vararg| replace:: :abbr:`vararg (This method accepts any number of arguments after the ones described here.)`
+.. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)`
+.. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)`
+.. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)`

+ 7 - 1
classes/class_animationrootnode.rst

@@ -9,9 +9,15 @@
 AnimationRootNode
 AnimationRootNode
 =================
 =================
 
 
-**Inherits:** :ref:`AnimationNode<class_AnimationNode>` **<** :ref:`Resource<class_Resource>` **<** :ref:`Reference<class_Reference>` **<** :ref:`Object<class_Object>`
+**Inherits:** :ref:`AnimationNode<class_AnimationNode>` **<** :ref:`Resource<class_Resource>` **<** :ref:`RefCounted<class_RefCounted>` **<** :ref:`Object<class_Object>`
 
 
 **Inherited By:** :ref:`AnimationNodeAnimation<class_AnimationNodeAnimation>`, :ref:`AnimationNodeBlendSpace1D<class_AnimationNodeBlendSpace1D>`, :ref:`AnimationNodeBlendSpace2D<class_AnimationNodeBlendSpace2D>`, :ref:`AnimationNodeBlendTree<class_AnimationNodeBlendTree>`, :ref:`AnimationNodeStateMachine<class_AnimationNodeStateMachine>`
 **Inherited By:** :ref:`AnimationNodeAnimation<class_AnimationNodeAnimation>`, :ref:`AnimationNodeBlendSpace1D<class_AnimationNodeBlendSpace1D>`, :ref:`AnimationNodeBlendSpace2D<class_AnimationNodeBlendSpace2D>`, :ref:`AnimationNodeBlendTree<class_AnimationNodeBlendTree>`, :ref:`AnimationNodeStateMachine<class_AnimationNodeStateMachine>`
 
 
 
 
 
 
+.. |virtual| replace:: :abbr:`virtual (This method should typically be overridden by the user to have any effect.)`
+.. |const| replace:: :abbr:`const (This method has no side effects. It doesn't modify any of the instance's member variables.)`
+.. |vararg| replace:: :abbr:`vararg (This method accepts any number of arguments after the ones described here.)`
+.. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)`
+.. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)`
+.. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)`

+ 7 - 1
classes/class_animationtrackeditplugin.rst

@@ -9,7 +9,13 @@
 AnimationTrackEditPlugin
 AnimationTrackEditPlugin
 ========================
 ========================
 
 
-**Inherits:** :ref:`Reference<class_Reference>` **<** :ref:`Object<class_Object>`
+**Inherits:** :ref:`RefCounted<class_RefCounted>` **<** :ref:`Object<class_Object>`
 
 
 
 
 
 
+.. |virtual| replace:: :abbr:`virtual (This method should typically be overridden by the user to have any effect.)`
+.. |const| replace:: :abbr:`const (This method has no side effects. It doesn't modify any of the instance's member variables.)`
+.. |vararg| replace:: :abbr:`vararg (This method accepts any number of arguments after the ones described here.)`
+.. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)`
+.. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)`
+.. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)`

+ 51 - 32
classes/class_animationtree.rst

@@ -13,43 +13,50 @@ AnimationTree
 
 
 A node to be used for advanced animation transitions in an :ref:`AnimationPlayer<class_AnimationPlayer>`.
 A node to be used for advanced animation transitions in an :ref:`AnimationPlayer<class_AnimationPlayer>`.
 
 
+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.
+
 Tutorials
 Tutorials
 ---------
 ---------
 
 
 - :doc:`../tutorials/animation/animation_tree`
 - :doc:`../tutorials/animation/animation_tree`
 
 
-- `https://github.com/godotengine/tps-demo <https://github.com/godotengine/tps-demo>`_
+- `Third Person Shooter Demo <https://godotengine.org/asset-library/asset/678>`__
 
 
 Properties
 Properties
 ----------
 ----------
 
 
-+----------------------------------------------------------------------+--------------------------------------------------------------------------+------------------+
-| :ref:`bool<class_bool>`                                              | :ref:`active<class_AnimationTree_property_active>`                       | ``false``        |
-+----------------------------------------------------------------------+--------------------------------------------------------------------------+------------------+
-| :ref:`NodePath<class_NodePath>`                                      | :ref:`anim_player<class_AnimationTree_property_anim_player>`             | ``NodePath("")`` |
-+----------------------------------------------------------------------+--------------------------------------------------------------------------+------------------+
-| :ref:`AnimationProcessMode<enum_AnimationTree_AnimationProcessMode>` | :ref:`process_mode<class_AnimationTree_property_process_mode>`           | ``1``            |
-+----------------------------------------------------------------------+--------------------------------------------------------------------------+------------------+
-| :ref:`NodePath<class_NodePath>`                                      | :ref:`root_motion_track<class_AnimationTree_property_root_motion_track>` | ``NodePath("")`` |
-+----------------------------------------------------------------------+--------------------------------------------------------------------------+------------------+
-| :ref:`AnimationNode<class_AnimationNode>`                            | :ref:`tree_root<class_AnimationTree_property_tree_root>`                 |                  |
-+----------------------------------------------------------------------+--------------------------------------------------------------------------+------------------+
++------------------------------------------------------------------------------+--------------------------------------------------------------------------+------------------+
+| :ref:`bool<class_bool>`                                                      | :ref:`active<class_AnimationTree_property_active>`                       | ``false``        |
++------------------------------------------------------------------------------+--------------------------------------------------------------------------+------------------+
+| :ref:`NodePath<class_NodePath>`                                              | :ref:`anim_player<class_AnimationTree_property_anim_player>`             | ``NodePath("")`` |
++------------------------------------------------------------------------------+--------------------------------------------------------------------------+------------------+
+| :ref:`AnimationProcessCallback<enum_AnimationTree_AnimationProcessCallback>` | :ref:`process_callback<class_AnimationTree_property_process_callback>`   | ``1``            |
++------------------------------------------------------------------------------+--------------------------------------------------------------------------+------------------+
+| :ref:`NodePath<class_NodePath>`                                              | :ref:`root_motion_track<class_AnimationTree_property_root_motion_track>` | ``NodePath("")`` |
++------------------------------------------------------------------------------+--------------------------------------------------------------------------+------------------+
+| :ref:`AnimationNode<class_AnimationNode>`                                    | :ref:`tree_root<class_AnimationTree_property_tree_root>`                 |                  |
++------------------------------------------------------------------------------+--------------------------------------------------------------------------+------------------+
 
 
 Methods
 Methods
 -------
 -------
 
 
-+-----------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| void                              | :ref:`advance<class_AnimationTree_method_advance>` **(** :ref:`float<class_float>` delta **)**                                                              |
-+-----------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`Transform<class_Transform>` | :ref:`get_root_motion_transform<class_AnimationTree_method_get_root_motion_transform>` **(** **)** const                                                    |
-+-----------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| void                              | :ref:`rename_parameter<class_AnimationTree_method_rename_parameter>` **(** :ref:`String<class_String>` old_name, :ref:`String<class_String>` new_name **)** |
-+-----------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------+
++---------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| void                                  | :ref:`advance<class_AnimationTree_method_advance>` **(** :ref:`float<class_float>` delta **)**                                                              |
++---------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`Transform3D<class_Transform3D>` | :ref:`get_root_motion_transform<class_AnimationTree_method_get_root_motion_transform>` **(** **)** |const|                                                  |
++---------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| void                                  | :ref:`rename_parameter<class_AnimationTree_method_rename_parameter>` **(** :ref:`String<class_String>` old_name, :ref:`String<class_String>` new_name **)** |
++---------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------+
 
 
 Enumerations
 Enumerations
 ------------
 ------------
 
 
-.. _enum_AnimationTree_AnimationProcessMode:
+.. _enum_AnimationTree_AnimationProcessCallback:
 
 
 .. _class_AnimationTree_constant_ANIMATION_PROCESS_PHYSICS:
 .. _class_AnimationTree_constant_ANIMATION_PROCESS_PHYSICS:
 
 
@@ -57,7 +64,7 @@ Enumerations
 
 
 .. _class_AnimationTree_constant_ANIMATION_PROCESS_MANUAL:
 .. _class_AnimationTree_constant_ANIMATION_PROCESS_MANUAL:
 
 
-enum **AnimationProcessMode**:
+enum **AnimationProcessCallback**:
 
 
 - **ANIMATION_PROCESS_PHYSICS** = **0** --- The animations will progress during the physics frame (i.e. :ref:`Node._physics_process<class_Node_method__physics_process>`).
 - **ANIMATION_PROCESS_PHYSICS** = **0** --- The animations will progress during the physics frame (i.e. :ref:`Node._physics_process<class_Node_method__physics_process>`).
 
 
@@ -100,19 +107,19 @@ The path to the :ref:`AnimationPlayer<class_AnimationPlayer>` used for animating
 
 
 ----
 ----
 
 
-.. _class_AnimationTree_property_process_mode:
+.. _class_AnimationTree_property_process_callback:
 
 
-- :ref:`AnimationProcessMode<enum_AnimationTree_AnimationProcessMode>` **process_mode**
+- :ref:`AnimationProcessCallback<enum_AnimationTree_AnimationProcessCallback>` **process_callback**
 
 
-+-----------+-------------------------+
-| *Default* | ``1``                   |
-+-----------+-------------------------+
-| *Setter*  | set_process_mode(value) |
-+-----------+-------------------------+
-| *Getter*  | get_process_mode()      |
-+-----------+-------------------------+
++-----------+-----------------------------+
+| *Default* | ``1``                       |
++-----------+-----------------------------+
+| *Setter*  | set_process_callback(value) |
++-----------+-----------------------------+
+| *Getter*  | get_process_callback()      |
++-----------+-----------------------------+
 
 
-The process mode of this ``AnimationTree``. See :ref:`AnimationProcessMode<enum_AnimationTree_AnimationProcessMode>` for available modes.
+The process mode of this ``AnimationTree``. See :ref:`AnimationProcessCallback<enum_AnimationTree_AnimationProcessCallback>` for available modes.
 
 
 ----
 ----
 
 
@@ -128,6 +135,10 @@ The process mode of this ``AnimationTree``. See :ref:`AnimationProcessMode<enum_
 | *Getter*  | get_root_motion_track()      |
 | *Getter*  | get_root_motion_track()      |
 +-----------+------------------------------+
 +-----------+------------------------------+
 
 
+The path to the Animation track used for root motion. Paths must be valid scene-tree paths to a node, and must be specified starting from the parent node of the node that will reproduce the animation. To specify a track that controls properties or bones, append its name after the path, separated by ``":"``. For example, ``"character/skeleton:ankle"`` or ``"character/mesh:transform/local"``.
+
+If the track has type :ref:`Animation.TYPE_TRANSFORM3D<class_Animation_constant_TYPE_TRANSFORM3D>`, the transformation will be cancelled visually, and the animation will appear to stay in place. See also :ref:`get_root_motion_transform<class_AnimationTree_method_get_root_motion_transform>` and :ref:`RootMotionView<class_RootMotionView>`.
+
 ----
 ----
 
 
 .. _class_AnimationTree_property_tree_root:
 .. _class_AnimationTree_property_tree_root:
@@ -155,7 +166,9 @@ Manually advance the animations by the specified time (in seconds).
 
 
 .. _class_AnimationTree_method_get_root_motion_transform:
 .. _class_AnimationTree_method_get_root_motion_transform:
 
 
-- :ref:`Transform<class_Transform>` **get_root_motion_transform** **(** **)** const
+- :ref:`Transform3D<class_Transform3D>` **get_root_motion_transform** **(** **)** |const|
+
+Retrieve the motion of the :ref:`root_motion_track<class_AnimationTree_property_root_motion_track>` as a :ref:`Transform3D<class_Transform3D>` that can be used elsewhere. If :ref:`root_motion_track<class_AnimationTree_property_root_motion_track>` is not a path to a track of type :ref:`Animation.TYPE_TRANSFORM3D<class_Animation_constant_TYPE_TRANSFORM3D>`, returns an identity transformation. See also :ref:`root_motion_track<class_AnimationTree_property_root_motion_track>` and :ref:`RootMotionView<class_RootMotionView>`.
 
 
 ----
 ----
 
 
@@ -163,3 +176,9 @@ Manually advance the animations by the specified time (in seconds).
 
 
 - void **rename_parameter** **(** :ref:`String<class_String>` old_name, :ref:`String<class_String>` new_name **)**
 - void **rename_parameter** **(** :ref:`String<class_String>` old_name, :ref:`String<class_String>` new_name **)**
 
 
+.. |virtual| replace:: :abbr:`virtual (This method should typically be overridden by the user to have any effect.)`
+.. |const| replace:: :abbr:`const (This method has no side effects. It doesn't modify any of the instance's member variables.)`
+.. |vararg| replace:: :abbr:`vararg (This method accepts any number of arguments after the ones described here.)`
+.. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)`
+.. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)`
+.. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)`

+ 0 - 542
classes/class_area.rst

@@ -1,542 +0,0 @@
-:github_url: hide
-
-.. Generated automatically by doc/tools/makerst.py in Godot's source tree.
-.. DO NOT EDIT THIS FILE, but the Area.xml source instead.
-.. The source is found in doc/classes or modules/<name>/doc_classes.
-
-.. _class_Area:
-
-Area
-====
-
-**Inherits:** :ref:`CollisionObject<class_CollisionObject>` **<** :ref:`Spatial<class_Spatial>` **<** :ref:`Node<class_Node>` **<** :ref:`Object<class_Object>`
-
-General-purpose area node for detection and 3D physics influence.
-
-Description
------------
-
-3D area that detects :ref:`CollisionObject<class_CollisionObject>` nodes overlapping, entering, or exiting. Can also alter or override local physics parameters (gravity, damping).
-
-Properties
-----------
-
-+-----------------------------------------------+---------------------------------------------------------------------------+-------------------------+
-| :ref:`float<class_float>`                     | :ref:`angular_damp<class_Area_property_angular_damp>`                     | ``0.1``                 |
-+-----------------------------------------------+---------------------------------------------------------------------------+-------------------------+
-| :ref:`StringName<class_StringName>`           | :ref:`audio_bus_name<class_Area_property_audio_bus_name>`                 | ``@"Master"``           |
-+-----------------------------------------------+---------------------------------------------------------------------------+-------------------------+
-| :ref:`bool<class_bool>`                       | :ref:`audio_bus_override<class_Area_property_audio_bus_override>`         | ``false``               |
-+-----------------------------------------------+---------------------------------------------------------------------------+-------------------------+
-| :ref:`int<class_int>`                         | :ref:`collision_layer<class_Area_property_collision_layer>`               | ``1``                   |
-+-----------------------------------------------+---------------------------------------------------------------------------+-------------------------+
-| :ref:`int<class_int>`                         | :ref:`collision_mask<class_Area_property_collision_mask>`                 | ``1``                   |
-+-----------------------------------------------+---------------------------------------------------------------------------+-------------------------+
-| :ref:`float<class_float>`                     | :ref:`gravity<class_Area_property_gravity>`                               | ``9.8``                 |
-+-----------------------------------------------+---------------------------------------------------------------------------+-------------------------+
-| :ref:`float<class_float>`                     | :ref:`gravity_distance_scale<class_Area_property_gravity_distance_scale>` | ``0.0``                 |
-+-----------------------------------------------+---------------------------------------------------------------------------+-------------------------+
-| :ref:`bool<class_bool>`                       | :ref:`gravity_point<class_Area_property_gravity_point>`                   | ``false``               |
-+-----------------------------------------------+---------------------------------------------------------------------------+-------------------------+
-| :ref:`Vector3<class_Vector3>`                 | :ref:`gravity_vec<class_Area_property_gravity_vec>`                       | ``Vector3( 0, -1, 0 )`` |
-+-----------------------------------------------+---------------------------------------------------------------------------+-------------------------+
-| :ref:`float<class_float>`                     | :ref:`linear_damp<class_Area_property_linear_damp>`                       | ``0.1``                 |
-+-----------------------------------------------+---------------------------------------------------------------------------+-------------------------+
-| :ref:`bool<class_bool>`                       | :ref:`monitorable<class_Area_property_monitorable>`                       | ``true``                |
-+-----------------------------------------------+---------------------------------------------------------------------------+-------------------------+
-| :ref:`bool<class_bool>`                       | :ref:`monitoring<class_Area_property_monitoring>`                         | ``true``                |
-+-----------------------------------------------+---------------------------------------------------------------------------+-------------------------+
-| :ref:`float<class_float>`                     | :ref:`priority<class_Area_property_priority>`                             | ``0.0``                 |
-+-----------------------------------------------+---------------------------------------------------------------------------+-------------------------+
-| :ref:`float<class_float>`                     | :ref:`reverb_bus_amount<class_Area_property_reverb_bus_amount>`           | ``0.0``                 |
-+-----------------------------------------------+---------------------------------------------------------------------------+-------------------------+
-| :ref:`bool<class_bool>`                       | :ref:`reverb_bus_enable<class_Area_property_reverb_bus_enable>`           | ``false``               |
-+-----------------------------------------------+---------------------------------------------------------------------------+-------------------------+
-| :ref:`StringName<class_StringName>`           | :ref:`reverb_bus_name<class_Area_property_reverb_bus_name>`               | ``@"Master"``           |
-+-----------------------------------------------+---------------------------------------------------------------------------+-------------------------+
-| :ref:`float<class_float>`                     | :ref:`reverb_bus_uniformity<class_Area_property_reverb_bus_uniformity>`   | ``0.0``                 |
-+-----------------------------------------------+---------------------------------------------------------------------------+-------------------------+
-| :ref:`SpaceOverride<enum_Area_SpaceOverride>` | :ref:`space_override<class_Area_property_space_override>`                 | ``0``                   |
-+-----------------------------------------------+---------------------------------------------------------------------------+-------------------------+
-
-Methods
--------
-
-+---------------------------+------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`bool<class_bool>`   | :ref:`get_collision_layer_bit<class_Area_method_get_collision_layer_bit>` **(** :ref:`int<class_int>` bit **)** const                          |
-+---------------------------+------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`bool<class_bool>`   | :ref:`get_collision_mask_bit<class_Area_method_get_collision_mask_bit>` **(** :ref:`int<class_int>` bit **)** const                            |
-+---------------------------+------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`Array<class_Array>` | :ref:`get_overlapping_areas<class_Area_method_get_overlapping_areas>` **(** **)** const                                                        |
-+---------------------------+------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`Array<class_Array>` | :ref:`get_overlapping_bodies<class_Area_method_get_overlapping_bodies>` **(** **)** const                                                      |
-+---------------------------+------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`bool<class_bool>`   | :ref:`overlaps_area<class_Area_method_overlaps_area>` **(** :ref:`Node<class_Node>` area **)** const                                           |
-+---------------------------+------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`bool<class_bool>`   | :ref:`overlaps_body<class_Area_method_overlaps_body>` **(** :ref:`Node<class_Node>` body **)** const                                           |
-+---------------------------+------------------------------------------------------------------------------------------------------------------------------------------------+
-| void                      | :ref:`set_collision_layer_bit<class_Area_method_set_collision_layer_bit>` **(** :ref:`int<class_int>` bit, :ref:`bool<class_bool>` value **)** |
-+---------------------------+------------------------------------------------------------------------------------------------------------------------------------------------+
-| void                      | :ref:`set_collision_mask_bit<class_Area_method_set_collision_mask_bit>` **(** :ref:`int<class_int>` bit, :ref:`bool<class_bool>` value **)**   |
-+---------------------------+------------------------------------------------------------------------------------------------------------------------------------------------+
-
-Signals
--------
-
-.. _class_Area_signal_area_entered:
-
-- **area_entered** **(** :ref:`Area<class_Area>` area **)**
-
-Emitted when another area enters.
-
-----
-
-.. _class_Area_signal_area_exited:
-
-- **area_exited** **(** :ref:`Area<class_Area>` area **)**
-
-Emitted when another area exits.
-
-----
-
-.. _class_Area_signal_area_shape_entered:
-
-- **area_shape_entered** **(** :ref:`int<class_int>` area_id, :ref:`Area<class_Area>` area, :ref:`int<class_int>` area_shape, :ref:`int<class_int>` self_shape **)**
-
-Emitted when another area enters, reporting which areas overlapped. ``shape_owner_get_owner(shape_find_owner(shape))`` returns the parent object of the owner of the ``shape``.
-
-----
-
-.. _class_Area_signal_area_shape_exited:
-
-- **area_shape_exited** **(** :ref:`int<class_int>` area_id, :ref:`Area<class_Area>` area, :ref:`int<class_int>` area_shape, :ref:`int<class_int>` self_shape **)**
-
-Emitted when another area exits, reporting which areas were overlapping.
-
-----
-
-.. _class_Area_signal_body_entered:
-
-- **body_entered** **(** :ref:`Node<class_Node>` body **)**
-
-Emitted when a physics body enters.
-
-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).
-
-----
-
-.. _class_Area_signal_body_exited:
-
-- **body_exited** **(** :ref:`Node<class_Node>` body **)**
-
-Emitted when a physics body exits.
-
-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).
-
-----
-
-.. _class_Area_signal_body_shape_entered:
-
-- **body_shape_entered** **(** :ref:`int<class_int>` body_id, :ref:`Node<class_Node>` body, :ref:`int<class_int>` body_shape, :ref:`int<class_int>` area_shape **)**
-
-Emitted when a physics body enters, reporting which shapes overlapped.
-
-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).
-
-----
-
-.. _class_Area_signal_body_shape_exited:
-
-- **body_shape_exited** **(** :ref:`int<class_int>` body_id, :ref:`Node<class_Node>` body, :ref:`int<class_int>` body_shape, :ref:`int<class_int>` area_shape **)**
-
-Emitted when a physics body exits, reporting which shapes were overlapping.
-
-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).
-
-Enumerations
-------------
-
-.. _enum_Area_SpaceOverride:
-
-.. _class_Area_constant_SPACE_OVERRIDE_DISABLED:
-
-.. _class_Area_constant_SPACE_OVERRIDE_COMBINE:
-
-.. _class_Area_constant_SPACE_OVERRIDE_COMBINE_REPLACE:
-
-.. _class_Area_constant_SPACE_OVERRIDE_REPLACE:
-
-.. _class_Area_constant_SPACE_OVERRIDE_REPLACE_COMBINE:
-
-enum **SpaceOverride**:
-
-- **SPACE_OVERRIDE_DISABLED** = **0** --- This area does not affect gravity/damping.
-
-- **SPACE_OVERRIDE_COMBINE** = **1** --- This area adds its gravity/damping values to whatever has been calculated so far (in :ref:`priority<class_Area_property_priority>` order).
-
-- **SPACE_OVERRIDE_COMBINE_REPLACE** = **2** --- This area adds its gravity/damping values to whatever has been calculated so far (in :ref:`priority<class_Area_property_priority>` order), ignoring any lower priority areas.
-
-- **SPACE_OVERRIDE_REPLACE** = **3** --- This area replaces any gravity/damping, even the defaults, ignoring any lower priority areas.
-
-- **SPACE_OVERRIDE_REPLACE_COMBINE** = **4** --- This area replaces any gravity/damping calculated so far (in :ref:`priority<class_Area_property_priority>` order), but keeps calculating the rest of the areas.
-
-Property Descriptions
----------------------
-
-.. _class_Area_property_angular_damp:
-
-- :ref:`float<class_float>` **angular_damp**
-
-+-----------+-------------------------+
-| *Default* | ``0.1``                 |
-+-----------+-------------------------+
-| *Setter*  | set_angular_damp(value) |
-+-----------+-------------------------+
-| *Getter*  | get_angular_damp()      |
-+-----------+-------------------------+
-
-The rate at which objects stop spinning in this area. Represents the angular velocity lost per second. Values range from ``0`` (no damping) to ``1`` (full damping).
-
-----
-
-.. _class_Area_property_audio_bus_name:
-
-- :ref:`StringName<class_StringName>` **audio_bus_name**
-
-+-----------+----------------------+
-| *Default* | ``@"Master"``        |
-+-----------+----------------------+
-| *Setter*  | set_audio_bus(value) |
-+-----------+----------------------+
-| *Getter*  | get_audio_bus()      |
-+-----------+----------------------+
-
-The name of the area's audio bus.
-
-----
-
-.. _class_Area_property_audio_bus_override:
-
-- :ref:`bool<class_bool>` **audio_bus_override**
-
-+-----------+-------------------------------+
-| *Default* | ``false``                     |
-+-----------+-------------------------------+
-| *Setter*  | set_audio_bus_override(value) |
-+-----------+-------------------------------+
-| *Getter*  | is_overriding_audio_bus()     |
-+-----------+-------------------------------+
-
-If ``true``, the area's audio bus overrides the default audio bus.
-
-----
-
-.. _class_Area_property_collision_layer:
-
-- :ref:`int<class_int>` **collision_layer**
-
-+-----------+----------------------------+
-| *Default* | ``1``                      |
-+-----------+----------------------------+
-| *Setter*  | set_collision_layer(value) |
-+-----------+----------------------------+
-| *Getter*  | get_collision_layer()      |
-+-----------+----------------------------+
-
-The area's physics layer(s). Collidable objects can exist in any of 32 different layers. 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 also :ref:`collision_mask<class_Area_property_collision_mask>`.
-
-----
-
-.. _class_Area_property_collision_mask:
-
-- :ref:`int<class_int>` **collision_mask**
-
-+-----------+---------------------------+
-| *Default* | ``1``                     |
-+-----------+---------------------------+
-| *Setter*  | set_collision_mask(value) |
-+-----------+---------------------------+
-| *Getter*  | get_collision_mask()      |
-+-----------+---------------------------+
-
-The physics layers this area scans to determine collision detection.
-
-----
-
-.. _class_Area_property_gravity:
-
-- :ref:`float<class_float>` **gravity**
-
-+-----------+--------------------+
-| *Default* | ``9.8``            |
-+-----------+--------------------+
-| *Setter*  | set_gravity(value) |
-+-----------+--------------------+
-| *Getter*  | get_gravity()      |
-+-----------+--------------------+
-
-The area's gravity intensity (ranges from -1024 to 1024). This value multiplies the gravity vector. This is useful to alter the force of gravity without altering its direction.
-
-----
-
-.. _class_Area_property_gravity_distance_scale:
-
-- :ref:`float<class_float>` **gravity_distance_scale**
-
-+-----------+-----------------------------------+
-| *Default* | ``0.0``                           |
-+-----------+-----------------------------------+
-| *Setter*  | set_gravity_distance_scale(value) |
-+-----------+-----------------------------------+
-| *Getter*  | get_gravity_distance_scale()      |
-+-----------+-----------------------------------+
-
-The falloff factor for point gravity. The greater the value, the faster gravity decreases with distance.
-
-----
-
-.. _class_Area_property_gravity_point:
-
-- :ref:`bool<class_bool>` **gravity_point**
-
-+-----------+-----------------------------+
-| *Default* | ``false``                   |
-+-----------+-----------------------------+
-| *Setter*  | set_gravity_is_point(value) |
-+-----------+-----------------------------+
-| *Getter*  | is_gravity_a_point()        |
-+-----------+-----------------------------+
-
-If ``true``, gravity is calculated from a point (set via :ref:`gravity_vec<class_Area_property_gravity_vec>`). See also :ref:`space_override<class_Area_property_space_override>`.
-
-----
-
-.. _class_Area_property_gravity_vec:
-
-- :ref:`Vector3<class_Vector3>` **gravity_vec**
-
-+-----------+---------------------------+
-| *Default* | ``Vector3( 0, -1, 0 )``   |
-+-----------+---------------------------+
-| *Setter*  | set_gravity_vector(value) |
-+-----------+---------------------------+
-| *Getter*  | get_gravity_vector()      |
-+-----------+---------------------------+
-
-The area's gravity vector (not normalized). If gravity is a point (see :ref:`gravity_point<class_Area_property_gravity_point>`), this will be the point of attraction.
-
-----
-
-.. _class_Area_property_linear_damp:
-
-- :ref:`float<class_float>` **linear_damp**
-
-+-----------+------------------------+
-| *Default* | ``0.1``                |
-+-----------+------------------------+
-| *Setter*  | set_linear_damp(value) |
-+-----------+------------------------+
-| *Getter*  | get_linear_damp()      |
-+-----------+------------------------+
-
-The rate at which objects stop moving in this area. Represents the linear velocity lost per second. Values range from ``0`` (no damping) to ``1`` (full damping).
-
-----
-
-.. _class_Area_property_monitorable:
-
-- :ref:`bool<class_bool>` **monitorable**
-
-+-----------+------------------------+
-| *Default* | ``true``               |
-+-----------+------------------------+
-| *Setter*  | set_monitorable(value) |
-+-----------+------------------------+
-| *Getter*  | is_monitorable()       |
-+-----------+------------------------+
-
-If ``true``, other monitoring areas can detect this area.
-
-----
-
-.. _class_Area_property_monitoring:
-
-- :ref:`bool<class_bool>` **monitoring**
-
-+-----------+-----------------------+
-| *Default* | ``true``              |
-+-----------+-----------------------+
-| *Setter*  | set_monitoring(value) |
-+-----------+-----------------------+
-| *Getter*  | is_monitoring()       |
-+-----------+-----------------------+
-
-If ``true``, the area detects bodies or areas entering and exiting it.
-
-----
-
-.. _class_Area_property_priority:
-
-- :ref:`float<class_float>` **priority**
-
-+-----------+---------------------+
-| *Default* | ``0.0``             |
-+-----------+---------------------+
-| *Setter*  | set_priority(value) |
-+-----------+---------------------+
-| *Getter*  | get_priority()      |
-+-----------+---------------------+
-
-The area's priority. Higher priority areas are processed first.
-
-----
-
-.. _class_Area_property_reverb_bus_amount:
-
-- :ref:`float<class_float>` **reverb_bus_amount**
-
-+-----------+--------------------------+
-| *Default* | ``0.0``                  |
-+-----------+--------------------------+
-| *Setter*  | set_reverb_amount(value) |
-+-----------+--------------------------+
-| *Getter*  | get_reverb_amount()      |
-+-----------+--------------------------+
-
-The degree to which this area applies reverb to its associated audio. Ranges from ``0`` to ``1`` with ``0.1`` precision.
-
-----
-
-.. _class_Area_property_reverb_bus_enable:
-
-- :ref:`bool<class_bool>` **reverb_bus_enable**
-
-+-----------+---------------------------+
-| *Default* | ``false``                 |
-+-----------+---------------------------+
-| *Setter*  | set_use_reverb_bus(value) |
-+-----------+---------------------------+
-| *Getter*  | is_using_reverb_bus()     |
-+-----------+---------------------------+
-
-If ``true``, the area applies reverb to its associated audio.
-
-----
-
-.. _class_Area_property_reverb_bus_name:
-
-- :ref:`StringName<class_StringName>` **reverb_bus_name**
-
-+-----------+-----------------------+
-| *Default* | ``@"Master"``         |
-+-----------+-----------------------+
-| *Setter*  | set_reverb_bus(value) |
-+-----------+-----------------------+
-| *Getter*  | get_reverb_bus()      |
-+-----------+-----------------------+
-
-The reverb bus name to use for this area's associated audio.
-
-----
-
-.. _class_Area_property_reverb_bus_uniformity:
-
-- :ref:`float<class_float>` **reverb_bus_uniformity**
-
-+-----------+------------------------------+
-| *Default* | ``0.0``                      |
-+-----------+------------------------------+
-| *Setter*  | set_reverb_uniformity(value) |
-+-----------+------------------------------+
-| *Getter*  | get_reverb_uniformity()      |
-+-----------+------------------------------+
-
-The degree to which this area's reverb is a uniform effect. Ranges from ``0`` to ``1`` with ``0.1`` precision.
-
-----
-
-.. _class_Area_property_space_override:
-
-- :ref:`SpaceOverride<enum_Area_SpaceOverride>` **space_override**
-
-+-----------+--------------------------------+
-| *Default* | ``0``                          |
-+-----------+--------------------------------+
-| *Setter*  | set_space_override_mode(value) |
-+-----------+--------------------------------+
-| *Getter*  | get_space_override_mode()      |
-+-----------+--------------------------------+
-
-Override mode for gravity and damping calculations within this area. See :ref:`SpaceOverride<enum_Area_SpaceOverride>` for possible values.
-
-Method Descriptions
--------------------
-
-.. _class_Area_method_get_collision_layer_bit:
-
-- :ref:`bool<class_bool>` **get_collision_layer_bit** **(** :ref:`int<class_int>` bit **)** const
-
-Returns an individual bit on the layer mask.
-
-----
-
-.. _class_Area_method_get_collision_mask_bit:
-
-- :ref:`bool<class_bool>` **get_collision_mask_bit** **(** :ref:`int<class_int>` bit **)** const
-
-Returns an individual bit on the collision mask.
-
-----
-
-.. _class_Area_method_get_overlapping_areas:
-
-- :ref:`Array<class_Array>` **get_overlapping_areas** **(** **)** const
-
-Returns a list of intersecting ``Area``\ s. For performance reasons (collisions are all processed at the same time) this list is modified once during the physics step, not immediately after objects are moved. Consider using signals instead.
-
-----
-
-.. _class_Area_method_get_overlapping_bodies:
-
-- :ref:`Array<class_Array>` **get_overlapping_bodies** **(** **)** const
-
-Returns a list of intersecting :ref:`PhysicsBody<class_PhysicsBody>`\ s. For performance reasons (collisions are all processed at the same time) this list is modified once during the physics step, not immediately after objects are moved. Consider using signals instead.
-
-----
-
-.. _class_Area_method_overlaps_area:
-
-- :ref:`bool<class_bool>` **overlaps_area** **(** :ref:`Node<class_Node>` area **)** const
-
-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.
-
-----
-
-.. _class_Area_method_overlaps_body:
-
-- :ref:`bool<class_bool>` **overlaps_body** **(** :ref:`Node<class_Node>` body **)** const
-
-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.
-
-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).
-
-----
-
-.. _class_Area_method_set_collision_layer_bit:
-
-- void **set_collision_layer_bit** **(** :ref:`int<class_int>` bit, :ref:`bool<class_bool>` value **)**
-
-Set/clear individual bits on the layer mask. This simplifies editing this ``Area``'s layers.
-
-----
-
-.. _class_Area_method_set_collision_mask_bit:
-
-- void **set_collision_mask_bit** **(** :ref:`int<class_int>` bit, :ref:`bool<class_bool>` value **)**
-
-Set/clear individual bits on the collision mask. This simplifies editing which ``Area`` layers this ``Area`` scans.
-

+ 114 - 142
classes/class_area2d.rst

@@ -11,71 +11,65 @@ Area2D
 
 
 **Inherits:** :ref:`CollisionObject2D<class_CollisionObject2D>` **<** :ref:`Node2D<class_Node2D>` **<** :ref:`CanvasItem<class_CanvasItem>` **<** :ref:`Node<class_Node>` **<** :ref:`Object<class_Object>`
 **Inherits:** :ref:`CollisionObject2D<class_CollisionObject2D>` **<** :ref:`Node2D<class_Node2D>` **<** :ref:`CanvasItem<class_CanvasItem>` **<** :ref:`Node<class_Node>` **<** :ref:`Object<class_Object>`
 
 
-2D area for detection and 2D physics influence.
+2D area for detection and physics and audio influence.
 
 
 Description
 Description
 -----------
 -----------
 
 
-2D area that detects :ref:`CollisionObject2D<class_CollisionObject2D>` nodes overlapping, entering, or exiting. Can also alter or override local physics parameters (gravity, damping).
+2D area that detects :ref:`CollisionObject2D<class_CollisionObject2D>` nodes overlapping, entering, or exiting. Can also alter or override local physics parameters (gravity, damping) and route audio to a custom audio bus.
 
 
 Tutorials
 Tutorials
 ---------
 ---------
 
 
 - :doc:`../tutorials/physics/using_area_2d`
 - :doc:`../tutorials/physics/using_area_2d`
 
 
+- `2D Dodge The Creeps Demo <https://godotengine.org/asset-library/asset/515>`__
+
+- `2D Pong Demo <https://godotengine.org/asset-library/asset/121>`__
+
+- `2D Platformer Demo <https://godotengine.org/asset-library/asset/120>`__
+
 Properties
 Properties
 ----------
 ----------
 
 
-+-------------------------------------------------+-----------------------------------------------------------------------------+---------------------+
-| :ref:`float<class_float>`                       | :ref:`angular_damp<class_Area2D_property_angular_damp>`                     | ``1.0``             |
-+-------------------------------------------------+-----------------------------------------------------------------------------+---------------------+
-| :ref:`StringName<class_StringName>`             | :ref:`audio_bus_name<class_Area2D_property_audio_bus_name>`                 | ``@"Master"``       |
-+-------------------------------------------------+-----------------------------------------------------------------------------+---------------------+
-| :ref:`bool<class_bool>`                         | :ref:`audio_bus_override<class_Area2D_property_audio_bus_override>`         | ``false``           |
-+-------------------------------------------------+-----------------------------------------------------------------------------+---------------------+
-| :ref:`int<class_int>`                           | :ref:`collision_layer<class_Area2D_property_collision_layer>`               | ``1``               |
-+-------------------------------------------------+-----------------------------------------------------------------------------+---------------------+
-| :ref:`int<class_int>`                           | :ref:`collision_mask<class_Area2D_property_collision_mask>`                 | ``1``               |
-+-------------------------------------------------+-----------------------------------------------------------------------------+---------------------+
-| :ref:`float<class_float>`                       | :ref:`gravity<class_Area2D_property_gravity>`                               | ``98.0``            |
-+-------------------------------------------------+-----------------------------------------------------------------------------+---------------------+
-| :ref:`float<class_float>`                       | :ref:`gravity_distance_scale<class_Area2D_property_gravity_distance_scale>` | ``0.0``             |
-+-------------------------------------------------+-----------------------------------------------------------------------------+---------------------+
-| :ref:`bool<class_bool>`                         | :ref:`gravity_point<class_Area2D_property_gravity_point>`                   | ``false``           |
-+-------------------------------------------------+-----------------------------------------------------------------------------+---------------------+
-| :ref:`Vector2<class_Vector2>`                   | :ref:`gravity_vec<class_Area2D_property_gravity_vec>`                       | ``Vector2( 0, 1 )`` |
-+-------------------------------------------------+-----------------------------------------------------------------------------+---------------------+
-| :ref:`float<class_float>`                       | :ref:`linear_damp<class_Area2D_property_linear_damp>`                       | ``0.1``             |
-+-------------------------------------------------+-----------------------------------------------------------------------------+---------------------+
-| :ref:`bool<class_bool>`                         | :ref:`monitorable<class_Area2D_property_monitorable>`                       | ``true``            |
-+-------------------------------------------------+-----------------------------------------------------------------------------+---------------------+
-| :ref:`bool<class_bool>`                         | :ref:`monitoring<class_Area2D_property_monitoring>`                         | ``true``            |
-+-------------------------------------------------+-----------------------------------------------------------------------------+---------------------+
-| :ref:`float<class_float>`                       | :ref:`priority<class_Area2D_property_priority>`                             | ``0.0``             |
-+-------------------------------------------------+-----------------------------------------------------------------------------+---------------------+
-| :ref:`SpaceOverride<enum_Area2D_SpaceOverride>` | :ref:`space_override<class_Area2D_property_space_override>`                 | ``0``               |
-+-------------------------------------------------+-----------------------------------------------------------------------------+---------------------+
++-------------------------------------------------+-----------------------------------------------------------------------------+-------------------+
+| :ref:`float<class_float>`                       | :ref:`angular_damp<class_Area2D_property_angular_damp>`                     | ``1.0``           |
++-------------------------------------------------+-----------------------------------------------------------------------------+-------------------+
+| :ref:`StringName<class_StringName>`             | :ref:`audio_bus_name<class_Area2D_property_audio_bus_name>`                 | ``&"Master"``     |
++-------------------------------------------------+-----------------------------------------------------------------------------+-------------------+
+| :ref:`bool<class_bool>`                         | :ref:`audio_bus_override<class_Area2D_property_audio_bus_override>`         | ``false``         |
++-------------------------------------------------+-----------------------------------------------------------------------------+-------------------+
+| :ref:`float<class_float>`                       | :ref:`gravity<class_Area2D_property_gravity>`                               | ``980.0``         |
++-------------------------------------------------+-----------------------------------------------------------------------------+-------------------+
+| :ref:`float<class_float>`                       | :ref:`gravity_distance_scale<class_Area2D_property_gravity_distance_scale>` | ``0.0``           |
++-------------------------------------------------+-----------------------------------------------------------------------------+-------------------+
+| :ref:`bool<class_bool>`                         | :ref:`gravity_point<class_Area2D_property_gravity_point>`                   | ``false``         |
++-------------------------------------------------+-----------------------------------------------------------------------------+-------------------+
+| :ref:`Vector2<class_Vector2>`                   | :ref:`gravity_vec<class_Area2D_property_gravity_vec>`                       | ``Vector2(0, 1)`` |
++-------------------------------------------------+-----------------------------------------------------------------------------+-------------------+
+| :ref:`float<class_float>`                       | :ref:`linear_damp<class_Area2D_property_linear_damp>`                       | ``0.1``           |
++-------------------------------------------------+-----------------------------------------------------------------------------+-------------------+
+| :ref:`bool<class_bool>`                         | :ref:`monitorable<class_Area2D_property_monitorable>`                       | ``true``          |
++-------------------------------------------------+-----------------------------------------------------------------------------+-------------------+
+| :ref:`bool<class_bool>`                         | :ref:`monitoring<class_Area2D_property_monitoring>`                         | ``true``          |
++-------------------------------------------------+-----------------------------------------------------------------------------+-------------------+
+| :ref:`float<class_float>`                       | :ref:`priority<class_Area2D_property_priority>`                             | ``0.0``           |
++-------------------------------------------------+-----------------------------------------------------------------------------+-------------------+
+| :ref:`SpaceOverride<enum_Area2D_SpaceOverride>` | :ref:`space_override<class_Area2D_property_space_override>`                 | ``0``             |
++-------------------------------------------------+-----------------------------------------------------------------------------+-------------------+
 
 
 Methods
 Methods
 -------
 -------
 
 
-+---------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`bool<class_bool>`   | :ref:`get_collision_layer_bit<class_Area2D_method_get_collision_layer_bit>` **(** :ref:`int<class_int>` bit **)** const                          |
-+---------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`bool<class_bool>`   | :ref:`get_collision_mask_bit<class_Area2D_method_get_collision_mask_bit>` **(** :ref:`int<class_int>` bit **)** const                            |
-+---------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`Array<class_Array>` | :ref:`get_overlapping_areas<class_Area2D_method_get_overlapping_areas>` **(** **)** const                                                        |
-+---------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`Array<class_Array>` | :ref:`get_overlapping_bodies<class_Area2D_method_get_overlapping_bodies>` **(** **)** const                                                      |
-+---------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`bool<class_bool>`   | :ref:`overlaps_area<class_Area2D_method_overlaps_area>` **(** :ref:`Node<class_Node>` area **)** const                                           |
-+---------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`bool<class_bool>`   | :ref:`overlaps_body<class_Area2D_method_overlaps_body>` **(** :ref:`Node<class_Node>` body **)** const                                           |
-+---------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------+
-| void                      | :ref:`set_collision_layer_bit<class_Area2D_method_set_collision_layer_bit>` **(** :ref:`int<class_int>` bit, :ref:`bool<class_bool>` value **)** |
-+---------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------+
-| void                      | :ref:`set_collision_mask_bit<class_Area2D_method_set_collision_mask_bit>` **(** :ref:`int<class_int>` bit, :ref:`bool<class_bool>` value **)**   |
-+---------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------+
++-------------------------------+----------------------------------------------------------------------------------------------------------+
+| :ref:`Area2D[]<class_Area2D>` | :ref:`get_overlapping_areas<class_Area2D_method_get_overlapping_areas>` **(** **)** |const|              |
++-------------------------------+----------------------------------------------------------------------------------------------------------+
+| :ref:`Node2D[]<class_Node2D>` | :ref:`get_overlapping_bodies<class_Area2D_method_get_overlapping_bodies>` **(** **)** |const|            |
++-------------------------------+----------------------------------------------------------------------------------------------------------+
+| :ref:`bool<class_bool>`       | :ref:`overlaps_area<class_Area2D_method_overlaps_area>` **(** :ref:`Node<class_Node>` area **)** |const| |
++-------------------------------+----------------------------------------------------------------------------------------------------------+
+| :ref:`bool<class_bool>`       | :ref:`overlaps_body<class_Area2D_method_overlaps_body>` **(** :ref:`Node<class_Node>` body **)** |const| |
++-------------------------------+----------------------------------------------------------------------------------------------------------+
 
 
 Signals
 Signals
 -------
 -------
@@ -84,7 +78,9 @@ Signals
 
 
 - **area_entered** **(** :ref:`Area2D<class_Area2D>` area **)**
 - **area_entered** **(** :ref:`Area2D<class_Area2D>` area **)**
 
 
-Emitted when another area enters.
+Emitted when another Area2D enters this Area2D. Requires :ref:`monitoring<class_Area2D_property_monitoring>` to be set to ``true``.
+
+``area`` the other Area2D.
 
 
 ----
 ----
 
 
@@ -92,63 +88,93 @@ Emitted when another area enters.
 
 
 - **area_exited** **(** :ref:`Area2D<class_Area2D>` area **)**
 - **area_exited** **(** :ref:`Area2D<class_Area2D>` area **)**
 
 
-Emitted when another area exits.
+Emitted when another Area2D exits this Area2D. Requires :ref:`monitoring<class_Area2D_property_monitoring>` to be set to ``true``.
+
+``area`` the other Area2D.
 
 
 ----
 ----
 
 
 .. _class_Area2D_signal_area_shape_entered:
 .. _class_Area2D_signal_area_shape_entered:
 
 
-- **area_shape_entered** **(** :ref:`int<class_int>` area_id, :ref:`Area2D<class_Area2D>` area, :ref:`int<class_int>` area_shape, :ref:`int<class_int>` self_shape **)**
+- **area_shape_entered** **(** :ref:`RID<class_RID>` area_rid, :ref:`Area2D<class_Area2D>` area, :ref:`int<class_int>` area_shape, :ref:`int<class_int>` local_shape **)**
+
+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_id`` the :ref:`RID<class_RID>` of the other Area2D's :ref:`CollisionObject2D<class_CollisionObject2D>` used by the :ref:`PhysicsServer2D<class_PhysicsServer2D>`.
+
+``area`` the other Area2D.
 
 
-Emitted when another area enters, reporting which shapes overlapped. ``shape_owner_get_owner(shape_find_owner(shape))`` returns the parent object of the owner of the ``shape``.
+``area_shape`` the index of the :ref:`Shape2D<class_Shape2D>` of the other Area2D used by the :ref:`PhysicsServer2D<class_PhysicsServer2D>`.
+
+``local_shape`` the index of the :ref:`Shape2D<class_Shape2D>` of this Area2D used by the :ref:`PhysicsServer2D<class_PhysicsServer2D>`.
 
 
 ----
 ----
 
 
 .. _class_Area2D_signal_area_shape_exited:
 .. _class_Area2D_signal_area_shape_exited:
 
 
-- **area_shape_exited** **(** :ref:`int<class_int>` area_id, :ref:`Area2D<class_Area2D>` area, :ref:`int<class_int>` area_shape, :ref:`int<class_int>` self_shape **)**
+- **area_shape_exited** **(** :ref:`RID<class_RID>` area_rid, :ref:`Area2D<class_Area2D>` area, :ref:`int<class_int>` area_shape, :ref:`int<class_int>` local_shape **)**
+
+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_id`` the :ref:`RID<class_RID>` of the other Area2D's :ref:`CollisionObject2D<class_CollisionObject2D>` used by the :ref:`PhysicsServer2D<class_PhysicsServer2D>`.
+
+``area`` the other Area2D.
 
 
-Emitted when another area exits, reporting which shapes were overlapping.
+``area_shape`` the index of the :ref:`Shape2D<class_Shape2D>` of the other Area2D used by the :ref:`PhysicsServer2D<class_PhysicsServer2D>`.
+
+``local_shape`` the index of the :ref:`Shape2D<class_Shape2D>` of this Area2D used by the :ref:`PhysicsServer2D<class_PhysicsServer2D>`.
 
 
 ----
 ----
 
 
 .. _class_Area2D_signal_body_entered:
 .. _class_Area2D_signal_body_entered:
 
 
-- **body_entered** **(** :ref:`Node<class_Node>` body **)**
+- **body_entered** **(** :ref:`Node2D<class_Node2D>` body **)**
 
 
-Emitted when a physics body enters.
+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.
 
 
-The ``body`` argument can either be a :ref:`PhysicsBody2D<class_PhysicsBody2D>` or a :ref:`TileMap<class_TileMap>` instance (while TileMaps are not physics body themselves, they register their tiles with collision shapes as a virtual physics body).
+``body`` the :ref:`Node<class_Node>`, if it exists in the tree, of the other :ref:`PhysicsBody2D<class_PhysicsBody2D>` or :ref:`TileMap<class_TileMap>`.
 
 
 ----
 ----
 
 
 .. _class_Area2D_signal_body_exited:
 .. _class_Area2D_signal_body_exited:
 
 
-- **body_exited** **(** :ref:`Node<class_Node>` body **)**
+- **body_exited** **(** :ref:`Node2D<class_Node2D>` body **)**
 
 
-Emitted when a physics body exits.
+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.
 
 
-The ``body`` argument can either be a :ref:`PhysicsBody2D<class_PhysicsBody2D>` or a :ref:`TileMap<class_TileMap>` instance (while TileMaps are not physics body themselves, they register their tiles with collision shapes as a virtual physics body).
+``body`` the :ref:`Node<class_Node>`, if it exists in the tree, of the other :ref:`PhysicsBody2D<class_PhysicsBody2D>` or :ref:`TileMap<class_TileMap>`.
 
 
 ----
 ----
 
 
 .. _class_Area2D_signal_body_shape_entered:
 .. _class_Area2D_signal_body_shape_entered:
 
 
-- **body_shape_entered** **(** :ref:`int<class_int>` body_id, :ref:`Node<class_Node>` body, :ref:`int<class_int>` body_shape, :ref:`int<class_int>` area_shape **)**
+- **body_shape_entered** **(** :ref:`RID<class_RID>` body_rid, :ref:`Node2D<class_Node2D>` body, :ref:`int<class_int>` body_shape, :ref:`int<class_int>` local_shape **)**
+
+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_id`` 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:`PhysicsServer2D<class_PhysicsServer2D>`.
 
 
-Emitted when a physics body enters, reporting which shapes overlapped.
+``body`` the :ref:`Node<class_Node>`, if it exists in the tree, of the :ref:`PhysicsBody2D<class_PhysicsBody2D>` or :ref:`TileMap<class_TileMap>`.
 
 
-The ``body`` argument can either be a :ref:`PhysicsBody2D<class_PhysicsBody2D>` or a :ref:`TileMap<class_TileMap>` instance (while TileMaps are not physics body themselves, they register their tiles with collision shapes as a virtual physics body).
+``body_shape`` the index of the :ref:`Shape2D<class_Shape2D>` of the :ref:`PhysicsBody2D<class_PhysicsBody2D>` or :ref:`TileMap<class_TileMap>` used by the :ref:`PhysicsServer2D<class_PhysicsServer2D>`.
+
+``local_shape`` the index of the :ref:`Shape2D<class_Shape2D>` of this Area2D used by the :ref:`PhysicsServer2D<class_PhysicsServer2D>`.
 
 
 ----
 ----
 
 
 .. _class_Area2D_signal_body_shape_exited:
 .. _class_Area2D_signal_body_shape_exited:
 
 
-- **body_shape_exited** **(** :ref:`int<class_int>` body_id, :ref:`Node<class_Node>` body, :ref:`int<class_int>` body_shape, :ref:`int<class_int>` area_shape **)**
+- **body_shape_exited** **(** :ref:`RID<class_RID>` body_rid, :ref:`Node2D<class_Node2D>` body, :ref:`int<class_int>` body_shape, :ref:`int<class_int>` local_shape **)**
+
+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_id`` 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:`PhysicsServer2D<class_PhysicsServer2D>`.
+
+``body`` the :ref:`Node<class_Node>`, if it exists in the tree, of the :ref:`PhysicsBody2D<class_PhysicsBody2D>` or :ref:`TileMap<class_TileMap>`.
 
 
-Emitted when a physics body exits, reporting which shapes were overlapping.
+``body_shape`` the index of the :ref:`Shape2D<class_Shape2D>` of the :ref:`PhysicsBody2D<class_PhysicsBody2D>` or :ref:`TileMap<class_TileMap>` used by the :ref:`PhysicsServer2D<class_PhysicsServer2D>`.
 
 
-The ``body`` argument can either be a :ref:`PhysicsBody2D<class_PhysicsBody2D>` or a :ref:`TileMap<class_TileMap>` instance (while TileMaps are not physics body themselves, they register their tiles with collision shapes as a virtual physics body).
+``local_shape`` the index of the :ref:`Shape2D<class_Shape2D>` of this Area2D used by the :ref:`PhysicsServer2D<class_PhysicsServer2D>`.
 
 
 Enumerations
 Enumerations
 ------------
 ------------
@@ -192,7 +218,9 @@ Property Descriptions
 | *Getter*  | get_angular_damp()      |
 | *Getter*  | get_angular_damp()      |
 +-----------+-------------------------+
 +-----------+-------------------------+
 
 
-The rate at which objects stop spinning in this area. Represents the angular velocity lost per second. Values range from ``0`` (no damping) to ``1`` (full damping).
+The rate at which objects stop spinning in this area. Represents the angular velocity lost per second.
+
+See :ref:`ProjectSettings.physics/2d/default_angular_damp<class_ProjectSettings_property_physics/2d/default_angular_damp>` for more details about damping.
 
 
 ----
 ----
 
 
@@ -201,7 +229,7 @@ The rate at which objects stop spinning in this area. Represents the angular vel
 - :ref:`StringName<class_StringName>` **audio_bus_name**
 - :ref:`StringName<class_StringName>` **audio_bus_name**
 
 
 +-----------+---------------------------+
 +-----------+---------------------------+
-| *Default* | ``@"Master"``             |
+| *Default* | ``&"Master"``             |
 +-----------+---------------------------+
 +-----------+---------------------------+
 | *Setter*  | set_audio_bus_name(value) |
 | *Setter*  | set_audio_bus_name(value) |
 +-----------+---------------------------+
 +-----------+---------------------------+
@@ -228,51 +256,19 @@ If ``true``, the area's audio bus overrides the default audio bus.
 
 
 ----
 ----
 
 
-.. _class_Area2D_property_collision_layer:
-
-- :ref:`int<class_int>` **collision_layer**
-
-+-----------+----------------------------+
-| *Default* | ``1``                      |
-+-----------+----------------------------+
-| *Setter*  | set_collision_layer(value) |
-+-----------+----------------------------+
-| *Getter*  | get_collision_layer()      |
-+-----------+----------------------------+
-
-The area's physics layer(s). Collidable objects can exist in any of 32 different layers. 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 also :ref:`collision_mask<class_Area2D_property_collision_mask>`.
-
-----
-
-.. _class_Area2D_property_collision_mask:
-
-- :ref:`int<class_int>` **collision_mask**
-
-+-----------+---------------------------+
-| *Default* | ``1``                     |
-+-----------+---------------------------+
-| *Setter*  | set_collision_mask(value) |
-+-----------+---------------------------+
-| *Getter*  | get_collision_mask()      |
-+-----------+---------------------------+
-
-The physics layers this area scans to determine collision detection.
-
-----
-
 .. _class_Area2D_property_gravity:
 .. _class_Area2D_property_gravity:
 
 
 - :ref:`float<class_float>` **gravity**
 - :ref:`float<class_float>` **gravity**
 
 
 +-----------+--------------------+
 +-----------+--------------------+
-| *Default* | ``98.0``           |
+| *Default* | ``980.0``          |
 +-----------+--------------------+
 +-----------+--------------------+
 | *Setter*  | set_gravity(value) |
 | *Setter*  | set_gravity(value) |
 +-----------+--------------------+
 +-----------+--------------------+
 | *Getter*  | get_gravity()      |
 | *Getter*  | get_gravity()      |
 +-----------+--------------------+
 +-----------+--------------------+
 
 
-The area's gravity intensity (ranges from -1024 to 1024). This value multiplies the gravity vector. This is useful to alter the force of gravity without altering its direction.
+The area's gravity intensity (in pixels per second squared). This value multiplies the gravity vector. This is useful to alter the force of gravity without altering its direction.
 
 
 ----
 ----
 
 
@@ -313,7 +309,7 @@ If ``true``, gravity is calculated from a point (set via :ref:`gravity_vec<class
 - :ref:`Vector2<class_Vector2>` **gravity_vec**
 - :ref:`Vector2<class_Vector2>` **gravity_vec**
 
 
 +-----------+---------------------------+
 +-----------+---------------------------+
-| *Default* | ``Vector2( 0, 1 )``       |
+| *Default* | ``Vector2(0, 1)``         |
 +-----------+---------------------------+
 +-----------+---------------------------+
 | *Setter*  | set_gravity_vector(value) |
 | *Setter*  | set_gravity_vector(value) |
 +-----------+---------------------------+
 +-----------+---------------------------+
@@ -336,7 +332,9 @@ The area's gravity vector (not normalized). If gravity is a point (see :ref:`gra
 | *Getter*  | get_linear_damp()      |
 | *Getter*  | get_linear_damp()      |
 +-----------+------------------------+
 +-----------+------------------------+
 
 
-The rate at which objects stop moving in this area. Represents the linear velocity lost per second. Values range from ``0`` (no damping) to ``1`` (full damping).
+The rate at which objects stop moving in this area. Represents the linear velocity lost per second.
+
+See :ref:`ProjectSettings.physics/2d/default_linear_damp<class_ProjectSettings_property_physics/2d/default_linear_damp>` for more details about damping.
 
 
 ----
 ----
 
 
@@ -405,25 +403,9 @@ Override mode for gravity and damping calculations within this area. See :ref:`S
 Method Descriptions
 Method Descriptions
 -------------------
 -------------------
 
 
-.. _class_Area2D_method_get_collision_layer_bit:
-
-- :ref:`bool<class_bool>` **get_collision_layer_bit** **(** :ref:`int<class_int>` bit **)** const
-
-Returns an individual bit on the layer mask. Describes whether other areas will collide with this one on the given layer.
-
-----
-
-.. _class_Area2D_method_get_collision_mask_bit:
-
-- :ref:`bool<class_bool>` **get_collision_mask_bit** **(** :ref:`int<class_int>` bit **)** const
-
-Returns an individual bit on the collision mask. Describes whether this area will collide with others on the given layer.
-
-----
-
 .. _class_Area2D_method_get_overlapping_areas:
 .. _class_Area2D_method_get_overlapping_areas:
 
 
-- :ref:`Array<class_Array>` **get_overlapping_areas** **(** **)** const
+- :ref:`Area2D[]<class_Area2D>` **get_overlapping_areas** **(** **)** |const|
 
 
 Returns a list of intersecting ``Area2D``\ s. For performance reasons (collisions are all processed at the same time) this list is modified once during the physics step, not immediately after objects are moved. Consider using signals instead.
 Returns a list of intersecting ``Area2D``\ s. For performance reasons (collisions are all processed at the same time) this list is modified once during the physics step, not immediately after objects are moved. Consider using signals instead.
 
 
@@ -431,7 +413,7 @@ Returns a list of intersecting ``Area2D``\ s. For performance reasons (collision
 
 
 .. _class_Area2D_method_get_overlapping_bodies:
 .. _class_Area2D_method_get_overlapping_bodies:
 
 
-- :ref:`Array<class_Array>` **get_overlapping_bodies** **(** **)** const
+- :ref:`Node2D[]<class_Node2D>` **get_overlapping_bodies** **(** **)** |const|
 
 
 Returns a list of intersecting :ref:`PhysicsBody2D<class_PhysicsBody2D>`\ s. For performance reasons (collisions are all processed at the same time) this list is modified once during the physics step, not immediately after objects are moved. Consider using signals instead.
 Returns a list of intersecting :ref:`PhysicsBody2D<class_PhysicsBody2D>`\ s. For performance reasons (collisions are all processed at the same time) this list is modified once during the physics step, not immediately after objects are moved. Consider using signals instead.
 
 
@@ -439,37 +421,27 @@ Returns a list of intersecting :ref:`PhysicsBody2D<class_PhysicsBody2D>`\ s. For
 
 
 .. _class_Area2D_method_overlaps_area:
 .. _class_Area2D_method_overlaps_area:
 
 
-- :ref:`bool<class_bool>` **overlaps_area** **(** :ref:`Node<class_Node>` area **)** const
+- :ref:`bool<class_bool>` **overlaps_area** **(** :ref:`Node<class_Node>` area **)** |const|
 
 
 If ``true``, the given area overlaps the Area2D.
 If ``true``, the given area 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, the list of overlaps is updated once per frame and before the physics step. Consider using signals instead.
 
 
 ----
 ----
 
 
 .. _class_Area2D_method_overlaps_body:
 .. _class_Area2D_method_overlaps_body:
 
 
-- :ref:`bool<class_bool>` **overlaps_body** **(** :ref:`Node<class_Node>` body **)** const
+- :ref:`bool<class_bool>` **overlaps_body** **(** :ref:`Node<class_Node>` body **)** |const|
 
 
 If ``true``, the given physics body 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 body themselves, they register their tiles with collision shapes as a virtual physics body).
-
-----
-
-.. _class_Area2D_method_set_collision_layer_bit:
-
-- void **set_collision_layer_bit** **(** :ref:`int<class_int>` bit, :ref:`bool<class_bool>` value **)**
-
-Set/clear individual bits on the layer mask. This makes getting an area in/out of only one layer easier.
-
-----
-
-.. _class_Area2D_method_set_collision_mask_bit:
-
-- void **set_collision_mask_bit** **(** :ref:`int<class_int>` bit, :ref:`bool<class_bool>` value **)**
-
-Set/clear individual bits on the collision mask. This makes selecting the areas scanned easier.
+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).
 
 
+.. |virtual| replace:: :abbr:`virtual (This method should typically be overridden by the user to have any effect.)`
+.. |const| replace:: :abbr:`const (This method has no side effects. It doesn't modify any of the instance's member variables.)`
+.. |vararg| replace:: :abbr:`vararg (This method accepts any number of arguments after the ones described here.)`
+.. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)`
+.. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)`
+.. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)`

+ 569 - 0
classes/class_area3d.rst

@@ -0,0 +1,569 @@
+:github_url: hide
+
+.. Generated automatically by doc/tools/makerst.py in Godot's source tree.
+.. DO NOT EDIT THIS FILE, but the Area3D.xml source instead.
+.. The source is found in doc/classes or modules/<name>/doc_classes.
+
+.. _class_Area3D:
+
+Area3D
+======
+
+**Inherits:** :ref:`CollisionObject3D<class_CollisionObject3D>` **<** :ref:`Node3D<class_Node3D>` **<** :ref:`Node<class_Node>` **<** :ref:`Object<class_Object>`
+
+3D area for detection and physics and audio influence.
+
+Description
+-----------
+
+3D area that detects :ref:`CollisionObject3D<class_CollisionObject3D>` nodes overlapping, entering, or exiting. Can also alter or override local physics parameters (gravity, damping) and route audio to custom audio buses.
+
+Tutorials
+---------
+
+- `3D Platformer Demo <https://godotengine.org/asset-library/asset/125>`__
+
+- `GUI in 3D Demo <https://godotengine.org/asset-library/asset/127>`__
+
+Properties
+----------
+
++-------------------------------------------------+-------------------------------------------------------------------------------+-----------------------+
+| :ref:`float<class_float>`                       | :ref:`angular_damp<class_Area3D_property_angular_damp>`                       | ``0.1``               |
++-------------------------------------------------+-------------------------------------------------------------------------------+-----------------------+
+| :ref:`StringName<class_StringName>`             | :ref:`audio_bus_name<class_Area3D_property_audio_bus_name>`                   | ``&"Master"``         |
++-------------------------------------------------+-------------------------------------------------------------------------------+-----------------------+
+| :ref:`bool<class_bool>`                         | :ref:`audio_bus_override<class_Area3D_property_audio_bus_override>`           | ``false``             |
++-------------------------------------------------+-------------------------------------------------------------------------------+-----------------------+
+| :ref:`float<class_float>`                       | :ref:`gravity<class_Area3D_property_gravity>`                                 | ``9.8``               |
++-------------------------------------------------+-------------------------------------------------------------------------------+-----------------------+
+| :ref:`float<class_float>`                       | :ref:`gravity_distance_scale<class_Area3D_property_gravity_distance_scale>`   | ``0.0``               |
++-------------------------------------------------+-------------------------------------------------------------------------------+-----------------------+
+| :ref:`bool<class_bool>`                         | :ref:`gravity_point<class_Area3D_property_gravity_point>`                     | ``false``             |
++-------------------------------------------------+-------------------------------------------------------------------------------+-----------------------+
+| :ref:`Vector3<class_Vector3>`                   | :ref:`gravity_vec<class_Area3D_property_gravity_vec>`                         | ``Vector3(0, -1, 0)`` |
++-------------------------------------------------+-------------------------------------------------------------------------------+-----------------------+
+| :ref:`float<class_float>`                       | :ref:`linear_damp<class_Area3D_property_linear_damp>`                         | ``0.1``               |
++-------------------------------------------------+-------------------------------------------------------------------------------+-----------------------+
+| :ref:`bool<class_bool>`                         | :ref:`monitorable<class_Area3D_property_monitorable>`                         | ``true``              |
++-------------------------------------------------+-------------------------------------------------------------------------------+-----------------------+
+| :ref:`bool<class_bool>`                         | :ref:`monitoring<class_Area3D_property_monitoring>`                           | ``true``              |
++-------------------------------------------------+-------------------------------------------------------------------------------+-----------------------+
+| :ref:`float<class_float>`                       | :ref:`priority<class_Area3D_property_priority>`                               | ``0.0``               |
++-------------------------------------------------+-------------------------------------------------------------------------------+-----------------------+
+| :ref:`float<class_float>`                       | :ref:`reverb_bus_amount<class_Area3D_property_reverb_bus_amount>`             | ``0.0``               |
++-------------------------------------------------+-------------------------------------------------------------------------------+-----------------------+
+| :ref:`bool<class_bool>`                         | :ref:`reverb_bus_enable<class_Area3D_property_reverb_bus_enable>`             | ``false``             |
++-------------------------------------------------+-------------------------------------------------------------------------------+-----------------------+
+| :ref:`StringName<class_StringName>`             | :ref:`reverb_bus_name<class_Area3D_property_reverb_bus_name>`                 | ``&"Master"``         |
++-------------------------------------------------+-------------------------------------------------------------------------------+-----------------------+
+| :ref:`float<class_float>`                       | :ref:`reverb_bus_uniformity<class_Area3D_property_reverb_bus_uniformity>`     | ``0.0``               |
++-------------------------------------------------+-------------------------------------------------------------------------------+-----------------------+
+| :ref:`SpaceOverride<enum_Area3D_SpaceOverride>` | :ref:`space_override<class_Area3D_property_space_override>`                   | ``0``                 |
++-------------------------------------------------+-------------------------------------------------------------------------------+-----------------------+
+| :ref:`float<class_float>`                       | :ref:`wind_attenuation_factor<class_Area3D_property_wind_attenuation_factor>` | ``0.0``               |
++-------------------------------------------------+-------------------------------------------------------------------------------+-----------------------+
+| :ref:`float<class_float>`                       | :ref:`wind_force_magnitude<class_Area3D_property_wind_force_magnitude>`       | ``0.0``               |
++-------------------------------------------------+-------------------------------------------------------------------------------+-----------------------+
+| :ref:`NodePath<class_NodePath>`                 | :ref:`wind_source_path<class_Area3D_property_wind_source_path>`               | ``NodePath("")``      |
++-------------------------------------------------+-------------------------------------------------------------------------------+-----------------------+
+
+Methods
+-------
+
++-------------------------------+----------------------------------------------------------------------------------------------------------+
+| :ref:`Area3D[]<class_Area3D>` | :ref:`get_overlapping_areas<class_Area3D_method_get_overlapping_areas>` **(** **)** |const|              |
++-------------------------------+----------------------------------------------------------------------------------------------------------+
+| :ref:`Node3D[]<class_Node3D>` | :ref:`get_overlapping_bodies<class_Area3D_method_get_overlapping_bodies>` **(** **)** |const|            |
++-------------------------------+----------------------------------------------------------------------------------------------------------+
+| :ref:`bool<class_bool>`       | :ref:`overlaps_area<class_Area3D_method_overlaps_area>` **(** :ref:`Node<class_Node>` area **)** |const| |
++-------------------------------+----------------------------------------------------------------------------------------------------------+
+| :ref:`bool<class_bool>`       | :ref:`overlaps_body<class_Area3D_method_overlaps_body>` **(** :ref:`Node<class_Node>` body **)** |const| |
++-------------------------------+----------------------------------------------------------------------------------------------------------+
+
+Signals
+-------
+
+.. _class_Area3D_signal_area_entered:
+
+- **area_entered** **(** :ref:`Area3D<class_Area3D>` area **)**
+
+Emitted when another Area3D enters this Area3D. Requires :ref:`monitoring<class_Area3D_property_monitoring>` to be set to ``true``.
+
+``area`` the other Area3D.
+
+----
+
+.. _class_Area3D_signal_area_exited:
+
+- **area_exited** **(** :ref:`Area3D<class_Area3D>` area **)**
+
+Emitted when another Area3D exits this Area3D. Requires :ref:`monitoring<class_Area3D_property_monitoring>` to be set to ``true``.
+
+``area`` the other Area3D.
+
+----
+
+.. _class_Area3D_signal_area_shape_entered:
+
+- **area_shape_entered** **(** :ref:`RID<class_RID>` area_rid, :ref:`Area3D<class_Area3D>` area, :ref:`int<class_int>` area_shape, :ref:`int<class_int>` local_shape **)**
+
+Emitted when one of another Area3D's :ref:`Shape3D<class_Shape3D>`\ s enters one of this Area3D's :ref:`Shape3D<class_Shape3D>`\ s. Requires :ref:`monitoring<class_Area3D_property_monitoring>` to be set to ``true``.
+
+``area_id`` the :ref:`RID<class_RID>` of the other Area3D's :ref:`CollisionObject3D<class_CollisionObject3D>` used by the :ref:`PhysicsServer3D<class_PhysicsServer3D>`.
+
+``area`` the other Area3D.
+
+``area_shape`` the index of the :ref:`Shape3D<class_Shape3D>` of the other Area3D used by the :ref:`PhysicsServer3D<class_PhysicsServer3D>`.
+
+``local_shape`` the index of the :ref:`Shape3D<class_Shape3D>` of this Area3D used by the :ref:`PhysicsServer3D<class_PhysicsServer3D>`.
+
+----
+
+.. _class_Area3D_signal_area_shape_exited:
+
+- **area_shape_exited** **(** :ref:`RID<class_RID>` area_rid, :ref:`Area3D<class_Area3D>` area, :ref:`int<class_int>` area_shape, :ref:`int<class_int>` local_shape **)**
+
+Emitted when one of another Area3D's :ref:`Shape3D<class_Shape3D>`\ s enters one of this Area3D's :ref:`Shape3D<class_Shape3D>`\ s. Requires :ref:`monitoring<class_Area3D_property_monitoring>` to be set to ``true``.
+
+``area_id`` the :ref:`RID<class_RID>` of the other Area3D's :ref:`CollisionObject3D<class_CollisionObject3D>` used by the :ref:`PhysicsServer3D<class_PhysicsServer3D>`.
+
+``area`` the other Area3D.
+
+``area_shape`` the index of the :ref:`Shape3D<class_Shape3D>` of the other Area3D used by the :ref:`PhysicsServer3D<class_PhysicsServer3D>`.
+
+``local_shape`` the index of the :ref:`Shape3D<class_Shape3D>` of this Area3D used by the :ref:`PhysicsServer3D<class_PhysicsServer3D>`.
+
+----
+
+.. _class_Area3D_signal_body_entered:
+
+- **body_entered** **(** :ref:`Node3D<class_Node3D>` body **)**
+
+Emitted when a :ref:`PhysicsBody3D<class_PhysicsBody3D>` or :ref:`GridMap<class_GridMap>` enters this Area3D. Requires :ref:`monitoring<class_Area3D_property_monitoring>` to be set to ``true``. :ref:`GridMap<class_GridMap>`\ s are detected if the :ref:`MeshLibrary<class_MeshLibrary>` has Collision :ref:`Shape3D<class_Shape3D>`\ s.
+
+``body`` the :ref:`Node<class_Node>`, if it exists in the tree, of the other :ref:`PhysicsBody3D<class_PhysicsBody3D>` or :ref:`GridMap<class_GridMap>`.
+
+----
+
+.. _class_Area3D_signal_body_exited:
+
+- **body_exited** **(** :ref:`Node3D<class_Node3D>` body **)**
+
+Emitted when a :ref:`PhysicsBody3D<class_PhysicsBody3D>` or :ref:`GridMap<class_GridMap>` exits this Area3D. Requires :ref:`monitoring<class_Area3D_property_monitoring>` to be set to ``true``. :ref:`GridMap<class_GridMap>`\ s are detected if the :ref:`MeshLibrary<class_MeshLibrary>` has Collision :ref:`Shape3D<class_Shape3D>`\ s.
+
+``body`` the :ref:`Node<class_Node>`, if it exists in the tree, of the other :ref:`PhysicsBody3D<class_PhysicsBody3D>` or :ref:`GridMap<class_GridMap>`.
+
+----
+
+.. _class_Area3D_signal_body_shape_entered:
+
+- **body_shape_entered** **(** :ref:`RID<class_RID>` body_rid, :ref:`Node3D<class_Node3D>` body, :ref:`int<class_int>` body_shape, :ref:`int<class_int>` local_shape **)**
+
+Emitted when one of a :ref:`PhysicsBody3D<class_PhysicsBody3D>` or :ref:`GridMap<class_GridMap>`'s :ref:`Shape3D<class_Shape3D>`\ s enters one of this Area3D's :ref:`Shape3D<class_Shape3D>`\ s. Requires :ref:`monitoring<class_Area3D_property_monitoring>` to be set to ``true``. :ref:`GridMap<class_GridMap>`\ s are detected if the :ref:`MeshLibrary<class_MeshLibrary>` has Collision :ref:`Shape3D<class_Shape3D>`\ s.
+
+``body_id`` the :ref:`RID<class_RID>` of the :ref:`PhysicsBody3D<class_PhysicsBody3D>` or :ref:`MeshLibrary<class_MeshLibrary>`'s :ref:`CollisionObject3D<class_CollisionObject3D>` used by the :ref:`PhysicsServer3D<class_PhysicsServer3D>`.
+
+``body`` the :ref:`Node<class_Node>`, if it exists in the tree, of the :ref:`PhysicsBody3D<class_PhysicsBody3D>` or :ref:`GridMap<class_GridMap>`.
+
+``body_shape`` the index of the :ref:`Shape3D<class_Shape3D>` of the :ref:`PhysicsBody3D<class_PhysicsBody3D>` or :ref:`GridMap<class_GridMap>` used by the :ref:`PhysicsServer3D<class_PhysicsServer3D>`.
+
+``local_shape`` the index of the :ref:`Shape3D<class_Shape3D>` of this Area3D used by the :ref:`PhysicsServer3D<class_PhysicsServer3D>`.
+
+----
+
+.. _class_Area3D_signal_body_shape_exited:
+
+- **body_shape_exited** **(** :ref:`RID<class_RID>` body_rid, :ref:`Node3D<class_Node3D>` body, :ref:`int<class_int>` body_shape, :ref:`int<class_int>` local_shape **)**
+
+Emitted when one of a :ref:`PhysicsBody3D<class_PhysicsBody3D>` or :ref:`GridMap<class_GridMap>`'s :ref:`Shape3D<class_Shape3D>`\ s enters one of this Area3D's :ref:`Shape3D<class_Shape3D>`\ s. Requires :ref:`monitoring<class_Area3D_property_monitoring>` to be set to ``true``. :ref:`GridMap<class_GridMap>`\ s are detected if the :ref:`MeshLibrary<class_MeshLibrary>` has Collision :ref:`Shape3D<class_Shape3D>`\ s.
+
+``body_id`` the :ref:`RID<class_RID>` of the :ref:`PhysicsBody3D<class_PhysicsBody3D>` or :ref:`MeshLibrary<class_MeshLibrary>`'s :ref:`CollisionObject3D<class_CollisionObject3D>` used by the :ref:`PhysicsServer3D<class_PhysicsServer3D>`.
+
+``body`` the :ref:`Node<class_Node>`, if it exists in the tree, of the :ref:`PhysicsBody3D<class_PhysicsBody3D>` or :ref:`GridMap<class_GridMap>`.
+
+``body_shape`` the index of the :ref:`Shape3D<class_Shape3D>` of the :ref:`PhysicsBody3D<class_PhysicsBody3D>` or :ref:`GridMap<class_GridMap>` used by the :ref:`PhysicsServer3D<class_PhysicsServer3D>`.
+
+``local_shape`` the index of the :ref:`Shape3D<class_Shape3D>` of this Area3D used by the :ref:`PhysicsServer3D<class_PhysicsServer3D>`.
+
+Enumerations
+------------
+
+.. _enum_Area3D_SpaceOverride:
+
+.. _class_Area3D_constant_SPACE_OVERRIDE_DISABLED:
+
+.. _class_Area3D_constant_SPACE_OVERRIDE_COMBINE:
+
+.. _class_Area3D_constant_SPACE_OVERRIDE_COMBINE_REPLACE:
+
+.. _class_Area3D_constant_SPACE_OVERRIDE_REPLACE:
+
+.. _class_Area3D_constant_SPACE_OVERRIDE_REPLACE_COMBINE:
+
+enum **SpaceOverride**:
+
+- **SPACE_OVERRIDE_DISABLED** = **0** --- This area does not affect gravity/damping.
+
+- **SPACE_OVERRIDE_COMBINE** = **1** --- This area adds its gravity/damping values to whatever has been calculated so far (in :ref:`priority<class_Area3D_property_priority>` order).
+
+- **SPACE_OVERRIDE_COMBINE_REPLACE** = **2** --- This area adds its gravity/damping values to whatever has been calculated so far (in :ref:`priority<class_Area3D_property_priority>` order), ignoring any lower priority areas.
+
+- **SPACE_OVERRIDE_REPLACE** = **3** --- This area replaces any gravity/damping, even the defaults, ignoring any lower priority areas.
+
+- **SPACE_OVERRIDE_REPLACE_COMBINE** = **4** --- This area replaces any gravity/damping calculated so far (in :ref:`priority<class_Area3D_property_priority>` order), but keeps calculating the rest of the areas.
+
+Property Descriptions
+---------------------
+
+.. _class_Area3D_property_angular_damp:
+
+- :ref:`float<class_float>` **angular_damp**
+
++-----------+-------------------------+
+| *Default* | ``0.1``                 |
++-----------+-------------------------+
+| *Setter*  | set_angular_damp(value) |
++-----------+-------------------------+
+| *Getter*  | get_angular_damp()      |
++-----------+-------------------------+
+
+The rate at which objects stop spinning in this area. Represents the angular velocity lost per second.
+
+See :ref:`ProjectSettings.physics/3d/default_angular_damp<class_ProjectSettings_property_physics/3d/default_angular_damp>` for more details about damping.
+
+----
+
+.. _class_Area3D_property_audio_bus_name:
+
+- :ref:`StringName<class_StringName>` **audio_bus_name**
+
++-----------+---------------------------+
+| *Default* | ``&"Master"``             |
++-----------+---------------------------+
+| *Setter*  | set_audio_bus_name(value) |
++-----------+---------------------------+
+| *Getter*  | get_audio_bus_name()      |
++-----------+---------------------------+
+
+The name of the area's audio bus.
+
+----
+
+.. _class_Area3D_property_audio_bus_override:
+
+- :ref:`bool<class_bool>` **audio_bus_override**
+
++-----------+-------------------------------+
+| *Default* | ``false``                     |
++-----------+-------------------------------+
+| *Setter*  | set_audio_bus_override(value) |
++-----------+-------------------------------+
+| *Getter*  | is_overriding_audio_bus()     |
++-----------+-------------------------------+
+
+If ``true``, the area's audio bus overrides the default audio bus.
+
+----
+
+.. _class_Area3D_property_gravity:
+
+- :ref:`float<class_float>` **gravity**
+
++-----------+--------------------+
+| *Default* | ``9.8``            |
++-----------+--------------------+
+| *Setter*  | set_gravity(value) |
++-----------+--------------------+
+| *Getter*  | get_gravity()      |
++-----------+--------------------+
+
+The area's gravity intensity (in meters per second squared). This value multiplies the gravity vector. This is useful to alter the force of gravity without altering its direction.
+
+----
+
+.. _class_Area3D_property_gravity_distance_scale:
+
+- :ref:`float<class_float>` **gravity_distance_scale**
+
++-----------+-----------------------------------+
+| *Default* | ``0.0``                           |
++-----------+-----------------------------------+
+| *Setter*  | set_gravity_distance_scale(value) |
++-----------+-----------------------------------+
+| *Getter*  | get_gravity_distance_scale()      |
++-----------+-----------------------------------+
+
+The falloff factor for point gravity. The greater the value, the faster gravity decreases with distance.
+
+----
+
+.. _class_Area3D_property_gravity_point:
+
+- :ref:`bool<class_bool>` **gravity_point**
+
++-----------+-----------------------------+
+| *Default* | ``false``                   |
++-----------+-----------------------------+
+| *Setter*  | set_gravity_is_point(value) |
++-----------+-----------------------------+
+| *Getter*  | is_gravity_a_point()        |
++-----------+-----------------------------+
+
+If ``true``, gravity is calculated from a point (set via :ref:`gravity_vec<class_Area3D_property_gravity_vec>`). See also :ref:`space_override<class_Area3D_property_space_override>`.
+
+----
+
+.. _class_Area3D_property_gravity_vec:
+
+- :ref:`Vector3<class_Vector3>` **gravity_vec**
+
++-----------+---------------------------+
+| *Default* | ``Vector3(0, -1, 0)``     |
++-----------+---------------------------+
+| *Setter*  | set_gravity_vector(value) |
++-----------+---------------------------+
+| *Getter*  | get_gravity_vector()      |
++-----------+---------------------------+
+
+The area's gravity vector (not normalized). If gravity is a point (see :ref:`gravity_point<class_Area3D_property_gravity_point>`), this will be the point of attraction.
+
+----
+
+.. _class_Area3D_property_linear_damp:
+
+- :ref:`float<class_float>` **linear_damp**
+
++-----------+------------------------+
+| *Default* | ``0.1``                |
++-----------+------------------------+
+| *Setter*  | set_linear_damp(value) |
++-----------+------------------------+
+| *Getter*  | get_linear_damp()      |
++-----------+------------------------+
+
+The rate at which objects stop moving in this area. Represents the linear velocity lost per second.
+
+See :ref:`ProjectSettings.physics/3d/default_linear_damp<class_ProjectSettings_property_physics/3d/default_linear_damp>` for more details about damping.
+
+----
+
+.. _class_Area3D_property_monitorable:
+
+- :ref:`bool<class_bool>` **monitorable**
+
++-----------+------------------------+
+| *Default* | ``true``               |
++-----------+------------------------+
+| *Setter*  | set_monitorable(value) |
++-----------+------------------------+
+| *Getter*  | is_monitorable()       |
++-----------+------------------------+
+
+If ``true``, other monitoring areas can detect this area.
+
+----
+
+.. _class_Area3D_property_monitoring:
+
+- :ref:`bool<class_bool>` **monitoring**
+
++-----------+-----------------------+
+| *Default* | ``true``              |
++-----------+-----------------------+
+| *Setter*  | set_monitoring(value) |
++-----------+-----------------------+
+| *Getter*  | is_monitoring()       |
++-----------+-----------------------+
+
+If ``true``, the area detects bodies or areas entering and exiting it.
+
+----
+
+.. _class_Area3D_property_priority:
+
+- :ref:`float<class_float>` **priority**
+
++-----------+---------------------+
+| *Default* | ``0.0``             |
++-----------+---------------------+
+| *Setter*  | set_priority(value) |
++-----------+---------------------+
+| *Getter*  | get_priority()      |
++-----------+---------------------+
+
+The area's priority. Higher priority areas are processed first.
+
+----
+
+.. _class_Area3D_property_reverb_bus_amount:
+
+- :ref:`float<class_float>` **reverb_bus_amount**
+
++-----------+--------------------------+
+| *Default* | ``0.0``                  |
++-----------+--------------------------+
+| *Setter*  | set_reverb_amount(value) |
++-----------+--------------------------+
+| *Getter*  | get_reverb_amount()      |
++-----------+--------------------------+
+
+The degree to which this area applies reverb to its associated audio. Ranges from ``0`` to ``1`` with ``0.1`` precision.
+
+----
+
+.. _class_Area3D_property_reverb_bus_enable:
+
+- :ref:`bool<class_bool>` **reverb_bus_enable**
+
++-----------+---------------------------+
+| *Default* | ``false``                 |
++-----------+---------------------------+
+| *Setter*  | set_use_reverb_bus(value) |
++-----------+---------------------------+
+| *Getter*  | is_using_reverb_bus()     |
++-----------+---------------------------+
+
+If ``true``, the area applies reverb to its associated audio.
+
+----
+
+.. _class_Area3D_property_reverb_bus_name:
+
+- :ref:`StringName<class_StringName>` **reverb_bus_name**
+
++-----------+-----------------------+
+| *Default* | ``&"Master"``         |
++-----------+-----------------------+
+| *Setter*  | set_reverb_bus(value) |
++-----------+-----------------------+
+| *Getter*  | get_reverb_bus()      |
++-----------+-----------------------+
+
+The reverb bus name to use for this area's associated audio.
+
+----
+
+.. _class_Area3D_property_reverb_bus_uniformity:
+
+- :ref:`float<class_float>` **reverb_bus_uniformity**
+
++-----------+------------------------------+
+| *Default* | ``0.0``                      |
++-----------+------------------------------+
+| *Setter*  | set_reverb_uniformity(value) |
++-----------+------------------------------+
+| *Getter*  | get_reverb_uniformity()      |
++-----------+------------------------------+
+
+The degree to which this area's reverb is a uniform effect. Ranges from ``0`` to ``1`` with ``0.1`` precision.
+
+----
+
+.. _class_Area3D_property_space_override:
+
+- :ref:`SpaceOverride<enum_Area3D_SpaceOverride>` **space_override**
+
++-----------+--------------------------------+
+| *Default* | ``0``                          |
++-----------+--------------------------------+
+| *Setter*  | set_space_override_mode(value) |
++-----------+--------------------------------+
+| *Getter*  | get_space_override_mode()      |
++-----------+--------------------------------+
+
+Override mode for gravity and damping calculations within this area. See :ref:`SpaceOverride<enum_Area3D_SpaceOverride>` for possible values.
+
+----
+
+.. _class_Area3D_property_wind_attenuation_factor:
+
+- :ref:`float<class_float>` **wind_attenuation_factor**
+
++-----------+------------------------------------+
+| *Default* | ``0.0``                            |
++-----------+------------------------------------+
+| *Setter*  | set_wind_attenuation_factor(value) |
++-----------+------------------------------------+
+| *Getter*  | get_wind_attenuation_factor()      |
++-----------+------------------------------------+
+
+The exponential rate at which wind force decreases with distance from its origin.
+
+----
+
+.. _class_Area3D_property_wind_force_magnitude:
+
+- :ref:`float<class_float>` **wind_force_magnitude**
+
++-----------+---------------------------------+
+| *Default* | ``0.0``                         |
++-----------+---------------------------------+
+| *Setter*  | set_wind_force_magnitude(value) |
++-----------+---------------------------------+
+| *Getter*  | get_wind_force_magnitude()      |
++-----------+---------------------------------+
+
+The magnitude of area-specific wind force.
+
+----
+
+.. _class_Area3D_property_wind_source_path:
+
+- :ref:`NodePath<class_NodePath>` **wind_source_path**
+
++-----------+-----------------------------+
+| *Default* | ``NodePath("")``            |
++-----------+-----------------------------+
+| *Setter*  | set_wind_source_path(value) |
++-----------+-----------------------------+
+| *Getter*  | get_wind_source_path()      |
++-----------+-----------------------------+
+
+The :ref:`Node3D<class_Node3D>` which is used to specify the the direction and origin of an area-specific wind force. The direction is opposite to the z-axis of the :ref:`Node3D<class_Node3D>`'s local transform, and its origin is the origin of the :ref:`Node3D<class_Node3D>`'s local transform.
+
+Method Descriptions
+-------------------
+
+.. _class_Area3D_method_get_overlapping_areas:
+
+- :ref:`Area3D[]<class_Area3D>` **get_overlapping_areas** **(** **)** |const|
+
+Returns a list of intersecting ``Area3D``\ s. For performance reasons (collisions are all processed at the same time) this list is modified once during the physics step, not immediately after objects are moved. Consider using signals instead.
+
+----
+
+.. _class_Area3D_method_get_overlapping_bodies:
+
+- :ref:`Node3D[]<class_Node3D>` **get_overlapping_bodies** **(** **)** |const|
+
+Returns a list of intersecting :ref:`PhysicsBody3D<class_PhysicsBody3D>`\ s. For performance reasons (collisions are all processed at the same time) this list is modified once during the physics step, not immediately after objects are moved. Consider using signals instead.
+
+----
+
+.. _class_Area3D_method_overlaps_area:
+
+- :ref:`bool<class_bool>` **overlaps_area** **(** :ref:`Node<class_Node>` area **)** |const|
+
+If ``true``, the given area overlaps the Area3D.
+
+**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.
+
+----
+
+.. _class_Area3D_method_overlaps_body:
+
+- :ref:`bool<class_bool>` **overlaps_body** **(** :ref:`Node<class_Node>` body **)** |const|
+
+If ``true``, the given physics body overlaps the Area3D.
+
+**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:`PhysicsBody3D<class_PhysicsBody3D>` 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).
+
+.. |virtual| replace:: :abbr:`virtual (This method should typically be overridden by the user to have any effect.)`
+.. |const| replace:: :abbr:`const (This method has no side effects. It doesn't modify any of the instance's member variables.)`
+.. |vararg| replace:: :abbr:`vararg (This method accepts any number of arguments after the ones described here.)`
+.. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)`
+.. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)`
+.. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)`

+ 474 - 149
classes/class_array.rst

@@ -9,16 +9,19 @@
 Array
 Array
 =====
 =====
 
 
-Generic array datatype.
+A generic array datatype.
 
 
 Description
 Description
 -----------
 -----------
 
 
-Generic array which 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 the second to last, etc.).
+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:**
 
 
-::
+
+.. tabs::
+
+ .. code-tab:: gdscript
 
 
     var array = ["One", 2, 3, "Four"]
     var array = ["One", 2, 3, "Four"]
     print(array[0]) # One.
     print(array[0]) # One.
@@ -27,155 +30,230 @@ Generic array which can contain several elements of any type, accessible by a nu
     array[2] = "Three"
     array[2] = "Three"
     print(array[-2]) # Three.
     print(array[-2]) # Three.
 
 
+ .. code-tab:: csharp
+
+    var array = new Godot.Collections.Array{"One", 2, 3, "Four"};
+    GD.Print(array[0]); // One.
+    GD.Print(array[2]); // 3.
+    GD.Print(array[array.Count - 1]); // Four.
+    array[2] = "Three";
+    GD.Print(array[array.Count - 2]); // Three.
+
+
+
 Arrays can be concatenated using the ``+`` operator:
 Arrays can be concatenated using the ``+`` operator:
 
 
-::
+
+.. tabs::
+
+ .. code-tab:: gdscript
 
 
     var array1 = ["One", 2]
     var array1 = ["One", 2]
     var array2 = [3, "Four"]
     var array2 = [3, "Four"]
     print(array1 + array2) # ["One", 2, 3, "Four"]
     print(array1 + array2) # ["One", 2, 3, "Four"]
 
 
-Arrays are always passed by reference.
+ .. code-tab:: csharp
+
+    // Array concatenation is not possible with C# arrays, but is with Godot.Collections.Array.
+    var array1 = new Godot.Collections.Array{"One", 2};
+    var array2 = new Godot.Collections.Array{3, "Four"};
+    GD.Print(array1 + array2); // Prints [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:** 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.
 
 
 Methods
 Methods
 -------
 -------
 
 
-+-------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`Array<class_Array>`     | :ref:`Array<class_Array_method_Array>` **(** :ref:`PackedColorArray<class_PackedColorArray>` from **)**                                                                                                          |
-+-------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`Array<class_Array>`     | :ref:`Array<class_Array_method_Array>` **(** :ref:`PackedVector3Array<class_PackedVector3Array>` from **)**                                                                                                      |
-+-------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`Array<class_Array>`     | :ref:`Array<class_Array_method_Array>` **(** :ref:`PackedVector2Array<class_PackedVector2Array>` from **)**                                                                                                      |
-+-------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`Array<class_Array>`     | :ref:`Array<class_Array_method_Array>` **(** :ref:`PackedStringArray<class_PackedStringArray>` from **)**                                                                                                        |
-+-------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`Array<class_Array>`     | :ref:`Array<class_Array_method_Array>` **(** :ref:`PackedFloat64Array<class_PackedFloat64Array>` from **)**                                                                                                      |
-+-------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`Array<class_Array>`     | :ref:`Array<class_Array_method_Array>` **(** :ref:`PackedFloat32Array<class_PackedFloat32Array>` from **)**                                                                                                      |
-+-------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`Array<class_Array>`     | :ref:`Array<class_Array_method_Array>` **(** :ref:`PackedInt64Array<class_PackedInt64Array>` from **)**                                                                                                          |
-+-------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`Array<class_Array>`     | :ref:`Array<class_Array_method_Array>` **(** :ref:`PackedInt32Array<class_PackedInt32Array>` from **)**                                                                                                          |
-+-------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`Array<class_Array>`     | :ref:`Array<class_Array_method_Array>` **(** :ref:`PackedByteArray<class_PackedByteArray>` from **)**                                                                                                            |
-+-------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| void                          | :ref:`append<class_Array_method_append>` **(** :ref:`Variant<class_Variant>` value **)**                                                                                                                         |
-+-------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`Variant<class_Variant>` | :ref:`back<class_Array_method_back>` **(** **)**                                                                                                                                                                 |
-+-------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`int<class_int>`         | :ref:`bsearch<class_Array_method_bsearch>` **(** :ref:`Variant<class_Variant>` value, :ref:`bool<class_bool>` before=true **)**                                                                                  |
-+-------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`int<class_int>`         | :ref:`bsearch_custom<class_Array_method_bsearch_custom>` **(** :ref:`Variant<class_Variant>` value, :ref:`Object<class_Object>` obj, :ref:`String<class_String>` func, :ref:`bool<class_bool>` before=true **)** |
-+-------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| void                          | :ref:`clear<class_Array_method_clear>` **(** **)**                                                                                                                                                               |
-+-------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`int<class_int>`         | :ref:`count<class_Array_method_count>` **(** :ref:`Variant<class_Variant>` value **)**                                                                                                                           |
-+-------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`Array<class_Array>`     | :ref:`duplicate<class_Array_method_duplicate>` **(** :ref:`bool<class_bool>` deep=false **)**                                                                                                                    |
-+-------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`bool<class_bool>`       | :ref:`empty<class_Array_method_empty>` **(** **)**                                                                                                                                                               |
-+-------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| void                          | :ref:`erase<class_Array_method_erase>` **(** :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 **)**                                                                                                                   |
-+-------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`Variant<class_Variant>` | :ref:`front<class_Array_method_front>` **(** **)**                                                                                                                                                               |
-+-------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`bool<class_bool>`       | :ref:`has<class_Array_method_has>` **(** :ref:`Variant<class_Variant>` value **)**                                                                                                                               |
-+-------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`int<class_int>`         | :ref:`hash<class_Array_method_hash>` **(** **)**                                                                                                                                                                 |
-+-------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| void                          | :ref:`insert<class_Array_method_insert>` **(** :ref:`int<class_int>` position, :ref:`Variant<class_Variant>` value **)**                                                                                         |
-+-------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| void                          | :ref:`invert<class_Array_method_invert>` **(** **)**                                                                                                                                                             |
-+-------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`Variant<class_Variant>` | :ref:`max<class_Array_method_max>` **(** **)**                                                                                                                                                                   |
-+-------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`Variant<class_Variant>` | :ref:`min<class_Array_method_min>` **(** **)**                                                                                                                                                                   |
-+-------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`Variant<class_Variant>` | :ref:`pop_back<class_Array_method_pop_back>` **(** **)**                                                                                                                                                         |
-+-------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`Variant<class_Variant>` | :ref:`pop_front<class_Array_method_pop_front>` **(** **)**                                                                                                                                                       |
-+-------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| void                          | :ref:`push_back<class_Array_method_push_back>` **(** :ref:`Variant<class_Variant>` value **)**                                                                                                                   |
-+-------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| void                          | :ref:`push_front<class_Array_method_push_front>` **(** :ref:`Variant<class_Variant>` value **)**                                                                                                                 |
-+-------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| void                          | :ref:`remove<class_Array_method_remove>` **(** :ref:`int<class_int>` position **)**                                                                                                                              |
-+-------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| void                          | :ref:`resize<class_Array_method_resize>` **(** :ref:`int<class_int>` size **)**                                                                                                                                  |
-+-------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`int<class_int>`         | :ref:`rfind<class_Array_method_rfind>` **(** :ref:`Variant<class_Variant>` what, :ref:`int<class_int>` from=-1 **)**                                                                                             |
-+-------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| void                          | :ref:`shuffle<class_Array_method_shuffle>` **(** **)**                                                                                                                                                           |
-+-------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`int<class_int>`         | :ref:`size<class_Array_method_size>` **(** **)**                                                                                                                                                                 |
-+-------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`Array<class_Array>`     | :ref:`slice<class_Array_method_slice>` **(** :ref:`int<class_int>` begin, :ref:`int<class_int>` end, :ref:`int<class_int>` step=1, :ref:`bool<class_bool>` deep=false **)**                                      |
-+-------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| void                          | :ref:`sort<class_Array_method_sort>` **(** **)**                                                                                                                                                                 |
-+-------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| void                          | :ref:`sort_custom<class_Array_method_sort_custom>` **(** :ref:`Object<class_Object>` obj, :ref:`String<class_String>` func **)**                                                                                 |
-+-------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
++-------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`Array<class_Array>`     | :ref:`Array<class_Array_method_Array>` **(** **)** |constructor|                                                                                                                    |
++-------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`Array<class_Array>`     | :ref:`Array<class_Array_method_Array>` **(** :ref:`Array<class_Array>` from **)** |constructor|                                                                                     |
++-------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`Array<class_Array>`     | :ref:`Array<class_Array_method_Array>` **(** :ref:`PackedByteArray<class_PackedByteArray>` from **)** |constructor|                                                                 |
++-------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`Array<class_Array>`     | :ref:`Array<class_Array_method_Array>` **(** :ref:`PackedColorArray<class_PackedColorArray>` from **)** |constructor|                                                               |
++-------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`Array<class_Array>`     | :ref:`Array<class_Array_method_Array>` **(** :ref:`PackedFloat32Array<class_PackedFloat32Array>` from **)** |constructor|                                                           |
++-------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`Array<class_Array>`     | :ref:`Array<class_Array_method_Array>` **(** :ref:`PackedFloat64Array<class_PackedFloat64Array>` from **)** |constructor|                                                           |
++-------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`Array<class_Array>`     | :ref:`Array<class_Array_method_Array>` **(** :ref:`PackedInt32Array<class_PackedInt32Array>` from **)** |constructor|                                                               |
++-------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`Array<class_Array>`     | :ref:`Array<class_Array_method_Array>` **(** :ref:`PackedInt64Array<class_PackedInt64Array>` from **)** |constructor|                                                               |
++-------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`Array<class_Array>`     | :ref:`Array<class_Array_method_Array>` **(** :ref:`PackedStringArray<class_PackedStringArray>` from **)** |constructor|                                                             |
++-------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`Array<class_Array>`     | :ref:`Array<class_Array_method_Array>` **(** :ref:`PackedVector2Array<class_PackedVector2Array>` from **)** |constructor|                                                           |
++-------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`Array<class_Array>`     | :ref:`Array<class_Array_method_Array>` **(** :ref:`PackedVector3Array<class_PackedVector3Array>` from **)** |constructor|                                                           |
++-------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| void                          | :ref:`append<class_Array_method_append>` **(** :ref:`Variant<class_Variant>` value **)**                                                                                            |
++-------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| void                          | :ref:`append_array<class_Array_method_append_array>` **(** :ref:`Array<class_Array>` array **)**                                                                                    |
++-------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`Variant<class_Variant>` | :ref:`back<class_Array_method_back>` **(** **)** |const|                                                                                                                            |
++-------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`int<class_int>`         | :ref:`bsearch<class_Array_method_bsearch>` **(** :ref:`Variant<class_Variant>` value, :ref:`bool<class_bool>` before=true **)**                                                     |
++-------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`int<class_int>`         | :ref:`bsearch_custom<class_Array_method_bsearch_custom>` **(** :ref:`Variant<class_Variant>` value, :ref:`Callable<class_Callable>` func, :ref:`bool<class_bool>` before=true **)** |
++-------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| void                          | :ref:`clear<class_Array_method_clear>` **(** **)**                                                                                                                                  |
++-------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`int<class_int>`         | :ref:`count<class_Array_method_count>` **(** :ref:`Variant<class_Variant>` value **)** |const|                                                                                      |
++-------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`Array<class_Array>`     | :ref:`duplicate<class_Array_method_duplicate>` **(** :ref:`bool<class_bool>` deep=false **)** |const|                                                                               |
++-------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| 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:`Array<class_Array>`     | :ref:`filter<class_Array_method_filter>` **(** :ref:`Callable<class_Callable>` method **)** |const|                                                                                 |
++-------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`int<class_int>`         | :ref:`find<class_Array_method_find>` **(** :ref:`Variant<class_Variant>` what, :ref:`int<class_int>` from=0 **)** |const|                                                           |
++-------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`int<class_int>`         | :ref:`find_last<class_Array_method_find_last>` **(** :ref:`Variant<class_Variant>` value **)** |const|                                                                              |
++-------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`Variant<class_Variant>` | :ref:`front<class_Array_method_front>` **(** **)** |const|                                                                                                                          |
++-------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`bool<class_bool>`       | :ref:`has<class_Array_method_has>` **(** :ref:`Variant<class_Variant>` value **)** |const|                                                                                          |
++-------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`int<class_int>`         | :ref:`hash<class_Array_method_hash>` **(** **)** |const|                                                                                                                            |
++-------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`int<class_int>`         | :ref:`insert<class_Array_method_insert>` **(** :ref:`int<class_int>` position, :ref:`Variant<class_Variant>` value **)**                                                            |
++-------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`bool<class_bool>`       | :ref:`is_empty<class_Array_method_is_empty>` **(** **)** |const|                                                                                                                    |
++-------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`Array<class_Array>`     | :ref:`map<class_Array_method_map>` **(** :ref:`Callable<class_Callable>` method **)** |const|                                                                                       |
++-------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`Variant<class_Variant>` | :ref:`max<class_Array_method_max>` **(** **)** |const|                                                                                                                              |
++-------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`Variant<class_Variant>` | :ref:`min<class_Array_method_min>` **(** **)** |const|                                                                                                                              |
++-------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`bool<class_bool>`       | **operator !=** **(** **)** |operator|                                                                                                                                              |
++-------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`bool<class_bool>`       | **operator !=** **(** :ref:`Array<class_Array>` right **)** |operator|                                                                                                              |
++-------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`Array<class_Array>`     | **operator +** **(** :ref:`Array<class_Array>` right **)** |operator|                                                                                                               |
++-------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`bool<class_bool>`       | **operator <** **(** :ref:`Array<class_Array>` right **)** |operator|                                                                                                               |
++-------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`bool<class_bool>`       | **operator <=** **(** :ref:`Array<class_Array>` right **)** |operator|                                                                                                              |
++-------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`bool<class_bool>`       | **operator ==** **(** **)** |operator|                                                                                                                                              |
++-------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`bool<class_bool>`       | **operator ==** **(** :ref:`Array<class_Array>` right **)** |operator|                                                                                                              |
++-------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`bool<class_bool>`       | **operator >** **(** :ref:`Array<class_Array>` right **)** |operator|                                                                                                               |
++-------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`bool<class_bool>`       | **operator >=** **(** :ref:`Array<class_Array>` right **)** |operator|                                                                                                              |
++-------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| void                          | **operator []** **(** :ref:`int<class_int>` index **)** |operator|                                                                                                                  |
++-------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`Variant<class_Variant>` | :ref:`pop_at<class_Array_method_pop_at>` **(** :ref:`int<class_int>` position **)**                                                                                                 |
++-------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`Variant<class_Variant>` | :ref:`pop_back<class_Array_method_pop_back>` **(** **)**                                                                                                                            |
++-------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`Variant<class_Variant>` | :ref:`pop_front<class_Array_method_pop_front>` **(** **)**                                                                                                                          |
++-------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| void                          | :ref:`push_back<class_Array_method_push_back>` **(** :ref:`Variant<class_Variant>` value **)**                                                                                      |
++-------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| void                          | :ref:`push_front<class_Array_method_push_front>` **(** :ref:`Variant<class_Variant>` value **)**                                                                                    |
++-------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`Variant<class_Variant>` | :ref:`reduce<class_Array_method_reduce>` **(** :ref:`Callable<class_Callable>` method, :ref:`Variant<class_Variant>` accum=null **)** |const|                                       |
++-------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| void                          | :ref:`remove<class_Array_method_remove>` **(** :ref:`int<class_int>` position **)**                                                                                                 |
++-------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`int<class_int>`         | :ref:`resize<class_Array_method_resize>` **(** :ref:`int<class_int>` size **)**                                                                                                     |
++-------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| void                          | :ref:`reverse<class_Array_method_reverse>` **(** **)**                                                                                                                              |
++-------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`int<class_int>`         | :ref:`rfind<class_Array_method_rfind>` **(** :ref:`Variant<class_Variant>` what, :ref:`int<class_int>` from=-1 **)** |const|                                                        |
++-------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| void                          | :ref:`shuffle<class_Array_method_shuffle>` **(** **)**                                                                                                                              |
++-------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`int<class_int>`         | :ref:`size<class_Array_method_size>` **(** **)** |const|                                                                                                                            |
++-------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`Array<class_Array>`     | :ref:`slice<class_Array_method_slice>` **(** :ref:`int<class_int>` begin, :ref:`int<class_int>` end, :ref:`int<class_int>` step=1, :ref:`bool<class_bool>` deep=false **)** |const| |
++-------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| void                          | :ref:`sort<class_Array_method_sort>` **(** **)**                                                                                                                                    |
++-------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| void                          | :ref:`sort_custom<class_Array_method_sort_custom>` **(** :ref:`Callable<class_Callable>` func **)**                                                                                 |
++-------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
 
 
 Method Descriptions
 Method Descriptions
 -------------------
 -------------------
 
 
 .. _class_Array_method_Array:
 .. _class_Array_method_Array:
 
 
-- :ref:`Array<class_Array>` **Array** **(** :ref:`PackedColorArray<class_PackedColorArray>` from **)**
+- :ref:`Array<class_Array>` **Array** **(** **)** |constructor|
 
 
-Constructs an array from a :ref:`PackedColorArray<class_PackedColorArray>`.
+Constructs an empty ``Array``.
 
 
 ----
 ----
 
 
-- :ref:`Array<class_Array>` **Array** **(** :ref:`PackedVector3Array<class_PackedVector3Array>` from **)**
+- :ref:`Array<class_Array>` **Array** **(** :ref:`Array<class_Array>` from **)** |constructor|
 
 
-Constructs an array from a :ref:`PackedVector3Array<class_PackedVector3Array>`.
+Constructs an ``Array`` as a copy of the given ``Array``.
 
 
 ----
 ----
 
 
-- :ref:`Array<class_Array>` **Array** **(** :ref:`PackedVector2Array<class_PackedVector2Array>` from **)**
+- :ref:`Array<class_Array>` **Array** **(** :ref:`PackedByteArray<class_PackedByteArray>` from **)** |constructor|
 
 
-Constructs an array from a :ref:`PackedVector2Array<class_PackedVector2Array>`.
+Constructs an array from a :ref:`PackedByteArray<class_PackedByteArray>`.
 
 
 ----
 ----
 
 
-- :ref:`Array<class_Array>` **Array** **(** :ref:`PackedStringArray<class_PackedStringArray>` from **)**
+- :ref:`Array<class_Array>` **Array** **(** :ref:`PackedColorArray<class_PackedColorArray>` from **)** |constructor|
 
 
-Constructs an array from a :ref:`PackedStringArray<class_PackedStringArray>`.
+Constructs an array from a :ref:`PackedColorArray<class_PackedColorArray>`.
 
 
 ----
 ----
 
 
-- :ref:`Array<class_Array>` **Array** **(** :ref:`PackedFloat64Array<class_PackedFloat64Array>` from **)**
+- :ref:`Array<class_Array>` **Array** **(** :ref:`PackedFloat32Array<class_PackedFloat32Array>` from **)** |constructor|
+
+Constructs an array from a :ref:`PackedFloat32Array<class_PackedFloat32Array>`.
+
+----
+
+- :ref:`Array<class_Array>` **Array** **(** :ref:`PackedFloat64Array<class_PackedFloat64Array>` from **)** |constructor|
 
 
 Constructs an array from a :ref:`PackedFloat64Array<class_PackedFloat64Array>`.
 Constructs an array from a :ref:`PackedFloat64Array<class_PackedFloat64Array>`.
 
 
 ----
 ----
 
 
-- :ref:`Array<class_Array>` **Array** **(** :ref:`PackedFloat32Array<class_PackedFloat32Array>` from **)**
+- :ref:`Array<class_Array>` **Array** **(** :ref:`PackedInt32Array<class_PackedInt32Array>` from **)** |constructor|
 
 
-Constructs an array from a :ref:`PackedFloat32Array<class_PackedFloat32Array>`.
+Constructs an array from a :ref:`PackedInt32Array<class_PackedInt32Array>`.
 
 
 ----
 ----
 
 
-- :ref:`Array<class_Array>` **Array** **(** :ref:`PackedInt64Array<class_PackedInt64Array>` from **)**
+- :ref:`Array<class_Array>` **Array** **(** :ref:`PackedInt64Array<class_PackedInt64Array>` from **)** |constructor|
 
 
 Constructs an array from a :ref:`PackedInt64Array<class_PackedInt64Array>`.
 Constructs an array from a :ref:`PackedInt64Array<class_PackedInt64Array>`.
 
 
 ----
 ----
 
 
-- :ref:`Array<class_Array>` **Array** **(** :ref:`PackedInt32Array<class_PackedInt32Array>` from **)**
+- :ref:`Array<class_Array>` **Array** **(** :ref:`PackedStringArray<class_PackedStringArray>` from **)** |constructor|
 
 
-Constructs an array from a :ref:`PackedInt32Array<class_PackedInt32Array>`.
+Constructs an array from a :ref:`PackedStringArray<class_PackedStringArray>`.
 
 
 ----
 ----
 
 
-- :ref:`Array<class_Array>` **Array** **(** :ref:`PackedByteArray<class_PackedByteArray>` from **)**
+- :ref:`Array<class_Array>` **Array** **(** :ref:`PackedVector2Array<class_PackedVector2Array>` from **)** |constructor|
 
 
-Constructs an array from a :ref:`PackedByteArray<class_PackedByteArray>`.
+Constructs an array from a :ref:`PackedVector2Array<class_PackedVector2Array>`.
+
+----
+
+- :ref:`Array<class_Array>` **Array** **(** :ref:`PackedVector3Array<class_PackedVector3Array>` from **)** |constructor|
+
+Constructs an array from a :ref:`PackedVector3Array<class_PackedVector3Array>`.
 
 
 ----
 ----
 
 
@@ -187,11 +265,28 @@ Appends an element at the end of the array (alias of :ref:`push_back<class_Array
 
 
 ----
 ----
 
 
+.. _class_Array_method_append_array:
+
+- void **append_array** **(** :ref:`Array<class_Array>` array **)**
+
+Appends another array at the end of this array.
+
+::
+
+    var array1 = [1, 2, 3]
+    var array2 = [4, 5, 6]
+    array1.append_array(array2)
+    print(array1) # Prints [1, 2, 3, 4, 5, 6].
+
+----
+
 .. _class_Array_method_back:
 .. _class_Array_method_back:
 
 
-- :ref:`Variant<class_Variant>` **back** **(** **)**
+- :ref:`Variant<class_Variant>` **back** **(** **)** |const|
+
+Returns the last element of the array. Prints an error and returns ``null`` if the array is empty.
 
 
-Returns the last element of the array, or ``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.
 
 
 ----
 ----
 
 
@@ -207,11 +302,11 @@ Finds the index of an existing value (or the insertion index that maintains sort
 
 
 .. _class_Array_method_bsearch_custom:
 .. _class_Array_method_bsearch_custom:
 
 
-- :ref:`int<class_int>` **bsearch_custom** **(** :ref:`Variant<class_Variant>` value, :ref:`Object<class_Object>` obj, :ref:`String<class_String>` func, :ref:`bool<class_bool>` before=true **)**
+- :ref:`int<class_int>` **bsearch_custom** **(** :ref:`Variant<class_Variant>` value, :ref:`Callable<class_Callable>` func, :ref:`bool<class_bool>` before=true **)**
 
 
 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 and a custom comparison method. Optionally, a ``before`` specifier can be passed. If ``false``, the returned index comes after all existing entries of the value in the array. The custom method receives two arguments (an element from the array and the value searched for) and must return ``true`` if the first argument is less than the second, and return ``false`` otherwise.
 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 and a custom comparison method. Optionally, a ``before`` specifier can be passed. If ``false``, the returned index comes after all existing entries of the value in the array. The custom method receives two arguments (an element from the array and the value searched for) and must return ``true`` if the first argument is less than the second, and return ``false`` otherwise.
 
 
-**Note:** Calling :ref:`bsearch<class_Array_method_bsearch>` 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.
 
 
 ----
 ----
 
 
@@ -225,7 +320,7 @@ Clears the array. This is equivalent to using :ref:`resize<class_Array_method_re
 
 
 .. _class_Array_method_count:
 .. _class_Array_method_count:
 
 
-- :ref:`int<class_int>` **count** **(** :ref:`Variant<class_Variant>` value **)**
+- :ref:`int<class_int>` **count** **(** :ref:`Variant<class_Variant>` value **)** |const|
 
 
 Returns the number of times an element is in the array.
 Returns the number of times an element is in the array.
 
 
@@ -233,7 +328,7 @@ Returns the number of times an element is in the array.
 
 
 .. _class_Array_method_duplicate:
 .. _class_Array_method_duplicate:
 
 
-- :ref:`Array<class_Array>` **duplicate** **(** :ref:`bool<class_bool>` deep=false **)**
+- :ref:`Array<class_Array>` **duplicate** **(** :ref:`bool<class_bool>` deep=false **)** |const|
 
 
 Returns a copy of the array.
 Returns a copy of the array.
 
 
@@ -241,88 +336,193 @@ If ``deep`` is ``true``, a deep copy is performed: all nested arrays and diction
 
 
 ----
 ----
 
 
-.. _class_Array_method_empty:
+.. _class_Array_method_erase:
+
+- void **erase** **(** :ref:`Variant<class_Variant>` value **)**
 
 
-- :ref:`bool<class_bool>` **empty** **(** **)**
+Removes the first occurrence of a value from the array. To remove an element by index, use :ref:`remove<class_Array_method_remove>` instead.
 
 
-Returns ``true`` if the array is empty.
+**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_erase:
+.. _class_Array_method_fill:
 
 
-- void **erase** **(** :ref:`Variant<class_Variant>` value **)**
+- 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:
+
+
+.. tabs::
+
+ .. code-tab:: gdscript
+
+    var array = []
+    array.resize(10)
+    array.fill(0) # Initialize the 10 elements to 0.
+
+ .. code-tab:: csharp
+
+    var array = new Godot.Collections.Array{};
+    array.Resize(10);
+    array.Fill(0); // Initialize the 10 elements to 0.
+
+
+
+----
+
+.. _class_Array_method_filter:
+
+- :ref:`Array<class_Array>` **filter** **(** :ref:`Callable<class_Callable>` method **)** |const|
+
+Calls the provided :ref:`Callable<class_Callable>` on each element in the array and returns a new array with the elements for which the method returned ``true``.
+
+The callable's method should take one :ref:`Variant<class_Variant>` parameter (the current array element) and return a boolean value.
 
 
-Removes the first occurrence of a value from the array.
+::
+
+    func _ready():
+        print([1, 2, 3].filter(remove_1)) # Prints [2, 3].
+        print([1, 2, 3].filter(func(number): return number != 1)) # Same as above, but using lambda function.
+    
+    func remove_1(number):
+        return number != 1
 
 
 ----
 ----
 
 
 .. _class_Array_method_find:
 .. _class_Array_method_find:
 
 
-- :ref:`int<class_int>` **find** **(** :ref:`Variant<class_Variant>` what, :ref:`int<class_int>` from=0 **)**
+- :ref:`int<class_int>` **find** **(** :ref:`Variant<class_Variant>` what, :ref:`int<class_int>` from=0 **)** |const|
 
 
-Searches the array for a value and returns its index or -1 if not found. Optionally, the initial search index can be passed.
+Searches the array for a value and returns its index or ``-1`` if not found. Optionally, the initial search index can be passed.
 
 
 ----
 ----
 
 
 .. _class_Array_method_find_last:
 .. _class_Array_method_find_last:
 
 
-- :ref:`int<class_int>` **find_last** **(** :ref:`Variant<class_Variant>` value **)**
+- :ref:`int<class_int>` **find_last** **(** :ref:`Variant<class_Variant>` value **)** |const|
 
 
-Searches the array in reverse order for a value and returns its index or -1 if not found.
+Searches the array in reverse order for a value and returns its index or ``-1`` if not found.
 
 
 ----
 ----
 
 
 .. _class_Array_method_front:
 .. _class_Array_method_front:
 
 
-- :ref:`Variant<class_Variant>` **front** **(** **)**
+- :ref:`Variant<class_Variant>` **front** **(** **)** |const|
 
 
-Returns the first element of the array, or ``null`` if the array is empty.
+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.
 
 
 ----
 ----
 
 
 .. _class_Array_method_has:
 .. _class_Array_method_has:
 
 
-- :ref:`bool<class_bool>` **has** **(** :ref:`Variant<class_Variant>` value **)**
+- :ref:`bool<class_bool>` **has** **(** :ref:`Variant<class_Variant>` value **)** |const|
 
 
 Returns ``true`` if the array contains the given value.
 Returns ``true`` if the array contains the given value.
 
 
-::
 
 
-    ["inside", 7].has("inside") == true
-    ["inside", 7].has("outside") == false
-    ["inside", 7].has(7) == true
-    ["inside", 7].has("7") == false
+.. tabs::
+
+ .. code-tab:: gdscript
+
+    print(["inside", 7].has("inside")) # True
+    print(["inside", 7].has("outside")) # False
+    print(["inside", 7].has(7)) # True
+    print(["inside", 7].has("7")) # False
+
+ .. code-tab:: csharp
+
+    var arr = new Godot.Collections.Array{"inside", 7};
+    // has is renamed to Contains
+    GD.Print(arr.Contains("inside")); // True
+    GD.Print(arr.Contains("outside")); // False
+    GD.Print(arr.Contains(7)); // True
+    GD.Print(arr.Contains("7")); // False
+
+
+
+
+
+**Note:** This is equivalent to using the ``in`` operator as follows:
+
+
+.. tabs::
+
+ .. code-tab:: gdscript
+
+    # Will evaluate to `true`.
+    if 2 in [2, 4, 6, 8]:
+        print("Contains!")
+
+ .. code-tab:: csharp
+
+    // As there is no "in" keyword in C#, you have to use Contains
+    var array = new Godot.Collections.Array{2, 4, 6, 8};
+    if (array.Contains(2))
+    {
+        GD.Print("Contains!");
+    }
+
+
 
 
 ----
 ----
 
 
 .. _class_Array_method_hash:
 .. _class_Array_method_hash:
 
 
-- :ref:`int<class_int>` **hash** **(** **)**
+- :ref:`int<class_int>` **hash** **(** **)** |const|
+
+Returns a hashed integer value representing the array and its contents.
 
 
-Returns a hashed integer value representing the array contents.
+**Note:** Arrays with equal contents can still produce different hashes. Only the exact same arrays will produce the same hashed integer value.
 
 
 ----
 ----
 
 
 .. _class_Array_method_insert:
 .. _class_Array_method_insert:
 
 
-- void **insert** **(** :ref:`int<class_int>` position, :ref:`Variant<class_Variant>` value **)**
+- :ref:`int<class_int>` **insert** **(** :ref:`int<class_int>` position, :ref:`Variant<class_Variant>` value **)**
 
 
 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()``).
 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:** 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.
+
 ----
 ----
 
 
-.. _class_Array_method_invert:
+.. _class_Array_method_is_empty:
 
 
-- void **invert** **(** **)**
+- :ref:`bool<class_bool>` **is_empty** **(** **)** |const|
 
 
-Reverses the order of the elements in the array.
+Returns ``true`` if the array is empty.
+
+----
+
+.. _class_Array_method_map:
+
+- :ref:`Array<class_Array>` **map** **(** :ref:`Callable<class_Callable>` method **)** |const|
+
+Calls the provided :ref:`Callable<class_Callable>` for each element in the array and returns a new array filled with values returned by the method.
+
+The callable's method should take one :ref:`Variant<class_Variant>` parameter (the current array element) and can return any :ref:`Variant<class_Variant>`.
+
+::
+
+    func _ready():
+        print([1, 2, 3].map(negate)) # Prints [-1, -2, -3].
+        print([1, 2, 3].map(func(number): return -number)) # Same as above, but using lambda function.
+    
+    func negate(number):
+        return -number
 
 
 ----
 ----
 
 
 .. _class_Array_method_max:
 .. _class_Array_method_max:
 
 
-- :ref:`Variant<class_Variant>` **max** **(** **)**
+- :ref:`Variant<class_Variant>` **max** **(** **)** |const|
 
 
 Returns the maximum value contained in the array if all elements are of comparable types. If the elements can't be compared, ``null`` is returned.
 Returns the maximum value contained in the array if all elements are of comparable types. If the elements can't be compared, ``null`` is returned.
 
 
@@ -330,17 +530,83 @@ Returns the maximum value contained in the array if all elements are of comparab
 
 
 .. _class_Array_method_min:
 .. _class_Array_method_min:
 
 
-- :ref:`Variant<class_Variant>` **min** **(** **)**
+- :ref:`Variant<class_Variant>` **min** **(** **)** |const|
 
 
 Returns the minimum value contained in the array if all elements are of comparable types. If the elements can't be compared, ``null`` is returned.
 Returns the minimum value contained in the array if all elements are of comparable types. If the elements can't be compared, ``null`` is returned.
 
 
 ----
 ----
 
 
+.. _class_Array_method_operator !=:
+
+- :ref:`bool<class_bool>` **operator !=** **(** **)** |operator|
+
+----
+
+- :ref:`bool<class_bool>` **operator !=** **(** :ref:`Array<class_Array>` right **)** |operator|
+
+----
+
+.. _class_Array_method_operator +:
+
+- :ref:`Array<class_Array>` **operator +** **(** :ref:`Array<class_Array>` right **)** |operator|
+
+----
+
+.. _class_Array_method_operator <:
+
+- :ref:`bool<class_bool>` **operator <** **(** :ref:`Array<class_Array>` right **)** |operator|
+
+----
+
+.. _class_Array_method_operator <=:
+
+- :ref:`bool<class_bool>` **operator <=** **(** :ref:`Array<class_Array>` right **)** |operator|
+
+----
+
+.. _class_Array_method_operator ==:
+
+- :ref:`bool<class_bool>` **operator ==** **(** **)** |operator|
+
+----
+
+- :ref:`bool<class_bool>` **operator ==** **(** :ref:`Array<class_Array>` right **)** |operator|
+
+----
+
+.. _class_Array_method_operator >:
+
+- :ref:`bool<class_bool>` **operator >** **(** :ref:`Array<class_Array>` right **)** |operator|
+
+----
+
+.. _class_Array_method_operator >=:
+
+- :ref:`bool<class_bool>` **operator >=** **(** :ref:`Array<class_Array>` right **)** |operator|
+
+----
+
+.. _class_Array_method_operator []:
+
+- void **operator []** **(** :ref:`int<class_int>` index **)** |operator|
+
+----
+
+.. _class_Array_method_pop_at:
+
+- :ref:`Variant<class_Variant>` **pop_at** **(** :ref:`int<class_int>` position **)**
+
+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.
+
+----
+
 .. _class_Array_method_pop_back:
 .. _class_Array_method_pop_back:
 
 
 - :ref:`Variant<class_Variant>` **pop_back** **(** **)**
 - :ref:`Variant<class_Variant>` **pop_back** **(** **)**
 
 
-Removes and returns the last element of the array. Returns ``null`` if the array is empty.
+Removes and returns the last element of the array. Returns ``null`` if the array is empty, without printing an error message. See also :ref:`pop_front<class_Array_method_pop_front>`.
 
 
 ----
 ----
 
 
@@ -348,7 +614,9 @@ Removes and returns the last element of the array. Returns ``null`` if the array
 
 
 - :ref:`Variant<class_Variant>` **pop_front** **(** **)**
 - :ref:`Variant<class_Variant>` **pop_front** **(** **)**
 
 
-Removes and returns the first element of the array. Returns ``null`` if the array is empty.
+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.
 
 
 ----
 ----
 
 
@@ -356,7 +624,7 @@ Removes and returns the first element of the array. Returns ``null`` if the arra
 
 
 - void **push_back** **(** :ref:`Variant<class_Variant>` value **)**
 - void **push_back** **(** :ref:`Variant<class_Variant>` value **)**
 
 
-Appends an element at the end of the array.
+Appends an element at the end of the array. See also :ref:`push_front<class_Array_method_push_front>`.
 
 
 ----
 ----
 
 
@@ -364,7 +632,28 @@ Appends an element at the end of the array.
 
 
 - void **push_front** **(** :ref:`Variant<class_Variant>` value **)**
 - void **push_front** **(** :ref:`Variant<class_Variant>` value **)**
 
 
-Adds an element at the beginning of the array.
+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.
+
+----
+
+.. _class_Array_method_reduce:
+
+- :ref:`Variant<class_Variant>` **reduce** **(** :ref:`Callable<class_Callable>` method, :ref:`Variant<class_Variant>` accum=null **)** |const|
+
+Calls the provided :ref:`Callable<class_Callable>` for each element in array and accumulates the result in ``accum``.
+
+The callable's method takes two arguments: the current value of ``accum`` and the current array element. If ``accum`` is ``null`` (default value), the iteration will start from the second element, with the first one used as initial value of ``accum``.
+
+::
+
+    func _ready():
+        print([1, 2, 3].reduce(sum, 10)) # Prints 16.
+        print([1, 2, 3].reduce(func(accum, number): return accum + number, 10)) # Same as above, but using lambda function.
+    
+    func sum(accum, number):
+        return accum + number
 
 
 ----
 ----
 
 
@@ -372,21 +661,33 @@ Adds an element at the beginning of the array.
 
 
 - void **remove** **(** :ref:`int<class_int>` position **)**
 - void **remove** **(** :ref:`int<class_int>` position **)**
 
 
-Removes an element from the array by index.
+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:** 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_resize:
 .. _class_Array_method_resize:
 
 
-- void **resize** **(** :ref:`int<class_int>` size **)**
+- :ref:`int<class_int>` **resize** **(** :ref:`int<class_int>` size **)**
 
 
 Resizes the array to contain a different number of elements. If the array size is smaller, elements are cleared, if bigger, new elements are ``null``.
 Resizes the array to contain a different number of elements. If the array size is smaller, elements are cleared, if bigger, new elements are ``null``.
 
 
 ----
 ----
 
 
+.. _class_Array_method_reverse:
+
+- void **reverse** **(** **)**
+
+Reverses the order of the elements in the array.
+
+----
+
 .. _class_Array_method_rfind:
 .. _class_Array_method_rfind:
 
 
-- :ref:`int<class_int>` **rfind** **(** :ref:`Variant<class_Variant>` what, :ref:`int<class_int>` from=-1 **)**
+- :ref:`int<class_int>` **rfind** **(** :ref:`Variant<class_Variant>` what, :ref:`int<class_int>` from=-1 **)** |const|
 
 
 Searches the array in reverse order. Optionally, a start search index can be passed. If negative, the start index is considered relative to the end of the array.
 Searches the array in reverse order. Optionally, a start search index can be passed. If negative, the start index is considered relative to the end of the array.
 
 
@@ -396,13 +697,13 @@ Searches the array in reverse order. Optionally, a start search index can be pas
 
 
 - void **shuffle** **(** **)**
 - void **shuffle** **(** **)**
 
 
-Shuffles the array such that the items will have a random order. This method uses the global random number generator common to methods such as :ref:`@GDScript.randi<class_@GDScript_method_randi>`. Call :ref:`@GDScript.randomize<class_@GDScript_method_randomize>` to ensure that a new seed will be used each time if you want non-reproducible shuffling.
+Shuffles the array such that the items will have a random order. This method uses the global random number generator common to methods such as :ref:`@GlobalScope.randi<class_@GlobalScope_method_randi>`. Call :ref:`@GlobalScope.randomize<class_@GlobalScope_method_randomize>` to ensure that a new seed will be used each time if you want non-reproducible shuffling.
 
 
 ----
 ----
 
 
 .. _class_Array_method_size:
 .. _class_Array_method_size:
 
 
-- :ref:`int<class_int>` **size** **(** **)**
+- :ref:`int<class_int>` **size** **(** **)** |const|
 
 
 Returns the number of elements in the array.
 Returns the number of elements in the array.
 
 
@@ -410,9 +711,9 @@ Returns the number of elements in the array.
 
 
 .. _class_Array_method_slice:
 .. _class_Array_method_slice:
 
 
-- :ref:`Array<class_Array>` **slice** **(** :ref:`int<class_int>` begin, :ref:`int<class_int>` end, :ref:`int<class_int>` step=1, :ref:`bool<class_bool>` deep=false **)**
+- :ref:`Array<class_Array>` **slice** **(** :ref:`int<class_int>` begin, :ref:`int<class_int>` end, :ref:`int<class_int>` step=1, :ref:`bool<class_bool>` deep=false **)** |const|
 
 
-Duplicates the subset described in the function and returns it in an array, deeply copying the array if ``deep`` is ``true``. Lower and upper index are inclusive, with the ``step`` describing the change between indices while slicing.
+Duplicates the subset described in the function and returns it in an array, deeply copying the array if ``deep`` is ``true``. Lower and upper index are inclusive, with the ``step`` describing the change between indices while slicing. Wraps around if ``begin`` or ``end`` are out of bounds or negative. Returns an empty array for invalid parameters.
 
 
 ----
 ----
 
 
@@ -424,23 +725,35 @@ 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:
 
 
-::
+
+.. tabs::
+
+ .. code-tab:: gdscript
 
 
     var strings = ["string1", "string2", "string10", "string11"]
     var strings = ["string1", "string2", "string10", "string11"]
     strings.sort()
     strings.sort()
     print(strings) # Prints [string1, string10, string11, string2]
     print(strings) # Prints [string1, string10, string11, string2]
 
 
+ .. code-tab:: csharp
+
+    // There is no sort support for Godot.Collections.Array
+
+
+
 ----
 ----
 
 
 .. _class_Array_method_sort_custom:
 .. _class_Array_method_sort_custom:
 
 
-- void **sort_custom** **(** :ref:`Object<class_Object>` obj, :ref:`String<class_String>` func **)**
+- void **sort_custom** **(** :ref:`Callable<class_Callable>` func **)**
 
 
-Sorts the array using a custom method. The arguments are an object that holds the method and the name of such method. The custom method receives two arguments (a pair of elements from the array) and must return either ``true`` or ``false``.
+Sorts the array using a custom method. The custom method receives two arguments (a pair of elements from the array) and must return either ``true`` or ``false``. 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.
 
 
-::
+
+.. tabs::
+
+ .. code-tab:: gdscript
 
 
     class MyCustomSorter:
     class MyCustomSorter:
         static func sort_ascending(a, b):
         static func sort_ascending(a, b):
@@ -449,6 +762,18 @@ Sorts the array using a custom method. The arguments are an object that holds th
             return false
             return false
     
     
     var my_items = [[5, "Potato"], [9, "Rice"], [4, "Tomato"]]
     var my_items = [[5, "Potato"], [9, "Rice"], [4, "Tomato"]]
-    my_items.sort_custom(MyCustomSorter, "sort_ascending")
+    my_items.sort_custom(MyCustomSorter.sort_ascending)
     print(my_items) # Prints [[4, Tomato], [5, Potato], [9, Rice]].
     print(my_items) # Prints [[4, Tomato], [5, Potato], [9, Rice]].
 
 
+ .. code-tab:: csharp
+
+    // There is no custom sort support for Godot.Collections.Array
+
+
+
+.. |virtual| replace:: :abbr:`virtual (This method should typically be overridden by the user to have any effect.)`
+.. |const| replace:: :abbr:`const (This method has no side effects. It doesn't modify any of the instance's member variables.)`
+.. |vararg| replace:: :abbr:`vararg (This method accepts any number of arguments after the ones described here.)`
+.. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)`
+.. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)`
+.. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)`

+ 141 - 176
classes/class_arraymesh.rst

@@ -9,7 +9,7 @@
 ArrayMesh
 ArrayMesh
 =========
 =========
 
 
-**Inherits:** :ref:`Mesh<class_Mesh>` **<** :ref:`Resource<class_Resource>` **<** :ref:`Reference<class_Reference>` **<** :ref:`Object<class_Object>`
+**Inherits:** :ref:`Mesh<class_Mesh>` **<** :ref:`Resource<class_Resource>` **<** :ref:`RefCounted<class_RefCounted>` **<** :ref:`Object<class_Object>`
 
 
 :ref:`Mesh<class_Mesh>` type that provides utility for constructing a surface from arrays.
 :ref:`Mesh<class_Mesh>` type that provides utility for constructing a surface from arrays.
 
 
@@ -20,176 +20,111 @@ The ``ArrayMesh`` is used to construct a :ref:`Mesh<class_Mesh>` by specifying t
 
 
 The most basic example is the creation of a single triangle:
 The most basic example is the creation of a single triangle:
 
 
-::
+
+.. tabs::
+
+ .. code-tab:: gdscript
 
 
     var vertices = PackedVector3Array()
     var vertices = PackedVector3Array()
     vertices.push_back(Vector3(0, 1, 0))
     vertices.push_back(Vector3(0, 1, 0))
     vertices.push_back(Vector3(1, 0, 0))
     vertices.push_back(Vector3(1, 0, 0))
     vertices.push_back(Vector3(0, 0, 1))
     vertices.push_back(Vector3(0, 0, 1))
+    
     # Initialize the ArrayMesh.
     # Initialize the ArrayMesh.
     var arr_mesh = ArrayMesh.new()
     var arr_mesh = ArrayMesh.new()
     var arrays = []
     var arrays = []
-    arrays.resize(ArrayMesh.ARRAY_MAX)
-    arrays[ArrayMesh.ARRAY_VERTEX] = vertices
+    arrays.resize(Mesh.ARRAY_MAX)
+    arrays[Mesh.ARRAY_VERTEX] = vertices
+    
     # Create the Mesh.
     # Create the Mesh.
     arr_mesh.add_surface_from_arrays(Mesh.PRIMITIVE_TRIANGLES, arrays)
     arr_mesh.add_surface_from_arrays(Mesh.PRIMITIVE_TRIANGLES, arrays)
-    var m = MeshInstance.new()
+    var m = MeshInstance3D.new()
     m.mesh = arr_mesh
     m.mesh = arr_mesh
 
 
-The :ref:`MeshInstance<class_MeshInstance>` is ready to be added to the :ref:`SceneTree<class_SceneTree>` to be shown.
-
-Tutorials
----------
-
-- :doc:`../tutorials/3d/procedural_geometry/arraymesh`
-
-Properties
-----------
-
-+-------------------------------------------------+--------------------------------------------------------------------+------------------------------+
-| :ref:`BlendShapeMode<enum_Mesh_BlendShapeMode>` | :ref:`blend_shape_mode<class_ArrayMesh_property_blend_shape_mode>` | ``1``                        |
-+-------------------------------------------------+--------------------------------------------------------------------+------------------------------+
-| :ref:`AABB<class_AABB>`                         | :ref:`custom_aabb<class_ArrayMesh_property_custom_aabb>`           | ``AABB( 0, 0, 0, 0, 0, 0 )`` |
-+-------------------------------------------------+--------------------------------------------------------------------+------------------------------+
-
-Methods
--------
-
-+-----------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| void                                          | :ref:`add_blend_shape<class_ArrayMesh_method_add_blend_shape>` **(** :ref:`StringName<class_StringName>` name **)**                                                                                                                                                                                                          |
-+-----------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| void                                          | :ref:`add_surface_from_arrays<class_ArrayMesh_method_add_surface_from_arrays>` **(** :ref:`PrimitiveType<enum_Mesh_PrimitiveType>` primitive, :ref:`Array<class_Array>` arrays, :ref:`Array<class_Array>` blend_shapes=[  ], :ref:`Dictionary<class_Dictionary>` lods={  }, :ref:`int<class_int>` compress_flags=31744 **)** |
-+-----------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| void                                          | :ref:`clear_blend_shapes<class_ArrayMesh_method_clear_blend_shapes>` **(** **)**                                                                                                                                                                                                                                             |
-+-----------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| void                                          | :ref:`clear_surfaces<class_ArrayMesh_method_clear_surfaces>` **(** **)**                                                                                                                                                                                                                                                     |
-+-----------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`int<class_int>`                         | :ref:`get_blend_shape_count<class_ArrayMesh_method_get_blend_shape_count>` **(** **)** const                                                                                                                                                                                                                                 |
-+-----------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`StringName<class_StringName>`           | :ref:`get_blend_shape_name<class_ArrayMesh_method_get_blend_shape_name>` **(** :ref:`int<class_int>` index **)** const                                                                                                                                                                                                       |
-+-----------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`Error<enum_@GlobalScope_Error>`         | :ref:`lightmap_unwrap<class_ArrayMesh_method_lightmap_unwrap>` **(** :ref:`Transform<class_Transform>` transform, :ref:`float<class_float>` texel_size **)**                                                                                                                                                                 |
-+-----------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| void                                          | :ref:`regen_normalmaps<class_ArrayMesh_method_regen_normalmaps>` **(** **)**                                                                                                                                                                                                                                                 |
-+-----------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`int<class_int>`                         | :ref:`surface_find_by_name<class_ArrayMesh_method_surface_find_by_name>` **(** :ref:`String<class_String>` name **)** const                                                                                                                                                                                                  |
-+-----------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`int<class_int>`                         | :ref:`surface_get_array_index_len<class_ArrayMesh_method_surface_get_array_index_len>` **(** :ref:`int<class_int>` surf_idx **)** const                                                                                                                                                                                      |
-+-----------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`int<class_int>`                         | :ref:`surface_get_array_len<class_ArrayMesh_method_surface_get_array_len>` **(** :ref:`int<class_int>` surf_idx **)** const                                                                                                                                                                                                  |
-+-----------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`int<class_int>`                         | :ref:`surface_get_format<class_ArrayMesh_method_surface_get_format>` **(** :ref:`int<class_int>` surf_idx **)** const                                                                                                                                                                                                        |
-+-----------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`String<class_String>`                   | :ref:`surface_get_name<class_ArrayMesh_method_surface_get_name>` **(** :ref:`int<class_int>` surf_idx **)** const                                                                                                                                                                                                            |
-+-----------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`PrimitiveType<enum_Mesh_PrimitiveType>` | :ref:`surface_get_primitive_type<class_ArrayMesh_method_surface_get_primitive_type>` **(** :ref:`int<class_int>` surf_idx **)** const                                                                                                                                                                                        |
-+-----------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| void                                          | :ref:`surface_set_name<class_ArrayMesh_method_surface_set_name>` **(** :ref:`int<class_int>` surf_idx, :ref:`String<class_String>` name **)**                                                                                                                                                                                |
-+-----------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| void                                          | :ref:`surface_update_region<class_ArrayMesh_method_surface_update_region>` **(** :ref:`int<class_int>` surf_idx, :ref:`int<class_int>` offset, :ref:`PackedByteArray<class_PackedByteArray>` data **)**                                                                                                                      |
-+-----------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-
-Enumerations
-------------
-
-.. _enum_ArrayMesh_ArrayType:
-
-.. _class_ArrayMesh_constant_ARRAY_VERTEX:
-
-.. _class_ArrayMesh_constant_ARRAY_NORMAL:
-
-.. _class_ArrayMesh_constant_ARRAY_TANGENT:
-
-.. _class_ArrayMesh_constant_ARRAY_COLOR:
-
-.. _class_ArrayMesh_constant_ARRAY_TEX_UV:
-
-.. _class_ArrayMesh_constant_ARRAY_TEX_UV2:
-
-.. _class_ArrayMesh_constant_ARRAY_BONES:
-
-.. _class_ArrayMesh_constant_ARRAY_WEIGHTS:
-
-.. _class_ArrayMesh_constant_ARRAY_INDEX:
-
-.. _class_ArrayMesh_constant_ARRAY_MAX:
-
-enum **ArrayType**:
-
-- **ARRAY_VERTEX** = **0** --- :ref:`PackedVector3Array<class_PackedVector3Array>`, :ref:`PackedVector2Array<class_PackedVector2Array>`, or :ref:`Array<class_Array>` of vertex positions.
-
-- **ARRAY_NORMAL** = **1** --- :ref:`PackedVector3Array<class_PackedVector3Array>` of vertex normals.
-
-- **ARRAY_TANGENT** = **2** --- :ref:`PackedFloat32Array<class_PackedFloat32Array>` of vertex tangents. Each element in groups of 4 floats, first 3 floats determine the tangent, and the last the binormal direction as -1 or 1.
-
-- **ARRAY_COLOR** = **3** --- :ref:`PackedColorArray<class_PackedColorArray>` of vertex colors.
-
-- **ARRAY_TEX_UV** = **4** --- :ref:`PackedVector2Array<class_PackedVector2Array>` for UV coordinates.
-
-- **ARRAY_TEX_UV2** = **5** --- :ref:`PackedVector2Array<class_PackedVector2Array>` for second UV coordinates.
-
-- **ARRAY_BONES** = **6** --- :ref:`PackedFloat32Array<class_PackedFloat32Array>` or :ref:`PackedInt32Array<class_PackedInt32Array>` of bone indices. Each element in groups of 4 floats.
-
-- **ARRAY_WEIGHTS** = **7** --- :ref:`PackedFloat32Array<class_PackedFloat32Array>` of bone weights. Each element in groups of 4 floats.
-
-- **ARRAY_INDEX** = **8** --- :ref:`PackedInt32Array<class_PackedInt32Array>` of integers used as indices referencing vertices, colors, normals, tangents, and textures. All of those arrays must have the same number of elements as the vertex array. No index can be beyond the vertex array size. When this index array is present, it puts the function into "index mode," where the index selects the \*i\*'th vertex, normal, tangent, color, UV, etc. This means if you want to have different normals or colors along an edge, you have to duplicate the vertices.
-
-For triangles, the index array is interpreted as triples, referring to the vertices of each triangle. For lines, the index array is in pairs indicating the start and end of each line.
-
-- **ARRAY_MAX** = **9** --- Represents the size of the :ref:`ArrayType<enum_ArrayMesh_ArrayType>` enum.
-
-----
-
-.. _enum_ArrayMesh_ArrayFormat:
-
-.. _class_ArrayMesh_constant_ARRAY_FORMAT_VERTEX:
-
-.. _class_ArrayMesh_constant_ARRAY_FORMAT_NORMAL:
-
-.. _class_ArrayMesh_constant_ARRAY_FORMAT_TANGENT:
-
-.. _class_ArrayMesh_constant_ARRAY_FORMAT_COLOR:
-
-.. _class_ArrayMesh_constant_ARRAY_FORMAT_TEX_UV:
-
-.. _class_ArrayMesh_constant_ARRAY_FORMAT_TEX_UV2:
-
-.. _class_ArrayMesh_constant_ARRAY_FORMAT_BONES:
-
-.. _class_ArrayMesh_constant_ARRAY_FORMAT_WEIGHTS:
+ .. code-tab:: csharp
 
 
-.. _class_ArrayMesh_constant_ARRAY_FORMAT_INDEX:
+    var vertices = new Godot.Collections.Array<Vector3>();
+    vertices.Add(new Vector3(0, 1, 0));
+    vertices.Add(new Vector3(1, 0, 0));
+    vertices.Add(new Vector3(0, 0, 1));
+    
+    // Initialize the ArrayMesh.
+    var arrMesh = new ArrayMesh();
+    var arrays = new Godot.Collections.Array();
+    arrays.Resize((int)Mesh.ArrayType.Max);
+    arrays[(int)Mesh.ArrayType.Vertex] = vertices;
+    
+    // Create the Mesh.
+    arrMesh.AddSurfaceFromArrays(Mesh.PrimitiveType.Triangles, arrays);
+    var m = new MeshInstance();
+    m.Mesh = arrMesh;
 
 
-enum **ArrayFormat**:
 
 
-- **ARRAY_FORMAT_VERTEX** = **1** --- Array format will include vertices (mandatory).
 
 
-- **ARRAY_FORMAT_NORMAL** = **2** --- Array format will include normals.
+The :ref:`MeshInstance3D<class_MeshInstance3D>` is ready to be added to the :ref:`SceneTree<class_SceneTree>` to be shown.
 
 
-- **ARRAY_FORMAT_TANGENT** = **4** --- Array format will include tangents.
+See also :ref:`ImmediateMesh<class_ImmediateMesh>`, :ref:`MeshDataTool<class_MeshDataTool>` and :ref:`SurfaceTool<class_SurfaceTool>` for procedural geometry generation.
 
 
-- **ARRAY_FORMAT_COLOR** = **8** --- Array format will include a color array.
+**Note:** Godot uses clockwise `winding order <https://learnopengl.com/Advanced-OpenGL/Face-culling>`__ for front faces of triangle primitive modes.
 
 
-- **ARRAY_FORMAT_TEX_UV** = **16** --- Array format will include UVs.
-
-- **ARRAY_FORMAT_TEX_UV2** = **32** --- Array format will include another set of UVs.
-
-- **ARRAY_FORMAT_BONES** = **64** --- Array format will include bone indices.
-
-- **ARRAY_FORMAT_WEIGHTS** = **128** --- Array format will include bone weights.
-
-- **ARRAY_FORMAT_INDEX** = **256** --- Index array will be used.
-
-Constants
+Tutorials
 ---------
 ---------
 
 
-.. _class_ArrayMesh_constant_NO_INDEX_ARRAY:
+- :doc:`../tutorials/content/procedural_geometry/arraymesh`
 
 
-.. _class_ArrayMesh_constant_ARRAY_WEIGHTS_SIZE:
+Properties
+----------
 
 
-- **NO_INDEX_ARRAY** = **-1** --- Default value used for index_array_len when no indices are present.
++-------------------------------------------------+--------------------------------------------------------------------+----------------------------+
+| :ref:`BlendShapeMode<enum_Mesh_BlendShapeMode>` | :ref:`blend_shape_mode<class_ArrayMesh_property_blend_shape_mode>` | ``1``                      |
++-------------------------------------------------+--------------------------------------------------------------------+----------------------------+
+| :ref:`AABB<class_AABB>`                         | :ref:`custom_aabb<class_ArrayMesh_property_custom_aabb>`           | ``AABB(0, 0, 0, 0, 0, 0)`` |
++-------------------------------------------------+--------------------------------------------------------------------+----------------------------+
+| :ref:`ArrayMesh<class_ArrayMesh>`               | :ref:`shadow_mesh<class_ArrayMesh_property_shadow_mesh>`           |                            |
++-------------------------------------------------+--------------------------------------------------------------------+----------------------------+
 
 
-- **ARRAY_WEIGHTS_SIZE** = **4** --- Amount of weights/bone indices per vertex (always 4).
+Methods
+-------
+
++-----------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| void                                          | :ref:`add_blend_shape<class_ArrayMesh_method_add_blend_shape>` **(** :ref:`StringName<class_StringName>` name **)**                                                                                                                                                                                                   |
++-----------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| void                                          | :ref:`add_surface_from_arrays<class_ArrayMesh_method_add_surface_from_arrays>` **(** :ref:`PrimitiveType<enum_Mesh_PrimitiveType>` primitive, :ref:`Array<class_Array>` arrays, :ref:`Array<class_Array>` blend_shapes=[], :ref:`Dictionary<class_Dictionary>` lods={ }, :ref:`int<class_int>` compress_flags=0 **)** |
++-----------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| void                                          | :ref:`clear_blend_shapes<class_ArrayMesh_method_clear_blend_shapes>` **(** **)**                                                                                                                                                                                                                                      |
++-----------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| void                                          | :ref:`clear_surfaces<class_ArrayMesh_method_clear_surfaces>` **(** **)**                                                                                                                                                                                                                                              |
++-----------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`int<class_int>`                         | :ref:`get_blend_shape_count<class_ArrayMesh_method_get_blend_shape_count>` **(** **)** |const|                                                                                                                                                                                                                        |
++-----------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`StringName<class_StringName>`           | :ref:`get_blend_shape_name<class_ArrayMesh_method_get_blend_shape_name>` **(** :ref:`int<class_int>` index **)** |const|                                                                                                                                                                                              |
++-----------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`Error<enum_@GlobalScope_Error>`         | :ref:`lightmap_unwrap<class_ArrayMesh_method_lightmap_unwrap>` **(** :ref:`Transform3D<class_Transform3D>` transform, :ref:`float<class_float>` texel_size **)**                                                                                                                                                      |
++-----------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| void                                          | :ref:`regen_normal_maps<class_ArrayMesh_method_regen_normal_maps>` **(** **)**                                                                                                                                                                                                                                        |
++-----------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| void                                          | :ref:`set_blend_shape_name<class_ArrayMesh_method_set_blend_shape_name>` **(** :ref:`int<class_int>` index, :ref:`StringName<class_StringName>` name **)**                                                                                                                                                            |
++-----------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`int<class_int>`                         | :ref:`surface_find_by_name<class_ArrayMesh_method_surface_find_by_name>` **(** :ref:`String<class_String>` name **)** |const|                                                                                                                                                                                         |
++-----------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`int<class_int>`                         | :ref:`surface_get_array_index_len<class_ArrayMesh_method_surface_get_array_index_len>` **(** :ref:`int<class_int>` surf_idx **)** |const|                                                                                                                                                                             |
++-----------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`int<class_int>`                         | :ref:`surface_get_array_len<class_ArrayMesh_method_surface_get_array_len>` **(** :ref:`int<class_int>` surf_idx **)** |const|                                                                                                                                                                                         |
++-----------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`int<class_int>`                         | :ref:`surface_get_format<class_ArrayMesh_method_surface_get_format>` **(** :ref:`int<class_int>` surf_idx **)** |const|                                                                                                                                                                                               |
++-----------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`String<class_String>`                   | :ref:`surface_get_name<class_ArrayMesh_method_surface_get_name>` **(** :ref:`int<class_int>` surf_idx **)** |const|                                                                                                                                                                                                   |
++-----------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`PrimitiveType<enum_Mesh_PrimitiveType>` | :ref:`surface_get_primitive_type<class_ArrayMesh_method_surface_get_primitive_type>` **(** :ref:`int<class_int>` surf_idx **)** |const|                                                                                                                                                                               |
++-----------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| void                                          | :ref:`surface_set_name<class_ArrayMesh_method_surface_set_name>` **(** :ref:`int<class_int>` surf_idx, :ref:`String<class_String>` name **)**                                                                                                                                                                         |
++-----------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| void                                          | :ref:`surface_update_attribute_region<class_ArrayMesh_method_surface_update_attribute_region>` **(** :ref:`int<class_int>` surf_idx, :ref:`int<class_int>` offset, :ref:`PackedByteArray<class_PackedByteArray>` data **)**                                                                                           |
++-----------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| void                                          | :ref:`surface_update_skin_region<class_ArrayMesh_method_surface_update_skin_region>` **(** :ref:`int<class_int>` surf_idx, :ref:`int<class_int>` offset, :ref:`PackedByteArray<class_PackedByteArray>` data **)**                                                                                                     |
++-----------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| void                                          | :ref:`surface_update_vertex_region<class_ArrayMesh_method_surface_update_vertex_region>` **(** :ref:`int<class_int>` surf_idx, :ref:`int<class_int>` offset, :ref:`PackedByteArray<class_PackedByteArray>` data **)**                                                                                                 |
++-----------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
 
 
 Property Descriptions
 Property Descriptions
 ---------------------
 ---------------------
@@ -214,16 +149,28 @@ Sets the blend shape mode to one of :ref:`BlendShapeMode<enum_Mesh_BlendShapeMod
 
 
 - :ref:`AABB<class_AABB>` **custom_aabb**
 - :ref:`AABB<class_AABB>` **custom_aabb**
 
 
-+-----------+------------------------------+
-| *Default* | ``AABB( 0, 0, 0, 0, 0, 0 )`` |
-+-----------+------------------------------+
-| *Setter*  | set_custom_aabb(value)       |
-+-----------+------------------------------+
-| *Getter*  | get_custom_aabb()            |
-+-----------+------------------------------+
++-----------+----------------------------+
+| *Default* | ``AABB(0, 0, 0, 0, 0, 0)`` |
++-----------+----------------------------+
+| *Setter*  | set_custom_aabb(value)     |
++-----------+----------------------------+
+| *Getter*  | get_custom_aabb()          |
++-----------+----------------------------+
 
 
 Overrides the :ref:`AABB<class_AABB>` with one defined by user for use with frustum culling. Especially useful to avoid unexpected culling when using a shader to offset vertices.
 Overrides the :ref:`AABB<class_AABB>` with one defined by user for use with frustum culling. Especially useful to avoid unexpected culling when using a shader to offset vertices.
 
 
+----
+
+.. _class_ArrayMesh_property_shadow_mesh:
+
+- :ref:`ArrayMesh<class_ArrayMesh>` **shadow_mesh**
+
++----------+------------------------+
+| *Setter* | set_shadow_mesh(value) |
++----------+------------------------+
+| *Getter* | get_shadow_mesh()      |
++----------+------------------------+
+
 Method Descriptions
 Method Descriptions
 -------------------
 -------------------
 
 
@@ -237,17 +184,13 @@ Adds name for a blend shape that will be added with :ref:`add_surface_from_array
 
 
 .. _class_ArrayMesh_method_add_surface_from_arrays:
 .. _class_ArrayMesh_method_add_surface_from_arrays:
 
 
-- void **add_surface_from_arrays** **(** :ref:`PrimitiveType<enum_Mesh_PrimitiveType>` primitive, :ref:`Array<class_Array>` arrays, :ref:`Array<class_Array>` blend_shapes=[  ], :ref:`Dictionary<class_Dictionary>` lods={  }, :ref:`int<class_int>` compress_flags=31744 **)**
+- void **add_surface_from_arrays** **(** :ref:`PrimitiveType<enum_Mesh_PrimitiveType>` primitive, :ref:`Array<class_Array>` arrays, :ref:`Array<class_Array>` blend_shapes=[], :ref:`Dictionary<class_Dictionary>` lods={ }, :ref:`int<class_int>` compress_flags=0 **)**
 
 
 Creates a new surface.
 Creates a new surface.
 
 
-Surfaces are created to be rendered using a ``primitive``, which may be any of the types defined in :ref:`PrimitiveType<enum_Mesh_PrimitiveType>`. (As a note, when using indices, it is recommended to only use points, lines or triangles.) :ref:`Mesh.get_surface_count<class_Mesh_method_get_surface_count>` will become the ``surf_idx`` for this new surface.
-
-The ``arrays`` argument is an array of arrays. See :ref:`ArrayType<enum_ArrayMesh_ArrayType>` for the values used in this array. For example, ``arrays[0]`` is the array of vertices. That first vertex sub-array is always required; the others are optional. Adding an index array puts this function into "index mode" where the vertex and other arrays become the sources of data and the index array defines the vertex order. All sub-arrays must have the same length as the vertex array or be empty, except for :ref:`ARRAY_INDEX<class_ArrayMesh_constant_ARRAY_INDEX>` if it is used.
-
-Adding an index array puts this function into "index mode" where the vertex and other arrays become the sources of data, and the index array defines the order of the vertices.
+Surfaces are created to be rendered using a ``primitive``, which may be any of the types defined in :ref:`PrimitiveType<enum_Mesh_PrimitiveType>`. (As a note, when using indices, it is recommended to only use points, lines, or triangles.) :ref:`Mesh.get_surface_count<class_Mesh_method_get_surface_count>` will become the ``surf_idx`` for this new surface.
 
 
-Godot uses clockwise winding order for front faces of triangle primitive modes.
+The ``arrays`` argument is an array of arrays. See :ref:`ArrayType<enum_Mesh_ArrayType>` for the values used in this array. For example, ``arrays[0]`` is the array of vertices. That first vertex sub-array is always required; the others are optional. Adding an index array puts this function into "index mode" where the vertex and other arrays become the sources of data and the index array defines the vertex order. All sub-arrays must have the same length as the vertex array or be empty, except for :ref:`Mesh.ARRAY_INDEX<class_Mesh_constant_ARRAY_INDEX>` if it is used.
 
 
 ----
 ----
 
 
@@ -269,7 +212,7 @@ Removes all surfaces from this ``ArrayMesh``.
 
 
 .. _class_ArrayMesh_method_get_blend_shape_count:
 .. _class_ArrayMesh_method_get_blend_shape_count:
 
 
-- :ref:`int<class_int>` **get_blend_shape_count** **(** **)** const
+- :ref:`int<class_int>` **get_blend_shape_count** **(** **)** |const|
 
 
 Returns the number of blend shapes that the ``ArrayMesh`` holds.
 Returns the number of blend shapes that the ``ArrayMesh`` holds.
 
 
@@ -277,7 +220,7 @@ Returns the number of blend shapes that the ``ArrayMesh`` holds.
 
 
 .. _class_ArrayMesh_method_get_blend_shape_name:
 .. _class_ArrayMesh_method_get_blend_shape_name:
 
 
-- :ref:`StringName<class_StringName>` **get_blend_shape_name** **(** :ref:`int<class_int>` index **)** const
+- :ref:`StringName<class_StringName>` **get_blend_shape_name** **(** :ref:`int<class_int>` index **)** |const|
 
 
 Returns the name of the blend shape at this index.
 Returns the name of the blend shape at this index.
 
 
@@ -285,23 +228,31 @@ Returns the name of the blend shape at this index.
 
 
 .. _class_ArrayMesh_method_lightmap_unwrap:
 .. _class_ArrayMesh_method_lightmap_unwrap:
 
 
-- :ref:`Error<enum_@GlobalScope_Error>` **lightmap_unwrap** **(** :ref:`Transform<class_Transform>` transform, :ref:`float<class_float>` texel_size **)**
+- :ref:`Error<enum_@GlobalScope_Error>` **lightmap_unwrap** **(** :ref:`Transform3D<class_Transform3D>` transform, :ref:`float<class_float>` texel_size **)**
 
 
 Will perform a UV unwrap on the ``ArrayMesh`` to prepare the mesh for lightmapping.
 Will perform a UV unwrap on the ``ArrayMesh`` to prepare the mesh for lightmapping.
 
 
 ----
 ----
 
 
-.. _class_ArrayMesh_method_regen_normalmaps:
+.. _class_ArrayMesh_method_regen_normal_maps:
 
 
-- void **regen_normalmaps** **(** **)**
+- void **regen_normal_maps** **(** **)**
 
 
 Will regenerate normal maps for the ``ArrayMesh``.
 Will regenerate normal maps for the ``ArrayMesh``.
 
 
 ----
 ----
 
 
+.. _class_ArrayMesh_method_set_blend_shape_name:
+
+- void **set_blend_shape_name** **(** :ref:`int<class_int>` index, :ref:`StringName<class_StringName>` name **)**
+
+Sets the name of the blend shape at this index.
+
+----
+
 .. _class_ArrayMesh_method_surface_find_by_name:
 .. _class_ArrayMesh_method_surface_find_by_name:
 
 
-- :ref:`int<class_int>` **surface_find_by_name** **(** :ref:`String<class_String>` name **)** const
+- :ref:`int<class_int>` **surface_find_by_name** **(** :ref:`String<class_String>` name **)** |const|
 
 
 Returns the index of the first surface with this name held within this ``ArrayMesh``. If none are found, -1 is returned.
 Returns the index of the first surface with this name held within this ``ArrayMesh``. If none are found, -1 is returned.
 
 
@@ -309,7 +260,7 @@ Returns the index of the first surface with this name held within this ``ArrayMe
 
 
 .. _class_ArrayMesh_method_surface_get_array_index_len:
 .. _class_ArrayMesh_method_surface_get_array_index_len:
 
 
-- :ref:`int<class_int>` **surface_get_array_index_len** **(** :ref:`int<class_int>` surf_idx **)** const
+- :ref:`int<class_int>` **surface_get_array_index_len** **(** :ref:`int<class_int>` surf_idx **)** |const|
 
 
 Returns the length in indices of the index array in the requested surface (see :ref:`add_surface_from_arrays<class_ArrayMesh_method_add_surface_from_arrays>`).
 Returns the length in indices of the index array in the requested surface (see :ref:`add_surface_from_arrays<class_ArrayMesh_method_add_surface_from_arrays>`).
 
 
@@ -317,7 +268,7 @@ Returns the length in indices of the index array in the requested surface (see :
 
 
 .. _class_ArrayMesh_method_surface_get_array_len:
 .. _class_ArrayMesh_method_surface_get_array_len:
 
 
-- :ref:`int<class_int>` **surface_get_array_len** **(** :ref:`int<class_int>` surf_idx **)** const
+- :ref:`int<class_int>` **surface_get_array_len** **(** :ref:`int<class_int>` surf_idx **)** |const|
 
 
 Returns the length in vertices of the vertex array in the requested surface (see :ref:`add_surface_from_arrays<class_ArrayMesh_method_add_surface_from_arrays>`).
 Returns the length in vertices of the vertex array in the requested surface (see :ref:`add_surface_from_arrays<class_ArrayMesh_method_add_surface_from_arrays>`).
 
 
@@ -325,7 +276,7 @@ Returns the length in vertices of the vertex array in the requested surface (see
 
 
 .. _class_ArrayMesh_method_surface_get_format:
 .. _class_ArrayMesh_method_surface_get_format:
 
 
-- :ref:`int<class_int>` **surface_get_format** **(** :ref:`int<class_int>` surf_idx **)** const
+- :ref:`int<class_int>` **surface_get_format** **(** :ref:`int<class_int>` surf_idx **)** |const|
 
 
 Returns the format mask of the requested surface (see :ref:`add_surface_from_arrays<class_ArrayMesh_method_add_surface_from_arrays>`).
 Returns the format mask of the requested surface (see :ref:`add_surface_from_arrays<class_ArrayMesh_method_add_surface_from_arrays>`).
 
 
@@ -333,7 +284,7 @@ Returns the format mask of the requested surface (see :ref:`add_surface_from_arr
 
 
 .. _class_ArrayMesh_method_surface_get_name:
 .. _class_ArrayMesh_method_surface_get_name:
 
 
-- :ref:`String<class_String>` **surface_get_name** **(** :ref:`int<class_int>` surf_idx **)** const
+- :ref:`String<class_String>` **surface_get_name** **(** :ref:`int<class_int>` surf_idx **)** |const|
 
 
 Gets the name assigned to this surface.
 Gets the name assigned to this surface.
 
 
@@ -341,7 +292,7 @@ Gets the name assigned to this surface.
 
 
 .. _class_ArrayMesh_method_surface_get_primitive_type:
 .. _class_ArrayMesh_method_surface_get_primitive_type:
 
 
-- :ref:`PrimitiveType<enum_Mesh_PrimitiveType>` **surface_get_primitive_type** **(** :ref:`int<class_int>` surf_idx **)** const
+- :ref:`PrimitiveType<enum_Mesh_PrimitiveType>` **surface_get_primitive_type** **(** :ref:`int<class_int>` surf_idx **)** |const|
 
 
 Returns the primitive type of the requested surface (see :ref:`add_surface_from_arrays<class_ArrayMesh_method_add_surface_from_arrays>`).
 Returns the primitive type of the requested surface (see :ref:`add_surface_from_arrays<class_ArrayMesh_method_add_surface_from_arrays>`).
 
 
@@ -355,11 +306,25 @@ Sets a name for a given surface.
 
 
 ----
 ----
 
 
-.. _class_ArrayMesh_method_surface_update_region:
+.. _class_ArrayMesh_method_surface_update_attribute_region:
 
 
-- void **surface_update_region** **(** :ref:`int<class_int>` surf_idx, :ref:`int<class_int>` offset, :ref:`PackedByteArray<class_PackedByteArray>` data **)**
+- void **surface_update_attribute_region** **(** :ref:`int<class_int>` surf_idx, :ref:`int<class_int>` offset, :ref:`PackedByteArray<class_PackedByteArray>` data **)**
+
+----
+
+.. _class_ArrayMesh_method_surface_update_skin_region:
+
+- void **surface_update_skin_region** **(** :ref:`int<class_int>` surf_idx, :ref:`int<class_int>` offset, :ref:`PackedByteArray<class_PackedByteArray>` data **)**
+
+----
 
 
-Updates a specified region of mesh arrays on the GPU.
+.. _class_ArrayMesh_method_surface_update_vertex_region:
 
 
-**Warning:** Only use if you know what you are doing. You can easily cause crashes by calling this function with improper arguments.
+- void **surface_update_vertex_region** **(** :ref:`int<class_int>` surf_idx, :ref:`int<class_int>` offset, :ref:`PackedByteArray<class_PackedByteArray>` data **)**
 
 
+.. |virtual| replace:: :abbr:`virtual (This method should typically be overridden by the user to have any effect.)`
+.. |const| replace:: :abbr:`const (This method has no side effects. It doesn't modify any of the instance's member variables.)`
+.. |vararg| replace:: :abbr:`vararg (This method accepts any number of arguments after the ones described here.)`
+.. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)`
+.. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)`
+.. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)`

+ 0 - 27
classes/class_arvrcamera.rst

@@ -1,27 +0,0 @@
-:github_url: hide
-
-.. Generated automatically by doc/tools/makerst.py in Godot's source tree.
-.. DO NOT EDIT THIS FILE, but the ARVRCamera.xml source instead.
-.. The source is found in doc/classes or modules/<name>/doc_classes.
-
-.. _class_ARVRCamera:
-
-ARVRCamera
-==========
-
-**Inherits:** :ref:`Camera<class_Camera>` **<** :ref:`Spatial<class_Spatial>` **<** :ref:`Node<class_Node>` **<** :ref:`Object<class_Object>`
-
-A camera node with a few overrules for AR/VR applied, such as location tracking.
-
-Description
------------
-
-This is a helper spatial node for our camera; note that, if stereoscopic rendering is applicable (VR-HMD), most of the camera properties are ignored, as the HMD information overrides them. The only properties that can be trusted are the near and far planes.
-
-The position and orientation of this node is automatically updated by the ARVR Server to represent the location of the HMD if such tracking is available and can thus be used by game logic. Note that, in contrast to the ARVR Controller, the render thread has access to the most up-to-date tracking data of the HMD and the location of the ARVRCamera can lag a few milliseconds behind what is used for rendering as a result.
-
-Tutorials
----------
-
-- :doc:`../tutorials/vr/index`
-

+ 0 - 180
classes/class_arvrcontroller.rst

@@ -1,180 +0,0 @@
-:github_url: hide
-
-.. Generated automatically by doc/tools/makerst.py in Godot's source tree.
-.. DO NOT EDIT THIS FILE, but the ARVRController.xml source instead.
-.. The source is found in doc/classes or modules/<name>/doc_classes.
-
-.. _class_ARVRController:
-
-ARVRController
-==============
-
-**Inherits:** :ref:`Spatial<class_Spatial>` **<** :ref:`Node<class_Node>` **<** :ref:`Object<class_Object>`
-
-A spatial node representing a spatially-tracked controller.
-
-Description
------------
-
-This is a helper spatial node that is linked to the tracking of controllers. It also offers several handy passthroughs to the state of buttons and such on the controllers.
-
-Controllers are linked by their ID. You can create controller nodes before the controllers are available. If your game always uses two controllers (one for each hand), you can predefine the controllers with ID 1 and 2; they will become active as soon as the controllers are identified. If you expect additional controllers to be used, you should react to the signals and add ARVRController nodes to your scene.
-
-The position of the controller node is automatically updated by the :ref:`ARVRServer<class_ARVRServer>`. This makes this node ideal to add child nodes to visualize the controller.
-
-Tutorials
----------
-
-- :doc:`../tutorials/vr/index`
-
-Properties
-----------
-
-+---------------------------+-------------------------------------------------------------------+---------+
-| :ref:`int<class_int>`     | :ref:`controller_id<class_ARVRController_property_controller_id>` | ``1``   |
-+---------------------------+-------------------------------------------------------------------+---------+
-| :ref:`float<class_float>` | :ref:`rumble<class_ARVRController_property_rumble>`               | ``0.0`` |
-+---------------------------+-------------------------------------------------------------------+---------+
-
-Methods
--------
-
-+------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+
-| :ref:`String<class_String>`                                | :ref:`get_controller_name<class_ARVRController_method_get_controller_name>` **(** **)** const                          |
-+------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+
-| :ref:`TrackerHand<enum_ARVRPositionalTracker_TrackerHand>` | :ref:`get_hand<class_ARVRController_method_get_hand>` **(** **)** const                                                |
-+------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+
-| :ref:`bool<class_bool>`                                    | :ref:`get_is_active<class_ARVRController_method_get_is_active>` **(** **)** const                                      |
-+------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+
-| :ref:`float<class_float>`                                  | :ref:`get_joystick_axis<class_ARVRController_method_get_joystick_axis>` **(** :ref:`int<class_int>` axis **)** const   |
-+------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+
-| :ref:`int<class_int>`                                      | :ref:`get_joystick_id<class_ARVRController_method_get_joystick_id>` **(** **)** const                                  |
-+------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+
-| :ref:`Mesh<class_Mesh>`                                    | :ref:`get_mesh<class_ARVRController_method_get_mesh>` **(** **)** const                                                |
-+------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+
-| :ref:`bool<class_bool>`                                    | :ref:`is_button_pressed<class_ARVRController_method_is_button_pressed>` **(** :ref:`int<class_int>` button **)** const |
-+------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+
-
-Signals
--------
-
-.. _class_ARVRController_signal_button_pressed:
-
-- **button_pressed** **(** :ref:`int<class_int>` button **)**
-
-Emitted when a button on this controller is pressed.
-
-----
-
-.. _class_ARVRController_signal_button_release:
-
-- **button_release** **(** :ref:`int<class_int>` button **)**
-
-Emitted when a button on this controller is released.
-
-----
-
-.. _class_ARVRController_signal_mesh_updated:
-
-- **mesh_updated** **(** :ref:`Mesh<class_Mesh>` mesh **)**
-
-Emitted when the mesh associated with the controller changes or when one becomes available. Generally speaking this will be a static mesh after becoming available.
-
-Property Descriptions
----------------------
-
-.. _class_ARVRController_property_controller_id:
-
-- :ref:`int<class_int>` **controller_id**
-
-+-----------+--------------------------+
-| *Default* | ``1``                    |
-+-----------+--------------------------+
-| *Setter*  | set_controller_id(value) |
-+-----------+--------------------------+
-| *Getter*  | get_controller_id()      |
-+-----------+--------------------------+
-
-The controller's ID.
-
-A controller ID of 0 is unbound and will always result in an inactive node. Controller ID 1 is reserved for the first controller that identifies itself as the left-hand controller and ID 2 is reserved for the first controller that identifies itself as the right-hand controller.
-
-For any other controller that the :ref:`ARVRServer<class_ARVRServer>` detects, we continue with controller ID 3.
-
-When a controller is turned off, its slot is freed. This ensures controllers will keep the same ID even when controllers with lower IDs are turned off.
-
-----
-
-.. _class_ARVRController_property_rumble:
-
-- :ref:`float<class_float>` **rumble**
-
-+-----------+-------------------+
-| *Default* | ``0.0``           |
-+-----------+-------------------+
-| *Setter*  | set_rumble(value) |
-+-----------+-------------------+
-| *Getter*  | get_rumble()      |
-+-----------+-------------------+
-
-The degree to which the controller vibrates. Ranges from ``0.0`` to ``1.0`` with precision ``.01``. If changed, updates :ref:`ARVRPositionalTracker.rumble<class_ARVRPositionalTracker_property_rumble>` accordingly.
-
-This is a useful property to animate if you want the controller to vibrate for a limited duration.
-
-Method Descriptions
--------------------
-
-.. _class_ARVRController_method_get_controller_name:
-
-- :ref:`String<class_String>` **get_controller_name** **(** **)** const
-
-If active, returns the name of the associated controller if provided by the AR/VR SDK used.
-
-----
-
-.. _class_ARVRController_method_get_hand:
-
-- :ref:`TrackerHand<enum_ARVRPositionalTracker_TrackerHand>` **get_hand** **(** **)** const
-
-Returns the hand holding this controller, if known. See :ref:`TrackerHand<enum_ARVRPositionalTracker_TrackerHand>`.
-
-----
-
-.. _class_ARVRController_method_get_is_active:
-
-- :ref:`bool<class_bool>` **get_is_active** **(** **)** const
-
-Returns ``true`` if the bound controller is active. ARVR systems attempt to track active controllers.
-
-----
-
-.. _class_ARVRController_method_get_joystick_axis:
-
-- :ref:`float<class_float>` **get_joystick_axis** **(** :ref:`int<class_int>` axis **)** const
-
-Returns the value of the given axis for things like triggers, touchpads, etc. that are embedded into the controller.
-
-----
-
-.. _class_ARVRController_method_get_joystick_id:
-
-- :ref:`int<class_int>` **get_joystick_id** **(** **)** const
-
-Returns the ID of the joystick object bound to this. Every controller tracked by the :ref:`ARVRServer<class_ARVRServer>` that has buttons and axis will also be registered as a joystick within Godot. This means that all the normal joystick tracking and input mapping will work for buttons and axis found on the AR/VR controllers. This ID is purely offered as information so you can link up the controller with its joystick entry.
-
-----
-
-.. _class_ARVRController_method_get_mesh:
-
-- :ref:`Mesh<class_Mesh>` **get_mesh** **(** **)** const
-
-If provided by the :ref:`ARVRInterface<class_ARVRInterface>`, this returns a mesh associated with the controller. This can be used to visualize the controller.
-
-----
-
-.. _class_ARVRController_method_is_button_pressed:
-
-- :ref:`bool<class_bool>` **is_button_pressed** **(** :ref:`int<class_int>` button **)** const
-
-Returns ``true`` if the button at index ``button`` is pressed. See :ref:`JoystickList<enum_@GlobalScope_JoystickList>`, in particular the ``JOY_VR_*`` constants.
-

+ 0 - 254
classes/class_arvrinterface.rst

@@ -1,254 +0,0 @@
-:github_url: hide
-
-.. Generated automatically by doc/tools/makerst.py in Godot's source tree.
-.. DO NOT EDIT THIS FILE, but the ARVRInterface.xml source instead.
-.. The source is found in doc/classes or modules/<name>/doc_classes.
-
-.. _class_ARVRInterface:
-
-ARVRInterface
-=============
-
-**Inherits:** :ref:`Reference<class_Reference>` **<** :ref:`Object<class_Object>`
-
-**Inherited By:** :ref:`ARVRInterfaceGDNative<class_ARVRInterfaceGDNative>`, :ref:`MobileVRInterface<class_MobileVRInterface>`
-
-Base class for an AR/VR interface implementation.
-
-Description
------------
-
-This class needs to be implemented to make an AR or VR platform available to Godot and these should be implemented as C++ modules or GDNative modules (note that for GDNative the subclass ARVRScriptInterface should be used). Part of the interface is exposed to GDScript so you can detect, enable and configure an AR or VR platform.
-
-Interfaces should be written in such a way that simply enabling them will give us a working setup. You can query the available interfaces through :ref:`ARVRServer<class_ARVRServer>`.
-
-Tutorials
----------
-
-- :doc:`../tutorials/vr/index`
-
-Properties
-----------
-
-+-------------------------+----------------------------------------------------------------------------------------------------+-----------+
-| :ref:`bool<class_bool>` | :ref:`ar_is_anchor_detection_enabled<class_ARVRInterface_property_ar_is_anchor_detection_enabled>` | ``false`` |
-+-------------------------+----------------------------------------------------------------------------------------------------+-----------+
-| :ref:`bool<class_bool>` | :ref:`interface_is_initialized<class_ARVRInterface_property_interface_is_initialized>`             | ``false`` |
-+-------------------------+----------------------------------------------------------------------------------------------------+-----------+
-| :ref:`bool<class_bool>` | :ref:`interface_is_primary<class_ARVRInterface_property_interface_is_primary>`                     | ``false`` |
-+-------------------------+----------------------------------------------------------------------------------------------------+-----------+
-
-Methods
--------
-
-+------------------------------------------------------------+----------------------------------------------------------------------------------------------+
-| :ref:`int<class_int>`                                      | :ref:`get_camera_feed_id<class_ARVRInterface_method_get_camera_feed_id>` **(** **)**         |
-+------------------------------------------------------------+----------------------------------------------------------------------------------------------+
-| :ref:`int<class_int>`                                      | :ref:`get_capabilities<class_ARVRInterface_method_get_capabilities>` **(** **)** const       |
-+------------------------------------------------------------+----------------------------------------------------------------------------------------------+
-| :ref:`StringName<class_StringName>`                        | :ref:`get_name<class_ARVRInterface_method_get_name>` **(** **)** const                       |
-+------------------------------------------------------------+----------------------------------------------------------------------------------------------+
-| :ref:`Vector2<class_Vector2>`                              | :ref:`get_render_targetsize<class_ARVRInterface_method_get_render_targetsize>` **(** **)**   |
-+------------------------------------------------------------+----------------------------------------------------------------------------------------------+
-| :ref:`Tracking_status<enum_ARVRInterface_Tracking_status>` | :ref:`get_tracking_status<class_ARVRInterface_method_get_tracking_status>` **(** **)** const |
-+------------------------------------------------------------+----------------------------------------------------------------------------------------------+
-| :ref:`bool<class_bool>`                                    | :ref:`initialize<class_ARVRInterface_method_initialize>` **(** **)**                         |
-+------------------------------------------------------------+----------------------------------------------------------------------------------------------+
-| :ref:`bool<class_bool>`                                    | :ref:`is_stereo<class_ARVRInterface_method_is_stereo>` **(** **)**                           |
-+------------------------------------------------------------+----------------------------------------------------------------------------------------------+
-| void                                                       | :ref:`uninitialize<class_ARVRInterface_method_uninitialize>` **(** **)**                     |
-+------------------------------------------------------------+----------------------------------------------------------------------------------------------+
-
-Enumerations
-------------
-
-.. _enum_ARVRInterface_Capabilities:
-
-.. _class_ARVRInterface_constant_ARVR_NONE:
-
-.. _class_ARVRInterface_constant_ARVR_MONO:
-
-.. _class_ARVRInterface_constant_ARVR_STEREO:
-
-.. _class_ARVRInterface_constant_ARVR_AR:
-
-.. _class_ARVRInterface_constant_ARVR_EXTERNAL:
-
-enum **Capabilities**:
-
-- **ARVR_NONE** = **0** --- No ARVR capabilities.
-
-- **ARVR_MONO** = **1** --- This interface can work with normal rendering output (non-HMD based AR).
-
-- **ARVR_STEREO** = **2** --- This interface supports stereoscopic rendering.
-
-- **ARVR_AR** = **4** --- This interface supports AR (video background and real world tracking).
-
-- **ARVR_EXTERNAL** = **8** --- This interface outputs to an external device. If the main viewport is used, the on screen output is an unmodified buffer of either the left or right eye (stretched if the viewport size is not changed to the same aspect ratio of :ref:`get_render_targetsize<class_ARVRInterface_method_get_render_targetsize>`). Using a separate viewport node frees up the main viewport for other purposes.
-
-----
-
-.. _enum_ARVRInterface_Eyes:
-
-.. _class_ARVRInterface_constant_EYE_MONO:
-
-.. _class_ARVRInterface_constant_EYE_LEFT:
-
-.. _class_ARVRInterface_constant_EYE_RIGHT:
-
-enum **Eyes**:
-
-- **EYE_MONO** = **0** --- Mono output, this is mostly used internally when retrieving positioning information for our camera node or when stereo scopic rendering is not supported.
-
-- **EYE_LEFT** = **1** --- Left eye output, this is mostly used internally when rendering the image for the left eye and obtaining positioning and projection information.
-
-- **EYE_RIGHT** = **2** --- Right eye output, this is mostly used internally when rendering the image for the right eye and obtaining positioning and projection information.
-
-----
-
-.. _enum_ARVRInterface_Tracking_status:
-
-.. _class_ARVRInterface_constant_ARVR_NORMAL_TRACKING:
-
-.. _class_ARVRInterface_constant_ARVR_EXCESSIVE_MOTION:
-
-.. _class_ARVRInterface_constant_ARVR_INSUFFICIENT_FEATURES:
-
-.. _class_ARVRInterface_constant_ARVR_UNKNOWN_TRACKING:
-
-.. _class_ARVRInterface_constant_ARVR_NOT_TRACKING:
-
-enum **Tracking_status**:
-
-- **ARVR_NORMAL_TRACKING** = **0** --- Tracking is behaving as expected.
-
-- **ARVR_EXCESSIVE_MOTION** = **1** --- Tracking is hindered by excessive motion (the player is moving faster than tracking can keep up).
-
-- **ARVR_INSUFFICIENT_FEATURES** = **2** --- Tracking is hindered by insufficient features, it's too dark (for camera-based tracking), player is blocked, etc.
-
-- **ARVR_UNKNOWN_TRACKING** = **3** --- We don't know the status of the tracking or this interface does not provide feedback.
-
-- **ARVR_NOT_TRACKING** = **4** --- Tracking is not functional (camera not plugged in or obscured, lighthouses turned off, etc.).
-
-Property Descriptions
----------------------
-
-.. _class_ARVRInterface_property_ar_is_anchor_detection_enabled:
-
-- :ref:`bool<class_bool>` **ar_is_anchor_detection_enabled**
-
-+-----------+----------------------------------------+
-| *Default* | ``false``                              |
-+-----------+----------------------------------------+
-| *Setter*  | set_anchor_detection_is_enabled(value) |
-+-----------+----------------------------------------+
-| *Getter*  | get_anchor_detection_is_enabled()      |
-+-----------+----------------------------------------+
-
-On an AR interface, ``true`` if anchor detection is enabled.
-
-----
-
-.. _class_ARVRInterface_property_interface_is_initialized:
-
-- :ref:`bool<class_bool>` **interface_is_initialized**
-
-+-----------+---------------------------+
-| *Default* | ``false``                 |
-+-----------+---------------------------+
-| *Setter*  | set_is_initialized(value) |
-+-----------+---------------------------+
-| *Getter*  | is_initialized()          |
-+-----------+---------------------------+
-
-``true`` if this interface been initialized.
-
-----
-
-.. _class_ARVRInterface_property_interface_is_primary:
-
-- :ref:`bool<class_bool>` **interface_is_primary**
-
-+-----------+-----------------------+
-| *Default* | ``false``             |
-+-----------+-----------------------+
-| *Setter*  | set_is_primary(value) |
-+-----------+-----------------------+
-| *Getter*  | is_primary()          |
-+-----------+-----------------------+
-
-``true`` if this is the primary interface.
-
-Method Descriptions
--------------------
-
-.. _class_ARVRInterface_method_get_camera_feed_id:
-
-- :ref:`int<class_int>` **get_camera_feed_id** **(** **)**
-
-If this is an AR interface that requires displaying a camera feed as the background, this method returns the feed ID in the :ref:`CameraServer<class_CameraServer>` for this interface.
-
-----
-
-.. _class_ARVRInterface_method_get_capabilities:
-
-- :ref:`int<class_int>` **get_capabilities** **(** **)** const
-
-Returns a combination of :ref:`Capabilities<enum_ARVRInterface_Capabilities>` flags providing information about the capabilities of this interface.
-
-----
-
-.. _class_ARVRInterface_method_get_name:
-
-- :ref:`StringName<class_StringName>` **get_name** **(** **)** const
-
-Returns the name of this interface (OpenVR, OpenHMD, ARKit, etc).
-
-----
-
-.. _class_ARVRInterface_method_get_render_targetsize:
-
-- :ref:`Vector2<class_Vector2>` **get_render_targetsize** **(** **)**
-
-Returns the resolution at which we should render our intermediate results before things like lens distortion are applied by the VR platform.
-
-----
-
-.. _class_ARVRInterface_method_get_tracking_status:
-
-- :ref:`Tracking_status<enum_ARVRInterface_Tracking_status>` **get_tracking_status** **(** **)** const
-
-If supported, returns the status of our tracking. This will allow you to provide feedback to the user whether there are issues with positional tracking.
-
-----
-
-.. _class_ARVRInterface_method_initialize:
-
-- :ref:`bool<class_bool>` **initialize** **(** **)**
-
-Call this to initialize this interface. The first interface that is initialized is identified as the primary interface and it will be used for rendering output.
-
-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.
-
-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.
-
-While currently not used, you can activate additional interfaces. You may wish to do this if you want to track controllers from other platforms. However, at this point in time only one interface can render to an HMD.
-
-----
-
-.. _class_ARVRInterface_method_is_stereo:
-
-- :ref:`bool<class_bool>` **is_stereo** **(** **)**
-
-Returns ``true`` if the current output of this interface is in stereo.
-
-----
-
-.. _class_ARVRInterface_method_uninitialize:
-
-- void **uninitialize** **(** **)**
-
-Turns the interface off.
-

+ 0 - 20
classes/class_arvrinterfacegdnative.rst

@@ -1,20 +0,0 @@
-:github_url: hide
-
-.. Generated automatically by doc/tools/makerst.py in Godot's source tree.
-.. DO NOT EDIT THIS FILE, but the ARVRInterfaceGDNative.xml source instead.
-.. The source is found in doc/classes or modules/<name>/doc_classes.
-
-.. _class_ARVRInterfaceGDNative:
-
-ARVRInterfaceGDNative
-=====================
-
-**Inherits:** :ref:`ARVRInterface<class_ARVRInterface>` **<** :ref:`Reference<class_Reference>` **<** :ref:`Object<class_Object>`
-
-GDNative wrapper for an ARVR interface.
-
-Description
------------
-
-This is a wrapper class for GDNative implementations of the ARVR interface. To use a GDNative ARVR interface, simply instantiate this object and set your GDNative library containing the ARVR interface implementation.
-

+ 0 - 188
classes/class_arvrpositionaltracker.rst

@@ -1,188 +0,0 @@
-:github_url: hide
-
-.. Generated automatically by doc/tools/makerst.py in Godot's source tree.
-.. DO NOT EDIT THIS FILE, but the ARVRPositionalTracker.xml source instead.
-.. The source is found in doc/classes or modules/<name>/doc_classes.
-
-.. _class_ARVRPositionalTracker:
-
-ARVRPositionalTracker
-=====================
-
-**Inherits:** :ref:`Object<class_Object>`
-
-A tracked object.
-
-Description
------------
-
-An instance of this object represents a device that is tracked, such as a controller or anchor point. HMDs aren't represented here as they are handled internally.
-
-As controllers are turned on and the AR/VR interface detects them, instances of this object are automatically added to this list of active tracking objects accessible through the :ref:`ARVRServer<class_ARVRServer>`.
-
-The :ref:`ARVRController<class_ARVRController>` and :ref:`ARVRAnchor<class_ARVRAnchor>` both consume objects of this type and should be used in your project. The positional trackers are just under-the-hood objects that make this all work. These are mostly exposed so that GDNative-based interfaces can interact with them.
-
-Tutorials
----------
-
-- :doc:`../tutorials/vr/index`
-
-Properties
-----------
-
-+---------------------------+------------------------------------------------------------+---------+
-| :ref:`float<class_float>` | :ref:`rumble<class_ARVRPositionalTracker_property_rumble>` | ``0.0`` |
-+---------------------------+------------------------------------------------------------+---------+
-
-Methods
--------
-
-+------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`TrackerHand<enum_ARVRPositionalTracker_TrackerHand>` | :ref:`get_hand<class_ARVRPositionalTracker_method_get_hand>` **(** **)** const                                                             |
-+------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`int<class_int>`                                      | :ref:`get_joy_id<class_ARVRPositionalTracker_method_get_joy_id>` **(** **)** const                                                         |
-+------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`Mesh<class_Mesh>`                                    | :ref:`get_mesh<class_ARVRPositionalTracker_method_get_mesh>` **(** **)** const                                                             |
-+------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`StringName<class_StringName>`                        | :ref:`get_name<class_ARVRPositionalTracker_method_get_name>` **(** **)** const                                                             |
-+------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`Basis<class_Basis>`                                  | :ref:`get_orientation<class_ARVRPositionalTracker_method_get_orientation>` **(** **)** const                                               |
-+------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`Vector3<class_Vector3>`                              | :ref:`get_position<class_ARVRPositionalTracker_method_get_position>` **(** **)** const                                                     |
-+------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`int<class_int>`                                      | :ref:`get_tracker_id<class_ARVRPositionalTracker_method_get_tracker_id>` **(** **)** const                                                 |
-+------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`bool<class_bool>`                                    | :ref:`get_tracks_orientation<class_ARVRPositionalTracker_method_get_tracks_orientation>` **(** **)** const                                 |
-+------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`bool<class_bool>`                                    | :ref:`get_tracks_position<class_ARVRPositionalTracker_method_get_tracks_position>` **(** **)** const                                       |
-+------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`Transform<class_Transform>`                          | :ref:`get_transform<class_ARVRPositionalTracker_method_get_transform>` **(** :ref:`bool<class_bool>` adjust_by_reference_frame **)** const |
-+------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`TrackerType<enum_ARVRServer_TrackerType>`            | :ref:`get_type<class_ARVRPositionalTracker_method_get_type>` **(** **)** const                                                             |
-+------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------+
-
-Enumerations
-------------
-
-.. _enum_ARVRPositionalTracker_TrackerHand:
-
-.. _class_ARVRPositionalTracker_constant_TRACKER_HAND_UNKNOWN:
-
-.. _class_ARVRPositionalTracker_constant_TRACKER_LEFT_HAND:
-
-.. _class_ARVRPositionalTracker_constant_TRACKER_RIGHT_HAND:
-
-enum **TrackerHand**:
-
-- **TRACKER_HAND_UNKNOWN** = **0** --- The hand this tracker is held in is unknown or not applicable.
-
-- **TRACKER_LEFT_HAND** = **1** --- This tracker is the left hand controller.
-
-- **TRACKER_RIGHT_HAND** = **2** --- This tracker is the right hand controller.
-
-Property Descriptions
----------------------
-
-.. _class_ARVRPositionalTracker_property_rumble:
-
-- :ref:`float<class_float>` **rumble**
-
-+-----------+-------------------+
-| *Default* | ``0.0``           |
-+-----------+-------------------+
-| *Setter*  | set_rumble(value) |
-+-----------+-------------------+
-| *Getter*  | get_rumble()      |
-+-----------+-------------------+
-
-The degree to which the tracker rumbles. Ranges from ``0.0`` to ``1.0`` with precision ``.01``.
-
-Method Descriptions
--------------------
-
-.. _class_ARVRPositionalTracker_method_get_hand:
-
-- :ref:`TrackerHand<enum_ARVRPositionalTracker_TrackerHand>` **get_hand** **(** **)** const
-
-Returns the hand holding this tracker, if known. See :ref:`TrackerHand<enum_ARVRPositionalTracker_TrackerHand>` constants.
-
-----
-
-.. _class_ARVRPositionalTracker_method_get_joy_id:
-
-- :ref:`int<class_int>` **get_joy_id** **(** **)** const
-
-If this is a controller that is being tracked, the controller will also be represented by a joystick entry with this ID.
-
-----
-
-.. _class_ARVRPositionalTracker_method_get_mesh:
-
-- :ref:`Mesh<class_Mesh>` **get_mesh** **(** **)** const
-
-Returns the mesh related to a controller or anchor point if one is available.
-
-----
-
-.. _class_ARVRPositionalTracker_method_get_name:
-
-- :ref:`StringName<class_StringName>` **get_name** **(** **)** const
-
-Returns the controller or anchor point's name if available.
-
-----
-
-.. _class_ARVRPositionalTracker_method_get_orientation:
-
-- :ref:`Basis<class_Basis>` **get_orientation** **(** **)** const
-
-Returns the controller's orientation matrix.
-
-----
-
-.. _class_ARVRPositionalTracker_method_get_position:
-
-- :ref:`Vector3<class_Vector3>` **get_position** **(** **)** const
-
-Returns the world-space controller position.
-
-----
-
-.. _class_ARVRPositionalTracker_method_get_tracker_id:
-
-- :ref:`int<class_int>` **get_tracker_id** **(** **)** const
-
-Returns the internal tracker ID. This uniquely identifies the tracker per tracker type and matches the ID you need to specify for nodes such as the :ref:`ARVRController<class_ARVRController>` and :ref:`ARVRAnchor<class_ARVRAnchor>` nodes.
-
-----
-
-.. _class_ARVRPositionalTracker_method_get_tracks_orientation:
-
-- :ref:`bool<class_bool>` **get_tracks_orientation** **(** **)** const
-
-Returns ``true`` if this device tracks orientation.
-
-----
-
-.. _class_ARVRPositionalTracker_method_get_tracks_position:
-
-- :ref:`bool<class_bool>` **get_tracks_position** **(** **)** const
-
-Returns ``true`` if this device tracks position.
-
-----
-
-.. _class_ARVRPositionalTracker_method_get_transform:
-
-- :ref:`Transform<class_Transform>` **get_transform** **(** :ref:`bool<class_bool>` adjust_by_reference_frame **)** const
-
-Returns the transform combining this device's orientation and position.
-
-----
-
-.. _class_ARVRPositionalTracker_method_get_type:
-
-- :ref:`TrackerType<enum_ARVRServer_TrackerType>` **get_type** **(** **)** const
-
-Returns the tracker's type.
-

+ 0 - 283
classes/class_arvrserver.rst

@@ -1,283 +0,0 @@
-:github_url: hide
-
-.. Generated automatically by doc/tools/makerst.py in Godot's source tree.
-.. DO NOT EDIT THIS FILE, but the ARVRServer.xml source instead.
-.. The source is found in doc/classes or modules/<name>/doc_classes.
-
-.. _class_ARVRServer:
-
-ARVRServer
-==========
-
-**Inherits:** :ref:`Object<class_Object>`
-
-Server for AR and VR features.
-
-Description
------------
-
-The AR/VR server is the heart of our Advanced and Virtual Reality solution and handles all the processing.
-
-Tutorials
----------
-
-- :doc:`../tutorials/vr/index`
-
-Properties
-----------
-
-+-------------------------------------------+-----------------------------------------------------------------------+---------+
-| :ref:`ARVRInterface<class_ARVRInterface>` | :ref:`primary_interface<class_ARVRServer_property_primary_interface>` |         |
-+-------------------------------------------+-----------------------------------------------------------------------+---------+
-| :ref:`float<class_float>`                 | :ref:`world_scale<class_ARVRServer_property_world_scale>`             | ``1.0`` |
-+-------------------------------------------+-----------------------------------------------------------------------+---------+
-
-Methods
--------
-
-+-----------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| void                                                      | :ref:`center_on_hmd<class_ARVRServer_method_center_on_hmd>` **(** :ref:`RotationMode<enum_ARVRServer_RotationMode>` rotation_mode, :ref:`bool<class_bool>` keep_height **)** |
-+-----------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`ARVRInterface<class_ARVRInterface>`                 | :ref:`find_interface<class_ARVRServer_method_find_interface>` **(** :ref:`String<class_String>` name **)** const                                                             |
-+-----------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`Transform<class_Transform>`                         | :ref:`get_hmd_transform<class_ARVRServer_method_get_hmd_transform>` **(** **)**                                                                                              |
-+-----------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`ARVRInterface<class_ARVRInterface>`                 | :ref:`get_interface<class_ARVRServer_method_get_interface>` **(** :ref:`int<class_int>` idx **)** const                                                                      |
-+-----------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`int<class_int>`                                     | :ref:`get_interface_count<class_ARVRServer_method_get_interface_count>` **(** **)** const                                                                                    |
-+-----------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`Array<class_Array>`                                 | :ref:`get_interfaces<class_ARVRServer_method_get_interfaces>` **(** **)** const                                                                                              |
-+-----------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`int<class_int>`                                     | :ref:`get_last_commit_usec<class_ARVRServer_method_get_last_commit_usec>` **(** **)**                                                                                        |
-+-----------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`int<class_int>`                                     | :ref:`get_last_frame_usec<class_ARVRServer_method_get_last_frame_usec>` **(** **)**                                                                                          |
-+-----------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`int<class_int>`                                     | :ref:`get_last_process_usec<class_ARVRServer_method_get_last_process_usec>` **(** **)**                                                                                      |
-+-----------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`Transform<class_Transform>`                         | :ref:`get_reference_frame<class_ARVRServer_method_get_reference_frame>` **(** **)** const                                                                                    |
-+-----------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`ARVRPositionalTracker<class_ARVRPositionalTracker>` | :ref:`get_tracker<class_ARVRServer_method_get_tracker>` **(** :ref:`int<class_int>` idx **)** const                                                                          |
-+-----------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`int<class_int>`                                     | :ref:`get_tracker_count<class_ARVRServer_method_get_tracker_count>` **(** **)** const                                                                                        |
-+-----------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-
-Signals
--------
-
-.. _class_ARVRServer_signal_interface_added:
-
-- **interface_added** **(** :ref:`StringName<class_StringName>` interface_name **)**
-
-Emitted when a new interface has been added.
-
-----
-
-.. _class_ARVRServer_signal_interface_removed:
-
-- **interface_removed** **(** :ref:`StringName<class_StringName>` interface_name **)**
-
-Emitted when an interface is removed.
-
-----
-
-.. _class_ARVRServer_signal_tracker_added:
-
-- **tracker_added** **(** :ref:`StringName<class_StringName>` tracker_name, :ref:`int<class_int>` type, :ref:`int<class_int>` id **)**
-
-Emitted when a new tracker has been added. If you don't use a fixed number of controllers or if you're using :ref:`ARVRAnchor<class_ARVRAnchor>`\ s for an AR solution, it is important to react to this signal to add the appropriate :ref:`ARVRController<class_ARVRController>` or :ref:`ARVRAnchor<class_ARVRAnchor>` nodes related to this new tracker.
-
-----
-
-.. _class_ARVRServer_signal_tracker_removed:
-
-- **tracker_removed** **(** :ref:`StringName<class_StringName>` tracker_name, :ref:`int<class_int>` type, :ref:`int<class_int>` id **)**
-
-Emitted when a tracker is removed. You should remove any :ref:`ARVRController<class_ARVRController>` or :ref:`ARVRAnchor<class_ARVRAnchor>` points if applicable. This is not mandatory, the nodes simply become inactive and will be made active again when a new tracker becomes available (i.e. a new controller is switched on that takes the place of the previous one).
-
-Enumerations
-------------
-
-.. _enum_ARVRServer_TrackerType:
-
-.. _class_ARVRServer_constant_TRACKER_CONTROLLER:
-
-.. _class_ARVRServer_constant_TRACKER_BASESTATION:
-
-.. _class_ARVRServer_constant_TRACKER_ANCHOR:
-
-.. _class_ARVRServer_constant_TRACKER_ANY_KNOWN:
-
-.. _class_ARVRServer_constant_TRACKER_UNKNOWN:
-
-.. _class_ARVRServer_constant_TRACKER_ANY:
-
-enum **TrackerType**:
-
-- **TRACKER_CONTROLLER** = **1** --- The tracker tracks the location of a controller.
-
-- **TRACKER_BASESTATION** = **2** --- The tracker tracks the location of a base station.
-
-- **TRACKER_ANCHOR** = **4** --- The tracker tracks the location and size of an AR anchor.
-
-- **TRACKER_ANY_KNOWN** = **127** --- Used internally to filter trackers of any known type.
-
-- **TRACKER_UNKNOWN** = **128** --- Used internally if we haven't set the tracker type yet.
-
-- **TRACKER_ANY** = **255** --- Used internally to select all trackers.
-
-----
-
-.. _enum_ARVRServer_RotationMode:
-
-.. _class_ARVRServer_constant_RESET_FULL_ROTATION:
-
-.. _class_ARVRServer_constant_RESET_BUT_KEEP_TILT:
-
-.. _class_ARVRServer_constant_DONT_RESET_ROTATION:
-
-enum **RotationMode**:
-
-- **RESET_FULL_ROTATION** = **0** --- Fully reset the orientation of the HMD. Regardless of what direction the user is looking to in the real world. The user will look dead ahead in the virtual world.
-
-- **RESET_BUT_KEEP_TILT** = **1** --- Resets the orientation but keeps the tilt of the device. So if we're looking down, we keep looking down but heading will be reset.
-
-- **DONT_RESET_ROTATION** = **2** --- Does not reset the orientation of the HMD, only the position of the player gets centered.
-
-Property Descriptions
----------------------
-
-.. _class_ARVRServer_property_primary_interface:
-
-- :ref:`ARVRInterface<class_ARVRInterface>` **primary_interface**
-
-+----------+------------------------------+
-| *Setter* | set_primary_interface(value) |
-+----------+------------------------------+
-| *Getter* | get_primary_interface()      |
-+----------+------------------------------+
-
-The primary :ref:`ARVRInterface<class_ARVRInterface>` currently bound to the ``ARVRServer``.
-
-----
-
-.. _class_ARVRServer_property_world_scale:
-
-- :ref:`float<class_float>` **world_scale**
-
-+-----------+------------------------+
-| *Default* | ``1.0``                |
-+-----------+------------------------+
-| *Setter*  | set_world_scale(value) |
-+-----------+------------------------+
-| *Getter*  | get_world_scale()      |
-+-----------+------------------------+
-
-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.
-
-Method Descriptions
--------------------
-
-.. _class_ARVRServer_method_center_on_hmd:
-
-- void **center_on_hmd** **(** :ref:`RotationMode<enum_ARVRServer_RotationMode>` rotation_mode, :ref:`bool<class_bool>` keep_height **)**
-
-This is an important function to understand correctly. AR and VR platforms all handle positioning slightly differently.
-
-For platforms that do not offer spatial tracking, our origin point (0,0,0) is the location of our HMD, but you have little control over the direction the player is facing in the real world.
-
-For platforms that do offer spatial tracking, our origin point depends very much on the system. For OpenVR, our origin point is usually the center of the tracking space, on the ground. For other platforms, it's often the location of the tracking camera.
-
-This method allows you to center your tracker on the location of the HMD. It will take the current location of the HMD and use that to adjust all your tracking data; in essence, realigning the real world to your player's current position in the game world.
-
-For this method to produce usable results, tracking information must be available. This often takes a few frames after starting your game.
-
-You should call this method after a few seconds have passed. For instance, when the user requests a realignment of the display holding a designated button on a controller for a short period of time, or when implementing a teleport mechanism.
-
-----
-
-.. _class_ARVRServer_method_find_interface:
-
-- :ref:`ARVRInterface<class_ARVRInterface>` **find_interface** **(** :ref:`String<class_String>` name **)** const
-
-Finds an interface by its name. For instance, if your project uses capabilities of an AR/VR platform, you can find the interface for that platform by name and initialize it.
-
-----
-
-.. _class_ARVRServer_method_get_hmd_transform:
-
-- :ref:`Transform<class_Transform>` **get_hmd_transform** **(** **)**
-
-Returns the primary interface's transformation.
-
-----
-
-.. _class_ARVRServer_method_get_interface:
-
-- :ref:`ARVRInterface<class_ARVRInterface>` **get_interface** **(** :ref:`int<class_int>` idx **)** const
-
-Returns the interface registered at a given index in our list of interfaces.
-
-----
-
-.. _class_ARVRServer_method_get_interface_count:
-
-- :ref:`int<class_int>` **get_interface_count** **(** **)** const
-
-Returns the number of interfaces currently registered with the AR/VR server. If your project supports multiple AR/VR platforms, you can look through the available interface, and either present the user with a selection or simply try to initialize each interface and use the first one that returns ``true``.
-
-----
-
-.. _class_ARVRServer_method_get_interfaces:
-
-- :ref:`Array<class_Array>` **get_interfaces** **(** **)** const
-
-Returns a list of available interfaces the ID and name of each interface.
-
-----
-
-.. _class_ARVRServer_method_get_last_commit_usec:
-
-- :ref:`int<class_int>` **get_last_commit_usec** **(** **)**
-
-Returns the absolute timestamp (in μs) of the last ``ARVRServer`` commit of the AR/VR eyes to :ref:`VisualServer<class_VisualServer>`. The value comes from an internal call to :ref:`OS.get_ticks_usec<class_OS_method_get_ticks_usec>`.
-
-----
-
-.. _class_ARVRServer_method_get_last_frame_usec:
-
-- :ref:`int<class_int>` **get_last_frame_usec** **(** **)**
-
-Returns the duration (in μs) of the last frame. This is computed as the difference between :ref:`get_last_commit_usec<class_ARVRServer_method_get_last_commit_usec>` and :ref:`get_last_process_usec<class_ARVRServer_method_get_last_process_usec>` when committing.
-
-----
-
-.. _class_ARVRServer_method_get_last_process_usec:
-
-- :ref:`int<class_int>` **get_last_process_usec** **(** **)**
-
-Returns the absolute timestamp (in μs) of the last ``ARVRServer`` process callback. The value comes from an internal call to :ref:`OS.get_ticks_usec<class_OS_method_get_ticks_usec>`.
-
-----
-
-.. _class_ARVRServer_method_get_reference_frame:
-
-- :ref:`Transform<class_Transform>` **get_reference_frame** **(** **)** const
-
-Returns the reference frame transform. Mostly used internally and exposed for GDNative build interfaces.
-
-----
-
-.. _class_ARVRServer_method_get_tracker:
-
-- :ref:`ARVRPositionalTracker<class_ARVRPositionalTracker>` **get_tracker** **(** :ref:`int<class_int>` idx **)** const
-
-Returns the positional tracker at the given ID.
-
-----
-
-.. _class_ARVRServer_method_get_tracker_count:
-
-- :ref:`int<class_int>` **get_tracker_count** **(** **)** const
-
-Returns the number of trackers currently registered.
-

+ 147 - 0
classes/class_aspectratiocontainer.rst

@@ -0,0 +1,147 @@
+:github_url: hide
+
+.. Generated automatically by doc/tools/makerst.py in Godot's source tree.
+.. DO NOT EDIT THIS FILE, but the AspectRatioContainer.xml source instead.
+.. The source is found in doc/classes or modules/<name>/doc_classes.
+
+.. _class_AspectRatioContainer:
+
+AspectRatioContainer
+====================
+
+**Inherits:** :ref:`Container<class_Container>` **<** :ref:`Control<class_Control>` **<** :ref:`CanvasItem<class_CanvasItem>` **<** :ref:`Node<class_Node>` **<** :ref:`Object<class_Object>`
+
+Container that preserves its child controls' aspect ratio.
+
+Description
+-----------
+
+Arranges child controls in a way to preserve their aspect ratio automatically whenever the container is resized. Solves the problem where the container size is dynamic and the contents' size needs to adjust accordingly without losing proportions.
+
+Properties
+----------
+
++-----------------------------------------------------------+---------------------------------------------------------------------------------------+---------+
+| :ref:`AlignMode<enum_AspectRatioContainer_AlignMode>`     | :ref:`alignment_horizontal<class_AspectRatioContainer_property_alignment_horizontal>` | ``1``   |
++-----------------------------------------------------------+---------------------------------------------------------------------------------------+---------+
+| :ref:`AlignMode<enum_AspectRatioContainer_AlignMode>`     | :ref:`alignment_vertical<class_AspectRatioContainer_property_alignment_vertical>`     | ``1``   |
++-----------------------------------------------------------+---------------------------------------------------------------------------------------+---------+
+| :ref:`float<class_float>`                                 | :ref:`ratio<class_AspectRatioContainer_property_ratio>`                               | ``1.0`` |
++-----------------------------------------------------------+---------------------------------------------------------------------------------------+---------+
+| :ref:`StretchMode<enum_AspectRatioContainer_StretchMode>` | :ref:`stretch_mode<class_AspectRatioContainer_property_stretch_mode>`                 | ``2``   |
++-----------------------------------------------------------+---------------------------------------------------------------------------------------+---------+
+
+Enumerations
+------------
+
+.. _enum_AspectRatioContainer_StretchMode:
+
+.. _class_AspectRatioContainer_constant_STRETCH_WIDTH_CONTROLS_HEIGHT:
+
+.. _class_AspectRatioContainer_constant_STRETCH_HEIGHT_CONTROLS_WIDTH:
+
+.. _class_AspectRatioContainer_constant_STRETCH_FIT:
+
+.. _class_AspectRatioContainer_constant_STRETCH_COVER:
+
+enum **StretchMode**:
+
+- **STRETCH_WIDTH_CONTROLS_HEIGHT** = **0** --- The height of child controls is automatically adjusted based on the width of the container.
+
+- **STRETCH_HEIGHT_CONTROLS_WIDTH** = **1** --- The width of child controls is automatically adjusted based on the height of the container.
+
+- **STRETCH_FIT** = **2** --- The bounding rectangle of child controls is automatically adjusted to fit inside the container while keeping the aspect ratio.
+
+- **STRETCH_COVER** = **3** --- The width and height of child controls is automatically adjusted to make their bounding rectangle cover the entire area of the container while keeping the aspect ratio.
+
+When the bounding rectangle of child controls exceed the container's size and :ref:`Control.rect_clip_content<class_Control_property_rect_clip_content>` is enabled, this allows to show only the container's area restricted by its own bounding rectangle.
+
+----
+
+.. _enum_AspectRatioContainer_AlignMode:
+
+.. _class_AspectRatioContainer_constant_ALIGN_BEGIN:
+
+.. _class_AspectRatioContainer_constant_ALIGN_CENTER:
+
+.. _class_AspectRatioContainer_constant_ALIGN_END:
+
+enum **AlignMode**:
+
+- **ALIGN_BEGIN** = **0** --- Aligns child controls with the beginning (left or top) of the container.
+
+- **ALIGN_CENTER** = **1** --- Aligns child controls with the center of the container.
+
+- **ALIGN_END** = **2** --- Aligns child controls with the end (right or bottom) of the container.
+
+Property Descriptions
+---------------------
+
+.. _class_AspectRatioContainer_property_alignment_horizontal:
+
+- :ref:`AlignMode<enum_AspectRatioContainer_AlignMode>` **alignment_horizontal**
+
++-----------+---------------------------------+
+| *Default* | ``1``                           |
++-----------+---------------------------------+
+| *Setter*  | set_alignment_horizontal(value) |
++-----------+---------------------------------+
+| *Getter*  | get_alignment_horizontal()      |
++-----------+---------------------------------+
+
+Specifies the horizontal relative position of child controls.
+
+----
+
+.. _class_AspectRatioContainer_property_alignment_vertical:
+
+- :ref:`AlignMode<enum_AspectRatioContainer_AlignMode>` **alignment_vertical**
+
++-----------+-------------------------------+
+| *Default* | ``1``                         |
++-----------+-------------------------------+
+| *Setter*  | set_alignment_vertical(value) |
++-----------+-------------------------------+
+| *Getter*  | get_alignment_vertical()      |
++-----------+-------------------------------+
+
+Specifies the vertical relative position of child controls.
+
+----
+
+.. _class_AspectRatioContainer_property_ratio:
+
+- :ref:`float<class_float>` **ratio**
+
++-----------+------------------+
+| *Default* | ``1.0``          |
++-----------+------------------+
+| *Setter*  | set_ratio(value) |
++-----------+------------------+
+| *Getter*  | get_ratio()      |
++-----------+------------------+
+
+The aspect ratio to enforce on child controls. This is the width divided by the height. The ratio depends on the :ref:`stretch_mode<class_AspectRatioContainer_property_stretch_mode>`.
+
+----
+
+.. _class_AspectRatioContainer_property_stretch_mode:
+
+- :ref:`StretchMode<enum_AspectRatioContainer_StretchMode>` **stretch_mode**
+
++-----------+-------------------------+
+| *Default* | ``2``                   |
++-----------+-------------------------+
+| *Setter*  | set_stretch_mode(value) |
++-----------+-------------------------+
+| *Getter*  | get_stretch_mode()      |
++-----------+-------------------------+
+
+The stretch mode used to align child controls.
+
+.. |virtual| replace:: :abbr:`virtual (This method should typically be overridden by the user to have any effect.)`
+.. |const| replace:: :abbr:`const (This method has no side effects. It doesn't modify any of the instance's member variables.)`
+.. |vararg| replace:: :abbr:`vararg (This method accepts any number of arguments after the ones described here.)`
+.. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)`
+.. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)`
+.. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)`

+ 177 - 74
classes/class_astar.rst

@@ -9,9 +9,9 @@
 AStar
 AStar
 =====
 =====
 
 
-**Inherits:** :ref:`Reference<class_Reference>` **<** :ref:`Object<class_Object>`
+**Inherits:** :ref:`RefCounted<class_RefCounted>` **<** :ref:`Object<class_Object>`
 
 
-An implementation of A\* to find shortest paths among connected points in space.
+An implementation of A\* to find the shortest paths among connected points in space.
 
 
 Description
 Description
 -----------
 -----------
@@ -22,7 +22,10 @@ You must add points manually with :ref:`add_point<class_AStar_method_add_point>`
 
 
 It is also possible to use non-Euclidean distances. To do so, create a class that extends ``AStar`` and override methods :ref:`_compute_cost<class_AStar_method__compute_cost>` and :ref:`_estimate_cost<class_AStar_method__estimate_cost>`. Both take two indices and return a length, as is shown in the following example.
 It is also possible to use non-Euclidean distances. To do so, create a class that extends ``AStar`` and override methods :ref:`_compute_cost<class_AStar_method__compute_cost>` and :ref:`_estimate_cost<class_AStar_method__estimate_cost>`. Both take two indices and return a length, as is shown in the following example.
 
 
-::
+
+.. tabs::
+
+ .. code-tab:: gdscript
 
 
     class MyAStar:
     class MyAStar:
         extends AStar
         extends AStar
@@ -33,69 +36,87 @@ It is also possible to use non-Euclidean distances. To do so, create a class tha
         func _estimate_cost(u, v):
         func _estimate_cost(u, v):
             return min(0, abs(u - v) - 1)
             return min(0, abs(u - v) - 1)
 
 
+ .. code-tab:: csharp
+
+    public class MyAStar : AStar
+    {
+        public override float _ComputeCost(int u, int v)
+        {
+            return Mathf.Abs(u - v);
+        }
+        public override float _EstimateCost(int u, int v)
+        {
+            return Mathf.Min(0, Mathf.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.
+
 Methods
 Methods
 -------
 -------
 
 
-+-----------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`float<class_float>`                           | :ref:`_compute_cost<class_AStar_method__compute_cost>` **(** :ref:`int<class_int>` from_id, :ref:`int<class_int>` to_id **)** virtual                                                    |
-+-----------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`float<class_float>`                           | :ref:`_estimate_cost<class_AStar_method__estimate_cost>` **(** :ref:`int<class_int>` from_id, :ref:`int<class_int>` to_id **)** virtual                                                  |
-+-----------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| void                                                | :ref:`add_point<class_AStar_method_add_point>` **(** :ref:`int<class_int>` id, :ref:`Vector3<class_Vector3>` position, :ref:`float<class_float>` weight_scale=1.0 **)**                  |
-+-----------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`bool<class_bool>`                             | :ref:`are_points_connected<class_AStar_method_are_points_connected>` **(** :ref:`int<class_int>` id, :ref:`int<class_int>` to_id, :ref:`bool<class_bool>` bidirectional=true **)** const |
-+-----------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| void                                                | :ref:`clear<class_AStar_method_clear>` **(** **)**                                                                                                                                       |
-+-----------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| void                                                | :ref:`connect_points<class_AStar_method_connect_points>` **(** :ref:`int<class_int>` id, :ref:`int<class_int>` to_id, :ref:`bool<class_bool>` bidirectional=true **)**                   |
-+-----------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| void                                                | :ref:`disconnect_points<class_AStar_method_disconnect_points>` **(** :ref:`int<class_int>` id, :ref:`int<class_int>` to_id, :ref:`bool<class_bool>` bidirectional=true **)**             |
-+-----------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`int<class_int>`                               | :ref:`get_available_point_id<class_AStar_method_get_available_point_id>` **(** **)** const                                                                                               |
-+-----------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`int<class_int>`                               | :ref:`get_closest_point<class_AStar_method_get_closest_point>` **(** :ref:`Vector3<class_Vector3>` to_position, :ref:`bool<class_bool>` include_disabled=false **)** const               |
-+-----------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`Vector3<class_Vector3>`                       | :ref:`get_closest_position_in_segment<class_AStar_method_get_closest_position_in_segment>` **(** :ref:`Vector3<class_Vector3>` to_position **)** const                                   |
-+-----------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`PackedInt32Array<class_PackedInt32Array>`     | :ref:`get_id_path<class_AStar_method_get_id_path>` **(** :ref:`int<class_int>` from_id, :ref:`int<class_int>` to_id **)**                                                                |
-+-----------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`int<class_int>`                               | :ref:`get_point_capacity<class_AStar_method_get_point_capacity>` **(** **)** const                                                                                                       |
-+-----------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`PackedInt32Array<class_PackedInt32Array>`     | :ref:`get_point_connections<class_AStar_method_get_point_connections>` **(** :ref:`int<class_int>` id **)**                                                                              |
-+-----------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`int<class_int>`                               | :ref:`get_point_count<class_AStar_method_get_point_count>` **(** **)** const                                                                                                             |
-+-----------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`PackedVector3Array<class_PackedVector3Array>` | :ref:`get_point_path<class_AStar_method_get_point_path>` **(** :ref:`int<class_int>` from_id, :ref:`int<class_int>` to_id **)**                                                          |
-+-----------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`Vector3<class_Vector3>`                       | :ref:`get_point_position<class_AStar_method_get_point_position>` **(** :ref:`int<class_int>` id **)** const                                                                              |
-+-----------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`float<class_float>`                           | :ref:`get_point_weight_scale<class_AStar_method_get_point_weight_scale>` **(** :ref:`int<class_int>` id **)** const                                                                      |
-+-----------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`Array<class_Array>`                           | :ref:`get_points<class_AStar_method_get_points>` **(** **)**                                                                                                                             |
-+-----------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`bool<class_bool>`                             | :ref:`has_point<class_AStar_method_has_point>` **(** :ref:`int<class_int>` id **)** const                                                                                                |
-+-----------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`bool<class_bool>`                             | :ref:`is_point_disabled<class_AStar_method_is_point_disabled>` **(** :ref:`int<class_int>` id **)** const                                                                                |
-+-----------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| void                                                | :ref:`remove_point<class_AStar_method_remove_point>` **(** :ref:`int<class_int>` id **)**                                                                                                |
-+-----------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| void                                                | :ref:`reserve_space<class_AStar_method_reserve_space>` **(** :ref:`int<class_int>` num_nodes **)**                                                                                       |
-+-----------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| void                                                | :ref:`set_point_disabled<class_AStar_method_set_point_disabled>` **(** :ref:`int<class_int>` id, :ref:`bool<class_bool>` disabled=true **)**                                             |
-+-----------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| void                                                | :ref:`set_point_position<class_AStar_method_set_point_position>` **(** :ref:`int<class_int>` id, :ref:`Vector3<class_Vector3>` position **)**                                            |
-+-----------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| void                                                | :ref:`set_point_weight_scale<class_AStar_method_set_point_weight_scale>` **(** :ref:`int<class_int>` id, :ref:`float<class_float>` weight_scale **)**                                    |
-+-----------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
++-----------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`float<class_float>`                           | :ref:`_compute_cost<class_AStar_method__compute_cost>` **(** :ref:`int<class_int>` from_id, :ref:`int<class_int>` to_id **)** |virtual| |const|                                            |
++-----------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`float<class_float>`                           | :ref:`_estimate_cost<class_AStar_method__estimate_cost>` **(** :ref:`int<class_int>` from_id, :ref:`int<class_int>` to_id **)** |virtual| |const|                                          |
++-----------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| void                                                | :ref:`add_point<class_AStar_method_add_point>` **(** :ref:`int<class_int>` id, :ref:`Vector3<class_Vector3>` position, :ref:`float<class_float>` weight_scale=1.0 **)**                    |
++-----------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`bool<class_bool>`                             | :ref:`are_points_connected<class_AStar_method_are_points_connected>` **(** :ref:`int<class_int>` id, :ref:`int<class_int>` to_id, :ref:`bool<class_bool>` bidirectional=true **)** |const| |
++-----------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| void                                                | :ref:`clear<class_AStar_method_clear>` **(** **)**                                                                                                                                         |
++-----------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| void                                                | :ref:`connect_points<class_AStar_method_connect_points>` **(** :ref:`int<class_int>` id, :ref:`int<class_int>` to_id, :ref:`bool<class_bool>` bidirectional=true **)**                     |
++-----------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| void                                                | :ref:`disconnect_points<class_AStar_method_disconnect_points>` **(** :ref:`int<class_int>` id, :ref:`int<class_int>` to_id, :ref:`bool<class_bool>` bidirectional=true **)**               |
++-----------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`int<class_int>`                               | :ref:`get_available_point_id<class_AStar_method_get_available_point_id>` **(** **)** |const|                                                                                               |
++-----------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`int<class_int>`                               | :ref:`get_closest_point<class_AStar_method_get_closest_point>` **(** :ref:`Vector3<class_Vector3>` to_position, :ref:`bool<class_bool>` include_disabled=false **)** |const|               |
++-----------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`Vector3<class_Vector3>`                       | :ref:`get_closest_position_in_segment<class_AStar_method_get_closest_position_in_segment>` **(** :ref:`Vector3<class_Vector3>` to_position **)** |const|                                   |
++-----------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`PackedInt32Array<class_PackedInt32Array>`     | :ref:`get_id_path<class_AStar_method_get_id_path>` **(** :ref:`int<class_int>` from_id, :ref:`int<class_int>` to_id **)**                                                                  |
++-----------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`int<class_int>`                               | :ref:`get_point_capacity<class_AStar_method_get_point_capacity>` **(** **)** |const|                                                                                                       |
++-----------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`PackedInt32Array<class_PackedInt32Array>`     | :ref:`get_point_connections<class_AStar_method_get_point_connections>` **(** :ref:`int<class_int>` id **)**                                                                                |
++-----------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`int<class_int>`                               | :ref:`get_point_count<class_AStar_method_get_point_count>` **(** **)** |const|                                                                                                             |
++-----------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`PackedVector3Array<class_PackedVector3Array>` | :ref:`get_point_path<class_AStar_method_get_point_path>` **(** :ref:`int<class_int>` from_id, :ref:`int<class_int>` to_id **)**                                                            |
++-----------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`Vector3<class_Vector3>`                       | :ref:`get_point_position<class_AStar_method_get_point_position>` **(** :ref:`int<class_int>` id **)** |const|                                                                              |
++-----------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`float<class_float>`                           | :ref:`get_point_weight_scale<class_AStar_method_get_point_weight_scale>` **(** :ref:`int<class_int>` id **)** |const|                                                                      |
++-----------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`Array<class_Array>`                           | :ref:`get_points<class_AStar_method_get_points>` **(** **)**                                                                                                                               |
++-----------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`bool<class_bool>`                             | :ref:`has_point<class_AStar_method_has_point>` **(** :ref:`int<class_int>` id **)** |const|                                                                                                |
++-----------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`bool<class_bool>`                             | :ref:`is_point_disabled<class_AStar_method_is_point_disabled>` **(** :ref:`int<class_int>` id **)** |const|                                                                                |
++-----------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| void                                                | :ref:`remove_point<class_AStar_method_remove_point>` **(** :ref:`int<class_int>` id **)**                                                                                                  |
++-----------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| void                                                | :ref:`reserve_space<class_AStar_method_reserve_space>` **(** :ref:`int<class_int>` num_nodes **)**                                                                                         |
++-----------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| void                                                | :ref:`set_point_disabled<class_AStar_method_set_point_disabled>` **(** :ref:`int<class_int>` id, :ref:`bool<class_bool>` disabled=true **)**                                               |
++-----------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| void                                                | :ref:`set_point_position<class_AStar_method_set_point_position>` **(** :ref:`int<class_int>` id, :ref:`Vector3<class_Vector3>` position **)**                                              |
++-----------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| void                                                | :ref:`set_point_weight_scale<class_AStar_method_set_point_weight_scale>` **(** :ref:`int<class_int>` id, :ref:`float<class_float>` weight_scale **)**                                      |
++-----------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
 
 
 Method Descriptions
 Method Descriptions
 -------------------
 -------------------
 
 
 .. _class_AStar_method__compute_cost:
 .. _class_AStar_method__compute_cost:
 
 
-- :ref:`float<class_float>` **_compute_cost** **(** :ref:`int<class_int>` from_id, :ref:`int<class_int>` to_id **)** virtual
+- :ref:`float<class_float>` **_compute_cost** **(** :ref:`int<class_int>` from_id, :ref:`int<class_int>` to_id **)** |virtual| |const|
 
 
 Called when computing the cost between two connected points.
 Called when computing the cost between two connected points.
 
 
@@ -105,7 +126,7 @@ Note that this function is hidden in the default ``AStar`` class.
 
 
 .. _class_AStar_method__estimate_cost:
 .. _class_AStar_method__estimate_cost:
 
 
-- :ref:`float<class_float>` **_estimate_cost** **(** :ref:`int<class_int>` from_id, :ref:`int<class_int>` to_id **)** virtual
+- :ref:`float<class_float>` **_estimate_cost** **(** :ref:`int<class_int>` from_id, :ref:`int<class_int>` to_id **)** |virtual| |const|
 
 
 Called when estimating the cost between a point and the path's ending point.
 Called when estimating the cost between a point and the path's ending point.
 
 
@@ -117,20 +138,32 @@ Note that this function is hidden in the default ``AStar`` class.
 
 
 - void **add_point** **(** :ref:`int<class_int>` id, :ref:`Vector3<class_Vector3>` position, :ref:`float<class_float>` weight_scale=1.0 **)**
 - void **add_point** **(** :ref:`int<class_int>` id, :ref:`Vector3<class_Vector3>` position, :ref:`float<class_float>` weight_scale=1.0 **)**
 
 
-Adds a new point at the given position with the given identifier. The algorithm prefers points with lower ``weight_scale`` to form a path. The ``id`` must be 0 or larger, and the ``weight_scale`` must be 1 or larger.
+Adds a new point at the given position with the given identifier. The ``id`` must be 0 or larger, and the ``weight_scale`` must be 1 or larger.
+
+The ``weight_scale`` is multiplied by the result of :ref:`_compute_cost<class_AStar_method__compute_cost>` when determining the overall cost of traveling across a segment from a neighboring point to this point. Thus, all else being equal, the algorithm prefers points with lower ``weight_scale``\ s to form a path.
+
 
 
-::
+.. tabs::
+
+ .. code-tab:: gdscript
 
 
     var astar = AStar.new()
     var astar = AStar.new()
     astar.add_point(1, Vector3(1, 0, 0), 4) # Adds the point (1, 0, 0) with weight_scale 4 and id 1
     astar.add_point(1, Vector3(1, 0, 0), 4) # Adds the point (1, 0, 0) with weight_scale 4 and id 1
 
 
+ .. code-tab:: csharp
+
+    var astar = new AStar();
+    astar.AddPoint(1, new Vector3(1, 0, 0), 4); // Adds the point (1, 0, 0) with weight_scale 4 and id 1
+
+
+
 If there already exists a point for the given ``id``, its position and weight scale are updated to the given values.
 If there already exists a point for the given ``id``, its position and weight scale are updated to the given values.
 
 
 ----
 ----
 
 
 .. _class_AStar_method_are_points_connected:
 .. _class_AStar_method_are_points_connected:
 
 
-- :ref:`bool<class_bool>` **are_points_connected** **(** :ref:`int<class_int>` id, :ref:`int<class_int>` to_id, :ref:`bool<class_bool>` bidirectional=true **)** const
+- :ref:`bool<class_bool>` **are_points_connected** **(** :ref:`int<class_int>` id, :ref:`int<class_int>` to_id, :ref:`bool<class_bool>` bidirectional=true **)** |const|
 
 
 Returns whether the two given points are directly connected by a segment. If ``bidirectional`` is ``false``, returns whether movement from ``id`` to ``to_id`` is possible through this segment.
 Returns whether the two given points are directly connected by a segment. If ``bidirectional`` is ``false``, returns whether movement from ``id`` to ``to_id`` is possible through this segment.
 
 
@@ -150,13 +183,25 @@ Clears all the points and segments.
 
 
 Creates a segment between the given points. If ``bidirectional`` is ``false``, only movement from ``id`` to ``to_id`` is allowed, not the reverse direction.
 Creates a segment between the given points. If ``bidirectional`` is ``false``, only movement from ``id`` to ``to_id`` is allowed, not the reverse direction.
 
 
-::
+
+.. tabs::
+
+ .. code-tab:: gdscript
 
 
     var astar = AStar.new()
     var astar = AStar.new()
     astar.add_point(1, Vector3(1, 1, 0))
     astar.add_point(1, Vector3(1, 1, 0))
     astar.add_point(2, Vector3(0, 5, 0))
     astar.add_point(2, Vector3(0, 5, 0))
     astar.connect_points(1, 2, false)
     astar.connect_points(1, 2, false)
 
 
+ .. code-tab:: csharp
+
+    var astar = new AStar();
+    astar.AddPoint(1, new Vector3(1, 1, 0));
+    astar.AddPoint(2, new Vector3(0, 5, 0));
+    astar.ConnectPoints(1, 2, false);
+
+
+
 ----
 ----
 
 
 .. _class_AStar_method_disconnect_points:
 .. _class_AStar_method_disconnect_points:
@@ -169,7 +214,7 @@ Deletes the segment between the given points. If ``bidirectional`` is ``false``,
 
 
 .. _class_AStar_method_get_available_point_id:
 .. _class_AStar_method_get_available_point_id:
 
 
-- :ref:`int<class_int>` **get_available_point_id** **(** **)** const
+- :ref:`int<class_int>` **get_available_point_id** **(** **)** |const|
 
 
 Returns the next available point ID with no point associated to it.
 Returns the next available point ID with no point associated to it.
 
 
@@ -177,19 +222,24 @@ Returns the next available point ID with no point associated to it.
 
 
 .. _class_AStar_method_get_closest_point:
 .. _class_AStar_method_get_closest_point:
 
 
-- :ref:`int<class_int>` **get_closest_point** **(** :ref:`Vector3<class_Vector3>` to_position, :ref:`bool<class_bool>` include_disabled=false **)** const
+- :ref:`int<class_int>` **get_closest_point** **(** :ref:`Vector3<class_Vector3>` to_position, :ref:`bool<class_bool>` include_disabled=false **)** |const|
+
+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.
 
 
-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.
 
 
 ----
 ----
 
 
 .. _class_AStar_method_get_closest_position_in_segment:
 .. _class_AStar_method_get_closest_position_in_segment:
 
 
-- :ref:`Vector3<class_Vector3>` **get_closest_position_in_segment** **(** :ref:`Vector3<class_Vector3>` to_position **)** const
+- :ref:`Vector3<class_Vector3>` **get_closest_position_in_segment** **(** :ref:`Vector3<class_Vector3>` to_position **)** |const|
 
 
 Returns the closest position to ``to_position`` that resides inside a segment between two connected points.
 Returns the closest position to ``to_position`` that resides inside a segment between two connected points.
 
 
-::
+
+.. tabs::
+
+ .. code-tab:: gdscript
 
 
     var astar = AStar.new()
     var astar = AStar.new()
     astar.add_point(1, Vector3(0, 0, 0))
     astar.add_point(1, Vector3(0, 0, 0))
@@ -197,6 +247,16 @@ Returns the closest position to ``to_position`` that resides inside a segment be
     astar.connect_points(1, 2)
     astar.connect_points(1, 2)
     var res = astar.get_closest_position_in_segment(Vector3(3, 3, 0)) # Returns (0, 3, 0)
     var res = astar.get_closest_position_in_segment(Vector3(3, 3, 0)) # Returns (0, 3, 0)
 
 
+ .. code-tab:: csharp
+
+    var astar = new AStar();
+    astar.AddPoint(1, new Vector3(0, 0, 0));
+    astar.AddPoint(2, new Vector3(0, 5, 0));
+    astar.ConnectPoints(1, 2);
+    Vector3 res = astar.GetClosestPositionInSegment(new Vector3(3, 3, 0)); // Returns (0, 3, 0)
+
+
+
 The result is in the segment that goes from ``y = 0`` to ``y = 5``. It's the closest position in the segment to the given point.
 The result is in the segment that goes from ``y = 0`` to ``y = 5``. It's the closest position in the segment to the given point.
 
 
 ----
 ----
@@ -207,7 +267,10 @@ The result is in the segment that goes from ``y = 0`` to ``y = 5``. It's the clo
 
 
 Returns an array with the IDs of the points that form the path found by AStar between the given points. The array is ordered from the starting point to the ending point of the path.
 Returns an array with the IDs of the points that form the path found by AStar between the given points. The array is ordered from the starting point to the ending point of the path.
 
 
-::
+
+.. tabs::
+
+ .. code-tab:: gdscript
 
 
     var astar = AStar.new()
     var astar = AStar.new()
     astar.add_point(1, Vector3(0, 0, 0))
     astar.add_point(1, Vector3(0, 0, 0))
@@ -222,13 +285,28 @@ Returns an array with the IDs of the points that form the path found by AStar be
     
     
     var res = astar.get_id_path(1, 3) # Returns [1, 2, 3]
     var res = astar.get_id_path(1, 3) # Returns [1, 2, 3]
 
 
+ .. code-tab:: csharp
+
+    var astar = new AStar();
+    astar.AddPoint(1, new Vector3(0, 0, 0));
+    astar.AddPoint(2, new Vector3(0, 1, 0), 1); // Default weight is 1
+    astar.AddPoint(3, new Vector3(1, 1, 0));
+    astar.AddPoint(4, new Vector3(2, 0, 0));
+    astar.ConnectPoints(1, 2, false);
+    astar.ConnectPoints(2, 3, false);
+    astar.ConnectPoints(4, 3, false);
+    astar.ConnectPoints(1, 4, false);
+    int[] res = astar.GetIdPath(1, 3); // Returns [1, 2, 3]
+
+
+
 If you change the 2nd point's weight to 3, then the result will be ``[1, 4, 3]`` instead, because now even though the distance is longer, it's "easier" to get through point 4 than through point 2.
 If you change the 2nd point's weight to 3, then the result will be ``[1, 4, 3]`` instead, because now even though the distance is longer, it's "easier" to get through point 4 than through point 2.
 
 
 ----
 ----
 
 
 .. _class_AStar_method_get_point_capacity:
 .. _class_AStar_method_get_point_capacity:
 
 
-- :ref:`int<class_int>` **get_point_capacity** **(** **)** const
+- :ref:`int<class_int>` **get_point_capacity** **(** **)** |const|
 
 
 Returns the capacity of the structure backing the points, useful in conjunction with ``reserve_space``.
 Returns the capacity of the structure backing the points, useful in conjunction with ``reserve_space``.
 
 
@@ -240,7 +318,10 @@ Returns the capacity of the structure backing the points, useful in conjunction
 
 
 Returns an array with the IDs of the points that form the connection with the given point.
 Returns an array with the IDs of the points that form the connection with the given point.
 
 
-::
+
+.. tabs::
+
+ .. code-tab:: gdscript
 
 
     var astar = AStar.new()
     var astar = AStar.new()
     astar.add_point(1, Vector3(0, 0, 0))
     astar.add_point(1, Vector3(0, 0, 0))
@@ -253,11 +334,25 @@ Returns an array with the IDs of the points that form the connection with the gi
     
     
     var neighbors = astar.get_point_connections(1) # Returns [2, 3]
     var neighbors = astar.get_point_connections(1) # Returns [2, 3]
 
 
+ .. code-tab:: csharp
+
+    var astar = new AStar();
+    astar.AddPoint(1, new Vector3(0, 0, 0));
+    astar.AddPoint(2, new Vector3(0, 1, 0));
+    astar.AddPoint(3, new Vector3(1, 1, 0));
+    astar.AddPoint(4, new Vector3(2, 0, 0));
+    astar.ConnectPoints(1, 2, true);
+    astar.ConnectPoints(1, 3, true);
+    
+    int[] neighbors = astar.GetPointConnections(1); // Returns [2, 3]
+
+
+
 ----
 ----
 
 
 .. _class_AStar_method_get_point_count:
 .. _class_AStar_method_get_point_count:
 
 
-- :ref:`int<class_int>` **get_point_count** **(** **)** const
+- :ref:`int<class_int>` **get_point_count** **(** **)** |const|
 
 
 Returns the number of points currently in the points pool.
 Returns the number of points currently in the points pool.
 
 
@@ -269,11 +364,13 @@ 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.
 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:`PackedVector3Array<class_PackedVector3Array>` and will print an error message.
+
 ----
 ----
 
 
 .. _class_AStar_method_get_point_position:
 .. _class_AStar_method_get_point_position:
 
 
-- :ref:`Vector3<class_Vector3>` **get_point_position** **(** :ref:`int<class_int>` id **)** const
+- :ref:`Vector3<class_Vector3>` **get_point_position** **(** :ref:`int<class_int>` id **)** |const|
 
 
 Returns the position of the point associated with the given ``id``.
 Returns the position of the point associated with the given ``id``.
 
 
@@ -281,7 +378,7 @@ Returns the position of the point associated with the given ``id``.
 
 
 .. _class_AStar_method_get_point_weight_scale:
 .. _class_AStar_method_get_point_weight_scale:
 
 
-- :ref:`float<class_float>` **get_point_weight_scale** **(** :ref:`int<class_int>` id **)** const
+- :ref:`float<class_float>` **get_point_weight_scale** **(** :ref:`int<class_int>` id **)** |const|
 
 
 Returns the weight scale of the point associated with the given ``id``.
 Returns the weight scale of the point associated with the given ``id``.
 
 
@@ -297,7 +394,7 @@ Returns an array of all points.
 
 
 .. _class_AStar_method_has_point:
 .. _class_AStar_method_has_point:
 
 
-- :ref:`bool<class_bool>` **has_point** **(** :ref:`int<class_int>` id **)** const
+- :ref:`bool<class_bool>` **has_point** **(** :ref:`int<class_int>` id **)** |const|
 
 
 Returns whether a point associated with the given ``id`` exists.
 Returns whether a point associated with the given ``id`` exists.
 
 
@@ -305,7 +402,7 @@ Returns whether a point associated with the given ``id`` exists.
 
 
 .. _class_AStar_method_is_point_disabled:
 .. _class_AStar_method_is_point_disabled:
 
 
-- :ref:`bool<class_bool>` **is_point_disabled** **(** :ref:`int<class_int>` id **)** const
+- :ref:`bool<class_bool>` **is_point_disabled** **(** :ref:`int<class_int>` id **)** |const|
 
 
 Returns whether a point is disabled or not for pathfinding. By default, all points are enabled.
 Returns whether a point is disabled or not for pathfinding. By default, all points are enabled.
 
 
@@ -347,5 +444,11 @@ Sets the ``position`` for the point with the given ``id``.
 
 
 - void **set_point_weight_scale** **(** :ref:`int<class_int>` id, :ref:`float<class_float>` weight_scale **)**
 - void **set_point_weight_scale** **(** :ref:`int<class_int>` id, :ref:`float<class_float>` weight_scale **)**
 
 
-Sets the ``weight_scale`` for the point with the given ``id``.
+Sets the ``weight_scale`` for the point with the given ``id``. The ``weight_scale`` is multiplied by the result of :ref:`_compute_cost<class_AStar_method__compute_cost>` when determining the overall cost of traveling across a segment from a neighboring point to this point.
 
 
+.. |virtual| replace:: :abbr:`virtual (This method should typically be overridden by the user to have any effect.)`
+.. |const| replace:: :abbr:`const (This method has no side effects. It doesn't modify any of the instance's member variables.)`
+.. |vararg| replace:: :abbr:`vararg (This method accepts any number of arguments after the ones described here.)`
+.. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)`
+.. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)`
+.. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)`

+ 156 - 72
classes/class_astar2d.rst

@@ -9,7 +9,7 @@
 AStar2D
 AStar2D
 =======
 =======
 
 
-**Inherits:** :ref:`Reference<class_Reference>` **<** :ref:`Object<class_Object>`
+**Inherits:** :ref:`RefCounted<class_RefCounted>` **<** :ref:`Object<class_Object>`
 
 
 AStar class representation that uses 2D vectors as edges.
 AStar class representation that uses 2D vectors as edges.
 
 
@@ -21,64 +21,64 @@ This is a wrapper for the :ref:`AStar<class_AStar>` class which uses 2D vectors
 Methods
 Methods
 -------
 -------
 
 
-+-----------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`float<class_float>`                           | :ref:`_compute_cost<class_AStar2D_method__compute_cost>` **(** :ref:`int<class_int>` from_id, :ref:`int<class_int>` to_id **)** virtual                                      |
-+-----------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`float<class_float>`                           | :ref:`_estimate_cost<class_AStar2D_method__estimate_cost>` **(** :ref:`int<class_int>` from_id, :ref:`int<class_int>` to_id **)** virtual                                    |
-+-----------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| void                                                | :ref:`add_point<class_AStar2D_method_add_point>` **(** :ref:`int<class_int>` id, :ref:`Vector2<class_Vector2>` position, :ref:`float<class_float>` weight_scale=1.0 **)**    |
-+-----------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`bool<class_bool>`                             | :ref:`are_points_connected<class_AStar2D_method_are_points_connected>` **(** :ref:`int<class_int>` id, :ref:`int<class_int>` to_id **)** const                               |
-+-----------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| void                                                | :ref:`clear<class_AStar2D_method_clear>` **(** **)**                                                                                                                         |
-+-----------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| void                                                | :ref:`connect_points<class_AStar2D_method_connect_points>` **(** :ref:`int<class_int>` id, :ref:`int<class_int>` to_id, :ref:`bool<class_bool>` bidirectional=true **)**     |
-+-----------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| void                                                | :ref:`disconnect_points<class_AStar2D_method_disconnect_points>` **(** :ref:`int<class_int>` id, :ref:`int<class_int>` to_id **)**                                           |
-+-----------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`int<class_int>`                               | :ref:`get_available_point_id<class_AStar2D_method_get_available_point_id>` **(** **)** const                                                                                 |
-+-----------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`int<class_int>`                               | :ref:`get_closest_point<class_AStar2D_method_get_closest_point>` **(** :ref:`Vector2<class_Vector2>` to_position, :ref:`bool<class_bool>` include_disabled=false **)** const |
-+-----------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`Vector2<class_Vector2>`                       | :ref:`get_closest_position_in_segment<class_AStar2D_method_get_closest_position_in_segment>` **(** :ref:`Vector2<class_Vector2>` to_position **)** const                     |
-+-----------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`PackedInt32Array<class_PackedInt32Array>`     | :ref:`get_id_path<class_AStar2D_method_get_id_path>` **(** :ref:`int<class_int>` from_id, :ref:`int<class_int>` to_id **)**                                                  |
-+-----------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`int<class_int>`                               | :ref:`get_point_capacity<class_AStar2D_method_get_point_capacity>` **(** **)** const                                                                                         |
-+-----------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`PackedInt32Array<class_PackedInt32Array>`     | :ref:`get_point_connections<class_AStar2D_method_get_point_connections>` **(** :ref:`int<class_int>` id **)**                                                                |
-+-----------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`int<class_int>`                               | :ref:`get_point_count<class_AStar2D_method_get_point_count>` **(** **)** const                                                                                               |
-+-----------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`PackedVector2Array<class_PackedVector2Array>` | :ref:`get_point_path<class_AStar2D_method_get_point_path>` **(** :ref:`int<class_int>` from_id, :ref:`int<class_int>` to_id **)**                                            |
-+-----------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`Vector2<class_Vector2>`                       | :ref:`get_point_position<class_AStar2D_method_get_point_position>` **(** :ref:`int<class_int>` id **)** const                                                                |
-+-----------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`float<class_float>`                           | :ref:`get_point_weight_scale<class_AStar2D_method_get_point_weight_scale>` **(** :ref:`int<class_int>` id **)** const                                                        |
-+-----------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`Array<class_Array>`                           | :ref:`get_points<class_AStar2D_method_get_points>` **(** **)**                                                                                                               |
-+-----------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`bool<class_bool>`                             | :ref:`has_point<class_AStar2D_method_has_point>` **(** :ref:`int<class_int>` id **)** const                                                                                  |
-+-----------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`bool<class_bool>`                             | :ref:`is_point_disabled<class_AStar2D_method_is_point_disabled>` **(** :ref:`int<class_int>` id **)** const                                                                  |
-+-----------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| void                                                | :ref:`remove_point<class_AStar2D_method_remove_point>` **(** :ref:`int<class_int>` id **)**                                                                                  |
-+-----------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| void                                                | :ref:`reserve_space<class_AStar2D_method_reserve_space>` **(** :ref:`int<class_int>` num_nodes **)**                                                                         |
-+-----------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| void                                                | :ref:`set_point_disabled<class_AStar2D_method_set_point_disabled>` **(** :ref:`int<class_int>` id, :ref:`bool<class_bool>` disabled=true **)**                               |
-+-----------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| void                                                | :ref:`set_point_position<class_AStar2D_method_set_point_position>` **(** :ref:`int<class_int>` id, :ref:`Vector2<class_Vector2>` position **)**                              |
-+-----------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| void                                                | :ref:`set_point_weight_scale<class_AStar2D_method_set_point_weight_scale>` **(** :ref:`int<class_int>` id, :ref:`float<class_float>` weight_scale **)**                      |
-+-----------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
++-----------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`float<class_float>`                           | :ref:`_compute_cost<class_AStar2D_method__compute_cost>` **(** :ref:`int<class_int>` from_id, :ref:`int<class_int>` to_id **)** |virtual| |const|                              |
++-----------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`float<class_float>`                           | :ref:`_estimate_cost<class_AStar2D_method__estimate_cost>` **(** :ref:`int<class_int>` from_id, :ref:`int<class_int>` to_id **)** |virtual| |const|                            |
++-----------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| void                                                | :ref:`add_point<class_AStar2D_method_add_point>` **(** :ref:`int<class_int>` id, :ref:`Vector2<class_Vector2>` position, :ref:`float<class_float>` weight_scale=1.0 **)**      |
++-----------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`bool<class_bool>`                             | :ref:`are_points_connected<class_AStar2D_method_are_points_connected>` **(** :ref:`int<class_int>` id, :ref:`int<class_int>` to_id **)** |const|                               |
++-----------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| void                                                | :ref:`clear<class_AStar2D_method_clear>` **(** **)**                                                                                                                           |
++-----------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| void                                                | :ref:`connect_points<class_AStar2D_method_connect_points>` **(** :ref:`int<class_int>` id, :ref:`int<class_int>` to_id, :ref:`bool<class_bool>` bidirectional=true **)**       |
++-----------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| void                                                | :ref:`disconnect_points<class_AStar2D_method_disconnect_points>` **(** :ref:`int<class_int>` id, :ref:`int<class_int>` to_id **)**                                             |
++-----------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`int<class_int>`                               | :ref:`get_available_point_id<class_AStar2D_method_get_available_point_id>` **(** **)** |const|                                                                                 |
++-----------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`int<class_int>`                               | :ref:`get_closest_point<class_AStar2D_method_get_closest_point>` **(** :ref:`Vector2<class_Vector2>` to_position, :ref:`bool<class_bool>` include_disabled=false **)** |const| |
++-----------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`Vector2<class_Vector2>`                       | :ref:`get_closest_position_in_segment<class_AStar2D_method_get_closest_position_in_segment>` **(** :ref:`Vector2<class_Vector2>` to_position **)** |const|                     |
++-----------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`PackedInt32Array<class_PackedInt32Array>`     | :ref:`get_id_path<class_AStar2D_method_get_id_path>` **(** :ref:`int<class_int>` from_id, :ref:`int<class_int>` to_id **)**                                                    |
++-----------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`int<class_int>`                               | :ref:`get_point_capacity<class_AStar2D_method_get_point_capacity>` **(** **)** |const|                                                                                         |
++-----------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`PackedInt32Array<class_PackedInt32Array>`     | :ref:`get_point_connections<class_AStar2D_method_get_point_connections>` **(** :ref:`int<class_int>` id **)**                                                                  |
++-----------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`int<class_int>`                               | :ref:`get_point_count<class_AStar2D_method_get_point_count>` **(** **)** |const|                                                                                               |
++-----------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`PackedVector2Array<class_PackedVector2Array>` | :ref:`get_point_path<class_AStar2D_method_get_point_path>` **(** :ref:`int<class_int>` from_id, :ref:`int<class_int>` to_id **)**                                              |
++-----------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`Vector2<class_Vector2>`                       | :ref:`get_point_position<class_AStar2D_method_get_point_position>` **(** :ref:`int<class_int>` id **)** |const|                                                                |
++-----------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`float<class_float>`                           | :ref:`get_point_weight_scale<class_AStar2D_method_get_point_weight_scale>` **(** :ref:`int<class_int>` id **)** |const|                                                        |
++-----------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`Array<class_Array>`                           | :ref:`get_points<class_AStar2D_method_get_points>` **(** **)**                                                                                                                 |
++-----------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`bool<class_bool>`                             | :ref:`has_point<class_AStar2D_method_has_point>` **(** :ref:`int<class_int>` id **)** |const|                                                                                  |
++-----------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`bool<class_bool>`                             | :ref:`is_point_disabled<class_AStar2D_method_is_point_disabled>` **(** :ref:`int<class_int>` id **)** |const|                                                                  |
++-----------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| void                                                | :ref:`remove_point<class_AStar2D_method_remove_point>` **(** :ref:`int<class_int>` id **)**                                                                                    |
++-----------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| void                                                | :ref:`reserve_space<class_AStar2D_method_reserve_space>` **(** :ref:`int<class_int>` num_nodes **)**                                                                           |
++-----------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| void                                                | :ref:`set_point_disabled<class_AStar2D_method_set_point_disabled>` **(** :ref:`int<class_int>` id, :ref:`bool<class_bool>` disabled=true **)**                                 |
++-----------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| void                                                | :ref:`set_point_position<class_AStar2D_method_set_point_position>` **(** :ref:`int<class_int>` id, :ref:`Vector2<class_Vector2>` position **)**                                |
++-----------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| void                                                | :ref:`set_point_weight_scale<class_AStar2D_method_set_point_weight_scale>` **(** :ref:`int<class_int>` id, :ref:`float<class_float>` weight_scale **)**                        |
++-----------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
 
 
 Method Descriptions
 Method Descriptions
 -------------------
 -------------------
 
 
 .. _class_AStar2D_method__compute_cost:
 .. _class_AStar2D_method__compute_cost:
 
 
-- :ref:`float<class_float>` **_compute_cost** **(** :ref:`int<class_int>` from_id, :ref:`int<class_int>` to_id **)** virtual
+- :ref:`float<class_float>` **_compute_cost** **(** :ref:`int<class_int>` from_id, :ref:`int<class_int>` to_id **)** |virtual| |const|
 
 
 Called when computing the cost between two connected points.
 Called when computing the cost between two connected points.
 
 
@@ -88,7 +88,7 @@ Note that this function is hidden in the default ``AStar2D`` class.
 
 
 .. _class_AStar2D_method__estimate_cost:
 .. _class_AStar2D_method__estimate_cost:
 
 
-- :ref:`float<class_float>` **_estimate_cost** **(** :ref:`int<class_int>` from_id, :ref:`int<class_int>` to_id **)** virtual
+- :ref:`float<class_float>` **_estimate_cost** **(** :ref:`int<class_int>` from_id, :ref:`int<class_int>` to_id **)** |virtual| |const|
 
 
 Called when estimating the cost between a point and the path's ending point.
 Called when estimating the cost between a point and the path's ending point.
 
 
@@ -100,20 +100,32 @@ Note that this function is hidden in the default ``AStar2D`` class.
 
 
 - void **add_point** **(** :ref:`int<class_int>` id, :ref:`Vector2<class_Vector2>` position, :ref:`float<class_float>` weight_scale=1.0 **)**
 - void **add_point** **(** :ref:`int<class_int>` id, :ref:`Vector2<class_Vector2>` position, :ref:`float<class_float>` weight_scale=1.0 **)**
 
 
-Adds a new point at the given position with the given identifier. The algorithm prefers points with lower ``weight_scale`` to form a path. The ``id`` must be 0 or larger, and the ``weight_scale`` must be 1 or larger.
+Adds a new point at the given position with the given identifier. The ``id`` must be 0 or larger, and the ``weight_scale`` must be 1 or larger.
 
 
-::
+The ``weight_scale`` is multiplied by the result of :ref:`_compute_cost<class_AStar2D_method__compute_cost>` when determining the overall cost of traveling across a segment from a neighboring point to this point. Thus, all else being equal, the algorithm prefers points with lower ``weight_scale``\ s to form a path.
+
+
+.. tabs::
+
+ .. code-tab:: gdscript
 
 
     var astar = AStar2D.new()
     var astar = AStar2D.new()
     astar.add_point(1, Vector2(1, 0), 4) # Adds the point (1, 0) with weight_scale 4 and id 1
     astar.add_point(1, Vector2(1, 0), 4) # Adds the point (1, 0) with weight_scale 4 and id 1
 
 
+ .. code-tab:: csharp
+
+    var astar = new AStar2D();
+    astar.AddPoint(1, new Vector2(1, 0), 4); // Adds the point (1, 0) with weight_scale 4 and id 1
+
+
+
 If there already exists a point for the given ``id``, its position and weight scale are updated to the given values.
 If there already exists a point for the given ``id``, its position and weight scale are updated to the given values.
 
 
 ----
 ----
 
 
 .. _class_AStar2D_method_are_points_connected:
 .. _class_AStar2D_method_are_points_connected:
 
 
-- :ref:`bool<class_bool>` **are_points_connected** **(** :ref:`int<class_int>` id, :ref:`int<class_int>` to_id **)** const
+- :ref:`bool<class_bool>` **are_points_connected** **(** :ref:`int<class_int>` id, :ref:`int<class_int>` to_id **)** |const|
 
 
 Returns whether there is a connection/segment between the given points.
 Returns whether there is a connection/segment between the given points.
 
 
@@ -133,13 +145,25 @@ Clears all the points and segments.
 
 
 Creates a segment between the given points. If ``bidirectional`` is ``false``, only movement from ``id`` to ``to_id`` is allowed, not the reverse direction.
 Creates a segment between the given points. If ``bidirectional`` is ``false``, only movement from ``id`` to ``to_id`` is allowed, not the reverse direction.
 
 
-::
+
+.. tabs::
+
+ .. code-tab:: gdscript
 
 
     var astar = AStar2D.new()
     var astar = AStar2D.new()
     astar.add_point(1, Vector2(1, 1))
     astar.add_point(1, Vector2(1, 1))
     astar.add_point(2, Vector2(0, 5))
     astar.add_point(2, Vector2(0, 5))
     astar.connect_points(1, 2, false)
     astar.connect_points(1, 2, false)
 
 
+ .. code-tab:: csharp
+
+    var astar = new AStar2D();
+    astar.AddPoint(1, new Vector2(1, 1));
+    astar.AddPoint(2, new Vector2(0, 5));
+    astar.ConnectPoints(1, 2, false);
+
+
+
 ----
 ----
 
 
 .. _class_AStar2D_method_disconnect_points:
 .. _class_AStar2D_method_disconnect_points:
@@ -152,7 +176,7 @@ Deletes the segment between the given points.
 
 
 .. _class_AStar2D_method_get_available_point_id:
 .. _class_AStar2D_method_get_available_point_id:
 
 
-- :ref:`int<class_int>` **get_available_point_id** **(** **)** const
+- :ref:`int<class_int>` **get_available_point_id** **(** **)** |const|
 
 
 Returns the next available point ID with no point associated to it.
 Returns the next available point ID with no point associated to it.
 
 
@@ -160,19 +184,24 @@ Returns the next available point ID with no point associated to it.
 
 
 .. _class_AStar2D_method_get_closest_point:
 .. _class_AStar2D_method_get_closest_point:
 
 
-- :ref:`int<class_int>` **get_closest_point** **(** :ref:`Vector2<class_Vector2>` to_position, :ref:`bool<class_bool>` include_disabled=false **)** const
+- :ref:`int<class_int>` **get_closest_point** **(** :ref:`Vector2<class_Vector2>` to_position, :ref:`bool<class_bool>` include_disabled=false **)** |const|
+
+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.
 
 
-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.
 
 
 ----
 ----
 
 
 .. _class_AStar2D_method_get_closest_position_in_segment:
 .. _class_AStar2D_method_get_closest_position_in_segment:
 
 
-- :ref:`Vector2<class_Vector2>` **get_closest_position_in_segment** **(** :ref:`Vector2<class_Vector2>` to_position **)** const
+- :ref:`Vector2<class_Vector2>` **get_closest_position_in_segment** **(** :ref:`Vector2<class_Vector2>` to_position **)** |const|
 
 
 Returns the closest position to ``to_position`` that resides inside a segment between two connected points.
 Returns the closest position to ``to_position`` that resides inside a segment between two connected points.
 
 
-::
+
+.. tabs::
+
+ .. code-tab:: gdscript
 
 
     var astar = AStar2D.new()
     var astar = AStar2D.new()
     astar.add_point(1, Vector2(0, 0))
     astar.add_point(1, Vector2(0, 0))
@@ -180,6 +209,16 @@ Returns the closest position to ``to_position`` that resides inside a segment be
     astar.connect_points(1, 2)
     astar.connect_points(1, 2)
     var res = astar.get_closest_position_in_segment(Vector2(3, 3)) # Returns (0, 3)
     var res = astar.get_closest_position_in_segment(Vector2(3, 3)) # Returns (0, 3)
 
 
+ .. code-tab:: csharp
+
+    var astar = new AStar2D();
+    astar.AddPoint(1, new Vector2(0, 0));
+    astar.AddPoint(2, new Vector2(0, 5));
+    astar.ConnectPoints(1, 2);
+    Vector2 res = astar.GetClosestPositionInSegment(new Vector2(3, 3)); // Returns (0, 3)
+
+
+
 The result is in the segment that goes from ``y = 0`` to ``y = 5``. It's the closest position in the segment to the given point.
 The result is in the segment that goes from ``y = 0`` to ``y = 5``. It's the closest position in the segment to the given point.
 
 
 ----
 ----
@@ -190,7 +229,10 @@ The result is in the segment that goes from ``y = 0`` to ``y = 5``. It's the clo
 
 
 Returns an array with the IDs of the points that form the path found by AStar2D between the given points. The array is ordered from the starting point to the ending point of the path.
 Returns an array with the IDs of the points that form the path found by AStar2D between the given points. The array is ordered from the starting point to the ending point of the path.
 
 
-::
+
+.. tabs::
+
+ .. code-tab:: gdscript
 
 
     var astar = AStar2D.new()
     var astar = AStar2D.new()
     astar.add_point(1, Vector2(0, 0))
     astar.add_point(1, Vector2(0, 0))
@@ -205,13 +247,29 @@ Returns an array with the IDs of the points that form the path found by AStar2D
     
     
     var res = astar.get_id_path(1, 3) # Returns [1, 2, 3]
     var res = astar.get_id_path(1, 3) # Returns [1, 2, 3]
 
 
+ .. code-tab:: csharp
+
+    var astar = new AStar2D();
+    astar.AddPoint(1, new Vector2(0, 0));
+    astar.AddPoint(2, new Vector2(0, 1), 1); // Default weight is 1
+    astar.AddPoint(3, new Vector2(1, 1));
+    astar.AddPoint(4, new Vector2(2, 0));
+    
+    astar.ConnectPoints(1, 2, false);
+    astar.ConnectPoints(2, 3, false);
+    astar.ConnectPoints(4, 3, false);
+    astar.ConnectPoints(1, 4, false);
+    int[] res = astar.GetIdPath(1, 3); // Returns [1, 2, 3]
+
+
+
 If you change the 2nd point's weight to 3, then the result will be ``[1, 4, 3]`` instead, because now even though the distance is longer, it's "easier" to get through point 4 than through point 2.
 If you change the 2nd point's weight to 3, then the result will be ``[1, 4, 3]`` instead, because now even though the distance is longer, it's "easier" to get through point 4 than through point 2.
 
 
 ----
 ----
 
 
 .. _class_AStar2D_method_get_point_capacity:
 .. _class_AStar2D_method_get_point_capacity:
 
 
-- :ref:`int<class_int>` **get_point_capacity** **(** **)** const
+- :ref:`int<class_int>` **get_point_capacity** **(** **)** |const|
 
 
 Returns the capacity of the structure backing the points, useful in conjunction with ``reserve_space``.
 Returns the capacity of the structure backing the points, useful in conjunction with ``reserve_space``.
 
 
@@ -223,7 +281,10 @@ Returns the capacity of the structure backing the points, useful in conjunction
 
 
 Returns an array with the IDs of the points that form the connection with the given point.
 Returns an array with the IDs of the points that form the connection with the given point.
 
 
-::
+
+.. tabs::
+
+ .. code-tab:: gdscript
 
 
     var astar = AStar2D.new()
     var astar = AStar2D.new()
     astar.add_point(1, Vector2(0, 0))
     astar.add_point(1, Vector2(0, 0))
@@ -236,11 +297,26 @@ Returns an array with the IDs of the points that form the connection with the gi
     
     
     var neighbors = astar.get_point_connections(1) # Returns [2, 3]
     var neighbors = astar.get_point_connections(1) # Returns [2, 3]
 
 
+ .. code-tab:: csharp
+
+    var astar = new AStar2D();
+    astar.AddPoint(1, new Vector2(0, 0));
+    astar.AddPoint(2, new Vector2(0, 1));
+    astar.AddPoint(3, new Vector2(1, 1));
+    astar.AddPoint(4, new Vector2(2, 0));
+    
+    astar.ConnectPoints(1, 2, true);
+    astar.ConnectPoints(1, 3, true);
+    
+    int[] neighbors = astar.GetPointConnections(1); // Returns [2, 3]
+
+
+
 ----
 ----
 
 
 .. _class_AStar2D_method_get_point_count:
 .. _class_AStar2D_method_get_point_count:
 
 
-- :ref:`int<class_int>` **get_point_count** **(** **)** const
+- :ref:`int<class_int>` **get_point_count** **(** **)** |const|
 
 
 Returns the number of points currently in the points pool.
 Returns the number of points currently in the points pool.
 
 
@@ -252,11 +328,13 @@ 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.
 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:`PackedVector2Array<class_PackedVector2Array>` and will print an error message.
+
 ----
 ----
 
 
 .. _class_AStar2D_method_get_point_position:
 .. _class_AStar2D_method_get_point_position:
 
 
-- :ref:`Vector2<class_Vector2>` **get_point_position** **(** :ref:`int<class_int>` id **)** const
+- :ref:`Vector2<class_Vector2>` **get_point_position** **(** :ref:`int<class_int>` id **)** |const|
 
 
 Returns the position of the point associated with the given ``id``.
 Returns the position of the point associated with the given ``id``.
 
 
@@ -264,7 +342,7 @@ Returns the position of the point associated with the given ``id``.
 
 
 .. _class_AStar2D_method_get_point_weight_scale:
 .. _class_AStar2D_method_get_point_weight_scale:
 
 
-- :ref:`float<class_float>` **get_point_weight_scale** **(** :ref:`int<class_int>` id **)** const
+- :ref:`float<class_float>` **get_point_weight_scale** **(** :ref:`int<class_int>` id **)** |const|
 
 
 Returns the weight scale of the point associated with the given ``id``.
 Returns the weight scale of the point associated with the given ``id``.
 
 
@@ -280,7 +358,7 @@ Returns an array of all points.
 
 
 .. _class_AStar2D_method_has_point:
 .. _class_AStar2D_method_has_point:
 
 
-- :ref:`bool<class_bool>` **has_point** **(** :ref:`int<class_int>` id **)** const
+- :ref:`bool<class_bool>` **has_point** **(** :ref:`int<class_int>` id **)** |const|
 
 
 Returns whether a point associated with the given ``id`` exists.
 Returns whether a point associated with the given ``id`` exists.
 
 
@@ -288,7 +366,7 @@ Returns whether a point associated with the given ``id`` exists.
 
 
 .. _class_AStar2D_method_is_point_disabled:
 .. _class_AStar2D_method_is_point_disabled:
 
 
-- :ref:`bool<class_bool>` **is_point_disabled** **(** :ref:`int<class_int>` id **)** const
+- :ref:`bool<class_bool>` **is_point_disabled** **(** :ref:`int<class_int>` id **)** |const|
 
 
 Returns whether a point is disabled or not for pathfinding. By default, all points are enabled.
 Returns whether a point is disabled or not for pathfinding. By default, all points are enabled.
 
 
@@ -330,5 +408,11 @@ Sets the ``position`` for the point with the given ``id``.
 
 
 - void **set_point_weight_scale** **(** :ref:`int<class_int>` id, :ref:`float<class_float>` weight_scale **)**
 - void **set_point_weight_scale** **(** :ref:`int<class_int>` id, :ref:`float<class_float>` weight_scale **)**
 
 
-Sets the ``weight_scale`` for the point with the given ``id``.
+Sets the ``weight_scale`` for the point with the given ``id``. The ``weight_scale`` is multiplied by the result of :ref:`_compute_cost<class_AStar2D_method__compute_cost>` when determining the overall cost of traveling across a segment from a neighboring point to this point.
 
 
+.. |virtual| replace:: :abbr:`virtual (This method should typically be overridden by the user to have any effect.)`
+.. |const| replace:: :abbr:`const (This method has no side effects. It doesn't modify any of the instance's member variables.)`
+.. |vararg| replace:: :abbr:`vararg (This method accepts any number of arguments after the ones described here.)`
+.. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)`
+.. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)`
+.. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)`

+ 34 - 26
classes/class_atlastexture.rst

@@ -9,27 +9,29 @@
 AtlasTexture
 AtlasTexture
 ============
 ============
 
 
-**Inherits:** :ref:`Texture2D<class_Texture2D>` **<** :ref:`Texture<class_Texture>` **<** :ref:`Resource<class_Resource>` **<** :ref:`Reference<class_Reference>` **<** :ref:`Object<class_Object>`
+**Inherits:** :ref:`Texture2D<class_Texture2D>` **<** :ref:`Texture<class_Texture>` **<** :ref:`Resource<class_Resource>` **<** :ref:`RefCounted<class_RefCounted>` **<** :ref:`Object<class_Object>`
 
 
-Packs multiple small textures in a single, bigger one. Helps to optimize video memory costs and render calls.
+Crops out one part of a texture, such as a texture from a texture atlas.
 
 
 Description
 Description
 -----------
 -----------
 
 
-:ref:`Texture2D<class_Texture2D>` resource aimed at managing big textures files that pack multiple smaller textures. Consists of a :ref:`Texture2D<class_Texture2D>`, a margin that defines the border width, and a region that defines the actual area of the AtlasTexture.
+:ref:`Texture2D<class_Texture2D>` 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:`Texture2D<class_Texture2D>` 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.
 
 
 Properties
 Properties
 ----------
 ----------
 
 
-+-----------------------------------+-------------------------------------------------------------+-------------------------+
-| :ref:`Texture2D<class_Texture2D>` | :ref:`atlas<class_AtlasTexture_property_atlas>`             |                         |
-+-----------------------------------+-------------------------------------------------------------+-------------------------+
-| :ref:`bool<class_bool>`           | :ref:`filter_clip<class_AtlasTexture_property_filter_clip>` | ``false``               |
-+-----------------------------------+-------------------------------------------------------------+-------------------------+
-| :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:`Texture2D<class_Texture2D>` | :ref:`atlas<class_AtlasTexture_property_atlas>`             |                       |
++-----------------------------------+-------------------------------------------------------------+-----------------------+
+| :ref:`bool<class_bool>`           | :ref:`filter_clip<class_AtlasTexture_property_filter_clip>` | ``false``             |
++-----------------------------------+-------------------------------------------------------------+-----------------------+
+| :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
 Property Descriptions
 ---------------------
 ---------------------
@@ -68,13 +70,13 @@ If ``true``, clips the area outside of the region to avoid bleeding of the surro
 
 
 - :ref:`Rect2<class_Rect2>` **margin**
 - :ref:`Rect2<class_Rect2>` **margin**
 
 
-+-----------+-------------------------+
-| *Default* | ``Rect2( 0, 0, 0, 0 )`` |
-+-----------+-------------------------+
-| *Setter*  | set_margin(value)       |
-+-----------+-------------------------+
-| *Getter*  | get_margin()            |
-+-----------+-------------------------+
++-----------+-----------------------+
+| *Default* | ``Rect2(0, 0, 0, 0)`` |
++-----------+-----------------------+
+| *Setter*  | set_margin(value)     |
++-----------+-----------------------+
+| *Getter*  | get_margin()          |
++-----------+-----------------------+
 
 
 The margin around the region. The :ref:`Rect2<class_Rect2>`'s :ref:`Rect2.size<class_Rect2_property_size>` parameter ("w" and "h" in the editor) resizes the texture so it fits within the margin.
 The margin around the region. The :ref:`Rect2<class_Rect2>`'s :ref:`Rect2.size<class_Rect2_property_size>` parameter ("w" and "h" in the editor) resizes the texture so it fits within the margin.
 
 
@@ -84,13 +86,19 @@ The margin around the region. The :ref:`Rect2<class_Rect2>`'s :ref:`Rect2.size<c
 
 
 - :ref:`Rect2<class_Rect2>` **region**
 - :ref:`Rect2<class_Rect2>` **region**
 
 
-+-----------+-------------------------+
-| *Default* | ``Rect2( 0, 0, 0, 0 )`` |
-+-----------+-------------------------+
-| *Setter*  | set_region(value)       |
-+-----------+-------------------------+
-| *Getter*  | get_region()            |
-+-----------+-------------------------+
++-----------+-----------------------+
+| *Default* | ``Rect2(0, 0, 0, 0)`` |
++-----------+-----------------------+
+| *Setter*  | set_region(value)     |
++-----------+-----------------------+
+| *Getter*  | get_region()          |
++-----------+-----------------------+
 
 
 The AtlasTexture's used region.
 The AtlasTexture's used region.
 
 
+.. |virtual| replace:: :abbr:`virtual (This method should typically be overridden by the user to have any effect.)`
+.. |const| replace:: :abbr:`const (This method has no side effects. It doesn't modify any of the instance's member variables.)`
+.. |vararg| replace:: :abbr:`vararg (This method accepts any number of arguments after the ones described here.)`
+.. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)`
+.. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)`
+.. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)`

+ 7 - 1
classes/class_audiobuslayout.rst

@@ -9,7 +9,7 @@
 AudioBusLayout
 AudioBusLayout
 ==============
 ==============
 
 
-**Inherits:** :ref:`Resource<class_Resource>` **<** :ref:`Reference<class_Reference>` **<** :ref:`Object<class_Object>`
+**Inherits:** :ref:`Resource<class_Resource>` **<** :ref:`RefCounted<class_RefCounted>` **<** :ref:`Object<class_Object>`
 
 
 Stores information about the audio buses.
 Stores information about the audio buses.
 
 
@@ -18,3 +18,9 @@ Description
 
 
 Stores position, muting, solo, bypass, effects, effect position, volume, and the connections between buses. See :ref:`AudioServer<class_AudioServer>` for usage.
 Stores position, muting, solo, bypass, effects, effect position, volume, and the connections between buses. See :ref:`AudioServer<class_AudioServer>` for usage.
 
 
+.. |virtual| replace:: :abbr:`virtual (This method should typically be overridden by the user to have any effect.)`
+.. |const| replace:: :abbr:`const (This method has no side effects. It doesn't modify any of the instance's member variables.)`
+.. |vararg| replace:: :abbr:`vararg (This method accepts any number of arguments after the ones described here.)`
+.. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)`
+.. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)`
+.. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)`

+ 13 - 2
classes/class_audioeffect.rst

@@ -9,9 +9,9 @@
 AudioEffect
 AudioEffect
 ===========
 ===========
 
 
-**Inherits:** :ref:`Resource<class_Resource>` **<** :ref:`Reference<class_Reference>` **<** :ref:`Object<class_Object>`
+**Inherits:** :ref:`Resource<class_Resource>` **<** :ref:`RefCounted<class_RefCounted>` **<** :ref:`Object<class_Object>`
 
 
-**Inherited By:** :ref:`AudioEffectAmplify<class_AudioEffectAmplify>`, :ref:`AudioEffectChorus<class_AudioEffectChorus>`, :ref:`AudioEffectCompressor<class_AudioEffectCompressor>`, :ref:`AudioEffectDelay<class_AudioEffectDelay>`, :ref:`AudioEffectDistortion<class_AudioEffectDistortion>`, :ref:`AudioEffectEQ<class_AudioEffectEQ>`, :ref:`AudioEffectFilter<class_AudioEffectFilter>`, :ref:`AudioEffectLimiter<class_AudioEffectLimiter>`, :ref:`AudioEffectPanner<class_AudioEffectPanner>`, :ref:`AudioEffectPhaser<class_AudioEffectPhaser>`, :ref:`AudioEffectPitchShift<class_AudioEffectPitchShift>`, :ref:`AudioEffectRecord<class_AudioEffectRecord>`, :ref:`AudioEffectReverb<class_AudioEffectReverb>`, :ref:`AudioEffectSpectrumAnalyzer<class_AudioEffectSpectrumAnalyzer>`, :ref:`AudioEffectStereoEnhance<class_AudioEffectStereoEnhance>`
+**Inherited By:** :ref:`AudioEffectAmplify<class_AudioEffectAmplify>`, :ref:`AudioEffectCapture<class_AudioEffectCapture>`, :ref:`AudioEffectChorus<class_AudioEffectChorus>`, :ref:`AudioEffectCompressor<class_AudioEffectCompressor>`, :ref:`AudioEffectDelay<class_AudioEffectDelay>`, :ref:`AudioEffectDistortion<class_AudioEffectDistortion>`, :ref:`AudioEffectEQ<class_AudioEffectEQ>`, :ref:`AudioEffectFilter<class_AudioEffectFilter>`, :ref:`AudioEffectLimiter<class_AudioEffectLimiter>`, :ref:`AudioEffectPanner<class_AudioEffectPanner>`, :ref:`AudioEffectPhaser<class_AudioEffectPhaser>`, :ref:`AudioEffectPitchShift<class_AudioEffectPitchShift>`, :ref:`AudioEffectRecord<class_AudioEffectRecord>`, :ref:`AudioEffectReverb<class_AudioEffectReverb>`, :ref:`AudioEffectSpectrumAnalyzer<class_AudioEffectSpectrumAnalyzer>`, :ref:`AudioEffectStereoEnhance<class_AudioEffectStereoEnhance>`
 
 
 Audio effect for audio.
 Audio effect for audio.
 
 
@@ -20,3 +20,14 @@ Description
 
 
 Base resource for audio bus. Applies an audio effect on the bus that the resource is applied on.
 Base resource for audio bus. Applies an audio effect on the bus that the resource is applied on.
 
 
+Tutorials
+---------
+
+- `Audio Mic Record Demo <https://godotengine.org/asset-library/asset/527>`__
+
+.. |virtual| replace:: :abbr:`virtual (This method should typically be overridden by the user to have any effect.)`
+.. |const| replace:: :abbr:`const (This method has no side effects. It doesn't modify any of the instance's member variables.)`
+.. |vararg| replace:: :abbr:`vararg (This method accepts any number of arguments after the ones described here.)`
+.. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)`
+.. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)`
+.. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)`

+ 7 - 1
classes/class_audioeffectamplify.rst

@@ -9,7 +9,7 @@
 AudioEffectAmplify
 AudioEffectAmplify
 ==================
 ==================
 
 
-**Inherits:** :ref:`AudioEffect<class_AudioEffect>` **<** :ref:`Resource<class_Resource>` **<** :ref:`Reference<class_Reference>` **<** :ref:`Object<class_Object>`
+**Inherits:** :ref:`AudioEffect<class_AudioEffect>` **<** :ref:`Resource<class_Resource>` **<** :ref:`RefCounted<class_RefCounted>` **<** :ref:`Object<class_Object>`
 
 
 Adds an amplifying audio effect to an audio bus.
 Adds an amplifying audio effect to an audio bus.
 
 
@@ -44,3 +44,9 @@ Property Descriptions
 
 
 Amount of amplification in decibels. Positive values make the sound louder, negative values make it quieter. Value can range from -80 to 24.
 Amount of amplification in decibels. Positive values make the sound louder, negative values make it quieter. Value can range from -80 to 24.
 
 
+.. |virtual| replace:: :abbr:`virtual (This method should typically be overridden by the user to have any effect.)`
+.. |const| replace:: :abbr:`const (This method has no side effects. It doesn't modify any of the instance's member variables.)`
+.. |vararg| replace:: :abbr:`vararg (This method accepts any number of arguments after the ones described here.)`
+.. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)`
+.. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)`
+.. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)`

+ 7 - 1
classes/class_audioeffectbandlimitfilter.rst

@@ -9,7 +9,7 @@
 AudioEffectBandLimitFilter
 AudioEffectBandLimitFilter
 ==========================
 ==========================
 
 
-**Inherits:** :ref:`AudioEffectFilter<class_AudioEffectFilter>` **<** :ref:`AudioEffect<class_AudioEffect>` **<** :ref:`Resource<class_Resource>` **<** :ref:`Reference<class_Reference>` **<** :ref:`Object<class_Object>`
+**Inherits:** :ref:`AudioEffectFilter<class_AudioEffectFilter>` **<** :ref:`AudioEffect<class_AudioEffect>` **<** :ref:`Resource<class_Resource>` **<** :ref:`RefCounted<class_RefCounted>` **<** :ref:`Object<class_Object>`
 
 
 Adds a band limit filter to the audio bus.
 Adds a band limit filter to the audio bus.
 
 
@@ -18,3 +18,9 @@ Description
 
 
 Limits the frequencies in a range around the :ref:`AudioEffectFilter.cutoff_hz<class_AudioEffectFilter_property_cutoff_hz>` and allows frequencies outside of this range to pass.
 Limits the frequencies in a range around the :ref:`AudioEffectFilter.cutoff_hz<class_AudioEffectFilter_property_cutoff_hz>` and allows frequencies outside of this range to pass.
 
 
+.. |virtual| replace:: :abbr:`virtual (This method should typically be overridden by the user to have any effect.)`
+.. |const| replace:: :abbr:`const (This method has no side effects. It doesn't modify any of the instance's member variables.)`
+.. |vararg| replace:: :abbr:`vararg (This method accepts any number of arguments after the ones described here.)`
+.. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)`
+.. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)`
+.. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)`

+ 7 - 1
classes/class_audioeffectbandpassfilter.rst

@@ -9,7 +9,7 @@
 AudioEffectBandPassFilter
 AudioEffectBandPassFilter
 =========================
 =========================
 
 
-**Inherits:** :ref:`AudioEffectFilter<class_AudioEffectFilter>` **<** :ref:`AudioEffect<class_AudioEffect>` **<** :ref:`Resource<class_Resource>` **<** :ref:`Reference<class_Reference>` **<** :ref:`Object<class_Object>`
+**Inherits:** :ref:`AudioEffectFilter<class_AudioEffectFilter>` **<** :ref:`AudioEffect<class_AudioEffect>` **<** :ref:`Resource<class_Resource>` **<** :ref:`RefCounted<class_RefCounted>` **<** :ref:`Object<class_Object>`
 
 
 Adds a band pass filter to the audio bus.
 Adds a band pass filter to the audio bus.
 
 
@@ -18,3 +18,9 @@ Description
 
 
 Attenuates the frequencies inside of a range around the :ref:`AudioEffectFilter.cutoff_hz<class_AudioEffectFilter_property_cutoff_hz>` and cuts frequencies outside of this band.
 Attenuates the frequencies inside of a range around the :ref:`AudioEffectFilter.cutoff_hz<class_AudioEffectFilter_property_cutoff_hz>` and cuts frequencies outside of this band.
 
 
+.. |virtual| replace:: :abbr:`virtual (This method should typically be overridden by the user to have any effect.)`
+.. |const| replace:: :abbr:`const (This method has no side effects. It doesn't modify any of the instance's member variables.)`
+.. |vararg| replace:: :abbr:`vararg (This method accepts any number of arguments after the ones described here.)`
+.. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)`
+.. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)`
+.. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)`

+ 130 - 0
classes/class_audioeffectcapture.rst

@@ -0,0 +1,130 @@
+:github_url: hide
+
+.. Generated automatically by doc/tools/makerst.py in Godot's source tree.
+.. DO NOT EDIT THIS FILE, but the AudioEffectCapture.xml source instead.
+.. The source is found in doc/classes or modules/<name>/doc_classes.
+
+.. _class_AudioEffectCapture:
+
+AudioEffectCapture
+==================
+
+**Inherits:** :ref:`AudioEffect<class_AudioEffect>` **<** :ref:`Resource<class_Resource>` **<** :ref:`RefCounted<class_RefCounted>` **<** :ref:`Object<class_Object>`
+
+Captures audio from an audio bus in real-time.
+
+Description
+-----------
+
+AudioEffectCapture is an AudioEffect which copies all audio frames from the attached audio effect bus into its internal ring buffer.
+
+Application code should consume these audio frames from this ring buffer using :ref:`get_buffer<class_AudioEffectCapture_method_get_buffer>` and process it as needed, for example to capture data from a microphone, implement application defined effects, or to transmit audio over the network.
+
+Properties
+----------
+
++---------------------------+-----------------------------------------------------------------------+---------+
+| :ref:`float<class_float>` | :ref:`buffer_length<class_AudioEffectCapture_property_buffer_length>` | ``0.1`` |
++---------------------------+-----------------------------------------------------------------------+---------+
+
+Methods
+-------
+
++-----------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+
+| :ref:`bool<class_bool>`                             | :ref:`can_get_buffer<class_AudioEffectCapture_method_can_get_buffer>` **(** :ref:`int<class_int>` frames **)** |const| |
++-----------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+
+| void                                                | :ref:`clear_buffer<class_AudioEffectCapture_method_clear_buffer>` **(** **)**                                          |
++-----------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+
+| :ref:`PackedVector2Array<class_PackedVector2Array>` | :ref:`get_buffer<class_AudioEffectCapture_method_get_buffer>` **(** :ref:`int<class_int>` frames **)**                 |
++-----------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+
+| :ref:`int<class_int>`                               | :ref:`get_buffer_length_frames<class_AudioEffectCapture_method_get_buffer_length_frames>` **(** **)** |const|          |
++-----------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+
+| :ref:`int<class_int>`                               | :ref:`get_discarded_frames<class_AudioEffectCapture_method_get_discarded_frames>` **(** **)** |const|                  |
++-----------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+
+| :ref:`int<class_int>`                               | :ref:`get_frames_available<class_AudioEffectCapture_method_get_frames_available>` **(** **)** |const|                  |
++-----------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+
+| :ref:`int<class_int>`                               | :ref:`get_pushed_frames<class_AudioEffectCapture_method_get_pushed_frames>` **(** **)** |const|                        |
++-----------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+
+
+Property Descriptions
+---------------------
+
+.. _class_AudioEffectCapture_property_buffer_length:
+
+- :ref:`float<class_float>` **buffer_length**
+
++-----------+--------------------------+
+| *Default* | ``0.1``                  |
++-----------+--------------------------+
+| *Setter*  | set_buffer_length(value) |
++-----------+--------------------------+
+| *Getter*  | get_buffer_length()      |
++-----------+--------------------------+
+
+Length of the internal ring buffer, in seconds. Setting the buffer length will have no effect if already initialized.
+
+Method Descriptions
+-------------------
+
+.. _class_AudioEffectCapture_method_can_get_buffer:
+
+- :ref:`bool<class_bool>` **can_get_buffer** **(** :ref:`int<class_int>` frames **)** |const|
+
+Returns ``true`` if at least ``frames`` audio frames are available to read in the internal ring buffer.
+
+----
+
+.. _class_AudioEffectCapture_method_clear_buffer:
+
+- void **clear_buffer** **(** **)**
+
+Clears the internal ring buffer.
+
+----
+
+.. _class_AudioEffectCapture_method_get_buffer:
+
+- :ref:`PackedVector2Array<class_PackedVector2Array>` **get_buffer** **(** :ref:`int<class_int>` frames **)**
+
+Gets the next ``frames`` audio samples from the internal ring buffer.
+
+Returns a :ref:`PackedVector2Array<class_PackedVector2Array>` containing exactly ``frames`` audio samples if available, or an empty :ref:`PackedVector2Array<class_PackedVector2Array>` if insufficient data was available.
+
+----
+
+.. _class_AudioEffectCapture_method_get_buffer_length_frames:
+
+- :ref:`int<class_int>` **get_buffer_length_frames** **(** **)** |const|
+
+Returns the total size of the internal ring buffer in frames.
+
+----
+
+.. _class_AudioEffectCapture_method_get_discarded_frames:
+
+- :ref:`int<class_int>` **get_discarded_frames** **(** **)** |const|
+
+Returns the number of audio frames discarded from the audio bus due to full buffer.
+
+----
+
+.. _class_AudioEffectCapture_method_get_frames_available:
+
+- :ref:`int<class_int>` **get_frames_available** **(** **)** |const|
+
+Returns the number of frames available to read using :ref:`get_buffer<class_AudioEffectCapture_method_get_buffer>`.
+
+----
+
+.. _class_AudioEffectCapture_method_get_pushed_frames:
+
+- :ref:`int<class_int>` **get_pushed_frames** **(** **)** |const|
+
+Returns the number of audio frames inserted from the audio bus.
+
+.. |virtual| replace:: :abbr:`virtual (This method should typically be overridden by the user to have any effect.)`
+.. |const| replace:: :abbr:`const (This method has no side effects. It doesn't modify any of the instance's member variables.)`
+.. |vararg| replace:: :abbr:`vararg (This method accepts any number of arguments after the ones described here.)`
+.. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)`
+.. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)`
+.. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)`

+ 19 - 13
classes/class_audioeffectchorus.rst

@@ -9,7 +9,7 @@
 AudioEffectChorus
 AudioEffectChorus
 =================
 =================
 
 
-**Inherits:** :ref:`AudioEffect<class_AudioEffect>` **<** :ref:`Resource<class_Resource>` **<** :ref:`Reference<class_Reference>` **<** :ref:`Object<class_Object>`
+**Inherits:** :ref:`AudioEffect<class_AudioEffect>` **<** :ref:`Resource<class_Resource>` **<** :ref:`RefCounted<class_RefCounted>` **<** :ref:`Object<class_Object>`
 
 
 Adds a chorus audio effect.
 Adds a chorus audio effect.
 
 
@@ -81,17 +81,17 @@ Methods
 -------
 -------
 
 
 +---------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------+
 +---------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`float<class_float>` | :ref:`get_voice_cutoff_hz<class_AudioEffectChorus_method_get_voice_cutoff_hz>` **(** :ref:`int<class_int>` voice_idx **)** const                                |
+| :ref:`float<class_float>` | :ref:`get_voice_cutoff_hz<class_AudioEffectChorus_method_get_voice_cutoff_hz>` **(** :ref:`int<class_int>` voice_idx **)** |const|                              |
 +---------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------+
 +---------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`float<class_float>` | :ref:`get_voice_delay_ms<class_AudioEffectChorus_method_get_voice_delay_ms>` **(** :ref:`int<class_int>` voice_idx **)** const                                  |
+| :ref:`float<class_float>` | :ref:`get_voice_delay_ms<class_AudioEffectChorus_method_get_voice_delay_ms>` **(** :ref:`int<class_int>` voice_idx **)** |const|                                |
 +---------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------+
 +---------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`float<class_float>` | :ref:`get_voice_depth_ms<class_AudioEffectChorus_method_get_voice_depth_ms>` **(** :ref:`int<class_int>` voice_idx **)** const                                  |
+| :ref:`float<class_float>` | :ref:`get_voice_depth_ms<class_AudioEffectChorus_method_get_voice_depth_ms>` **(** :ref:`int<class_int>` voice_idx **)** |const|                                |
 +---------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------+
 +---------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`float<class_float>` | :ref:`get_voice_level_db<class_AudioEffectChorus_method_get_voice_level_db>` **(** :ref:`int<class_int>` voice_idx **)** const                                  |
+| :ref:`float<class_float>` | :ref:`get_voice_level_db<class_AudioEffectChorus_method_get_voice_level_db>` **(** :ref:`int<class_int>` voice_idx **)** |const|                                |
 +---------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------+
 +---------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`float<class_float>` | :ref:`get_voice_pan<class_AudioEffectChorus_method_get_voice_pan>` **(** :ref:`int<class_int>` voice_idx **)** const                                            |
+| :ref:`float<class_float>` | :ref:`get_voice_pan<class_AudioEffectChorus_method_get_voice_pan>` **(** :ref:`int<class_int>` voice_idx **)** |const|                                          |
 +---------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------+
 +---------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`float<class_float>` | :ref:`get_voice_rate_hz<class_AudioEffectChorus_method_get_voice_rate_hz>` **(** :ref:`int<class_int>` voice_idx **)** const                                    |
+| :ref:`float<class_float>` | :ref:`get_voice_rate_hz<class_AudioEffectChorus_method_get_voice_rate_hz>` **(** :ref:`int<class_int>` voice_idx **)** |const|                                  |
 +---------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------+
 +---------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------+
 | void                      | :ref:`set_voice_cutoff_hz<class_AudioEffectChorus_method_set_voice_cutoff_hz>` **(** :ref:`int<class_int>` voice_idx, :ref:`float<class_float>` cutoff_hz **)** |
 | void                      | :ref:`set_voice_cutoff_hz<class_AudioEffectChorus_method_set_voice_cutoff_hz>` **(** :ref:`int<class_int>` voice_idx, :ref:`float<class_float>` cutoff_hz **)** |
 +---------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------+
 +---------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------+
@@ -520,37 +520,37 @@ Method Descriptions
 
 
 .. _class_AudioEffectChorus_method_get_voice_cutoff_hz:
 .. _class_AudioEffectChorus_method_get_voice_cutoff_hz:
 
 
-- :ref:`float<class_float>` **get_voice_cutoff_hz** **(** :ref:`int<class_int>` voice_idx **)** const
+- :ref:`float<class_float>` **get_voice_cutoff_hz** **(** :ref:`int<class_int>` voice_idx **)** |const|
 
 
 ----
 ----
 
 
 .. _class_AudioEffectChorus_method_get_voice_delay_ms:
 .. _class_AudioEffectChorus_method_get_voice_delay_ms:
 
 
-- :ref:`float<class_float>` **get_voice_delay_ms** **(** :ref:`int<class_int>` voice_idx **)** const
+- :ref:`float<class_float>` **get_voice_delay_ms** **(** :ref:`int<class_int>` voice_idx **)** |const|
 
 
 ----
 ----
 
 
 .. _class_AudioEffectChorus_method_get_voice_depth_ms:
 .. _class_AudioEffectChorus_method_get_voice_depth_ms:
 
 
-- :ref:`float<class_float>` **get_voice_depth_ms** **(** :ref:`int<class_int>` voice_idx **)** const
+- :ref:`float<class_float>` **get_voice_depth_ms** **(** :ref:`int<class_int>` voice_idx **)** |const|
 
 
 ----
 ----
 
 
 .. _class_AudioEffectChorus_method_get_voice_level_db:
 .. _class_AudioEffectChorus_method_get_voice_level_db:
 
 
-- :ref:`float<class_float>` **get_voice_level_db** **(** :ref:`int<class_int>` voice_idx **)** const
+- :ref:`float<class_float>` **get_voice_level_db** **(** :ref:`int<class_int>` voice_idx **)** |const|
 
 
 ----
 ----
 
 
 .. _class_AudioEffectChorus_method_get_voice_pan:
 .. _class_AudioEffectChorus_method_get_voice_pan:
 
 
-- :ref:`float<class_float>` **get_voice_pan** **(** :ref:`int<class_int>` voice_idx **)** const
+- :ref:`float<class_float>` **get_voice_pan** **(** :ref:`int<class_int>` voice_idx **)** |const|
 
 
 ----
 ----
 
 
 .. _class_AudioEffectChorus_method_get_voice_rate_hz:
 .. _class_AudioEffectChorus_method_get_voice_rate_hz:
 
 
-- :ref:`float<class_float>` **get_voice_rate_hz** **(** :ref:`int<class_int>` voice_idx **)** const
+- :ref:`float<class_float>` **get_voice_rate_hz** **(** :ref:`int<class_int>` voice_idx **)** |const|
 
 
 ----
 ----
 
 
@@ -588,3 +588,9 @@ Method Descriptions
 
 
 - void **set_voice_rate_hz** **(** :ref:`int<class_int>` voice_idx, :ref:`float<class_float>` rate_hz **)**
 - void **set_voice_rate_hz** **(** :ref:`int<class_int>` voice_idx, :ref:`float<class_float>` rate_hz **)**
 
 
+.. |virtual| replace:: :abbr:`virtual (This method should typically be overridden by the user to have any effect.)`
+.. |const| replace:: :abbr:`const (This method has no side effects. It doesn't modify any of the instance's member variables.)`
+.. |vararg| replace:: :abbr:`vararg (This method accepts any number of arguments after the ones described here.)`
+.. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)`
+.. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)`
+.. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)`

+ 9 - 3
classes/class_audioeffectcompressor.rst

@@ -9,7 +9,7 @@
 AudioEffectCompressor
 AudioEffectCompressor
 =====================
 =====================
 
 
-**Inherits:** :ref:`AudioEffect<class_AudioEffect>` **<** :ref:`Resource<class_Resource>` **<** :ref:`Reference<class_Reference>` **<** :ref:`Object<class_Object>`
+**Inherits:** :ref:`AudioEffect<class_AudioEffect>` **<** :ref:`Resource<class_Resource>` **<** :ref:`RefCounted<class_RefCounted>` **<** :ref:`Object<class_Object>`
 
 
 Adds a compressor audio effect to an audio bus.
 Adds a compressor audio effect to an audio bus.
 
 
@@ -44,7 +44,7 @@ Properties
 +-------------------------------------+--------------------------------------------------------------------+-----------+
 +-------------------------------------+--------------------------------------------------------------------+-----------+
 | :ref:`float<class_float>`           | :ref:`release_ms<class_AudioEffectCompressor_property_release_ms>` | ``250.0`` |
 | :ref:`float<class_float>`           | :ref:`release_ms<class_AudioEffectCompressor_property_release_ms>` | ``250.0`` |
 +-------------------------------------+--------------------------------------------------------------------+-----------+
 +-------------------------------------+--------------------------------------------------------------------+-----------+
-| :ref:`StringName<class_StringName>` | :ref:`sidechain<class_AudioEffectCompressor_property_sidechain>`   | ``@""``   |
+| :ref:`StringName<class_StringName>` | :ref:`sidechain<class_AudioEffectCompressor_property_sidechain>`   | ``&""``   |
 +-------------------------------------+--------------------------------------------------------------------+-----------+
 +-------------------------------------+--------------------------------------------------------------------+-----------+
 | :ref:`float<class_float>`           | :ref:`threshold<class_AudioEffectCompressor_property_threshold>`   | ``0.0``   |
 | :ref:`float<class_float>`           | :ref:`threshold<class_AudioEffectCompressor_property_threshold>`   | ``0.0``   |
 +-------------------------------------+--------------------------------------------------------------------+-----------+
 +-------------------------------------+--------------------------------------------------------------------+-----------+
@@ -137,7 +137,7 @@ Compressor's delay time to stop reducing the signal after the signal level falls
 - :ref:`StringName<class_StringName>` **sidechain**
 - :ref:`StringName<class_StringName>` **sidechain**
 
 
 +-----------+----------------------+
 +-----------+----------------------+
-| *Default* | ``@""``              |
+| *Default* | ``&""``              |
 +-----------+----------------------+
 +-----------+----------------------+
 | *Setter*  | set_sidechain(value) |
 | *Setter*  | set_sidechain(value) |
 +-----------+----------------------+
 +-----------+----------------------+
@@ -162,3 +162,9 @@ Reduce the sound level using another audio bus for threshold detection.
 
 
 The level above which compression is applied to the audio. Value can range from -60 to 0.
 The level above which compression is applied to the audio. Value can range from -60 to 0.
 
 
+.. |virtual| replace:: :abbr:`virtual (This method should typically be overridden by the user to have any effect.)`
+.. |const| replace:: :abbr:`const (This method has no side effects. It doesn't modify any of the instance's member variables.)`
+.. |vararg| replace:: :abbr:`vararg (This method accepts any number of arguments after the ones described here.)`
+.. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)`
+.. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)`
+.. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)`

+ 7 - 1
classes/class_audioeffectdelay.rst

@@ -9,7 +9,7 @@
 AudioEffectDelay
 AudioEffectDelay
 ================
 ================
 
 
-**Inherits:** :ref:`AudioEffect<class_AudioEffect>` **<** :ref:`Resource<class_Resource>` **<** :ref:`Reference<class_Reference>` **<** :ref:`Object<class_Object>`
+**Inherits:** :ref:`AudioEffect<class_AudioEffect>` **<** :ref:`Resource<class_Resource>` **<** :ref:`RefCounted<class_RefCounted>` **<** :ref:`Object<class_Object>`
 
 
 Adds a delay audio effect to an audio bus. Plays input signal back after a period of time.
 Adds a delay audio effect to an audio bus. Plays input signal back after a period of time.
 
 
@@ -260,3 +260,9 @@ Sound level for ``tap2``.
 
 
 Pan position for ``tap2``. Value can range from -1 (fully left) to 1 (fully right).
 Pan position for ``tap2``. Value can range from -1 (fully left) to 1 (fully right).
 
 
+.. |virtual| replace:: :abbr:`virtual (This method should typically be overridden by the user to have any effect.)`
+.. |const| replace:: :abbr:`const (This method has no side effects. It doesn't modify any of the instance's member variables.)`
+.. |vararg| replace:: :abbr:`vararg (This method accepts any number of arguments after the ones described here.)`
+.. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)`
+.. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)`
+.. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)`

+ 14 - 3
classes/class_audioeffectdistortion.rst

@@ -9,19 +9,24 @@
 AudioEffectDistortion
 AudioEffectDistortion
 =====================
 =====================
 
 
-**Inherits:** :ref:`AudioEffect<class_AudioEffect>` **<** :ref:`Resource<class_Resource>` **<** :ref:`Reference<class_Reference>` **<** :ref:`Object<class_Object>`
+**Inherits:** :ref:`AudioEffect<class_AudioEffect>` **<** :ref:`Resource<class_Resource>` **<** :ref:`RefCounted<class_RefCounted>` **<** :ref:`Object<class_Object>`
 
 
 Adds a distortion audio effect to an Audio bus.
 Adds a distortion audio effect to an Audio bus.
 
 
-Modify the sound to make it dirty.
+Modify the sound to make it distorted.
 
 
 Description
 Description
 -----------
 -----------
 
 
-Modify the sound and make it dirty. Different types are available: clip, tan, lo-fi (bit crushing), overdrive, or waveshape.
+Different types are available: clip, tan, lo-fi (bit crushing), overdrive, or waveshape.
 
 
 By distorting the waveform the frequency content change, which will often make the sound "crunchy" or "abrasive". For games, it can simulate sound coming from some saturated device or speaker very efficiently.
 By distorting the waveform the frequency content change, which will often make the sound "crunchy" or "abrasive". For games, it can simulate sound coming from some saturated device or speaker very efficiently.
 
 
+Tutorials
+---------
+
+- :doc:`../tutorials/audio/audio_buses`
+
 Properties
 Properties
 ----------
 ----------
 
 
@@ -145,3 +150,9 @@ Increases or decreases the volume after the effect. Value can range from -80 to
 
 
 Increases or decreases the volume before the effect. Value can range from -60 to 60.
 Increases or decreases the volume before the effect. Value can range from -60 to 60.
 
 
+.. |virtual| replace:: :abbr:`virtual (This method should typically be overridden by the user to have any effect.)`
+.. |const| replace:: :abbr:`const (This method has no side effects. It doesn't modify any of the instance's member variables.)`
+.. |vararg| replace:: :abbr:`vararg (This method accepts any number of arguments after the ones described here.)`
+.. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)`
+.. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)`
+.. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)`

+ 11 - 5
classes/class_audioeffecteq.rst

@@ -9,7 +9,7 @@
 AudioEffectEQ
 AudioEffectEQ
 =============
 =============
 
 
-**Inherits:** :ref:`AudioEffect<class_AudioEffect>` **<** :ref:`Resource<class_Resource>` **<** :ref:`Reference<class_Reference>` **<** :ref:`Object<class_Object>`
+**Inherits:** :ref:`AudioEffect<class_AudioEffect>` **<** :ref:`Resource<class_Resource>` **<** :ref:`RefCounted<class_RefCounted>` **<** :ref:`Object<class_Object>`
 
 
 **Inherited By:** :ref:`AudioEffectEQ10<class_AudioEffectEQ10>`, :ref:`AudioEffectEQ21<class_AudioEffectEQ21>`, :ref:`AudioEffectEQ6<class_AudioEffectEQ6>`
 **Inherited By:** :ref:`AudioEffectEQ10<class_AudioEffectEQ10>`, :ref:`AudioEffectEQ21<class_AudioEffectEQ21>`, :ref:`AudioEffectEQ6<class_AudioEffectEQ6>`
 
 
@@ -26,9 +26,9 @@ Methods
 -------
 -------
 
 
 +---------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------+
 +---------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`int<class_int>`     | :ref:`get_band_count<class_AudioEffectEQ_method_get_band_count>` **(** **)** const                                                                   |
+| :ref:`int<class_int>`     | :ref:`get_band_count<class_AudioEffectEQ_method_get_band_count>` **(** **)** |const|                                                                 |
 +---------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------+
 +---------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`float<class_float>` | :ref:`get_band_gain_db<class_AudioEffectEQ_method_get_band_gain_db>` **(** :ref:`int<class_int>` band_idx **)** const                                |
+| :ref:`float<class_float>` | :ref:`get_band_gain_db<class_AudioEffectEQ_method_get_band_gain_db>` **(** :ref:`int<class_int>` band_idx **)** |const|                              |
 +---------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------+
 +---------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------+
 | void                      | :ref:`set_band_gain_db<class_AudioEffectEQ_method_set_band_gain_db>` **(** :ref:`int<class_int>` band_idx, :ref:`float<class_float>` volume_db **)** |
 | void                      | :ref:`set_band_gain_db<class_AudioEffectEQ_method_set_band_gain_db>` **(** :ref:`int<class_int>` band_idx, :ref:`float<class_float>` volume_db **)** |
 +---------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------+
 +---------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------+
@@ -38,7 +38,7 @@ Method Descriptions
 
 
 .. _class_AudioEffectEQ_method_get_band_count:
 .. _class_AudioEffectEQ_method_get_band_count:
 
 
-- :ref:`int<class_int>` **get_band_count** **(** **)** const
+- :ref:`int<class_int>` **get_band_count** **(** **)** |const|
 
 
 Returns the number of bands of the equalizer.
 Returns the number of bands of the equalizer.
 
 
@@ -46,7 +46,7 @@ Returns the number of bands of the equalizer.
 
 
 .. _class_AudioEffectEQ_method_get_band_gain_db:
 .. _class_AudioEffectEQ_method_get_band_gain_db:
 
 
-- :ref:`float<class_float>` **get_band_gain_db** **(** :ref:`int<class_int>` band_idx **)** const
+- :ref:`float<class_float>` **get_band_gain_db** **(** :ref:`int<class_int>` band_idx **)** |const|
 
 
 Returns the band's gain at the specified index, in dB.
 Returns the band's gain at the specified index, in dB.
 
 
@@ -58,3 +58,9 @@ Returns the band's gain at the specified index, in dB.
 
 
 Sets band's gain at the specified index, in dB.
 Sets band's gain at the specified index, in dB.
 
 
+.. |virtual| replace:: :abbr:`virtual (This method should typically be overridden by the user to have any effect.)`
+.. |const| replace:: :abbr:`const (This method has no side effects. It doesn't modify any of the instance's member variables.)`
+.. |vararg| replace:: :abbr:`vararg (This method accepts any number of arguments after the ones described here.)`
+.. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)`
+.. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)`
+.. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)`

+ 7 - 1
classes/class_audioeffecteq10.rst

@@ -9,7 +9,7 @@
 AudioEffectEQ10
 AudioEffectEQ10
 ===============
 ===============
 
 
-**Inherits:** :ref:`AudioEffectEQ<class_AudioEffectEQ>` **<** :ref:`AudioEffect<class_AudioEffect>` **<** :ref:`Resource<class_Resource>` **<** :ref:`Reference<class_Reference>` **<** :ref:`Object<class_Object>`
+**Inherits:** :ref:`AudioEffectEQ<class_AudioEffectEQ>` **<** :ref:`AudioEffect<class_AudioEffect>` **<** :ref:`Resource<class_Resource>` **<** :ref:`RefCounted<class_RefCounted>` **<** :ref:`Object<class_Object>`
 
 
 Adds a 10-band equalizer audio effect to an Audio bus. Gives you control over frequencies from 31 Hz to 16000 Hz.
 Adds a 10-band equalizer audio effect to an Audio bus. Gives you control over frequencies from 31 Hz to 16000 Hz.
 
 
@@ -42,3 +42,9 @@ Band 10: 16000 Hz
 
 
 See also :ref:`AudioEffectEQ<class_AudioEffectEQ>`, :ref:`AudioEffectEQ6<class_AudioEffectEQ6>`, :ref:`AudioEffectEQ21<class_AudioEffectEQ21>`.
 See also :ref:`AudioEffectEQ<class_AudioEffectEQ>`, :ref:`AudioEffectEQ6<class_AudioEffectEQ6>`, :ref:`AudioEffectEQ21<class_AudioEffectEQ21>`.
 
 
+.. |virtual| replace:: :abbr:`virtual (This method should typically be overridden by the user to have any effect.)`
+.. |const| replace:: :abbr:`const (This method has no side effects. It doesn't modify any of the instance's member variables.)`
+.. |vararg| replace:: :abbr:`vararg (This method accepts any number of arguments after the ones described here.)`
+.. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)`
+.. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)`
+.. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)`

+ 7 - 1
classes/class_audioeffecteq21.rst

@@ -9,7 +9,7 @@
 AudioEffectEQ21
 AudioEffectEQ21
 ===============
 ===============
 
 
-**Inherits:** :ref:`AudioEffectEQ<class_AudioEffectEQ>` **<** :ref:`AudioEffect<class_AudioEffect>` **<** :ref:`Resource<class_Resource>` **<** :ref:`Reference<class_Reference>` **<** :ref:`Object<class_Object>`
+**Inherits:** :ref:`AudioEffectEQ<class_AudioEffectEQ>` **<** :ref:`AudioEffect<class_AudioEffect>` **<** :ref:`Resource<class_Resource>` **<** :ref:`RefCounted<class_RefCounted>` **<** :ref:`Object<class_Object>`
 
 
 Adds a 21-band equalizer audio effect to an Audio bus. Gives you control over frequencies from 22 Hz to 22000 Hz.
 Adds a 21-band equalizer audio effect to an Audio bus. Gives you control over frequencies from 22 Hz to 22000 Hz.
 
 
@@ -64,3 +64,9 @@ Band 21: 22000 Hz
 
 
 See also :ref:`AudioEffectEQ<class_AudioEffectEQ>`, :ref:`AudioEffectEQ6<class_AudioEffectEQ6>`, :ref:`AudioEffectEQ10<class_AudioEffectEQ10>`.
 See also :ref:`AudioEffectEQ<class_AudioEffectEQ>`, :ref:`AudioEffectEQ6<class_AudioEffectEQ6>`, :ref:`AudioEffectEQ10<class_AudioEffectEQ10>`.
 
 
+.. |virtual| replace:: :abbr:`virtual (This method should typically be overridden by the user to have any effect.)`
+.. |const| replace:: :abbr:`const (This method has no side effects. It doesn't modify any of the instance's member variables.)`
+.. |vararg| replace:: :abbr:`vararg (This method accepts any number of arguments after the ones described here.)`
+.. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)`
+.. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)`
+.. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)`

+ 7 - 1
classes/class_audioeffecteq6.rst

@@ -9,7 +9,7 @@
 AudioEffectEQ6
 AudioEffectEQ6
 ==============
 ==============
 
 
-**Inherits:** :ref:`AudioEffectEQ<class_AudioEffectEQ>` **<** :ref:`AudioEffect<class_AudioEffect>` **<** :ref:`Resource<class_Resource>` **<** :ref:`Reference<class_Reference>` **<** :ref:`Object<class_Object>`
+**Inherits:** :ref:`AudioEffectEQ<class_AudioEffectEQ>` **<** :ref:`AudioEffect<class_AudioEffect>` **<** :ref:`Resource<class_Resource>` **<** :ref:`RefCounted<class_RefCounted>` **<** :ref:`Object<class_Object>`
 
 
 Adds a 6-band equalizer audio effect to an Audio bus. Gives you control over frequencies from 32 Hz to 10000 Hz.
 Adds a 6-band equalizer audio effect to an Audio bus. Gives you control over frequencies from 32 Hz to 10000 Hz.
 
 
@@ -34,3 +34,9 @@ Band 6: 10000 Hz
 
 
 See also :ref:`AudioEffectEQ<class_AudioEffectEQ>`, :ref:`AudioEffectEQ10<class_AudioEffectEQ10>`, :ref:`AudioEffectEQ21<class_AudioEffectEQ21>`.
 See also :ref:`AudioEffectEQ<class_AudioEffectEQ>`, :ref:`AudioEffectEQ10<class_AudioEffectEQ10>`, :ref:`AudioEffectEQ21<class_AudioEffectEQ21>`.
 
 
+.. |virtual| replace:: :abbr:`virtual (This method should typically be overridden by the user to have any effect.)`
+.. |const| replace:: :abbr:`const (This method has no side effects. It doesn't modify any of the instance's member variables.)`
+.. |vararg| replace:: :abbr:`vararg (This method accepts any number of arguments after the ones described here.)`
+.. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)`
+.. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)`
+.. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)`

+ 13 - 2
classes/class_audioeffectfilter.rst

@@ -9,7 +9,7 @@
 AudioEffectFilter
 AudioEffectFilter
 =================
 =================
 
 
-**Inherits:** :ref:`AudioEffect<class_AudioEffect>` **<** :ref:`Resource<class_Resource>` **<** :ref:`Reference<class_Reference>` **<** :ref:`Object<class_Object>`
+**Inherits:** :ref:`AudioEffect<class_AudioEffect>` **<** :ref:`Resource<class_Resource>` **<** :ref:`RefCounted<class_RefCounted>` **<** :ref:`Object<class_Object>`
 
 
 **Inherited By:** :ref:`AudioEffectBandLimitFilter<class_AudioEffectBandLimitFilter>`, :ref:`AudioEffectBandPassFilter<class_AudioEffectBandPassFilter>`, :ref:`AudioEffectHighPassFilter<class_AudioEffectHighPassFilter>`, :ref:`AudioEffectHighShelfFilter<class_AudioEffectHighShelfFilter>`, :ref:`AudioEffectLowPassFilter<class_AudioEffectLowPassFilter>`, :ref:`AudioEffectLowShelfFilter<class_AudioEffectLowShelfFilter>`, :ref:`AudioEffectNotchFilter<class_AudioEffectNotchFilter>`
 **Inherited By:** :ref:`AudioEffectBandLimitFilter<class_AudioEffectBandLimitFilter>`, :ref:`AudioEffectBandPassFilter<class_AudioEffectBandPassFilter>`, :ref:`AudioEffectHighPassFilter<class_AudioEffectHighPassFilter>`, :ref:`AudioEffectHighShelfFilter<class_AudioEffectHighShelfFilter>`, :ref:`AudioEffectLowPassFilter<class_AudioEffectLowPassFilter>`, :ref:`AudioEffectLowShelfFilter<class_AudioEffectLowShelfFilter>`, :ref:`AudioEffectNotchFilter<class_AudioEffectNotchFilter>`
 
 
@@ -20,6 +20,11 @@ Description
 
 
 Allows frequencies other than the :ref:`cutoff_hz<class_AudioEffectFilter_property_cutoff_hz>` to pass.
 Allows frequencies other than the :ref:`cutoff_hz<class_AudioEffectFilter_property_cutoff_hz>` to pass.
 
 
+Tutorials
+---------
+
+- :doc:`../tutorials/audio/audio_buses`
+
 Properties
 Properties
 ----------
 ----------
 
 
@@ -117,5 +122,11 @@ Gain amount of the frequencies after the filter.
 | *Getter*  | get_resonance()      |
 | *Getter*  | get_resonance()      |
 +-----------+----------------------+
 +-----------+----------------------+
 
 
-Amount of boost in the overtones near the cutoff frequency.
+Amount of boost in the frequency range near the cutoff frequency.
 
 
+.. |virtual| replace:: :abbr:`virtual (This method should typically be overridden by the user to have any effect.)`
+.. |const| replace:: :abbr:`const (This method has no side effects. It doesn't modify any of the instance's member variables.)`
+.. |vararg| replace:: :abbr:`vararg (This method accepts any number of arguments after the ones described here.)`
+.. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)`
+.. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)`
+.. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)`

+ 7 - 1
classes/class_audioeffecthighpassfilter.rst

@@ -9,7 +9,7 @@
 AudioEffectHighPassFilter
 AudioEffectHighPassFilter
 =========================
 =========================
 
 
-**Inherits:** :ref:`AudioEffectFilter<class_AudioEffectFilter>` **<** :ref:`AudioEffect<class_AudioEffect>` **<** :ref:`Resource<class_Resource>` **<** :ref:`Reference<class_Reference>` **<** :ref:`Object<class_Object>`
+**Inherits:** :ref:`AudioEffectFilter<class_AudioEffectFilter>` **<** :ref:`AudioEffect<class_AudioEffect>` **<** :ref:`Resource<class_Resource>` **<** :ref:`RefCounted<class_RefCounted>` **<** :ref:`Object<class_Object>`
 
 
 Adds a high-pass filter to the Audio Bus.
 Adds a high-pass filter to the Audio Bus.
 
 
@@ -18,3 +18,9 @@ Description
 
 
 Cuts frequencies lower than the :ref:`AudioEffectFilter.cutoff_hz<class_AudioEffectFilter_property_cutoff_hz>` and allows higher frequencies to pass.
 Cuts frequencies lower than the :ref:`AudioEffectFilter.cutoff_hz<class_AudioEffectFilter_property_cutoff_hz>` and allows higher frequencies to pass.
 
 
+.. |virtual| replace:: :abbr:`virtual (This method should typically be overridden by the user to have any effect.)`
+.. |const| replace:: :abbr:`const (This method has no side effects. It doesn't modify any of the instance's member variables.)`
+.. |vararg| replace:: :abbr:`vararg (This method accepts any number of arguments after the ones described here.)`
+.. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)`
+.. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)`
+.. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)`

+ 12 - 1
classes/class_audioeffecthighshelffilter.rst

@@ -9,7 +9,18 @@
 AudioEffectHighShelfFilter
 AudioEffectHighShelfFilter
 ==========================
 ==========================
 
 
-**Inherits:** :ref:`AudioEffectFilter<class_AudioEffectFilter>` **<** :ref:`AudioEffect<class_AudioEffect>` **<** :ref:`Resource<class_Resource>` **<** :ref:`Reference<class_Reference>` **<** :ref:`Object<class_Object>`
+**Inherits:** :ref:`AudioEffectFilter<class_AudioEffectFilter>` **<** :ref:`AudioEffect<class_AudioEffect>` **<** :ref:`Resource<class_Resource>` **<** :ref:`RefCounted<class_RefCounted>` **<** :ref:`Object<class_Object>`
 
 
+Reduces all frequencies above the :ref:`AudioEffectFilter.cutoff_hz<class_AudioEffectFilter_property_cutoff_hz>`.
 
 
+Tutorials
+---------
 
 
+- :doc:`../tutorials/audio/audio_buses`
+
+.. |virtual| replace:: :abbr:`virtual (This method should typically be overridden by the user to have any effect.)`
+.. |const| replace:: :abbr:`const (This method has no side effects. It doesn't modify any of the instance's member variables.)`
+.. |vararg| replace:: :abbr:`vararg (This method accepts any number of arguments after the ones described here.)`
+.. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)`
+.. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)`
+.. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)`

+ 7 - 1
classes/class_audioeffectinstance.rst

@@ -9,9 +9,15 @@
 AudioEffectInstance
 AudioEffectInstance
 ===================
 ===================
 
 
-**Inherits:** :ref:`Reference<class_Reference>` **<** :ref:`Object<class_Object>`
+**Inherits:** :ref:`RefCounted<class_RefCounted>` **<** :ref:`Object<class_Object>`
 
 
 **Inherited By:** :ref:`AudioEffectSpectrumAnalyzerInstance<class_AudioEffectSpectrumAnalyzerInstance>`
 **Inherited By:** :ref:`AudioEffectSpectrumAnalyzerInstance<class_AudioEffectSpectrumAnalyzerInstance>`
 
 
 
 
 
 
+.. |virtual| replace:: :abbr:`virtual (This method should typically be overridden by the user to have any effect.)`
+.. |const| replace:: :abbr:`const (This method has no side effects. It doesn't modify any of the instance's member variables.)`
+.. |vararg| replace:: :abbr:`vararg (This method accepts any number of arguments after the ones described here.)`
+.. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)`
+.. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)`
+.. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)`

+ 7 - 1
classes/class_audioeffectlimiter.rst

@@ -9,7 +9,7 @@
 AudioEffectLimiter
 AudioEffectLimiter
 ==================
 ==================
 
 
-**Inherits:** :ref:`AudioEffect<class_AudioEffect>` **<** :ref:`Resource<class_Resource>` **<** :ref:`Reference<class_Reference>` **<** :ref:`Object<class_Object>`
+**Inherits:** :ref:`AudioEffect<class_AudioEffect>` **<** :ref:`Resource<class_Resource>` **<** :ref:`RefCounted<class_RefCounted>` **<** :ref:`Object<class_Object>`
 
 
 Adds a soft-clip limiter audio effect to an Audio bus.
 Adds a soft-clip limiter audio effect to an Audio bus.
 
 
@@ -96,3 +96,9 @@ Applies a gain to the limited waves, in decibels. Value can range from 0 to 6.
 
 
 Threshold from which the limiter begins to be active, in decibels. Value can range from -30 to 0.
 Threshold from which the limiter begins to be active, in decibels. Value can range from -30 to 0.
 
 
+.. |virtual| replace:: :abbr:`virtual (This method should typically be overridden by the user to have any effect.)`
+.. |const| replace:: :abbr:`const (This method has no side effects. It doesn't modify any of the instance's member variables.)`
+.. |vararg| replace:: :abbr:`vararg (This method accepts any number of arguments after the ones described here.)`
+.. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)`
+.. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)`
+.. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)`

+ 7 - 1
classes/class_audioeffectlowpassfilter.rst

@@ -9,7 +9,7 @@
 AudioEffectLowPassFilter
 AudioEffectLowPassFilter
 ========================
 ========================
 
 
-**Inherits:** :ref:`AudioEffectFilter<class_AudioEffectFilter>` **<** :ref:`AudioEffect<class_AudioEffect>` **<** :ref:`Resource<class_Resource>` **<** :ref:`Reference<class_Reference>` **<** :ref:`Object<class_Object>`
+**Inherits:** :ref:`AudioEffectFilter<class_AudioEffectFilter>` **<** :ref:`AudioEffect<class_AudioEffect>` **<** :ref:`Resource<class_Resource>` **<** :ref:`RefCounted<class_RefCounted>` **<** :ref:`Object<class_Object>`
 
 
 Adds a low-pass filter to the Audio bus.
 Adds a low-pass filter to the Audio bus.
 
 
@@ -18,3 +18,9 @@ Description
 
 
 Cuts frequencies higher than the :ref:`AudioEffectFilter.cutoff_hz<class_AudioEffectFilter_property_cutoff_hz>` and allows lower frequencies to pass.
 Cuts frequencies higher than the :ref:`AudioEffectFilter.cutoff_hz<class_AudioEffectFilter_property_cutoff_hz>` and allows lower frequencies to pass.
 
 
+.. |virtual| replace:: :abbr:`virtual (This method should typically be overridden by the user to have any effect.)`
+.. |const| replace:: :abbr:`const (This method has no side effects. It doesn't modify any of the instance's member variables.)`
+.. |vararg| replace:: :abbr:`vararg (This method accepts any number of arguments after the ones described here.)`
+.. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)`
+.. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)`
+.. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)`

+ 12 - 1
classes/class_audioeffectlowshelffilter.rst

@@ -9,7 +9,18 @@
 AudioEffectLowShelfFilter
 AudioEffectLowShelfFilter
 =========================
 =========================
 
 
-**Inherits:** :ref:`AudioEffectFilter<class_AudioEffectFilter>` **<** :ref:`AudioEffect<class_AudioEffect>` **<** :ref:`Resource<class_Resource>` **<** :ref:`Reference<class_Reference>` **<** :ref:`Object<class_Object>`
+**Inherits:** :ref:`AudioEffectFilter<class_AudioEffectFilter>` **<** :ref:`AudioEffect<class_AudioEffect>` **<** :ref:`Resource<class_Resource>` **<** :ref:`RefCounted<class_RefCounted>` **<** :ref:`Object<class_Object>`
 
 
+Reduces all frequencies below the :ref:`AudioEffectFilter.cutoff_hz<class_AudioEffectFilter_property_cutoff_hz>`.
 
 
+Tutorials
+---------
 
 
+- :doc:`../tutorials/audio/audio_buses`
+
+.. |virtual| replace:: :abbr:`virtual (This method should typically be overridden by the user to have any effect.)`
+.. |const| replace:: :abbr:`const (This method has no side effects. It doesn't modify any of the instance's member variables.)`
+.. |vararg| replace:: :abbr:`vararg (This method accepts any number of arguments after the ones described here.)`
+.. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)`
+.. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)`
+.. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)`

+ 7 - 1
classes/class_audioeffectnotchfilter.rst

@@ -9,7 +9,7 @@
 AudioEffectNotchFilter
 AudioEffectNotchFilter
 ======================
 ======================
 
 
-**Inherits:** :ref:`AudioEffectFilter<class_AudioEffectFilter>` **<** :ref:`AudioEffect<class_AudioEffect>` **<** :ref:`Resource<class_Resource>` **<** :ref:`Reference<class_Reference>` **<** :ref:`Object<class_Object>`
+**Inherits:** :ref:`AudioEffectFilter<class_AudioEffectFilter>` **<** :ref:`AudioEffect<class_AudioEffect>` **<** :ref:`Resource<class_Resource>` **<** :ref:`RefCounted<class_RefCounted>` **<** :ref:`Object<class_Object>`
 
 
 Adds a notch filter to the Audio bus.
 Adds a notch filter to the Audio bus.
 
 
@@ -18,3 +18,9 @@ Description
 
 
 Attenuates frequencies in a narrow band around the :ref:`AudioEffectFilter.cutoff_hz<class_AudioEffectFilter_property_cutoff_hz>` and cuts frequencies outside of this range.
 Attenuates frequencies in a narrow band around the :ref:`AudioEffectFilter.cutoff_hz<class_AudioEffectFilter_property_cutoff_hz>` and cuts frequencies outside of this range.
 
 
+.. |virtual| replace:: :abbr:`virtual (This method should typically be overridden by the user to have any effect.)`
+.. |const| replace:: :abbr:`const (This method has no side effects. It doesn't modify any of the instance's member variables.)`
+.. |vararg| replace:: :abbr:`vararg (This method accepts any number of arguments after the ones described here.)`
+.. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)`
+.. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)`
+.. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)`

+ 7 - 1
classes/class_audioeffectpanner.rst

@@ -9,7 +9,7 @@
 AudioEffectPanner
 AudioEffectPanner
 =================
 =================
 
 
-**Inherits:** :ref:`AudioEffect<class_AudioEffect>` **<** :ref:`Resource<class_Resource>` **<** :ref:`Reference<class_Reference>` **<** :ref:`Object<class_Object>`
+**Inherits:** :ref:`AudioEffect<class_AudioEffect>` **<** :ref:`Resource<class_Resource>` **<** :ref:`RefCounted<class_RefCounted>` **<** :ref:`Object<class_Object>`
 
 
 Adds a panner audio effect to an Audio bus. Pans sound left or right.
 Adds a panner audio effect to an Audio bus. Pans sound left or right.
 
 
@@ -42,3 +42,9 @@ Property Descriptions
 
 
 Pan position. Value can range from -1 (fully left) to 1 (fully right).
 Pan position. Value can range from -1 (fully left) to 1 (fully right).
 
 
+.. |virtual| replace:: :abbr:`virtual (This method should typically be overridden by the user to have any effect.)`
+.. |const| replace:: :abbr:`const (This method has no side effects. It doesn't modify any of the instance's member variables.)`
+.. |vararg| replace:: :abbr:`vararg (This method accepts any number of arguments after the ones described here.)`
+.. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)`
+.. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)`
+.. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)`

+ 7 - 1
classes/class_audioeffectphaser.rst

@@ -9,7 +9,7 @@
 AudioEffectPhaser
 AudioEffectPhaser
 =================
 =================
 
 
-**Inherits:** :ref:`AudioEffect<class_AudioEffect>` **<** :ref:`Resource<class_Resource>` **<** :ref:`Reference<class_Reference>` **<** :ref:`Object<class_Object>`
+**Inherits:** :ref:`AudioEffect<class_AudioEffect>` **<** :ref:`Resource<class_Resource>` **<** :ref:`RefCounted<class_RefCounted>` **<** :ref:`Object<class_Object>`
 
 
 Adds a phaser audio effect to an Audio bus.
 Adds a phaser audio effect to an Audio bus.
 
 
@@ -116,3 +116,9 @@ Determines the minimum frequency affected by the LFO modulations, in Hz. Value c
 
 
 Adjusts the rate in Hz at which the effect sweeps up and down across the frequency range.
 Adjusts the rate in Hz at which the effect sweeps up and down across the frequency range.
 
 
+.. |virtual| replace:: :abbr:`virtual (This method should typically be overridden by the user to have any effect.)`
+.. |const| replace:: :abbr:`const (This method has no side effects. It doesn't modify any of the instance's member variables.)`
+.. |vararg| replace:: :abbr:`vararg (This method accepts any number of arguments after the ones described here.)`
+.. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)`
+.. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)`
+.. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)`

+ 28 - 18
classes/class_audioeffectpitchshift.rst

@@ -9,7 +9,7 @@
 AudioEffectPitchShift
 AudioEffectPitchShift
 =====================
 =====================
 
 
-**Inherits:** :ref:`AudioEffect<class_AudioEffect>` **<** :ref:`Resource<class_Resource>` **<** :ref:`Reference<class_Reference>` **<** :ref:`Object<class_Object>`
+**Inherits:** :ref:`AudioEffect<class_AudioEffect>` **<** :ref:`Resource<class_Resource>` **<** :ref:`RefCounted<class_RefCounted>` **<** :ref:`Object<class_Object>`
 
 
 Adds a pitch-shifting audio effect to an Audio bus.
 Adds a pitch-shifting audio effect to an Audio bus.
 
 
@@ -23,18 +23,18 @@ Allows modulation of pitch independently of tempo. All frequencies can be increa
 Properties
 Properties
 ----------
 ----------
 
 
-+------------------------------------------------------+------------------------------------------------------------------------+---------+
-| :ref:`FFT_Size<enum_AudioEffectPitchShift_FFT_Size>` | :ref:`fft_size<class_AudioEffectPitchShift_property_fft_size>`         | ``3``   |
-+------------------------------------------------------+------------------------------------------------------------------------+---------+
-| :ref:`int<class_int>`                                | :ref:`oversampling<class_AudioEffectPitchShift_property_oversampling>` | ``4``   |
-+------------------------------------------------------+------------------------------------------------------------------------+---------+
-| :ref:`float<class_float>`                            | :ref:`pitch_scale<class_AudioEffectPitchShift_property_pitch_scale>`   | ``1.0`` |
-+------------------------------------------------------+------------------------------------------------------------------------+---------+
++----------------------------------------------------+------------------------------------------------------------------------+---------+
+| :ref:`FFTSize<enum_AudioEffectPitchShift_FFTSize>` | :ref:`fft_size<class_AudioEffectPitchShift_property_fft_size>`         | ``3``   |
++----------------------------------------------------+------------------------------------------------------------------------+---------+
+| :ref:`int<class_int>`                              | :ref:`oversampling<class_AudioEffectPitchShift_property_oversampling>` | ``4``   |
++----------------------------------------------------+------------------------------------------------------------------------+---------+
+| :ref:`float<class_float>`                          | :ref:`pitch_scale<class_AudioEffectPitchShift_property_pitch_scale>`   | ``1.0`` |
++----------------------------------------------------+------------------------------------------------------------------------+---------+
 
 
 Enumerations
 Enumerations
 ------------
 ------------
 
 
-.. _enum_AudioEffectPitchShift_FFT_Size:
+.. _enum_AudioEffectPitchShift_FFTSize:
 
 
 .. _class_AudioEffectPitchShift_constant_FFT_SIZE_256:
 .. _class_AudioEffectPitchShift_constant_FFT_SIZE_256:
 
 
@@ -48,26 +48,26 @@ Enumerations
 
 
 .. _class_AudioEffectPitchShift_constant_FFT_SIZE_MAX:
 .. _class_AudioEffectPitchShift_constant_FFT_SIZE_MAX:
 
 
-enum **FFT_Size**:
+enum **FFTSize**:
 
 
-- **FFT_SIZE_256** = **0**
+- **FFT_SIZE_256** = **0** --- Use a buffer of 256 samples for the Fast Fourier transform. Lowest latency, but least stable over time.
 
 
-- **FFT_SIZE_512** = **1**
+- **FFT_SIZE_512** = **1** --- Use a buffer of 512 samples for the Fast Fourier transform. Low latency, but less stable over time.
 
 
-- **FFT_SIZE_1024** = **2**
+- **FFT_SIZE_1024** = **2** --- Use a buffer of 1024 samples for the Fast Fourier transform. This is a compromise between latency and stability over time.
 
 
-- **FFT_SIZE_2048** = **3**
+- **FFT_SIZE_2048** = **3** --- Use a buffer of 2048 samples for the Fast Fourier transform. High latency, but stable over time.
 
 
-- **FFT_SIZE_4096** = **4**
+- **FFT_SIZE_4096** = **4** --- Use a buffer of 4096 samples for the Fast Fourier transform. Highest latency, but most stable over time.
 
 
-- **FFT_SIZE_MAX** = **5** --- Represents the size of the :ref:`FFT_Size<enum_AudioEffectPitchShift_FFT_Size>` enum.
+- **FFT_SIZE_MAX** = **5** --- Represents the size of the :ref:`FFTSize<enum_AudioEffectPitchShift_FFTSize>` enum.
 
 
 Property Descriptions
 Property Descriptions
 ---------------------
 ---------------------
 
 
 .. _class_AudioEffectPitchShift_property_fft_size:
 .. _class_AudioEffectPitchShift_property_fft_size:
 
 
-- :ref:`FFT_Size<enum_AudioEffectPitchShift_FFT_Size>` **fft_size**
+- :ref:`FFTSize<enum_AudioEffectPitchShift_FFTSize>` **fft_size**
 
 
 +-----------+---------------------+
 +-----------+---------------------+
 | *Default* | ``3``               |
 | *Default* | ``3``               |
@@ -77,6 +77,8 @@ Property Descriptions
 | *Getter*  | get_fft_size()      |
 | *Getter*  | get_fft_size()      |
 +-----------+---------------------+
 +-----------+---------------------+
 
 
+The size of the `Fast Fourier transform <https://en.wikipedia.org/wiki/Fast_Fourier_transform>`__ buffer. Higher values smooth out the effect over time, but have greater latency. The effects of this higher latency are especially noticeable on sounds that have sudden amplitude changes.
+
 ----
 ----
 
 
 .. _class_AudioEffectPitchShift_property_oversampling:
 .. _class_AudioEffectPitchShift_property_oversampling:
@@ -91,6 +93,8 @@ Property Descriptions
 | *Getter*  | get_oversampling()      |
 | *Getter*  | get_oversampling()      |
 +-----------+-------------------------+
 +-----------+-------------------------+
 
 
+The oversampling factor to use. Higher values result in better quality, but are more demanding on the CPU and may cause audio cracking if the CPU can't keep up.
+
 ----
 ----
 
 
 .. _class_AudioEffectPitchShift_property_pitch_scale:
 .. _class_AudioEffectPitchShift_property_pitch_scale:
@@ -105,5 +109,11 @@ Property Descriptions
 | *Getter*  | get_pitch_scale()      |
 | *Getter*  | get_pitch_scale()      |
 +-----------+------------------------+
 +-----------+------------------------+
 
 
-Pitch value. Can range from 0 (-1 octave) to 16 (+16 octaves).
+The pitch scale to use. ``1.0`` is the default pitch and plays sounds unaltered. :ref:`pitch_scale<class_AudioEffectPitchShift_property_pitch_scale>` can range from ``0.0`` (infinitely low pitch, inaudible) to ``16`` (16 times higher than the initial pitch).
 
 
+.. |virtual| replace:: :abbr:`virtual (This method should typically be overridden by the user to have any effect.)`
+.. |const| replace:: :abbr:`const (This method has no side effects. It doesn't modify any of the instance's member variables.)`
+.. |vararg| replace:: :abbr:`vararg (This method accepts any number of arguments after the ones described here.)`
+.. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)`
+.. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)`
+.. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)`

+ 18 - 5
classes/class_audioeffectrecord.rst

@@ -9,15 +9,22 @@
 AudioEffectRecord
 AudioEffectRecord
 =================
 =================
 
 
-**Inherits:** :ref:`AudioEffect<class_AudioEffect>` **<** :ref:`Resource<class_Resource>` **<** :ref:`Reference<class_Reference>` **<** :ref:`Object<class_Object>`
+**Inherits:** :ref:`AudioEffect<class_AudioEffect>` **<** :ref:`Resource<class_Resource>` **<** :ref:`RefCounted<class_RefCounted>` **<** :ref:`Object<class_Object>`
 
 
 Audio effect used for recording sound from a microphone.
 Audio effect used for recording sound from a microphone.
 
 
+Description
+-----------
+
+Allows the user to record sound from a microphone. It sets and gets the format in which the audio file will be recorded (8-bit, 16-bit, or compressed). It checks whether or not the recording is active, and if it is, records the sound. It then returns the recorded sample.
+
 Tutorials
 Tutorials
 ---------
 ---------
 
 
 - :doc:`../tutorials/audio/recording_with_microphone`
 - :doc:`../tutorials/audio/recording_with_microphone`
 
 
+- `Audio Mic Record Demo <https://godotengine.org/asset-library/asset/527>`__
+
 Properties
 Properties
 ----------
 ----------
 
 
@@ -29,9 +36,9 @@ Methods
 -------
 -------
 
 
 +---------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------+
 +---------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------+
-| :ref:`AudioStreamSample<class_AudioStreamSample>` | :ref:`get_recording<class_AudioEffectRecord_method_get_recording>` **(** **)** const                                        |
+| :ref:`AudioStreamSample<class_AudioStreamSample>` | :ref:`get_recording<class_AudioEffectRecord_method_get_recording>` **(** **)** |const|                                      |
 +---------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------+
 +---------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------+
-| :ref:`bool<class_bool>`                           | :ref:`is_recording_active<class_AudioEffectRecord_method_is_recording_active>` **(** **)** const                            |
+| :ref:`bool<class_bool>`                           | :ref:`is_recording_active<class_AudioEffectRecord_method_is_recording_active>` **(** **)** |const|                          |
 +---------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------+
 +---------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------+
 | void                                              | :ref:`set_recording_active<class_AudioEffectRecord_method_set_recording_active>` **(** :ref:`bool<class_bool>` record **)** |
 | void                                              | :ref:`set_recording_active<class_AudioEffectRecord_method_set_recording_active>` **(** :ref:`bool<class_bool>` record **)** |
 +---------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------+
 +---------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------+
@@ -58,7 +65,7 @@ Method Descriptions
 
 
 .. _class_AudioEffectRecord_method_get_recording:
 .. _class_AudioEffectRecord_method_get_recording:
 
 
-- :ref:`AudioStreamSample<class_AudioStreamSample>` **get_recording** **(** **)** const
+- :ref:`AudioStreamSample<class_AudioStreamSample>` **get_recording** **(** **)** |const|
 
 
 Returns the recorded sample.
 Returns the recorded sample.
 
 
@@ -66,7 +73,7 @@ Returns the recorded sample.
 
 
 .. _class_AudioEffectRecord_method_is_recording_active:
 .. _class_AudioEffectRecord_method_is_recording_active:
 
 
-- :ref:`bool<class_bool>` **is_recording_active** **(** **)** const
+- :ref:`bool<class_bool>` **is_recording_active** **(** **)** |const|
 
 
 Returns whether the recording is active or not.
 Returns whether the recording is active or not.
 
 
@@ -78,3 +85,9 @@ Returns whether the recording is active or not.
 
 
 If ``true``, the sound will be recorded. Note that restarting the recording will remove the previously recorded sample.
 If ``true``, the sound will be recorded. Note that restarting the recording will remove the previously recorded sample.
 
 
+.. |virtual| replace:: :abbr:`virtual (This method should typically be overridden by the user to have any effect.)`
+.. |const| replace:: :abbr:`const (This method has no side effects. It doesn't modify any of the instance's member variables.)`
+.. |vararg| replace:: :abbr:`vararg (This method accepts any number of arguments after the ones described here.)`
+.. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)`
+.. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)`
+.. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)`

+ 12 - 1
classes/class_audioeffectreverb.rst

@@ -9,7 +9,7 @@
 AudioEffectReverb
 AudioEffectReverb
 =================
 =================
 
 
-**Inherits:** :ref:`AudioEffect<class_AudioEffect>` **<** :ref:`Resource<class_Resource>` **<** :ref:`Reference<class_Reference>` **<** :ref:`Object<class_Object>`
+**Inherits:** :ref:`AudioEffect<class_AudioEffect>` **<** :ref:`Resource<class_Resource>` **<** :ref:`RefCounted<class_RefCounted>` **<** :ref:`Object<class_Object>`
 
 
 Adds a reverberation audio effect to an Audio bus.
 Adds a reverberation audio effect to an Audio bus.
 
 
@@ -20,6 +20,11 @@ Description
 
 
 Simulates rooms of different sizes. Its parameters can be adjusted to simulate the sound of a specific room.
 Simulates rooms of different sizes. Its parameters can be adjusted to simulate the sound of a specific room.
 
 
+Tutorials
+---------
+
+- `Third Person Shooter Demo <https://godotengine.org/asset-library/asset/678>`__
+
 Properties
 Properties
 ----------
 ----------
 
 
@@ -170,3 +175,9 @@ Widens or narrows the stereo image of the reverb tail. 1 means fully widens. Val
 
 
 Output percent of modified sound. At 0, only original sound is outputted. Value can range from 0 to 1.
 Output percent of modified sound. At 0, only original sound is outputted. Value can range from 0 to 1.
 
 
+.. |virtual| replace:: :abbr:`virtual (This method should typically be overridden by the user to have any effect.)`
+.. |const| replace:: :abbr:`const (This method has no side effects. It doesn't modify any of the instance's member variables.)`
+.. |vararg| replace:: :abbr:`vararg (This method accepts any number of arguments after the ones described here.)`
+.. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)`
+.. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)`
+.. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)`

+ 41 - 17
classes/class_audioeffectspectrumanalyzer.rst

@@ -9,25 +9,39 @@
 AudioEffectSpectrumAnalyzer
 AudioEffectSpectrumAnalyzer
 ===========================
 ===========================
 
 
-**Inherits:** :ref:`AudioEffect<class_AudioEffect>` **<** :ref:`Resource<class_Resource>` **<** :ref:`Reference<class_Reference>` **<** :ref:`Object<class_Object>`
+**Inherits:** :ref:`AudioEffect<class_AudioEffect>` **<** :ref:`Resource<class_Resource>` **<** :ref:`RefCounted<class_RefCounted>` **<** :ref:`Object<class_Object>`
 
 
+Audio effect that can be used for real-time audio visualizations.
 
 
+Description
+-----------
+
+This audio effect does not affect sound output, but can be used for real-time audio visualizations.
+
+See also :ref:`AudioStreamGenerator<class_AudioStreamGenerator>` for procedurally generating sounds.
+
+Tutorials
+---------
+
+- `https://godotengine.org/asset-library/asset/528 <Audio Spectrum Demo>`__
+
+- `https://godotengine.org/article/godot-32-will-get-new-audio-features <Godot 3.2 will get new audio features>`__
 
 
 Properties
 Properties
 ----------
 ----------
 
 
-+------------------------------------------------------------+--------------------------------------------------------------------------------+----------+
-| :ref:`float<class_float>`                                  | :ref:`buffer_length<class_AudioEffectSpectrumAnalyzer_property_buffer_length>` | ``2.0``  |
-+------------------------------------------------------------+--------------------------------------------------------------------------------+----------+
-| :ref:`FFT_Size<enum_AudioEffectSpectrumAnalyzer_FFT_Size>` | :ref:`fft_size<class_AudioEffectSpectrumAnalyzer_property_fft_size>`           | ``2``    |
-+------------------------------------------------------------+--------------------------------------------------------------------------------+----------+
-| :ref:`float<class_float>`                                  | :ref:`tap_back_pos<class_AudioEffectSpectrumAnalyzer_property_tap_back_pos>`   | ``0.01`` |
-+------------------------------------------------------------+--------------------------------------------------------------------------------+----------+
++----------------------------------------------------------+--------------------------------------------------------------------------------+----------+
+| :ref:`float<class_float>`                                | :ref:`buffer_length<class_AudioEffectSpectrumAnalyzer_property_buffer_length>` | ``2.0``  |
++----------------------------------------------------------+--------------------------------------------------------------------------------+----------+
+| :ref:`FFTSize<enum_AudioEffectSpectrumAnalyzer_FFTSize>` | :ref:`fft_size<class_AudioEffectSpectrumAnalyzer_property_fft_size>`           | ``2``    |
++----------------------------------------------------------+--------------------------------------------------------------------------------+----------+
+| :ref:`float<class_float>`                                | :ref:`tap_back_pos<class_AudioEffectSpectrumAnalyzer_property_tap_back_pos>`   | ``0.01`` |
++----------------------------------------------------------+--------------------------------------------------------------------------------+----------+
 
 
 Enumerations
 Enumerations
 ------------
 ------------
 
 
-.. _enum_AudioEffectSpectrumAnalyzer_FFT_Size:
+.. _enum_AudioEffectSpectrumAnalyzer_FFTSize:
 
 
 .. _class_AudioEffectSpectrumAnalyzer_constant_FFT_SIZE_256:
 .. _class_AudioEffectSpectrumAnalyzer_constant_FFT_SIZE_256:
 
 
@@ -41,19 +55,19 @@ Enumerations
 
 
 .. _class_AudioEffectSpectrumAnalyzer_constant_FFT_SIZE_MAX:
 .. _class_AudioEffectSpectrumAnalyzer_constant_FFT_SIZE_MAX:
 
 
-enum **FFT_Size**:
+enum **FFTSize**:
 
 
-- **FFT_SIZE_256** = **0**
+- **FFT_SIZE_256** = **0** --- Use a buffer of 256 samples for the Fast Fourier transform. Lowest latency, but least stable over time.
 
 
-- **FFT_SIZE_512** = **1**
+- **FFT_SIZE_512** = **1** --- Use a buffer of 512 samples for the Fast Fourier transform. Low latency, but less stable over time.
 
 
-- **FFT_SIZE_1024** = **2**
+- **FFT_SIZE_1024** = **2** --- Use a buffer of 1024 samples for the Fast Fourier transform. This is a compromise between latency and stability over time.
 
 
-- **FFT_SIZE_2048** = **3**
+- **FFT_SIZE_2048** = **3** --- Use a buffer of 2048 samples for the Fast Fourier transform. High latency, but stable over time.
 
 
-- **FFT_SIZE_4096** = **4**
+- **FFT_SIZE_4096** = **4** --- Use a buffer of 4096 samples for the Fast Fourier transform. Highest latency, but most stable over time.
 
 
-- **FFT_SIZE_MAX** = **5** --- Represents the size of the :ref:`FFT_Size<enum_AudioEffectSpectrumAnalyzer_FFT_Size>` enum.
+- **FFT_SIZE_MAX** = **5** --- Represents the size of the :ref:`FFTSize<enum_AudioEffectSpectrumAnalyzer_FFTSize>` enum.
 
 
 Property Descriptions
 Property Descriptions
 ---------------------
 ---------------------
@@ -70,11 +84,13 @@ Property Descriptions
 | *Getter*  | get_buffer_length()      |
 | *Getter*  | get_buffer_length()      |
 +-----------+--------------------------+
 +-----------+--------------------------+
 
 
+The length of the buffer to keep (in seconds). Higher values keep data around for longer, but require more memory.
+
 ----
 ----
 
 
 .. _class_AudioEffectSpectrumAnalyzer_property_fft_size:
 .. _class_AudioEffectSpectrumAnalyzer_property_fft_size:
 
 
-- :ref:`FFT_Size<enum_AudioEffectSpectrumAnalyzer_FFT_Size>` **fft_size**
+- :ref:`FFTSize<enum_AudioEffectSpectrumAnalyzer_FFTSize>` **fft_size**
 
 
 +-----------+---------------------+
 +-----------+---------------------+
 | *Default* | ``2``               |
 | *Default* | ``2``               |
@@ -84,6 +100,8 @@ Property Descriptions
 | *Getter*  | get_fft_size()      |
 | *Getter*  | get_fft_size()      |
 +-----------+---------------------+
 +-----------+---------------------+
 
 
+The size of the `Fast Fourier transform <https://en.wikipedia.org/wiki/Fast_Fourier_transform>`__ buffer. Higher values smooth out the spectrum analysis over time, but have greater latency. The effects of this higher latency are especially noticeable with sudden amplitude changes.
+
 ----
 ----
 
 
 .. _class_AudioEffectSpectrumAnalyzer_property_tap_back_pos:
 .. _class_AudioEffectSpectrumAnalyzer_property_tap_back_pos:
@@ -98,3 +116,9 @@ Property Descriptions
 | *Getter*  | get_tap_back_pos()      |
 | *Getter*  | get_tap_back_pos()      |
 +-----------+-------------------------+
 +-----------+-------------------------+
 
 
+.. |virtual| replace:: :abbr:`virtual (This method should typically be overridden by the user to have any effect.)`
+.. |const| replace:: :abbr:`const (This method has no side effects. It doesn't modify any of the instance's member variables.)`
+.. |vararg| replace:: :abbr:`vararg (This method accepts any number of arguments after the ones described here.)`
+.. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)`
+.. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)`
+.. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)`

+ 11 - 5
classes/class_audioeffectspectrumanalyzerinstance.rst

@@ -9,16 +9,16 @@
 AudioEffectSpectrumAnalyzerInstance
 AudioEffectSpectrumAnalyzerInstance
 ===================================
 ===================================
 
 
-**Inherits:** :ref:`AudioEffectInstance<class_AudioEffectInstance>` **<** :ref:`Reference<class_Reference>` **<** :ref:`Object<class_Object>`
+**Inherits:** :ref:`AudioEffectInstance<class_AudioEffectInstance>` **<** :ref:`RefCounted<class_RefCounted>` **<** :ref:`Object<class_Object>`
 
 
 
 
 
 
 Methods
 Methods
 -------
 -------
 
 
-+-------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`Vector2<class_Vector2>` | :ref:`get_magnitude_for_frequency_range<class_AudioEffectSpectrumAnalyzerInstance_method_get_magnitude_for_frequency_range>` **(** :ref:`float<class_float>` from_hz, :ref:`float<class_float>` to_hz, :ref:`MagnitudeMode<enum_AudioEffectSpectrumAnalyzerInstance_MagnitudeMode>` mode=1 **)** const |
-+-------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
++-------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`Vector2<class_Vector2>` | :ref:`get_magnitude_for_frequency_range<class_AudioEffectSpectrumAnalyzerInstance_method_get_magnitude_for_frequency_range>` **(** :ref:`float<class_float>` from_hz, :ref:`float<class_float>` to_hz, :ref:`MagnitudeMode<enum_AudioEffectSpectrumAnalyzerInstance_MagnitudeMode>` mode=1 **)** |const| |
++-------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
 
 
 Enumerations
 Enumerations
 ------------
 ------------
@@ -40,5 +40,11 @@ Method Descriptions
 
 
 .. _class_AudioEffectSpectrumAnalyzerInstance_method_get_magnitude_for_frequency_range:
 .. _class_AudioEffectSpectrumAnalyzerInstance_method_get_magnitude_for_frequency_range:
 
 
-- :ref:`Vector2<class_Vector2>` **get_magnitude_for_frequency_range** **(** :ref:`float<class_float>` from_hz, :ref:`float<class_float>` to_hz, :ref:`MagnitudeMode<enum_AudioEffectSpectrumAnalyzerInstance_MagnitudeMode>` mode=1 **)** const
+- :ref:`Vector2<class_Vector2>` **get_magnitude_for_frequency_range** **(** :ref:`float<class_float>` from_hz, :ref:`float<class_float>` to_hz, :ref:`MagnitudeMode<enum_AudioEffectSpectrumAnalyzerInstance_MagnitudeMode>` mode=1 **)** |const|
 
 
+.. |virtual| replace:: :abbr:`virtual (This method should typically be overridden by the user to have any effect.)`
+.. |const| replace:: :abbr:`const (This method has no side effects. It doesn't modify any of the instance's member variables.)`
+.. |vararg| replace:: :abbr:`vararg (This method accepts any number of arguments after the ones described here.)`
+.. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)`
+.. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)`
+.. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)`

+ 7 - 1
classes/class_audioeffectstereoenhance.rst

@@ -9,7 +9,7 @@
 AudioEffectStereoEnhance
 AudioEffectStereoEnhance
 ========================
 ========================
 
 
-**Inherits:** :ref:`AudioEffect<class_AudioEffect>` **<** :ref:`Resource<class_Resource>` **<** :ref:`Reference<class_Reference>` **<** :ref:`Object<class_Object>`
+**Inherits:** :ref:`AudioEffect<class_AudioEffect>` **<** :ref:`Resource<class_Resource>` **<** :ref:`RefCounted<class_RefCounted>` **<** :ref:`Object<class_Object>`
 
 
 
 
 
 
@@ -67,3 +67,9 @@ Property Descriptions
 | *Getter*  | get_time_pullout()      |
 | *Getter*  | get_time_pullout()      |
 +-----------+-------------------------+
 +-----------+-------------------------+
 
 
+.. |virtual| replace:: :abbr:`virtual (This method should typically be overridden by the user to have any effect.)`
+.. |const| replace:: :abbr:`const (This method has no side effects. It doesn't modify any of the instance's member variables.)`
+.. |vararg| replace:: :abbr:`vararg (This method accepts any number of arguments after the ones described here.)`
+.. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)`
+.. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)`
+.. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)`

+ 66 - 0
classes/class_audiolistener2d.rst

@@ -0,0 +1,66 @@
+:github_url: hide
+
+.. Generated automatically by doc/tools/makerst.py in Godot's source tree.
+.. DO NOT EDIT THIS FILE, but the AudioListener2D.xml source instead.
+.. The source is found in doc/classes or modules/<name>/doc_classes.
+
+.. _class_AudioListener2D:
+
+AudioListener2D
+===============
+
+**Inherits:** :ref:`Node2D<class_Node2D>` **<** :ref:`CanvasItem<class_CanvasItem>` **<** :ref:`Node<class_Node>` **<** :ref:`Object<class_Object>`
+
+Overrides the location sounds are heard from.
+
+Description
+-----------
+
+Once added to the scene tree and enabled using :ref:`make_current<class_AudioListener2D_method_make_current>`, this node will override the location sounds are heard from. Only one ``AudioListener2D`` can be current. Using :ref:`make_current<class_AudioListener2D_method_make_current>` will disable the previous ``AudioListener2D``.
+
+If there is no active ``AudioListener2D`` in the current :ref:`Viewport<class_Viewport>`, center of the screen will be used as a hearing point for the audio. ``AudioListener2D`` needs to be inside :ref:`SceneTree<class_SceneTree>` to function.
+
+Methods
+-------
+
++-------------------------+--------------------------------------------------------------------------------+
+| void                    | :ref:`clear_current<class_AudioListener2D_method_clear_current>` **(** **)**   |
++-------------------------+--------------------------------------------------------------------------------+
+| :ref:`bool<class_bool>` | :ref:`is_current<class_AudioListener2D_method_is_current>` **(** **)** |const| |
++-------------------------+--------------------------------------------------------------------------------+
+| void                    | :ref:`make_current<class_AudioListener2D_method_make_current>` **(** **)**     |
++-------------------------+--------------------------------------------------------------------------------+
+
+Method Descriptions
+-------------------
+
+.. _class_AudioListener2D_method_clear_current:
+
+- void **clear_current** **(** **)**
+
+Disables the ``AudioListener2D``. If it's not set as current, this method will have no effect.
+
+----
+
+.. _class_AudioListener2D_method_is_current:
+
+- :ref:`bool<class_bool>` **is_current** **(** **)** |const|
+
+Returns ``true`` if this ``AudioListener2D`` is currently active.
+
+----
+
+.. _class_AudioListener2D_method_make_current:
+
+- void **make_current** **(** **)**
+
+Makes the ``AudioListener2D`` active, setting it as the hearing point for the sounds. If there is already another active ``AudioListener2D``, it will be disabled.
+
+This method will have no effect if the ``AudioListener2D`` is not added to :ref:`SceneTree<class_SceneTree>`.
+
+.. |virtual| replace:: :abbr:`virtual (This method should typically be overridden by the user to have any effect.)`
+.. |const| replace:: :abbr:`const (This method has no side effects. It doesn't modify any of the instance's member variables.)`
+.. |vararg| replace:: :abbr:`vararg (This method accepts any number of arguments after the ones described here.)`
+.. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)`
+.. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)`
+.. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)`

+ 74 - 0
classes/class_audiolistener3d.rst

@@ -0,0 +1,74 @@
+:github_url: hide
+
+.. Generated automatically by doc/tools/makerst.py in Godot's source tree.
+.. DO NOT EDIT THIS FILE, but the AudioListener3D.xml source instead.
+.. The source is found in doc/classes or modules/<name>/doc_classes.
+
+.. _class_AudioListener3D:
+
+AudioListener3D
+===============
+
+**Inherits:** :ref:`Node3D<class_Node3D>` **<** :ref:`Node<class_Node>` **<** :ref:`Object<class_Object>`
+
+Overrides the location sounds are heard from.
+
+Description
+-----------
+
+Once added to the scene tree and enabled using :ref:`make_current<class_AudioListener3D_method_make_current>`, this node will override the location sounds are heard from. This can be used to listen from a location different from the :ref:`Camera3D<class_Camera3D>`.
+
+Methods
+-------
+
++---------------------------------------+--------------------------------------------------------------------------------------------------------+
+| void                                  | :ref:`clear_current<class_AudioListener3D_method_clear_current>` **(** **)**                           |
++---------------------------------------+--------------------------------------------------------------------------------------------------------+
+| :ref:`Transform3D<class_Transform3D>` | :ref:`get_listener_transform<class_AudioListener3D_method_get_listener_transform>` **(** **)** |const| |
++---------------------------------------+--------------------------------------------------------------------------------------------------------+
+| :ref:`bool<class_bool>`               | :ref:`is_current<class_AudioListener3D_method_is_current>` **(** **)** |const|                         |
++---------------------------------------+--------------------------------------------------------------------------------------------------------+
+| void                                  | :ref:`make_current<class_AudioListener3D_method_make_current>` **(** **)**                             |
++---------------------------------------+--------------------------------------------------------------------------------------------------------+
+
+Method Descriptions
+-------------------
+
+.. _class_AudioListener3D_method_clear_current:
+
+- void **clear_current** **(** **)**
+
+Disables the listener to use the current camera's listener instead.
+
+----
+
+.. _class_AudioListener3D_method_get_listener_transform:
+
+- :ref:`Transform3D<class_Transform3D>` **get_listener_transform** **(** **)** |const|
+
+Returns the listener's global orthonormalized :ref:`Transform3D<class_Transform3D>`.
+
+----
+
+.. _class_AudioListener3D_method_is_current:
+
+- :ref:`bool<class_bool>` **is_current** **(** **)** |const|
+
+Returns ``true`` if the listener was made current using :ref:`make_current<class_AudioListener3D_method_make_current>`, ``false`` otherwise.
+
+**Note:** There may be more than one AudioListener3D marked as "current" in the scene tree, but only the one that was made current last will be used.
+
+----
+
+.. _class_AudioListener3D_method_make_current:
+
+- void **make_current** **(** **)**
+
+Enables the listener. This will override the current camera's listener.
+
+.. |virtual| replace:: :abbr:`virtual (This method should typically be overridden by the user to have any effect.)`
+.. |const| replace:: :abbr:`const (This method has no side effects. It doesn't modify any of the instance's member variables.)`
+.. |vararg| replace:: :abbr:`vararg (This method accepts any number of arguments after the ones described here.)`
+.. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)`
+.. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)`
+.. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)`

+ 63 - 51
classes/class_audioserver.rst

@@ -23,16 +23,22 @@ Tutorials
 
 
 - :doc:`../tutorials/audio/audio_buses`
 - :doc:`../tutorials/audio/audio_buses`
 
 
+- `Audio Device Changer Demo <https://godotengine.org/asset-library/asset/525>`__
+
+- `Audio Mic Record Demo <https://godotengine.org/asset-library/asset/527>`__
+
+- `Audio Spectrum Demo <https://godotengine.org/asset-library/asset/528>`__
+
 Properties
 Properties
 ----------
 ----------
 
 
-+-----------------------------+------------------------------------------------------------------------+---------------+
-| :ref:`int<class_int>`       | :ref:`bus_count<class_AudioServer_property_bus_count>`                 | ``1``         |
-+-----------------------------+------------------------------------------------------------------------+---------------+
-| :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``       |
-+-----------------------------+------------------------------------------------------------------------+---------------+
++-----------------------------+------------------------------------------------------------------------------+---------------+
+| :ref:`int<class_int>`       | :ref:`bus_count<class_AudioServer_property_bus_count>`                       | ``1``         |
++-----------------------------+------------------------------------------------------------------------------+---------------+
+| :ref:`String<class_String>` | :ref:`device<class_AudioServer_property_device>`                             | ``"Default"`` |
++-----------------------------+------------------------------------------------------------------------------+---------------+
+| :ref:`float<class_float>`   | :ref:`playback_speed_scale<class_AudioServer_property_playback_speed_scale>` | ``1.0``       |
++-----------------------------+------------------------------------------------------------------------------+---------------+
 
 
 Methods
 Methods
 -------
 -------
@@ -48,9 +54,9 @@ Methods
 +-------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
 +-------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
 | void                                                  | :ref:`capture_set_device<class_AudioServer_method_capture_set_device>` **(** :ref:`String<class_String>` name **)**                                                                           |
 | 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:`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                                                                            |
+| :ref:`int<class_int>`                                 | :ref:`get_bus_channels<class_AudioServer_method_get_bus_channels>` **(** :ref:`int<class_int>` bus_idx **)** |const|                                                                          |
 +-------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
 +-------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
 | :ref:`AudioEffect<class_AudioEffect>`                 | :ref:`get_bus_effect<class_AudioServer_method_get_bus_effect>` **(** :ref:`int<class_int>` bus_idx, :ref:`int<class_int>` effect_idx **)**                                                    |
 | :ref:`AudioEffect<class_AudioEffect>`                 | :ref:`get_bus_effect<class_AudioServer_method_get_bus_effect>` **(** :ref:`int<class_int>` bus_idx, :ref:`int<class_int>` effect_idx **)**                                                    |
 +-------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
 +-------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
@@ -58,37 +64,37 @@ Methods
 +-------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
 +-------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
 | :ref:`AudioEffectInstance<class_AudioEffectInstance>` | :ref:`get_bus_effect_instance<class_AudioServer_method_get_bus_effect_instance>` **(** :ref:`int<class_int>` bus_idx, :ref:`int<class_int>` effect_idx, :ref:`int<class_int>` channel=0 **)** |
 | :ref:`AudioEffectInstance<class_AudioEffectInstance>` | :ref:`get_bus_effect_instance<class_AudioServer_method_get_bus_effect_instance>` **(** :ref:`int<class_int>` bus_idx, :ref:`int<class_int>` effect_idx, :ref:`int<class_int>` channel=0 **)** |
 +-------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
 +-------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`int<class_int>`                                 | :ref:`get_bus_index<class_AudioServer_method_get_bus_index>` **(** :ref:`StringName<class_StringName>` bus_name **)** const                                                                   |
+| :ref:`int<class_int>`                                 | :ref:`get_bus_index<class_AudioServer_method_get_bus_index>` **(** :ref:`StringName<class_StringName>` bus_name **)** |const|                                                                 |
 +-------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
 +-------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`String<class_String>`                           | :ref:`get_bus_name<class_AudioServer_method_get_bus_name>` **(** :ref:`int<class_int>` bus_idx **)** const                                                                                    |
+| :ref:`String<class_String>`                           | :ref:`get_bus_name<class_AudioServer_method_get_bus_name>` **(** :ref:`int<class_int>` bus_idx **)** |const|                                                                                  |
 +-------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
 +-------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`float<class_float>`                             | :ref:`get_bus_peak_volume_left_db<class_AudioServer_method_get_bus_peak_volume_left_db>` **(** :ref:`int<class_int>` bus_idx, :ref:`int<class_int>` channel **)** const                       |
+| :ref:`float<class_float>`                             | :ref:`get_bus_peak_volume_left_db<class_AudioServer_method_get_bus_peak_volume_left_db>` **(** :ref:`int<class_int>` bus_idx, :ref:`int<class_int>` channel **)** |const|                     |
 +-------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
 +-------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`float<class_float>`                             | :ref:`get_bus_peak_volume_right_db<class_AudioServer_method_get_bus_peak_volume_right_db>` **(** :ref:`int<class_int>` bus_idx, :ref:`int<class_int>` channel **)** const                     |
+| :ref:`float<class_float>`                             | :ref:`get_bus_peak_volume_right_db<class_AudioServer_method_get_bus_peak_volume_right_db>` **(** :ref:`int<class_int>` bus_idx, :ref:`int<class_int>` channel **)** |const|                   |
 +-------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
 +-------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`StringName<class_StringName>`                   | :ref:`get_bus_send<class_AudioServer_method_get_bus_send>` **(** :ref:`int<class_int>` bus_idx **)** const                                                                                    |
+| :ref:`StringName<class_StringName>`                   | :ref:`get_bus_send<class_AudioServer_method_get_bus_send>` **(** :ref:`int<class_int>` bus_idx **)** |const|                                                                                  |
 +-------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
 +-------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`float<class_float>`                             | :ref:`get_bus_volume_db<class_AudioServer_method_get_bus_volume_db>` **(** :ref:`int<class_int>` bus_idx **)** const                                                                          |
+| :ref:`float<class_float>`                             | :ref:`get_bus_volume_db<class_AudioServer_method_get_bus_volume_db>` **(** :ref:`int<class_int>` bus_idx **)** |const|                                                                        |
 +-------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
 +-------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
 | :ref:`Array<class_Array>`                             | :ref:`get_device_list<class_AudioServer_method_get_device_list>` **(** **)**                                                                                                                  |
 | :ref:`Array<class_Array>`                             | :ref:`get_device_list<class_AudioServer_method_get_device_list>` **(** **)**                                                                                                                  |
 +-------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
 +-------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`float<class_float>`                             | :ref:`get_mix_rate<class_AudioServer_method_get_mix_rate>` **(** **)** const                                                                                                                  |
+| :ref:`float<class_float>`                             | :ref:`get_mix_rate<class_AudioServer_method_get_mix_rate>` **(** **)** |const|                                                                                                                |
 +-------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
 +-------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`float<class_float>`                             | :ref:`get_output_latency<class_AudioServer_method_get_output_latency>` **(** **)** const                                                                                                      |
+| :ref:`float<class_float>`                             | :ref:`get_output_latency<class_AudioServer_method_get_output_latency>` **(** **)** |const|                                                                                                    |
 +-------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
 +-------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`SpeakerMode<enum_AudioServer_SpeakerMode>`      | :ref:`get_speaker_mode<class_AudioServer_method_get_speaker_mode>` **(** **)** const                                                                                                          |
+| :ref:`SpeakerMode<enum_AudioServer_SpeakerMode>`      | :ref:`get_speaker_mode<class_AudioServer_method_get_speaker_mode>` **(** **)** |const|                                                                                                        |
 +-------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
 +-------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`float<class_float>`                             | :ref:`get_time_since_last_mix<class_AudioServer_method_get_time_since_last_mix>` **(** **)** const                                                                                            |
+| :ref:`float<class_float>`                             | :ref:`get_time_since_last_mix<class_AudioServer_method_get_time_since_last_mix>` **(** **)** |const|                                                                                          |
 +-------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
 +-------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`float<class_float>`                             | :ref:`get_time_to_next_mix<class_AudioServer_method_get_time_to_next_mix>` **(** **)** const                                                                                                  |
+| :ref:`float<class_float>`                             | :ref:`get_time_to_next_mix<class_AudioServer_method_get_time_to_next_mix>` **(** **)** |const|                                                                                                |
 +-------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
 +-------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`bool<class_bool>`                               | :ref:`is_bus_bypassing_effects<class_AudioServer_method_is_bus_bypassing_effects>` **(** :ref:`int<class_int>` bus_idx **)** const                                                            |
+| :ref:`bool<class_bool>`                               | :ref:`is_bus_bypassing_effects<class_AudioServer_method_is_bus_bypassing_effects>` **(** :ref:`int<class_int>` bus_idx **)** |const|                                                          |
 +-------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
 +-------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`bool<class_bool>`                               | :ref:`is_bus_effect_enabled<class_AudioServer_method_is_bus_effect_enabled>` **(** :ref:`int<class_int>` bus_idx, :ref:`int<class_int>` effect_idx **)** const                                |
+| :ref:`bool<class_bool>`                               | :ref:`is_bus_effect_enabled<class_AudioServer_method_is_bus_effect_enabled>` **(** :ref:`int<class_int>` bus_idx, :ref:`int<class_int>` effect_idx **)** |const|                              |
 +-------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
 +-------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`bool<class_bool>`                               | :ref:`is_bus_mute<class_AudioServer_method_is_bus_mute>` **(** :ref:`int<class_int>` bus_idx **)** const                                                                                      |
+| :ref:`bool<class_bool>`                               | :ref:`is_bus_mute<class_AudioServer_method_is_bus_mute>` **(** :ref:`int<class_int>` bus_idx **)** |const|                                                                                    |
 +-------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
 +-------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`bool<class_bool>`                               | :ref:`is_bus_solo<class_AudioServer_method_is_bus_solo>` **(** :ref:`int<class_int>` bus_idx **)** const                                                                                      |
+| :ref:`bool<class_bool>`                               | :ref:`is_bus_solo<class_AudioServer_method_is_bus_solo>` **(** :ref:`int<class_int>` bus_idx **)** |const|                                                                                    |
 +-------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
 +-------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
 | void                                                  | :ref:`lock<class_AudioServer_method_lock>` **(** **)**                                                                                                                                        |
 | void                                                  | :ref:`lock<class_AudioServer_method_lock>` **(** **)**                                                                                                                                        |
 +-------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
 +-------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
@@ -186,19 +192,19 @@ Name of the current device for audio output (see :ref:`get_device_list<class_Aud
 
 
 ----
 ----
 
 
-.. _class_AudioServer_property_global_rate_scale:
+.. _class_AudioServer_property_playback_speed_scale:
 
 
-- :ref:`float<class_float>` **global_rate_scale**
+- :ref:`float<class_float>` **playback_speed_scale**
 
 
-+-----------+------------------------------+
-| *Default* | ``1.0``                      |
-+-----------+------------------------------+
-| *Setter*  | set_global_rate_scale(value) |
-+-----------+------------------------------+
-| *Getter*  | get_global_rate_scale()      |
-+-----------+------------------------------+
++-----------+---------------------------------+
+| *Default* | ``1.0``                         |
++-----------+---------------------------------+
+| *Setter*  | set_playback_speed_scale(value) |
++-----------+---------------------------------+
+| *Getter*  | get_playback_speed_scale()      |
++-----------+---------------------------------+
 
 
-Scales the rate at which audio is played (i.e. setting it to ``0.5`` will make the audio be played twice as fast).
+Scales the rate at which audio is played (i.e. setting it to ``0.5`` will make the audio be played at half its speed).
 
 
 Method Descriptions
 Method Descriptions
 -------------------
 -------------------
@@ -245,7 +251,7 @@ Sets which audio input device is used for audio capture.
 
 
 .. _class_AudioServer_method_generate_bus_layout:
 .. _class_AudioServer_method_generate_bus_layout:
 
 
-- :ref:`AudioBusLayout<class_AudioBusLayout>` **generate_bus_layout** **(** **)** const
+- :ref:`AudioBusLayout<class_AudioBusLayout>` **generate_bus_layout** **(** **)** |const|
 
 
 Generates an :ref:`AudioBusLayout<class_AudioBusLayout>` using the available buses and effects.
 Generates an :ref:`AudioBusLayout<class_AudioBusLayout>` using the available buses and effects.
 
 
@@ -253,7 +259,7 @@ Generates an :ref:`AudioBusLayout<class_AudioBusLayout>` using the available bus
 
 
 .. _class_AudioServer_method_get_bus_channels:
 .. _class_AudioServer_method_get_bus_channels:
 
 
-- :ref:`int<class_int>` **get_bus_channels** **(** :ref:`int<class_int>` bus_idx **)** const
+- :ref:`int<class_int>` **get_bus_channels** **(** :ref:`int<class_int>` bus_idx **)** |const|
 
 
 Returns the amount of channels of the bus at index ``bus_idx``.
 Returns the amount of channels of the bus at index ``bus_idx``.
 
 
@@ -285,7 +291,7 @@ Returns the :ref:`AudioEffectInstance<class_AudioEffectInstance>` assigned to th
 
 
 .. _class_AudioServer_method_get_bus_index:
 .. _class_AudioServer_method_get_bus_index:
 
 
-- :ref:`int<class_int>` **get_bus_index** **(** :ref:`StringName<class_StringName>` bus_name **)** const
+- :ref:`int<class_int>` **get_bus_index** **(** :ref:`StringName<class_StringName>` bus_name **)** |const|
 
 
 Returns the index of the bus with the name ``bus_name``.
 Returns the index of the bus with the name ``bus_name``.
 
 
@@ -293,7 +299,7 @@ Returns the index of the bus with the name ``bus_name``.
 
 
 .. _class_AudioServer_method_get_bus_name:
 .. _class_AudioServer_method_get_bus_name:
 
 
-- :ref:`String<class_String>` **get_bus_name** **(** :ref:`int<class_int>` bus_idx **)** const
+- :ref:`String<class_String>` **get_bus_name** **(** :ref:`int<class_int>` bus_idx **)** |const|
 
 
 Returns the name of the bus with the index ``bus_idx``.
 Returns the name of the bus with the index ``bus_idx``.
 
 
@@ -301,7 +307,7 @@ Returns the name of the bus with the index ``bus_idx``.
 
 
 .. _class_AudioServer_method_get_bus_peak_volume_left_db:
 .. _class_AudioServer_method_get_bus_peak_volume_left_db:
 
 
-- :ref:`float<class_float>` **get_bus_peak_volume_left_db** **(** :ref:`int<class_int>` bus_idx, :ref:`int<class_int>` channel **)** const
+- :ref:`float<class_float>` **get_bus_peak_volume_left_db** **(** :ref:`int<class_int>` bus_idx, :ref:`int<class_int>` channel **)** |const|
 
 
 Returns the peak volume of the left speaker at bus index ``bus_idx`` and channel index ``channel``.
 Returns the peak volume of the left speaker at bus index ``bus_idx`` and channel index ``channel``.
 
 
@@ -309,7 +315,7 @@ Returns the peak volume of the left speaker at bus index ``bus_idx`` and channel
 
 
 .. _class_AudioServer_method_get_bus_peak_volume_right_db:
 .. _class_AudioServer_method_get_bus_peak_volume_right_db:
 
 
-- :ref:`float<class_float>` **get_bus_peak_volume_right_db** **(** :ref:`int<class_int>` bus_idx, :ref:`int<class_int>` channel **)** const
+- :ref:`float<class_float>` **get_bus_peak_volume_right_db** **(** :ref:`int<class_int>` bus_idx, :ref:`int<class_int>` channel **)** |const|
 
 
 Returns the peak volume of the right speaker at bus index ``bus_idx`` and channel index ``channel``.
 Returns the peak volume of the right speaker at bus index ``bus_idx`` and channel index ``channel``.
 
 
@@ -317,7 +323,7 @@ Returns the peak volume of the right speaker at bus index ``bus_idx`` and channe
 
 
 .. _class_AudioServer_method_get_bus_send:
 .. _class_AudioServer_method_get_bus_send:
 
 
-- :ref:`StringName<class_StringName>` **get_bus_send** **(** :ref:`int<class_int>` bus_idx **)** const
+- :ref:`StringName<class_StringName>` **get_bus_send** **(** :ref:`int<class_int>` bus_idx **)** |const|
 
 
 Returns the name of the bus that the bus at index ``bus_idx`` sends to.
 Returns the name of the bus that the bus at index ``bus_idx`` sends to.
 
 
@@ -325,7 +331,7 @@ Returns the name of the bus that the bus at index ``bus_idx`` sends to.
 
 
 .. _class_AudioServer_method_get_bus_volume_db:
 .. _class_AudioServer_method_get_bus_volume_db:
 
 
-- :ref:`float<class_float>` **get_bus_volume_db** **(** :ref:`int<class_int>` bus_idx **)** const
+- :ref:`float<class_float>` **get_bus_volume_db** **(** :ref:`int<class_int>` bus_idx **)** |const|
 
 
 Returns the volume of the bus at index ``bus_idx`` in dB.
 Returns the volume of the bus at index ``bus_idx`` in dB.
 
 
@@ -341,7 +347,7 @@ Returns the names of all audio devices detected on the system.
 
 
 .. _class_AudioServer_method_get_mix_rate:
 .. _class_AudioServer_method_get_mix_rate:
 
 
-- :ref:`float<class_float>` **get_mix_rate** **(** **)** const
+- :ref:`float<class_float>` **get_mix_rate** **(** **)** |const|
 
 
 Returns the sample rate at the output of the ``AudioServer``.
 Returns the sample rate at the output of the ``AudioServer``.
 
 
@@ -349,7 +355,7 @@ Returns the sample rate at the output of the ``AudioServer``.
 
 
 .. _class_AudioServer_method_get_output_latency:
 .. _class_AudioServer_method_get_output_latency:
 
 
-- :ref:`float<class_float>` **get_output_latency** **(** **)** const
+- :ref:`float<class_float>` **get_output_latency** **(** **)** |const|
 
 
 Returns the audio driver's output latency.
 Returns the audio driver's output latency.
 
 
@@ -357,7 +363,7 @@ Returns the audio driver's output latency.
 
 
 .. _class_AudioServer_method_get_speaker_mode:
 .. _class_AudioServer_method_get_speaker_mode:
 
 
-- :ref:`SpeakerMode<enum_AudioServer_SpeakerMode>` **get_speaker_mode** **(** **)** const
+- :ref:`SpeakerMode<enum_AudioServer_SpeakerMode>` **get_speaker_mode** **(** **)** |const|
 
 
 Returns the speaker configuration.
 Returns the speaker configuration.
 
 
@@ -365,7 +371,7 @@ Returns the speaker configuration.
 
 
 .. _class_AudioServer_method_get_time_since_last_mix:
 .. _class_AudioServer_method_get_time_since_last_mix:
 
 
-- :ref:`float<class_float>` **get_time_since_last_mix** **(** **)** const
+- :ref:`float<class_float>` **get_time_since_last_mix** **(** **)** |const|
 
 
 Returns the relative time since the last mix occurred.
 Returns the relative time since the last mix occurred.
 
 
@@ -373,7 +379,7 @@ Returns the relative time since the last mix occurred.
 
 
 .. _class_AudioServer_method_get_time_to_next_mix:
 .. _class_AudioServer_method_get_time_to_next_mix:
 
 
-- :ref:`float<class_float>` **get_time_to_next_mix** **(** **)** const
+- :ref:`float<class_float>` **get_time_to_next_mix** **(** **)** |const|
 
 
 Returns the relative time until the next mix occurs.
 Returns the relative time until the next mix occurs.
 
 
@@ -381,7 +387,7 @@ Returns the relative time until the next mix occurs.
 
 
 .. _class_AudioServer_method_is_bus_bypassing_effects:
 .. _class_AudioServer_method_is_bus_bypassing_effects:
 
 
-- :ref:`bool<class_bool>` **is_bus_bypassing_effects** **(** :ref:`int<class_int>` bus_idx **)** const
+- :ref:`bool<class_bool>` **is_bus_bypassing_effects** **(** :ref:`int<class_int>` bus_idx **)** |const|
 
 
 If ``true``, the bus at index ``bus_idx`` is bypassing effects.
 If ``true``, the bus at index ``bus_idx`` is bypassing effects.
 
 
@@ -389,7 +395,7 @@ If ``true``, the bus at index ``bus_idx`` is bypassing effects.
 
 
 .. _class_AudioServer_method_is_bus_effect_enabled:
 .. _class_AudioServer_method_is_bus_effect_enabled:
 
 
-- :ref:`bool<class_bool>` **is_bus_effect_enabled** **(** :ref:`int<class_int>` bus_idx, :ref:`int<class_int>` effect_idx **)** const
+- :ref:`bool<class_bool>` **is_bus_effect_enabled** **(** :ref:`int<class_int>` bus_idx, :ref:`int<class_int>` effect_idx **)** |const|
 
 
 If ``true``, the effect at index ``effect_idx`` on the bus at index ``bus_idx`` is enabled.
 If ``true``, the effect at index ``effect_idx`` on the bus at index ``bus_idx`` is enabled.
 
 
@@ -397,7 +403,7 @@ If ``true``, the effect at index ``effect_idx`` on the bus at index ``bus_idx``
 
 
 .. _class_AudioServer_method_is_bus_mute:
 .. _class_AudioServer_method_is_bus_mute:
 
 
-- :ref:`bool<class_bool>` **is_bus_mute** **(** :ref:`int<class_int>` bus_idx **)** const
+- :ref:`bool<class_bool>` **is_bus_mute** **(** :ref:`int<class_int>` bus_idx **)** |const|
 
 
 If ``true``, the bus at index ``bus_idx`` is muted.
 If ``true``, the bus at index ``bus_idx`` is muted.
 
 
@@ -405,7 +411,7 @@ If ``true``, the bus at index ``bus_idx`` is muted.
 
 
 .. _class_AudioServer_method_is_bus_solo:
 .. _class_AudioServer_method_is_bus_solo:
 
 
-- :ref:`bool<class_bool>` **is_bus_solo** **(** :ref:`int<class_int>` bus_idx **)** const
+- :ref:`bool<class_bool>` **is_bus_solo** **(** :ref:`int<class_int>` bus_idx **)** |const|
 
 
 If ``true``, the bus at index ``bus_idx`` is in solo mode.
 If ``true``, the bus at index ``bus_idx`` is in solo mode.
 
 
@@ -523,3 +529,9 @@ Swaps the position of two effects in bus ``bus_idx``.
 
 
 Unlocks the audio driver's main loop. (After locking it, you should always unlock it.)
 Unlocks the audio driver's main loop. (After locking it, you should always unlock it.)
 
 
+.. |virtual| replace:: :abbr:`virtual (This method should typically be overridden by the user to have any effect.)`
+.. |const| replace:: :abbr:`const (This method has no side effects. It doesn't modify any of the instance's member variables.)`
+.. |vararg| replace:: :abbr:`vararg (This method accepts any number of arguments after the ones described here.)`
+.. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)`
+.. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)`
+.. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)`

+ 60 - 6
classes/class_audiostream.rst

@@ -9,9 +9,9 @@
 AudioStream
 AudioStream
 ===========
 ===========
 
 
-**Inherits:** :ref:`Resource<class_Resource>` **<** :ref:`Reference<class_Reference>` **<** :ref:`Object<class_Object>`
+**Inherits:** :ref:`Resource<class_Resource>` **<** :ref:`RefCounted<class_RefCounted>` **<** :ref:`Object<class_Object>`
 
 
-**Inherited By:** :ref:`AudioStreamGenerator<class_AudioStreamGenerator>`, :ref:`AudioStreamMicrophone<class_AudioStreamMicrophone>`, :ref:`AudioStreamOGGVorbis<class_AudioStreamOGGVorbis>`, :ref:`AudioStreamRandomPitch<class_AudioStreamRandomPitch>`, :ref:`AudioStreamSample<class_AudioStreamSample>`
+**Inherited By:** :ref:`AudioStreamGenerator<class_AudioStreamGenerator>`, :ref:`AudioStreamMP3<class_AudioStreamMP3>`, :ref:`AudioStreamMicrophone<class_AudioStreamMicrophone>`, :ref:`AudioStreamOGGVorbis<class_AudioStreamOGGVorbis>`, :ref:`AudioStreamRandomPitch<class_AudioStreamRandomPitch>`, :ref:`AudioStreamSample<class_AudioStreamSample>`
 
 
 Base class for audio streams.
 Base class for audio streams.
 
 
@@ -25,19 +25,73 @@ Tutorials
 
 
 - :doc:`../tutorials/audio/audio_streams`
 - :doc:`../tutorials/audio/audio_streams`
 
 
+- `Audio Generator Demo <https://godotengine.org/asset-library/asset/526>`__
+
+- `Audio Mic Record Demo <https://godotengine.org/asset-library/asset/527>`__
+
+- `Audio Spectrum Demo <https://godotengine.org/asset-library/asset/528>`__
+
 Methods
 Methods
 -------
 -------
 
 
-+---------------------------+--------------------------------------------------------------------------+
-| :ref:`float<class_float>` | :ref:`get_length<class_AudioStream_method_get_length>` **(** **)** const |
-+---------------------------+--------------------------------------------------------------------------+
++-------------------------------------------------------+------------------------------------------------------------------------------------------------------+
+| :ref:`float<class_float>`                             | :ref:`_get_length<class_AudioStream_method__get_length>` **(** **)** |virtual| |const|               |
++-------------------------------------------------------+------------------------------------------------------------------------------------------------------+
+| :ref:`String<class_String>`                           | :ref:`_get_stream_name<class_AudioStream_method__get_stream_name>` **(** **)** |virtual| |const|     |
++-------------------------------------------------------+------------------------------------------------------------------------------------------------------+
+| :ref:`AudioStreamPlayback<class_AudioStreamPlayback>` | :ref:`_instance_playback<class_AudioStream_method__instance_playback>` **(** **)** |virtual| |const| |
++-------------------------------------------------------+------------------------------------------------------------------------------------------------------+
+| :ref:`bool<class_bool>`                               | :ref:`_is_monophonic<class_AudioStream_method__is_monophonic>` **(** **)** |virtual| |const|         |
++-------------------------------------------------------+------------------------------------------------------------------------------------------------------+
+| :ref:`float<class_float>`                             | :ref:`get_length<class_AudioStream_method_get_length>` **(** **)** |const|                           |
++-------------------------------------------------------+------------------------------------------------------------------------------------------------------+
+| :ref:`bool<class_bool>`                               | :ref:`is_monophonic<class_AudioStream_method_is_monophonic>` **(** **)** |const|                     |
++-------------------------------------------------------+------------------------------------------------------------------------------------------------------+
 
 
 Method Descriptions
 Method Descriptions
 -------------------
 -------------------
 
 
+.. _class_AudioStream_method__get_length:
+
+- :ref:`float<class_float>` **_get_length** **(** **)** |virtual| |const|
+
+----
+
+.. _class_AudioStream_method__get_stream_name:
+
+- :ref:`String<class_String>` **_get_stream_name** **(** **)** |virtual| |const|
+
+----
+
+.. _class_AudioStream_method__instance_playback:
+
+- :ref:`AudioStreamPlayback<class_AudioStreamPlayback>` **_instance_playback** **(** **)** |virtual| |const|
+
+----
+
+.. _class_AudioStream_method__is_monophonic:
+
+- :ref:`bool<class_bool>` **_is_monophonic** **(** **)** |virtual| |const|
+
+----
+
 .. _class_AudioStream_method_get_length:
 .. _class_AudioStream_method_get_length:
 
 
-- :ref:`float<class_float>` **get_length** **(** **)** const
+- :ref:`float<class_float>` **get_length** **(** **)** |const|
 
 
 Returns the length of the audio stream in seconds.
 Returns the length of the audio stream in seconds.
 
 
+----
+
+.. _class_AudioStream_method_is_monophonic:
+
+- :ref:`bool<class_bool>` **is_monophonic** **(** **)** |const|
+
+Returns true if this audio stream only supports monophonic playback, or false if the audio stream supports polyphony.
+
+.. |virtual| replace:: :abbr:`virtual (This method should typically be overridden by the user to have any effect.)`
+.. |const| replace:: :abbr:`const (This method has no side effects. It doesn't modify any of the instance's member variables.)`
+.. |vararg| replace:: :abbr:`vararg (This method accepts any number of arguments after the ones described here.)`
+.. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)`
+.. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)`
+.. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)`

+ 27 - 2
classes/class_audiostreamgenerator.rst

@@ -9,14 +9,25 @@
 AudioStreamGenerator
 AudioStreamGenerator
 ====================
 ====================
 
 
-**Inherits:** :ref:`AudioStream<class_AudioStream>` **<** :ref:`Resource<class_Resource>` **<** :ref:`Reference<class_Reference>` **<** :ref:`Object<class_Object>`
+**Inherits:** :ref:`AudioStream<class_AudioStream>` **<** :ref:`Resource<class_Resource>` **<** :ref:`RefCounted<class_RefCounted>` **<** :ref:`Object<class_Object>`
 
 
+Audio stream that generates sounds procedurally.
 
 
+Description
+-----------
+
+This audio stream does not play back sounds, but expects a script to generate audio data for it instead. See also :ref:`AudioStreamGeneratorPlayback<class_AudioStreamGeneratorPlayback>`.
+
+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.
 
 
 Tutorials
 Tutorials
 ---------
 ---------
 
 
-- `https://github.com/godotengine/godot-demo-projects/tree/master/audio/generator <https://github.com/godotengine/godot-demo-projects/tree/master/audio/generator>`_
+- `Audio Generator Demo <https://godotengine.org/asset-library/asset/526>`__
+
+- `https://godotengine.org/article/godot-32-will-get-new-audio-features <Godot 3.2 will get new audio features>`__
 
 
 Properties
 Properties
 ----------
 ----------
@@ -42,6 +53,8 @@ Property Descriptions
 | *Getter*  | get_buffer_length()      |
 | *Getter*  | get_buffer_length()      |
 +-----------+--------------------------+
 +-----------+--------------------------+
 
 
+The length of the buffer to generate (in seconds). Lower values result in less latency, but require the script to generate audio data faster, resulting in increased CPU usage and more risk for audio cracking if the CPU can't keep up.
+
 ----
 ----
 
 
 .. _class_AudioStreamGenerator_property_mix_rate:
 .. _class_AudioStreamGenerator_property_mix_rate:
@@ -56,3 +69,15 @@ Property Descriptions
 | *Getter*  | get_mix_rate()      |
 | *Getter*  | get_mix_rate()      |
 +-----------+---------------------+
 +-----------+---------------------+
 
 
+The sample rate to use (in Hz). Higher values are more demanding for the CPU to generate, but result in better quality.
+
+In games, common sample rates in use are ``11025``, ``16000``, ``22050``, ``32000``, ``44100``, and ``48000``.
+
+According to the `Nyquist-Shannon sampling theorem <https://en.wikipedia.org/wiki/Nyquist%E2%80%93Shannon_sampling_theorem>`__, there is no quality difference to human hearing when going past 40,000 Hz (since most humans can only hear up to ~20,000 Hz, often less). If you are generating lower-pitched sounds such as voices, lower sample rates such as ``32000`` or ``22050`` may be usable with no loss in quality.
+
+.. |virtual| replace:: :abbr:`virtual (This method should typically be overridden by the user to have any effect.)`
+.. |const| replace:: :abbr:`const (This method has no side effects. It doesn't modify any of the instance's member variables.)`
+.. |vararg| replace:: :abbr:`vararg (This method accepts any number of arguments after the ones described here.)`
+.. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)`
+.. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)`
+.. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)`

+ 31 - 8
classes/class_audiostreamgeneratorplayback.rst

@@ -9,26 +9,33 @@
 AudioStreamGeneratorPlayback
 AudioStreamGeneratorPlayback
 ============================
 ============================
 
 
-**Inherits:** :ref:`AudioStreamPlaybackResampled<class_AudioStreamPlaybackResampled>` **<** :ref:`AudioStreamPlayback<class_AudioStreamPlayback>` **<** :ref:`Reference<class_Reference>` **<** :ref:`Object<class_Object>`
+**Inherits:** :ref:`AudioStreamPlaybackResampled<class_AudioStreamPlaybackResampled>` **<** :ref:`AudioStreamPlayback<class_AudioStreamPlayback>` **<** :ref:`RefCounted<class_RefCounted>` **<** :ref:`Object<class_Object>`
 
 
+Plays back audio generated using :ref:`AudioStreamGenerator<class_AudioStreamGenerator>`.
 
 
+Description
+-----------
+
+This class is meant to be used with :ref:`AudioStreamGenerator<class_AudioStreamGenerator>` to play back the generated audio in real-time.
 
 
 Tutorials
 Tutorials
 ---------
 ---------
 
 
-- `https://github.com/godotengine/godot-demo-projects/tree/master/audio/generator <https://github.com/godotengine/godot-demo-projects/tree/master/audio/generator>`_
+- `Audio Generator Demo <https://godotengine.org/asset-library/asset/526>`__
+
+- `https://godotengine.org/article/godot-32-will-get-new-audio-features <Godot 3.2 will get new audio features>`__
 
 
 Methods
 Methods
 -------
 -------
 
 
 +-------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------+
 +-------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`bool<class_bool>` | :ref:`can_push_buffer<class_AudioStreamGeneratorPlayback_method_can_push_buffer>` **(** :ref:`int<class_int>` amount **)** const                 |
+| :ref:`bool<class_bool>` | :ref:`can_push_buffer<class_AudioStreamGeneratorPlayback_method_can_push_buffer>` **(** :ref:`int<class_int>` amount **)** |const|               |
 +-------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------+
 +-------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------+
 | void                    | :ref:`clear_buffer<class_AudioStreamGeneratorPlayback_method_clear_buffer>` **(** **)**                                                          |
 | void                    | :ref:`clear_buffer<class_AudioStreamGeneratorPlayback_method_clear_buffer>` **(** **)**                                                          |
 +-------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------+
 +-------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`int<class_int>`   | :ref:`get_frames_available<class_AudioStreamGeneratorPlayback_method_get_frames_available>` **(** **)** const                                    |
+| :ref:`int<class_int>`   | :ref:`get_frames_available<class_AudioStreamGeneratorPlayback_method_get_frames_available>` **(** **)** |const|                                  |
 +-------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------+
 +-------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`int<class_int>`   | :ref:`get_skips<class_AudioStreamGeneratorPlayback_method_get_skips>` **(** **)** const                                                          |
+| :ref:`int<class_int>`   | :ref:`get_skips<class_AudioStreamGeneratorPlayback_method_get_skips>` **(** **)** |const|                                                        |
 +-------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------+
 +-------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------+
 | :ref:`bool<class_bool>` | :ref:`push_buffer<class_AudioStreamGeneratorPlayback_method_push_buffer>` **(** :ref:`PackedVector2Array<class_PackedVector2Array>` frames **)** |
 | :ref:`bool<class_bool>` | :ref:`push_buffer<class_AudioStreamGeneratorPlayback_method_push_buffer>` **(** :ref:`PackedVector2Array<class_PackedVector2Array>` frames **)** |
 +-------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------+
 +-------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------+
@@ -40,7 +47,9 @@ Method Descriptions
 
 
 .. _class_AudioStreamGeneratorPlayback_method_can_push_buffer:
 .. _class_AudioStreamGeneratorPlayback_method_can_push_buffer:
 
 
-- :ref:`bool<class_bool>` **can_push_buffer** **(** :ref:`int<class_int>` amount **)** const
+- :ref:`bool<class_bool>` **can_push_buffer** **(** :ref:`int<class_int>` amount **)** |const|
+
+Returns ``true`` if a buffer of the size ``amount`` can be pushed to the audio sample data buffer without overflowing it, ``false`` otherwise.
 
 
 ----
 ----
 
 
@@ -48,17 +57,21 @@ Method Descriptions
 
 
 - void **clear_buffer** **(** **)**
 - void **clear_buffer** **(** **)**
 
 
+Clears the audio sample data buffer.
+
 ----
 ----
 
 
 .. _class_AudioStreamGeneratorPlayback_method_get_frames_available:
 .. _class_AudioStreamGeneratorPlayback_method_get_frames_available:
 
 
-- :ref:`int<class_int>` **get_frames_available** **(** **)** const
+- :ref:`int<class_int>` **get_frames_available** **(** **)** |const|
+
+Returns the number of audio data frames left to play. If this returned number reaches ``0``, the audio will stop playing until frames are added again. Therefore, make sure your script can always generate and push new audio frames fast enough to avoid audio cracking.
 
 
 ----
 ----
 
 
 .. _class_AudioStreamGeneratorPlayback_method_get_skips:
 .. _class_AudioStreamGeneratorPlayback_method_get_skips:
 
 
-- :ref:`int<class_int>` **get_skips** **(** **)** const
+- :ref:`int<class_int>` **get_skips** **(** **)** |const|
 
 
 ----
 ----
 
 
@@ -66,9 +79,19 @@ Method Descriptions
 
 
 - :ref:`bool<class_bool>` **push_buffer** **(** :ref:`PackedVector2Array<class_PackedVector2Array>` frames **)**
 - :ref:`bool<class_bool>` **push_buffer** **(** :ref:`PackedVector2Array<class_PackedVector2Array>` frames **)**
 
 
+Pushes several audio data frames to the buffer. This is usually more efficient than :ref:`push_frame<class_AudioStreamGeneratorPlayback_method_push_frame>` in C# and compiled languages via GDNative, but :ref:`push_buffer<class_AudioStreamGeneratorPlayback_method_push_buffer>` may be *less* efficient in GDScript.
+
 ----
 ----
 
 
 .. _class_AudioStreamGeneratorPlayback_method_push_frame:
 .. _class_AudioStreamGeneratorPlayback_method_push_frame:
 
 
 - :ref:`bool<class_bool>` **push_frame** **(** :ref:`Vector2<class_Vector2>` frame **)**
 - :ref:`bool<class_bool>` **push_frame** **(** :ref:`Vector2<class_Vector2>` frame **)**
 
 
+Pushes a single audio data frame to the buffer. This is usually less efficient than :ref:`push_buffer<class_AudioStreamGeneratorPlayback_method_push_buffer>` in C# and compiled languages via GDNative, but :ref:`push_frame<class_AudioStreamGeneratorPlayback_method_push_frame>` may be *more* efficient in GDScript.
+
+.. |virtual| replace:: :abbr:`virtual (This method should typically be overridden by the user to have any effect.)`
+.. |const| replace:: :abbr:`const (This method has no side effects. It doesn't modify any of the instance's member variables.)`
+.. |vararg| replace:: :abbr:`vararg (This method accepts any number of arguments after the ones described here.)`
+.. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)`
+.. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)`
+.. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)`

+ 7 - 1
classes/class_audiostreammicrophone.rst

@@ -9,7 +9,13 @@
 AudioStreamMicrophone
 AudioStreamMicrophone
 =====================
 =====================
 
 
-**Inherits:** :ref:`AudioStream<class_AudioStream>` **<** :ref:`Resource<class_Resource>` **<** :ref:`Reference<class_Reference>` **<** :ref:`Object<class_Object>`
+**Inherits:** :ref:`AudioStream<class_AudioStream>` **<** :ref:`Resource<class_Resource>` **<** :ref:`RefCounted<class_RefCounted>` **<** :ref:`Object<class_Object>`
 
 
 
 
 
 
+.. |virtual| replace:: :abbr:`virtual (This method should typically be overridden by the user to have any effect.)`
+.. |const| replace:: :abbr:`const (This method has no side effects. It doesn't modify any of the instance's member variables.)`
+.. |vararg| replace:: :abbr:`vararg (This method accepts any number of arguments after the ones described here.)`
+.. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)`
+.. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)`
+.. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)`

+ 86 - 0
classes/class_audiostreammp3.rst

@@ -0,0 +1,86 @@
+:github_url: hide
+
+.. Generated automatically by doc/tools/makerst.py in Godot's source tree.
+.. DO NOT EDIT THIS FILE, but the AudioStreamMP3.xml source instead.
+.. The source is found in doc/classes or modules/<name>/doc_classes.
+
+.. _class_AudioStreamMP3:
+
+AudioStreamMP3
+==============
+
+**Inherits:** :ref:`AudioStream<class_AudioStream>` **<** :ref:`Resource<class_Resource>` **<** :ref:`RefCounted<class_RefCounted>` **<** :ref:`Object<class_Object>`
+
+MP3 audio stream driver.
+
+Description
+-----------
+
+MP3 audio stream driver.
+
+Properties
+----------
+
++-----------------------------------------------+---------------------------------------------------------------+-----------------------+
+| :ref:`PackedByteArray<class_PackedByteArray>` | :ref:`data<class_AudioStreamMP3_property_data>`               | ``PackedByteArray()`` |
++-----------------------------------------------+---------------------------------------------------------------+-----------------------+
+| :ref:`bool<class_bool>`                       | :ref:`loop<class_AudioStreamMP3_property_loop>`               | ``false``             |
++-----------------------------------------------+---------------------------------------------------------------+-----------------------+
+| :ref:`float<class_float>`                     | :ref:`loop_offset<class_AudioStreamMP3_property_loop_offset>` | ``0.0``               |
++-----------------------------------------------+---------------------------------------------------------------+-----------------------+
+
+Property Descriptions
+---------------------
+
+.. _class_AudioStreamMP3_property_data:
+
+- :ref:`PackedByteArray<class_PackedByteArray>` **data**
+
++-----------+-----------------------+
+| *Default* | ``PackedByteArray()`` |
++-----------+-----------------------+
+| *Setter*  | set_data(value)       |
++-----------+-----------------------+
+| *Getter*  | get_data()            |
++-----------+-----------------------+
+
+Contains the audio data in bytes.
+
+----
+
+.. _class_AudioStreamMP3_property_loop:
+
+- :ref:`bool<class_bool>` **loop**
+
++-----------+-----------------+
+| *Default* | ``false``       |
++-----------+-----------------+
+| *Setter*  | set_loop(value) |
++-----------+-----------------+
+| *Getter*  | has_loop()      |
++-----------+-----------------+
+
+If ``true``, the stream will automatically loop when it reaches the end.
+
+----
+
+.. _class_AudioStreamMP3_property_loop_offset:
+
+- :ref:`float<class_float>` **loop_offset**
+
++-----------+------------------------+
+| *Default* | ``0.0``                |
++-----------+------------------------+
+| *Setter*  | set_loop_offset(value) |
++-----------+------------------------+
+| *Getter*  | get_loop_offset()      |
++-----------+------------------------+
+
+Time in seconds at which the stream starts after being looped.
+
+.. |virtual| replace:: :abbr:`virtual (This method should typically be overridden by the user to have any effect.)`
+.. |const| replace:: :abbr:`const (This method has no side effects. It doesn't modify any of the instance's member variables.)`
+.. |vararg| replace:: :abbr:`vararg (This method accepts any number of arguments after the ones described here.)`
+.. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)`
+.. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)`
+.. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)`

+ 28 - 29
classes/class_audiostreamoggvorbis.rst

@@ -9,45 +9,24 @@
 AudioStreamOGGVorbis
 AudioStreamOGGVorbis
 ====================
 ====================
 
 
-**Inherits:** :ref:`AudioStream<class_AudioStream>` **<** :ref:`Resource<class_Resource>` **<** :ref:`Reference<class_Reference>` **<** :ref:`Object<class_Object>`
+**Inherits:** :ref:`AudioStream<class_AudioStream>` **<** :ref:`Resource<class_Resource>` **<** :ref:`RefCounted<class_RefCounted>` **<** :ref:`Object<class_Object>`
 
 
-OGG Vorbis audio stream driver.
 
 
-Description
------------
-
-OGG Vorbis audio stream driver.
 
 
 Properties
 Properties
 ----------
 ----------
 
 
-+-----------------------------------------------+---------------------------------------------------------------------+-------------------------+
-| :ref:`PackedByteArray<class_PackedByteArray>` | :ref:`data<class_AudioStreamOGGVorbis_property_data>`               | ``PackedByteArray(  )`` |
-+-----------------------------------------------+---------------------------------------------------------------------+-------------------------+
-| :ref:`bool<class_bool>`                       | :ref:`loop<class_AudioStreamOGGVorbis_property_loop>`               | ``false``               |
-+-----------------------------------------------+---------------------------------------------------------------------+-------------------------+
-| :ref:`float<class_float>`                     | :ref:`loop_offset<class_AudioStreamOGGVorbis_property_loop_offset>` | ``0.0``                 |
-+-----------------------------------------------+---------------------------------------------------------------------+-------------------------+
++---------------------------------------------------+-----------------------------------------------------------------------------+-----------+
+| :ref:`bool<class_bool>`                           | :ref:`loop<class_AudioStreamOGGVorbis_property_loop>`                       | ``false`` |
++---------------------------------------------------+-----------------------------------------------------------------------------+-----------+
+| :ref:`float<class_float>`                         | :ref:`loop_offset<class_AudioStreamOGGVorbis_property_loop_offset>`         | ``0.0``   |
++---------------------------------------------------+-----------------------------------------------------------------------------+-----------+
+| :ref:`OGGPacketSequence<class_OGGPacketSequence>` | :ref:`packet_sequence<class_AudioStreamOGGVorbis_property_packet_sequence>` |           |
++---------------------------------------------------+-----------------------------------------------------------------------------+-----------+
 
 
 Property Descriptions
 Property Descriptions
 ---------------------
 ---------------------
 
 
-.. _class_AudioStreamOGGVorbis_property_data:
-
-- :ref:`PackedByteArray<class_PackedByteArray>` **data**
-
-+-----------+-------------------------+
-| *Default* | ``PackedByteArray(  )`` |
-+-----------+-------------------------+
-| *Setter*  | set_data(value)         |
-+-----------+-------------------------+
-| *Getter*  | get_data()              |
-+-----------+-------------------------+
-
-Contains the audio data in bytes.
-
-----
-
 .. _class_AudioStreamOGGVorbis_property_loop:
 .. _class_AudioStreamOGGVorbis_property_loop:
 
 
 - :ref:`bool<class_bool>` **loop**
 - :ref:`bool<class_bool>` **loop**
@@ -78,3 +57,23 @@ If ``true``, the stream will automatically loop when it reaches the end.
 
 
 Time in seconds at which the stream starts after being looped.
 Time in seconds at which the stream starts after being looped.
 
 
+----
+
+.. _class_AudioStreamOGGVorbis_property_packet_sequence:
+
+- :ref:`OGGPacketSequence<class_OGGPacketSequence>` **packet_sequence**
+
++----------+----------------------------+
+| *Setter* | set_packet_sequence(value) |
++----------+----------------------------+
+| *Getter* | get_packet_sequence()      |
++----------+----------------------------+
+
+Contains the raw OGG data for this stream.
+
+.. |virtual| replace:: :abbr:`virtual (This method should typically be overridden by the user to have any effect.)`
+.. |const| replace:: :abbr:`const (This method has no side effects. It doesn't modify any of the instance's member variables.)`
+.. |vararg| replace:: :abbr:`vararg (This method accepts any number of arguments after the ones described here.)`
+.. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)`
+.. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)`
+.. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)`

+ 74 - 1
classes/class_audiostreamplayback.rst

@@ -9,7 +9,7 @@
 AudioStreamPlayback
 AudioStreamPlayback
 ===================
 ===================
 
 
-**Inherits:** :ref:`Reference<class_Reference>` **<** :ref:`Object<class_Object>`
+**Inherits:** :ref:`RefCounted<class_RefCounted>` **<** :ref:`Object<class_Object>`
 
 
 **Inherited By:** :ref:`AudioStreamPlaybackResampled<class_AudioStreamPlaybackResampled>`
 **Inherited By:** :ref:`AudioStreamPlaybackResampled<class_AudioStreamPlaybackResampled>`
 
 
@@ -20,3 +20,76 @@ Description
 
 
 Can play, loop, pause a scroll through audio. See :ref:`AudioStream<class_AudioStream>` and :ref:`AudioStreamOGGVorbis<class_AudioStreamOGGVorbis>` for usage.
 Can play, loop, pause a scroll through audio. See :ref:`AudioStream<class_AudioStream>` and :ref:`AudioStreamOGGVorbis<class_AudioStreamOGGVorbis>` for usage.
 
 
+Tutorials
+---------
+
+- `Audio Generator Demo <https://godotengine.org/asset-library/asset/526>`__
+
+Methods
+-------
+
++---------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`int<class_int>`     | :ref:`_get_loop_count<class_AudioStreamPlayback_method__get_loop_count>` **(** **)** |virtual| |const|                                                          |
++---------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`float<class_float>` | :ref:`_get_playback_position<class_AudioStreamPlayback_method__get_playback_position>` **(** **)** |virtual| |const|                                            |
++---------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`bool<class_bool>`   | :ref:`_is_playing<class_AudioStreamPlayback_method__is_playing>` **(** **)** |virtual| |const|                                                                  |
++---------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`int<class_int>`     | :ref:`_mix<class_AudioStreamPlayback_method__mix>` **(** AudioFrame* buffer, :ref:`float<class_float>` rate_scale, :ref:`int<class_int>` frames **)** |virtual| |
++---------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| void                      | :ref:`_seek<class_AudioStreamPlayback_method__seek>` **(** :ref:`float<class_float>` position **)** |virtual|                                                   |
++---------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| void                      | :ref:`_start<class_AudioStreamPlayback_method__start>` **(** :ref:`float<class_float>` from_pos **)** |virtual|                                                 |
++---------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| void                      | :ref:`_stop<class_AudioStreamPlayback_method__stop>` **(** **)** |virtual|                                                                                      |
++---------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------+
+
+Method Descriptions
+-------------------
+
+.. _class_AudioStreamPlayback_method__get_loop_count:
+
+- :ref:`int<class_int>` **_get_loop_count** **(** **)** |virtual| |const|
+
+----
+
+.. _class_AudioStreamPlayback_method__get_playback_position:
+
+- :ref:`float<class_float>` **_get_playback_position** **(** **)** |virtual| |const|
+
+----
+
+.. _class_AudioStreamPlayback_method__is_playing:
+
+- :ref:`bool<class_bool>` **_is_playing** **(** **)** |virtual| |const|
+
+----
+
+.. _class_AudioStreamPlayback_method__mix:
+
+- :ref:`int<class_int>` **_mix** **(** AudioFrame* buffer, :ref:`float<class_float>` rate_scale, :ref:`int<class_int>` frames **)** |virtual|
+
+----
+
+.. _class_AudioStreamPlayback_method__seek:
+
+- void **_seek** **(** :ref:`float<class_float>` position **)** |virtual|
+
+----
+
+.. _class_AudioStreamPlayback_method__start:
+
+- void **_start** **(** :ref:`float<class_float>` from_pos **)** |virtual|
+
+----
+
+.. _class_AudioStreamPlayback_method__stop:
+
+- void **_stop** **(** **)** |virtual|
+
+.. |virtual| replace:: :abbr:`virtual (This method should typically be overridden by the user to have any effect.)`
+.. |const| replace:: :abbr:`const (This method has no side effects. It doesn't modify any of the instance's member variables.)`
+.. |vararg| replace:: :abbr:`vararg (This method accepts any number of arguments after the ones described here.)`
+.. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)`
+.. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)`
+.. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)`

+ 21 - 0
classes/class_audiostreamplaybackoggvorbis.rst

@@ -0,0 +1,21 @@
+:github_url: hide
+
+.. Generated automatically by doc/tools/makerst.py in Godot's source tree.
+.. DO NOT EDIT THIS FILE, but the AudioStreamPlaybackOGGVorbis.xml source instead.
+.. The source is found in doc/classes or modules/<name>/doc_classes.
+
+.. _class_AudioStreamPlaybackOGGVorbis:
+
+AudioStreamPlaybackOGGVorbis
+============================
+
+**Inherits:** :ref:`AudioStreamPlaybackResampled<class_AudioStreamPlaybackResampled>` **<** :ref:`AudioStreamPlayback<class_AudioStreamPlayback>` **<** :ref:`RefCounted<class_RefCounted>` **<** :ref:`Object<class_Object>`
+
+
+
+.. |virtual| replace:: :abbr:`virtual (This method should typically be overridden by the user to have any effect.)`
+.. |const| replace:: :abbr:`const (This method has no side effects. It doesn't modify any of the instance's member variables.)`
+.. |vararg| replace:: :abbr:`vararg (This method accepts any number of arguments after the ones described here.)`
+.. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)`
+.. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)`
+.. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)`

+ 8 - 2
classes/class_audiostreamplaybackresampled.rst

@@ -9,9 +9,15 @@
 AudioStreamPlaybackResampled
 AudioStreamPlaybackResampled
 ============================
 ============================
 
 
-**Inherits:** :ref:`AudioStreamPlayback<class_AudioStreamPlayback>` **<** :ref:`Reference<class_Reference>` **<** :ref:`Object<class_Object>`
+**Inherits:** :ref:`AudioStreamPlayback<class_AudioStreamPlayback>` **<** :ref:`RefCounted<class_RefCounted>` **<** :ref:`Object<class_Object>`
 
 
-**Inherited By:** :ref:`AudioStreamGeneratorPlayback<class_AudioStreamGeneratorPlayback>`
+**Inherited By:** :ref:`AudioStreamGeneratorPlayback<class_AudioStreamGeneratorPlayback>`, :ref:`AudioStreamPlaybackOGGVorbis<class_AudioStreamPlaybackOGGVorbis>`
 
 
 
 
 
 
+.. |virtual| replace:: :abbr:`virtual (This method should typically be overridden by the user to have any effect.)`
+.. |const| replace:: :abbr:`const (This method has no side effects. It doesn't modify any of the instance's member variables.)`
+.. |vararg| replace:: :abbr:`vararg (This method accepts any number of arguments after the ones described here.)`
+.. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)`
+.. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)`
+.. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)`

+ 39 - 3
classes/class_audiostreamplayer.rst

@@ -18,18 +18,32 @@ Description
 
 
 Plays an audio stream non-positionally.
 Plays an audio stream non-positionally.
 
 
+To play audio positionally, use :ref:`AudioStreamPlayer2D<class_AudioStreamPlayer2D>` or :ref:`AudioStreamPlayer3D<class_AudioStreamPlayer3D>` instead of ``AudioStreamPlayer``.
+
 Tutorials
 Tutorials
 ---------
 ---------
 
 
 - :doc:`../tutorials/audio/audio_streams`
 - :doc:`../tutorials/audio/audio_streams`
 
 
+- `2D Dodge The Creeps Demo <https://godotengine.org/asset-library/asset/515>`__
+
+- `Audio Device Changer Demo <https://godotengine.org/asset-library/asset/525>`__
+
+- `Audio Generator Demo <https://godotengine.org/asset-library/asset/526>`__
+
+- `Audio Mic Record Demo <https://godotengine.org/asset-library/asset/527>`__
+
+- `Audio Spectrum Demo <https://godotengine.org/asset-library/asset/528>`__
+
 Properties
 Properties
 ----------
 ----------
 
 
 +----------------------------------------------------+----------------------------------------------------------------------+---------------+
 +----------------------------------------------------+----------------------------------------------------------------------+---------------+
 | :ref:`bool<class_bool>`                            | :ref:`autoplay<class_AudioStreamPlayer_property_autoplay>`           | ``false``     |
 | :ref:`bool<class_bool>`                            | :ref:`autoplay<class_AudioStreamPlayer_property_autoplay>`           | ``false``     |
 +----------------------------------------------------+----------------------------------------------------------------------+---------------+
 +----------------------------------------------------+----------------------------------------------------------------------+---------------+
-| :ref:`StringName<class_StringName>`                | :ref:`bus<class_AudioStreamPlayer_property_bus>`                     | ``@"Master"`` |
+| :ref:`StringName<class_StringName>`                | :ref:`bus<class_AudioStreamPlayer_property_bus>`                     | ``&"Master"`` |
++----------------------------------------------------+----------------------------------------------------------------------+---------------+
+| :ref:`int<class_int>`                              | :ref:`max_polyphony<class_AudioStreamPlayer_property_max_polyphony>` | ``1``         |
 +----------------------------------------------------+----------------------------------------------------------------------+---------------+
 +----------------------------------------------------+----------------------------------------------------------------------+---------------+
 | :ref:`MixTarget<enum_AudioStreamPlayer_MixTarget>` | :ref:`mix_target<class_AudioStreamPlayer_property_mix_target>`       | ``0``         |
 | :ref:`MixTarget<enum_AudioStreamPlayer_MixTarget>` | :ref:`mix_target<class_AudioStreamPlayer_property_mix_target>`       | ``0``         |
 +----------------------------------------------------+----------------------------------------------------------------------+---------------+
 +----------------------------------------------------+----------------------------------------------------------------------+---------------+
@@ -111,7 +125,7 @@ If ``true``, audio plays when added to scene tree.
 - :ref:`StringName<class_StringName>` **bus**
 - :ref:`StringName<class_StringName>` **bus**
 
 
 +-----------+----------------+
 +-----------+----------------+
-| *Default* | ``@"Master"``  |
+| *Default* | ``&"Master"``  |
 +-----------+----------------+
 +-----------+----------------+
 | *Setter*  | set_bus(value) |
 | *Setter*  | set_bus(value) |
 +-----------+----------------+
 +-----------+----------------+
@@ -122,6 +136,22 @@ Bus on which this audio is playing.
 
 
 ----
 ----
 
 
+.. _class_AudioStreamPlayer_property_max_polyphony:
+
+- :ref:`int<class_int>` **max_polyphony**
+
++-----------+--------------------------+
+| *Default* | ``1``                    |
++-----------+--------------------------+
+| *Setter*  | set_max_polyphony(value) |
++-----------+--------------------------+
+| *Getter*  | get_max_polyphony()      |
++-----------+--------------------------+
+
+The maximum number of sounds this node can play at the same time. Playing additional sounds after this value is reached will cut off the oldest sounds.
+
+----
+
 .. _class_AudioStreamPlayer_property_mix_target:
 .. _class_AudioStreamPlayer_property_mix_target:
 
 
 - :ref:`MixTarget<enum_AudioStreamPlayer_MixTarget>` **mix_target**
 - :ref:`MixTarget<enum_AudioStreamPlayer_MixTarget>` **mix_target**
@@ -150,7 +180,7 @@ If the audio configuration has more than two speakers, this sets the target chan
 | *Getter*  | get_pitch_scale()      |
 | *Getter*  | get_pitch_scale()      |
 +-----------+------------------------+
 +-----------+------------------------+
 
 
-Changes the pitch and the tempo of the audio.
+The pitch and the tempo of the audio, as a multiplier of the audio sample's sample rate.
 
 
 ----
 ----
 
 
@@ -253,3 +283,9 @@ Sets the position from which audio will be played, in seconds.
 
 
 Stops the audio.
 Stops the audio.
 
 
+.. |virtual| replace:: :abbr:`virtual (This method should typically be overridden by the user to have any effect.)`
+.. |const| replace:: :abbr:`const (This method has no side effects. It doesn't modify any of the instance's member variables.)`
+.. |vararg| replace:: :abbr:`vararg (This method accepts any number of arguments after the ones described here.)`
+.. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)`
+.. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)`
+.. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)`

+ 32 - 4
classes/class_audiostreamplayer2d.rst

@@ -11,13 +11,17 @@ AudioStreamPlayer2D
 
 
 **Inherits:** :ref:`Node2D<class_Node2D>` **<** :ref:`CanvasItem<class_CanvasItem>` **<** :ref:`Node<class_Node>` **<** :ref:`Object<class_Object>`
 **Inherits:** :ref:`Node2D<class_Node2D>` **<** :ref:`CanvasItem<class_CanvasItem>` **<** :ref:`Node<class_Node>` **<** :ref:`Object<class_Object>`
 
 
-Plays audio in 2D.
+Plays positional sound in 2D space.
 
 
 Description
 Description
 -----------
 -----------
 
 
 Plays audio that dampens with distance from screen center.
 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).
+
 Tutorials
 Tutorials
 ---------
 ---------
 
 
@@ -33,10 +37,12 @@ Properties
 +---------------------------------------+------------------------------------------------------------------------+---------------+
 +---------------------------------------+------------------------------------------------------------------------+---------------+
 | :ref:`bool<class_bool>`               | :ref:`autoplay<class_AudioStreamPlayer2D_property_autoplay>`           | ``false``     |
 | :ref:`bool<class_bool>`               | :ref:`autoplay<class_AudioStreamPlayer2D_property_autoplay>`           | ``false``     |
 +---------------------------------------+------------------------------------------------------------------------+---------------+
 +---------------------------------------+------------------------------------------------------------------------+---------------+
-| :ref:`StringName<class_StringName>`   | :ref:`bus<class_AudioStreamPlayer2D_property_bus>`                     | ``@"Master"`` |
+| :ref:`StringName<class_StringName>`   | :ref:`bus<class_AudioStreamPlayer2D_property_bus>`                     | ``&"Master"`` |
 +---------------------------------------+------------------------------------------------------------------------+---------------+
 +---------------------------------------+------------------------------------------------------------------------+---------------+
 | :ref:`float<class_float>`             | :ref:`max_distance<class_AudioStreamPlayer2D_property_max_distance>`   | ``2000.0``    |
 | :ref:`float<class_float>`             | :ref:`max_distance<class_AudioStreamPlayer2D_property_max_distance>`   | ``2000.0``    |
 +---------------------------------------+------------------------------------------------------------------------+---------------+
 +---------------------------------------+------------------------------------------------------------------------+---------------+
+| :ref:`int<class_int>`                 | :ref:`max_polyphony<class_AudioStreamPlayer2D_property_max_polyphony>` | ``1``         |
++---------------------------------------+------------------------------------------------------------------------+---------------+
 | :ref:`float<class_float>`             | :ref:`pitch_scale<class_AudioStreamPlayer2D_property_pitch_scale>`     | ``1.0``       |
 | :ref:`float<class_float>`             | :ref:`pitch_scale<class_AudioStreamPlayer2D_property_pitch_scale>`     | ``1.0``       |
 +---------------------------------------+------------------------------------------------------------------------+---------------+
 +---------------------------------------+------------------------------------------------------------------------+---------------+
 | :ref:`bool<class_bool>`               | :ref:`playing<class_AudioStreamPlayer2D_property_playing>`             | ``false``     |
 | :ref:`bool<class_bool>`               | :ref:`playing<class_AudioStreamPlayer2D_property_playing>`             | ``false``     |
@@ -128,7 +134,7 @@ If ``true``, audio plays when added to scene tree.
 - :ref:`StringName<class_StringName>` **bus**
 - :ref:`StringName<class_StringName>` **bus**
 
 
 +-----------+----------------+
 +-----------+----------------+
-| *Default* | ``@"Master"``  |
+| *Default* | ``&"Master"``  |
 +-----------+----------------+
 +-----------+----------------+
 | *Setter*  | set_bus(value) |
 | *Setter*  | set_bus(value) |
 +-----------+----------------+
 +-----------+----------------+
@@ -155,6 +161,22 @@ Maximum distance from which audio is still hearable.
 
 
 ----
 ----
 
 
+.. _class_AudioStreamPlayer2D_property_max_polyphony:
+
+- :ref:`int<class_int>` **max_polyphony**
+
++-----------+--------------------------+
+| *Default* | ``1``                    |
++-----------+--------------------------+
+| *Setter*  | set_max_polyphony(value) |
++-----------+--------------------------+
+| *Getter*  | get_max_polyphony()      |
++-----------+--------------------------+
+
+The maximum number of sounds this node can play at the same time. Playing additional sounds after this value is reached will cut off the oldest sounds.
+
+----
+
 .. _class_AudioStreamPlayer2D_property_pitch_scale:
 .. _class_AudioStreamPlayer2D_property_pitch_scale:
 
 
 - :ref:`float<class_float>` **pitch_scale**
 - :ref:`float<class_float>` **pitch_scale**
@@ -167,7 +189,7 @@ Maximum distance from which audio is still hearable.
 | *Getter*  | get_pitch_scale()      |
 | *Getter*  | get_pitch_scale()      |
 +-----------+------------------------+
 +-----------+------------------------+
 
 
-Changes the pitch and the tempo of the audio.
+The pitch and the tempo of the audio, as a multiplier of the audio sample's sample rate.
 
 
 ----
 ----
 
 
@@ -270,3 +292,9 @@ Sets the position from which audio will be played, in seconds.
 
 
 Stops the audio.
 Stops the audio.
 
 
+.. |virtual| replace:: :abbr:`virtual (This method should typically be overridden by the user to have any effect.)`
+.. |const| replace:: :abbr:`const (This method has no side effects. It doesn't modify any of the instance's member variables.)`
+.. |vararg| replace:: :abbr:`vararg (This method accepts any number of arguments after the ones described here.)`
+.. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)`
+.. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)`
+.. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)`

+ 43 - 45
classes/class_audiostreamplayer3d.rst

@@ -9,14 +9,20 @@
 AudioStreamPlayer3D
 AudioStreamPlayer3D
 ===================
 ===================
 
 
-**Inherits:** :ref:`Spatial<class_Spatial>` **<** :ref:`Node<class_Node>` **<** :ref:`Object<class_Object>`
+**Inherits:** :ref:`Node3D<class_Node3D>` **<** :ref:`Node<class_Node>` **<** :ref:`Object<class_Object>`
 
 
-Plays 3D sound in 3D space.
+Plays positional sound in 3D space.
 
 
 Description
 Description
 -----------
 -----------
 
 
-Plays a sound effect with directed sound effects, dampens with distance if needed, generates effect of hearable position in space.
+Plays a sound effect with directed sound effects, dampens with distance if needed, generates effect of hearable position in space. For greater realism, a low-pass filter is automatically applied to distant sounds. This can be disabled by setting :ref:`attenuation_filter_cutoff_hz<class_AudioStreamPlayer3D_property_attenuation_filter_cutoff_hz>` to ``20500``.
+
+By default, audio is heard from the camera position. This can be changed by adding a :ref:`AudioListener3D<class_AudioListener3D>` node to the scene and enabling it by calling :ref:`AudioListener3D.make_current<class_AudioListener3D_method_make_current>` on it.
+
+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).
 
 
 Tutorials
 Tutorials
 ---------
 ---------
@@ -37,7 +43,7 @@ Properties
 +--------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------+---------------+
 +--------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------+---------------+
 | :ref:`bool<class_bool>`                                            | :ref:`autoplay<class_AudioStreamPlayer3D_property_autoplay>`                                                         | ``false``     |
 | :ref:`bool<class_bool>`                                            | :ref:`autoplay<class_AudioStreamPlayer3D_property_autoplay>`                                                         | ``false``     |
 +--------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------+---------------+
 +--------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------+---------------+
-| :ref:`StringName<class_StringName>`                                | :ref:`bus<class_AudioStreamPlayer3D_property_bus>`                                                                   | ``@"Master"`` |
+| :ref:`StringName<class_StringName>`                                | :ref:`bus<class_AudioStreamPlayer3D_property_bus>`                                                                   | ``&"Master"`` |
 +--------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------+---------------+
 +--------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------+---------------+
 | :ref:`DopplerTracking<enum_AudioStreamPlayer3D_DopplerTracking>`   | :ref:`doppler_tracking<class_AudioStreamPlayer3D_property_doppler_tracking>`                                         | ``0``         |
 | :ref:`DopplerTracking<enum_AudioStreamPlayer3D_DopplerTracking>`   | :ref:`doppler_tracking<class_AudioStreamPlayer3D_property_doppler_tracking>`                                         | ``0``         |
 +--------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------+---------------+
 +--------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------+---------------+
@@ -51,7 +57,7 @@ Properties
 +--------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------+---------------+
 +--------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------+---------------+
 | :ref:`float<class_float>`                                          | :ref:`max_distance<class_AudioStreamPlayer3D_property_max_distance>`                                                 | ``0.0``       |
 | :ref:`float<class_float>`                                          | :ref:`max_distance<class_AudioStreamPlayer3D_property_max_distance>`                                                 | ``0.0``       |
 +--------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------+---------------+
 +--------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------+---------------+
-| :ref:`OutOfRangeMode<enum_AudioStreamPlayer3D_OutOfRangeMode>`     | :ref:`out_of_range_mode<class_AudioStreamPlayer3D_property_out_of_range_mode>`                                       | ``0``         |
+| :ref:`int<class_int>`                                              | :ref:`max_polyphony<class_AudioStreamPlayer3D_property_max_polyphony>`                                               | ``1``         |
 +--------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------+---------------+
 +--------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------+---------------+
 | :ref:`float<class_float>`                                          | :ref:`pitch_scale<class_AudioStreamPlayer3D_property_pitch_scale>`                                                   | ``1.0``       |
 | :ref:`float<class_float>`                                          | :ref:`pitch_scale<class_AudioStreamPlayer3D_property_pitch_scale>`                                                   | ``1.0``       |
 +--------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------+---------------+
 +--------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------+---------------+
@@ -63,7 +69,7 @@ Properties
 +--------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------+---------------+
 +--------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------+---------------+
 | :ref:`float<class_float>`                                          | :ref:`unit_db<class_AudioStreamPlayer3D_property_unit_db>`                                                           | ``0.0``       |
 | :ref:`float<class_float>`                                          | :ref:`unit_db<class_AudioStreamPlayer3D_property_unit_db>`                                                           | ``0.0``       |
 +--------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------+---------------+
 +--------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------+---------------+
-| :ref:`float<class_float>`                                          | :ref:`unit_size<class_AudioStreamPlayer3D_property_unit_size>`                                                       | ``1.0``       |
+| :ref:`float<class_float>`                                          | :ref:`unit_size<class_AudioStreamPlayer3D_property_unit_size>`                                                       | ``10.0``      |
 +--------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------+---------------+
 +--------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------+---------------+
 
 
 Methods
 Methods
@@ -111,21 +117,7 @@ enum **AttenuationModel**:
 
 
 - **ATTENUATION_LOGARITHMIC** = **2** --- Logarithmic dampening of loudness according to distance.
 - **ATTENUATION_LOGARITHMIC** = **2** --- Logarithmic dampening of loudness according to distance.
 
 
-- **ATTENUATION_DISABLED** = **3** --- No dampening of loudness according to distance.
-
-----
-
-.. _enum_AudioStreamPlayer3D_OutOfRangeMode:
-
-.. _class_AudioStreamPlayer3D_constant_OUT_OF_RANGE_MIX:
-
-.. _class_AudioStreamPlayer3D_constant_OUT_OF_RANGE_PAUSE:
-
-enum **OutOfRangeMode**:
-
-- **OUT_OF_RANGE_MIX** = **0** --- Mix this audio in, even when it's out of range.
-
-- **OUT_OF_RANGE_PAUSE** = **1** --- Pause this audio when it gets out of range.
+- **ATTENUATION_DISABLED** = **3** --- No dampening of loudness according to distance. The sound will still be heard positionally, unlike an :ref:`AudioStreamPlayer<class_AudioStreamPlayer>`.
 
 
 ----
 ----
 
 
@@ -176,7 +168,7 @@ Areas in which this sound plays.
 | *Getter*  | get_attenuation_filter_cutoff_hz()      |
 | *Getter*  | get_attenuation_filter_cutoff_hz()      |
 +-----------+-----------------------------------------+
 +-----------+-----------------------------------------+
 
 
-Dampens audio above this frequency, in Hz.
+Dampens audio using a low-pass filter above this frequency, in Hz. To disable the dampening effect entirely, set this to ``20500`` as this frequency is above the human hearing limit.
 
 
 ----
 ----
 
 
@@ -192,7 +184,7 @@ Dampens audio above this frequency, in Hz.
 | *Getter*  | get_attenuation_filter_db()      |
 | *Getter*  | get_attenuation_filter_db()      |
 +-----------+----------------------------------+
 +-----------+----------------------------------+
 
 
-Amount how much the filter affects the loudness, in dB.
+Amount how much the filter affects the loudness, in decibels.
 
 
 ----
 ----
 
 
@@ -224,7 +216,7 @@ Decides if audio should get quieter with distance linearly, quadratically, logar
 | *Getter*  | is_autoplay_enabled() |
 | *Getter*  | is_autoplay_enabled() |
 +-----------+-----------------------+
 +-----------+-----------------------+
 
 
-If ``true``, audio plays when added to scene tree.
+If ``true``, audio plays when the AudioStreamPlayer3D node is added to scene tree.
 
 
 ----
 ----
 
 
@@ -233,14 +225,14 @@ If ``true``, audio plays when added to scene tree.
 - :ref:`StringName<class_StringName>` **bus**
 - :ref:`StringName<class_StringName>` **bus**
 
 
 +-----------+----------------+
 +-----------+----------------+
-| *Default* | ``@"Master"``  |
+| *Default* | ``&"Master"``  |
 +-----------+----------------+
 +-----------+----------------+
 | *Setter*  | set_bus(value) |
 | *Setter*  | set_bus(value) |
 +-----------+----------------+
 +-----------+----------------+
 | *Getter*  | get_bus()      |
 | *Getter*  | get_bus()      |
 +-----------+----------------+
 +-----------+----------------+
 
 
-Bus on which this audio is playing.
+The bus on which this audio is playing.
 
 
 ----
 ----
 
 
@@ -304,7 +296,7 @@ If ``true``, the audio should be dampened according to the direction of the soun
 | *Getter*  | get_emission_angle_filter_attenuation_db()      |
 | *Getter*  | get_emission_angle_filter_attenuation_db()      |
 +-----------+-------------------------------------------------+
 +-----------+-------------------------------------------------+
 
 
-Dampens audio if camera is outside of :ref:`emission_angle_degrees<class_AudioStreamPlayer3D_property_emission_angle_degrees>` and :ref:`emission_angle_enabled<class_AudioStreamPlayer3D_property_emission_angle_enabled>` is set by this factor, in dB.
+Dampens audio if camera is outside of :ref:`emission_angle_degrees<class_AudioStreamPlayer3D_property_emission_angle_degrees>` and :ref:`emission_angle_enabled<class_AudioStreamPlayer3D_property_emission_angle_enabled>` is set by this factor, in decibels.
 
 
 ----
 ----
 
 
@@ -320,7 +312,7 @@ Dampens audio if camera is outside of :ref:`emission_angle_degrees<class_AudioSt
 | *Getter*  | get_max_db()      |
 | *Getter*  | get_max_db()      |
 +-----------+-------------------+
 +-----------+-------------------+
 
 
-Sets the absolute maximum of the soundlevel, in dB.
+Sets the absolute maximum of the soundlevel, in decibels.
 
 
 ----
 ----
 
 
@@ -336,23 +328,23 @@ Sets the absolute maximum of the soundlevel, in dB.
 | *Getter*  | get_max_distance()      |
 | *Getter*  | get_max_distance()      |
 +-----------+-------------------------+
 +-----------+-------------------------+
 
 
-Sets the distance from which the :ref:`out_of_range_mode<class_AudioStreamPlayer3D_property_out_of_range_mode>` takes effect. Has no effect if set to 0.
+The distance past which the sound can no longer be heard at all. Only has an effect if set to a value greater than ``0.0``. :ref:`max_distance<class_AudioStreamPlayer3D_property_max_distance>` works in tandem with :ref:`unit_size<class_AudioStreamPlayer3D_property_unit_size>`. However, unlike :ref:`unit_size<class_AudioStreamPlayer3D_property_unit_size>` whose behavior depends on the :ref:`attenuation_model<class_AudioStreamPlayer3D_property_attenuation_model>`, :ref:`max_distance<class_AudioStreamPlayer3D_property_max_distance>` always works in a linear fashion. This can be used to prevent the ``AudioStreamPlayer3D`` from requiring audio mixing when the listener is far away, which saves CPU resources.
 
 
 ----
 ----
 
 
-.. _class_AudioStreamPlayer3D_property_out_of_range_mode:
+.. _class_AudioStreamPlayer3D_property_max_polyphony:
 
 
-- :ref:`OutOfRangeMode<enum_AudioStreamPlayer3D_OutOfRangeMode>` **out_of_range_mode**
+- :ref:`int<class_int>` **max_polyphony**
 
 
-+-----------+------------------------------+
-| *Default* | ``0``                        |
-+-----------+------------------------------+
-| *Setter*  | set_out_of_range_mode(value) |
-+-----------+------------------------------+
-| *Getter*  | get_out_of_range_mode()      |
-+-----------+------------------------------+
++-----------+--------------------------+
+| *Default* | ``1``                    |
++-----------+--------------------------+
+| *Setter*  | set_max_polyphony(value) |
++-----------+--------------------------+
+| *Getter*  | get_max_polyphony()      |
++-----------+--------------------------+
 
 
-Decides if audio should pause when source is outside of :ref:`max_distance<class_AudioStreamPlayer3D_property_max_distance>` range.
+The maximum number of sounds this node can play at the same time. Playing additional sounds after this value is reached will cut off the oldest sounds.
 
 
 ----
 ----
 
 
@@ -368,7 +360,7 @@ Decides if audio should pause when source is outside of :ref:`max_distance<class
 | *Getter*  | get_pitch_scale()      |
 | *Getter*  | get_pitch_scale()      |
 +-----------+------------------------+
 +-----------+------------------------+
 
 
-Changes the pitch and the tempo of the audio.
+The pitch and the tempo of the audio, as a multiplier of the audio sample's sample rate.
 
 
 ----
 ----
 
 
@@ -396,7 +388,7 @@ If ``true``, audio is playing.
 | *Getter* | get_stream()      |
 | *Getter* | get_stream()      |
 +----------+-------------------+
 +----------+-------------------+
 
 
-The :ref:`AudioStream<class_AudioStream>` object to be played.
+The :ref:`AudioStream<class_AudioStream>` resource to be played.
 
 
 ----
 ----
 
 
@@ -412,7 +404,7 @@ The :ref:`AudioStream<class_AudioStream>` object to be played.
 | *Getter*  | get_stream_paused()      |
 | *Getter*  | get_stream_paused()      |
 +-----------+--------------------------+
 +-----------+--------------------------+
 
 
-If ``true``, the playback is paused. You can resume it by setting ``stream_paused`` to ``false``.
+If ``true``, the playback is paused. You can resume it by setting :ref:`stream_paused<class_AudioStreamPlayer3D_property_stream_paused>` to ``false``.
 
 
 ----
 ----
 
 
@@ -428,7 +420,7 @@ If ``true``, the playback is paused. You can resume it by setting ``stream_pause
 | *Getter*  | get_unit_db()      |
 | *Getter*  | get_unit_db()      |
 +-----------+--------------------+
 +-----------+--------------------+
 
 
-Base sound level unaffected by dampening, in dB.
+The base sound level unaffected by dampening, in decibels.
 
 
 ----
 ----
 
 
@@ -437,14 +429,14 @@ Base sound level unaffected by dampening, in dB.
 - :ref:`float<class_float>` **unit_size**
 - :ref:`float<class_float>` **unit_size**
 
 
 +-----------+----------------------+
 +-----------+----------------------+
-| *Default* | ``1.0``              |
+| *Default* | ``10.0``             |
 +-----------+----------------------+
 +-----------+----------------------+
 | *Setter*  | set_unit_size(value) |
 | *Setter*  | set_unit_size(value) |
 +-----------+----------------------+
 +-----------+----------------------+
 | *Getter*  | get_unit_size()      |
 | *Getter*  | get_unit_size()      |
 +-----------+----------------------+
 +-----------+----------------------+
 
 
-Factor for the attenuation effect.
+The factor for the attenuation effect. Higher values make the sound audible over a larger distance.
 
 
 Method Descriptions
 Method Descriptions
 -------------------
 -------------------
@@ -487,3 +479,9 @@ Sets the position from which audio will be played, in seconds.
 
 
 Stops the audio.
 Stops the audio.
 
 
+.. |virtual| replace:: :abbr:`virtual (This method should typically be overridden by the user to have any effect.)`
+.. |const| replace:: :abbr:`const (This method has no side effects. It doesn't modify any of the instance's member variables.)`
+.. |vararg| replace:: :abbr:`vararg (This method accepts any number of arguments after the ones described here.)`
+.. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)`
+.. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)`
+.. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)`

+ 7 - 1
classes/class_audiostreamrandompitch.rst

@@ -9,7 +9,7 @@
 AudioStreamRandomPitch
 AudioStreamRandomPitch
 ======================
 ======================
 
 
-**Inherits:** :ref:`AudioStream<class_AudioStream>` **<** :ref:`Resource<class_Resource>` **<** :ref:`Reference<class_Reference>` **<** :ref:`Object<class_Object>`
+**Inherits:** :ref:`AudioStream<class_AudioStream>` **<** :ref:`Resource<class_Resource>` **<** :ref:`RefCounted<class_RefCounted>` **<** :ref:`Object<class_Object>`
 
 
 Plays audio with random pitch shifting.
 Plays audio with random pitch shifting.
 
 
@@ -58,3 +58,9 @@ The current :ref:`AudioStream<class_AudioStream>`.
 
 
 The intensity of random pitch variation.
 The intensity of random pitch variation.
 
 
+.. |virtual| replace:: :abbr:`virtual (This method should typically be overridden by the user to have any effect.)`
+.. |const| replace:: :abbr:`const (This method has no side effects. It doesn't modify any of the instance's member variables.)`
+.. |vararg| replace:: :abbr:`vararg (This method accepts any number of arguments after the ones described here.)`
+.. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)`
+.. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)`
+.. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)`

+ 41 - 31
classes/class_audiostreamsample.rst

@@ -9,7 +9,7 @@
 AudioStreamSample
 AudioStreamSample
 =================
 =================
 
 
-**Inherits:** :ref:`AudioStream<class_AudioStream>` **<** :ref:`Resource<class_Resource>` **<** :ref:`Reference<class_Reference>` **<** :ref:`Object<class_Object>`
+**Inherits:** :ref:`AudioStream<class_AudioStream>` **<** :ref:`Resource<class_Resource>` **<** :ref:`RefCounted<class_RefCounted>` **<** :ref:`Object<class_Object>`
 
 
 Stores audio data loaded from WAV files.
 Stores audio data loaded from WAV files.
 
 
@@ -18,26 +18,26 @@ Description
 
 
 AudioStreamSample stores sound samples loaded from WAV files. To play the stored sound, use an :ref:`AudioStreamPlayer<class_AudioStreamPlayer>` (for non-positional audio) or :ref:`AudioStreamPlayer2D<class_AudioStreamPlayer2D>`/:ref:`AudioStreamPlayer3D<class_AudioStreamPlayer3D>` (for positional audio). The sound can be looped.
 AudioStreamSample stores sound samples loaded from WAV files. To play the stored sound, use an :ref:`AudioStreamPlayer<class_AudioStreamPlayer>` (for non-positional audio) or :ref:`AudioStreamPlayer2D<class_AudioStreamPlayer2D>`/:ref:`AudioStreamPlayer3D<class_AudioStreamPlayer3D>` (for positional audio). The sound can be looped.
 
 
-This class can also be used to store dynamically-generated PCM audio data.
+This class can also be used to store dynamically-generated PCM audio data. See also :ref:`AudioStreamGenerator<class_AudioStreamGenerator>` for procedural audio generation.
 
 
 Properties
 Properties
 ----------
 ----------
 
 
-+--------------------------------------------------+----------------------------------------------------------------+-------------------------+
-| :ref:`PackedByteArray<class_PackedByteArray>`    | :ref:`data<class_AudioStreamSample_property_data>`             | ``PackedByteArray(  )`` |
-+--------------------------------------------------+----------------------------------------------------------------+-------------------------+
-| :ref:`Format<enum_AudioStreamSample_Format>`     | :ref:`format<class_AudioStreamSample_property_format>`         | ``0``                   |
-+--------------------------------------------------+----------------------------------------------------------------+-------------------------+
-| :ref:`int<class_int>`                            | :ref:`loop_begin<class_AudioStreamSample_property_loop_begin>` | ``0``                   |
-+--------------------------------------------------+----------------------------------------------------------------+-------------------------+
-| :ref:`int<class_int>`                            | :ref:`loop_end<class_AudioStreamSample_property_loop_end>`     | ``0``                   |
-+--------------------------------------------------+----------------------------------------------------------------+-------------------------+
-| :ref:`LoopMode<enum_AudioStreamSample_LoopMode>` | :ref:`loop_mode<class_AudioStreamSample_property_loop_mode>`   | ``0``                   |
-+--------------------------------------------------+----------------------------------------------------------------+-------------------------+
-| :ref:`int<class_int>`                            | :ref:`mix_rate<class_AudioStreamSample_property_mix_rate>`     | ``44100``               |
-+--------------------------------------------------+----------------------------------------------------------------+-------------------------+
-| :ref:`bool<class_bool>`                          | :ref:`stereo<class_AudioStreamSample_property_stereo>`         | ``false``               |
-+--------------------------------------------------+----------------------------------------------------------------+-------------------------+
++--------------------------------------------------+----------------------------------------------------------------+-----------------------+
+| :ref:`PackedByteArray<class_PackedByteArray>`    | :ref:`data<class_AudioStreamSample_property_data>`             | ``PackedByteArray()`` |
++--------------------------------------------------+----------------------------------------------------------------+-----------------------+
+| :ref:`Format<enum_AudioStreamSample_Format>`     | :ref:`format<class_AudioStreamSample_property_format>`         | ``0``                 |
++--------------------------------------------------+----------------------------------------------------------------+-----------------------+
+| :ref:`int<class_int>`                            | :ref:`loop_begin<class_AudioStreamSample_property_loop_begin>` | ``0``                 |
++--------------------------------------------------+----------------------------------------------------------------+-----------------------+
+| :ref:`int<class_int>`                            | :ref:`loop_end<class_AudioStreamSample_property_loop_end>`     | ``0``                 |
++--------------------------------------------------+----------------------------------------------------------------+-----------------------+
+| :ref:`LoopMode<enum_AudioStreamSample_LoopMode>` | :ref:`loop_mode<class_AudioStreamSample_property_loop_mode>`   | ``0``                 |
++--------------------------------------------------+----------------------------------------------------------------+-----------------------+
+| :ref:`int<class_int>`                            | :ref:`mix_rate<class_AudioStreamSample_property_mix_rate>`     | ``44100``             |
++--------------------------------------------------+----------------------------------------------------------------+-----------------------+
+| :ref:`bool<class_bool>`                          | :ref:`stereo<class_AudioStreamSample_property_stereo>`         | ``false``             |
++--------------------------------------------------+----------------------------------------------------------------+-----------------------+
 
 
 Methods
 Methods
 -------
 -------
@@ -81,11 +81,11 @@ enum **LoopMode**:
 
 
 - **LOOP_DISABLED** = **0** --- Audio does not loop.
 - **LOOP_DISABLED** = **0** --- Audio does not loop.
 
 
-- **LOOP_FORWARD** = **1** --- Audio loops the data between :ref:`loop_begin<class_AudioStreamSample_property_loop_begin>` and :ref:`loop_end<class_AudioStreamSample_property_loop_end>` playing forward only.
+- **LOOP_FORWARD** = **1** --- Audio loops the data between :ref:`loop_begin<class_AudioStreamSample_property_loop_begin>` and :ref:`loop_end<class_AudioStreamSample_property_loop_end>`, playing forward only.
 
 
-- **LOOP_PING_PONG** = **2** --- Audio loops the data between :ref:`loop_begin<class_AudioStreamSample_property_loop_begin>` and :ref:`loop_end<class_AudioStreamSample_property_loop_end>` playing back and forth.
+- **LOOP_PING_PONG** = **2** --- Audio loops the data between :ref:`loop_begin<class_AudioStreamSample_property_loop_begin>` and :ref:`loop_end<class_AudioStreamSample_property_loop_end>`, playing back and forth.
 
 
-- **LOOP_BACKWARD** = **3** --- Audio loops the data between :ref:`loop_begin<class_AudioStreamSample_property_loop_begin>` and :ref:`loop_end<class_AudioStreamSample_property_loop_end>` playing backward only.
+- **LOOP_BACKWARD** = **3** --- Audio loops the data between :ref:`loop_begin<class_AudioStreamSample_property_loop_begin>` and :ref:`loop_end<class_AudioStreamSample_property_loop_end>`, playing backward only.
 
 
 Property Descriptions
 Property Descriptions
 ---------------------
 ---------------------
@@ -94,13 +94,13 @@ Property Descriptions
 
 
 - :ref:`PackedByteArray<class_PackedByteArray>` **data**
 - :ref:`PackedByteArray<class_PackedByteArray>` **data**
 
 
-+-----------+-------------------------+
-| *Default* | ``PackedByteArray(  )`` |
-+-----------+-------------------------+
-| *Setter*  | set_data(value)         |
-+-----------+-------------------------+
-| *Getter*  | get_data()              |
-+-----------+-------------------------+
++-----------+-----------------------+
+| *Default* | ``PackedByteArray()`` |
++-----------+-----------------------+
+| *Setter*  | set_data(value)       |
++-----------+-----------------------+
+| *Getter*  | get_data()            |
++-----------+-----------------------+
 
 
 Contains the audio data in bytes.
 Contains the audio data in bytes.
 
 
@@ -136,7 +136,7 @@ Audio format. See :ref:`Format<enum_AudioStreamSample_Format>` constants for val
 | *Getter*  | get_loop_begin()      |
 | *Getter*  | get_loop_begin()      |
 +-----------+-----------------------+
 +-----------+-----------------------+
 
 
-Loop start in bytes.
+The loop start point (in number of samples, relative to the beginning of the sample). This information will be imported automatically from the WAV file if present.
 
 
 ----
 ----
 
 
@@ -152,7 +152,7 @@ Loop start in bytes.
 | *Getter*  | get_loop_end()      |
 | *Getter*  | get_loop_end()      |
 +-----------+---------------------+
 +-----------+---------------------+
 
 
-Loop end in bytes.
+The loop end point (in number of samples, relative to the beginning of the sample). This information will be imported automatically from the WAV file if present.
 
 
 ----
 ----
 
 
@@ -168,7 +168,7 @@ Loop end in bytes.
 | *Getter*  | get_loop_mode()      |
 | *Getter*  | get_loop_mode()      |
 +-----------+----------------------+
 +-----------+----------------------+
 
 
-Loop mode. See :ref:`LoopMode<enum_AudioStreamSample_LoopMode>` constants for values.
+The loop mode. This information will be imported automatically from the WAV file if present. See :ref:`LoopMode<enum_AudioStreamSample_LoopMode>` constants for values.
 
 
 ----
 ----
 
 
@@ -184,7 +184,11 @@ Loop mode. See :ref:`LoopMode<enum_AudioStreamSample_LoopMode>` constants for va
 | *Getter*  | get_mix_rate()      |
 | *Getter*  | get_mix_rate()      |
 +-----------+---------------------+
 +-----------+---------------------+
 
 
-The sample rate for mixing this audio.
+The sample rate for mixing this audio. Higher values require more storage space, but result in better quality.
+
+In games, common sample rates in use are ``11025``, ``16000``, ``22050``, ``32000``, ``44100``, and ``48000``.
+
+According to the `Nyquist-Shannon sampling theorem <https://en.wikipedia.org/wiki/Nyquist%E2%80%93Shannon_sampling_theorem>`__, there is no quality difference to human hearing when going past 40,000 Hz (since most humans can only hear up to ~20,000 Hz, often less). If you are using lower-pitched sounds such as voices, lower sample rates such as ``32000`` or ``22050`` may be usable with no loss in quality.
 
 
 ----
 ----
 
 
@@ -213,3 +217,9 @@ Saves the AudioStreamSample as a WAV file to ``path``. Samples with IMA ADPCM fo
 
 
 **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.)`
+.. |vararg| replace:: :abbr:`vararg (This method accepts any number of arguments after the ones described here.)`
+.. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)`
+.. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)`
+.. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)`

+ 21 - 13
classes/class_backbuffercopy.rst

@@ -16,16 +16,18 @@ Copies a region of the screen (or the whole screen) to a buffer so it can be acc
 Description
 Description
 -----------
 -----------
 
 
-Node for back-buffering the currently-displayed screen. The region defined in the BackBufferCopy node is bufferized 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.
+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.
 
 
 Properties
 Properties
 ----------
 ----------
 
 
-+-----------------------------------------------+-----------------------------------------------------------+-----------------------------------+
-| :ref:`CopyMode<enum_BackBufferCopy_CopyMode>` | :ref:`copy_mode<class_BackBufferCopy_property_copy_mode>` | ``1``                             |
-+-----------------------------------------------+-----------------------------------------------------------+-----------------------------------+
-| :ref:`Rect2<class_Rect2>`                     | :ref:`rect<class_BackBufferCopy_property_rect>`           | ``Rect2( -100, -100, 200, 200 )`` |
-+-----------------------------------------------+-----------------------------------------------------------+-----------------------------------+
++-----------------------------------------------+-----------------------------------------------------------+---------------------------------+
+| :ref:`CopyMode<enum_BackBufferCopy_CopyMode>` | :ref:`copy_mode<class_BackBufferCopy_property_copy_mode>` | ``1``                           |
++-----------------------------------------------+-----------------------------------------------------------+---------------------------------+
+| :ref:`Rect2<class_Rect2>`                     | :ref:`rect<class_BackBufferCopy_property_rect>`           | ``Rect2(-100, -100, 200, 200)`` |
++-----------------------------------------------+-----------------------------------------------------------+---------------------------------+
 
 
 Enumerations
 Enumerations
 ------------
 ------------
@@ -69,13 +71,19 @@ Buffer mode. See :ref:`CopyMode<enum_BackBufferCopy_CopyMode>` constants.
 
 
 - :ref:`Rect2<class_Rect2>` **rect**
 - :ref:`Rect2<class_Rect2>` **rect**
 
 
-+-----------+-----------------------------------+
-| *Default* | ``Rect2( -100, -100, 200, 200 )`` |
-+-----------+-----------------------------------+
-| *Setter*  | set_rect(value)                   |
-+-----------+-----------------------------------+
-| *Getter*  | get_rect()                        |
-+-----------+-----------------------------------+
++-----------+---------------------------------+
+| *Default* | ``Rect2(-100, -100, 200, 200)`` |
++-----------+---------------------------------+
+| *Setter*  | set_rect(value)                 |
++-----------+---------------------------------+
+| *Getter*  | get_rect()                      |
++-----------+---------------------------------+
 
 
 The area covered by the BackBufferCopy. Only used if :ref:`copy_mode<class_BackBufferCopy_property_copy_mode>` is :ref:`COPY_MODE_RECT<class_BackBufferCopy_constant_COPY_MODE_RECT>`.
 The area covered by the BackBufferCopy. Only used if :ref:`copy_mode<class_BackBufferCopy_property_copy_mode>` is :ref:`COPY_MODE_RECT<class_BackBufferCopy_constant_COPY_MODE_RECT>`.
 
 
+.. |virtual| replace:: :abbr:`virtual (This method should typically be overridden by the user to have any effect.)`
+.. |const| replace:: :abbr:`const (This method has no side effects. It doesn't modify any of the instance's member variables.)`
+.. |vararg| replace:: :abbr:`vararg (This method accepts any number of arguments after the ones described here.)`
+.. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)`
+.. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)`
+.. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)`

+ 93 - 71
classes/class_basebutton.rst

@@ -23,42 +23,44 @@ BaseButton is the abstract base class for buttons, so it shouldn't be used direc
 Properties
 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                                                                  | **O:** ``2`` |
-+-----------------------------------------------+-----------------------------------------------------------------------------+--------------+
-| :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:`ButtonGroup<class_ButtonGroup>`         | :ref:`button_group<class_BaseButton_property_button_group>`                 |                           |
++-----------------------------------------------+-----------------------------------------------------------------------------+---------------------------+
+| :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>`      | focus_mode                                                                  | ``2`` *(parent override)* |
++-----------------------------------------------+-----------------------------------------------------------------------------+---------------------------+
+| :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:`Node<class_Node>`                       | :ref:`shortcut_context<class_BaseButton_property_shortcut_context>`         |                           |
++-----------------------------------------------+-----------------------------------------------------------------------------+---------------------------+
+| :ref:`bool<class_bool>`                       | :ref:`shortcut_in_tooltip<class_BaseButton_property_shortcut_in_tooltip>`   | ``true``                  |
++-----------------------------------------------+-----------------------------------------------------------------------------+---------------------------+
+| :ref:`bool<class_bool>`                       | :ref:`toggle_mode<class_BaseButton_property_toggle_mode>`                   | ``false``                 |
++-----------------------------------------------+-----------------------------------------------------------------------------+---------------------------+
 
 
 Methods
 Methods
 -------
 -------
 
 
-+-------------------------------------------+--------------------------------------------------------------------------------------------------------------+
-| void                                      | :ref:`_pressed<class_BaseButton_method__pressed>` **(** **)** virtual                                        |
-+-------------------------------------------+--------------------------------------------------------------------------------------------------------------+
-| void                                      | :ref:`_toggled<class_BaseButton_method__toggled>` **(** :ref:`bool<class_bool>` button_pressed **)** virtual |
-+-------------------------------------------+--------------------------------------------------------------------------------------------------------------+
-| :ref:`DrawMode<enum_BaseButton_DrawMode>` | :ref:`get_draw_mode<class_BaseButton_method_get_draw_mode>` **(** **)** const                                |
-+-------------------------------------------+--------------------------------------------------------------------------------------------------------------+
-| :ref:`bool<class_bool>`                   | :ref:`is_hovered<class_BaseButton_method_is_hovered>` **(** **)** const                                      |
-+-------------------------------------------+--------------------------------------------------------------------------------------------------------------+
++-------------------------------------------+-------------------------------------------------------------------------------------------------------------------------+
+| void                                      | :ref:`_pressed<class_BaseButton_method__pressed>` **(** **)** |virtual|                                                 |
++-------------------------------------------+-------------------------------------------------------------------------------------------------------------------------+
+| void                                      | :ref:`_toggled<class_BaseButton_method__toggled>` **(** :ref:`bool<class_bool>` button_pressed **)** |virtual|          |
++-------------------------------------------+-------------------------------------------------------------------------------------------------------------------------+
+| :ref:`DrawMode<enum_BaseButton_DrawMode>` | :ref:`get_draw_mode<class_BaseButton_method_get_draw_mode>` **(** **)** |const|                                         |
++-------------------------------------------+-------------------------------------------------------------------------------------------------------------------------+
+| :ref:`bool<class_bool>`                   | :ref:`is_hovered<class_BaseButton_method_is_hovered>` **(** **)** |const|                                               |
++-------------------------------------------+-------------------------------------------------------------------------------------------------------------------------+
+| void                                      | :ref:`set_pressed_no_signal<class_BaseButton_method_set_pressed_no_signal>` **(** :ref:`bool<class_bool>` pressed **)** |
++-------------------------------------------+-------------------------------------------------------------------------------------------------------------------------+
 
 
 Signals
 Signals
 -------
 -------
@@ -85,6 +87,8 @@ Emitted when the button stops being held down.
 
 
 Emitted when the button is toggled or pressed. This is on :ref:`button_down<class_BaseButton_signal_button_down>` if :ref:`action_mode<class_BaseButton_property_action_mode>` is :ref:`ACTION_MODE_BUTTON_PRESS<class_BaseButton_constant_ACTION_MODE_BUTTON_PRESS>` and on :ref:`button_up<class_BaseButton_signal_button_up>` otherwise.
 Emitted when the button is toggled or pressed. This is on :ref:`button_down<class_BaseButton_signal_button_down>` if :ref:`action_mode<class_BaseButton_property_action_mode>` is :ref:`ACTION_MODE_BUTTON_PRESS<class_BaseButton_constant_ACTION_MODE_BUTTON_PRESS>` and on :ref:`button_up<class_BaseButton_signal_button_up>` otherwise.
 
 
+If you need to know the button's pressed state (and :ref:`toggle_mode<class_BaseButton_property_toggle_mode>` is active), use :ref:`toggled<class_BaseButton_signal_toggled>` instead.
+
 ----
 ----
 
 
 .. _class_BaseButton_signal_toggled:
 .. _class_BaseButton_signal_toggled:
@@ -153,6 +157,20 @@ Determines when the button is considered clicked, one of the :ref:`ActionMode<en
 
 
 ----
 ----
 
 
+.. _class_BaseButton_property_button_group:
+
+- :ref:`ButtonGroup<class_ButtonGroup>` **button_group**
+
++----------+-------------------------+
+| *Setter* | set_button_group(value) |
++----------+-------------------------+
+| *Getter* | get_button_group()      |
++----------+-------------------------+
+
+The :ref:`ButtonGroup<class_ButtonGroup>` associated with the button. Not to be confused with node groups.
+
+----
+
 .. _class_BaseButton_property_button_mask:
 .. _class_BaseButton_property_button_mask:
 
 
 - :ref:`int<class_int>` **button_mask**
 - :ref:`int<class_int>` **button_mask**
@@ -167,7 +185,7 @@ Determines when the button is considered clicked, one of the :ref:`ActionMode<en
 
 
 Binary mask to choose which mouse buttons this button will respond to.
 Binary mask to choose which mouse buttons this button will respond to.
 
 
-To allow both left-click and right-click, use ``BUTTON_MASK_LEFT | BUTTON_MASK_RIGHT``.
+To allow both left-click and right-click, use ``MOUSE_BUTTON_MASK_LEFT | MOUSE_BUTTON_MASK_RIGHT``.
 
 
 ----
 ----
 
 
@@ -187,36 +205,6 @@ If ``true``, the button is in disabled state and can't be clicked or toggled.
 
 
 ----
 ----
 
 
-.. _class_BaseButton_property_enabled_focus_mode:
-
-- :ref:`FocusMode<enum_Control_FocusMode>` **enabled_focus_mode**
-
-+-----------+-------------------------------+
-| *Default* | ``2``                         |
-+-----------+-------------------------------+
-| *Setter*  | set_enabled_focus_mode(value) |
-+-----------+-------------------------------+
-| *Getter*  | get_enabled_focus_mode()      |
-+-----------+-------------------------------+
-
-Focus access mode to use when switching between enabled/disabled (see :ref:`Control.focus_mode<class_Control_property_focus_mode>` and :ref:`disabled<class_BaseButton_property_disabled>`).
-
-----
-
-.. _class_BaseButton_property_group:
-
-- :ref:`ButtonGroup<class_ButtonGroup>` **group**
-
-+----------+-------------------------+
-| *Setter* | set_button_group(value) |
-+----------+-------------------------+
-| *Getter* | get_button_group()      |
-+----------+-------------------------+
-
-:ref:`ButtonGroup<class_ButtonGroup>` associated to the button.
-
-----
-
 .. _class_BaseButton_property_keep_pressed_outside:
 .. _class_BaseButton_property_keep_pressed_outside:
 
 
 - :ref:`bool<class_bool>` **keep_pressed_outside**
 - :ref:`bool<class_bool>` **keep_pressed_outside**
@@ -231,6 +219,8 @@ Focus access mode to use when switching between enabled/disabled (see :ref:`Cont
 
 
 If ``true``, the button stays pressed when moving the cursor outside the button while pressing it.
 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.
+
 ----
 ----
 
 
 .. _class_BaseButton_property_pressed:
 .. _class_BaseButton_property_pressed:
@@ -245,13 +235,15 @@ If ``true``, the button stays pressed when moving the cursor outside the button
 | *Getter*  | is_pressed()       |
 | *Getter*  | is_pressed()       |
 +-----------+--------------------+
 +-----------+--------------------+
 
 
-If ``true``, the button's state is pressed. Means the button is pressed down or toggled (if :ref:`toggle_mode<class_BaseButton_property_toggle_mode>` is active).
+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>`.
 
 
 ----
 ----
 
 
 .. _class_BaseButton_property_shortcut:
 .. _class_BaseButton_property_shortcut:
 
 
-- :ref:`ShortCut<class_ShortCut>` **shortcut**
+- :ref:`Shortcut<class_Shortcut>` **shortcut**
 
 
 +----------+---------------------+
 +----------+---------------------+
 | *Setter* | set_shortcut(value) |
 | *Setter* | set_shortcut(value) |
@@ -259,7 +251,21 @@ If ``true``, the button's state is pressed. Means the button is pressed down or
 | *Getter* | get_shortcut()      |
 | *Getter* | get_shortcut()      |
 +----------+---------------------+
 +----------+---------------------+
 
 
-:ref:`ShortCut<class_ShortCut>` associated to the button.
+:ref:`Shortcut<class_Shortcut>` associated to the button.
+
+----
+
+.. _class_BaseButton_property_shortcut_context:
+
+- :ref:`Node<class_Node>` **shortcut_context**
+
++----------+-----------------------------+
+| *Setter* | set_shortcut_context(value) |
++----------+-----------------------------+
+| *Getter* | get_shortcut_context()      |
++----------+-----------------------------+
+
+The :ref:`Node<class_Node>` which must be a parent of the focused GUI :ref:`Control<class_Control>` for the shortcut to be activated. If ``null``, the shortcut can be activated when any control is focused (a global shortcut). This allows shortcuts to be accepted only when the user has a certain area of the GUI focused.
 
 
 ----
 ----
 
 
@@ -298,15 +304,15 @@ Method Descriptions
 
 
 .. _class_BaseButton_method__pressed:
 .. _class_BaseButton_method__pressed:
 
 
-- void **_pressed** **(** **)** virtual
+- void **_pressed** **(** **)** |virtual|
 
 
-Called when the button is pressed.
+Called when the button is pressed. If you need to know the button's pressed state (and :ref:`toggle_mode<class_BaseButton_property_toggle_mode>` is active), use :ref:`_toggled<class_BaseButton_method__toggled>` instead.
 
 
 ----
 ----
 
 
 .. _class_BaseButton_method__toggled:
 .. _class_BaseButton_method__toggled:
 
 
-- void **_toggled** **(** :ref:`bool<class_bool>` button_pressed **)** virtual
+- void **_toggled** **(** :ref:`bool<class_bool>` button_pressed **)** |virtual|
 
 
 Called when the button is toggled (only if :ref:`toggle_mode<class_BaseButton_property_toggle_mode>` is active).
 Called when the button is toggled (only if :ref:`toggle_mode<class_BaseButton_property_toggle_mode>` is active).
 
 
@@ -314,7 +320,7 @@ Called when the button is toggled (only if :ref:`toggle_mode<class_BaseButton_pr
 
 
 .. _class_BaseButton_method_get_draw_mode:
 .. _class_BaseButton_method_get_draw_mode:
 
 
-- :ref:`DrawMode<enum_BaseButton_DrawMode>` **get_draw_mode** **(** **)** const
+- :ref:`DrawMode<enum_BaseButton_DrawMode>` **get_draw_mode** **(** **)** |const|
 
 
 Returns the visual state used to draw the button. This is useful mainly when implementing your own draw code by either overriding _draw() or connecting to "draw" signal. The visual state of the button is defined by the :ref:`DrawMode<enum_BaseButton_DrawMode>` enum.
 Returns the visual state used to draw the button. This is useful mainly when implementing your own draw code by either overriding _draw() or connecting to "draw" signal. The visual state of the button is defined by the :ref:`DrawMode<enum_BaseButton_DrawMode>` enum.
 
 
@@ -322,7 +328,23 @@ Returns the visual state used to draw the button. This is useful mainly when imp
 
 
 .. _class_BaseButton_method_is_hovered:
 .. _class_BaseButton_method_is_hovered:
 
 
-- :ref:`bool<class_bool>` **is_hovered** **(** **)** const
+- :ref:`bool<class_bool>` **is_hovered** **(** **)** |const|
 
 
 Returns ``true`` if the mouse has entered the button and has not left it yet.
 Returns ``true`` if the mouse has entered the button and has not left it yet.
 
 
+----
+
+.. _class_BaseButton_method_set_pressed_no_signal:
+
+- void **set_pressed_no_signal** **(** :ref:`bool<class_bool>` pressed **)**
+
+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 :ref:`button_group<class_BaseButton_property_button_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.)`
+.. |vararg| replace:: :abbr:`vararg (This method accepts any number of arguments after the ones described here.)`
+.. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)`
+.. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)`
+.. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)`

File diff ditekan karena terlalu besar
+ 465 - 297
classes/class_basematerial3d.rst


Beberapa file tidak ditampilkan karena terlalu banyak file yang berubah dalam diff ini